扩展文本中的乳胶命令的工具

扩展文本中的乳胶命令的工具

是否有一个脚本可以扩展 tex 源中的 LaTeX 命令?

我正在提交一份手稿源,我需要一个扩展 LaTeX 命令的工具,因为我不希望某些命令出现在源中。示例源:

\documentclass{article}
\newcommand{\modified}[2]{#2}
\begin{document}
    \modified{Old long
     % Possible comments 
    Text} {New
    correct 
    Text % with comments
    }
\end{document}

执行命令后,我希望得到如下输出

\documentclass{article}
\newcommand{\modified}[2]{#2}
\begin{document}
    New
    correct 
    Text % with comments
\end{document}

如果不存在这样的脚本,您能建议一些工具来编写一个吗?例如,是否有支持 LaTeX 的 Perl 包?

答案1

据我所知,没有这样的工具。通用 TeX 宏扩展器会扩展所有宏,除非遇到无法扩展的内容(通常是 TeX 基元或输入标记)。这种输出将完全无法阅读。

因此我建议您用您熟悉的脚本语言自己编写命令替换工具(对于这项任务,perl 和 sed 是很好的建议,python 和 emacs-lisp 也是我的首选)。

答案2

您的 MWE 建议您的\modified宏在这里隐藏以前的版本。

然后一个非常简单的方法就是简单地注释掉以独特模式开头的旧版本,比如

%private

或者

%!!

然后使用 sed 实用程序删除所有私有线路,例如

sed '/^%!!/d' foo.tex > bar.tex

您还可以在专用线路开始时执行类似操作\catcode1 14并使用^^A

sed '/^^^A/d' foo.tex > bar.tex

应该管用。

相关内容