表格周围的垂直间距

表格周围的垂直间距

我正在使用表格创建包含两个项目的列表。但是,我注意到表格前的行距与常规文本后的行距不同。在表格前的情况下,只有当行不包含低于书写行的字符时,行距才会太小。

有没有办法保证行距相同?

编辑:根据 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,但不在和之间ZZZZfirst line因为\vbox它本身表现为太高的单线:基线穿过中的最后一个框,\vbox并且该最后一个框上方的所有材料都被解释为这条单线的高度。

\vtopD. 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

相关内容