具有固定标签宽度的描述类环境

具有固定标签宽度的描述类环境

哪种方法是正确的,可以制作类似“描述”列表但带有可自定义和固定宽度标签的内容?例如:

Label:         Text text text text text text
               text text text text.
Longer label:  Text text text text text text
               Text text text text.

我认为可以使用两列表格(第一列用于标签,第二列用于描述),但这种解决方案看起来不太好。还有其他方法吗?

答案1

您可以使用enumitem包来定制description环境,例如

\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{description}[leftmargin=8em,style=nextline]
  \item[Something] Text. More text.More text.More text. More text. More text. More text. More text. More text. More text. More text. More text. More text. 
  \item[Ought else] More text.
\end{description}
\end{document}

在此处输入图片描述

您可以使用以下方式为所有description环境设置此项(可能不是理想的情况):

\setlist[description]{leftmargin=8em,style=nextline}

或者你可以定义自己的列表环境例如

\newlist{NewDesc}{description}{2}
\setlist[NewDesc]{leftmargin=8em,style=nextline}

并使用

\begin{NewDesc}
  \item[Something] Text. More text.More text.More text. More text. More text. More text. More text. More text. More text. More text. More text. More text. 
  \item[Ought else] More text.
\end{NewDesc}

答案2

KOMA-Script类和scrextend包(的一部分KOMA-Script)提供labeling列表环境。它将最长标签的长度作为强制参数。

\documentclass{article}

\usepackage{scrextend}
\addtokomafont{labelinglabel}{\sffamily\bfseries}

\begin{document}

\begin{labeling}{Longer label\quad}
\item[Label] Some text.
\item[Longer label] Some text.
\end{labeling}

\end{document}

在此处输入图片描述

答案3

另一种方式,远不如什么优雅enumitem就是使用tabular相关结构。

在此处输入图片描述

\documentclass{article}
\usepackage{array}% http://ctan.org/pkg/array
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\newcolumntype{L}{@{}>{\bfseries}p{8em}<{:}}% Item label
\newcolumntype{I}{X@{}}% Item contents
\noindent\begin{tabularx}{\textwidth}{LI}
  Label & \lipsum[1] \\
  Longer label & \lipsum[2]
\end{tabularx}
\end{document}

在上面的例子中,tabularx用于拥有一个具有灵活列的表格,最大文本块宽度为 ( \textwidth)。此外,array包裹提供一种在列条目之前/之后插入代码的方法。这样就可以将第一列条目格式化#1\bfseries#1:(自动在前面添加大胆的格式并附加冒号:)。最后,使用列说明符删除外部列间距@{}

缺点是:

  • tabular跨越分页符;并且
  • 它的界面不像列表那么简单,需要特殊序列来区分项目标签和内容(&)和“新项目”(\\)。

lipsum仅提供了一些虚拟文本。

答案4

另一个选择,受到 Torbjørn T. 的回答的启发:

\documentclass{article}
\usepackage{enumitem}

\newlist{Description}{description}{3}
\setlist[Description]{style=nextline}
\SetEnumitemKey{margin}{leftmargin={\widthof{#1}+2em}}

\begin{document}

\begin{Description}[margin=longer label]
\item[label] Text. More text.More text.More text. More text. More text.   More text. More text. More text. More text. More text. More text. More text. 
\item[longer label] More text.
\end{Description}

\end{document}

相关内容