我试图定义一个\newcommand
包含\item*
(星号前没有空格)的定义,但是在显示命令时,我发现有一个额外的空格,从而阻止了 moodlemulti
环境正常工作。
有什么方法可以防止\newcommand
添加这个空间吗?
这是代码示例(使用 编译pdflatex
)
\documentclass{article}
\newcommand{\itemstar}{\item*}
\show\itemstar
\begin{document}
abc
\end{document}
答案1
TeX 从文件中读取文本并将其标记化。控制序列(无论是否以空格结束)被标记化为一个标记,后面跟着下一个标记。文本\item*
被标记化为 token[\item]token[*]。定义宏 \itemstar 时,这对标记会保存到内存中。当打印宏的内容(由原语\show
)时,这两个标记将以标准形式打印:每个控制序列标记后面都跟有空格。
您可以在输入中写入:\item*
或\item *
。这两种情况都被标记为 token[\item]token[*] (在 TeX 中它们之间没有区别),并且这对标记被打印回为\item *
。