保存命令的可选参数

保存命令的可选参数

我想要一个默认使用默认字符串的命令,如果提供了可选参数。我尝试使用 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}

相关内容