考虑一个描述列表,其中描述正文缩进一定量(\leftmargin
我认为)。描述第一行文本的开始位置有 3 个明显的选项:
- 在距所述术语末尾的某个固定空间处。(这是默认行为。)
- 如果可能的话,与所描述的术语位于
\leftmargin
同一行,否则位于下一行。 - 始终位于
\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}