我曾尝试在谷歌上寻找答案,但没有成功,因此在这里。
我的乳胶文件中有一个多列列表。
\begin{multicols}{3}
\begin{itemize}
\item blah1
\item blah2 blah3 blah4
\item blah5 blah6
\end{itemize}
\end{multicols}
所以现在它会自动将我的多列格式化为 -
blah1 和 blah2 在第 1 列,blah3 和 blah4 在第 2 列,其余的在第 3 列。
但是我希望每个项目都在它自己的列中,因此 blah1 进入第 1 列,“blah2 blah3 blah4”进入第 2 列,“blah5 blah6”进入第 3 列。
我如何实现这个目标?
答案1
这是一个通过附加到每个项目来实现的解决方案\columnbreak
。请注意,如果您的项目多于列数,则此方法将不起作用,因为后续的分栏符将产生分页符,这不是您想要的。\columnbreak
我没有手动添加到每个项目,而是将其包装在命令中,然后用于在列表中本地enumitem
重新定义\item
命令。由于三列文本在完全对齐时会产生非常难看的文本,因此我添加了\RaggedRight
(来自ragged2e
包),这将更好地格式化窄列。
\documentclass{article}
\usepackage{multicol}
\usepackage{ragged2e}
\usepackage{enumitem}
\usepackage{etoolbox}
% define a new command identical to \item
\let\colitem\item
% append \columnbreak to the new item command
\apptocmd{\colitem}{\columnbreak}{}{}
\begin{document}
% If you don't use the multicols* environment and have more items than columns
% you will get an error.
\begin{multicols*}{3}
% Now using enumitem's "before" key, we make the list RaggedRight and redefine
% \item locally to mean \colitem
\begin{itemize}[before={\RaggedRight\let\item\colitem}]
\item This is the first item.
\item This is a longer sentence to see how it wraps.
\item This is the third item.
%\item With this scheme you can't have more items than columns (uncomment to see)
\end{itemize}
\end{multicols*}
\end{document}