如何获得 \multicols{3} 和 \multicols{1} 之间一致的垂直间距?

如何获得 \multicols{3} 和 \multicols{1} 之间一致的垂直间距?

正如您在图像中看到的,垂直间距不一致。

在此处输入图片描述

我想避免以黑客方式模拟 multicol 使用的间距。

如果我使用 \multicols{1},我会收到警告:

软件包 multicol 警告:使用 `1' 列似乎不是一个好主意。因此,我在第 20 行输入中使用了两列。

在此示例中,获得对称垂直间距的好方法是什么?

\documentclass{article}
\usepackage{multicol,times}

\begin{document}

\hrule
\begin{multicols}{3}
    \centering {\bfseries Title 1} \\
    \centering Description 1 \\
\columnbreak
    \centering {\bfseries Title 2} \\
    \centering Description 2 \\
\columnbreak
    \centering {\bfseries Title 3} \\
    \centering Description 3
\end{multicols}
\hrule
% \begin{multicols}{1}
    \centering {\bfseries Title 4} \\
    \centering Description 4
% \end{multicols}
\hrule
\begin{multicols}{2}
    \centering {\bfseries Title 5} \\
    \centering Description 5 \\
\columnbreak
    \centering {\bfseries Title 6} \\
    \centering Description 5
\end{multicols}
\hrule

\end{document}

答案1

以下提供了一致的间距 - 您必须对垂直间距使用相同的代码:

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\newcolumntype{Y}{>{\centering\arraybackslash}X}

%----------
% Sections
%----------
\newcommand{\mysec}[2][2]{%
  \LARGE\noindent\begin{tabularx}{\textwidth}{*{#1}{Y}}
    #2
  \end{tabularx}%
  \bigskip
}

\newcommand{\mysubsec}[2][3]{
  \Large\noindent\begin{tabularx}{\textwidth}{*{#1}{Y}}
    #2
  \end{tabularx}%
  \medskip
}

\newcommand{\mysubsubsec}[2][4]{
  \small\noindent\begin{tabularx}{\textwidth}{*{#1}{Y}}
    #2
  \end{tabularx}%
  \smallskip
}

\begin{document}

\mysec{\bfseries Heading}

\mysubsec{\bfseries Subheading 1}

\mysubsubsec[3]{%
  {\bfseries Title 1} \par Description 1 &
  {\bfseries Title 2} \par Description 2 &
  {\bfseries Title 3} \par Description 3
}

\mysubsec{\bfseries Subheading 2}

\mysubsubsec{%
  {\bfseries Title 4} \par Description 4
}

\mysubsec{\bfseries Subheading 3}

\mysubsubsec[2]{%
  {\bfseries Title 5} \par Description 5 &
  {\bfseries Title 6} \par Description 6
}

\end{document}​

我用的是全宽tabularx它将多个Y-列(定义为居中-列)放在一起X\mysec后面跟着\bigskip\mysubsecby\medskip和。这提供了某种形式的一致性。您可以对所有都使用相同的方法。\mysubsubsec\smallskip


如果你想坚持multicol,使用 3 列布局来实现 1 列用法也是可能的:

在此处输入图片描述

\documentclass{article}
\usepackage{multicol}% http://ctan.org/pkg/multicol

\begin{document}

\noindent\hrulefill\smallskip
\begin{multicols}{3}
  \centering {\bfseries Title 1} \par
  Description 1 \par
  \columnbreak
  {\bfseries Title 2} \par
  Description 2 \par
  \columnbreak
  {\bfseries Title 3} \par
  Description 3
\end{multicols}
\smallskip\noindent\hrulefill\smallskip
\begin{multicols}{3}
  \mbox{} \par \mbox{} \par
  \columnbreak
  \centering {\bfseries Title 4} \par
  Description 4
\end{multicols}
\smallskip\noindent\hrulefill\smallskip
\begin{multicols}{2}
  \centering {\bfseries Title 5} \par
  Description 5 \par
  \columnbreak
  {\bfseries Title 6} \par
  Description 5
\end{multicols}
\smallskip\noindent\hrulefill

\end{document}​

相关内容