使用 amsart 对齐环境中的 parbox 或 minipage 中的行距不规则

使用 amsart 对齐环境中的 parbox 或 minipage 中的行距不规则

当我在使用文档类的同时在环境(来自包)中使用parbox或时, 中的行距是不规则的。以下示例显示了在 或 中,如果上方的行包含带有降部字母,而下方的行包含带有升部字母,则两行之间的距离会更近。该问题不会在环境中出现,如果我将文档类更改为 ,也不会出现该问题。minipagealignamsmathamsartparboxparboxminipageequationarticle

\documentclass{amsart}

\usepackage{amsmath}

\begin{document}

Align, parbox:
\begin{align}
\parbox{16mm}{aaaa aaaa aaaa aaaa aaaa aaaa}\qquad
\parbox{16mm}{aaaa aaap aaaa aaap aaaa aaaa}\qquad
\parbox{16mm}{aaaa aaaa aaaa aaat aaaa aaat}\qquad
\parbox{16mm}{aaaa aaap aaaa aaat aaaa aaap}\qquad
\parbox{16mm}{aaaa aaap aaap aaat aaat aaap}
\end{align}

Equation, parbox:
\begin{equation}
\parbox{16mm}{aaaa aaaa aaaa aaaa aaaa aaaa}\qquad
\parbox{16mm}{aaaa aaap aaaa aaap aaaa aaaa}\qquad
\parbox{16mm}{aaaa aaaa aaaa aaat aaaa aaat}\qquad
\parbox{16mm}{aaaa aaap aaaa aaat aaaa aaap}\qquad
\parbox{16mm}{aaaa aaap aaap aaat aaat aaap}
\end{equation}

Align, minipage:
\begin{align}
\begin{minipage}[c]{16mm}aaaa aaaa aaaa aaaa aaaa aaaa\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaap aaaa aaap aaaa aaaa\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaaa aaaa aaat aaaa aaat\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaap aaaa aaat aaaa aaap\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaap aaap aaat aaat aaap\end{minipage}
\end{align}

Equation, minipage:
\begin{equation}
\begin{minipage}[c]{16mm}aaaa aaaa aaaa aaaa aaaa aaaa\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaap aaaa aaap aaaa aaaa\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaaa aaaa aaat aaaa aaat\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaap aaaa aaat aaaa aaap\end{minipage}\qquad
\begin{minipage}[c]{16mm}aaaa aaap aaap aaat aaat aaap\end{minipage}
\end{equation}

\end{document}

输出如下:

显示行距问题的示例输出

在这种情况下,如何确保parbox或中的行距一致?我认为我使用它们的方式不正确,但巧合的是,使用类或环境minipage时问题并没有出现。articleequation

(我知道通过在适当的地方添加内容来解决这个问题很简单\strut,但我更愿意了解根本问题。)

答案1

在此处输入图片描述

\documentclass{amsart}


\usepackage{amsmath}

\begin{document}

Align, parbox:
\begin{align}
\parbox{16mm}{1aaa aaaa aaaa aaaa aaaa aaaa}
\parbox{16mm}{2aaa aaap aaap aaat aaat aaap}
\end{align}

\makeatletter
\g@addto@macro\@parboxrestore{\lineskiplimit\normallineskip}
\makeatother
Align, parbox:
\begin{align}
\parbox{16mm}{1aaa aaaa aaaa aaaa aaaa aaaa}
\parbox{16mm}{2aaa aaap aaap aaat aaat aaap}
\end{align}


\end{document}

在 parboxes、minipages 等中,LaTeX 执行\@parboxrestore规范化设置,包括\baselineskip\lineskip控制基线间距,但是(这可能是一个错误,尽管它一直都是这样)它不会重置,\lineskiplimit这是 TeX 切换到使用时的截止点\lineskipamsart其中有一个相对较高的 4pt 值,align这对于保持显示的方程式行分开是有意义的,但是当\lineskip设置回\normalineskip(即1pt)时的行为永远没有用,\lineskiplimit永远不应该大于\lineskip或,正如您所观察到的,使行中的文本更高会导致更接近行间距。

请注意,问题可能article不仅仅存在于amsart。如果您添加

\typeout{%
\the\baselineskip,
\the\lineskip,
\the\lineskiplimit
}

你会看见

12.0pt, 1.0pt, 4.0pt

在阿姆萨特和

12.0pt, 1.0pt, 3.0pt

在文章中。

因此,两种情况都存在过大的问题\lineskiplimit,只是情况稍微糟糕一点,amsart所以即使是小写的适度额外高度/深度tp足以触发效果。

\@parboxrestore应该通过运行重置\lineskiplimit为例如,但兼容性问题可能会使改变这一点变得困难......\normallineskiplimit\normalbaselines

相关内容