当我在使用文档类的同时在环境(来自包)中使用parbox
或时, 中的行距是不规则的。以下示例显示了在 或 中,如果上方的行包含带有降部字母,而下方的行包含带有升部字母,则两行之间的距离会更近。该问题不会在环境中出现,如果我将文档类更改为 ,也不会出现该问题。minipage
align
amsmath
amsart
parbox
parbox
minipage
equation
article
\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
时问题并没有出现。article
equation
(我知道通过在适当的地方添加内容来解决这个问题很简单\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 切换到使用时的截止点\lineskip
。amsart
其中有一个相对较高的 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
所以即使是小写的适度额外高度/深度t
也p
足以触发效果。
\@parboxrestore
应该通过运行重置\lineskiplimit
为例如,但兼容性问题可能会使改变这一点变得困难......\normallineskiplimit
\normalbaselines