在 LaTeX 中不执行任何其他操作的情况下展开所有 \newcommand?

在 LaTeX 中不执行任何其他操作的情况下展开所有 \newcommand?

我可以\newcommand在 LaTeX 中不做任何其他事情而扩展所有 s 吗?

编辑:我真正的目标是将数学试卷标准化为纯文本,以便能够准确、轻松地提取定理和定义,而不会丢失数学符号。

答案1

有几个现有的程序可以在有限的环境下做到这一点,例如

https://ctan.org/tex-archive/support/de-macro

然而,一般来说,如果没有完整的 tex 执行,就不可能扩展所有的宏。

考虑

\newcommand\foo{\ifx\zzz\undefined no\else yes\fi}

扩展为noyes取决于当时 TeX 的状态或

\newcommand\foo{\sbox0{hello}\ifdim\wd0>2cm yes\else no\fi}

它会扩展到noyes取决于当前字体中设置的某些文本的宽度。

在简单的情况下,如果您扩展宏,文档的行为将相同,但是例如如果您扩展\zzz(并删除其定义),则的扩展\foo将会改变。

但是,如果您限制扩展用于创作方便的简单快捷宏,其中不包含条件或递归调用,那么在好日子里,任何文本处理工具中的简单字符串替换可能会做正确的事情。

相关内容