我在描述中有一个逐项列出,如下所示:
\documentclass[]{article}
\usepackage[vmargin=1in,hmargin=1in]{geometry}
\usepackage{enumitem}
\setlist[description]{style=nextline}
\begin{document}
\begin{description}
\item[Definition 1]
\begin{itemize}
\item One
\item Two
\item Three
\end{itemize}
\item[Definition 2]
\begin{itemize}
\item Four
\item Five
\end{itemize}
\end{description}
\end{document}
但是,尽管style=newline
(适用于描述项中的普通文本),项目化的第一个项与定义位于同一行:
我怎样才能强制项目从新行开始?
理想情况下,我正在寻找一个可以放入options.sty
而不是内联解决方案的解决方案,涉及 mbox 等(导致我出现问题的实际乳胶是通过 pandoc 从 reStructuredText 生成的,然而上面的代码片段重现了这个问题)。
答案1
您可以尝试以下一些变化:
\documentclass[]{article}
\usepackage[vmargin=1in,hmargin=1in]{geometry}
\usepackage{enumitem}
\setlist[itemize]{topsep=0pt,before=\leavevmode\vspace{-1.5em}}
\setlist[description]{style=nextline}
\begin{document}
\begin{description}
\item[Definition 1]
\begin{itemize}
\item One
\item Two
\item Three
\end{itemize}
\item[Definition 2]
\begin{itemize}
\item Four
\item Five
\end{itemize}
\item[Definition 3]
This is a normal description.
\end{description}
\end{document}
这个重要的部分是\setlist[itemize]{...}
。这给出:
答案2
非常简单。itemize
从空的 项目。像这样\item[]
。这与\setlist[description]{style=nextline}
(和enumerate
)配合得很好,如果您想与描述保持一致,您可以添加\setlist[itemize,enumerate]{leftmargin=*}
。
另外,如果想要列表与文本的正常分离则应使用设置\setlist[itemize,enumerate]{itemsep=0pt,parsep=0pt}
这里是完整的代码:
\documentclass[]{article}
\usepackage[vmargin=1in,hmargin=1in]{geometry}
\usepackage{enumitem}
\setlist[description]{style=nextline}
\setlist[itemize,enumerate]{leftmargin=*,itemsep=0pt,parsep=0pt}
\begin{document}
\begin{description}
\item[Definition 1]
\begin{itemize}
\item[]
\item One
\item Two
\item Three
\end{itemize}
\item[Definition 2]
\begin{itemize}
\item[]
\item Four
\item Five
\end{itemize}
\item[Definition 3] This is a specification for \ldots
\item[Definition 4]
\begin{enumerate}
\item[]
\item Six
\item Seven
\end{enumerate}
\end{description}
\end{document}
结果