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