Classes alternatives

Prenez article et LaTeX vous tend du papier US letter ; prenez scrartcl et vous obtenez de l’A4. Ce seul écart de valeur par défaut est la pointe visible de la raison d’être des classes alternativesKOMA-Script et memoir, les deux familles vers lesquelles on migre quand les classes standard cessent de coopérer. KOMA-Script est né au début des années 1990 : Frank Neukam, après avoir lu Jan Tschichold sur la conception du livre, a jugé les styles de document standard insuffisants et a entrepris une famille de styles visant la typographie européenne et allemande ; Markus Kohm l’a reconstruite pour LaTeX2ε et l’a publiée sous le nom de KOMA-Script le 7 juillet 1994. memoir procède d’un tout autre instinct : absorber des packages de mise en forme entiers dans une seule classe configurable. Cette page explique à quoi sert chacune, quels réglages comptent vraiment et quand le changement en vaut la peine.

Pourquoi remplacer article, report et book

Une seule raison : les classes standard n’offrent presque aucun point d’entrée officiel pour changer le design. article / report / book sont mûres et fiables, mais dès qu’on veut d’autres marges, titres, en-têtes ou pieds de page, on finit par corriger des internes derrière \makeatletter ou par empiler geometry, fancyhdr, titlesec et tocloft. Le format du papier en est un symptôme visible : le manuel de KOMA-Script prend soin de préciser que KOMA-Script utilise par défaut l’A4 en portrait, contrairement aux classes standard dont le défaut est le letter américain. Les classes standard elles-mêmes ont leur propre page.

KOMA-Script et memoir répondent tous deux à cette frustration, mais autrement. KOMA-Script est un ensemble de classes de remplacement plus un mécanisme de configuration : on écrit le corps comme avant et l’on modifie le design par des options et des commandes dédiées. memoir est une classe livre monolithique : mise en page, en-têtes, titres de chapitre et table des matières résident dans la classe plutôt que dans des packages externes. Cette différence se voit directement dans la façon dont chacune s’entend avec les packages d’aide, comme on va le constater.

Les classes de remplacement KOMA-Script : scrartcl, scrreprt, scrbook

KOMA-Script est un ensemble de classes et packages LaTeX2ε maintenu par Markus Kohm (la copie livrée avec TeX Live 2024 est la version 3.41, datée du 2023-07-07), construit surtout autour de remplacements directs des classes standard. scrartcl correspond à article, scrreprt à report, scrbook à book, avec scrlttr2 dédié aux lettres. On écrit le corps presque comme avant (\section, \chapter), mais la typographie par défaut est plus soignée et les points de configuration sont largement ouverts. La première étape d’une migration consiste donc simplement à remplacer \documentclass{article} par \documentclass{scrartcl} et à vérifier que le document compile encore sans rien toucher d’autre.

Classe KOMAClasse standard remplacéeUsage
scrartclarticlearticles et documents généraux courts ou moyens
scrreprtreportrapports et thèses avec chapitres
scrbookbooklivres composés en recto verso
scrlttr2letterlettres (plusieurs en-têtes et mises en page définissables)

Deux façons de transmettre les réglages : en options de classe dans \documentclass[...]{scrartcl}, ou après chargement avec \KOMAoptions{...}. KOMA-Script est conçu pour que la plupart des options restent modifiables après le chargement de la classe, et \KOMAoptions accepte d’un coup une liste de paires option=value séparées par des virgules. Ce n’est que lorsqu’une même option doit recevoir plusieurs valeurs simultanément qu’on emploie la forme au singulier \KOMAoption{option}{val1,val2}. C’est précisément cette possibilité de changer après coup qui rend possible le recalcul de la zone de composition décrit plus bas.

Calculer la zone de composition : DIV et BCOR

Avec KOMA-Script, on ne donne pas les marges en millimètres. Le package typearea, au cœur de sa conception de page, divise la page en bandes horizontales et verticales et déduit de ces proportions le bloc de texte et les marges. Cela mécanise la construction classique popularisée par Jan Tschichold, où les proportions des marges font écho à celles de la feuille : on décide comment découper le papier, pas combien de millimètres laisser. Avec une classe KOMA, typearea est chargé automatiquement ; il ne faut donc pas écrire soi-même \usepackage{typearea}.

Le nombre de bandes est fixé par DIV=. Comme l’explique le manuel, DIV=factor indique en combien de bandes la page est divisée horizontalement et verticalement lors de la construction de la zone de composition. Le point clé : plus le facteur est grand, plus le bloc de texte est grand et plus les marges sont petites — davantage de texte tient sur une page. Tout entier supérieur à 4 convient. En A4, le défaut suit la taille du corps : 8 pour 10pt, 10 pour 11pt, 12 pour 12pt. Pour un calcul selon la police, utilisez DIV=calc ; pour approcher le canon de page médiéval dont ont traité Tschichold et d’autres, DIV=classic.

L’autre réglage est BCOR= (binding correction, correction de reliure). Donnez-lui la largeur qui disparaît dans le dos lors de la reliure ; cette quantité est d’abord retranchée du calcul de la zone de composition, puis rendue à la marge intérieure (gauche) à la sortie. La valeur peut employer toute unité comprise par TeX, comme BCOR=10mm. Les deux ne sont pas indépendants : modifier DIV ou BCOR via \KOMAoptions recalcule ensemble la zone de composition et les marges — ce que l’écrasement de valeurs par geometry ne fait précisément pas.

latex
\documentclass[DIV=12,BCOR=10mm]{scrartcl}
% DIV=12    wider text block (same divisor as the A4/12pt default)
% BCOR=10mm reserve 10mm of gutter for the binding
\usepackage[T1]{fontenc}
\usepackage{microtype}

\title{A Short Report}
\author{Ada Lovelace}

\begin{document}
\maketitle
\section{Introduction}
KOMA-Script keeps the body markup of article
while giving you DIV and BCOR for the page layout.
\end{document}

Un piège guette si le package de police est chargé plus tard. Écrire DIV=calc en option de classe fige la mise en page pour la police standard, avant que la vôtre ne soit chargée : une classe KOMA charge typearea elle-même, si bien que le calcul est déjà fait quand votre \usepackage{...} change la police. Après le changement, appelez \KOMAoptions{DIV=last} (ou DIV=current) dans le préambule et la mise en page est recalculée pour la nouvelle police.

Retravailler les polices d’éléments et les titres

KOMA-Script permet de régler au même endroit la police de chaque élément du document : titres, légendes, etc. \setkomafont{element}{commands} remplace entièrement la définition de police de cet élément, tandis que \addtokomafont{element}{commands} se contente d’étendre l’existante (et \usekomafont{element} bascule la police courante vers celle de l’élément). Limitez commands à ce qui ne change que des attributs de police, comme \sffamily, \bfseries ou \Large, et déclarez le tout dans le préambule. Glissez-y une commande de composition comme \centering et elle se déclenchera à des endroits inattendus chaque fois que l’élément sert.

Pour retravailler la présentation d’une commande de sectionnement elle-même — espace avant et après, police, affichage du numéro — utilisez \RedeclareSectionCommand[attributes]{name}. C’est le point d’entrée officiel pour redéfinir les attributs d’un \section ou \chapter existant au moyen d’une liste key=value séparée par des virgules. Pour les en-têtes et pieds, le compagnon recommandé est scrlayer-scrpage, dont \lehead, \cohead et \rohead remplissent indépendamment chaque emplacement « gauche/centre/droite » × « page paire/impaire ». Les titres courants en général sont traités sur la page des en-têtes et pieds de page.

Pourquoi KOMA avertit sur fancyhdr mais se tait sur geometry

Empiler un package d’aide prévu pour les classes standard entre en collision avec les interfaces propres à KOMA-Script. Pour fancyhdr, la classe le dit noir sur blanc dans le journal : Class scrartcl Warning: Usage of package 'fancyhdr' together with a KOMA-Script class is not recommended. Elle recommande ensuite scrlayer ou scrlayer-scrpage et détaille la raison : avec fancyhdr, des options comme headsepline et footsepline, ainsi que l’emploi de \setkomafont et \addtokomafont sur les éléments de style de page, cessent de fonctionner sans intervention manuelle.

En revanche, ajoutez geometry et KOMA-Script ne dit rien du tout. Écrivez \usepackage[margin=2cm]{geometry} après \documentclass{scrartcl} : le document compile pendant que la zone de composition calculée par typearea est silencieusement écrasée. C’est le cas muet qui est le plus dangereux. Donc, si vous voulez d’autres marges sous une classe KOMA, voyez d’abord si DIV et BCOR suffisent ; ne recourez à geometry que sinon, en sachant que vous renoncez au calcul de typearea. Pour la même raison, titlesec recoupe \RedeclareSectionCommand, et tocloft les options de table des matières propres à KOMA.

memoir — la classe livre qui a avalé les packages

memoir a été publiée par Peter Wilson en 2001 et est maintenue par Lars Madsen depuis 2013 (la copie de TeX Live 2024 est la v3.8.2, du 2024-01-26, et se décrit comme une classe book, report et article configurable). Elle n’étend pas la classe standard book en la chargeant — memoir.cls ne contient aucun \LoadClass — mais est écrite comme une classe autonome qui remplace book et report. Son trait distinctif est l’ampleur de ce qu’elle absorbe : selon son manuel, la classe fournit elle-même des fonctions proches de crop, fancyhdr, geometry, sidecap, subfigure et titlesec, et intègre un contrôle d’interligne équivalent à setspace (sous d’autres noms de commandes). Elle charge en outre automatiquement array, dcolumn, delarray, tabularx, booktabs, nameref et shortvrb, entre autres.

Pourquoi une telle construction ? Lars Madsen, qui a repris la maintenance, l’explique lui-même en ouverture du manuel : en 2001, mettre à jour un package hors de la distribution annuelle se faisait à la main, et CTAN n’exigeait même pas qu’un package soit accompagné d’un manuel. Intégrer les fonctions de plusieurs packages dans la classe et tout documenter dans un seul livre avait donc du sens. La situation ayant changé, il défait progressivement cette intégration : à l’été 2023, par exemple, il a fait passer booktabs de l’état intégré à celui de simple package chargé. Depuis la version 3.8, memoir exige un noyau LaTeX publié le 2021/06/01 ou après et interrompt la compilation s’il en trouve un plus ancien, afin que l’utilisateur réagisse au lieu d’ignorer le problème.

La mise en page se construit avec des commandes dédiées. \setlrmarginsandblock{spine}{edge}{ratio} règle les marges gauche et droite (côté dos spine, grand bord edge) et \setulmarginsandblock{upper}{lower}{ratio} les marges haute et basse ; la largeur de page reste fixe et le bloc de texte en découle. Le troisième argument est un rapport, et l’on peut mettre * pour une valeur à faire calculer. Voici le plus grand piège de memoir : ces déclarations ne font rien à elles seules. La mise en page ne devient effective qu’après l’appel de \checkandfixthelayout (en interne, il vérifie la spécification avec \checkthelayout puis l’applique avec \fixthelayout). La plupart des « j’ai réglé les valeurs mais la page n’a pas changé » viennent de cette ligne manquante.

Le design des titres de chapitre se change avec \chapterstyle{style}, qui fonctionne comme \pagestyle : il fixe le style des titres de chapitre suivants. La copie de memoir.cls livrée avec TeX Live 2024 définit une trentaine de styles via \makechapterstyledefault (l’aspect book familier), section (numéro et titre sur une ligne), hangnum (numéro de chapitre suspendu dans la marge), companion (l’allure de The LaTeX Companion), ainsi que bringhurst, madsen, komalike et d’autres dont le nom trahit l’origine. Pour créer le vôtre, ajoutez-le avec \makechapterstyle{name}{definition}. La faveur dont jouit memoir en design de livre tient largement à cela : on commence par choisir parmi trente maquettes toutes faites.

latex
\documentclass[11pt,a4paper,twoside]{memoir}

% page layout -- nothing takes effect until \checkandfixthelayout
\setlrmarginsandblock{30mm}{25mm}{*}  % spine, fore-edge
\setulmarginsandblock{30mm}{35mm}{*}  % upper, lower
\checkandfixthelayout

\chapterstyle{hangnum}

\begin{document}
\chapter{Beginnings}
memoir bundles page layout, headers and chapter styles
into one configurable book class.
\end{document}

KOMA-Script ou memoir : lequel choisir

La question décisive est de savoir si le document réclame une conception cohérente qui lui soit propre. Pour une montée naturelle depuis les classes standard — articles, rapports — avec une typographie par défaut soignée et le contrôle clair de la page par DIV et BCOR, prenez KOMA-Script. Pour concevoir un livre jusque dans les détails, prenez memoir, où mise en page, titres courants, styles de chapitre et table des matières résident dans la classe. Leurs philosophies diffèrent réellement : ne les mélangez pas, choisissez-en une par document. Et le changement est rentable quand les modifications de design se répètent plutôt que d’être uniques. Si vous voulez seulement gagner un centimètre de marge une fois, ajouter geometry à une classe standard sera plus rapide. Et si ce sont des diapositives que vous préparez, rien de tout cela ne s’applique : c’est le domaine de la classe distincte beamer.

Que choisir pour des documents japonais

Pour des documents majoritairement japonais, n’utilisez ni KOMA-Script ni memoir mais une classe spécialisée dans la composition japonaise. L’interligne, le kinsoku (interdiction de coupure) et les espaces entre caractères japonais et latins relèvent de classes dédiées ; les philosophies de KOMA-Script et memoir ne vont pas jusque-là. Deux lignées s’offrent à vous. jsarticle / jsbook (les jsclasses) déclarent \NeedsTeXFormat{pLaTeX2e} et exigent donc un format de la famille pLaTeX, avec ltjsarticle / ltjsbook comme équivalents LuaLaTeX. L’autre est jlreq, qui met en œuvre le document du W3C « Requirements for Japanese Text Layout » et fonctionne sur LaTeX2ε standard. Chacune a sa page ici.

Comment migrer depuis une classe standard

La seule astuce, quand on déplace un manuscrit existant, est de ne pas tout redessiner d’un coup. Changez d’abord le seul nom de classe — article en scrartcl, book en memoir — et vérifiez que le corps compile sans autre modification. Si cela échoue dès ce stade, la cause n’est pas le design mais un package d’aide resté en place. Une fois que cela passe, ajustez marges, puis titres courants, puis titres, puis table des matières, un élément à la fois, en comparant le PDF après chaque étape. En respectant les quatre points ci-dessous, la migration se termine généralement sans bruit.

  • KOMA-Script — avant de recourir à geometry, voyez si DIV et BCOR suffisent ; pour les titres courants, utilisez scrlayer-scrpage et non fancyhdr.
  • memoir — terminez toujours les déclarations de mise en page par \checkandfixthelayout. Sans cet appel, elles sont ignorées.
  • Les deux — n’empilez pas par-dessus des packages d’aide pour classes standard tels que titlesec, fancyhdr ou tocloft ; la classe possède son propre point d’entrée pour la même tâche.
  • Manuscrits japonais — n’appliquez pas au texte japonais les hypothèses de conception occidentales ; envisagez d’abord jsclasses ou jlreq.
latex
% Keep every design knob in one place, with a reason next to it
\KOMAoptions{DIV=12,BCOR=8mm}   % 12pt-like text block, 8mm gutter
% \RedeclareSectionCommand[beforeskip=-2ex]{section}

% For memoir, set every layout knob BEFORE the check
% \setlrmarginsandblock{30mm}{25mm}{*}
% \setulmarginsandblock{30mm}{35mm}{*}
% \checkandfixthelayout

Une dernière habitude, sans éclat mais efficace. Dans un manuscrit utilisant KOMA-Script ou memoir, on essaie sans cesse des marges et des titres pendant la rédaction. Sortez ces réglages du corps du texte et rassemblez-les dans de petites sections du préambule — « mise en page », « titres », « titres courants » — avec une ligne de commentaire expliquant chaque valeur. Quand un éditeur ou une conférence exigera plus tard des dimensions précises, le temps passé à chercher la ligne responsable disparaît complètement.