新的 \gdef 命令未提供预期的输出

新的 \gdef 命令未提供预期的输出

下面代码的预期输出应该是简单的短语“测试一二三”,但输出却只是“一二三”。

我尝试过但\xdef没有效果,我不知道哪里出了问题。

梅威瑟:

\documentclass[]{article}

\makeatletter
\newcommand{\test}[1]{\gdef\@test{#1}}
\newcommand{\@test}[1]{Testing #1}
\makeatother

\test{One two three}

\begin{document}

\makeatletter
\@test
\makeatother

\end{document}

答案1

如果您想要附加到现有的宏而不是覆盖它,您可以执行以下操作:

\documentclass[]{article}

\makeatletter
\newcommand{\test}[1]{\g@addto@macro\@test{ #1}}
\newcommand{\@test}{Testing}
\makeatother

\test{One two three}

\begin{document}

\makeatletter
\@test
\makeatother

\end{document}

相关内容