下面代码的预期输出应该是简单的短语“测试一二三”,但输出却只是“一二三”。
我尝试过但\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}