我可以\newcommand
在 LaTeX 中不做任何其他事情而扩展所有 s 吗?
编辑:我真正的目标是将数学试卷标准化为纯文本,以便能够准确、轻松地提取定理和定义,而不会丢失数学符号。
答案1
有几个现有的程序可以在有限的环境下做到这一点,例如
https://ctan.org/tex-archive/support/de-macro
然而,一般来说,如果没有完整的 tex 执行,就不可能扩展所有的宏。
考虑
\newcommand\foo{\ifx\zzz\undefined no\else yes\fi}
扩展为no
或yes
取决于当时 TeX 的状态或
\newcommand\foo{\sbox0{hello}\ifdim\wd0>2cm yes\else no\fi}
它会扩展到no
或yes
取决于当前字体中设置的某些文本的宽度。
在简单的情况下,如果您扩展宏,文档的行为将相同,但是例如如果您扩展\zzz
(并删除其定义),则的扩展\foo
将会改变。
但是,如果您限制扩展用于创作方便的简单快捷宏,其中不包含条件或递归调用,那么在好日子里,任何文本处理工具中的简单字符串替换可能会做正确的事情。