执行 LaTeX 维护任务的好工具?

执行 LaTeX 维护任务的好工具?

我有大量由几个独立人员编写的旧版和新版 LaTeX 文档。我必须更新它们,使它们符合最新、现代、一致、标准化的 LaTeX 代码。这些文档中有很多常见的“错误”或怪癖。例如:

\begin{equation}
  a = b
\nonumber
\end{equation}

而不仅仅是

\[
  a = b
\]

以及类似的情况(eqnarray而不是align等等)。或者文本中完全随机的代码换行符(输出可以合并的改变分隔符(如段落)。

推荐使用哪些工具来自动执行此类任务?主要是将代码片段更改为其他代码片段,而不更改代码片段的原始内容。可以说,查找和替换可以处理 LaTeX 语法/语义。

有这样的工具吗?我在 Windows 上工作。

答案1

第一步可能是加载nag每个文档开头的 package,用于检查常见错误、过时的包和过时的命令:

\RequirePackage[l2tabu, orthodox]{nag}

例如,可以使用正则表达式和 perl、php 或 sed 等工具进行上下文感知检查和替换。但您需要知道要查找什么。

另外还有帮助:grep、egrep、find,例如:

find "." -name "*.tex" | xargs grep eqnarray

您可以扩展此功能以搜索整个目录树以查找不需要的模式的列表。

我会在 Linux 上执行此操作,因为通常已预装了上述所有工具。在 Windows 上,您可以安装 Cygwin(用于 shell 和工具)和 ActiveState Perl。

答案2

我认为你可以用布莱克泰克按照适用于 Python 的黑色格式化程序经过尼科·施洛默. 来自文档

blacktex 是一款小工具,可帮助编辑 LaTeX 文章。它可删除给定文件中的所有注释,并更正一些常见的反模式。例如,

blacktex in.tex out.tex

输入文件

Because   of $$a+b=c$$ ({\it Pythogoras}),
% @johnny remember to insert name
and $y=2^ng$ with $n=1,...,10$, we have ${\Gamma \over 2}=8.$

转换为

Because of
\[
a+b = c
\]
(\textit{Pythogoras}),
and \(y = 2^n g\) with \(n = 1,\dots,10\), we have \(\frac{\Gamma}{2} = 8\).

您可以使用

blacktex -i in.tex

答案3

我很想使用常用表达,您可以使用各种工具(如perl)进行访问python

latexindent.pl有专门更换开关可以帮你解决这个问题。如果你从以下文件开始,说myfile.tex

我的文件.tex

this one has no number
\begin{equation}
a = b
\nonumber
\end{equation}
this one keeps it number
\begin{equation}
a = b
\end{equation}

并采用以下设置,例如,equation.yaml

replacements:
  -
    substitution: |-
      s/(\\begin\{equation\})(.*?)(\\end\{equation\})/
            my $begin = $1;
            my $body  = $2;
            my $end  =  $3;
            if($body=~m|\\nonumber|s){
                $body  =~ s|\\nonumber(\h*\R)?||sg;
                $begin = "\\[";
                $end   = "\\]";
            }
            $begin.$body.$end;/sxge

我们称其latexindent.pl

latexindent.pl -rr myfile.tex -l equation.yaml

产生以下输出

this one has no number
\[
a = b
\]
this one keeps it number
\begin{equation}
a = b
\end{equation}

您可以在latexindent.pl 文档以及本网站上的各种答案:

相关内容