从函数返回长度时“缺少数字,视为零”

从函数返回长度时“缺少数字,视为零”

当我返回一个长度和一些字符串时,这个 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,但我还不知道问题出现的原因。

相关内容