描述环境中每个元素后都有换行符

描述环境中每个元素后都有换行符

我的文档中有相当多的描述。目前,它们都以默认方式显示。我使用它来用文本或关键字列表定义术语。因此,我经常使用类似这样的方法:

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

输出

相关内容