多列的最后一列有过多的空格

多列的最后一列有过多的空格

最后一列multicols有不需要的额外空白(从视觉上来说,边距就可以了):

\begin{multicols}{3}
\begin{description}
\item[asdf] - fdasdf
\item[asdf] - fdasdf
\item[asdf] - fdasdf
\item[as42df] - fda432sdf
\item[as42df] - fda432sdf
\item[as42df] - fda432sdf
\item[59093] - 5324
\item[59093] - 5324
\item[59093] - 5324
\end{description}
\end{multicols}

表格看上去没有居中。

基本上,我想将其multicols视觉居中(这意味着最小边界框(即不包括空白)位于中心)。

答案1

我建议采用更严格的结构;类似这样的结构tabular就可以了:

在此处输入图片描述

\documentclass{article}
\usepackage{multicol}% http://ctan.org/pkg/multicol
\usepackage{showframe}% http://ctan.org/pkg/showframe
\begin{document}
\begin{multicols}{3}
  \begin{description}
    \item[asdf] - fdasdf
    \item[asdf] - fdasdf
    \item[asdf] - fdasdf
    \item[as42df] - fda432sdf
    \item[as42df] - fda432sdf
    \item[as42df] - fda432sdf
    \item[59093] - 5324
    \item[59093] - 5324
    \item[59093] - 5324
  \end{description}
\end{multicols}

\begin{center}
  \begin{tabular}{l@{\quad}l@{\quad}l}
    \textbf{asdf} - fdasdf & \textbf{as42df} - fda432sdf & \textbf{59093} - 5324 \\[.7\normalbaselineskip]
    \textbf{asdf} - fdasdf & \textbf{as42df} - fda432sdf & \textbf{59093} - 5324 \\[.7\normalbaselineskip]
    \textbf{asdf} - fdasdf & \textbf{as42df} - fda432sdf & \textbf{59093} - 5324
  \end{tabular}
\end{center}
\end{document}

您可以摆弄列之间的水平空间(\quad在我的 MWE 中)。另一个选择是使用paragraph-stylep{<len>}列类型,这样可以使用description。侧面的垂直线来自showframe包裹指示文本块边界。

你没有提到要求不一定能保持description环境,也不能跨越页面边界。


也许一个不太有吸引力的替代方案是包裹multicolsadjustwidth环境中(来自changepage)来临时修改左右边距。但不确定这以后会引发多少问题:

在此处输入图片描述

\documentclass{article}
\usepackage{multicol}% http://ctan.org/pkg/multicol
\usepackage{showframe}% http://ctan.org/pkg/showframe
\usepackage{changepage}% http://ctan.org/pkg/changepage
\begin{document}
\begin{multicols}{3}
  \begin{description}
    \item[asdf] - fdasdf
    \item[asdf] - fdasdf
    \item[asdf] - fdasdf
    \item[as42df] - fda432sdf
    \item[as42df] - fda432sdf
    \item[as42df] - fda432sdf
    \item[59093] - 5324
    \item[59093] - 5324
    \item[59093] - 5324
  \end{description}
\end{multicols}

\begin{adjustwidth}{1cm}{1cm}
  \begin{multicols}{3}
    \begin{description}
      \item[asdf] - fdasdf
      \item[asdf] - fdasdf
      \item[asdf] - fdasdf
      \item[as42df] - fda432sdf
      \item[as42df] - fda432sdf
      \item[as42df] - fda432sdf
      \item[59093] - 5324
      \item[59093] - 5324
      \item[59093] - 5324
    \end{description}
  \end{multicols}
\end{adjustwidth}

\end{document}

请注意,边距调整不会考虑环境内容。因此,不成比例的列将导致布局不成比例和“居中调整”。

答案2

如您所见,环境multicols将自然地使其列居中,没有过多的空白。您遇到此问题的原因是您使用了列表。您需要重新定义列表环境。以下是使用普通 vanilla 环境的 MWE trivlist,显示问题消失了。其余的只是填充文本。

在此处输入图片描述

\documentclass{article}
\usepackage{multicol,lipsum}
\begin{document}
\begin{multicols}{3}
\begin{trivlist}
\item [test] this is something
\item [test] this is something
\end{trivlist}
\lipsum
\end{multicols}
\end{document}

您可能会发现合适的软件包是multienum。这是 MWE 将其用于数学。

\documentclass{article}
\usepackage{multicol,lipsum}
\usepackage{multienum}
\renewcommand{\regularlisti}{\setcounter{multienumi}{0}%
  \renewcommand{\labelenumi}%
  {\addtocounter{multienumi}{1}\alph{multienumi})}}
\begin{document}
\begin{multienumerate}
\mitemxxx{\(x^2 + y^2 = 1\)}{\(a + b = c\)}{\(r-x = y+z\)}
\mitemxxx{\(f - y = z\)}{\(a - b = 2d\)}{\(r+x = 2y-3z\)}
\end{multienumerate}
\end{document}

在此处输入图片描述

相关内容