自動建立變數名(合併字串)

自動建立變數名(合併字串)

我不知道如何解決我的問題。一點背景信息,以便您了解為什麼我會做這樣的事情:我有一些包含數字的變數。因為這是不可能的(據我所知),我確實命名為: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}

在此輸入影像描述

相關內容