如何在乳胶中格式化多列列表中的内容

如何在乳胶中格式化多列列表中的内容

我曾尝试在谷歌上寻找答案,但没有成功,因此在这里。

我的乳胶文件中有一个多列列表。

\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}

代码输出

相关内容