Я не могу понять, как решить мою проблему. Немного справочной информации, чтобы вы понимали, почему я делаю такие вещи: у меня есть некоторые переменные, которые содержат числа. Поскольку это невозможно (насколько я знаю), я назвал их так: VoltageI VoltageII и т. д. Теперь я хочу обработать их в цикле for с помощью loopcounter. Это хорошо работает для цифр, которые я назвал figure1 и т. д. ->
includegraphics{path/figure\arabic{counter}}.
Моя цель — заменить счетчик (в данном случае 1) на I и т. д. Я уже написал новую команду:
\newcommand{\Romannum}{%
\ifnum #1=1
#1I
\fi
}
Для Кодекса в моем тексте:
\Romannum{Profile}{1}
Это выводит мне:
ProfileI
как и предполагалось. Но мне нужен вывод не в виде текста, а в виде имени переменной для отображения содержимого переменной->
\ProfileI
Возможно ли это вообще или есть более простой способ получить числа в именах переменных?
Спасибо!
Вот пример (он не компилируется из-за отсутствия изображения, но он делает мой вопрос более понятным).
\documentclass{article}
\usepackage{forloop}
\newcommand{\Romannum}[2]{%
\ifnum #2=1
#1I
\fi
\ifnum #2=2
#1II
\fi
}
\newcommand{\ProfileI}{Some text is written here.}
\newcommand{\ProfileII}{Some text is written here.}
\newcounter{profilecounter}
\setcounter{profilecounter}{1}
\begin{document}
\forloop{profilecounter}{1}{\value{profilecounter} < 3}{%
\begin{figure}[htbp]
\centering
\includegraphics[width = \textwidth]{Profil\arabic{profilecounter}.png} %This works
\caption{Profile \arabic{profilecounter} -~\Romannum{Profile}{profilecounter}}%This doesnt work (it writes ProfileI. I'd need \ProfileI to acces the string in the variable.
\end{figure}
}
\end{document} }
решение1
Например, вы можете использовать эту функцию expl3
для преобразования текущего значения счетчика в римское число:
\documentclass{article}
\usepackage{forloop}
\newcommand{\ProfileI}{Some text for I is written here.}
\newcommand{\ProfileII}{Some text for II is written here.}
\newcounter{profilecounter}
\setcounter{profilecounter}{1}
\usepackage{xparse}
\ExplSyntaxOn
%changed to expandable to get it in the listoffigures.
\NewExpandableDocumentCommand\usecurrentProfile {}{ \use:c {Profile\int_to_Roman:n{ \value{profilecounter} }}}
\ExplSyntaxOff
\begin{document}
\listoffigures
\forloop{profilecounter}{1}{\value{profilecounter} < 3}{%
\begin{figure}[htbp]
\centering
%graphic
\caption{Profile \arabic{profilecounter} -~\usecurrentProfile}%
\end{figure}
}
\end{document}