description

description is the environment for definition lists — pairs of a term and its explanation. Give each \item an optional argument [...] and its contents become the term (label), set in bold at the left margin by default, with the explanation following. It is ideal for glossaries, option lists, and parameter documentation.

Basic usage

Where itemize and enumerate supply the label for you (a or 1.), description is different: you give the label in words. The label goes in the optional argument [...] of \item. In itemize and enumerate that [...] is an extra for overriding one item’s marker; in description it is effectively the whole point.

latex
\begin{description}
  \item[TeX] クヌースが作った組版システム。
  \item[LaTeX] TeX 上に築かれた文書作成のための言語。
  \item[CTAN] パッケージを配布する世界規模のアーカイブ網。
\end{description}

Typeset, the words TeX, LaTeX, and CTAN stand in bold at the left margin, each followed by its explanation to the right (wrapping to the next line if long). When a label is long, the first line of the explanation begins right after it. As with itemize and enumerate, you need at least one item; zero items raises the error “Something's wrong--perhaps a missing \item”.

Label pitfalls

If you **omit [...], that item gets no label** (you get a hanging-paragraph-style entry with no marker and no indentation cue). Since the label is the whole point of description, avoid this unless it is deliberate. The official LaTeX reference advises always supplying a label, “because there is no sensible default.”

The other trap is square brackets. Because [ and ] delimit the optional argument, when you want a literal bracket *as a character* in a label or the body, hide it in braces. If the body text starts with [, write \item {[}; and to put a closing bracket inside a label, brace it as {]}, e.g. \item[Close bracket, {]}].

latex
\begin{description}
  \item[\texttt{[a-z]}] 文字クラス。ラベル内の角括弧は中括弧で保護する。
  \item {[}本文が角括弧で始まる場合はこう書く。
\end{description}

Also, a font-changing command written in declaration form inside a label overrides the default bold. To set a label in monospace, for instance, wrap the whole thing in braces — \item[{\ttfamily label}] — to be safe.

Customizing with enumitem

To fine-tune the term’s font and placement, use the **enumitem** package. It lets you pass options straight to the description environment: font= sets the label font, leftmargin= the left indent, and style= how the label and body are arranged. Keys shared with other lists, such as itemsep=, work here too.

latex
\usepackage{enumitem}

\begin{description}[font=\bfseries\sffamily, style=nextline, leftmargin=1cm]
  \item[オプション] 長いラベルは次の行から本文が始まる。
  \item[既定値] サンセリフ体の太字でラベルを組む。
\end{description}

The style= key takes these main values. In description the label always begins at the left, but they differ in how the body flows when the label is long.

styleBehavior
standardLike description in the standard classes; the label is set in a box.
unboxedClose to standard but the label is not boxed, so long labels are not cramped and can break.
nextlineIf the label does not fit the margin, the body starts on the next line; the body never sticks into the left margin.
samelineLike nextline, but if the label does not fit, the body continues on the same line.

To apply the same settings to every description, write \setlist[description]{...} once in the preamble. For example \setlist[description]{font=\sffamily\bfseries, style=nextline} applies to all definition lists in the document at once. leftmargin= and labelsep= are worth knowing too: the former makes the body’s start depend on the label, while the latter fixes the gap between label and body.

Changing the bold (\descriptionlabel)

If you would rather change just the default bold without enumitem, redefine \descriptionlabel — the command that sets each label — with \renewcommand. Its argument #1 is the label text. Here is an example that sets every label in small capitals (the \hspace{\labelsep} adds the usual gap between label and body).

latex
\renewcommand{\descriptionlabel}[1]{%
  {\hspace{\labelsep}\textsc{#1}}}

Put this redefinition in the preamble and every subsequent description label is set in small caps. Swap \textsc for \texttt (monospace) or \textit (italic) to get the look you prefer.

A worked glossary

For a practical use, here is a small glossary dressed up with enumitem. style=nextline puts long terms on their own line, font=\bfseries makes the bold explicit, and leftmargin= indents the explanations neatly. Each \item carries its term in [...] followed by the explanation.

document.tex
\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}

Typeset, this yields a readable glossary: the three terms “Compile,” “Preamble,” and “Cross-reference” stand in bold each on its own line, with the explanation indented 1.5cm beneath. If your terms are short, drop style=nextline and let the explanation start on the same line instead.