我正在使用该multicol
软件包,并希望对齐两列的基线。单纯使用\paragraph
标题似乎会破坏对齐,这在视觉上会非常不协调。有什么方法可以强制两列保持对齐吗?
例如,下面生成一个包含两列的文档,除了\paragraph
右列的标题与左侧的文本不对齐之外,它看起来不错:
\documentclass{article}
\usepackage{multicol}
\usepackage{lipsum}
\begin{document}
\begin{multicols}{2}
\paragraph{foo} \lipsum[1-2]
\paragraph{bar} \lipsum[4]
\paragraph{morebar} \lipsum[4]
\paragraph{baz} \lipsum[7-10]
\end{multicols}
\end{document}
结果是:
(我希望“morebar”与“Mau-”或“rhoncus”对齐。)
答案1
您可能需要考虑使用网格包,它至少有助于实现您所追求的一些目标。请注意,您可能需要手动设置每页行数(包的默认值为40
)。根据我的经验,加载微型使用包时也要进行包管理grid
。
有关在“网格系统”上使用 LaTeX 排版的更多信息,请参阅问题LaTeX 中的网格系统以及相关答案。
附录:如果您的目标比为文档实现网格排版“外观”更为简单,那么对于您描述的情况,您可以简单地重新定义命令\paragraph
以在每个“段落”标题上方留下固定数量的空白,以 的倍数表示\baselineskip
。例如,以下代码片段(将插入到文档的序言中)指示 LaTeX 在新的“段落”标题上方留下 2 个空白行的空白。
\makeatletter
\renewcommand\paragraph{%
\@startsection{paragraph}{4}{\z@}%
{2\baselineskip}% default is "3.25ex \@plus1ex \@minus.2ex"
{-1em}{\normalfont\normalsize\bfseries}}
\makeatother
答案2
将段落定义更新为的倍数baselineskip
,事物就会排列整齐。
\documentclass{article}
\usepackage{multicol}
\usepackage{lipsum}
\makeatletter
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{\the\baselineskip \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
\makeatother
\begin{document}
\begin{multicols*}{2}
\paragraph{foo} \lipsum[1-2]
\paragraph{bar} \lipsum[4]
\paragraph{morebar} \lipsum[4]
\paragraph{baz} \lipsum[7-10]
\end{multicols*}
\end{document}
在标准类中,aboveskip
空间为 3.25ex,您需要它是 的倍数baselineskip
,如上面的 MWE 所示。该示例适用于星号版本和普通版本的环境。
您还需要对插入的任何其他项目(例如图像、其他分段命令等)执行此操作。
答案3
如果我理解了你的问题,你应该把 放在\raggedcolumns
后面\begin{multicols}{2}
。