我不知道如何解決我的問題。一點背景信息,以便您了解為什麼我會做這樣的事情:我有一些包含數字的變數。因為這是不可能的(據我所知),我確實命名為:VoltageI、VoltageII 等。這對於我命名為“figure1”等的圖形很有用。
includegraphics{path/figure\arabic{counter}}.
我的目標是用 I 替換計數器(在本例中為 1),依此類推。我已經寫了一個新指令:
\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
您可以使用egexpl3
將計數器的目前值轉換為羅馬數字:
\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}