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 输出以向 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例如。我希望能够在某个时候解决这个问题。