如何方便地控制描述文字的开始位置?

如何方便地控制描述文字的开始位置?

考虑一个描述列表,其中描述正文缩进一定量(\leftmargin我认为)。描述第一行文本的开始位置有 3 个明显的选项:

  1. 在距所述术语末尾的某个固定空间处。(这是默认行为。)
  2. 如果可能的话,与所描述的术语位于\leftmargin同一行,否则位于下一行。
  3. 始终位于\leftmargin定义术语下方的线上。

以下是选项 1 和实现选项 3 的两种方法:

\documentclass{article}
\usepackage{lipsum}
\usepackage{calc}
\newcommand{\filledterm}[1]{%
  #1%
  \setlength{\mylength}{\textwidth-\widthof{#1}}%
  \hspace{\mylength}
}
\begin{document}
Plain vanilla:
\begin{description}
\item[One] \lipsum[4]
\item[And another one]  \lipsum[4]
\end{description}
With \verb|\mbox{}\\|:
\begin{description}
\item[One]\mbox{}\\  \lipsum[4]
\item[And another one]\mbox{}\\  \lipsum[4]
\end{description}
With filling:
\newlength{\mylength}
\begin{description}
\item[\filledterm{One}] \lipsum[4]
\item[\filledterm{And another one}] \lipsum[4]
\end{description}
\end{document}

选项 2 有点棘手,我想我需要在其中加入某种条件。

无论如何,我的问题是 - 我怎样才能避免在每个列表中分别使用这些丑陋的黑客?我希望能够让一些描述列表以一种方式运行,而其他描述列表则以不同的方式运行。我是否需要以某种方式修补 \item 命令?...但如果我这样做,它将影响所有列表。我想我可以\itemwrapper在相关列表中使用命令而不是\item,但我实际上宁愿避免这样做。

有什么方便使用(并且希望优雅)的方法可以让我选择我喜欢的描述列表的位置类型?

答案1

下面是 enumitem 定义的基本描述样式的演示,可以进一步定制(字体、左边距等):

\documentclass{article}%
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[svgnames]{xcolor}
\usepackage{lipsum}

\usepackage{enumitem}
\setlist[description]{leftmargin = 12mm}

\begin{document}

‘Force next line’: 
\begin{description}[labelwidth=\textwidth]
\item[One] \lipsum[4]
\item[And another one] \lipsum[4]
\end{description}

With \verb|style=sameline|:
\newlength{\mylength}
\begin{description}[style = sameline]
\item[One] \lipsum[4]
\item[And another one] \lipsum[4]
\end{description}

\newpage

With \verb|style=nextline, font=\itshape|:
\begin{description}[style =nextline, font=\normalfont\itshape]
\item[One] \lipsum[4]
\item[And another one] \lipsum[4]
\end{description}
With \verb|style=multiline, leftmargin=25mm|:
\begin{description}[style=multiline, leftmargin =25mm, font=\sffamily\color{Tomato}]
\item[One] \lipsum[4]
\item[And another one] \lipsum[4]
\end{description}

\end{document} 

在此处输入图片描述 在此处输入图片描述

相关内容