![不可预测的垂直空间](https://linux22.com/image/245840/%E4%B8%8D%E5%8F%AF%E9%A2%84%E6%B5%8B%E7%9A%84%E5%9E%82%E7%9B%B4%E7%A9%BA%E9%97%B4.png)
我正在写一份简历,我非常注重确保每个部分之间都有看起来完全正确的间距。我的部分是用 来划分的\hrule
(虽然在我的实际文档中我使用titlesec
包来定义它们的格式)。这个规则可以很容易地注意到一个部分的间距与另一个部分的间距不同。
以下示例显示了我的文档中需要的几个元素。我将规则放在非常靠近文本的位置,以使差异更加明显。根据部分是否包含文本、列表或列,后续部分将在其下方以不规则的量间隔开。
编辑:我已经使用了\myrule
,\hrule
并遵循了@Ulrike 给出的其他建议。
\documentclass[10pt]{article}
\usepackage[letterpaper,margin=1in]{geometry}
\usepackage{enumitem}
\usepackage{multicol}
\newcommand{\sampletext}{Here is some sample text\strut}
\newcommand{\myrule}{\par\vspace{-1\baselineskip}\noindent\strut\rule{\textwidth}{0.4pt}}
\newenvironment{compactlist}%
{\begin{itemize}[topsep=0pt,itemsep=0pt,parsep=0pt,labelindent=0em,partopsep=0pt,leftmargin=*]}
{\end{itemize}}
\begin{document}
\section{Plain}
\sampletext
\myrule
\section{Itemized}
\begin{compactlist}
\item \sampletext
\item \sampletext
\end{compactlist}
\myrule
\section{Itemized With Text}
\noindent\sampletext
\begin{compactlist}
\item \sampletext
\item \sampletext
\end{compactlist}
\myrule
\section{Parbox Itemized}
\hbox{
\parbox[t]{7in}{
\begin{compactlist}
\item \sampletext
\item \sampletext
\end{compactlist}
}
}
\myrule
\section{Parbox Itemized With Text}
\parbox[t]{6.5in}{
\sampletext
\begin{compactlist}
\item \sampletext
\item \sampletext
\end{compactlist}
}
\myrule
\section{Multicols}
\setlength{\multicolsep}{0pt}
\begin{multicols}{3}
\begin{compactlist}
\item \sampletext
\item \sampletext
\item \sampletext
\item \sampletext
\item \sampletext
\item \sampletext
\end{compactlist}
\end{multicols}
\myrule
\end{document}
有没有什么办法可以强制实现一致的垂直间距?
答案1
根据此处的要求,我的评论作为答案:
我不会使用原始的\hrule
,而是使用\myrule
像这样的定义,例如:\newcommand\myrule{\par\noindent\strut\rule{\textwidth}{0.4pt}}
。
这样间距就比 更一致了\hrule
。您可以在列表定义中使用 partopsep=0pt 来进一步改善它。在示例文本中添加 \strut 也是明智的做法。
下面的 1pt\parbox
是行跳过。在 TeX 看来, parbox 就像一个带有非常大降部字符的字符。因此 TeX 会插入\lineskip
(默认 1pt) 以避免它接触下一行。您可以使用 来删除它\lineskip=0pt
(除非您的\parbox
最后一行包含一些带有大降部的特殊对象)。您不应该删除\strut
。