![设置在枚举环境中中断项目的位置](https://linux22.com/image/352197/%E8%AE%BE%E7%BD%AE%E5%9C%A8%E6%9E%9A%E4%B8%BE%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%B8%AD%E6%96%AD%E9%A1%B9%E7%9B%AE%E7%9A%84%E4%BD%8D%E7%BD%AE.png)
我正在创建一个两列文档,其中包含一个长枚举环境,其中每个编号项后面跟着一个带有字母(a) - (e)的嵌套枚举环境,如下所示:
\begin{enumerate}
\setlength{\itemsep}{2em}
\item prompt
\begin{enumerate}
\item choice a
\item choice b
\item choice c
\item choice d
\item choice e
\end{enumerate}
\item prompt
\begin{enumerate}
\item choice a
\item choice b
\item choice c
\item choice d
\item choice e
\end{enumerate}
\end{enumerate}
我想告诉 latex 仅在每个提示之前放置分栏符和分页符,而不是在其他地方中断列表。我该怎么做?
答案1
定义一个promptlist
环境,将其内容设置在minipage
:
\documentclass{article}
\usepackage{enumitem,multicol}
\newenvironment{promptlist}
{\par\nobreak\noindent
\begin{minipage}{\linewidth}
\begin{enumerate}}
{ \end{enumerate}
\end{minipage}}
\raggedcolumns % ...might be a good idea
\begin{document}
\begin{multicols}{2}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum porttitor
cursus viverra. Sed vitae libero condimentum, dapibus enim quis, aliquam mi.
Ut cursus, mauris eu ultricies bibendum, diam enim euismod magna, ut
sollicitudin ipsum mi at dolor. Etiam ac cursus quam. In hac habitasse platea
dictumst. Nam pretium metus a libero pretium, vitae lacinia nunc tincidunt.
Duis vitae posuere dolor. Mauris et nisl nisl. Sed rutrum eros sed erat
hendrerit, nec iaculis velit ornare.
Sed posuere molestie turpis in eleifend. Aenean vestibulum at turpis eu
pulvinar. Nam ligula quam, aliquet vitae lorem sed, venenatis tincidunt
ligula. Integer quis sapien quis nulla interdum ultrices. Quisque et arcu
placerat, elementum dolor at, accumsan justo. In hac habitasse platea
dictumst. Phasellus volutpat elit lectus, vel sollicitudin nulla volutpat ut.
Sed vel dui ornare, blandit leo eget, tempor massa. Mauris pellentesque
lacinia arcu, ac rutrum tellus blandit vel. Pellentesque fringilla ut magna
eu lobortis. Pellentesque dictum ipsum et orci mollis luctus.
Phasellus tristique quam ligula, non sagittis ipsum ullamcorper et.
Maecenas a accumsan lectus, eu vestibulum arcu. Fusce vel felis ligula.
Nullam non tempus metus. Nam sagittis feugiat leo, eu accumsan neque ornare
eget. Mauris sem neque, tempor nec consequat non, imperdiet id est. Proin
id pretium neque. Aliquam mollis, nisl sit amet consectetur sollicitudin,
nisl ipsum convallis purus, molestie tincidunt arcu erat dictum erat.
Maecenas vehicula nunc non sapien ornare cursus.
\begin{enumerate}[itemsep = 2em]
\item prompt A
\begin{promptlist}
\item choice A.a
\item choice A.b
\item choice A.c
\item choice A.d
\item choice A.e
\end{promptlist}
\item prompt B
\begin{promptlist}
\item choice B.a
\item choice B.b
\item choice B.c
\item choice B.d
\item choice B.e
\end{promptlist}
\item prompt C
\begin{promptlist}
\item choice C.a
\item choice C.b
\item choice C.c
\item choice C.d
\item choice C.e
\end{promptlist}
\item prompt D
\begin{promptlist}
\item choice D.a
\item choice D.b
\item choice D.c
\item choice D.d
\item choice D.e
\end{promptlist}
\end{enumerate}
Quisque pharetra aliquam ante, non eleifend nisi pharetra a. Pellentesque
quis imperdiet nunc, in blandit lectus. Quisque sed egestas metus. Aenean
diam magna, scelerisque sed urna tincidunt, semper ultrices leo. Suspendisse
porta ut neque id maximus. In hac habitasse platea dictumst. Pellentesque
tristique risus facilisis, condimentum risus ut, mattis ante.
\end{multicols}
\end{document}
由于您可能将大量文本推送到后续列,因此发布\raggedbottom
听起来是个好主意。
或者,将提示作为环境参数的一部分。这将允许您在 中promptlist
设置整个\item
和子,确保它们始终保持在一起:\item
minipage
\usepackage{enumitem,multicol}
\newenvironment{promptlist}[1]
{\begin{minipage}{\linewidth}
\item \rule{0pt}{2em}#1
\begin{enumerate}}
{ \strut\end{enumerate}
\end{minipage}}
\newlist{prompts}{enumerate}{1}
\setlist[prompts]{itemsep=2em,label=\arabic*,topsep=0pt}
% ...
\begin{prompts}
\begin{promptlist}{prompt A}
\item choice A.a
\item choice A.b
\item choice A.c
\item choice A.d
\item choice A.e
\end{promptlist}
\begin{promptlist}{prompt B}
\item choice B.a
% ...