在多列中对齐基线

在多列中对齐基线

我正在使用该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}

相关内容