Automatisches Erstellen von Variablennamen (Mergestrings)

Automatisches Erstellen von Variablennamen (Mergestrings)

ich komme einfach nicht dahinter, wie ich mein Problem lösen kann. Ein paar Hintergrundinformationen, damit ihr versteht, warum ich so etwas mache: Ich habe einige Variablen, die Zahlen enthalten. Da das (soweit ich weiß) nicht möglich ist, habe ich sie so benannt: VoltageI VoltageII usw. Ich möchte sie jetzt in einer For-Schleife mit dem Loopcounter verarbeiten. Das funktioniert gut für Zahlen, die ich Figure1 usw. genannt habe ->

includegraphics{path/figure\arabic{counter}}.

Mein Ziel ist es, den Zähler (in diesem Fall 1) durch ein I usw. zu ersetzen. Ich habe bereits einen neuen Befehl geschrieben:

\newcommand{\Romannum}{%
\ifnum #1=1
#1I
\fi
}

Zum Code in meinem Text:

\Romannum{Profile}{1}

Das druckt mir aus:

ProfileI 

wie beabsichtigt. Aber ich brauche die Ausgabe nicht als Text, sondern als Variablennamen, um den Inhalt der Variable anzuzeigen->

\ProfileI

Ist das überhaupt möglich oder gibt es eine einfachere Möglichkeit, Zahlen in Variablennamen zu bekommen?

Danke schön!

Hier ein Beispiel (es wird aufgrund des fehlenden Bildes nicht kompiliert, aber es macht meine Frage klarer.)

\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} } 

Antwort1

Mit zB können Sie expl3den aktuellen Wert Ihres Zählers in eine römische Zahl umrechnen:

\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}

Bildbeschreibung hier eingeben

verwandte Informationen