description 是 定义列表 的环境 - 术语及其解释对。给每个\item一个可选参数[...],其内容成为术语(标签),默认在左边距以粗体设置,解释如下。它非常适合词汇表、选项列表和参数文档。
基本用法
其中itemize 和enumerate 为您提供标签(• 或1.),description 则不同:您以文字形式给出标签。 标签位于\item 的可选参数 [...] 中。在itemize和enumerate中,[...]是覆盖一项标记的额外内容;在description 中,这实际上就是重点。
\begin{description}
\item[TeX] クヌースが作った組版システム。
\item[LaTeX] TeX 上に築かれた文書作成のための言語。
\item[CTAN] パッケージを配布する世界規模のアーカイブ網。
\end{description}排版,TeX、LaTeX 和CTAN 等词以 粗体 位于左边距,每个词的右侧都有其解释(如果很长,则换行到下一行)。当标签很长时,第一行解释就在它之后开始。与itemize 和enumerate 一样,您至少需要一项;零项会引发错误“Something's wrong--perhaps a missing \item”。
标签陷阱
如果您省略[...],则该项目没有标签(您将获得一个悬挂段落样式的条目,没有标记,也没有缩进提示)。由于标签是description 的全部要点,因此除非故意,否则请避免这样做。官方 LaTeX 参考建议始终提供标签,“因为没有合理的默认值。”
另一个陷阱是方括号。 因为[ 和] 分隔了可选参数,所以当您希望文字括号*作为标签或正文中的字符*时,请将其隐藏在大括号中。如果正文以[开头,则写\item {[};要将右括号放在标签内,请将其括起来为{]},例如\item[Close bracket, {]}]。
\begin{description}
\item[\texttt{[a-z]}] 文字クラス。ラベル内の角括弧は中括弧で保護する。
\item {[}本文が角括弧で始まる場合はこう書く。
\end{description}另外,在标签内以声明形式编写的字体更改命令会覆盖默认的粗体。例如,要在等宽字体中设置标签,请将整个内容括在大括号中 — \item[{\ttfamily label}] — 以确保安全。
使用enumitem 进行定制
要微调术语的字体和位置,请使用 enumitem 包。它允许您直接将选项传递到description环境:font=设置标签字体,leftmargin=左缩进,以及style=标签和正文的排列方式。与其他列表共享的密钥(例如itemsep=)也可以在这里使用。
\usepackage{enumitem}
\begin{description}[font=\bfseries\sffamily, style=nextline, leftmargin=1cm]
\item[オプション] 長いラベルは次の行から本文が始まる。
\item[既定値] サンセリフ体の太字でラベルを組む。
\end{description}style= 键采用这些主要值。在 description 中,标签始终从左侧开始,但当标签很长时,它们的主体流动方式有所不同。
| 风格 | 行为 |
|---|---|
standard | 与标准类中的描述类似;标签设置在一个盒子中。 |
unboxed | 接近标准,但标签未装盒,因此长标签不会拥挤且可能破裂。 |
nextline | 如果标签不适合边距,则正文从下一行开始;正文永远不会粘在左边距中。 |
sameline | 与下一行类似,但如果标签不适合,正文将在同一行上继续。 |
要将相同的设置应用于每个description,请在前导码中写入\setlist[description]{...} 一次。例如\setlist[description]{font=\sffamily\bfseries, style=nextline}同时适用于文档中的所有定义列表。 leftmargin=和labelsep=也值得了解:前者使body的启动依赖于标签,而后者修复了标签和主体之间的间隙。
更改粗体 (\descriptionlabel)
如果您只想更改默认粗体而不使用enumitem,请使用\renewcommand 重新定义\descriptionlabel(设置每个标签的命令)。它的参数#1是标签文本。下面是一个将每个标签设置为 小写大写 的示例(\hspace{\labelsep} 添加了标签和正文之间的常见间隙)。
\renewcommand{\descriptionlabel}[1]{%
{\hspace{\labelsep}\textsc{#1}}}将此重新定义放在序言中,并且每个后续description 标签均设置为小型大写字母。将\textsc 替换为\texttt(等宽字体)或\textit(斜体)以获得您喜欢的外观。请注意,虽然 itemize 通过 •→–→*→·(具有嵌套深度)循环其标记,enumerate 循环 1.→(a)→i.→A.,但 description 在每个嵌套级别都保持相同的标签样式 — 只有一个 \descriptionlabel,因此重新定义统一适用于文档中的所有级别。
一个工作术语表
为了实际使用,这里有一个用 enumitem 修饰的小术语表。 style=nextline 将长术语放在自己的行上,font=\bfseries 使粗体明确,leftmargin= 整齐地缩进解释。每个\item 都在[...] 中携带其术语,后跟解释。
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{description}[font=\bfseries, style=nextline, leftmargin=1.5cm]
\item[コンパイル]
ソースファイルを TeX エンジンで処理し、PDF などの出力を得ること。
\item[プリアンブル]
\verb|\documentclass| から \verb|\begin{document}| までの設定部分。
\item[相互参照]
\verb|\label| と \verb|\ref| により、番号やページを自動で挿入するしくみ。
\end{description}
\end{document}排版,这会产生一个可读的术语表:三个术语“编译”、“前言”和“交叉引用”分别以粗体显示在自己的行上,解释在下面缩进 1.5 厘米。如果您的术语很短,请删除style=nextline并让解释从同一行开始。