Citations (quote / quotation / csquotes)

Aucune touche du clavier ne donne un guillemet courbe. Si un document LaTeX affiche malgré tout de vrais guillemets, c’est que deux accents graves et deux apostrophes sont recomposés en guillemets véritables par le mécanisme de ligatures de la fonte — la machinerie même qui transforme f et i en fi. Les guillemets français « … », eux, passent par un autre chemin. Cette page suit ce fil : comment obtenir les bons guillemets, comment \enquote de csquotes en change la forme selon la langue et gère l’imbrication, et comment les environnements quote, quotation et verse détachent une citation en bloc.

D’où viennent les vrais guillemets : la ligature des accents graves

La réponse est dans la fonte. Pour composer une fonte, TeX consulte un fichier .tfm (métriques), lequel contient un programme de ligatures : une table indiquant quel caractère suivi de quel autre doit être remplacé par une troisième glyphe. Les guillemets sont inscrits directement dans cette table. En décompilant ecrm1000.tfm, le romain Computer Modern en codage T1, l’entrée de l’accent grave se lit (LIG O 140 O 20) — « accent grave suivi d’accent grave devient la glyphe en position octale 20 ». L’octal 20, c’est \textquotedblleft, le guillemet double ouvrant. L’entrée de l’apostrophe a la même forme : (LIG O 47 O 21) renvoie à \textquotedblright, le fermant.

Voici le plus plaisant. Dans le même fichier, l’entrée de f se lit (LIG C i O 14) — « f suivi de i devient la glyphe fi ». Autrement dit, les guillemets et la ligature fi que la typographie au plomb a gravée pendant des siècles sont littéralement la même instruction pour TeX. Knuth a repris tel quel un mécanisme conçu pour les paires de lettres et l’a appliqué à la ponctuation. Deux traits d’union devenant un tiret demi-cadratin figurent quelques lignes plus bas dans cette même table, sous la forme (LIG O 55 O 173). La première surprise que réserve TeX — ce que l’on tape n’est pas tout à fait ce que l’on obtient — sort de cette petite table.

latex
% Two backticks open a quotation, two apostrophes close it.
``A quotation set the TeX way.''

% One of each gives the single marks.
`A quotation inside a quotation.'

% Adjacent closing marks collide; a thin space keeps them apart.
``He said `yes.'\thinspace''
SaisieGlyphe obtenueRemarque
``guillemet double ouvrant, composé par ligature
''guillemet double fermant, deux apostrophes
`guillemet simple ouvrant ; sans ligature
'guillemet simple fermant ; c’est aussi l’apostrophe
"” ou "à éviter ; voir la section suivante

Pourquoi taper " donne le mauvais guillemet (OT1 contre T1)

Taper l’apostrophe double droite " de l’ASCII échoue de deux façons différentes selon le codage de fonte en vigueur. Dans le codage OT1, celui par défaut, ot1enc.def place \textquotedblright en position 34 — précisément là où l’ASCII loge ". Ainsi "quoted" s’imprime ”quoted” : deux guillemets fermants, y compris à l’ouverture. Avec \usepackage[T1]{fontenc}, t1enc.def met à cette même position 34 le caractère \textquotedbl, une vraie apostrophe double droite de machine à écrire ; la même saisie reste alors "quoted" et ne s’arrondit jamais. Une ligne de préambule change l’allure de l’erreur, pas le fait que c’en soit une. L’apostrophe suit la même logique : lorsqu’il faut vraiment un ' droit — un fragment de code, un identifiant qui ne doit pas s’arrondir —, c’est \textquotesingle qu’il faut employer, un caractère TS1 disponible sans paquet supplémentaire depuis le noyau de 2020, et qui reste droit y compris dans \texttt.

latex
% Default OT1: slot 34 holds the CLOSING double mark.
%   "quoted"  ->  ”quoted”   (two closing marks)
\documentclass{article}

% With T1: slot 34 holds an upright typewriter quote.
%   "quoted"  ->  "quoted"   (never curls)
\usepackage[T1]{fontenc}

% Either way, this is what you want instead:
``quoted''

Trois habitudes suffisent à ne plus jamais être pris. D’abord, ne pas taper " dans la source ; un seul rechercher-remplacer règle la question. Ensuite, charger \usepackage[T1]{fontenc} — non pour corriger la position 34, mais pour la césure et les caractères accentués. Enfin, sous LuaLaTeX ou XeLaTeX, saisir directement les caractères UTF-8 « ” » est parfaitement valable : la fonte est adressée par Unicode, aucune ligature n’intervient, et la source ressemble à la sortie. Le revers : la forme du guillemet se retrouve figée dans le manuscrit, ce qui rend \enquote — section suivante — préférable pour un document multilingue.

\enquote ou les guillemets saisis à la main

La différence tient en une phrase : saisir à la main consigne une glyphe, tandis que \enquote consigne le fait qu’il s’agit d’une citation. Une fois le package csquotes chargé, \enquote{…} laisse au style de guillemets en vigueur le soin de décider quelle glyphe se pose sur la page. L’imbrication vient en prime : \enquote compte sa profondeur (dans un compteur interne, \csq@qlevel) et prend les guillemets extérieurs au premier niveau, les intérieurs en dessous. Que cela donne du double à l’extérieur et du simple à l’intérieur, comme dans l’usage américain, ou l’inverse comme dans l’usage britannique, relève désormais de la définition du style.

latex
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[autostyle=true]{csquotes}
% ...
\enquote{He said \enquote{yes} to me.}
%  ->  “He said ‘yes’ to me.”

\begin{otherlanguage}{ngerman}
\enquote{Er sagte \enquote{ja} zu mir.}
\end{otherlanguage}
%  ->  „Er sagte ‚ja‘ zu mir.“

\begin{otherlanguage}{french}
\enquote{Il a dit \enquote{oui}.}
\end{otherlanguage}
%  ->  « Il a dit “oui”. »

Les trois lignes ci-dessus emploient le même \enquote, écrit de la même façon, et produisent trois guillemets différents. C’est autostyle=true qui opère : cette option arrime le style de guillemets à la langue courante de babel ou polyglossia. Il suffit de changer de langue pour que les guillemets suivent, sans qu’aucun branchement par langue n’apparaisse dans le manuscrit. Pour obtenir explicitement les guillemets intérieurs — une citation qui commence déjà imbriquée —, la forme étoilée \enquote*{…} s’en charge. Pour figer un style dans le préambule, \setquotestyle{french} le nomme directement.

Consigner du sens apporte un second bénéfice : les erreurs deviennent détectables. Un guillemet saisi à la main et jamais refermé ne provoque aucune protestation ; on le découvre à l’impression. Comme \enquote suit la profondeur d’imbrication, une citation déséquilibrée arrête la compilation avec Package csquotes Error: Unbalanced groups or invalid nesting ou Still 1 quote open. Relire trois cents pages de guillemets à l’œil se réduit à une ligne de sortie du compilateur. csquotes reprend aussi le problème des collisions : chaque définition de style porte un crénage, noté par exemple [0.05em], inséré automatiquement lorsqu’un guillemet extérieur et un intérieur s’ouvrent ou se ferment ensemble — le geste que l’on faisait naguère avec \thinspace.

Les guillemets selon la langue : « », „ “, “ ”

Les guillemets changent avec la langue, et pas seulement de forme : lequel ouvre et lequel ferme change aussi. Le français pose « … » avec une espace à l’intérieur, l’allemand descend le premier signe en „ … “, l’anglais monte les deux en “ ”, le japonais emploie 「 」. csquotes traite cela comme des styles de guillemets ; csquotes.def en fournit pour 29 langues. Le style french est le seul à envelopper ses guillemets dans \mkfrenchopenquote et \mkfrenchclosequote, précisément parce que l’espace intérieure fait partie de la règle et doit être insécable.

Nom du styleExtérieurIntérieurRemarque
american“ ”‘ ’la variante par défaut d’english
british‘ ’“ ”extérieur et intérieur inversés par rapport à l’américain
german„ “‚ ’le fermant est la glyphe ouvrante anglaise
french« »“ ”une espace insécable se glisse à l’intérieur
spanish« »“ ”répète » en tête de chaque paragraphe suivant
japanese「 」『 』crénage nul : les signes pleine chasse ne se heurtent pas

Le tableau cache quelques renversements instructifs. La variante allemande à guillemets ouvre par \guillemotright et ferme par \guillemotleft : »…« pointe vers l’intérieur, exactement à l’inverse du français « … ». Le français, lui, exige une espace insécable à l’intérieur des guillemets, et csquotes lui réserve un crochet dédié, \mkfrenchopenquote. Quant au style espagnol, il définit une marque médiane : la convention romane qui consiste à répéter » en tête de chaque paragraphe suivant dans une citation qui en compte plusieurs. \DeclareQuoteStyle possède un argument réservé à cet usage précis.

Deux mises en garde pratiques. D’abord, csquotes.def couvre 29 langues et ne livre ni style coréen ni style chinois ; il faut alors le déclarer soi-même avec \DeclareQuoteStyle ou emprunter un style existant dont les glyphes conviennent. Ensuite, attention aux raccourcis de babel. Les modules allemands rendent " actif et le font produire \glqq devant un accent grave, \grqq devant une apostrophe : un procédé classique, mais qui arrime le manuscrit à l’allemand. Suffisant pour un document monolingue ; pour un document multilingue, s’appuyer sur \enquote évite bien des reprises.

La différence entre quote et quotation

Tout tient à un point : comment rendre visible un changement de paragraphe. Dès qu’une citation dépasse trois ou quatre lignes (une quarantaine de mots), l’usage veut qu’on cesse de l’enchâsser entre guillemets dans la phrase et qu’on la détache avec des marges des deux côtés. À partir de là, deux voies. Les définitions de classes.dtx le disent : les deux environnements reposent sur list, seuls les paramètres changent. quote fixe \rightmargin\leftmargin et rien d’autre, donc aucun alinéa. quotation ajoute \listparindent 1.5em, \itemindent \listparindent et \parsep 0pt plus 1pt : il met chaque paragraphe en alinéa de 1,5 em et réduit l’espace inter-paragraphes à presque rien, exactement comme le texte courant.

latex
\begin{quote}
One paragraph, indented from both margins,
with no first-line indent at all.
\end{quote}

\begin{quotation}
First paragraph of a longer quotation. Its first line is indented.

Second paragraph. The indent, not blank space, marks the break,
which is why quotation is the right choice past one paragraph.
\end{quotation}
EnvironnementAlinéaEspace entre paragraphesConvient à
quoteaucunespace de paragraphe habituelcitations d’un paragraphe, épigraphes, lignes courtes parallèles
quotation1,5 emquasi nul (0pt plus 1pt)citations longues sur plusieurs paragraphes, extraits dialogués
verse−1,5 em (négatif)espace de paragraphe habituelpoésie, paroles, textes où les retours à la ligne font sens

Une erreur assez fréquente chez les débutants mérite un avertissement : une citation détachée ne prend pas de guillemets dans la typographie anglo-saxonne. Le retrait est à lui seul le signal qu’il s’agit d’une citation ; y ajouter des “ ” revient à le dire deux fois. Que quote et quotation n’insèrent aucun signe reflète exactement cette convention. D’autres traditions diffèrent — la composition japonaise conserve parfois 「 」 même en citation détachée, et les usages éditoriaux ne s’accordent pas. Quelle que soit la ligne retenue, la cohérence sur l’ensemble du document compte davantage que le choix lui-même.

L’environnement verse pour la poésie et les paroles

Pour un texte où les retours à la ligne font sens, c’est verse. La fin de chaque vers se décide avec \\, une ligne vide sépare les strophes. La définition de classes.dtx porte \itemindent à moins 1,5 em tout en ajoutant 1,5 em à \leftmargin : ce couple produit le retrait négatif. Lorsqu’un vers trop long pour la justification se replie, seul le report est rentré de 1,5 em, si bien que l’œil distingue immédiatement un vrai vers nouveau de la suite du précédent. Deux paramètres, et la structure versifiée survit à la largeur de la page.

latex
\begin{verse}
Roses are red, \\
Violets are blue, \\
This stanza ends here.

A new stanza starts after the blank line, and a line long enough to
run over gets a hanging indent so it still reads as a single verse.
\end{verse}

\blockquote : la longueur décide entre en ligne et en bloc

csquotes supprime purement et simplement le choix entre quote et quotation. \blockquote{…} mesure réellement son contenu et le compose en bloc détaché au-delà d’un seuil, en citation en ligne avec guillemets en deçà. Par défaut, thresholdtype=lines avec un seuil de 3 lignes, et quote comme environnement d’affichage. \SetBlockThreshold{5} et \SetBlockEnvironment{quotation} les modifient ; pour compter en mots, on passe thresholdtype=words avec threshold=50. De plus, parthreshold est actif par défaut : tout changement de paragraphe ou saut de ligne explicite dans la citation impose le bloc, quelle que soit la longueur — précisément l’intuition qu’une citation de plusieurs paragraphes doit toujours être détachée.

latex
\usepackage[autostyle=true]{csquotes}
\SetBlockThreshold{3}        % default: 3 lines
\SetBlockEnvironment{quote}  % default: the quote environment
% ...

% Short -> stays inline, with quotation marks around it:
\blockquote{Brevity is the soul of wit.}

% Longer than the threshold -> set as an indented block, no marks:
\blockquote{A passage that runs past three printed lines of text is
set off on its own instead, and csquotes reaches that decision by
measuring the material rather than by asking the author to choose
between the quote and the quotation environment by hand.}

% Block quotation that also prints a citation (page 67 of doe2020):
\blockcquote[][67]{doe2020}{The argument develops over several
sentences and is long enough to be set as a block.}

Pour imprimer la source avec la citation, on dispose de \blockcquote et de son pendant en ligne \textcquote. La forme est \blockcquote[⟨prénote⟩][⟨postnote⟩]{⟨clé⟩}{⟨texte⟩}, la postnote portant d’ordinaire un numéro de page. La commande de citation réellement appelée se règle par \SetCiteCommand, si bien que la même source fonctionne avec biblatex comme avec natbib. Pour une citation en ligne dont les guillemets sont exigés quelle que soit la longueur, \textquote{…} s’impose : contrairement à \blockquote, il ne bascule jamais en bloc. Pour les citations en langue étrangère, \foreignblockquote{⟨lang⟩}{…} aligne guillemets et césure sur la langue, tandis que \hyphenblockquote{⟨lang⟩}{…} ne change que la césure.

Un mot sur l’origine de csquotes. Le package est de Philipp Lehman, également auteur de biblatex ; la notice de copyright atteste sa maintenance de 2003 à 2011, Joseph Wright ayant pris le relais depuis 2015 (TeX Live 2024 embarque la v5.2n). Savoir que la citation et la bibliographie ont été repensées par la même main rend nettement moins étonnante la fluidité avec laquelle \blockcquote s’emboîte dans biblatex.

Lequel utiliser, en pratique

  • Citation courte en ligne\enquote{…}. La langue choisit les glyphes ; l’imbrication et le contrôle d’équilibre viennent en prime.
  • Citation détachée d’un paragraphequote. Sans package et sans guillemets ajoutés.
  • Citation longue de plusieurs paragraphesquotation (paragraphes marqués par l’alinéa).
  • Poésie ou parolesverse (\\ termine un vers, une ligne vide une strophe, les reports sont en retrait négatif).
  • Laisser la longueur trancher\blockquote (3 lignes par défaut ; parthreshold impose le bloc dès qu’il y a des paragraphes).
  • Citation avec sa référence\blockcquote / \textcquote (reliés à biblatex ou natbib par \SetCiteCommand).
  • Documents multilingues\usepackage[autostyle=true]{csquotes} avec babel ou polyglossia.

Un dernier point. Tous ces environnements reposent en interne sur list : comme itemize, chacun ajoute un espace vertical autour de lui et accepte l’imbrication. Pour ajuster finement les coupures de ligne dans une citation, voir « Sauts de ligne et de paragraphe » ; pour l’indentation et le centrage en général, « Alignement du texte » ; et pour les tirets et points de suspension qui entourent les citations, « Guillemets et tirets ».