我有一个方程式,其中的长线对齐不太好:
方程 (9) 和 (10) 除了方程编号外完全相同,并且两个方程的第一行都刚好适合文本区域。LaTeX 没有生成任何溢出警告,但方程 (10) 的第一行显然超出了文本区域。显然,这种不良行为与方程编号长于 LaTeX 无法容纳的第二行有关。我怎样才能使方程 (10) 显示为方程 (9),而不缩进,并在第二行显示方程编号?
来源如下:
\documentclass{article}
\usepackage{amsmath,lipsum}
\begin{document}
\setcounter{equation}{8}
\lipsum[1][1-3]
\begin{align}
\nonumber 0
&= \framebox[325pt]{line} \\
&= \framebox[295pt]{line}
\end{align}
\lipsum[1][4-6]
\begin{align}
\nonumber 0
&= \framebox[325pt]{line} \\
&= \framebox[295pt]{line}
\end{align}
\lipsum[1][7-9]
\end{document}
答案1
在“居中公式,标签在右侧”模式下,从左边距到对齐结构的“缩进”只有在以下情况下才应被接受:减少。遗憾的是,此模式的宏\x@calc@shift@rc
无法防止可能增加的“缩进”。您的示例显示了“缩进”如何从 (9) 增加到 (10)。
\documentclass{article}
\usepackage{amsmath,lipsum}
\usepackage{etoolbox}
\makeatletter
\patchcmd\x@calc@shift@rc
{% The \eqnshift@ could end up increasing!
\eqnshift@\displaywidth
\advance\eqnshift@-\@tempdima
\advance\eqnshift@-\@tempcntb\alignsep@
\global\divide\eqnshift@\tw@
}
{% Use \dimen@ to perform the calculations instead
\dimen@\displaywidth
\advance\dimen@-\@tempdima
\advance\dimen@-\@tempcntb\alignsep@
\divide\dimen@\tw@
% Update \eqnshift@ if and only if the result decreases
\ifdim\dimen@<\eqnshift@
\global\eqnshift@\dimen@
\fi
}
{}
{}
\makeatother
\begin{document}
\setcounter{equation}{8}
\lipsum[1][1-3]
\begin{align}
\nonumber 0
&= \framebox[325pt]{line} \\
&= \framebox[295pt]{line}
\end{align}
\lipsum[1][4-6]
\begin{align}
\nonumber 0
&= \framebox[325pt]{line} \\
&= \framebox[295pt]{line}
\end{align}
\lipsum[1][7-9]
\end{document}
附录:我已将修复报告给GitHub 问题跟踪器。
答案2
使用命令phantom
中的选项\adjustbox
创建一个幻影标签,如下所示
\adjustbox{phantom}{(\arabic{equation})}
如果你打算经常使用这个命令,请定义一个\tagphantom
命令
\newcommand{\tagphantom}{\adjustbox{phantom}{(\arabic{equation})} \notag}
\documentclass{article}
\usepackage{amsmath,lipsum}
\usepackage{adjustbox}
\newcommand{\tagphantom}{\adjustbox{phantom}{(\arabic{equation})} \notag}
\begin{document}
\setcounter{equation}{8}
\lipsum[1][1-3]
\begin{align}
\nonumber 0
&= \framebox[325pt]{line} \\
&= \framebox[295pt]{line}
\end{align}
\lipsum[1][4-6]
\begin{align}
&= \framebox[295pt]{line} \tagphantom \\
&=\framebox[295pt]{line}
\end{align}
\lipsum[1][7-9]
\end{document}
另一种方法是,split
当您不希望标签更改每行可用的空间时使用align
,但这会使标签位于垂直中间
\documentclass{article}
\usepackage{amsmath,lipsum}
\begin{document}
\setcounter{equation}{8}
\lipsum[1][1-3]
\begin{align}
\nonumber 0
&= \framebox[325pt]{line} \\
&= \framebox[295pt]{line}
\end{align}
\lipsum[1][4-6]
\begin{align}
\nonumber 0
&= \framebox[325pt]{line} \\
&= \framebox[295pt]{line}
\end{align}
\lipsum[1][7-9]
\end{document}