有没有 LaTeX 代码格式化程序这样的东西?

有没有 LaTeX 代码格式化程序这样的东西?

不久前,我一直在为 JavaScript 寻找这个,但我想知道是否存在一个适用于所有或大多数语言的通用方法。

例如,对于 LaTeX,我会在文本框中输入以下内容

$f_i^k+10=x$

然后它就会输出格式更好的版本

%%%
%% Insert comment describing function here
%%%
$ f_{i}^{k} + 10 = x $

我不可能成为这个星球上唯一一个不想通过庞大的 .tex 文件来解决这些繁琐问题的人。

答案1

我创建了一个网站,格式化乳胶代码,使缩进看起来正确。

该网站的总体思路是确保您可以阅读代码。它还提供表格缩进。我仍在寻找是否可以为公式添加空注释块。

https://c.albert-thompson.com/latex-pretty/

答案2

看一眼特普雷蒂。我曾用它几次来清理混乱的代码,效果不错。

答案3

从 3.7 版开始,latexindent.pl可以帮助解决这个问题。

警告:使用如下正则表达式时一定要小心,始终检查它们的行为是否符合您的要求,并在将其用于任何重要的事情之前进行测试。

从以下示例代码开始

\begin{env}
$f_i^k+10=x$
\end{env}
$g_ij^12-3=x$

YAML文件,比如puk1.yaml

replacements:
  -
    substitution: |-
      s/\$(.*?)\$/%%
            %% Insert comment describing function here
            %%
            \$$1\$/sxg

并运行命令

latexindent.pl -r myfile.tex -l=puk1.yaml

给出输出:

\begin{env}
    %%
    %% Insert comment describing function here
    %%
    $f_i^k+10=x$
\end{env}
%%
%% Insert comment describing function here
%%
$g_ij^12-3=x$

这不包含您要求的所有内容。我们可以在以下文件中纳入更多替换内容,例如puk2.yaml

replacements:
  -
    substitution: |-
      s/\$\h*(.*?)\h*\$/#
            my $comment = "%%\n%% Insert comment describing function here\n%%\n";
            my $body = $1;
            # add braces to superscripts and subscripts
            $body =~ s@(\^|\_)([a-zA-Z0-9]+)@$1\{$2\}@sg;
            # add a single space around + - =
            $body =~ s@\h*([+\-=])\h*@ $1 @sg;
            # put it all together
            $comment."\$ ".$body." \$";/sxge

并运行

latexindent.pl -r myfile.tex -l=puk2.yaml

给出

\begin{env}
    %%
    %% Insert comment describing function here
    %%
    $ f_{i}^{k} + 10 = x $
\end{env}
%%
%% Insert comment describing function here
%%
$ g_{ij}^{12} - 3 = x $

答案4

这个在线格式化程序可以帮助你。

相关内容