我有一行代码看起来像这样
\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}