我想要一个默认使用默认字符串的命令,如果提供了可选参数。我尝试使用 let,但结果很奇怪
\documentclass{minimal}
\newcommand{\standardstring}{standard}
\newcommand{\printresult}[1][\standardstring]{%
\let\printstring#1
\printstring
}
\begin{document}
\printresult
\printresult[abc]
\end{document}
这导致
standard
bc a
答案1
在第一种情况下,任务是:
\let\printstring\standardstring␣
非标准情况:
\let\printstring abc␣
在两种情况下,行尾都包含一个空格。在后一种情况下,赋值是\let\printstring=a
。然后bc
设置行尾的空格,最后\printstring
跟上。
也许你想要这样的东西:
\documentclass{minimal}
\newcommand{\standardstring}{standard}
\newcommand{\printresult}[1][\standardstring]{%
\def\printstring{#1}%
\printstring
}
\begin{document}
\printresult
\printresult[abc]
\end{document}
答案2
\documentclass{minimal}
\newcommand\standardstring{standard}
\newcommand{\printresult}[1][\standardstring]{%
\edef\standardstring{#1}#1}
\begin{document}
\printresult
\printresult[abc]
\printresult
\end{document}