【问题标题】:Breaking a list into multiple columns in Latex在 Latex 中将列表分成多列
【发布时间】:2010-11-26 18:07:36
【问题描述】:

希望这很简单:我有一个相对较长的列表,其中每个列表项包含的文本很少。例如:

* 一种 * b * C * d * e * F

我希望这样格式化:

* 广告 * 是 * c * f

我宁愿不创建包含 2 个列表的表,因为我希望能够轻松更改列表而不必担心更新所有列。

在乳胶中最好的方法是什么?

【问题讨论】:

标签: latex


【解决方案1】:

避免嵌套两个不同环境的另一种选择(如multicolsenumerate)。

由于有多种选项 (pdf guide here),在我看来,从 package with the same name 称为 tasks 的环境非常容易定制。

这段代码:

\documentclass{article}
\usepackage{tasks}

%\settasks{style=itemize}

\begin{document}
Text text text text text text text text text text text text 
text text text text text text text text text text text text 
text text text text text text text text text text text text.

\begin{tasks}(2)
\task[*] a
\task[*] b
\task[*] c
\task[*] d
\task[*] e
\task[*] f
\end{tasks}    

Text text text text text text text text text text text text 
text text text text text text text text text text text text 
text text text text text text text text text text text text.
\end{document}

产生这个输出

tasks 包于 2020 年 8 月更新,它最初是专门为水平列列表创建的(参见上面的屏幕截图),其背后的动机在指南中得以恢复。如果项目/任务的这种安排是可以接受的,那么这可能是一个不错的选择,因为它保持 - 恕我直言 - 代码整洁和灵活。

【讨论】:

    【解决方案2】:

    通过组合 multicol 包和 enumitem 包,可以轻松定义与 enumerate 和 itemize 环境类似的多列环境:

    \documentclass{article}
    \usepackage{enumitem}
    \usepackage{multicol}
    
    \newlist{multienum}{enumerate}{1}
    \setlist[multienum]{
        label=\alph*),
        before=\begin{multicols}{2},
        after=\end{multicols}
    }
    
    \newlist{multiitem}{itemize}{1}
    \setlist[multiitem]{
        label=\textbullet,
        before=\begin{multicols}{2},
        after=\end{multicols}
    }
    
    \begin{document}
    
      \textsf{Two column enumerate}
      \begin{multienum}
        \item item 1
        \item item 2
        \item item 3
        \item item 4
        \item item 5
        \item item 6
      \end{multienum}
    
      \textsf{Two column itemize}
      \begin{multiitem}
        \item item 1
        \item item 2
        \item item 3
        \item item 4
        \item item 5
        \item item 6
      \end{multiitem}
    
    \end{document}
    

    输出是您所希望的:

    【讨论】:

      【解决方案3】:

      使用 multicol 包并将您的列表嵌入到 multicols 环境中可以满足您的需求:

      \documentclass{article}
      \usepackage{multicol}
      
      \begin{document}
      \begin{multicols}{2}
      \begin{enumerate}
          \item a
          \item b
          \item c
          \item d
          \item e
          \item f
      \end{enumerate}
      \end{multicols}
      \end{document}
      

      【讨论】:

      • 如果您不喜欢枚举自动添加的数字,请尝试 itemize 而不是 enumerate。
      • enumitem 允许定义自定义枚举环境 - 例如我有一个 exenum 环境,因此每个示例列表都以相同的方式枚举。
      • 如果我有一个奇数列表说 5 怎么办。这段代码在一列中给出 3 个项目,在列中给出 2 个项目(一个在第一行,另一个在第三行)。我该如何解决这个问题?如何调整两列之间的空间?
      • multicol 在自身上方添加的巨大空间是怎么回事?
      • 如果有奇数个条目(例如全部对齐到顶部而不是默认间距),是否有一种简单的对齐方式?
      【解决方案4】:

      我不知道它是否会起作用,但也许你可以使用 multicol 包将页面分成几列。

      \usepackage{multicol}
      
      \begin{document}
      \begin{multicols}{2}[Your list here]
      \end{multicols}
      

      【讨论】:

        【解决方案5】:

        我已经向我推荐了“多列枚举列表”multenum,但我自己从未真正使用过它。

        编辑: 语法看起来不像您可以轻松地将列表复制+粘贴到 LaTeX 代码中。因此,它可能不是您的用例的最佳解决方案!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-17
          相关资源
          最近更新 更多