問題を解決する方法がわかりません。なぜこのようなことをするのか理解していただくために、背景情報を少し紹介します。数値を含む変数がいくつかあります。これは不可能なので (私の知る限り)、VoltageI VoltageII などの名前を付けました。次に、ループカウンタを使用して for ループでそれらを処理します。これは、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}