最后一列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 中)。另一个选择是使用p
aragraph-stylep{<len>}
列类型,这样可以使用description
。侧面的垂直线来自showframe
包裹指示文本块边界。
你没有提到要求不一定能保持description
环境,也不能跨越页面边界。
也许一个不太有吸引力的替代方案是包裹multicols
在adjustwidth
环境中(来自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}