Latex 多列 + 逐项

Latex 多列 + 逐项

我正在使用 pdflatex 解释器并尝试在多列环境中使用逐项列表获得以下行为:

[space]* item1   *item2
[space]* item3   *item3

我可以使用“enumitem”包获得我想要的一些行为,但是对于长项目来说它会中断。

参见此代码示例:

\documentclass[12pt]{article}
\usepackage{multicol}
\usepackage{enumitem}
\begin{document}
\begin{multicols}{2}
    \begin{itemize}[leftmargin=6em]
        \item Item with lots and lots of text
        \item Another item with lots of text...
    \end{itemize}
\end{multicols}
\end{document}

有很多空白,导致项目换行。我意识到这是因为第二列中的 itemize 也有 6em 的左边距。有人知道如何实现我想要的效果吗?我调查过的所有方法都没有证明完全正确。

我还尝试查看 enumitem 文档:http://www.tex.ac.uk/tex-archive/macros/latex/contrib/enumitem/enumitem.pdf

我也遇到过这样的情况:https://stackoverflow.com/questions/4193978/columns-with-itemize 但我想要更灵活、更紧凑的东西

谢谢!

答案1

也许多枚举包可能是一个选项:

\documentclass[12pt]{article}
\usepackage{amssymb} %for \blacksquare
\usepackage{multienum}

\newcommand{\rsqr}{\raisebox{0.4ex}{\tiny $\blacksquare$}}

\newlength\myindent
\newlength\mylen

\renewcommand{\itemxx}[2]{%
  \setlength\mylen{\remainxx}
  \addtolength\mylen{-\myindent}
  \hskip\myindent
  \parbox[t]{\labelwidth}{\hfill\labelenumi}%
  \hskip\labelsep
  \parbox[t]{0.5\mylen}{\raggedright #1}%
  \hfill\parbox[t]{\labelwidth}{\hfill\labelenumi}%
  \hskip\labelsep
  \parbox[t]{0.5\mylen}{\raggedright #2}\smallskip}


\newenvironment{listable}[1][0cm]
  {\begin{multienumerate}
    \setlength\myindent{#1}
    \renewcommand\labelenumi{\rsqr}
    \setlength\itemsep{-.5\baselineskip}
  }
  {\end{multienumerate}}

\begin{document}

\begin{listable}
    \mitemxx{Lots and lots of text, oh my!}{More and more text}
    \mitemxx{word}{All work and no play makes Jack a dull boy}
\end{listable}

\begin{listable}[4em]
    \mitemxx{Lots and lots of text, oh my!}{More and more text}
    \mitemxx{word}{All work and no play makes Jack a dull boy}
\end{listable}

\end{document}

环境的可选参数listable控制左边距的缩进(默认值:0cm)。

在此处输入图片描述

答案2

这有点草率,但这是我最终所做的 - 以防有人偶然发现这一点并想做类似的事情。

\documentclass[12pt]{article}
\usepackage{amssymb} %for \blacksquare

%Give a raised square, mimic itemize
\newcommand{\rsqr}{{\raisebox{0.4ex}{\tiny $\blacksquare$}}\hspace{0.5em}}

%Create a fake environment to have similar behavior to itemize
\newenvironment{listable}
{\begin{tabular}{ll}}
{\end{tabular}}

%"item" command
\newcommand{\dblitem}[2]{ \rsqr #1 & \rsqr #2\\}


\begin{document}

\begin{listable}
    \dblitem{Lots and lots of text, oh my!}{More and more text}
    \dblitem{word}{All work and no play makes Jack a dull boy}
\end{listable}

\end{document}

就缩进而言,由于它是一个表格环境,所以它应该保持当前的缩进。

答案3

通过结合多色包装和枚举项软件包可以很容易地定义与枚举和逐项列举环境类似的多列环境:

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

输出正是你所希望的:

在此处输入图片描述

相关内容