如何使 latexindent 在嵌套环境中对齐列?

如何使 latexindent 在嵌套环境中对齐列?

latexindent以下MWE是使用默认设置运行的结果:

\documentclass[border=1in, preview]{standalone}

\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{nicematrix}

\DeclarePairedDelimiter\abs{\lvert}{\rvert}%

\begin{document}
First, we obtain the eigenvalues:
\begin{align*}
    \abs*{
        \begin{bNiceMatrix}
            4 - \lambda & -1 & -1\\
            1 & 2 - \lambda & - 1\\
            1 & -1 & 2 - \lambda
        \end{bNiceMatrix}
    } & = (4 - \lambda) \abs*{
        \begin{bNiceMatrix}
            2 - \lambda & -1\\
            -1 & 2 - \lambda
        \end{bNiceMatrix}
    } + \abs*{
        \begin{bNiceMatrix}
            1 & - 1\\
            1 & 2 - \lambda
        \end{bNiceMatrix}
    } - \abs*{
        \begin{bNiceMatrix}
            1 & 2 - \lambda\\
            1 & -1
        \end{bNiceMatrix}
    }                                                                               \\
      & = (4 - \lambda)(\lambda^2 - 4 \lambda + 3) + (-\lambda + 3) + (3 - \lambda) \\
      & = -\lambda^3 + 8 \lambda^2 - 21 \lambda + 18                                \\
      & = -(\lambda - 2)(\lambda - 3)^2
\end{align*}
\end{document}

可以看到,align运行后,只有环境的对齐符号在代码中对齐latexindent。环境内的对齐符号bNiceMatrix(即第一个和第二个)被忽略。有没有办法让它们在代码中也对齐?

供参考的 PDF 输出: 最小工作示例

编辑:请注意,我添加了 PDF 输出以向 MWE 提供更多背景信息,但我的问题是关于使用的代码格式latexindent,而不是文档布局。对于造成的混淆,我深表歉意。

答案1

我们需要告诉latexindent.pl在中寻找对齐分隔符bNiceMatrix,如在中所述https://latexindentpl.readthedocs.io/en/latest/sec-default-user-local.html#lst-aligndelims-advanced

从您的.tex文件开始,然后我们使用以下 YAML 文件,例如john.yaml

lookForAlignDelims:
   bNiceMatrix: 1

然后我们运行

latexindent.pl -l john.yaml mwe.tex

输出如下:

\documentclass[border=1in, preview]{standalone}

\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{nicematrix}

\DeclarePairedDelimiter\abs{\lvert}{\rvert}%

\begin{document}
First, we obtain the eigenvalues:
\begin{align*}
    \abs*{
        \begin{bNiceMatrix}
            4 - \lambda & -1          & -1          \\
            1           & 2 - \lambda & - 1         \\
            1           & -1          & 2 - \lambda
        \end{bNiceMatrix}
    } & = (4 - \lambda) \abs*{
        \begin{bNiceMatrix}
            2 - \lambda & -1          \\
            -1          & 2 - \lambda
        \end{bNiceMatrix}
    } + \abs*{
        \begin{bNiceMatrix}
            1 & - 1         \\
            1 & 2 - \lambda
        \end{bNiceMatrix}
    } - \abs*{
        \begin{bNiceMatrix}
            1 & 2 - \lambda \\
            1 & -1
        \end{bNiceMatrix}
    }                                                                               \\
      & = (4 - \lambda)(\lambda^2 - 4 \lambda + 3) + (-\lambda + 3) + (3 - \lambda) \\
      & = -\lambda^3 + 8 \lambda^2 - 21 \lambda + 18                                \\
      & = -(\lambda - 2)(\lambda - 3)^2
\end{align*}
\end{document}

-y您可以使用以下开关来实现相同的结果,而无需创建 YAML 文件:

latexindent.pl -y lookForAlignDelims:bNiceMatrix:1 mwe.tex

关于嵌套对齐

关于嵌套对齐及其定制的具体问题是一个已知问题;参见https://latexindentpl.readthedocs.io/en/latest/sec-conclusions-know-limitations.html例如。我希望能够在某个时候解决这个问题。

相关内容