Я пишу диссертацию и много раз искал решение своей проблемы с программированием. По сути, у меня есть ряд элементов, которые я выделил в своих исследовательских данных как «A1», «A2», «A3», …, «A13», «B1», B2 и т. д. Эти метки данных , кстати, я не могу изменить сейчас, потому что это использовалось во всей моей диссертации.Они всегда имеют формат [заглавные буквы][цифра (длина от 1 до 2 символов)], например, X20 или L9. Для каждых данных элемент, я хочу присвоить конкретное имя.Поскольку LaTeX не допускает использование чисел в команде, я уже создал ДЛИННЫЙ список следующих типов команд для присвоения имен каждой метке данных:
\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, а также вызывать соответствующее имя данных в команде \DataName***. То есть введите, например, \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 для создания необходимой команды \DataName*** в новой команде \CompleteData.
В общем, я вижу единственный способ добиться этого результата - извлечь код и преобразовать последнее число (длиной от одной до двух цифр) в римскую цифру. В частности, я пытался выяснить, как сделать несколько вещей:
- как извлечь только цифры из конца параметра в новой команде (например, цифры в моих параметрах «Q31» или «A1»).
- аналогично извлечь букву из первого символа параметра
- как преобразовать числа в цифры
Я пытался искать разными способами, но, похоже, так и не нашел то, что мне нужно, чтобы ответить на эти два вопроса… Я думал, что был близок, когда нашел этот сайт, но позже понял, что это не то, что мне нужно. Пакет etextools LaTeX также выглядел многообещающе, но я слишком новичок (даже не программист), чтобы разобраться в справочном PDF-файле, прилагаемом к моей установке TexLive (2010). Я также читал о \roman и \romannumeral (например, здесь), но эти две команды вызывают ошибки при компиляции по какой-то причине. На моем компьютере \roman{2} становится "roman", а \romannumeral{2} становится "2". Просто не понимаю, как они работают.
Будем очень благодарны за любые рекомендации, демонстрационный код или подсказки! Спасибо.