Автоматически создавать имена переменных (объединять строки)

Автоматически создавать имена переменных (объединять строки)

Я не могу понять, как решить мою проблему. Немного справочной информации, чтобы вы понимали, почему я делаю такие вещи: у меня есть некоторые переменные, которые содержат числа. Поскольку это невозможно (насколько я знаю), я назвал их так: 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}

введите описание изображения здесь

Связанный контент