PDF est le nouveau standard de diffusion de documents : il n’est plus vraiment d’actualité de générer des fichiers Postscript à partir de documents LaTeX. Cependant, ce n’est pas toujours évident de générer des documents PDF bien codés avec des jolies polices. Cet article donne une méthode pour éviter ces écueils.
Les lecteurs intéressés uniquement par les recettes peuvent sauter cette section.
Par défaut, LaTeX utilise un codage des caractères appelé OT1, qui conduit à l’inclusion de polices de type 1 dans les fichiers PDF. Le problème posé par le codage OT1 est double :
Solution ? Passer à un codage moderne, appelé T1 (\\usepackage[T1]{fontenc}
), ce qui résout les deux problèmes ci-dessus… Mais en pose un nouveau, et non des moindres !
En effet, lorsqu’on utilise le codage T1, pdflatex remplace dans les PDF les polices de la smala Computer Modern par des European Computer Modern, certes avec accents, mais qui sont au format type 3, et non type 1. Le type 3 donne des résultats vraiment hideux à l’écran. Il est donc nécessaire d’utiliser d’autres polices… Ainsi, depuis quelques mois existent les polices Latin Modern en version finale, et au format type 1[1], destinées à remplacer les Computer Modern tout en gardant la même apparence.
Dans ce paragraphe, je donne donc une recette qui devrait permettre d’éviter tout ennui lié aux polices.
Toujours utiliser le codage T1 : \\usepackage[T1]{fontenc}
Pour un look identique aux polices Computer Modern, utiliser systématiquement les polices Latin Modern, et donc charger le package lmodern
: \\usepackage{lmodern}
. Les autres packages de polices, comme palatino
fonctionnent très bien également (ils conduisent à l’inclusion dans les PDF de polices de type 1)
Les deux autres points ne sont pas directement liés aux polices, mais un petit rappel ne fait pas de mal…
Si possible, utiliser un éditeur qui sait travailler en UTF-8, et rédiger les fichiers dans ce format (cela évite les soucis liés aux « œ » par exemple) : \\usepackage[utf8]{inputenc}
Toujours charger Babel avec la bonne langue : \\usepackage[francais]{babel}
par exemple
On peut avoir envie de changer sélectivement certaines familles de polices (parmi romain (rm), sans sérifs (sf) et machine à écrire (tt)). Par exemple, j’aime bien Palatino pour le texte en romain, mais je n’apprécie pas que le package palatino
me mette du Courier en police sans sérifs (je préfère le Computer/Latin Modern Sans Serif)…
Tout simplement, il suffit de redéfinir les macros \mdefault
, \\sfdefault
et \\ttdefault
. Par exemple :
\enewcommand{\mdefault}{ppl} % texte romain en Palatino
\enewcommand{\\sfdefault}{pag} % texte sans sérifs en Avant Garde
\enewcommand{\\ttdefault}{lmvtt} % texte « machine » en Latin Modern Typewriter à espacement proportionnel
Les packages tout prêts du type lmodern
ou utopia
se contentent de définir trois lignes de ce type ! C’est donc aussi facile de le régler à la main, et on peut ainsi définir ce qu’on veut ! Il suffit de connaître les noms de polices à utiliser[2] :
lmr Latin Modern Roman
lmss Latin Modern Sans Serif
lmssq Latin Modern Sans Serif expansé
lmtt Latin Modern Typewriter
lmvtt Latin Modern Typewriter à espacement proportionnel
ptm Times
ppl Palatino
pnc New Century Schoolbook
pbk Bookman
phv Helvetica
pag Avant Garde
pcr Courier
pzc Zapf Chancery
put Utopia
bch Charter
À noter :
\\fontfamily{nom}\\selectfont
;[1] Elles sont également disponibles au format Open Type pour les utiliser directement sous Linux, Windows ou MacOS X.
[2] Ce sont les noms dans le système de sélection PSNFSS.
HTML5 valide ? © Christophe Jacquet. ✍ Contact. Mentions légales.