Les premiers pas

Où Mme/Mr Michu défini son document

La première chose à faire est de définir quel type de document tu veux obtenir :

La structure du document

Concernant la structure, les comportements de LaTeX et ConTeXt sont très différents. Sous LaTeX il existe plusieurs types de documents prédéfinis, qui ne donneront pas le même résultat. Il existe des styles pour écrire des articles, des rapports, un livre, des lettres, faire des présentations à la « PowerPoint », une thèse,. . .

Ces styles (on dit classe en LaTeX, class en anglais) définissent la mise en page, la taille des marges, le nombre et le type de divisions (pas de chapitre pour un article par exemple),. . .

Il y a trois principales classes en standard :

Ce \documentclass{} est obligatoire sous LaTeX et doit être la première ligne de ton source.

ConTeXt ne possède pas de classe de document. L'inconvénient c'est que tu dois fabriquer la structure avec tes petites mains. L'avantage c'est que tu n'es pas contraint par une structure assez rigide, que les réglages peuvent être très fin et tu peux laisser court à ton imagination. Si tu veux faire une plaquette artistique c'est parfait mais attention pour un rapport, il y a des contraintes typographiques qu'il vaut mieux ne pas transgresser sous peine de rendre ton document pénible à lire. Je te renvoie à ce que je dis dans l'introduction. Toutefois le document de base de ConTeXt sera suffisant pour notre premier rapport.

Pour revenir à LaTeX et ses classes, on pourrait ce contenter de la classe report seulement voila on est des européens et la classe report est faite pour les américains et leur format de papier bizarre. Et oui les américains utilisent le format de papier letter (21,6 x 27,9 cm), alors que sur le continent européen on utilise le format a4 (21 x 29,7 cm). Les mises en page des classes classiques de LaTeX sont adaptées au format letter et même si tu précises le format de papier (a4paper), ce qui modifie la taille des marges, je préfère la mise en page des classes Koma, mais c'est une affaire de goût et tu fais comme tu veux, je te mets ci-dessous un exemple pour que tu puisses te faire une idée.

Si tu veux utiliser ConTeXt tout ce que je vais développer ci-dessous ne sert à rien, donc si tu est pressé tu peux aller directement ici.

résultat du code résultat du code
Figure 1 : Voici pour comparer le même texte avec à gauche la class report (en précisant le format a4paper) et à droite la class scrreprt de KOMA-Script. Le trait rouge correspond au bord du papier au format a4. Pendant qu'on y est, regarde le choix automatique, d'une fonte sans sérif pour les titres dans la classe Koma, on en reparlera.

Donc on va plutôt utiliser la classe scrreprt, crée pour tous les européens par Markus Kohm, un allemand, qui provient de KOMA-Script (ne t’inquiète pas ce package est dans la TeXLive).

Où Mme/Mr Michu découvre les classes KOMA-Script

Les classes KOMA-Script qui correspondent aux types de documents sont :

rédiger un classes standards classe KOMA-Script
article article scrartcl
rapport report scrreprt
livre book scrbook

Les noms des classes KOMA-Script sont un peu barbares, imprononçables et ne sont pas facile à retenir. Le scr évoque script de KOMA-Script, la suite est une abréviation plus ou moins heureuse des classes classiques. :

La classe scrartcl

La classe article sert pour faire des petits documents de quelques pages, destiné à être publier avec d’autres articles dans des revues. Il n’y a pas de chapitre. Le sectionnement est le suivant :

Tu n’es pas obligé d’utiliser tous les niveaux de sectionnement. Je t’indique toutes les possibilités à ta disposition. Par exemple \part{} est peu utilisé dans un article. Tu peux concevoir un article avec un seul niveau de sectionnement, \section{}

Le titre est sur la même page que le début du texte, ainsi que les parties (\part{}) qui ne sont pas sur des pages séparées. Cette classe accepte un résumé et des annexes.

\documentclass{scrartcl}

La figure 2 montre l’aspect des deux premières pages d’un article fictif, à plusieurs parties.

résultat du code

a : page 1

résultat du code

b : page 2

Figure 2 : Les deux premières pages d’un article fictif, réalisé avec la classe scrartcl.

La classe scrreprt

La classe rapport est faite pour des document plus long, se satisfaisant à eux-même. Aux divisions de la classe article s’ajoute le chapitre (\chapter{}). Comme pour la classe article on peut insérer un résumé. Le titre, le résumé, les entêtes des parties se trouvent sur des pages impaires séparées.

\documentclass{scrreprt}

La figure 3 montre les première pages d’un rapport fictif, divisé en parties, chapitres, sections. . . et avec un résumé.

résultat du code résultat du code

Page de titre Résumé

résultat du code résultat du code

Page 4 Page 5

Figure 3 : Les premières pages d’un rapport fictif, réalisé avec la classe scrreprt. Attention, en réalité, entre la page de titre et le résumé il y a une page blanche. Le trait rouge correspond au bord du papier au format a4.

La classe scrbook

La classe livre est faite pour écrire . . . un livre. Il n’y pas de grandes différences par rapport à la classe rapport, si ce n’est l’ajout des commandes \frontmatter, \mainmatter et \backmatter qui gèrent les préfaces et postfaces.

Toutefois le comportement de certaine commande n’est pas le même qu’avec la classe rapport, comme par exemple la gestion de la page de titre.

La taille du papier

Par défaut LaTeX et ConTeXt travail en a4 (21x29,7 cm), donc ça tombe bien puisque justement pour l'exemple notre rapport sera en a4 (format le plus utilisé dans les imprimantes). Je vais quand même te montrer comment on indique le format de papier si jamais tu dois utiliser un autre papier tu sauras comment faire.

Les tailles de papier disponibles pour la classe report de LaTeX sont : a4paper, a5paper, b5paper, letterpaper, legalpaper. C'est une option de la commande \documentclass et donc se place entre [].
\documentclass[a4paper]{scrreprt}

Avec ConTeXt les formats accepté sont très nombreux :

Taille Remarques
letter, ledger, tabloid, legal, folio, executive Formats Nord-Américains
A0 à A10, B0 à B10, C0 à C10 Série A, B et C du standard ISO-216
RA0 – RA4, SRA0 – SRA4 Série RA et SRA du standard ISO-217<
C6/C5, DL, E4 Enveloppes au standard ISO-269
envelope 9 à envelope 14 Standard postal américain
G5 et E5 Standard suédois SIS-014711, utilisé pour les thèses
CD (12x12cm) Couverture de CD
S3 à S6, S8, SM, SW Format écran pour les présentation à la «PowerPoint»

La commande pour indiquer le format de papier sous ConTeXt est :
\setuppapersize[format de la page de texte][format du papier d'impression].
Et oui parfois le format d'impression n'est pas le même que celui de l'édition, comme quand tu fais de pochette de cd :
\setuppapersize[CD][A4].

Je te rappelle que si tu composes sur du a4 et que tu imprimes sur du a4 tu n'es pas obliger de mettre cette commande.

Tu peux définir ton propre format de papier avec le package geometry sous LaTeX et avec la commande \definepapersize[][] avec ConTeXt mais on sort du cadre de cette fiche.

Sauf à avoir une imprimante incapable d'imprimer en recto/verso, il vaut mieux l'indiquer car la gestion des marges des pages paires et impaires est différente. Sous LaTeX c'est encore une option de \documentclass, l'option twoside.

résultat du code résultat du code

Sans l'option twoside

résultat du code résultat du code

Avec l'option twoside

Figure 4 : Sans l'option twoside toutes les pages sont exactement identiques, avec l'option twoside les marges de gauche et de droite sont différentes pages paires et impaires.

Avec ConTeXt il faut utiliser la commande \setuppagenumbering qui gère le numéro de page et sa position sur la page.

résultat du code résultat du code

Sans l'option alternative=doublesided

résultat du code résultat du code

Avec l'option alternative=doublesided

Figure 5 : Sans l'option alternative=doublesided de \setuppagenumbering toutes les pages sont exactement identiques, avec l'option doublesided les marges de gauche et de droite sont différentes pages paires et impaires.

Donc sous LaTeX la première ligne de ton source devient :

\documentclass[a4paper,twoside]{scrreprt}

Et sous ConeXt la première ligne de ton source est :

\setuppagenumbering[alternative=doublesided]

La police de caractères

Par défaut LaTeX et ConTeXt utilisent la police Latin Moderne qui est dérivée de la police Computer Modern fonts dessinée par Donald E. Knuth le créateur de TeX.

Tu peux évidemment utiliser d'autres polices, c'est plus ou moins facile. C'est facile pour les polices qui ont un package sous LaTeX ou pour les 21 polices fournies avec l'installation de ConTeXt. C'est plus compliqué (et je n'aborderais pas le sujet dans cette fiche) pour utiliser les polices installées sur ton ordi en dehors de LaTeX/ConTeXt.

Avec LaTeX, il suffit de charger un paquet de cette façon :

\usepackage{nom de la police}

Sous ConTeXt il faut utiliser les deux commandes suivantes :

\usetypescript[nom de la police]
\setupbodyfont[nom de la police]

Je t'entends Mme/Mr Michu, penser tout haut :

– Ho la la !!! il est zarbi ConTeXt à nous obliger à mettre deux commandes qui font la même chose.

Je pensais pas aborder le sujet dans cette fiche, car nous n'allons pas l'utiliser dans notre rapport, mais sous ConTeXt tu peux charger plusieurs polices avec \usetypescript et utiliser l'une ou l'autre avec \setupbodyfont :

\usetypescript[police1,police2]
\setupbodyfont[police2]
Du texte écrit avec la police2.
\setupbodyfont[police1]
Du texte écrit avec la police1.

Voici une liste de polices que tu peux facilement utiliser.

Nom utilisé par LaTeX Nom utilisé par ConTeXt Équivalent connu
lmodern modern ou modern­base Latin Modern
bookman bonum ou bookman Bookman
tgschola schola ou schoolbook New Century Schoolbook
chancery chorus ou chancery ITC Zapf Chancery
tgpagella pagella ou palatino Palatino
tgtermes termes ou times Times
libertine linuxlibertine Linux Libertine

Pour avoir un texte en Linux Libertine qui est une police que j'aime bien et que l'on va utilisé dans notre rapport (mais tu es libre de mettre celle que tu préfères, j'oblige à rien), avec LaTeX, il suffit de charger un paquet de cette façon :

\usepackage{libertine}

Sous ConTeXt il faut utiliser les deux commandes suivantes :

\usetypescript[linuxlibertine]
\setupbodyfont[linuxlibertine]

Je ne sais pas si tu as remarqué, mais dans la liste des polices que je t'ai proposé, il n'y a que des polices à empattement (serif en anglais). La raison en est que sous LaTeX l'utilisation de police sans empattement est un chouïa plus compliqué. Bon on va être obligé de parler de typographie.

Un petit peu de typographie

Wikipédia : «En typographie, les empattements sont les petites extensions qui terminent les extrémités des caractères dans certaines polices d’écriture, dites avec empattement (au singulier ; serif en anglais), que l’on oppose aux polices sans empattement (sans serif)» .

résultat du code

Police de caractère à empattement (source Wikipédia).

résultat du code

Police de caractère sans empattement (source Wikipédia).
résultat du code
Les empattements en rouge (source Wikipédia).

Les premières polices utilisées en imprimerie étaient toutes à empattement. La première police sans empattement (Futura, 1928) est crée au début du XXe siècle.

Les polices à empattement sont considérées comme plus lisible sur les ouvrages imprimés surtout pour les petits caractères (par exemple les journaux). La police sans empattement est plus lisible sur les écrans et par les personnes dyslexiques et malvoyantes. Elle est également préférée pour les panneau de signalisation.

La typographie est une science ancienne, dont les premières règles ont été élaborées par les moines copistes et qui s'est développée avec l'invention de l'imprimerie par Gutenberg. Le problème c'est que la typographie, ça ne sert pas uniquement à faire joli, son rôle principal est de faciliter la lecture. Donc il y a une multitudes de règles qu'il vaut mieux pas transgresser, sous peine de faire fuir ton lecteur ou de lui donner une bonne migraine.

Pour faire simple (voir simpliste) dans un document écrit il y a des choses qui doivent être vues (les titres, les légendes des illustrations) et d'autre qui doivent être lues (le corps du texte). En règle générale on utilise une police sans empattement pour voir (les titres) et une police avec empattement pour lire (le texte). C'est ce que font automatiquement les classes Koma.

Pour revenir à nos moutons, pour LaTeX le corps du texte est composé avec une police à empattement. Donc quand tu utilises une police sans empattement comme Helvetica (helvet pour LaTeX)

\usepackage{helvet}

voila ce qui arrive avec la classe scrreprt :

résultat du code

Seul les titres sont composé en Helvetica le corps du texte est en police à empattement donc celle par défaut la Latin Modern.

Il faut donc forcer LaTeX a utiliser une police sans empattement pour le corps du texte en ajoutant cette commande ésotérique :

\renewcommand*\familydefault{\sfdefault}

Et tu obtiens :

résultat du code

Tout le texte est en Helvetica.

Avec ConTeXt pas besoin de tout ce bazar les polices sans empattement sont utilisées directement pour tout le texte.

Donc maintenant que tu sais utiliser les polices sans empattement en voici une liste non exhaustive.

Nom utilisé par LaTeX Nom utilisé par ConTeXt Équivalent connu
avant ou tgadventor adventor, avantgarde Avant Garde
helvet ou tgheros heros ou helvetica Helvetica

Il y a d'autres polices utilisables, je te renvoie pour LaTeX à Apprends LaTeX ! de Marc Baudoin, à partir de la page 102 et pour ConTeXt à Une courte introduction à ConTeXt de Joaquín Ataz-López, chapitre 6.

Tu trouveras un catalogue complet des polices utilisable par LaTeX sur le site The LaTeXFont Catalogue, mais attention de nombreuses polices nécessitent d'autre moteur que pdflatex et tu dois utiliser XeLaTeX ou LuaLaTeX ce qui est hors de porté de cette fiche.

Encore une petite chose avec LaTeX tu dois ajouter les deux commandes suivantes :

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

Je te demande de me faire confiance, car je ne vais pas rentrer dans les détails du pourquoi et du comment, ça va nous entraîner fort loin. C'est une survivance des temps anciens. En gros c'est pour que tu puisses utiliser les lettres accentuées de ton clavier et que tu ne te retrouves pas, dans ton document, avec les accents remplacés par des signes cabalistiques du genre � ou é ou ￾.

Taille du texte

LaTeX n’accepte que 3 tailles de texte 10, 11 et 12 pt. Les classes KOMA-Script accepte n’importe quelle taille, mais attention certaine commandes LaTeX risquent de ne pas aimer et tu peux te retrouver avec des problèmes imprévus si tu utilises une fontes de 14 pt par exemple. Mais quelle idée de prendre une fonte de 14 pt pour écrire un rapport, à moins de n’avoir rien à dire et faire du remplissage. ConTeXt accepte n’importe quelle taille.

Choisir une taille de fonte ne veut pas dire que l’intégralité du document sera de cette taille. Tu pourras écrire des portions de texte en plus petit ou en plus grand. Mais les commandes pour le faire (\smallt ou \Huge, par exemple sous LaTeX et \tfa ou \tfxx pour ConTeXt ) sont proportionnelle à la taille choisie ici.

Pour mes rapports j'utilise toujous une font de 10pt, c'est ce que nous allons choisir pour notre exemple de rapport. Pour LaTeX la taille est une option de \documentclass (la fonte par défaut est de 11pt):

\documentclass[a4paper,twoside,10pt]{scrreprt}

Pour ConTeXt c'est une option de \setupbodyfont (la fonte par défaut est de 12pt) :

\setupbodyfont[linuxlibertine,10pt]

La langue du document

Chaque langue possède des règles typographiques qui lui sont propre. On ne coupe pas les mots de la même manière en anglais et en français. Les items d’une listes commence par • en anglais et – en français. En anglais et en allemand on ne met pas d’espace avant les signes doubles ( ; : ! ?), en français on met une espace insécable avant et une espace normale après pour le : et pour les ; ! ? ont met avant une espace fine insécable et une espace normale après. La langue naturel de LaTeX/ConTeXt est l’anglais, il nous faut donc leur dire de parler une autre langue, le français en l’occurrence.

Avec LaTeX c'est au package babel qu'il incombe à forcer LaTeX de parler d’autres langues, à l’aide d’extension comme french pour le français.

Daniel Flipo qui maintient le module babel-french recommande dans son manuel de déclarer les options de langues comme arguments de \documentclass, elles peuvent alors être utilisées également par d’autres extensions :

\documentclass[a4paper,twoside,10pt,french]{scrreprt}
\usepackage{babel}

Grâce à ce package les césures des mots en fin de ligne seront correctes, les espaces entre les signes de ponctuation seront respectés, l’entête des chapitres sera écrit « Chapitre » et non « Chapter », les légendes des figures commenceront par « Figure » . . .

Sous ConTeXt c'est un petit plus compliqué et la francisation est moins poussée qu'avec le package de Daniel Flipo et il faut utiliser plusieurs commandes :

À la place de fr tu peux également utiliser fra ou french. Si tu veux utiliser d'autres langues, sache que ConTeXt utilise les normes ISO 639-1 et ISO 639-2, plus le nom anglais de la langue.

On vient d'achever le préambule, c’est comme cela que l’on appelle la première partie du source qui comprend les paramètres de mise en page et le chargement des packages ou des paramètres dont tu as besoin.

Le préambule pour LaTeX est le suivant :

\documentclass[a4paper,twoside,10pt,french]{scrreprt}
\usepackage{libertine}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}

Le préambule pour ConTeXt est le suivant :

\mainlanguage[fr]
\language[fr]
\setcharacterspa­cing[frenchpunctuation]
\usetypescript[linuxlibertine]
\setupbodyfont[linuxlibertine,10pt]
\setuppagenumbering[alternative=doublesided]

On va s’arrêter là pour l’instant. On complétera le préambule au fur et à mesure de nos besoins. Maintenant tu vas ajouter deux balises. C'est entre ces deux balises que tu va saisir l'intégralité de ton rapport.

Pour LaTeX les balises sont :

\documentclass[a4paper,twoside,10pt,french]{scrreprt}
\usepackage{libertine}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\begin{document}
Je saisi le texte de mon rapport ici
\end{document}

Le préambule pour ConTeXt les balises sont :

\mainlanguage[fr]
\language[fr]
\setcharacterspa­cing[frenchpunctuation]
\usetypescript[linuxlibertine]
\setupbodyfont[linuxlibertine,10pt]
\setuppagenumbering[alternative=doublesided]
\starttext
Je saisi le texte de mon rapport ici
\stoptext