如何使用 \noexpand 和 \unexpanded 而不在未扩展的标记后附加空格?

如何使用 \noexpand 和 \unexpanded 而不在未扩展的标记后附加空格?

我当前的一项任务是编写一个辅助文件,其中包含要在单独编译时加载的额外命令。以下是 MWE:

\documentclass{memoir}
\newwrite\testaux
\immediate\openout\testaux=\jobname.myaux
\begin{document}
    \makeatletter
    \immediate\write\testaux{\noexpand\dont@want@spaces@after@this words}
    \immediate\write\testaux{\unexpanded{\dont@want@spaces@after@this@either}words}
    \makeatother
    Here is a body.
\end{document}

这将生成一个.myaux包含以下内容的文件:

   \dont@want@spaces@after@this words
   \dont@want@spaces@after@this@either words

我不明白为什么这两个 e-TeX 宏都在它们的“扩展”后面放置了一个空格。我该怎么做才能写这个?

   \dont@want@spaces@after@thiswords
   \dont@want@spaces@after@this@eitherwords

答案1

\documentclass{memoir}
\newwrite\testaux
\immediate\openout\testaux=\jobname.myaux
\begin{document}
    \makeatletter
    \immediate\write\testaux{\string\dont@want@spaces@after@this words}
    \immediate\write\testaux{\string\dont@want@spaces@after@this@either words}
    \makeatother
    Here is a body.
\end{document}

相关内容