笔记

笔记

我正在寻找一个 LaTeX 代码嗅探器和/或代码美化器,因为我正在为我的 LaTeX 书籍创建一个 CI 服务器,我想要一些东西。:D

答案1

latexindent.pl可在ctan并且是texlive

请参阅pdf或者html了解详细信息。

github您可以在以下位置找到(并关注)该项目

https://github.com/cmhughes/latexindent.pl

基本用法

您可以latexindent通过键入以下命令之一从命令行运行,具体取决于您的操作系统和 tex 发行版

latexindent myfile.tex
latexindent.pl myfile.tex
latexindent.exe myfile.tex

您还可以使用arara规则,indent.yaml

示例 1:入门

默认情况下,每次遇到脚本时\begin{<something>}...end{<something>}它都会增加缩进。

从以下内容开始mwe.tex

mwe.tex

\begin{figure}[!htb]
 \centering
\begin{tikzpicture}
    \begin{axis}[
        framed,
        width=\figurewidth,
        xmin=-5,xmax=5,
        ymin=-1,ymax=5,
        xtick={-6},
        ytick={-6},
     ]
      \addplot expression[domain=-4.5:2.2]{2^x};
    \end{axis}
\end{tikzpicture}
\end{figure}

并运行

latexindent mwe.tex

输出结果如下:

\begin{figure}[!htb]
    \centering
    \begin{tikzpicture}
        \begin{axis}[
                framed,
                width=\figurewidth,
                xmin=-5,xmax=5,
                ymin=-1,ymax=5,
                xtick={-6},
                ytick={-6},
            ]
            \addplot expression[domain=-4.5:2.2]{2^x};
        \end{axis}
    \end{tikzpicture}
\end{figure}

示例 2:对齐分隔符

latexindent.pl将致力于对齐基于分隔符的环境;例如,从以下内容开始mwe.tex

\begin{align*}
    F(-x) & =-(-x)^2 &   G(-x) & =-(-x)^4 & H(-x) & =-(-x)^6 \\ 
        & =-x^2    & & =-x^4    &       & =-x^6\\    
          &  =F(x)  &      & =G(x)    &       & =H(x)    
\end{align*}

并运行

 latexindent.pl mwe.tex

给出

\begin{align*}
    F(-x) & =-(-x)^2 & G(-x) & =-(-x)^4 & H(-x) & =-(-x)^6 \\
          & =-x^2    &       & =-x^4    &       & =-x^6    \\
          & =F(x)    &       & =G(x)    &       & =H(x)
\end{align*}    

自定义缩进

所有自定义操作均通过YAML界面完成。首先,您可以尝试创建以下小文件

localSettings.yaml

defaultIndent: "  "

然后运行

    latexindent.pl -l mwe.tex

如果你希望将YAML文件命名为其他名称(例如myfile.yaml),那么你可以运行

    latexindent.pl -l=myfile.yaml mwe.tex

还有更多值得探索的事情

文档pdf或者html包含完整详细信息。您可能想探索以下一些内容:

  • verbatimEnvironments适用于逐字记录环境
  • specialBeginEnd为您自己的图案
  • -m允许你修改换行符的开关

在任何重要的事情上使用它之前......

我建议同时使用以下方法:

  • 目视检查
  • 使用检查latexdiff inputfile.tex outputfile.tex

答案2

我创建了一个网站,可以重新格式化乳胶代码以使缩进保持一致。这使用乳胶压痕在后端。这是一个非常基本的系统,但会对括号内的项目进行简单的缩进,以便它们处于同一级别。

它不进行任何代码嗅探,也无法检测您是否缺少结束标签。

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

答案3

最接近 LaTeX 代码嗅探器的是nag尝试检测并警告过时软件包的使用情况以及列出的其他内容的软件包l2tabu

我不知道是否存在 (La)TeX 美化器。LaTeX 是一种 TeX 格式,而 TeX 是一种非常动态的语言,允许在编译运行期间更改其自己的解析器规则。这使得它很难处理,除非使用完整的 TeX 编译器本身。不久前,我曾考虑使用 Perl 编写一个有限的工具,但一直没有时间这样做。

答案4

VSCode 有一个名为Prettier它会自动格式化您的 (latex) 代码。在 VSCode IDE 中安装后,可以.tex通过按以下方式自动格式化文件: Ctrl+Shift+PFormat Document<Press enter>。(在 Mac 上替换CtrlCMD)。

插图

您可以尝试在以下.tex文件上进行在线测试他们的网站在安装之前。

笔记

我很想看一个例子.yml来说明如何将 Prettier 纳入(到 GitLab)CI,作为检查/测试.tex。基本上确保如果存储库中的文件并非全部符合要求,则抛出构建错误,如果文件格式符合要求prettier,则获得构建通过。请分享此类解释的链接,或将其作为新答案包含在内,因为我认为这可能仍在问题范围内。.texprettier

相关内容