Dans un document en 12 pt, les \Huge et \huge de LaTeX sont la même commande. Pas de tailles voisines : la ligne 86 de size12.clo porte \let\Huge=\huge, ce qui en fait littéralement une seule chose. Cela tient à ce que les dix commandes de taille, de \tiny à \Huge, désignent des échelons relatifs au texte courant et non des tailles absolues : le même \large donne 12 pt dans un document en 10 pt et 14,4 pt dans un document en 12 pt. Et l'échelle de ces échelons n'est pas une invention de LaTeX : les nombres sont exactement les valeurs \magstep que Knuth a inscrites dans plain TeX. Cette page fournit un tableau mesuré de ce que valent les dix commandes en 10 pt, 11 pt et 12 pt, le piège fameux où {\Large ...} change les lettres mais pas l'interlignage, et ce qui se passe vraiment quand \fontsize ne fait rien sans rien dire.
De \tiny à \Huge : les dix déclarations
Les commandes de taille ne prennent pas d'argument. Ce ne sont pas des commandes comme \textbf{...} mais des déclarations qui basculent tout à partir de ce point ; leur portée, c'est à vous de la délimiter par un groupe ou un environnement. De la plus petite à la plus grande, elles sont dix : \tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large, \LARGE, \huge, \Huge. Seules la casse de l'initiale et la forme tout en capitales LARGE séparent les échelons : surveillez l'orthographe plutôt que l'allure. Écrire \Large{texte} ne passe aucun argument : cela déclare \Large puis dépose un groupe contenant {texte}, et sortir de ce groupe ne rétablit pas la taille. Pour limiter la portée, écrivez {\Large texte} — la déclaration va à l'intérieur des accolades. \normalsize est la taille du corps et correspond à l'option de taille de votre \documentclass (10 pt par défaut).
% right: the declaration is inside the braces
Ordinary text. {\Large only this part is large.} Ordinary again.
% wrong: nothing is passed as an argument, and the size never comes back
Ordinary text. \Large{this is large} and so is everything after it.Les tailles réelles dépendent de la taille de base (10 pt, 11 pt, 12 pt)
La même commande donne une taille différente selon que vous avez passé 10pt, 11pt ou 12pt à \documentclass. \large vaut 12 pt aussi bien dans une classe en 10 pt que dans une classe en 11 pt, mais 14,4 pt dans une classe en 12 pt. Le tableau ci-dessous rapporte ce que les dix commandes ont réellement produit dans les classes standard (article, report, book) lorsque \f@size et \baselineskip ont été écrits pendant la compilation. Chaque case se lit taille de police / interlignage, l'interlignage étant la distance entre les lignes de base de deux lignes consécutives. Il figure ici parce que le tableau montre alors d'un coup d'œil qu'une commande de taille déplace l'interligne en même temps que les lettres.
| Commande | classe 10 pt | classe 11 pt | classe 12 pt |
|---|---|---|---|
\tiny | 5 pt / 6 pt | 6 pt / 7 pt | 6 pt / 7 pt |
\scriptsize | 7 pt / 8 pt | 8 pt / 9,5 pt | 8 pt / 9,5 pt |
\footnotesize | 8 pt / 9,5 pt | 9 pt / 11 pt | 10 pt / 12 pt |
\small | 9 pt / 11 pt | 10 pt / 12 pt | 10,95 pt / 13,6 pt |
\normalsize | 10 pt / 12 pt | 10,95 pt / 13,6 pt | 12 pt / 14,5 pt |
\large | 12 pt / 14 pt | 12 pt / 14 pt | 14,4 pt / 18 pt |
\Large | 14,4 pt / 18 pt | 14,4 pt / 18 pt | 17,28 pt / 22 pt |
\LARGE | 17,28 pt / 22 pt | 17,28 pt / 22 pt | 20,74 pt / 25 pt |
\huge | 20,74 pt / 25 pt | 20,74 pt / 25 pt | 24,88 pt / 30 pt |
\Huge | 24,88 pt / 30 pt | 24,88 pt / 30 pt | 24,88 pt / 30 pt (identique à \huge) |
En parcourant l'échelle — 12, 14,4, 17,28, 20,74, 24,88 —, chaque échelon vaut environ 1,2 fois le précédent. Ce n'est pas un hasard. La ligne 391 de plain TeX porte \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax} : les facteurs d'agrandissement définis par Knuth sont 1200, 1440, 1728, 2074 et 2488, c'est-à-dire les puissances première à cinquième de 1,2 exprimées en millièmes. LaTeX reprend tels quels ces nombres pour ses cinq échelons supérieurs. Le curieux 10,95 pt a la même origine, la ligne juste au-dessus : \def\magstephalf{1095 } — la racine carrée de 1,2, environ 1,0954, arrondie. Poussez jusqu'aux noms de macros à partir de la ligne 8915 de latex.ltx et vous trouvez \@xivpt, nommé « quatorze points », défini à 14.4, et \@xxvpt, nommé « vingt-cinq points », défini à 24.88. Les noms sont un raccourci pour les humains ; les valeurs sont l'escalier des agrandissements.
L'escalier s'arrête à 24,88 pt parce que c'est la plus grande taille de dessin fournie par Computer Modern. Les tailles énumérées dans le fichier de définition ot1cmr.fd sont <5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88> — douze barreaux, exactement l'échelle que gravissent les commandes de taille. Dans une classe en 12 pt, \huge atteint donc déjà le plafond de 24,88 pt, et la ligne 86 de size12.clo écrit tout simplement \let\Huge=\huge, faisant des deux une seule commande. Dans une classe en 11 pt, elles sont distinctes : \huge vaut 20,74 pt et \Huge 24,88 pt. Si vous rencontrez le symptôme « passer à \Huge ne change rien », vérifiez d'abord si l'option de classe est 12pt. Tout ceci vaut pour les classes standard ; les classes japonaises comme jsarticle, ainsi qu'extsizes ou KOMA-Script, ont leurs propres échelons et plafonds : ne leur appliquez pas ce tableau.
{\Large ...} a agrandi les lettres mais pas l'interligne
Parce que la fin de paragraphe — la ligne vide ou le \par — se trouve hors de l'accolade fermante. Déplacez-la à l'intérieur du groupe. TeX fixe l'interlignage non pas au moment où il compose les lettres, mais au moment où il découpe le paragraphe en lignes. Si la fin du paragraphe tombe hors du groupe, \baselineskip est déjà revenu à la valeur du corps à cet instant, et le grand corps se compose avec l'interligne du texte courant. Mesuré sur un paragraphe \Large de deux lignes (14,4 pt) dans une classe en 10 pt : avec \par hors du groupe, l'interlignage vaut 12 pt ; à l'intérieur, 18 pt. Soit 6 pt de moins par ligne.
% right -- \par is inside the group, so the leading is 18pt
{\Large
A long paragraph that will wrap onto a second line and keep its leading.
\par}
% wrong -- the paragraph ends after the group, so the leading falls back to 12pt
{\Large A long paragraph that will wrap onto a second line and lose its leading.}
The next paragraph.Ces 6 pt se manifestent sur la page par des lignes qui se heurtent. Un glyphe \Large monte à 9,99998 pt au-dessus de la ligne de base et descend à 2,79999 pt en dessous — valeurs relevées avec \sbox. Leur somme, 12,79997 pt, dépasse de 0,8 pt l'interlignage erroné de 12 pt. Dès qu'une ligne porte une jambage descendant (g, y, p) et la suivante une hampe ascendante (h, k, l), les deux se recouvrent nécessairement sur le papier. Avec peu de lignes, cela passe facilement inaperçu et n'apparaît souvent qu'à l'impression du PDF soumis.
Deux compléments. D'abord, ajouter \selectfont ne change rien : {\Large\selectfont ...} mesurait toujours 12 pt. Le problème n'est pas la sélection de police mais la valeur de \baselineskip à l'instant où le paragraphe s'achève ; seule la position du \par est en cause. Ensuite, le symptôme apparaît avec \centering mais pas avec l'environnement center. {\centering \Large ... } avec la ligne vide à l'extérieur donne 12 pt, alors que \begin{center} \Large ... \end{center} mesurait un correct 18 pt, parce que \end{center} termine le paragraphe avant de fermer le groupe. Si un grand titre centré présente un interligne bizarre, soupçonnez un groupe nu autour de \centering.
Une taille quelconque : \fontsize et \selectfont
Si aucun des dix échelons n'est la taille voulue, \fontsize{taille}{interlignage}\selectfont permet de nommer directement une taille en points. Le premier argument est la taille de police, le second l'interlignage. Un titre d'affiche, ou une seule ligne resserrée dans un tableau, sont de bonnes raisons de quitter l'échelle. L'essentiel ici : \fontsize ne fait qu'enregistrer les valeurs, il ne sélectionne rien. À la mesure, le x de \fontsize{20}{24}x faisait 5,2778 pt de large — exactement la largeur d'un x en \normalsize. Faites-le suivre de \selectfont et il passe à 10,05351 pt : c'est alors seulement que le corps 20 apparaît. Et oublier \selectfont ne provoque ni erreur ni avertissement. La plupart des « j'ai réglé la taille et rien n'a changé » viennent de là.
% \fontsize alone changes nothing and says nothing
{\fontsize{20}{24}Still 10pt.}
% \selectfont is what commits the change
{\fontsize{20}{24}\selectfont 20pt type on 24pt leading.}Le second argument n'est pas facultatif : choisissez-le selon l'usage, environ 1,2 fois la taille de police — soit à peu près 24 pt pour du 20 pt. Le tableau ci-dessus montre que les classes standard restent globalement dans cette fourchette : 10 pt sur 12 pt, 14,4 pt sur 18 pt. Là où des déclarations comme \tiny ajustent l'interlignage pour vous, \fontsize vous en rend responsable, et c'est la différence pratique la plus importante. Trop serré, les lignes se heurtent pour la raison exacte décrite à la section précédente. Élargir l'interligne d'un document entier — passer à l'interligne et demi, par exemple — n'est pas du ressort des commandes de taille ; voyez la page consacrée à l'interligne.
Les commandes de taille ne marchent pas en mode mathématique
Écrivez une commande de taille en mode mathématique et LaTeX l'ignore, en laissant une ligne dans le journal. Composer $ \large x $ produit LaTeX Font Warning: Command \large invalid in math mode on input line 9. C'est un avertissement, pas une erreur : la compilation continue et le x sort à la taille ordinaire. Les tailles dans une formule relèvent d'un système distinct — la taille du texte environnant combinée au style mathématique (\displaystyle, \textstyle, \scriptstyle, \scriptscriptstyle) — qui ne se mêle pas aux commandes de taille du corps. Pour ne grossir qu'une fraction ou un signe somme, employez \displaystyle. Pour agrandir la formule entière, déclarez la taille à l'extérieur des mathématiques : {\Large $ ... $} fonctionne.
LaTeX Font Warning: Command \large invalid in math mode on input line 9.L'ordre dans lequel décider des tailles
La taille de police tient debout quand elle se décide du haut vers le bas, et non par rustines locales au fil de l'écriture. Choisissez d'abord la taille de base de tout le document, comme dans \documentclass[11pt]{...}. Ensuite, pour tout ce qui revient — titres, légendes, notes de bas de page, notes de tableau —, fixez la taille dans la configuration de la classe ou du package plutôt qu'à la main à chaque occurrence. Seul le reste, les cas vraiment ponctuels comme un titre d'affiche ou une note dans un tableau, reçoit un {\small ...} local. Respectez cet ordre et changer plus tard la taille de base de 11 pt à 12 pt entraînera tout le document dans la même proportion. Semez au contraire des déclarations locales dans le corps, et ce sont exactement ces endroits-là qui resteront en arrière dès que la base changera. Pour les affiches et les diapositives, dont la taille de corps est de toute façon différente, ne forcez pas avec des commandes locales : choisissez une classe faite pour ce genre.
- Fixer la taille de base en option de classe. Envelopper tout le corps dans
{\small ...}casse volontiers l'accord avec les notes de bas de page, les titres et l'interlignage — et ne répond en rien à une consigne de soumission disant « corps de texte 11 pt ». - Ne pas agrandir les titres de section dans le corps. Modifiez l'aspect de
\sectionpar la configuration de la classe ou un package commetitlesec. Un titre simulé avec\Largedans le corps ne figure ni dans la table des matières ni dans un renvoi. - Modifier les éléments récurrents à leur définition. Si toutes les notes de tableau doivent être plus petites, définissez une macro ou un environnement de note plutôt que de le faire à la main dans le texte.
- Refermer le dimensionnement local aux limites de paragraphe. Pour un long paragraphe en petit corps, gardez
\parà l'intérieur du groupe afin que l'interlignage soit arrêté à la même taille. - Suspecter la structure avant de rétrécir un tableau. Avant de forcer tout un tableau en
\scriptsize, envisagez de supprimer des colonnes, de le faire pivoter ou de le couper en deux. - Contrôler le PDF à sa taille de page définitive. Ce qui se lit à l'écran peut être trop petit sur un PDF d'évaluation imprimé en A4. Regardez-le à taille réelle, sans zoom.