我的文档中有相当多的描述。目前,它们都以默认方式显示。我使用它来用文本或关键字列表定义术语。因此,我经常使用类似这样的方法:
\begin{description}
\item[Term One] Definition for term one.
\item[Term Two] \hfill \begin{itemize}
\item First keyword
\item Second keyword
\end{itemize}
\end{description}
现在的定义第一学期就像第一学期和第一个关键字从新行开始。
我希望的输出是第一学期从新行开始,并且第一个关键字描述第二学期显示在新行上。总的来说,它应该看起来像:
我的问题是,如果我使用
\usepackage{enumitem}
\setlist[description]{style=nextline}
我在第一个关键字前得到了一个换行符。如果有人能指出一个解决方案,让我不必更改上面的代码(删除就\hfill
可以了),那就太好了。
答案1
要在一个(或其他列表)环境中开始一个新列表description
,所需要做的就是在子公司之前的描述行上放置一些不可见的内容itemize
。 \leavevmode
在很多列表环境中,它都用于此目的。
要在新行上开始描述文本,必须在第一行放置一些不可见的内容。然后可以在标签后通过段落分隔符或双反斜杠来断开该行;两种情况下的垂直间距会有所不同,因此应统一输入此类列表条目。
\documentclass{article}
\begin{document}
Some introductory text.\\
Force it to be more than one line long.
\begin{description}
\item[Term1]~
Definition for term one.
\item[Term2] \leavevmode
\begin{itemize}
\item First keyword
\item Second keyword
\end{itemize}
Some text at the end of the definition.
\item[Term3]~\\ Definition for term three.
\end{description}
Some text following the list of terms.
Another paragraph.
\end{document}
答案2
我希望我正确理解了您的问题,如果是这样,下面将为您提供一个环境initemize
,它简单地否定使用时给出的额外一行空间style=nextline
:
\documentclass{article}
\usepackage{enumitem}
\setlist[description]{style=nextline}
\newenvironment{initemize}{%
\vspace{-\baselineskip}
\begin{itemize}%
}{%
\end{itemize}%
}
\begin{document}
\begin{description}
\item[Term1] Definition for term one.
\item[Term2] \hfill
\begin{initemize}
\item First keyword
\item Second keyword
\end{initemize}
\item[Term3] With some text and then a normal itemize.
\begin{itemize}
\item key1
\item key2
\end{itemize}
\end{description}
\end{document}