我习惯在排版论文时使用自己的速记,比如说
\newcommand{\f}{\frac} \newcommand{\e}{\epsilon}
最近,让其他人能够阅读我的源文件对我来说变得很重要,因此这种简写是不可取的。有没有办法用\newcommand
全名替换所有出现的简写?例如
\lim_{\e\to0} \f{\sin{\e}}{\e}=0
应替换为
\lim_{\epsilon\to0} \frac{\sin{\epsilon}}{\epsilon}=0
因此,我可以使用我通常的速记方式打字,但也可以轻松地复制我的源文件并展开所有速记方式。
答案1
这实际上不是 TeX 问题,所以这里不使用 TeX。最简单的方法可能是使用正则表达式(任何好的文本编辑器都会支持它们)。例如,您可以使用\\f(?![a-zA-Z])
查找所有出现的\f
并将其替换为\\frac
(或\frac
,取决于编辑器和首选项)。如果您的文档中有\makeatletter
,并且您确定您从未写过\f@
您想要的位置\frac@
(为什么会这样?),则使用 更安全\\f(?![a-zA-Z@])
。
这当然不会检测到\csname f\endcsname
或之类的东西\@nameuse{f}
。
答案2
这个问题已经回答在 stackoverflow 上,我在这里重现一下。
有一个不错的 Python 脚本可以完成您要查找的操作: