description est l'environnement pour les listes de définitions — paires d'un terme et de son explication. Donnez à chaque \item un argument facultatif [...] et son contenu devient le terme (étiquette), mis en gras dans la marge de gauche par défaut, avec l'explication suivante. Il est idéal pour les glossaires, les listes d'options et la documentation des paramètres.
Utilisation de base
Où itemize et enumerate vous fournissent l'étiquette (un • ou 1.), description est différent : vous donnez l'étiquette en lettres. L'étiquette est placée dans l'argument facultatif [...] de \item. Dans itemize et enumerate, [...] est un supplément pour remplacer le marqueur d'un élément ; dans description, c'est effectivement tout l'intérêt.
\begin{description}
\item[TeX] クヌースが作った組版システム。
\item[LaTeX] TeX 上に築かれた文書作成のための言語。
\item[CTAN] パッケージを配布する世界規模のアーカイブ網。
\end{description}Typeset, les mots TeX, LaTeX et CTAN sont en gras dans la marge de gauche, chacun suivi de son explication à droite (retour à la ligne suivante si elle est longue). Lorsqu'une étiquette est longue, la première ligne de l'explication commence juste après. Comme pour itemize et enumerate, vous avez besoin d'au moins un élément ; zéro élément génère l’erreur « Something's wrong--perhaps a missing \item ».
Les pièges des étiquettes
Si vous omettez [...], cet élément n'obtient aucune étiquette (vous obtenez une entrée de style paragraphe suspendu sans marqueur ni repère d'indentation). Puisque l'étiquette est tout l'intérêt de description, évitez cela à moins que ce ne soit délibéré. La référence officielle LaTeX conseille de toujours fournir une étiquette, « car il n'y a pas de valeur par défaut raisonnable ».
L'autre piège est celui des crochets. Parce que [ et ] délimitent l'argument facultatif, lorsque vous voulez un crochet littéral *comme caractère* dans une étiquette ou dans le corps, cachez-le entre accolades. Si le corps du texte commence par [, écrivez \item {[} ; et pour mettre un crochet fermant à l'intérieur d'une étiquette, placez-le comme {]}, par ex. \item[Close bracket, {]}].
\begin{description}
\item[\texttt{[a-z]}] 文字クラス。ラベル内の角括弧は中括弧で保護する。
\item {[}本文が角括弧で始まる場合はこう書く。
\end{description}De plus, une commande de changement de police écrite sous forme de déclaration à l'intérieur d'une étiquette remplace le gras par défaut. Pour définir une étiquette en monospace, par exemple, enveloppez le tout entre accolades - \item[{\ttfamily label}] - pour plus de sécurité.
Personnalisation avec enumitem
Pour affiner la police et l'emplacement du terme, utilisez le package enumitem. Il vous permet de transmettre des options directement à l'environnement description : font= définit la police de l'étiquette, leftmargin= le retrait gauche et style= la façon dont l'étiquette et le corps sont disposés. Les clés partagées avec d'autres listes, telles que itemsep=, fonctionnent ici également.
\usepackage{enumitem}
\begin{description}[font=\bfseries\sffamily, style=nextline, leftmargin=1cm]
\item[オプション] 長いラベルは次の行から本文が始まる。
\item[既定値] サンセリフ体の太字でラベルを組む。
\end{description}La clé style= prend ces valeurs principales. Dans description, l'étiquette commence toujours à gauche, mais elles diffèrent par la façon dont le corps s'écoule lorsque l'étiquette est longue.
| style | Comportement |
|---|---|
standard | Comme description dans les classes standards ; l'étiquette est placée dans une boîte. |
unboxed | Proche du standard mais l'étiquette n'est pas encadrée, donc les étiquettes longues ne sont pas à l'étroit et peuvent se casser. |
nextline | Si l'étiquette ne rentre pas dans la marge, le corps commence à la ligne suivante ; le corps ne colle jamais à la marge gauche. |
sameline | Comme nextline, mais si l'étiquette ne rentre pas, le corps continue sur la même ligne. |
Pour appliquer les mêmes paramètres à chaque description, écrivez \setlist[description]{...} une fois dans le préambule. Par exemple, \setlist[description]{font=\sffamily\bfseries, style=nextline} s'applique simultanément à toutes les listes de définitions du document. leftmargin= et labelsep= valent également la peine d'être connus : le premier fait dépendre le début du corps de l'étiquette, tandis que le second corrige l'écart entre l'étiquette et le corps.
Modification du gras (\descriptionlabel)
Si vous préférez modifier uniquement le gras par défaut sans enumitem, redéfinissez \descriptionlabel — la commande qui définit chaque étiquette — avec \renewcommand. Son argument #1 est le texte de l'étiquette. Voici un exemple qui définit chaque étiquette en petites majuscules (le \hspace{\labelsep} ajoute l'espace habituel entre l'étiquette et le corps).
\renewcommand{\descriptionlabel}[1]{%
{\hspace{\labelsep}\textsc{#1}}}Mettez cette redéfinition dans le préambule et chaque étiquette description suivante est définie en petites majuscules. Remplacez \textsc par \texttt (monospace) ou \textit (italique) pour obtenir le look que vous préférez. Notez que tandis que itemize fait défiler son marqueur à travers •→–→*→· avec la profondeur d'imbrication et enumerate fait défiler 1.→(a)→i.→A., description conserve le même style d'étiquette à chaque niveau d'imbrication — il y a un seul \descriptionlabel, donc une redéfinition s'applique uniformément à tous les niveaux du document.
Un glossaire travaillé
Pour une utilisation pratique, voici un petit glossaire agrémenté de enumitem. style=nextline place les termes longs sur leur propre ligne, font=\bfseries rend le gras explicite et leftmargin= indente proprement les explications. Chaque \item porte son terme dans [...] suivi de l'explication.
\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, cela donne un glossaire lisible : les trois termes « Compiler », « Préambule » et « Référence croisée » sont en gras chacun sur sa propre ligne, avec l'explication en retrait de 1,5 cm en dessous. Si vos termes sont courts, supprimez style=nextline et laissez l'explication commencer sur la même ligne.