Я пишу диссертацию и много раз искал, пытаясь найти решение моей проблемы программирования. По сути, у меня есть ряд элементов, которые я выделил в своих данных исследований как «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} становится «римским», а \ romannumeral {2} становится «2». Просто не понимаю, как они работают.
Будем весьма благодарны за любые указания, демонстрационные коды или подсказки! Спасибо.