使用 tabular/ minipage/ parbox 实现一致的间距

使用 tabular/ minipage/ parbox 实现一致的间距

尽管我已经阅读了大量关于如何实现一致间距的帖子,但我仍然无法弄清楚为什么在下面的例子中使用任何宏 \testD 到 \testG 时它不起作用。

(当使用宏 \testA(如示例中所示)到 \testC 时,文本看起来非常好。)

非常感谢有关如何将宏 \testD 修复为 \testG 的任何帮助!

\documentclass{article}

\usepackage[english]{babel}
\usepackage{paralist}

\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}

\newcommand{\text}{%
    Hello abc abc  abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc gabc 
}

% \testA -> \testC working nicely (consistent spacing)
%
\newcommand\testA{%
    \text\\
    \text

    \text
}
\newcommand\testB{%
    \begin{tabular}[t]{@{}p{\textwidth}@{}}
        \text\\
        \text\\
        \text
    \end{tabular}
}
\newcommand\testC{%
    \begin{compactitem}
        \item \text
        \item \text
    \end{compactitem}

    \text
}

% \testD-\testG: space between 2nd and 3rd paragraph...
%
\newcommand\testD{% ...TOO SMALL
    \begin{tabular}[t]{@{}p{\textwidth}@{}}
        \text\\
        \text
    \end{tabular}

    \text
}
\newcommand\testE{% ...TOO LARGE
    \begin{tabular}[t]{@{}p{\textwidth}@{}}
        \text\\
        \text
    \end{tabular}

    \begin{tabular}[t]{@{}p{\textwidth}@{}}
        \text
    \end{tabular}
}
\newcommand\testF{% ...TOO SMALL
    \begin{minipage}[t]{\textwidth}
        \text\\
        \text\strut
    \end{minipage}

    \text
}
\newcommand\testG{% ...TOO SMALL
    \parbox[t]{\textwidth}{%
        \text\\
        \text\strut
    }

    \text
}

\begin{document}

    \testA

\end{document}

答案1

tex 尝试将行\baselineskip分开,但是如果一行的深度加上下一行的高度已经接近或大于\baselinekip它就会放弃,而是插入一个固定的\lineskip胶水。带有 ] 的小页面或表格[t包含深度中除顶行高度之外的所有内容,因此下面的框仅被胶水隔开\lineskip

[b]在第一个表上以及[t]在顶部需要的地方使用解决了该问题。

\newcommand\testD{% ...TOO SMALL
    \begin{tabular}[b]{@{}p{\textwidth}@{}}
        \text\\
        \text
    \end{tabular}

    \text
}
\newcommand\testE{% ...TOO LARGE
    \begin{tabular}[b]{@{}p{\textwidth}@{}}
        \text\\
        \text
    \end{tabular}

    \begin{tabular}[t]{@{}p{\textwidth}@{}}
        \text
    \end{tabular}
}

但是如果您有两个以上的项目并想要控制它们之间的间距,则会变得更加困难,因为[b]在第一个表格上使用可以轻松控制下面的空间但不能控制上面的空间。

经典的,如果您确实需要堆叠多个这样的项目(如果您的表格只有普通文本),最简单的方法是安排\strut在每个框的(至少)第一行和最后一行中有一个,然后使用,\lineskip=0pt这样就不会添加额外的空间,并且间距不受文本中降部存在的影响,因为 \strut 比所有标准字母都更深。

相关内容