当我返回一个长度和一些字符串时,这个 MWE 会失败(我在尝试调试一些 Ti钾我编写的 Z 宏)。
\documentclass{scrartcl}
\usepackage{etoolbox}
\newlength{\mylength}
\setlength{\mylength}{20mm}
\newcommand\getlength[1]{
\ifnumcomp{#1}{=}{1}{\mylength}{}
\ifnumcomp{#1}{=}{2}{\mylength + 10mm}{}
\ifnumcomp{#1}{=}{3}{\mylength}{}
}
\begin{document}
\getlength{1}
\getlength{2} % As soon as this line exists, ...
\getlength{3} % ...this line returns: "Missing number, treated as zero."
\end{document}
为什么会这样?我怎样才能让它发挥作用?
答案1
\mylength
期望后面的数字来分配寄存器。它不输出当前值。
因此,前两个命令基本上执行 \mylength=\mylength 然后打印+ 10mm
。最后一个命令\mylength
缺少其编号。
答案2
我发现我可以通过返回来避免错误\the\mylength
,但我还不知道问题出现的原因。