我正在写一篇论文,并且在很多场合都在寻找解决我的编程问题的方法。基本上,我有一系列项目,我在我的研究数据中区分为“A1”、“A2”、“A3”、……、“A13”、“B1”、B2 等等。这些数据标签, 顺便说一句, 我现在不能更改, 因为它在我的论文中一直使用. 它们总是格式化为 [caps-letter][digit(length of 1 to 2 chars)], 例如, X20 或 L9. 对于每个数据项目,我想指定一个特定的名称。因为 LaTeX 不允许在命令中使用数字,所以我已经创建了以下类型的命令的 LONG 列表来为每个数据标签分配名称:
\newcommand{\DataNameAi}[]%
{Data name for A1}
\newcommand{\DataNameAii}[]%
{Data name for A2}
% …
\newcommand{\DataNameXxi}[]%
{Data name for X11}
% …
等等。基本上,如您所见,我将命令命名为“\DataName”,后跟字母(大写字母),然后是写成罗马数字的数字。这一切都是手动完成的,我这样做只是因为 LaTeX 似乎不喜欢命令名称中的任何阿拉伯数字。如果允许的话,我会使用 \DataNameA1 等。
在其他地方,我还有一个命令来专门引用数据:
\newcommand{\GotoData}[1]%
{\hyperref[data#1]{Data~#1}}
See data at \Gotodata{E10} % this links to another location labelled \label{dataE10}
现在,我想分配一个只能接受一个变量的乳胶命令,即数据标签(无论是“Q30”还是“A3”),并使用 \GotoData 命令以及在 \数据名称*** 命令。也就是说,例如,键入 \CompleteData{E10},然后让 LaTeX 加载如下内容:
“这是名为 [E10 的数据名称] 的 [数据 E10]。”
这意味着该命令可能类似于:
\newcommand{\CompleteData}[1]%
{This is [\GotoData{#1}] named [\DataNameEx].}
\CompleteData{E10} % <--- this should look like "This is [Data E10] named [Data name for E10]."
如您所见,上面的代码是不完整的:我不知道如何使用#1 变量在\CompleteData newcommand 中生成必要的\DataName*** 命令。
所以基本上,我认为实现此结果的唯一方法是提取代码并将最后一个数字(一到两位长)转换为罗马数字。具体来说,我一直在试图弄清楚如何做一些事情:
- 如何仅从新命令中的参数末尾提取数字(例如我的“Q31”或“A1”参数中的数字)。
- 类似地从参数的第一个字符中提取字母
- 如何将数字转换为数字
我尝试了许多不同的方式进行搜索,但似乎从来没有找到我需要回答这两个问题的内容……当我找到这个 网站时,我以为我已经很接近了,但后来意识到这不是我想要的。etextools LaTeX 包看起来也很有希望,但我太新手(甚至不是程序员),无法从我的 TexLive (2010) 安装附带的帮助 PDF 中理解。我还阅读了有关 \roman 和 \romannumeral 的信息(例如,here),但是当我出于某种原因编译时,这两个命令会导致错误。在我的电脑上,\roman{2} 变成了“roman”,而 \romannumeral{2} 变成了“2”。只是不明白它们是如何工作的。
任何指导、演示代码或提示将不胜感激!谢谢你。