我正在使用表格创建包含两个项目的列表。但是,我注意到表格前的行距与常规文本后的行距不同。在表格前的情况下,只有当行不包含低于书写行的字符时,行距才会太小。
有没有办法保证行距相同?
编辑:根据 David Carlisle 的建议,我删除了所有,\\
从而消除了下限水平框(\bigskip
我认为这似乎是插入段落分隔符的正确方法?)。但表格和前一行之间的间距仍然不一致:
MWE2:
\documentclass[11pt]{memoir}
\begin{document}
\noindent
List 1 (works as wanted):
\noindent
ZZZZZZZZZZ
\noindent
ZZZZZZZZZZ\bigskip
\noindent
List 2 -- too little line sPace above the tabular:
\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}l l}
ZZZZZZZZZZ & ZZZZZZZZZZ \\
ZZZZZZZZZZ & ZZZZZZZZZZ
\end{tabular*}\bigskip
\noindent
List 3 -- works as expected above the tabular:
\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}l l}
ZZZZZZZZZZ & ZZZZZZZZZZ \\
ZZZZZZZZZZ & ZZZZZZZZZZ
\end{tabular*}
\end{document}
答案1
您可以使用[t]
它,这样表格的参考点就位于其第一条基线,并且表格上方的基线到基线间距自然保留。
\documentclass[11pt]{memoir}
\nonzeroparskip
\setlength\parindent{0pt}
\begin{document}
List 1 (works as wanted):
ZZZZZZZZZZ\\
ZZZZZZZZZZ
List 2 -- too little line sPace above the tabular:
\begin{tabular*}{\textwidth}[t]{@{\extracolsep{\fill}}l l}
ZZZZZZZZZZ & ZZZZZZZZZZ \\
ZZZZZZZZZZ & ZZZZZZZZZZ
\end{tabular*}
List 3 -- works as expected above the tabular:
\begin{tabular*}{\textwidth}[t]{@{\extracolsep{\fill}}l l}
ZZZZZZZZZZ & ZZZZZZZZZZ \\
ZZZZZZZZZZ & ZZZZZZZZZZ
\end{tabular*}
\end{document}
答案2
我们可以在 TeX 原始级别(不使用 LaTeX)模拟您的问题。您将多行插入\vbox
到行中,并且希望保留\baseline
网格。您的示例如下所示:
XXXX\par
ZZZZ\par % these two lines are in \baseline grid
\vbox{
\hbox{first line}
\hbox{second line}
}
YYYY
这样会使基线网格保持在second line
和之间YYYY
,但不在和之间ZZZZ
,first line
因为\vbox
它本身表现为太高的单线:基线穿过中的最后一个框,\vbox
并且该最后一个框上方的所有材料都被解释为这条单线的高度。
\vtop
D. Carlisle 建议在这种情况下改用\vbox
。这\vtop
表现为单线,基线穿过 内的第一个框\vtop
。然后ZZZZ
和之间的基线网格first line
将正常,但second line
和之间的网格已损坏YYYY
。这是因为 中第一个框下的所有材料都\vtop
构成了单线的深度。
解决方案是使用原始寄存器的\vtop
一个技巧:\prevdepth
XXXX\par
ZZZZ\par % these two lines are in \baseline grid
\vtop{
\hbox{first line} % this keeps baseline grid because \vtop
\hbox{second line}
\par \expandafter
}\expandafter\prevdepth\the\prevdepth % this keeps baseline grid because \prevdepth
YYYY