将宏完全扩展为参数

将宏完全扩展为参数

我有一行代码看起来像这样

\includegraphics{\complicatedmacro}

返回\complicatedmacro的只是图片文件的名称,例如,mypicture这样当我写

 \complicatedmacro

mypicture在我的 LaTeX 代码中,我得到了输出 .pdf 中的文本

因此应该只在文档中\includegraphics{\complicatedmacro}设置图片。但我收到错误mypicture

TeX 容量超出,抱歉 [输入堆栈大小=5000]。

然而当我写作时\includegraphics{mypicture},一切都正常。

我感觉这个问题与扩展过程有关。\complicatedmacro在调用之前让 完全扩展的秘诀是什么\includegraphics

我希望这就足够了。我想要一个一般性的答案。但如果你真的需要“ \complicatedmacro”,我可以写。

谢谢! :)

\complicatedmacro定义

 \newcommand{\usedpicturename}[2]%
    {\ifthenelse{\boolean{shouldusetestpicture}}{#1}{#2}}

.tex在文件中使用

现在我在代码中的某个地方设置了布尔值

   \setboolean{shouldusetestpicture}{false}
   \includegraphics{\usedpicturename{mypicturetest}{mypicturecool}} %Here pops up the error

答案1

ifthenelse不能通过扩展来工作,它涉及赋值,因此您无法“完全扩展”。有很多条件宏可以通过扩展来工作,例如

\newcommand{\usedpicturename}[2]%
    {\ifshouldusetestpicture #1\else #2\fi}

相关内容