Movatterモバイル変換


[0]ホーム

URL:



Les fontes sous LaTeX pour les nuls (et les autres)

Vincent Zoonekynd

1998 -- juillet 2000


Résumé

Ce document explique comment utiliser LaTeX avec d'autres fontes que les sempiternelles Computer Modern. Le début s'efforce d'être compréhensible par tous, mais les manipulations plus compliquées exposées par la suite sont vivement déconseillées aux utilisateurs non avertis de LaTeX.

Je tiens à préciser que je ne comprends pas toujours ce dont je parle : ce document contient probablement des erreurs ou de mauvais conseils. Ne l'utilisez qu'avec un oeil critique et n'hésitez pas à me signaler ces problèmes.

Comme il s'agit en fait de la liste de mes divers essais d'utilisation de fontes avec LaTeX, ce document risque de paraître un peu brouillon.

De plus, ce document reste incomplet et je ne sais pas si j'aurai le temps de le compléter.


1 Introduction
1.1 Où trouver la dernière version de ce document ?
1.2 Quels sont les autres documents sur le sujet ?
1.3 Où trouver des fontes Métafont, PostScript ou TTF ?

2 Choses simples
2.1 Quelles sont les commandes de changement de fontes ?
2.2 Comment écrire plus grand ?
2.3 Comment changer de fontes pour tout le document ?
2.4 Où trouver les caractères textuels manquants ?
2.5 Comment avoir un symbole Euro ?
2.6 Comment avoir des « chiffres elzéviriens » ?
2.7 Où trouver les caractères mathématiques manquants ?
2.8 Comment avoir une fonte mathématique manuscrite ?
2.9 Comment avoir une fonte mathématique gothique ?
2.10 Comment avoir des lettres mathématiques avec une double barre ?
2.11 Comment avoir des symboles mathématiques en gras ?

3 Généralités
3.1 Vocabulaire
3.2 Quels sont tous ces fichiers ?
3.3 Comment passer de l'un de ces format de fichier à un autre ?
3.4 Où LaTeX va-t-il chercher tous ces fichiers ?
3.5 Quelle est la différence entreinputenc etfontenc ?
3.6 Comment taper les lettres accentuées « normalement » ?
3.7 Comment taper le oe normalement ?
3.8 Qu'est-ce que le codage ?
3.9 Quels sont les différents codages d'entrée ?
3.10 Quels sont les différents codages de fontes ?
3.11 Est-il vrai que le codageOT1 pose des problèmes de césure ?
3.12 Pourquoi les fontes ont-elles des noms aussi illisibles ?
3.13 Pourquoi y a-t-il plein de chiffres dans certains noms de fontes :ecrm1000.tfm ?

4 NFSS (New Font Selection Scheme)
4.1 Qu'est-ce que NFSS ?
4.2 Quelles sont les caractéristiques d'une fonte ?
4.3 Comment changer de fonte (commandes de « bas niveau ») ?
4.4 Comment avoir des petites capitales italiques ?
4.5 Comment utiliser ponctuellement une fonte ?
4.6 Comment utiliser ponctuellement une fonte (bis) ?
4.7 Quel est le dernier argument des commandes\DeclareFontFamily et\DeclareFontShape ?
4.8 Quelles autres choses peut-on mettre dans un fichier*.fd ?
4.9 Comment accéder à un caractère d'une fonte en connaissant juste son numéro ?
4.10 Comment changer la fonte par défaut du document ?
4.11 Comment utiliser plusieurs codages de fonte en même temps ?
4.12 Comment utiliser une fonte texte en mode mathématique ?
4.13 Comment utiliser une fonte texte comme si c'était une fonte mathématique ?
4.14 Comment utiliser une fonte texte comme fonte mathématique par défaut ? Comment modifier certains caractères mathématiques ?
4.15 Comment utiliser une fonte mathématique différente ?
4.16 Comment (et pourquoi) utiliser différentes versions mathématiques ?
4.17 Quelles sont les différentes dimensions présentes dans une fonte ? Comment les modifier ?

5 Au delà des caractères latins
5.1 Comment utiliser l'alphabet phonétique ?
5.2 Comment écrire des partitions musicales ?
5.3 Comment écrire quelques mots en russe ? Comment utiliser un caractère russe en mode mathématique ?
5.4 Comment écrire quelques mots en grec ancien ?
5.5 Pourquoi n'y a-t-il pas de béta interne ?
5.6 Comment écrire quelques mots en japonais ?
5.7 Comment écrire quelques mots en Chinois ? en Coréen ?
5.8 Comment inclure quelques mots dans une autre langue ?
5.9 Qu'est-ce qu'Unicode ? Comment utilise-t-on Omega ?

6 Métafont
6.1 Qu'est-ce que métafont ?
6.2 Comment utiliser Métafont ? Comment visualiser des fichiers Métafont ?
6.3 Comment réaliser un catalogue de fontes Métafont ?
6.4 Comment utiliser une fonte Métafont de manière ponctuelle dans un document LaTeX ?
6.5 Comment utiliser une fonte MF comme fonte par défaut dans un document LaTeX ?
6.6 Comment utiliser plusieures fontes MF comme fonte par défaut dans un document LaTeX ?
6.7 Comment peut-on modifier une fonte Métafont ?
6.8 Peut-on transformer une fonte Métafont en une fonte PostScript ?
6.9 Peut-on transformer une fonte Métafont en une fonte PostSCript de type 1 ?
6.10 Peut-on convertir une fonte Métafont en fonte True Type ? Peut-on utiliser les fontes Computer Modern avec d'autres logiciels que TeX ?

7 Fontes PostScript
7.1 Qu'est-ce que le PostScript ?
7.2 Qu'est-ce qu'une fonte PostScript ?
7.3 Comment créer soi-même une fonte PostScript de type 3 ?
7.4 Comment créer soi-même une fonte PostScript de type 1 ?
7.5 Comment avoir les contours d'une fonte de type 1 ?
7.6 Comment transformer une fonte de type 1 en une fonte de type 3 ?
7.7 Comment changer le codage d'une fonte PostScript ?
7.8 Comment mettre des commandes PostScript dans un fichier LaTeX ?
7.9 Comment visualiser une fonte PostScript ?
7.10 Comment réaliser un catalogue de fontes PostScript ?
7.11 Y a-t-il des versions PostScript des fontes Computer Modern ?
7.12 Comment dire à dvips quelles sont les fontes PostScript ?
7.13 Comment utiliser une fonte PostScript de manière ponctuelle dans un document LaTeX ?
7.14 Comment utiliser une fonte PostScript de manière ponctuelle dans un document LaTeX (en tenant compte du codage) ?
7.15 Comment utiliser plusieures fontes PostScript de manière ponctuelle dans un document LaTeX ?
7.16 Comment utiliser une fonte PostScript comme fonte par défaut dans un document LaTeX ?
7.17 Comment utiliser une fonte PostScript de manière ponctuelle dans un document LaTeX (vieille version de la même question --- à effacer) ?
7.18 Comment pencher une fonte PostScript ?
7.19 Comment élargir ou condenser une fonte PostSCript ?
7.20 Comment récupérer une fonte PostScript utilisée dans un fichier PDF ?
7.21 Comment récupérer une fonte PostScript utilisée dans un fichier PostScript ?

8 Fontes True Type (TTF)
8.1 Qu'est-ce qu'une fonte True Type ?
8.2 Comment créer une fonte True Type ? Comment modifier une fonte True Type existante ?
8.3 Comment visualiser une fonte True Type ?
8.4 Comment réaliser un catalogue de fontes True Type ?
8.5 Comment utiliser une fonte True Type de manière ponctuelle dans un document LaTeX ?
8.6 Comment utiliser une fonte True Type de manière ponctuelle dans un document LaTeX ?
8.7 Comment utiliser plusieures fontes True Type de manière ponctuelle dans un document LaTeX ?
8.8 Comment utiliser plusieures fontes True Type comme fontes par défaut dans un document LaTeX ?
8.9 Comment pencher une fonte True Type ?
8.10 Comment condenser ou élargir une fonte True Type ?
8.11 Comment avoir des petites capitales à l'aide d'une fonte TTF ?
8.12 Comment épaissir une fonte TTF ?
8.13 Comment automatiser les réponses à toutes les questions précédentes ?
8.14 Comment faire pour que LaTeX/xdvi/dvips soit capable de calculer les fontes bitmaps tout seul ?
8.15 Y a-t-il un moyen plus simple d'utiliser des fontes TrueType ? Est-il possible d'utiliser des fontes True Type avec pdfTeX ?
8.16 Comment obtenir les caractères manquants ?

9 Fontes virtuelles
9.1 Qu'est-ce qu'une fonte virtuelle ? Que fait-on avec ?
9.2 Y a-t-il un moyen SIMPLE d'utiliser des fontes virtuelles ?
9.3 Qu'est-ce que fontinst ?
9.4 Comment utilise-t-on fontinst avec des fontes Métafont ?
9.5 Comment utilise-t-on fontinst avec des fontes PostScript ?
9.6 Comment utilise-t-on fontinst avec des fontes True Type ?
9.7 Comment changer le codage d'une fonte ? Comment pencher une fonte ?
9.8 Exemples simples avec fontinst
9.9 Comment intervertir deux caractères dans une fonte ?
9.10 Comment aller chercher un caractère dans une autre fonte ?
9.11 Comment modifier les métriques d'un caractère ?
9.12 Quelles sont les dimensions d'une fonte ? Comment les changer ?
9.13 Comment ajouter un trait ?
9.14 Comment ajouter des instructions PostScript ?
9.15 Peut-on ajouter n'importe quelle instruction PostScript ?
9.16 Peut-on ajouter n'importe quelle instruction PostScript ?
9.17 Comment avoir des caractères gras quand il n'y en a pas ?
9.18 Comment ajouter un caractère ?
9.19 Comment ajouter une ligature ?
9.20 Comment avoir des ligatures ct et st ?
9.21 Comment changer l'espace entre deux caractères ?
9.22 Comment appliquer une même transformation à tous les caractères d'une fonte ? À toutes les majuscules ? À toutes les minuscules ?
9.23 Comment avoir les caractères manquants ?
9.24 Comment avoir une fonte soulignée ?
9.25 Comment avoir un j sans point quand il n'y en a pas ?
9.26 Peut-on manipuler des familles de fontes(plutôt que des fontes isolées) avec fontinst ?
9.27 Comment avoir une fonte grasse quand il n'y en a pas (sans fontes virtuelles) ?
9.28 Comment avoir une fonte grasse quand il n'y en a pas (avec des fontes virtuelles, premier essai, infructueux --- A EFFACER) ?
9.29 Comment avoir une fonte grasse quand il n'y en a pas (avec des fontes virtuelles --- A EFFACER) ?
9.30 Comment avoir une fonte « petites capitales » quand les caractères sont là ?
9.31 Comment avoir une fonte « petites capitales » quand les caractères ne sont pas là ?
9.32 Comment utiliservfinst ?
9.33 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (1) ?
9.34 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (2) ?
9.35 Comment avoir des majuscules mathématiques droites avec des fontes virtuelles ?
9.36 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (3) ?
9.37 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (3) ?

10 Divers
10.1 Effets graphiques divers
10.2 Divers (réponses sans questions et questions sans réponses à classer)

11 À FAIRE



1 Introduction

Les utilisateurs de « mauvais » traitements de texte commerciaux ont l'habitude de changer très souvent de fonte et d'en avoir un choix très vaste. Les choses sont différentes sous LaTeX : on donne essentiellement à l'ordinateur la structure logique d'un document (« voici un titre de chapitre », « voici un titre de sous-chapitre », etc.) plutôt que la manière de formatter les choses (« je veux du times gras 20 points, centré », « je veux de l'helvética 15 points, justifié à droite, suivi d'un filet horizontal »). La puissance de LaTeX réside dans la possibilité de définir une fois pour toutes comment traduire la structure du document en instructions typographiques et ainsi de séparer le travail de la forme (la typographie) et du fond (le contenu sémantique du texte que vous tapez). Nous nous intéresserons à un point particulier de cette transformation : le choix et l'utilisation des fontes.

1.1 Où trouver la dernière version de ce document ?

Probablement surma page Web. L'original est ensgml et est est convertit enhtml entexte et enpostScript (ces conversions ne sont pas toujours très satisfaisantes).

1.2 Quels sont les autres documents sur le sujet ?

1.3 Où trouver des fontes Métafont, PostScript ou TTF ?


2 Choses simples

2.1 Quelles sont les commandes de changement de fontes ?

Rappelons, c'est nécessaire, que les commandes LaTeX sont de deux types, les macros, telles que

et les environements, tels que
(Les macros « à la TeX », du genre{\toto #1} ou{#1 \toto #2} sont à proscrire, pour d'évidentes raisons pédagogiques.) En mode texte, il existe desmacros qui changent la fonte de leur argument,\textrm,\textit,\textsl,\textbf,\texttt,\textsc,\textsf,\emph et desenvironementshuge,LARGE,Large,large,footnotesize,small,tiny,rmfamily,sffamily,ttfamily,bfseries,mdseries,upshape,slshape,scshape,itshape,slshape,em.

En mode mathématique (dès que l'on parle de mathématique, je suppose que l'on utilise les extensionsamsmath etamssymb), il existe des macros\mathnormal,\mathit,\mathrm,\mathbf,\mathfrak,\mathsf,\mathsl,\mathcal,\mathbb, etc.\pmb,\bm (dans l'extensionbm, qui remplace désormais\boldsymbol)

Vous vous demandez peut-être quelle est la différence entre\mathit et\mathnormal. La commande\mathnormal correspond à la fonte généralement utilisée en mode mathématique, ie, une fonte italique avec des espacements un peu spéciaux : les lettres que l'on tape sont considérées comme des symboles mathématiques distincts et sont donc un peu plus espacés, en particulier, il n'y a pas de ligarure. Au contraire, la fonte\mathit est une fonte italique normale, dans laquelle les lettres ne sont pas isolées mais formentdans leur ensemble un symbole mathématique. On utilise généralement une fonte droite.

Dans certains castrès rares, on peut néanmoins utiliser de l'italique, avec un espacement normal.

Pour que tout le mode mathématique soit en gras, on peut utiliser (avant de passer en mode mathématique) la commande\mathversion{bold}. Pour revenir à une épaisseur normale, la commande est\mathversion{normal}. C'est pertinent dans les titres (i.e., quand vous redéfinissez vous-même des commandes du genre\chapter ou\section.

2.2 Comment écrire plus grand ?

Si vous voulez écrire plus grand pour faire des transparents, regardez les classes du genreseminar oufoiltex.

Si vous voulez écrire plus grand pour faire un poster, une affiche, vous pouvez utiliser l'extensiona0poster.

Si vous voulez écrire un document avec la classarticle oubook et des fontes plus grosses, vous pouvez utiliser les options « 14pt » ou « 17pt » ; elles ne sont pas définies par défaut, mais vous pouvez récupérer les fichiers correspondants sur leWeb.

Vous pouvez avoir envie d'écrire plus grand de manière ponctuelle. Par exemple, pour le titre du document, ou le titre des chapitres. Vous connaissez déjà les environementshuge,LARGE,Large,large,footnotesize,small ettiny. Vous avez peut-être envie de les utiliser ainsi (ne riez pas, l'exemple est authentique -- c'était même souligné).

C'est une très mauvaise idée, car le titre des chapitres est réutilisé en plein d'autres endroits : en haut des pages ou dans la table des manières. On peut alors penser modifier cet exemple de la manière suivante.
Bien que le résultat soit correct (c'est beaucoup trop grand par rapport à la taille du texte, le numéro du chapitre est trop petit et le soulignement est d'un assez mauvais goût --- rappelons que sa seule utilisation est le remplacement du gras ou de l'italique quand on n'en a pas, par exemple sur une machine à écrire --- mais c'est quand même mieux qu'avant), c'est toujours une mauvaise idée. Cela vous oblige àrépéter ces instructions typographiques à chaque fois. La meilleure solution consiste à garder le même marquage du texte, à l'aide de la commande\section, avec des arguments normaux et lisibles, mais en changeant le comportement typographique de cette commande. La première idée qui vous vient à l'esprit est probablement de redéfinir la commande\section.
C'est beaucoup mieux : le texte que l'on tape n'est plus encombré d'instructions typographiques (elles sont rejetées dans le préambule du document, i.e., à leur place). Mais ça ne marche pas : le commande\section est beaucoup plus compliquée que notre nouvelle commande : elle n'accepte pas d'argument facultatif ni de forme étoilée. On pourrait se dire que si on ne les utilise pas, ce n'est pas grave. Le problème, c'est que LaTeX lui-même utilise ces formes plus compliquées de la commande\section, par exemple dans la table des matières ou la bibliographie. Que faire si on a besoin d'une table des matières ou d'une bibliographie ? Je suggère de regarder dans le source de LaTeX (quelque part sur votre disque dur vous devriez trouver un gros fichierlatex.ltx : c'est lui) comment les sections sont définies. On constate que la commande\section n'est pas définie dedans (mais c'est quand même le premier endroit où regarder) : elle est définie dans la classearticle.cls.
Il va donc recopier ces lignes dans notre fichier et de les modifier.
Cette fois-ci, ça marche.

Passons au dernier point sur la taille des fontes. Vous voulez peut être des caractères encore plus grands que\huge : est-ce possible ? Avant de répondre par l'affirmative, remarquons que c'est souvent une mauvaise idée : on risquerait de se retrouver avec des caractères de taille comparables, presque égales, mais différentes. Cela nuirait à l'homogénéité du document. Voyons maintenant comment faire. En feuilletant la suite de ce document, vous avez peut-être constaté qu'il y avait une commande\fontsize. Essayons de l'utiliser.

On constate que cela ne marche pas, et d'ailleurs, LaTeX nous le dit.
Pour éviter le problème d'hétérogénéité mentionné plus haut, il n'accepte que certaines tailles, mentionnées dans le fichiert1cmr.fd. Une solution consiste à recopier ce fichier dans le répertoire courrant et à le modifier (mais cela suppose que l'on en comprend le contenu, nous y reviendrons donc plus loin en et). Une autre solution, beaucoup plus simple, consiste à utiliser des fontes que LaTeX nous autorise à utiliser à n'importe quelle taille, par exemple les fontes PostScript.

2.3 Comment changer de fontes pour tout le document ?

Dans cette partie, nous ne traiterons que des réponses simples à cette question : nous supposerons que tout le travail difficile a déjà été fait et se trouve réuni dans une extension (fichier*.sty). Il suffit alors de la charger à l'aide de la commande\usepackage. Contrairement à des idées répandues, LaTeX n'est pas limité aux fontes Computer Modern : il peut utiliser les mêmes fontes que ses concurrents, sous à peu près n'importe quel format (Métafont, PostScript, True Type, hbf, etc.). Il faut toutefois prendre garde à ce que les fontes que l'on choisit comportent tous les caractères dont on a besoin : d'une part, les caractères accentués, d'autre part (selon la nature du document à taper), tous les symboles mathématiques. C'est justement là que le bât blesse : il n'y a qu'une demi-douzaine de fontes comportant ces caractères. (Nous signalerons beaucoup plus loin qu'il est possible de contourner ce problème en créant plus ou moins automatiquement des fontes mathématiques qui se marrient bien à une fonte texte donnée).

Voici tout d'abord les fontes gratuites possibles.

Voici maintenant quelques alternatives commerciales.

Voici maintenant quelques solutions incomplètes, mais qui peuvent s'avérer acceptables (la liste n'est sûrement pas exhaustive).

Ce sont les seules solutions (toutes faites) qui vous permettent de taper du texte mathématique : nous allons maintenant voir d'autres changements de fontes possibles, mais il ne s'agit que de fontes texte. Si vous avez des mathématiques dans votre document, LaTeX utilisera les fontes Computer Modern (ou Euler, si on lui demande), qui risquent de choquer avec votre nouvelle fonte, car l'épaisseur des traits est différente, de même que la largeur ou la hauteur des caractères. Nous verrons beaucoup plus loin () comment résoudre ce problème.

2.4 Où trouver les caractères textuels manquants ?

Les symboles les plus courrants sont définis danstextcomp.sty.

\textcircled\textquotestraightbase\textquotestraightdblbase
\texttwelveudash\textthreequartersemdash\textleftarrow
\textrightarrow\textblank\textdollar
\textquotesingle\textasteriskcentered\textdblhyphen
\textfractionsolidus\textzerooldstyle\textoneoldstyle
\texttwooldstyle\textthreeoldstyle\textfouroldstyle
\textfiveoldstyle\textsixoldstyle\textsevenoldstyle
\texteightoldstyle\textnineoldstyle\textlangle
\textminus\textrangle\textmho
\textbigcircle\textohm\textlbrackdbl
\textrbrackdbl\textuparrow\textdownarrow
\textasciigrave\textborn\textdivorced
\textdied\textleaf\textmarried
\textmusicalnote\texttildelow\textdblhyphenchar
\textasciibreve\textasciicaron\textgravedbl
\textacutedbl\textdagger\textdaggerdbl
\textbardbl\textperthousand\textbullet
\textcelsius\textdollaroldstyle\textcentoldstyle
\textflorin\textcolonmonetary\textwon
\textnaira\textguarani\textpeso
\textlira\textrecipe\textinterrobang
\textinterrobangdown\textdong\texttrademark
\textpertenthousand\textpilcrow\textbaht
\textnumero\textdiscount\textestimated
\textopenbullet\textservicemark\textlquill
\textrquill\textcent\textsterling
\textcurrency\textyen\textbrokenbar
\textsection\textasciidieresis\textcopyright
\textordfeminine\textcopyleft\textlnot
\textcircledP\textregistered\textasciimacron
\textdegree\textpm\texttwosuperior
\textthreesuperior\textasciiacute\textmu
\textparagraph\textperiodcentered\textreferencemark
\textonesuperior\textordmasculine\textsurd
\textonequarter\textonehalf\textthreequarters
\texteuro\texttimes\textdiv
\textsterling\textdollar\textperthousand
On a par exemple un symbole euro (le plus laid que j'aie jamais vu) ; diverses flèches, étoiles ou ronds, utilisables dans des énumérations ; des chiffresoldstyle ; la lettre grecque mu droite ; les symboles registered, trademark, copyright, copyleft ; les symboles pourcent, pourmille, degré Celcius, etc.

Il y a d'autres fontes contenant des symboles. Voici les caractères de l'extensionwasy.

\HF\Square\astrosun\APLinv
\APLminus$\mho$$\Join$$\Box$
$\Diamond$$\leadsto$$\sqsubset$$\sqsupset$
$\lhd$$\unlhd$$\LHD$$\rhd$
$\unrhd$$\RHD$$\apprle$$\apprge$
$\wasypropto$$\invneg$$\ocircle$$\logof$
$\varint$$\iint$$\iiint$$\varoint$
$\oiint$

Voici les caractères de l'extensionpifont obtenus à l'aide de la commande\Pisymbol{pzd}{???}, où il faut remplacer??? par un nombre.

\Pisymbol{pzd}{33}\Pisymbol{pzd}{34}\Pisymbol{pzd}{35}\Pisymbol{pzd}{36}
\Pisymbol{pzd}{37}\Pisymbol{pzd}{38}\Pisymbol{pzd}{39}\Pisymbol{pzd}{40}
\Pisymbol{pzd}{41}\Pisymbol{pzd}{42}\Pisymbol{pzd}{43}\Pisymbol{pzd}{44}
\Pisymbol{pzd}{45}\Pisymbol{pzd}{46}\Pisymbol{pzd}{47}\Pisymbol{pzd}{48}
\Pisymbol{pzd}{49}\Pisymbol{pzd}{50}\Pisymbol{pzd}{51}\Pisymbol{pzd}{52}
\Pisymbol{pzd}{53}\Pisymbol{pzd}{54}\Pisymbol{pzd}{55}\Pisymbol{pzd}{56}
\Pisymbol{pzd}{57}\Pisymbol{pzd}{58}\Pisymbol{pzd}{59}\Pisymbol{pzd}{60}
\Pisymbol{pzd}{61}\Pisymbol{pzd}{62}\Pisymbol{pzd}{63}\Pisymbol{pzd}{64}
\Pisymbol{pzd}{65}\Pisymbol{pzd}{66}\Pisymbol{pzd}{67}\Pisymbol{pzd}{68}
\Pisymbol{pzd}{69}\Pisymbol{pzd}{70}\Pisymbol{pzd}{71}\Pisymbol{pzd}{72}
\Pisymbol{pzd}{73}\Pisymbol{pzd}{74}\Pisymbol{pzd}{75}\Pisymbol{pzd}{76}
\Pisymbol{pzd}{77}\Pisymbol{pzd}{78}\Pisymbol{pzd}{79}\Pisymbol{pzd}{80}
\Pisymbol{pzd}{81}\Pisymbol{pzd}{82}\Pisymbol{pzd}{83}\Pisymbol{pzd}{84}
\Pisymbol{pzd}{85}\Pisymbol{pzd}{86}\Pisymbol{pzd}{87}\Pisymbol{pzd}{88}
\Pisymbol{pzd}{89}\Pisymbol{pzd}{90}\Pisymbol{pzd}{91}\Pisymbol{pzd}{92}
\Pisymbol{pzd}{93}\Pisymbol{pzd}{94}\Pisymbol{pzd}{95}\Pisymbol{pzd}{96}
\Pisymbol{pzd}{97}\Pisymbol{pzd}{98}\Pisymbol{pzd}{99}\Pisymbol{pzd}{100}
\Pisymbol{pzd}{101}\Pisymbol{pzd}{102}\Pisymbol{pzd}{103}\Pisymbol{pzd}{104}
\Pisymbol{pzd}{105}\Pisymbol{pzd}{106}\Pisymbol{pzd}{107}\Pisymbol{pzd}{108}
\Pisymbol{pzd}{109}\Pisymbol{pzd}{110}\Pisymbol{pzd}{111}\Pisymbol{pzd}{112}
\Pisymbol{pzd}{113}\Pisymbol{pzd}{114}\Pisymbol{pzd}{115}\Pisymbol{pzd}{116}
\Pisymbol{pzd}{117}\Pisymbol{pzd}{118}\Pisymbol{pzd}{119}\Pisymbol{pzd}{120}
\Pisymbol{pzd}{121}\Pisymbol{pzd}{122}\Pisymbol{pzd}{123}\Pisymbol{pzd}{124}
\Pisymbol{pzd}{125}\Pisymbol{pzd}{126}\Pisymbol{pzd}{161}\Pisymbol{pzd}{162}
\Pisymbol{pzd}{163}\Pisymbol{pzd}{164}\Pisymbol{pzd}{165}\Pisymbol{pzd}{166}
\Pisymbol{pzd}{167}\Pisymbol{pzd}{168}\Pisymbol{pzd}{169}\Pisymbol{pzd}{170}
\Pisymbol{pzd}{171}\Pisymbol{pzd}{172}\Pisymbol{pzd}{173}\Pisymbol{pzd}{174}
\Pisymbol{pzd}{175}\Pisymbol{pzd}{176}\Pisymbol{pzd}{177}\Pisymbol{pzd}{178}
\Pisymbol{pzd}{179}\Pisymbol{pzd}{180}\Pisymbol{pzd}{181}\Pisymbol{pzd}{182}
\Pisymbol{pzd}{183}\Pisymbol{pzd}{184}\Pisymbol{pzd}{185}\Pisymbol{pzd}{186}
\Pisymbol{pzd}{187}\Pisymbol{pzd}{188}\Pisymbol{pzd}{189}\Pisymbol{pzd}{190}
\Pisymbol{pzd}{191}\Pisymbol{pzd}{192}\Pisymbol{pzd}{193}\Pisymbol{pzd}{194}
\Pisymbol{pzd}{195}\Pisymbol{pzd}{196}\Pisymbol{pzd}{197}\Pisymbol{pzd}{198}
\Pisymbol{pzd}{199}\Pisymbol{pzd}{200}\Pisymbol{pzd}{201}\Pisymbol{pzd}{202}
\Pisymbol{pzd}{203}\Pisymbol{pzd}{204}\Pisymbol{pzd}{205}\Pisymbol{pzd}{206}
\Pisymbol{pzd}{207}\Pisymbol{pzd}{208}\Pisymbol{pzd}{209}\Pisymbol{pzd}{210}
\Pisymbol{pzd}{211}\Pisymbol{pzd}{212}\Pisymbol{pzd}{213}\Pisymbol{pzd}{214}
\Pisymbol{pzd}{215}\Pisymbol{pzd}{216}\Pisymbol{pzd}{217}\Pisymbol{pzd}{218}
\Pisymbol{pzd}{219}\Pisymbol{pzd}{220}\Pisymbol{pzd}{221}\Pisymbol{pzd}{222}
\Pisymbol{pzd}{223}\Pisymbol{pzd}{224}\Pisymbol{pzd}{225}\Pisymbol{pzd}{226}
\Pisymbol{pzd}{227}\Pisymbol{pzd}{228}\Pisymbol{pzd}{229}\Pisymbol{pzd}{230}
\Pisymbol{pzd}{231}\Pisymbol{pzd}{232}\Pisymbol{pzd}{233}\Pisymbol{pzd}{234}
\Pisymbol{pzd}{235}\Pisymbol{pzd}{236}\Pisymbol{pzd}{237}\Pisymbol{pzd}{238}
\Pisymbol{pzd}{239}\Pisymbol{pzd}{240}\Pisymbol{pzd}{241}\Pisymbol{pzd}{242}
\Pisymbol{pzd}{243}\Pisymbol{pzd}{244}\Pisymbol{pzd}{245}\Pisymbol{pzd}{246}
\Pisymbol{pzd}{247}\Pisymbol{pzd}{248}\Pisymbol{pzd}{249}\Pisymbol{pzd}{250}
\Pisymbol{pzd}{251}\Pisymbol{pzd}{252}\Pisymbol{pzd}{253}\Pisymbol{pzd}{254}
Voici les caractères de l'extensionpifont obtenus à l'aide de la commande\Pisymbol{psy}{???}, où il faut remplacer??? par un nombre.
\Pisymbol{psy}{33}\Pisymbol{psy}{34}\Pisymbol{psy}{35}\Pisymbol{psy}{36}
\Pisymbol{psy}{37}\Pisymbol{psy}{38}\Pisymbol{psy}{39}\Pisymbol{psy}{40}
\Pisymbol{psy}{41}\Pisymbol{psy}{42}\Pisymbol{psy}{43}\Pisymbol{psy}{44}
\Pisymbol{psy}{45}\Pisymbol{psy}{46}\Pisymbol{psy}{47}\Pisymbol{psy}{48}
\Pisymbol{psy}{49}\Pisymbol{psy}{50}\Pisymbol{psy}{51}\Pisymbol{psy}{52}
\Pisymbol{psy}{53}\Pisymbol{psy}{54}\Pisymbol{psy}{55}\Pisymbol{psy}{56}
\Pisymbol{psy}{57}\Pisymbol{psy}{58}\Pisymbol{psy}{59}\Pisymbol{psy}{60}
\Pisymbol{psy}{61}\Pisymbol{psy}{62}\Pisymbol{psy}{63}\Pisymbol{psy}{64}
\Pisymbol{psy}{65}\Pisymbol{psy}{66}\Pisymbol{psy}{67}\Pisymbol{psy}{68}
\Pisymbol{psy}{69}\Pisymbol{psy}{70}\Pisymbol{psy}{71}\Pisymbol{psy}{72}
\Pisymbol{psy}{73}\Pisymbol{psy}{74}\Pisymbol{psy}{75}\Pisymbol{psy}{76}
\Pisymbol{psy}{77}\Pisymbol{psy}{78}\Pisymbol{psy}{79}\Pisymbol{psy}{80}
\Pisymbol{psy}{81}\Pisymbol{psy}{82}\Pisymbol{psy}{83}\Pisymbol{psy}{84}
\Pisymbol{psy}{85}\Pisymbol{psy}{86}\Pisymbol{psy}{87}\Pisymbol{psy}{88}
\Pisymbol{psy}{89}\Pisymbol{psy}{90}\Pisymbol{psy}{91}\Pisymbol{psy}{92}
\Pisymbol{psy}{93}\Pisymbol{psy}{94}\Pisymbol{psy}{95}\Pisymbol{psy}{96}
\Pisymbol{psy}{97}\Pisymbol{psy}{98}\Pisymbol{psy}{99}\Pisymbol{psy}{100}
\Pisymbol{psy}{101}\Pisymbol{psy}{102}\Pisymbol{psy}{103}\Pisymbol{psy}{104}
\Pisymbol{psy}{105}\Pisymbol{psy}{106}\Pisymbol{psy}{107}\Pisymbol{psy}{108}
\Pisymbol{psy}{109}\Pisymbol{psy}{110}\Pisymbol{psy}{111}\Pisymbol{psy}{112}
\Pisymbol{psy}{113}\Pisymbol{psy}{114}\Pisymbol{psy}{115}\Pisymbol{psy}{116}
\Pisymbol{psy}{117}\Pisymbol{psy}{118}\Pisymbol{psy}{119}\Pisymbol{psy}{120}
\Pisymbol{psy}{121}\Pisymbol{psy}{122}\Pisymbol{psy}{123}\Pisymbol{psy}{124}
\Pisymbol{psy}{125}\Pisymbol{psy}{126}\Pisymbol{psy}{161}\Pisymbol{psy}{162}
\Pisymbol{psy}{163}\Pisymbol{psy}{164}\Pisymbol{psy}{165}\Pisymbol{psy}{166}
\Pisymbol{psy}{167}\Pisymbol{psy}{168}\Pisymbol{psy}{169}\Pisymbol{psy}{170}
\Pisymbol{psy}{171}\Pisymbol{psy}{172}\Pisymbol{psy}{173}\Pisymbol{psy}{174}
\Pisymbol{psy}{175}\Pisymbol{psy}{176}\Pisymbol{psy}{177}\Pisymbol{psy}{178}
\Pisymbol{psy}{179}\Pisymbol{psy}{180}\Pisymbol{psy}{181}\Pisymbol{psy}{182}
\Pisymbol{psy}{183}\Pisymbol{psy}{184}\Pisymbol{psy}{185}\Pisymbol{psy}{186}
\Pisymbol{psy}{187}\Pisymbol{psy}{188}\Pisymbol{psy}{189}\Pisymbol{psy}{190}
\Pisymbol{psy}{191}\Pisymbol{psy}{192}\Pisymbol{psy}{193}\Pisymbol{psy}{194}
\Pisymbol{psy}{195}\Pisymbol{psy}{196}\Pisymbol{psy}{197}\Pisymbol{psy}{198}
\Pisymbol{psy}{199}\Pisymbol{psy}{200}\Pisymbol{psy}{201}\Pisymbol{psy}{202}
\Pisymbol{psy}{203}\Pisymbol{psy}{204}\Pisymbol{psy}{205}\Pisymbol{psy}{206}
\Pisymbol{psy}{207}\Pisymbol{psy}{208}\Pisymbol{psy}{209}\Pisymbol{psy}{210}
\Pisymbol{psy}{211}\Pisymbol{psy}{212}\Pisymbol{psy}{213}\Pisymbol{psy}{214}
\Pisymbol{psy}{215}\Pisymbol{psy}{216}\Pisymbol{psy}{217}\Pisymbol{psy}{218}
\Pisymbol{psy}{219}\Pisymbol{psy}{220}\Pisymbol{psy}{221}\Pisymbol{psy}{222}
\Pisymbol{psy}{223}\Pisymbol{psy}{224}\Pisymbol{psy}{225}\Pisymbol{psy}{226}
\Pisymbol{psy}{227}\Pisymbol{psy}{228}\Pisymbol{psy}{229}\Pisymbol{psy}{230}
\Pisymbol{psy}{231}\Pisymbol{psy}{232}\Pisymbol{psy}{233}\Pisymbol{psy}{234}
\Pisymbol{psy}{235}\Pisymbol{psy}{236}\Pisymbol{psy}{237}\Pisymbol{psy}{238}
\Pisymbol{psy}{239}\Pisymbol{psy}{240}\Pisymbol{psy}{241}\Pisymbol{psy}{242}
\Pisymbol{psy}{243}\Pisymbol{psy}{244}\Pisymbol{psy}{245}\Pisymbol{psy}{246}
\Pisymbol{psy}{247}\Pisymbol{psy}{248}\Pisymbol{psy}{249}\Pisymbol{psy}{250}
\Pisymbol{psy}{251}\Pisymbol{psy}{252}\Pisymbol{psy}{253}\Pisymbol{psy}{254}

Il y a encore d'autres symboles dansmarvosym.

\Stopsign\Beam\Bearing
\Loosebearing\Fixedbearing\Lefttorque
\Righttorque\Force\Lineload
\Snowflake\Kross\Circles
\MVZero\MVOne\MVTwo
\MVThree\MVFour\MVFive
\MVSix\MVSeven\MVEight
\MVNine\Corresponds\MVAt
\Pickup\Letter\CEsign
\Lightning\FHBOlogo\Mobilefone
\Industry\Coffeecup\Yingyang
\Vectorarrowhigh\Rightscissors\Kutline
\Leftscissors\Telefon\Clocklogo
\Checkedbox\Crossedbox\Pointinghand
\Writinghand\EURhv\EURcr
\EURtm\FHBOLOGO\Info
\Football\Vectorarrow\Cutright
\Cutline\Cutleft\fax
\FAX\Faxmachine\Cross
\Celtcross\Ankh\Heart
\Flatsteel\Squarepipe\Rectpipe
\Lsteel\TTsteel\Circpipe
\Tsteel\EUR\Frowny
\Smiley\Bicycle\Sun
\Moon\Mercury\Venus
\Mars\Jupiter\Saturn
\Uranus\Neptune\Pluto
\Womanside\Manside\Womanfront
\Manfront\Aries\Taurus
\Gemini\Cancer\Leo
\Virgo\Libra\Scorpio
\Sagittarius\Capricorn\Aquarius
\Pisces\MVA\MVp
\Squaredot\Bat\Womanface
\MartinVogel

2.5 Comment avoir un symbole Euro ?

Il y a un nombre incroyable de fontes comportant des symboles euro et un nombre encore plus grand d'extensions pour les utiliser. Je choisis (de manière tout à fait arbitraire) l'extensioneurofont, qui permet d'utiliser le symbole euro provenant de diverses fontes.

Si on ne précise rien, il essaye d'utiliser le symbole Euro dans les fontes qu'il trouve, généralement Text Companion.

Il est possible d'utiliser les fontes Marvosym (avec les fontes PostScript standard), si elles sont là.
Il est possible d'utilisereurosym.
Il est possible d'utiliser les fontes d'Adobe, si elles sont là. Si elles ne sont pas déjà installées, on peut procéder comme suit. Commencer par récupérer le fichiereurofont, quelque part sur le Web. Le décompresser,
Renommer les fontes
Dire à dvips de lire le contenu du fichierzpeu.map, en modifiant votre~/.dvipsrc
Il est aussi possible d'utiliser le caractère dechina2e, à l'aide de la commande\chinaeeuro.
Revoici une liste des symboles disponibles, à l'aide des commandes\chinaeeuro,\cmeuro,\sanseuro,\serifeuro,\monoeuro,\zpeureuro,\zpeusseuro,\zpeutteuro,\marvosymsanseuro et\marvosymserifeuro.

2.6 Comment avoir des « chiffres elzéviriens » ?

(Les anglais parlent deoldstyle numbers.) Pour une utilisation ponctuelle, on peut recourrit à la commande\oldstylenums. L'extensioneco.sty répond permet de les utiliser par défaut (pour les fontes Computer Modern, sous le codage T1).

2.7 Où trouver les caractères mathématiques manquants ?

La plupart des symboles mathématiques dont on a besoin sont dans les extensionsamssymb etstmaryrd.

$\boxdot$$\boxplus$$\boxtimes$
$\square$$\blacksquare$$\centerdot$
$\lozenge$$\blacklozenge$$\circlearrowright$
$\circlearrowleft$$\rightleftharpoons$$\leftrightharpoons$
$\boxminus$$\Vdash$$\Vvdash$
$\vDash$$\twoheadrightarrow$$\twoheadleftarrow$
$\leftleftarrows$$\rightrightarrows$$\upuparrows$
$\downdownarrows$$\upharpoonright$$\downharpoonright$
$\upharpoonleft$$\downharpoonleft$$\rightarrowtail$
$\leftarrowtail$$\leftrightarrows$$\rightleftarrows$
$\Lsh$$\Rsh$$\rightsquigarrow$
$\leftrightsquigarrow$$\looparrowleft$$\looparrowright$
$\circeq$$\succsim$$\gtrsim$
$\gtrapprox$$\multimap$$\therefore$
$\because$$\doteqdot$$\triangleq$
$\precsim$$\lesssim$$\lessapprox$
$\eqslantless$$\eqslantgtr$$\curlyeqprec$
$\curlyeqsucc$$\preccurlyeq$$\leqq$
$\leqslant$$\lessgtr$$\backprime$
$\risingdotseq$$\fallingdotseq$$\succcurlyeq$
$\geqq$$\geqslant$$\gtrless$
$\sqsubset$$\sqsupset$$\vartriangleright$
$\vartriangleleft$$\trianglerighteq$$\trianglelefteq$
$\bigstar$$\between$$\blacktriangledown$
$\blacktriangleright$$\blacktriangleleft$$\vartriangle$
$\blacktriangle$$\triangledown$$\eqcirc$
$\lesseqgtr$$\gtreqless$$\lesseqqgtr$
$\gtreqqless$$\Rrightarrow$$\Lleftarrow$
$\veebar$$\barwedge$$\doublebarwedge$
$\angle$$\measuredangle$$\sphericalangle$
$\varpropto$$\smallsmile$$\smallfrown$
$\Subset$$\Supset$$\Cup$
$\Cap$$\curlywedge$$\curlyvee$
$\leftthreetimes$$\rightthreetimes$$\subseteqq$
$\supseteqq$$\bumpeq$$\Bumpeq$
$\lll$$\ggg$$\circledS$
$\pitchfork$$\dotplus$$\backsim$
$\backsimeq$$\complement$$\intercal$
$\circledcirc$$\circledast$$\circleddash$
$\lvertneqq$$\gvertneqq$$\nleq$
$\ngeq$$\nless$$\ngtr$
$\nprec$$\nsucc$$\lneqq$
$\gneqq$$\nleqslant$$\ngeqslant$
$\lneq$$\gneq$$\npreceq$
$\nsucceq$$\precnsim$$\succnsim$
$\lnsim$$\gnsim$$\nleqq$
$\ngeqq$$\precneqq$$\succneqq$
$\precnapprox$$\succnapprox$$\lnapprox$
$\gnapprox$$\nsim$$\ncong$
$\diagup$$\diagdown$$\varsubsetneq$
$\varsupsetneq$$\nsubseteqq$$\nsupseteqq$
$\subsetneqq$$\supsetneqq$$\varsubsetneqq$
$\varsupsetneqq$$\subsetneq$$\supsetneq$
$\nsubseteq$$\nsupseteq$$\nparallel$
$\nmid$$\nshortmid$$\nshortparallel$
$\nvdash$$\nVdash$$\nvDash$
$\nVDash$$\ntrianglerighteq$$\ntrianglelefteq$
$\ntriangleleft$$\ntriangleright$$\nleftarrow$
$\nrightarrow$$\nLeftarrow$$\nRightarrow$
$\nLeftrightarrow$$\nleftrightarrow$$\divideontimes$
$\varnothing$$\nexists$$\Finv$
$\Game$$\mho$$\eth$
$\eqsim$$\beth$$\gimel$
$\daleth$$\lessdot$$\gtrdot$
$\ltimes$$\rtimes$$\shortmid$
$\shortparallel$$\smallsetminus$$\thicksim$
$\thickapprox$$\approxeq$$\succapprox$
$\precapprox$$\curvearrowleft$$\curvearrowright$
$\digamma$$\varkappa$$\Bbbk$
$\hslash$$\hbar$$\backepsilon$
$\shortleftarrow$$\shortrightarrow$$\shortuparrow$
$\shortdownarrow$$\Yup$$\Ydown$
$\Yleft$$\Yright$$\varcurlyvee$
$\varcurlywedge$$\minuso$$\baro$
$\sslash$$\bbslash$$\moo$
$\varotimes$$\varoast$$\varobar$
$\varodot$$\varoslash$$\varobslash$
$\varocircle$$\varoplus$$\varominus$
$\boxast$$\boxbar$$\boxdot$
$\boxslash$$\boxbslash$$\boxcircle$
$\boxbox$$\boxempty$$\lightning$
$\merge$$\vartimes$$\fatsemi$
$\sswarrow$$\ssearrow$$\curlywedgeuparrow$
$\curlywedgedownarrow$$\fatslash$$\fatbslash$
$\lbag$$\rbag$$\varbigcirc$
$\leftrightarroweq$$\curlyveedownarrow$$\curlyveeuparrow$
$\nnwarrow$$\nnearrow$$\leftslice$
$\rightslice$$\varolessthan$$\varogreaterthan$
$\varovee$$\varowedge$$\talloblong$
$\interleave$$\obar$$\obslash$
$\olessthan$$\ogreaterthan$$\ovee$
$\owedge$$\oblong$$\inplus$
$\niplus$$\nplus$$\subsetplus$
$\supsetplus$$\subsetpluseq$$\supsetpluseq$
$\Lbag$$\Rbag$$\llparenthesis$
$\rrparenthesis$$\binampersand$$\bindnasrepma$
$\trianglelefteqslant$$\trianglerighteqslant$$\ntrianglelefteqslant$
$\ntrianglerighteqslant$$\llfloor$$\rrfloor$
$\llceil$$\rrceil$$\arrownot$
$\Arrownot$$\Mapstochar$$\mapsfromchar$
$\Mapsfromchar$$\leftrightarrowtriangle$$\leftarrowtriangle$
$\rightarrowtriangle$$\bigtriangledown$$\bigtriangleup$
$\bigcurlyvee$$\bigcurlywedge$$\bigsqcap$
$\bigbox$$\bigparallel$$\biginterleave$
$\bignplus$$\llbracket$$\rrbracket$
$\varcopyright$i$\longarrownot$$\Longarrownot$
$\Mapsto$$\mapsfrom$$\Mapsfrom$
$\Longmapsto$$\longmapsfrom$$\Longmapsfrom$
Il y a une version PostScript de ce catalogue surCTAN. Voir aussiqsymbols.ps.

L'extensionyhmath définit des commandes\widetilde,\widehat,\widetriangle,\wideparen et\widering.

$\widering{A\cap B}$$\widetilde{A+B}$$\widehat{A+B}$
$\widetriangle{A+B}$$\wideparen{A+B}$

2.8 Comment avoir une fonte mathématique manuscrite ?

Plusieures possibilités s'offrent à vous.

Si vous voulez aussi des lettres minuscules, vous pouvez essayer de trouver une fonte (texte) manuscrite qui se marrie bien avec les fontes que vous utilisez, mais c'est plus compliqué à installer (voir). Voici un exemple avec la fontehershey (qui est beaucoup trop épaisse par rapport aux Computer Modern, dont les minuscules sont un peu trop petites et les majuscules trop grandes).

2.9 Comment avoir une fonte mathématique gothique ?

Pour les fontes gothiques, il suffit d'utiliser la commande\mathfrak avec l'extensionamssymb oueuler. On remarquera qu'on peut avoir à la fois du gothique maigre et du gothique gras.

Voici la liste des caractères. On s'apperçoit en particulier que le drôle de signe utilisé pour désigner le groupe symétrique n'est qu'un S majuscule gothique.

Un problème demeure : il s'agit de fontes mathématiques, il n'y a donc pas d'accents. Que se passe-t-il si, par exemple, on veut appelerGroupoïdes, en gothique gras (et avec un tréma sur le i), la 2-catégorie des groupoïdes ? Une solution consiste à trouver une fonte gothiquetextuelle, à l'installer comme nous le verrons plus loin (,) et à l'utiliser en mode mathématique à l'aide de la commande\text d'amsmath.

2.10 Comment avoir des lettres mathématiques avec une double barre ?

On parle souvent de « gras du tableau noir » pour désigner ces lettres : c'était la manière de retranscrire au tableau la fonte grasse utilisée dans les livres.

Vous pouvez trouver un fichier comparant ces fontes surCTAN.

2.11 Comment avoir des symboles mathématiques en gras ?

La commande\bm, dans l'extensionbm, met son argument en gras. (Cette commande remplace la commande\boldsymbol d'amsmath.)

On peut aussi vouloir quetout ce qui est en mode mathématique soit en gras. La commande\mathversion (voir) permet de choisir entre plusieurs ensembles de fontes mathématiques : par défaut, il y juste le maigre (normal) et le gras (bold). C'est juste pertinent dans les titres. Il faut etre conscient que cela ne permet plus de faire la différence entre une quantité mathématique notée en maigre (par exemple, un réel) et une quantité mathématique notée par la même lettre, mais en gras (par exemple, un vecteur).

Une autre idée (moins bonne) serait d'utiliser la commande\everymath qui permet d'exécuter des commandes à chaque fois que l'on passe en mode mathématique. L'un des problème, c'est que la commande pour passer en gras en mode mathématique,\mathversion{bold}, ne s'utilise pas en mode mathématique. Une utilisation plus correcte de la commande\everymath consiste à changer la couleur du texte mathématique.


3 Généralités

3.1 Vocabulaire

Bitmap (fonte)

C'est une fonte dans laquelle les caractères sont décrits par des points, des pixels. À une taille assez basse, c'est très correct, mais si on tente de grossir les caractère, les pixels deviennent visibles.

En fait, TeX utilise des fontes Bitmap, mais si on demande une fonte à une certaine taille, il va recréer les fichiers bitmaps pour cette taille, si bien que l'on ne voit jamais les pixels.

Codage d'une fonte

Une fonte est un tableau de caractères. Le codage est la donnée de l'emplacement des caractères dans le tableau. On ne confondra pas avec la notion de codage d'entrée, qui est le codage dans lequel le texte a été tapé (latin1 sur une machine Unix, applemac sur un Mac) et qui n'a rien à voir avec les fontes.

dpi

Abréviation anglaise de « dots per inch », ie, « points par pouce ». C'est la résolution d'une fonte bitmap ou d'une imprimante. Ainsi, TeX a besoin de connaître la résolution de l'imprimante avant de transformer les fontes Métafont en fichiers bitmaps.

Glyphe

Dessin d'un caractère

Gris

Quand on regarde une page imprimée de loin, de manière à ne plus pouvoir distinguer les caractères individuels, la page semble grise. Si les caractères utilisés appartiennent tous à la même fonte et si cette fonte est homogène, ce gris semblera uniforme. La profondeur de ce gris s'appelle justement le gris de la fonte. Quand on mélange plusieures fontes (en particulier une fonte texte et une fonte mathématique), il faut prendre garde à ce que ces fontes aient le même gris, de manière que la page reste uniforme. Le gris dépend, entre autres, de la taille des caractères et de l'épaisseur des traits.

Jeu de caractères

C'est un ensemble de caractères, chacun étant identifié par son nom (par exempleLATIN LETTER A), indépendemment de tout codage.

Crénage (kerning)

Les caractères ne sont pas juxtaposés les uns aux autres en ne tenant compte que de la taille des caractères : selon la forme des lettres, il peut être nécessaire de rapprocher certaines lettres. C'est le cas par exemple d'un A suivi d'un V.

Ligature

Quand deux caractères sont proches, on choisit parfois de les dessiner un peu différemment : c'est par exemple le cas duf et dui, le point se mélangeant à la boucle. Les fontes True Type comportent souvent les ligaturesfi etfl.

Métriques

Une fonte ne contient pas que le dessin des caractères, mais aussi leur taille (hauteur, largeur, profondeur). On pourrait croire que cette information est supperflue, que l'on peut la retrouver en prenant juste la taille du dessin des caractères, mais il n'en est rien. Par exemple, la largeur d'un caractère italique est inférieure à celle du dessin de ce caractère.

Les métriques contiennent aussi d'autres informations, comme le crénage.

Multimaster

Les fontes Métapost utilisées par LaTeX changent selon la taille, de manière à être homogènes (si on se contentait de les grossir, les traits deviendraient plus épais ou plus fins, ce qui n'est pas souhaitable) et plus lisibles (les caractères de petite taille sont relativement plus larges) ; voir. C'est ce que l'on appelle en anglais lametaness d'une fonte : à partir d'un seul fichier on peut créer toute une famille de fontes, simplement en changeant certains paramètres.

Les fontes PostScript ne permettent pas vraiment ce genre de chose (avec des fontes de type 3, c'est toutefois possible). C'est là qu'interviennent les fontesmultimaster : c'est un nouveau standard qui permet de définir en une seule fois tout une famille de fontes, qui dépendra de plusieurs paramètres (par exemple la taille, la graisse, l'inclinaison, et pourquoi pas la taille des empatements).

Il semble que les fontes Multimaster aient été un échec commercial.

Outline

C'est une fonte vectorielle dans laquelle les caractères sont définis par un contour : les caractères ne sont pas définis par des instructions « tracer une ligne, une courbe », mais simplement par « colorier l'intérieur d'une courbe fermée ». Les fontes Outline sont des fontes vectorielles, mais les fontes vectorielles ne sont pas toutes des fontes outline (c'est le cas des fontes MétaFont). Elles permettent divers effets graphiques : on peut ne tracer que le contour des caractères (sans colorier l'intérieur), on peut aussi utiliser la commande PostScriptclip sur ce contour.

Sans Sérif

Se dit d'une fonte dont les glyphes n'ont pas d'empatement. Dans la figure suivante, la lettre de droite est sans sérif, contrairement à celle de gauche.

On considère généralement que les fontes Sans Sérif sont très belles dans les titres, mais on constate qu'elles sont plus pénibles à lire.

Vectorielle (fonte)

C'est une fonte dans laquelle les caractères sont décrits non pas par des pixels, mais par des instrucations graphiques (tracer une ligne, une courbe, colorier l'intérieur d'une courbe fermée, etc.) On peut donc afficher une telle fonte en n'importe quelle taille sans problème de pixellisation, contrairement aux fontes bitmap.

3.2 Quels sont tous ces fichiers ?

*.afm

Métriques d'une fonte PostScript (c'est un fichier texte) Voici un extrait d'un tel fichier : c'est compréhensible à peu près directement. Après l'en-tête, qui contient des paramètres relatifs à la fonte dans son ensemble (le codage, la « bounding box » (une boite dans laquelle on peut mettre n'importe quel glyphe de la fonte, utilisée lors de la rastérisation), l'angle des caractères italiques, la hauteur des majuscules, des minuscules, la profondeur à laquelle les caractères qui s'étendent en dessous de la ligne de base (tels que y, p, q, g ou j) s'enfoncent, etc.), viennent les caractèrtes eux-même : leur numéro, leur largeur, leur nom, leur « bounding box » (une boite dans laquelle on peut mettre le glyphe correspondant). On remarquera que certains caractères n'ont pas de numéro, mais juste un nom : ils sont absents du codage ; si on veut les utiliser, il faut donc de changer le codage de la fonte. Le fichier s'achève sur le crénage (kerning) et les caractères obtenus en combinant plusieurs autres caractères (généralement, une lettre et un accent).

*.def

Ce sont des fichiers décrivant des codages d'entrée (pas le codage d'une fonte, mais le codage d'un texte) :ascii,latin1,applemac,ansinew,cp850, etc. Un tel fichier contient des lignes du genre

Par exemple, la dernière ligne signifie que le caractère de code 195 est un A tilde (Ã). Cela permet donc de taper « Ã » au lieu de «\~A » : c'est beaucoup plus lisible.

Ces fichiers sont lus par LaTeX, par exemple quand on lui dit

Mais on peut aussi vouloir utiliser simultanément plusieurs codage d'entrée : on rencontre ce problème si on doit compiler ensemble (comme différentes parties d'un même document) des fichiers de provenance diverses (machine Unix, PC sous Ouindaube, Mac sous MacOS). Il suffit de chargerinputenc avec toutes les options voulues et on peut dès lors passer d'un codage à l'autre à l'aide de la commande\inputencoding Par exemple, pour passer au codagelatin1, on dira\inputencoding{latin1}.

*enc.def

Codage d'une fonte (i.e., correspondance entre le nom des caractères et leur position dans la fonte), sous une forme compréhensible par LaTeX. Voici un extrait du fichiert1enc.def.

Ce fichier est structuré ainsi : on commence par dire à quel endroit de la fonte (vue comme un tableau de glyphes, indexé par des nombres) se trouvent les accents ; viennent ensuite des commandes pour créer les lettrres accentuées si elles ne sont pas déjà présentes dans le fonte ; puis quelques symboles ; puis les lettres accentuées (ici, Ç et ç) qui sont présentes dans la fonte.

*.enc

Fichier décrivant le codage d'une fonte (utilisé pardvips). Il s'agit d'un fichier PostScript qui contient la liste des caractères dans une fonte, dans l'ordre. Voici un extrait du fichiercork.enc.

On utilise la variable ainsi créée (ici,CorkEncoding) par exemple dans le fichierpsfonts.map outtfonts.map.

*.etx

Fichier décrivant un codage (utilisé parfontinst, voir). On trouve essentiellement deux types de fichiers. Tout d'abord, les normaux, par exemple,OT1.etx, dont voici un extrait.

Le fichier commence par définir les commandes\lc,\uc,\lctop,\uctop,\lclig,\uclig,\digit, qui seront utilisées lors de la définition du codage. Pour modifier l'apparence de la fonte (avoir des vieux chiffres, des petites capitales) il suffit de définir préalablement ces commandes : nous y reviendrons. Le fichier définit ensuite les dimensions suivantes :xheight,interword,capheight,ascender,acccapheight,descender,maxheight,maxdepth,digitwidth,capstem,baselineskip. Ensuite, il définit les dimensions que LaTeX connaîtra (\fontdimen). Enfin, il définit les caractères présents dans la fonte. Les autres fichiers correspondent à desmodifications de fichiers*.etx « normaux ». Extérieurement, le codage sera le même qu'avec les fichiers normaux, mais les caractères seront différents. Par exemple, voici le fichierOT19.etx, qui remplace les chiffres par des « vieux chiffres ». Cela suppose que ces vieux chiffres sont présents, avec les nomsoneoldstyle,twooldstyle, etc., commne dans les fontes PostScript « expert ».
Voici un autre exemple, les petites capitales,OT1c.etx : ici encore, on suppose que les petites capitales sont présentes dans la fontes, sous les nomsAsmall,Bsmall, etc.
En résumé, les fichiers*.etx permettent de définir un codage en précisant où (dans la fonte initiale, vue juste comme une correspondance entre les noms de glyphes et les glyphes) il faut aller chercher les caractères. Il manque donc la connaissance de la correspondance entre le nom des glyphes et leur emplacement dans la fonte : c'est le rôle des fichiers*enc.def (par exemplet1enc.def).

*.fd

Le nom de ces fichiers est constitué par : le nom du codage (U, T1, OT1, etc.), en minuscules, suivi du nom d'une famille de fontes. Il est chargé automatiquement par LaTeX quand on cherche à utiliser une fonte de cette famille. Il contient la correspondance entre le nom d'une fonte (par exemple « Computer Modern, droit, gras étendu, 10pt ») et le nom du fichier la contenant. Il peut aussi préciser ce qu'il faut faire si une fonte n'existe pas (par exemple : « s'il n'y a pas de gras étendu, alors prendre du gras normal » --- mais la plupart de ces substitutions sont automatiques). Voici un exemple de tel fichier.

La commande\DeclareFontFamily définit une nouvelle famille (ensemble de fontes) : son premier argument est le codage, le second, le nom de la fonte. La commande\DeclareFontShape définit une fonte dans une famille : ses arguments sont le codage, le nom de la famille, la série (maigre, gras, etc.), la forme (droit, italique, penché, petites capitales) et la liste des tailles autorisées et les fichiers correspondants. Le dernier argument est généralement vide (voir). Nous reverrons tout cela en détails en.

*.gf

Fonte au format bitmap (non compressé) provenant d'un fichier Métafont et calculée pour une certaine imprimante (plus la résolution de votre imprimante est élevée, plus il faudra utiliser une résolution élevée). On peut en rendre le contenu compréhensible à l'aide de la commandegftype et le visualiser à l'aide de la commandegftodvi.

*.hbf

Fonte Bitmap pour les langues asiatiques, que l'on peut convertir en fichiers *.pk pour les utiliser sous LaTeX, par exemple à l'aide de CJK (voir).

*.mf

Fichier source d'une fonte (vectorielle) au format Métafont à partir duquel on peut calculer les métriques et créer les fichiers bitmaps utilisés parxdvi oudvips. Voir le chapitre sur Métafont. Voici un exemple d'un tel fichier. Ça n'a pas l'air très lisible comme cela, mais c'est quand-même très puissant. Je profite de l'occation pour signaler que Métafont a donné naissance à un logiciel de dessin,Métapost.

*.mtx

Fichier utilisé parfontinst () décrivant une fonte (virtuelle ou non) ou des opérations pour en créer une nouvelle. Le premier cas est celui de la description d'une fonte : ce fichier est créé automatiquement parfontinst à partir du fichier*.afm ou*.pl correspondant. Voici un extrait d'un tel fichier.

Pour ceux qui veulent savoir, la commande\setdim définit les dimensions globales de la fonte, la commandesetkern définit les informations de crénage et la commandesetrawglyph définit chaque caractère (ses arguments sont : le nom du caractère, le nom de la fonte, la taille de la fonte, l'emplacement du caractère dans la fonte, la largeur, la hauteur, la profondeur et la correction italique).

L'autre type de fichier*.mtx ne contient pas la description d'une fonte entière mais juste des modifications à effectuer sur des caractères, par exemple intervertir des caractères, les remplacer par d'autres d'une autre fonte, etc. Ce sont les fichiers avec lesquels on programme sousfontinst. Voici par exemple un extrait du fichieruline.mtx. Comme nous reviendrons très longuement sur ces fichiers dans la partie surfontinst (), nous ne donnons pas plus d'explications ici.

*.pdf

FichierPDF ; le PDF est le format qui va peut-être bientôt remplacer le PostScript.

*.pfa

Fonte PostScript au format ASCII. C'est un programme en PostScript, presque humainement lisible. Voici un extrait d'un tel fichier

On peut le rendre lisible à l'aide de la commandet1disasm (la commandet1asm effectue l'opération inverse). Voici ce que l'on obtient.

*.pfb

Fonte postScript au format binaire (c'est comme une fonte postScript au format ASCII*.pfa, mais un peu compressé). C'est un fichier binaire, qui n'est donc plus lisible. On peut convertir une fonte*.pfa en*.pfb à l'aide de la commandet1binary et réciproquement à l'aide det1ascii oupfb2pfa.

*.pfm

Métriques d'une fonte PostScript pour Windaube, contenant (je crois) un peu moins d'informations que les fichiers*.afm. Il n'est pas humainement lisible.

*.pk

Fonte au format bitmap (compressé, contrairement aux*.gf) provenant souvent d'un fichier Métafont (mais parfois aussi d'une fonte PostScript (pour pouvoir l'utiliser avecxdvi) ou TTF). La résolution est indiquée juste avant, par exemplecmr17.518pk pour la fontecmr17 à 518dpi. On peut passer du format*.pk au format*.gf à l'aide depktogf et réciproquement à l'aide degftopk. La commandepktype convertit un fichier*.pk en un fichier humainement lisible.

*.pl

Fichier « property list » : c'est la version humainement lisible d'un fichier de métriques*.tfm, obtenue à l'aide detftopl. On l'utilise comme point de départ quand on joue avec des fontes virtuelles. Le contenu d'un tel fichier ressemble à du Lisp : voici un extrait d'un tel fichier.

Le fichier est directement compréhensible. Notons que la table de ligatures est présente deux fois : d'une part, au début du fichier, d'autre part, sous forme de commentaires (ignorés par le programme : c'est juste pour le lecteur humain), lors de la description de chaque caractère.

*.pro

Fichier prologue pourdvips : ce sont des commandes PostScript à mettre au début d'un fichier pour faire certaines initialisations (par exemple, définir des commandes). Voici un extrait d'un tel fichier.

La première ligne crée un nouveau dictionnaire (on peut voir cela comme un ensemble de variables locales que l'on pourrait rappeler quand on en a besoin, dans le reste du fichier) de 200 mots et la seconde le charge. On définit ensuite diverses commandes. L'avant dernière ligne referme le dictionnaire.

*.ps

FichierPostScript, souvent le résultat final de la compilation d'un fichier LaTeX (après passage pardvips). Nous y reviendrons plus loin ().

*.tfm

Métriques d'une fonte, sous une forme lisible par LaTeX mais pas par un humain. On peut les convertir en fichiers*.pl, humainement lisibles, à l'aide detftopl.

*.ttc

Fonte True Type Unicode (cela dit, la seule fonte True Type Unicode que j'aie jamais vue s'appelait*.ttf)

*.ttf

Fonte True Type (voir chapitre). Ce sont des fontes vectorielles essentiellement utilisée sous Windaube. Pour les utiliser sous LaTeX, on peut les convertir en fontes bitmap (*.pk) à l'aide dettf2pk ou en fontes PostScript à l'aide dettf2pt1.

*.vf

Fonte virtuelle, créée par la commandevptovf, que l'on peut convertir en une forme lisible grace à la commandevftovp.

*.vpl

« Virtual property list » : c'est une fonte virtuelle rendue humainement lisible par la commandevftovp. Son contenu ressemble beaucoup aux fichier*.pl, mais il contient des informations supplémentaires : il nous dit comment créer chaque caractère de la fonte. Par exemple « aller chercher tel caractère dans telle autre fonte » ou « superposer ces deux caractères ». Voici quelques exemples de ce que l'on peut y trouver (en vrac, en provenance de différentes fontes). Nous n'utiliserons pas directement ce genre de fichier, nous verrons plus loin commentfontinst permet de manipuler des fontes virtuelles plus facilement.

psfonts.map

Fichier indiquant la correspondance entre les noms de fontes PostScript utilisées par LaTeX (premier champ), le nom PostScript de ces fontes (second champ) et éventuellement le nom des fichiers les contenant ou des noms d'autres fichiers à inclure (par exemple, pour changer le codage). Les lignes peuvent correspondre à des fontes connues par l'imprimante (on ne précise pas de fichier*.pfa ou*.pfb)

ou a des fontes qu'il faudra envoyer à l'imprimante.
On rajoute parfois des fichiers contenant des instructions PostScript, pour modifier la fonte (par exemple, le fichier8r.enc va permettre définir la commandeTeXBase1Encoding, qui sera utilisée pour changer le codage de la fonte). On peut aussi rajouter des commandes PostScript, par exempleTeXBase1Encoding ReEncodeFont pour changer le codage de la fonte ou.167 SlantFont pour pencher un peu la fonte.

On peut mettre ses ajouts au fichierpsfonts.map dans un fichiermypsfonts.map et l'appeler en ajoutant les lignes suivantes dans le fichier~/.dvipsrc/ (seule la ligne commençant parp est importante).

*.map

Fichiers que l'on peut rajouter àpsfonts.map

*.map

Il a d'autres fichiers*.map (dans le répertoirefontname) qui indiquent la correspondance entre les noms de fonte lisibles, les noms de fonte illisibles utilisés par TeX et les noms de fontes illisibles utilisés par OuinDaube.

ttfonts.map

Fichier indiquant la correspondance entre le nom des fontes TTF utilisées par LaTeX et le nom des fichiers les contenant. C'est l'analogue du fichierpsfonts.map pour les fontes TTF. Voici un exemple d'un tel fichier : on précise le nom de la fonte pour LaTeX, le nom du fichier TTF, et on peut rajouter le codage désiré (sous forme de fichier*.enc, qui est un fichier PostScript) et l'inclinaison.

3.3 Comment passer de l'un de ces format de fichier à un autre ?

gftodvi

Transforme une fonte bitmap*.gf en un fichier*.dvi.

gftopk

Pour compresser un fichier*.gf en un fichier*.pk.

gftype

Transforme une fonte bitmap*.gf en un fichier humainement lisible.

pf2afm

Transforme des métriques pour OuinDaube*.pfm en métriques _< normales ». Comme il y a un peu moins d'information dans les fichiers*.pfm, le résultat ne sera pas toujours satisfaisant. On trouve ce programme surCTAN

pfb2pfa

Transforme des fontes PostScript binaires*.pfb en fontes PostScript ASCII*.pfa. On trouve ce programme surCTAN. Voir aussit1utils.

pfb2pfa

Idem, toujours surCTAN, mais à un autre endroit. Voir aussit1utils.

pktogf

Pour décompresser un fichier*.pk et obtenir un fichier*.gf

pktype

Pour rendre humainement lisible le contenu d'un fichier*.pk.

t1ascii

Pour convertir un fichier*.pfb en*.pfa.

t1asm

Pour compresser le contenu d'un fichier*.pfa humainement lisible.

t1binary

Pour convertir un fichier*.pfa en*.pfb.

t1disasm

Pour rendre le contenu d'un fichier*.pfa humainement illisible.

t1utils

Ensemble de commandes (t1asm,t1disasm,t1ascii,t1binary,unpost) pour manipuler des fontes PostScript Type 1.

tftopl

Transforme un fichier*.tfm en*.pl. Par exemple

ttf2pk

Transforme une fonte*.ttf en fonte bitmap utilisable pardvips, voir chapitre

ttf2pt1

Transforme une fonte True Type en fonte PostScript, voir.

ttf2tfm

Extrait les métriques d'un fichier*.ttf

unpost

Pour convertir des fontes PostScript pour Mac (fichiers POST) en fontes PostScript utilisables sur des machines normales.

vftovp

Transforme une fonte virtuelle*.vf (et ses métriques*.tfm) en*.vpl.

vptovf

Transforme un fichier*.vpl en*.tfm et*.vf.

3.4 Où LaTeX va-t-il chercher tous ces fichiers ?

La structure de l'arborescence d'une installation de LaTeX est décrite dans leTDS (TeX Directory Structure. Rappelons-en les grandes lignes. La racine de l'arborescence peut être/usr/local/lib/texmf/. Dans la situation qui nous intéresse (une distribution basée surweb2c, utilisantdvips), ce répertoire contient

La recherche des fichiers par TeX, MetaPost, dvips, etc. est réalisée par la bibliothèquekpsearch. Pour savoir où elle va chercher un certain fichier, on peut utiliser la commandekpsewhich.

Quand on installe une nouvelle fonte (ou un nouveau paquetage), on peut soit le rajouter dans l'arborescence, soit créer une nouvelle arborescence : cela permet de bien séparer les fichiers qui proviennent de la distribution que l'on a choisie (par exemple teTeX) et ceux que l'on a rajoutés soi-même ; en particulier, on peut réinstaller cette distribution (ou même une autre) sans rien changer à ce que l'on avait rajouté soi-même. Pour ce faire, il suffit d'éditer le fichiertexmf.cnf (si vous ne savez pas où il se trouve, utilisez la commandekpsewhich). Il contient des choses comme

On remplace ces lignes par quelque chose du genre (oui, j'ai bien une dizaine d'arborescences)
Si vous n'avez pas le droit d'éditer le fichiertexmf.cnf, vous pouvez faire une copie du répertoire$TEXMFweb2c/ dans votre nouvelle arborescence, éditer la copie du fichiertexmf.cnf. Pour que LaTeX aille chercher ce fichier-là et pas celui par défaut, il suffit de mettre le nom du nouveau répertoireweb2c dans la variable d'environementTEXMFCNF (modifiez les fichiers de configuration de votre shell). Les doubles points d'exclamation indiquent que si le fichier cherché n'est pas dans la base de données crée par la commandemktexlsr (outexhash, pour certaines distributions), il ne faut pas chercher dans l'arborescence : on suppose que cette base de données est toujours à jour.

3.5 Quelle est la différence entreinputenc etfontenc ?

Dans le préambule d'un document, on conseille souvent de mettre

La première ligne demande d'utiliser des fontes avec le codageT1 (si on voit une fonte comme un tableau de caractères, le codage est juste l'emplacement des caractères). Il s'agit du codage de la fonte.

La seconde ligne indique le codage du texte : une machine Unix et Ouindoze ne codent pas les lettres accentuées de la même manière. Préciserlatin1 revient à dire que l'on a utilisé une machine Unix pour taper le texte : on peut après le compiler sur un Machintosh sans que les lettres accentuées soient corrompues (voir).

3.6 Comment taper les lettres accentuées « normalement » ?

Tout d'abord, si LaTeX est bien installé, on peut les taper normalement, i.e., «é » au lieu de «\'e ». Néanmoins, cela risque de poser un problème de portabilité : en effet, les caractères accentués sont codés différemment selon le type de plateforme (Unix, MacOS, WinDaube). Il faut donc dire quel est le codage utilisé. Si on est sur une machine Unix, il suffit de rajouter

dans le préambule. On peut dès lors saisir les caractères accentués normalement. Sur un Mac, on remplaceraitlatin1 parapplemac, sous DOS, parcp850, sous Ouindaube, paransinew.

On peut aussi vouloir utiliser plusieurs codages dans un même document : le problème se pose si, par exemple, plusieures personnes écrivent les différentes parties d'un même document, mais sur des machines différentes. On précise alors le codage par la commande\inputencoding.

3.7 Comment taper le oe normalement ?

Cela dépend de l'éditeur de texte que l'on utilise. Pour (X)Emacs sous Unix, je n'ai pas de solution, à part Unicode.

3.8 Qu'est-ce que le codage ?

Si l'on voit une fonte comme une tableau de dessins de caractères, son codage est la correspondance entre le nom d'un caractère et l'emplacement de son dessin. Il convient de bien distinguer le codage de la fonte et le codage d'entrée (ie, celui dans lequel on a tapé notre texte, par exemple latin1 sur une machine Unix). La question précédente tentait déjà de préciser cette distinction. On peut se demander pourquoi il y a différents codages. Si on a besoin juste des lettres latines, il semble très naturel d'utiliser des caractères ASCII. Mais si on a besoin d'autres lettres ? Si on a besoin de caractères accentués ? Si on a besoin de certains symboles mathématiques ? Si on a besoin de caractères cyrriliques ? Si on a besoin de caractères grecs ? Pour chaque problème, on peut apporter une solution, c'est-à-dire concevoir un codage adéquat. Mais comme on se limite à 256 caractères par fontes, on ne parvient pas tout mettre dans une même fonte. Pire encore, si différentes personnes tentent de résoudre le même problème, elles vont le résoudre de manières différentes, ie, aboutir à des codages différents pour le même jeu de caractères (il y a par exemple un nombre incroyable de codages pour le russe). La situation se complique encore pour les écritures qui requièrent plus de 256 caractères...

3.9 Quels sont les différents codages d'entrée ?

Voici une liste (non exhaustive) de codages reconnus par LaTeX

ascii

Uniquement les caractères ASCII

latin1

Texte européen sur une machine UNIX (il manque le caractère OE)

decmulti

À peu près pareil (mais il doit y avoir un OE)

applemac

Texte européen sous MacOS

latin2

Europe de l'est

latin3

Europe du sud

latin5

Turc

ansinew

Codage de OuinDaube

cp850

Codage de MSDOS

3.10 Quels sont les différents codages de fontes ?

Voici quelques exemples de codages (la liste n'est pas du tout exhaustive).

T1

C'est le codage actuellement utilisé par LaTeX. Il est aussi connu sous le nom de Cork ou8t.

OT1

C'est le codage initialement utilisé par TeX. Il posait des problèmes de césure pour les mots accentués et tend à être supplanté par T1. On le préfère parfois à T1 car il reste plein de place libre pour rajouter des caractères dont on aurait besoin.

Tex Base Encoding

C'est le codage utilisé par LaTeX pour les fontes PostScript. Il est aussi connu sous le nom de8r.

Adobe

Codage utilisé par la plupart des fontes PostScript. Il est aussi connu sous le nom de8a. Quand on utilise de fontes PostScript, on se ramène généralement du codage8a au codage8r.

OML

Codage mathématique utilisé par TeX (Math Italics)

OMS

Codage mathématique utilisé par TeX (Math Symbols)

OMX

Codage mathématique utilisé par TeX (Math Large Symbols)

TS1

Codage utilisé pour les symboles en mode texte (textcomp.sty et les fontes TC, « Text Companion »)

OT2

Washington University Cyrillic encoding.

T2A

Le codage cyrillique utilisé par défaut parrussianb dabsbabel. Il y a plein d'autres codages cyrilliques : OT2, LWN, LCY, X2, T2, T2C, T2B, T2A.

OT3

IPA (alphabet phonétique international), sur 7 bits (128 caractères).

T3

IPA, 256 caractères. Voirtipa.sty.

OT4

Polonais

T4

Polonais

LGR

Un codage grec.

LV1

l'un des codages de Y&Y.

dvips

Il y a aussi un codage propre àdvips...

U

Codage inconnu.

L...

Codage local, normalement non diffusé

E...

Codage expérimental (comme le codage local, mais il est destiné à être diffusé).

Cette liste est bien évidemment non limitative.

3.11 Est-il vrai que le codageOT1 pose des problèmes de césure ?

Oui, parfois. Dans le codageOT1, les lettres accentuées ne sont pas des caractères mais sont construites par LaTeX à partir d'une lettre et un accent. Le problème, c'est que TeX ne sais pas couper les mots contenant de telles constructions. Pour y remédier, il y a deux solutions :

3.12 Pourquoi les fontes ont-elles des noms aussi illisibles ?

Cela résulte de l'utilisation répandue d'un certain système d'exploitation qui limite le nombre de caractères d'un nom de fichier à 8 caractères. Pour que les fontes aient le même nom sur toutes les machines, on s'efforce d'utiliser ces noms réduits sur toutes les machines. La signification exacte de ces nom est expliquée dansfontname. En voici une présentation (incomplète et) simplifiée.

En fait, cela ne suffit bien évidemment pas. On utilise donc un fichier qui permet de passer d'un nom de fonte long, du genreAGaramond-SemiboldItalic, à un nom de fonte court, du genrepadsi8a, utilisable sur des ordinateurs munis de systèmes d'exploitation archaïques. Ce fichierfontname.map est lu par web2c pour traduire le nom de fichier donné dans le source TeX (qui peut donc être arbitrairement long) en un nom de fichier court.

Pourquoi s'embéter avec tout cela ? Si on est sûr de ne jamais utiliser de ces systèmes d'exploitation archaïques n'autorisant pas plus de 8 caractères dans les noms de fichiers, pourquoi ne pas utiliser des noms plus explicites ?

Bonne question. Le plus simple est souvent de ne pas s'en préoccuper. Mais on ne peut alors plus utiliser de logiciels qui permettent de manipuler des fontes en supposant qu'elles sont installées en respectant ces conventions (vfinst,mathkit,mathinst). Une autre solution consiste à ne pas chercher à comprendre fontname et à utiliser des noms arbitraires, conformes à fontname. Par exemple

9

créateur inconnu

pi000

le nom de la fonte (les deux lettres « pi » sont conformes à fontinst, elles sont suivies de trois chiffres --- cela nous fait dépasser des 8 caractères généreusement accordés par B. Gates, mais ce n'est pas grave)

8r

codage utilisé par TeX pour les fontes PS ou TTF

Il ne reste plus qu'à dire de quel type de fonte il s'agit (droite, penchée ou italique ; maigre ou grasse ; sérif, sans sérif, machine à écrire ; petites capitles ou non ; etc.) Voici quelques exemples (je mets des espaces pour plus de lisibilité)
Et il en manque plein, mais je ne sais pas si on met « i c » ou « c i » pour des petites capitales italiques (c'est peut-être simplement interdit), etc.

3.13 Pourquoi y a-t-il plein de chiffres dans certains noms de fontes :ecrm1000.tfm ?

Cela n'apparait pas dans toutes les fontes, mais juste dans certaines fontes Métafont récentes, par exemple, les fontes EC. La fonte Computer Modern maigre droite était présente en plusieures versions différentes, correspondant à des tailles différentes (cmr5,cmr10,cmr17, etc.). Il s'agissait vraiment de fontes différentes car, pour des raisons de lisibilité, les fontes de petites tailles sont relativement plus larges que des fontes de grande taille. Ainsi, sur la figure suivante, on a utilisé la fonte Computer Modern à 6 point et è 35 points, avec la même graisse.

Pour les fontes EC, c'est pareil, mais il y a beaucoup plus de tailles prévues et ces tailles ne sont pas données en points dans le nom des fontes, mais en centièmes de points. Ainsi, la fonteecrm1000 est-elle l'équivalent decmr10.

Certains de ces fichiers peuvent d'ailleurs être crés automatiquement parmktexmf. À DÉTAILLER


4 NFSS (New Font Selection Scheme)

4.1 Qu'est-ce que NFSS ?

Initialement, les fontes sous (La)TeX étaient considérées comme complètement distinctes les unes des autres : il y avait par exemple une fonte droite, une fonte grasse, une fonte italique, une fonte italique grasse, mais le logiciel ne connaissait pas leurs attributs et n'était pas conscient qu'elles faisaient partie d'une même famille. Ainsi, si on demandait du gras au début d'un paragraphe, puis, pour un mot à l'intérieur du paragraphe, de l'italique, il fallait explicitement demander de l'italique maigre ou de l'italique gras : on ne pouvait pas dire, simplement, « de l'italique avec la même graisse ». En d'autres termes, les changements de fontes n'étaient pas orthogonaux.

LeNFSS (New Font Selection Scheme) permet de spécifier séparément certaines des caractéristiques des fontes : inclinaison (droit, penché, italique, petites capitales, etc.), graisse (normal, gras, gras condensé, gras étendu), taille. Cela permet à peu près toutes les combinaisons (sauf les petites capitales italiques).

4.2 Quelles sont les caractéristiques d'une fonte ?

4.3 Comment changer de fonte (commandes de « bas niveau ») ?

Nous avons déjà vu les commandes de « haut niveau » :\rmfamily,\sffamily,\ttfamily,\mdseries,\bfseries,\upshape,\itshape,\slshape,\scshape. Les commandes de bas niveau sont les suivantes (attention, elles supposent que les fontes sont décrites quelque part, voir) :

On commence par définir les caractéristique de la fonte (les deux dimensions sont d'une part la taille des caractères, d'autre par la taille de l'interligne (pour augmenter l'interligne, il est généralement plus juducieux d'utiliser l'extensionsetspace) et on appelle la commande\selectfont. Il y a une commande un peu plus évoluée :
Les commandes suivantes contiennent les caractéristiques de la fonte courrante :\f@encoding,\f@family,\f@series,\f@shape,\f@size,\f@baselineskip. Il y en a aussi trois autres, qui contiennent la taille de texte mathématique en taille normale, en indice et en indice d'indices (que l'on peut définir à l'aide de la commande\mathsize : ses quatres arguments sont la taille du texte et les trois tailles mathématiques) :\tf@size,\sf@size et\ssf@size.

4.4 Comment avoir des petites capitales italiques ?

La question est problématique, car italique (ou penché) et petites capitales sont tous deux des « formes » de la fonte : on les sélectionne par les commandes\ifshape,\slshape ou\scshape. Il s'ensuit qu'on ne peut pas avoir de petites capitales penchées si l'on s'en tient strictement à NFSS.

Néanmoins, ces fontes existent, par exemple dans la famille EC (si elles n'existaient pas, on pourrait les fabriquer, voir,,,) :ecsc*.mf pour les petites capitales penchées maigres etecoc*.mf pour les grasses. Pour les utiliser, il faut court-circuiter NFSS : on peut le faire salement, en reprenant les commandes TeX (qui ne tiennent pas compte de la taille courrante, ni de la graisse courrante).

On peut aussi le faire plus proprement, sans quitter NFSS, en définissant une nouvelle forme de caractèresscsl.
Signalons aussi l'existence d'une extensionscaps.sty permettant d'utiliser plus proprement les petites capitales.

4.5 Comment utiliser ponctuellement une fonte ?

Sélectionner la fonte à l'aide de la commande\selectfont ne suffit pas, car le nom de la fonte pour TeX et le nom des fichiers correspondants n'est pas nécessairement le même (en fait, une même fonte peut avoir une demi-douzaine de noms différents : celui pour TeX, celui pour fontname, celui pour le système de fichier, celui pour l'interpréteur PostScript --- je suis sûr que j'en oublier, mais lesquels ?). Pour utiliser une fonte appeléetoto10 de manière ponctuelle, il suffit de mettre les lignes suivantes dans l'en-tête du fichier et d'utiliser la commande\texttutu.

La première ligne déclare une nouvelle famille (vide pour l'instant). Cette famille utilisera le codage U (généralement, pour une fonte qui ne comporte que des caractères ASCII ou une fonte qui comporte des symboles, que l'on n'utilisera pas directement). Les codages les plus courrants, pour les fontes TeX, sont T1 et OT1.

Le dernier argument (très souvent vide) contient des commandes à exécuter juste après avoir sélectionné la fonte : il peut par exemple s'agir d'ajustements des dimensions. Nous y reviendrons plus loin ()

La deuxième ligne stipule que pour la fonteU/tutu/m/n, seules les tailles 5, 6, 7, 8, 9, 10, 10.95, 12, 14.4, 17.28 et 24.88 points sont disponibles et qu'il faut aller les chercher dans les fichierstoto5.tfm,toto7.tfm ettoto10.tfm. Rappelons à cette occasion que les seuls fichiers concernant une fonte dont TeX a besoin sont les métriques*.tfm. Il n'a pas besoin du dessin des caractères (c'estxdvi oudvips qui s'en chargent). Remarquons aussi que le nom de la fonte pout LaTeX (tutu) peut être différent des noms de fichiers (toto).

Les dernières lignes définissent une macro\texttutu et un environementtutufamily permettant d'utiliser notre fonte de manière ponctuelle.

Signalons aussi qu'il existe des commandes pour définir de telles macros.

4.6 Comment utiliser ponctuellement une fonte (bis) ?

En fait, l'exemple précédent n'est pas très propre : normalement, la description de la fonte est cachée dans un fichier*.fd qui est chargé automatiquement par LaTeX quand il en a besoin. Dans un fichiertoto.sty, mettons les lignes suivantes :

Dans un fichierututu.fd, mettons les lignes suivantes.
Rappelons que les fichiers*.fd sont nommés de la manière suivante : le codage suivi du nom de la famille suivi de.fd, le tout en minuscules. Nous pouvons dès lors utiliser cette fonte de la manière suivante.

4.7 Quel est le dernier argument des commandes\DeclareFontFamily et\DeclareFontShape ?

Le dernier argument de ces commandes est généralement vide, mais pas toujours. On l'utilise pour changer les valeurs par défaut de\skewchar (par défaut -1) ou\hyphenchar (le caractère utilisé pour effectuer la césure, par défaut le tiret). Ainsi, on peut inhiber la césure

ou changer le caractère utilisé pour la césure
La commande\skewchar permet de régler la position des accents en mode mathématique : pour les fontes droites, la valeur par défaut (qui consiste à mettre l'accent juste au milieu) convient, par contre, pour les fontes italique, il faut déplacer l'accent sur la droite. Je ne sais pas à quoi correspond le nombre qu'on lui donne. (A FAIRE) Je ne sais pas si on peut mettre autre chose que les instructions\skewchar et\hyphenchar. (A FAIRE)

4.8 Quelles autres choses peut-on mettre dans un fichier*.fd ?

On peut indiquer une taille unique.

On peut indiquer plusieures tailles.
La taille peut être un intervalle.
Il est possible de créer automatiquement les noms de fontes à partir des tailles demandées. Les deux exemples suivants sont équivalents.
La commandegenb (respectivementsgenb) est semblable mais utilise quatre chiffres : les deux exemples suivants sont équivalents.
Il est possible de dire à LaTeX d'aller chercher les fontes dans d'autre familles. Ces substitutions peuvent être silencieuses (ssub) ou non (sub).
La commandefixed (respectivementsfixed) demande de ne pas tenir compte de la taille demandée par l'utilisateur. Ainsi, dans l'exemple suivant, les fontes entre{U}{euex}{m}{n}{5} et{U}{euex}{m}{n}{8} seront toutes des fontes à 7 points (si la fonteeuex est à 7 points).
La plupart des fontes sont conçues à une taille de 10 points. Dans l'exemple suivant, on demande que les fontes de taille inférieure à 8 (il s'agit de la taille pour l'utilisateur) soient en fait de taille 12.4 (il s'agit de la taille de la fonte, par rapport à la taille à laquelle elle a été conçue), que les fontes de taille 8 à 10 soient de taille 12.8 et que les fontes de taille supérieures soient de taille 12.8
Comme le suggère l'exemple précédent, on peut mettre un facteur multiplicatif entre crochets avec n'importe quelle commande (on ne rajoute pas de signe de multiplication* pour la commande « vide »). On peut rajouter soi-même des fonctions à l'aide de\DeclareSizeFunction{name}{code...}. Pour de plus amples détails, nous renvoyons àfntguide.

4.9 Comment accéder à un caractère d'une fonte en connaissant juste son numéro ?

La primitive TeX permettant d'obtenir un caractère dans la fonte courrante à partir de son numéro est\char. La commande LaTeX correspondante s'appelle\symbol, simplement définie comme

On peut l'utiliser ainsi (les doubles accolades sont nécessaires pour que le changement de fonte soit limité au caractère).

Il existe néanmoins une manière un peu plus propre d'effectuer cela, à l'aide de la commande\DeclareTextSymbol (voirfntguide pour les détails)

Très souvent, les symboles en question seront utilisés en mode mathématique : c'est alors un peu plus compliqué, car LaTeX doit savoir de quel type de symbole il s'agit : une lettre, une relation binaire, un délimiteur gauche, etc. Cette information est nécessaire pour avoir un espacement correct de chaque côté du symbole. Les commandes suivantes peuvent s'utiliser directement et prennent alors le caractère voulu (ou n'importe quoi d'autre) en argument et s'occuppent de ces espaces.

Après avoir déclaré les fontes mathématiques, on définit les symboles que l'on désire à l'aide de la commande\DeclareMathSymbol, comme dans l'exemple suivant.

4.10 Comment changer la fonte par défaut du document ?

Nous avons déjà vu plus haut comment faire s'il y avait déjà un fichier*.sty qui chargeait la fonte : nous regarderons donc ici ce que l'on peut faire si l'on est laissé à soi-même. Il s'agit essentiellement de redéfinir une ou plusieures des commandes suivantes (il faut toutefois que LaTeX parvienne à trouver les fichiers*.fd et les métriques correspondantes) :\rmdefault,sfdefault,ttdefault,bfdefault,mddefault,\itdefault,\sldefault,\scdefault,\updefault,\encodingdefault,\familydefault,\seriesdefault,\shapedefault. Voire même l'une des commandes suivantes :

Par exemple :

Voici un exemple plus compliqué : on cherche à imiter une machine à écrire. Il n'y a donc plus qu'une seule fonte, qu'une seule taille. (Nous verrons plus loin () comment nous occuper des fontes en mode mathématique.)

4.11 Comment utiliser plusieurs codages de fonte en même temps ?

Cette question n'a pas grand sens : quand on demande à LaTeX d'utiliser une fonte, cela implique un certain codage. Si à un autre endroit du texte on demande une autre fonte, elle impliquera un autre codage. Ces différents codages correspondent à différentes parties du texte (éventuellement incluses les unes dans les autres) : cela ne pose donc aucun problème.

La question peut quand même avoir un sens dans le cas de fontes possédant plusieurs codages. Le premier exemple qui vient à l'esprit est celui des fontes Computer Modern, qui existent sous les codages OT1 et T1. On peut demander explicitement à LaTeX d'utiliser l'un ou l'autre de ces codages, par exemple à l'aide de la commande

Le codageT1 est le plus récent (mais ce n'est pas celui par défaut, pour ces raisons de compatibilité arrière), il contient beaucoup plus de caractères (les caractères accentués) et permet des césures correctes des langues accentuées même dansmltex. Il présente deux inconvénients : comme il y a beaucoup plus de caractères, il n'y a plus de place dans la fonte si on veut en rajouter ; d'autre part, il n'y a pas de fontes PostScript (gratuites) Computer Modern avec le codage T1 (on ne peut donc pas directement utiliserpdftex avec le codageT1 ; mais les fontes virtuellesae permettent de contourner ce problème).

On a aussi besoin de plusieurs codages pour une même fonte si cette fonte comporte plus de 256 caractères : ainsi, pour écrire un document en Computer Modern à la fois en français et en russe, on pourra utiliser la même fonte, tantôt avec le codageT1, tantôt avec le codageOT2. Ainsi, la ligne suivante

demande à LaTeX de lire les fichierst1enc.def etot2enc.def qui définissent les deux codages et dit que le document sera essentiellement enT1. La commande\fontencoding{???}\selectfont (où il faut remplacer les points d'interrogation??? par le nom du codage de fonte) permet de changer le codage de la fonte courrante, comme vu en4.3.

4.12 Comment utiliser une fonte texte en mode mathématique ?

Le plus simple est d'utiliser la commande\text définie dansamsmath, qui permet de mettre du texte en mode mathématique en respectant la taille courrante de l'écriture (taille des indices et des indices d'indice). La commande\text respecte les caractéristiques du texte alentours, par exemple, dans une formule mathématique au milieu d'un texte en gras italique, elle va prendre du gras italique. Ce n'est pas toujours désiré. Si on n'en veut pas, on peut revenir à la fonte par défaut grace à\text{\normalfont ...}. Il ne faut pas utiliser la commande\mbox, car elle ne respecte pas la taille des indices ou des exposants.

Comme il s'agit d'une fonte texte, on peut utiliser des caractères accentués : ce n'est pas le cas des fontes mathématiques. Si on désire appelerHoméo(X,Y) (dans une fonte maigre droite) l'ensemble des homéomorphismes entre des espaces topologiquesX etY, ouGroupoïdes (dans une fonte gothique grasse) la 2-catégorie des groupoïdes, cela ne pose pas de problème. Avec les commandesDeclareMathOperator oumathfrak, on ne pouvait pas mettre d'accents...

4.13 Comment utiliser une fonte texte comme si c'était une fonte mathématique ?

D'après la réponse à la question précédente, on voit que ce n'est peut-être pas une très bonne idée : d'une part il est plus simple d'utiliser une fonte texte et la commande\text, d'autre part, on perdrait la possibilité d'utiliser des accents.

Toutefois, si on insiste, il suffit de rajouter les deux lignes suivantes, qui définissent une commande\mathTOTO.

4.14 Comment utiliser une fonte texte comme fonte mathématique par défaut ? Comment modifier certains caractères mathématiques ?

On peut aussi vouloir changer la fonte utilisée en mode mathématiquepar défaut. Si l'on essaye les lignes suivantes (qui tentent d'utiliser une fonte sans sérif), tout semble marcher parfaitement.

Mais essayons maintenant d'utiliser des symboles ou des lettres grecques (ici, un phi).
Le problème vient du fait que la fonte utilise un codageT1 (ouT1 ou n'importe quoi d'autre, mais c'est un codage de fonte texte), alors que LaTeX attend un codage du genreOMX.

On peut ne changer que les caractères alphanumériques, comme suit. Les autres caractères (lettres grecques, symboles) seront pris dans la fonte mathématique précédente.

En modifiant légèrement cet exemple, on peut par exemple demander à LaTeX de mettre toutes les majuscules en mode mathématique droites, et non plus penchées.
En plain TeX, on était contraint d'écrire des choses bien plus illisibles (je mets ces lignes ici à titre purement historique, surtout pas pour qu'elles soient utilisées).
Nous verrons un peu plus loin () comment faire la même chose avec des fontes virtuelles.

Le lecteur désirant d'autres exemples est invité à regarder comment les extensionspslatex oumathpple sont programmées.

4.15 Comment utiliser une fonte mathématique différente ?

Commençons par quelques révisions : nous avons déjà vu des commandes permettant de changer ponctuellement la fonte mathématique :

Nous avons aussi déjà vu comment changer la version mathématique, par exemple pour tout mettre en gras.

***** A REVOIR ***** (Cette question est très pertinente : si on désire unstaller une nouvelle fonte textuelle, ne comportant pas tous les caractères mathématiques dont on aura besoin, on peut créer des fontes mathématiques virtuelles à partir des caractères mathématiques présents dans la fonte et en allant chercher les caractères manquants dans les fontes COmputer Modern ou Euler.)

(ANCIENNE REPONSE --- A EFFACER) La question de l'utilisation d'une autre fonte mathématique ne se pose pas vraiment, car il y en a très peu et elles sont toutes accompagnées d'un fichier*.sty permettant de les utiliser. Pour que le problème se pose, il faudrait que l'on écrive soi-même une telle fonte ou alors que l'on modifie soi-même certains des paramètres des fontes CM ou Euler correspondantes pour qu'elles se marrient bien avec une fonte texte que l'on aurait choisie, ou bien que l'on utilise des fontes virtuelles pour modifier une fonte mathématique existante, ou encore que l'on utilise des fontes virtuelles pour récupérer des caractères dans diverses fontes des symboles. Le lecteur intéressé devrait trouver son bonheur dans les fichierseuler.sty,mathpple etpslatex.sty. Nous allons quand même essayer d'expliquer comment on procèderait.

A FAIRE PRENDRE UN EXEMPLE : avec des fontes virtuelles (en modifiant tous les caractères d'une fonte mathématique postscript de la même manière) ou en changeant les paramètres des fontes CM.

Imaaginons que nous ayions écrit une nouvelle fonte mathématique, comportant tous les symboles dont on pourrait avoir besoin. Comment dire à LaTeX de l'utiliser ? Nous prendrons l'exemple de la fonteeuler, i.e., nous allons réécrireeuler.sty. Commençons par demander à LaTeX d'utiliser notre fonte pour les caractères textuels utilisés en mode mathématique. La première ligne définit un nouvel alphabetletters (plus exactement, on le redéfinit). Pour l'instant, il n'est définit que pour la versionnormal. Mais comme la fonte existe à la fois en maigre et en gras, on peut définir une nouvelle version,bold.

On constate que LaTeX va bien chercher les caractères alphabétiques dans cette fonte, mais pas les chiffres. (Ne me demandez pas pourquoi.) Il suffit donc de redéfinir ces caractères un par un.
Même remarque pour les caractères grecs : la fonte Euler, que nous aavons choisie pour cet exemple, redéfinit les majuscules (on garde les minuscules de Computer Modern).
Il reste encore tous les autres symboles : ils sont dans une autre fonte, que l'on charge,
et dans laquelle on pioche les symboles, un par un.
il y a encore d'autres symboles dans une autre fonte.
Et encore une...
Et il y a encore tous les symboles qui proviennent des fontes Computer Modern
Voilà : pour ce qui est des symboles, c'est fini. Il ne reste plus qu'à redéfinir la fonte utilisée par les opérateurs (\cos, etc.) et le comportement des commandes du genre\mathbf : on va juste prendre les mêmes que pour le texte.
Pour le gras, on peut quand même prendre le gras mathématique.
Pour les accents mathématiques : la plupart du temps, on va les chercher dans la fonte texte.
De manière surprenante, il y a certains symboles mathématiques qui se trouvent dans la fonte texte.
C'est à peu près tout.
Précisons quand même qu'il faut choisir la fonte texte avec soin (ci-dessous,concrete, par opposition àcomputer modern ci dessus).

(REPONSE ENCORE PLUS ANCIENNE --- A EFFACER) Tout cela, c'était pour les fontes « normales », pas celles contenant des symboles.

Comme précédemment, il y une autre commande qui permet de définir la même chose dans une version.
Pour défininir une commande qui permet d'utiliser ces fontes :
Ensuite, on peut définir des caractères un par un.
A FAIRE : il faudra parler de\mathbin,mathrel, etc. (mais plus haut...)Il y a encore une autre chose que l'on peut régler : la taille des caractères en mode mathématique. La ligne suivante demande que quand le texte est en 12 points, le texte mathématique normal (\displaystyle et\textstyle) soit en 12 point, les indices (\scriptstyle) en 9 point et les indices d'indices (\scriptscriptstyle) en 7 points.
A FAIRE : exemples (exemple normal ; exemple avec une autre version ; tt.sty)

4.16 Comment (et pourquoi) utiliser différentes versions mathématiques ?

On peut vouloir utiliser plusieures versions mathématiques (i.e., plusieurs jeux de fontes mathématiques) car ils apparaissent à des endroits différents : par exemple dans le texte (versionnormal) et dans les titres, en gras (versionbold). C'est l'utilisation la plus courrante, et ces deux versions sont déjà définies --- il n'y a donc rien d'autre à faire que de les utiliser, à l'aide des commandes\mathversion{bold} et\mathversion{normal}.

On utilise aussi différentes versions quand on désire comparer, dans un même document, différentes fontes mathématiques : on peut ainsi mettre une page en Mathtimes, une autre en Computer Modern et une dernière en Lucida. Il faut alors créer soi-même de nouvelles versions mathématiques. Mais cette utilisation reste marginale. Voir par exempleSur la diversité des fontes mathématiques (Thierry Bouche)

A FAIRE : pour que tout le document soit en gras

A FAIRE : parler de boldsymbol et bm.

4.17 Quelles sont les différentes dimensions présentes dans une fonte ? Comment les modifier ?

On peut modifier les dimensions des fontes mathématiques, par exemple, afin de changer la position des indices ou exposants. (À FAIRE)


5 Au delà des caractères latins

5.1 Comment utiliser l'alphabet phonétique ?

Il suffit d'utiliser l'extensiontipa.

5.2 Comment écrire des partitions musicales ?

RegardezMusixTeX etLilypond.

5.3 Comment écrire quelques mots en russe ? Comment utiliser un caractère russe en mode mathématique ?

C'est bien expliqué danscyrguide.dvi. Ici, nous allons simplement expliquer comment utiliser des symboles russes, de manière ponctuelle, en mode mathématique. Les fontes en question,wncyr*.mf, comptent parmi celles de l'AMS : elles sont probablement déjà là. Il y a néanmoins un problème supplémentaire : le codage d'entrée est différent. Heureusement, les fontes viennent avec un fichier décrivant ce codage,cyracc.def.

5.4 Comment écrire quelques mots en grec ancien ?

Le plus simple est probablement d'utiliserbabel avec l'optiongreek. Il n'y a aucune raison pour que Babel soit déjà installé pour la langue grecque. Nous allons procéder comme suit.

5.5 Pourquoi n'y a-t-il pas de béta interne ?

Car il n'est pas utilisé outre-atlantique. Si vous en avez vraiment besoin, voici plusieures solutions :

5.6 Comment écrire quelques mots en japonais ?

Je suggère d'utiliserCJK. D'autres solutions conviennent mieux à un environement entièrement japonais ; mais ce que nous voulons ici, c'est écrire des documents qui mélangent du japonais et des langues occidentales, ou écrire quelques documents en japonais au milieu de plein d'autres en langues européennes. De surcroît, CJK est documenté en anglais, ce qui est souhaitable si la personne qui va l'installer n'est pas celle qui va l'utiliser.

CJK est juste un ensemble de macros pour utiliser les langues asiatiques sous LaTeX. Il ne contient pas de fontes. Pour le japonais, j'ai essayé de trois manières différentes.

5.7 Comment écrire quelques mots en Chinois ? en Coréen ?

Vous pouvez utiliser CJK, comme suggéré dans la question précédente. Je ne connais pas du tout ces langues, je ne donne donc pas d'exemple.

5.8 Comment inclure quelques mots dans une autre langue ?

En général, je ne sais pas :

A FAIRE : donner quelques exemples marrants (hiéroglyphes, klingon, elfique).

5.9 Qu'est-ce qu'Unicode ? Comment utilise-t-on Omega ?

Les codages (d'entrée) sont très variés : il en faut généralement un par langue, ce qui rend très pénible la création de documents multilingues.Unicode est un jeu de caractères sensé couvrir toutes les langues actuelles.

Néanmoins, Unicode soulève certaines critiques, du même genre que l'absence du oe dans le codage latin1. Ainsi, Unicode ne distingue pas entre des caractères japonais et chinois de même origine. Par contre, il distingue le A majuscule latin du Alpha majuscule...

Unicode n'est qu'unjeu de caractères : il y a plusieurs codages possibles, le plus courrant étant UTF-8 (les caractères ASCII sont inchangés, les autres sont codés sur 2 octets, ou plus).

Précisons le vocabulaire

UCS

Universal Character Set : jeu de caractères (31 bits) qui vise à couvrir toutes les langues « connues » (y compris les hiéroglyphes ou le Klingon).

ISO 10646

Voir UCS.

BMP

Basic Multilingual Plane : Un morceau de UCS (16 bits), comprenant les langues actuellement utilisées.

ISO 10646-1

Voir BMP.

U+0041

Caractère numéro0041 (en hexadécimal) d'UCS (il s'agit d'unLatin capital letter A).

ISO 8859-1

Codage Latin 1, utilisé pour les langues d'Europe de l'Ouest (il manque toutefois les trois caractères oe OE et

JIS X 0221-1995

Unicode tel qu'il est utilisé au Japon

KS X 1005-1:1995

Unicode tel qu'il est utilisé en Corée

GB 13000.1-93

Unicode tel qu'il est utilisé en Chine

Unicode

Il y avait initialement deux tentatives de créer un je de caractères exhaustif : Unicode et ISO 10646-1. Elles sont toujours disjointes, mais compatibles. Ainsi, Unicode 3 etISO 10646-1:2000 coïncident.

UCS-2

Codage d'UCS sur 2 octets : pour transformer un caractère ASCII en UCS-2, il suffit de rajouter un0x00 devant (certains logiciels n'aiment pas, car ils utilisent0x00 pour indiquer la fin des chaînes de caractères).

UCS-4

Codage d'UCS sur 4 octets : pour transformer un caractère ASCII en UCS-2, il suffit de rajouter trois 0x00 devant (certains logiciels n'aiment pas).

UTF-8

Codage d'UCS sur un à six octets (en pratique, ça ne dépasse pas trois).

Omega est une implémentation de TeX qui reconnait naturellement Unicode. On le lance en tapantomega (si on utilise Plain TeX) oulambda (si on utilise LaTeX). Les programmesxdvi etdvips sont remplacés paroxdvi etodvips. Pour l'utilisateur, il n'y a rien de changé. Ce n'est pas obligatoire, mais on peut taper le texte en Unicode (tous les éditeurs de texte ne reconnaissent pas encore Unicode). Voici un exemple avec du grec (je ne parle pas du tout cette langue --- l'exemple n'est donc pas de moi) mais pas Unicode.

Si vous utilisez Unicode (UTF-8), vous pouvez procéder ainsi (sans jamais avoir à préciser de quelle langue il s'agit).


6 Métafont

6.1 Qu'est-ce que métafont ?

C'est un langage de description de fontes et un programme, écrit par D. Knuth, pour être utilisé avec (La)TeX. C'est un vrai langage de programmation, dont l'utilisation est décrite dans leMetafont book Vous pouvez aussi regarder la documentation accompagnantMétaPost. Nous avons déjà vu un exemple de fichier Métafont plus haut (3.2)

6.2 Comment utiliser Métafont ? Comment visualiser des fichiers Métafont ?

Il suffit généralement de l'invoquer avec en argument le nom du fichier que l'on désire compiler.

Si cela ne marche pas, vous pouvez essayer
Cette fois-ci, s'il râle encore, tapezq puis Entrée (et croisez les doigts).

Généralement, vous n'avez pas un seul fichier Métafont, mais une ribambelle (parfois un par lettre). Il ne faut pas les compiler tous : ils ne sont pas faits pour être compilés de manière isolée, mais pour l'être ensemble. Il y a un (ou plusieurs) fichiers Métafont qui va charger tous les autres : généralement ceux dont le nom se termine par un chiffre (c'est à peu près la même différence qu'entre les fichiers*.c et*.h si vous programmez en C).

Il est possible de visualiser le résultat à l'aide de la commandegftodvi.
Je ne sais pas si tout le monde est comme moi, mais à chaque fois que j'utilisegftodvi et que j'essaie de visualiser le résultat,xdvi a des problèmes avec la fontegray. Il y a quelques années, il se contentait de ne pas la trouver (j'utilisais visiblement une distribution de LaTeX un peu trop minimaliste). Récemment, j'ai constaté qu'il y avait plusieurs fichiers contenant ce genre de fonte : un pour chaque type d'imprimante. Le fichiergray.mf va charger celui pour les imprimantescx, alors quexdvi a lancémetafont pour une imprimanteljfour. Pour que cela marche quand même, on peut procéder ainsi :
Voici le résultat final. L'image au format GIF (celle que vous voyez si vous regardez ce documen en HTML) est très laide et n'est pas un reflet fidèle du résultat degftodvi : normalement, le trait est d'un beau gris et laisse voir les points de contrôle.

6.3 Comment réaliser un catalogue de fontes Métafont ?

La situation est la suivante : vous avez récupéré quelques dizaines de fontes au format Métafont et vous aimeriez en choisir une pour votre prochain document. Pour cela, il faudrait pouvoir les visualiser toutes en même temps. Comment faire ?

La première solution consiste à regarder si lecatalogue que l'ai réalisé en 1998 n'est pas devenu trop obsolète.

Une autre solution consiste à utiliser le mêmescript que moi.(Attention, il ne marche pas toujours très bien : restez à côté et surveillez-le.)

6.4 Comment utiliser une fonte Métafont de manière ponctuelle dans un document LaTeX ?

Après avoir récupéré (ou écrit) une fonte, vous ne disposez que de fichiers Métafont. LaTeX a aussi (surtout) besoin des métriques : si votre version de LaTeX n'est pas trop récente, il faut les créer vous-même. On peut procéder ainsi. C'est Métafont qui crée les métriques en même temps que les fichiers*.gf.

Comme précédemment, si métafont râle et s'arrête, tapezq puisentrée.

Si vous désirez installer ces fontes, vous pouvez mettre les fichiers*.mf quelque part dans dans$TEXMF/fonts/ ou$TEXMF/mf/ (???) et les métriques*.tfm dans$TEXMF/fonts/tfm/. (L'arborescence est détaillée dans le fichier$TEXMF/web2c/texmf.cnf (voir3.4) Mais si les fichiers sont dans le répertoire courrant, LaTeX et Métafont vont les trouver sans problème.

Il faut maintenant utiliser ces fontes. Premier cas : il y a une extension, ie, un fichier*.sty, qui accompagne la fonte. Il définit des commandes permettant de l'utiliser. Il faut mettre ce fichier, ainsi qu'un éventuel fichier*.fd, là où LaTeX saura le trouver, par exemple dans$TEXMF/tex/latex/local/.

Mais souvent, ce fichier n'existe pas : il faut le créer (voir4.6). Un exemple valant mieux qu'un long discours, supposons que nous ayons récupéré des fichierstoto5.mf,toto7.mf,toto10.mf, correspondant respectivement aux dessins des caractères en 5 points, 7 points et 10 points. (Les fichiers *.mf dont le nom ne se termine pas par un chiffre sont généralement des fichiers inclus par les trois fichiers précédents et ne sont pas utilisables seuls.) Les lignes suivantes définissent des commandes\texttutu et\mathtutu pour utiliser cette fonte en mode texte et en mode mathématique respectivement (voir4.13).

Si on tient à faire les choses proprement, on peut créer deux fichiers, le premier,toto.sty, appelé explicitement par l'utilisateur par la commande\usepackage, contenant
Le second,ututu.fd (leu initial est le codage), appelé automatiquement par LaTeX s'il en a besoin, contenant
Il convient de placer ces fichiers là où LaTeX saura les trouver, par exemple$TEXMF/tex/latex/local/.

6.5 Comment utiliser une fonte MF comme fonte par défaut dans un document LaTeX ?

Il suffit de redéfinir les commandes\encodingdefault,\rmdefault,\itdefault,\sfdefault et\bfdefault dans le fichier*.sty que l'on a créé.

Mais dans cet exemple il n'y a qu'une seule fonte : ce n'est pas suffisant. Il faut au moins des fontes maigre droite, maigre italique, grasse droite et grasse italique.

6.6 Comment utiliser plusieures fontes MF comme fonte par défaut dans un document LaTeX ?

Supposons maintenant que nous ayons des fontestoto_maigre_droit.mf,toto_maigre_italique.mf,toto_gras_droit.mf,toto_gras_italique.mf : comment en faire les fontes par défaut du document ?

Dans le fichiert1toto.fd :

Dans le fichiertoto.sty :

6.7 Comment peut-on modifier une fonte Métafont ?

Cela dépend bien évidemment de la fonte. Prenons l'exemple de la fontecmr10. Le début du fichier est une liste de paramètres que l'on peut modifier. Cette liste est vraiment très longue et je n'ai jamais eu le courrage de la modifier. Pour des exemples de fontes Computer Modern Modifiées, vous pouvez regarder les fontes CMBright (le fichierbr10pt.mf),cmff10.mf, ou les fontes accompagnantmathkit.

6.8 Peut-on transformer une fonte Métafont en une fonte PostScript ?

Oui, avecmf2ps (je n'ai pas regardé comment cela marchait) A FAIRE ou avecmf2pt3 (un petit script en Perl qui utilise MétaPost).

6.9 Peut-on transformer une fonte Métafont en une fonte PostSCript de type 1 ?

Pas vraiment : les fontes Métafont sont décrites comme le chemin parcourru par un « crayon » de forme ellipsoïdale, alors que les fontes PostScript sont décrites par uncontour qui est ensuite remplis. Le passage de l'un à l'autre est, parait-il, un problème de géométrie algorithmiquenon trivial. Néanmoins,Métafog (logiciel commercial) permet cette conversion.

6.10 Peut-on convertir une fonte Métafont en fonte True Type ? Peut-on utiliser les fontes Computer Modern avec d'autres logiciels que TeX ?

Pour la conversion, je ne sais pas trop (regardez du côté deMétafog). Il existe des versionsPostScript etTrue Type des fontes Computer Modern, qui sont donc utilisables par d'autres logiciels.


7 Fontes PostScript

7.1 Qu'est-ce que le PostScript ?

LePostScript est un langage de description de page, conçu parAdobe et reconnu par certaines imprimantes. C'est un vrai langage de programmation (avec des variables, éventuellement locales, des fonctions, de la récursivité, des boucles, des conditionnelles, etc.). Il n'est pas nécessaire de le connaître pour utiliser des fontes PostScript, mais nous allons quand même présenter brièvement le langage. Le lecteur « normal » est prié de passer à la question suivante.

Pour que l'ordinateur reconnaisse facilement un fichier PostScript, ses deux premiers caractères doivent être%!.

Le caractère% est utilisé pour annoncer un commentaire, qui s'étend jusqu'à la fin de la ligne. Cela nous permet de comprendre le comprendre le début de la plupart des fichiers PostScript.

La première ligne indique leniveau (i.e., la version) du langage PostScript utilisée (il y en a trois : 1, 2 et 3 : à chaque fois on ajoute quelques possibilités supplémentaires ; attention à ne pas envoyer un fichier PostScript de niveau 3 à une imprimante qui ne connait que le 2). Les lignes suivantes sont des commantaires indiquant l'origine du fichier ou sa structure (par exemple, la « bounding box », ie, la taille de la page, ou le nombre de pages, pour les logiciels qui voudraient n'en extraire que quelques unes). Les commentaires qui commencent par%% répondent à une syntaxe très précise et facilitent la manipulation des fichiers PostScript par divers logiciels.

Pour nos premiers essais en PostScript, nous utiliserons l'interpréteur PostScriptghostscript.

Nous pouvons maintenant commencer à programmer un peu en PostScript. C'est un langage à pile : quand on lui donne des données, par exemple, des nombres, il les met sur une pile. Quand on lui donne une commande, qui attend des arguments, il les prend sur la pile. Ainsi, pour calculer « 1 + 1 », on tapera1 1 add et le résultat se retrouvera sur la pile. la commandepstack demande àghostscript d'afficher la pile. Les opérations élémentaires sontadd,sub,mul,div,mod,idiv (division entre entiers),abs,neg,ceiling,floor,round,truncate,sqrt,atan,cos,sin,ln,log,exp (deux arguments : la base, puis l'exposant),rand (entier aléatoire),srand. On remarquera que la notion de pile permet de se débarasser complètement des parenthèses. L'exemple suivant calcule « (1+2)*3 » et « 9*(1+2) ».

Voici un exemple d'utilisation de nombres au hasard.

Expliquons maintenant comment dessiner en PostScript. On commence par définir un « chemin », i.e., un morceau de dessinnon encore dessiné. On peut ensuite tracer de chemin, le colorier, écrire du texte le long de ce chemin, s'en servir comme d'un pochoir, etc. Il importe de bien comprendre que ces deux opérations, la description du chemin et son tracé, sont distinctes. La commandenewpath commence un nouveau chemin. La commandemoveto permet de se déplacer sans rien ajouter au chemin. La commandelineto permet de se déplacer en ajoutant un segment au chemin courrant. Ces deux commandes prennent deux coordonnées en argument (i.e., sur la pile). La commandeclosepath referme le chemin courrant (c'est nécessaire si on veut un chemin fermé, par exemple pour colorier la zône entourrée par le chemin). Enfin, la commandestroke trace le chemin alors que la commandefill remplit la surface qu'il délimite.

La commandearc permet de tracer des cercles ou des arcs de cercle. Ses deux premiers arguments définissent le centre du cercle, le suivant, son rayon et les deux derniers les angles (en degrés) entre lesquels l'arc sera tracé, dans le sens trigonométrique. Si jamais il y a un point courrant, l'interpréteur tracera aussi un segment de ce point vers le premier point de l'arc --- mais si on trace l'arc juste après la commandenewpath, il n'y a pas de point courrant.

La commandearcn trace des arcs de cercle dans le sens des aiguilles d'une montre.

La commandecurveto prend six arguments et trace des courbes de Bézier : les quatre points de contrôle sont le point courrant et les trois points dont les coordonnées sont prises sur la pile.

Pour utiliser une fonte, on commence par la commandefindfont, qui attend un nom de fonte sur la pile et qui renvoie une structure de donnée (on parle dedictionnaire) décrivant cette fonte (en particulier les métriques et le code PostScript pour dessiner chaque caractère). On remarquera que le nom de la fonte est précédé d'un slash (c'est comme cela que l'on indique lenom des variables ou des fonctions, par opposition à leur valeur). La commandescalefont transforme cette structure de donnée pour que la fonte soit à la taille désirée. Finalement, la commandesetfont prend cette structure de donnée et fait de la fonte qu'elle décrit la fonte courrante : on peut maintenant l'utiliser. Les chaînes de caractères sont entre parenthèses (et non pas entre guillemets, comme dans beaucoup de langages de programmation). On utilise la commandeshow pour dessiner les caractères.

La plupart du temps (i.e., pour les fontes de type 1), la commandeshow se contente d'appeler les commandescharpath pour construire un chemin, le contour des caractères, puisfill pour le remplir. (La commandecharpath attend un autre argument, qui sera toujoursfalse.)
On peut alors utiliser ce chemin à d'autres fins : ici, nous ne traçons que le contour des caractères. Nous verrons d'autres exemples plus loin.

L'état graphique désigne l'ensemble des caractéristiques du prochain élément qui sera dessiné : le chemin courrant, la position courrante, le niveau de gris (ou la couleur), le type de pointillés, l'orientation (plus généralement, la matrice de passage entre les coordonnées de la page et celles de l'utilisateur), la fonte courrante, le pochoir courrant, etc. La commandetranslate permet de déplacer le dessin (elle s'utilise avant que le chemin ne soit défini).

De même, la commanderotate permet d'effectuer une rotation.
Il s'agit d'une rotation par rapport à l'origine : si on veut effectuer la rotation autour d'un autre point, il convient de commencer par une translation.
La commandesetlinewidth permet de modifier l'épaisseur des traits.
La commandesetgray permet de définir le niveau de gris, entre0 (noir) et1 (blanc).
La commandesetrgbcolor permet de choisir la couleur : les trois paramètres varient entre 0 et 1. Par exemple, blanc =1 1 1, noir =0 0 0, jaune =1 1 0, cyan =0 1 1, magenta =1 0 1.
La commandescale permet d'étirer (ou de contracter) les axes de coordonnées. Cela permet par exemple de tracer des ellipses.
Il est possible de combiner les commandesscale etrotate, par exemple pour obtenir des ellipses orientées dans un sens quelconque. On fera attention à l'ordre de ces deux opérateurs.
La commandesetdash permet de définir le type de pointillés : le premier argument est un tableau, indiquant la longueur du trait, puis la longueur du vide, puis la longueur du vide, etc. et le second argument est toujours0 (voir le manuel pour les détails).
Il y a d'autres éléments dans l'état graphique :setlinecap,setlinejoin,setmiterlimit, bien expliqués dans le manuel.

Les commandesgsave etgrestore permettent de sauvegarder l'état graphique courrant (en le plaçant sur une pile) et de le récupérer. Cela permet par exemple de changer les coordonnées à grands coups detranslate,rotate ouscale sans que cela ait de conséquence sur le reste du dessin. En d'autres termes, les modifications effectuées à l'état graphique entregsave etgrestore sont locales.

On a aussi recours à ces commandes quand on veut utiliser plusieures fois un même chemin.

On définit une fonction PostScript de la manière suivante :/toto { ... } def, oùtoto est le nom de la fonction (quand on veut donner à l'interpréteur lenom d'une fonction, on le fait précéder d'un slash) et les pointillés contiennent le corps de la fonction. Voici un exemple de fonction qui trace un cercle de rayon 50.

Les éventuels paramètres sont passés par l'intermédiaire de la pile. la fonction suivante trace des cercles de rayon donné.
La commandebind def est l'équivalent PostScript du\edef de TeX : elle remplace toutes les fonctions appelées par la fonction que l'on définit par leur définition, de manière à accélérer l'exécution et à court-circuiter d'éventuelles redéfinitions.

L'une des manières d'écrire des fonctions qui prennent des paramètres consiste à savoir manipuler les éléments sur la pile. La commandepop permet de se débarasser du premier élément de la pile. La commandedup permet de le dupliquer (pour les cas où on en aurait besoin à plusieures reprises). La commandeexch permet d'échanger les deux premiers éléments de la pile. La commandeindex prend un argument,n, et duplique le (n+1)ième élément de la pile.

La commande1 roll prend un argument (en plus du1 que j'ai déjà mis),n, et va effectuer une rotation sur lesn premiers éléments de la pile, de manière que le 2ième élément se retrouve en premier et que le premier se retrouve à lanième place.
La commandeclear efface tout le contenu de la pile et la commandecount compte le nombre total d'éléments de la pile : ces commandes ne sont pas vraiment utilisables, car il est toujours possible qu'une autre partie du programme ait mis des données sur la pile. Pour rendre les choses un peu plus locales, la commandemark met une marque sur la pile et les commandecleartomark etcounttomark n'affectent que la partie de la pile jusqu'à la marque. Nous reparlerons des marques quand nous rencontrerons des tableaux ou des dictionnaires (ie, des tables de hachage).

La commanderepeat répète une procédure un nombre de fois fixé.

La commandeloop est une boucle infinie dont on sort par la commandeexit.
EXEMPLE avecexit. La commandefor est une boucle plus évoluée : elle attend sur la pile, la valeur de départ du compteur, sont incrémentation et sa valeur finale. À chaque exécution de la boucle, on se retrouve avec la valeur du paramètre sur la pile (si on n'en a pas besoin, on peut s'en débarasser avecpop --- mais alors, la commanderepeat aurait peut-être été préférable).

Passons maintenant aux conditionnelles : la commandeif attend un booléen et un bloc sur la pile ; la commandeifelse attend un booléen et deux blocs sur la pile. Les différentes opérations booléennes sonteq (égalité),ne (non égalité),lt (inférieur à),gt (supérieur à),le (inférieur ou égal à),ge (supérieur ou égal à),and,or,not,xor,true,false.

Il est possible de définir destableaux et de les manipuler avec les commandes[,],array,length,get,put,forall, etc.

Lesdictionnaires sont une autre structure de donnée très utile : ce sont des tables de hachage. On définit un nouveau dictionnaire en donnant sa taille (nombre d'entrées) à la commandedict. Le dictionnaire vide est alors sur la pile. Comme on en aura besoin par la suite, on peut le mettre dans une variable (c'est juste un pointeur). Pour mettre des choses dedans, on va l'ouvrir, avec la commandebegin : il disparait alors de la pile (et s'en va sur une autre pile, celle des dictionnaires). on peut alors rajouter des entrées dedans, à l'aide de la commandedef. Quand on en a fini avec, on le ferme, à l'aide de la commandeend.

Les commandes<< et>> sont un raccourci pour créer des dictionnaires.
On pourrait définir la commande<< comme étantmark et la commande>> comme suit.
Il est possible d'extraire ou de modifier le contenu d'un dictionnaire sans l'ouvrir, à l'aide des commandesget etput
Le manuel mentionne d'autres commandes pour manipuler des dictionnaires :load,undef,known,copy (attention : les dictionnaires sont en fait des pointeurs, il ne faut donc pas les copier « naïvement »),forall, etc.

Les dictionnaires permettent aussi de créer des variables locales. Par exemple, si vous voulez utiliser des variables qui ont un nom très simple, du genre/a,/b, alors que des variables de même nom sont utilisées dans une autre partie du programme, vous pouvez créer un dictionnaire qui contiendra les variables locales de cette partie du programme : pour d'autre langages de programmation, on parlerait d'espaces de noms. Par exemple,dvips fait cela automatiquement quand il inclut des fichiers PostScript --- car ils sont parfois mal programmés...

Il est aussi possible de manipuler les chaines de caractères, des fichiers, mais nous n'en parlerons pas (voir le manuel).

La commandeclip prend le chemin courrant et l'utilise commepochoir : lors des tracés suivants, seules les parties du dessin qui sont dans le pochoir seront tracées.

Il y a quelquad temps, en cherchant à « affiner » une fonte grasse, j'ai pensé utiliser ce genre de chose (la manipulation équivalente marche très bien pour épaissir des caractères), mais ce n'était pas une bonne idée :

À partir du niveau 2, les pochoirs peuvent être un peu plus compliqués. Je donne juste un exemple et je renvoie au manuel pour les détails.

***** A FAIRE : Images bitmap *****

7.2 Qu'est-ce qu'une fonte PostScript ?

Unefonte PostScript est un dictionnaire (au sens PostScript) contenant des procédures permettant de dessiner les différents caractères. ***** A FAIRE : donner une liste de quelques unes des entrées de ce dictionnaire. ***** Il y a plusieurs types de fontes PostScript :

Type 1

La plupart des fontes PostScript sont de type 1. Elles comportent au plus 256 caractères. Les procédures PostScript qui décrivent les glyphes ne sont pas quelconques : elles ne peuvent utiliser qu'une partie du langage PostScript, de manière que l'on puisse être sûr que le caractère sera toujours tracé de la même manière, sans qu'il utilise des variables extérieures, sans qu'il produise d'erreur, sans qu'il entraine des effets de bord. De surcroît, ces prodédures sont codées (un peu comme les chemins utilisateurs peuvent l'être). Dernier point, les procédures qui décrivent les glyphes le définissent que leur contour, mais ne le remplissent pas.

Type 3

Les fontes de type 3 sont comme les fontes de type 1 sans toutes ces restrictions : les procédures tracent vraiment les caractères, elles ne sont pas codées et peuvent contenir absolument n'importe quoi (on supposera quand même qu'elles ne provoquent pas d'erreurs, mais on n'en est pas sûr). Les fontes bitmap utilisées par TeX sont de type 3

Type 0

Les fontes de type 0 sont des fontes composites : il ne s'agit pas d'une unique fonte mais d'un ensemble de fontes. Cela permet de dépasser la limite des 256 caractères par fonte et ainsi d'imprimer facilement du texte dans des langues idéographiques. Pour de plus amples renseignements, voir CJK (5.6).

Type 42

C'est une fonte True Type légèrement modifiée pour être reconnue par l'interpréteur PostScript.

Type 2

Fonte CFF (Compact Font Format)

Types 9, 10, 11 32

CID-keyed fonts

Type 14

Fonte Chameleon

A FAIRE : donner des exemples de fontes.

7.3 Comment créer soi-même une fonte PostScript de type 3 ?

Voici un exemple de fonte PostScript de type 3 (tiré du manuel).

***** J'ai oublié de parler des métriques *****

7.4 Comment créer soi-même une fonte PostScript de type 1 ?

***** A FAIRE *****

7.5 Comment avoir les contours d'une fonte de type 1 ?

Il suffit de modifier l'entréePaintType de son dictionnaire (mettre 2 à la place de 0) et de rajouter une entréeStrokeWidth. L'essai naïf suivant ne marche pas, car le dictionnaire que l'on essaie de modifier n'est accessible qu'en lecture. C'est le cas de toutes les fontes, même celles que l'on aurait définies soi-mêmes : tant qu'on n'a pas transformé le dictionnaire en fonte à l'aide de la commandedefinefont, on peut en faire ce que l'on veut, mais après, tout est figé.

On va donc copier le dictionnaire définissant la fonte, le modifier et en faire une fonte.

7.6 Comment transformer une fonte de type 1 en une fonte de type 3 ?

***** A FAIRE ***** Je suggère de procéder ainsi : partir d'une fonte*.pfa, la décoder à l'aide det1disasm,

Changer la valeur deFontType
Rajouter les commandesBuildChar (qui attent un dictionnaire et un nom de caractère sur la pile et dessine ce caractère) etBuildGlyph (idem, mais avec le numéro du caractère).
Ensuite, je constate que ça ne parche pas. *********** Autre idée : dans les divers fichiers de GhostScript, on trouve ceci.
Mais je crais que.type1execchar soit propre à GhostScript. ******* A COMPRENDRE

7.7 Comment changer le codage d'une fonte PostScript ?

On procède comme précédemment, avec la variableEncoding de la fonte. L'exemple suivant intervertit les lettres A et B.

Généralement, on se contente de reprendre un codage déjà existant (voir).

7.8 Comment mettre des commandes PostScript dans un fichier LaTeX ?

On peut par exemple utiliser PSTricks. (Normalement, on n'utilise pas PSTricks ainsi : il y a déjà plein de commandes déjà définies qui permettent de faire à peu près tout ce que l'on veut, plus simplement et plus sûrement que si on devait programmer soi-même en PostScript.)

On peut aussi utiliser la commande\special, mais ce n'est pas portable.

7.9 Comment visualiser une fonte PostScript ?

Bonne question. J'imagine deux solutions : soit utiliser directement ghostscript pour visualiser la fonte, soit passer par LaTeX pour créer un fichier PostScript l'utilisant puis utiliser ghostscript pour le visualiser. Regardons la première solution (pour la deuxième, voir la question suivante). Si Ghostscript connait déjà la fonte, on peut simplement lui dire

Mais bien évidemment, les situations intéressantes sont celles où il ne connait pas la fonte. Il faut donc l'inclure dans le fichier. Pour cela, nous avons besoin de connaître le nom PostScript de la fonte (qu n'a rien à voir avec le nom du fichier) : il est indiqué dans le fichier, dans une ligne du genre
Notre fonte s'appelle doncToto (la majuscule est importante). Pour visualiser la fonte, on devrait pouvoir procéder ainsi :

Il y a aussi un programme en PostScript, qui vient avec Ghostscript et qui fait cela. On lance Ghostscript avec le nom de la fonte et le nom du programme,

Ensuite, on tape les commandes suivantes au prompt de Ghostscript (ici encore,Utopia-Regular est le nom PostScript de la fonte, qui n'est peut-être pas le même que celui du fichier).
On constate que cela marche très avec les fontes*.pfa mais pas du tout avec des*.pfb : par contre, il suffit de convertir les fichiers*.pfb en*.pfa à l'aide depfb2pfa.
On peut automatiser cela de la manière suivante.
Si on préfère GhostView, pour pouvoir par exemple zoomer sur certaines parties de la page (avecprfont.ps, il vaut mieux éviter GhostView), on peut automatiser les choses ainsi.

7.10 Comment réaliser un catalogue de fontes PostScript ?

On peut par exemple procéder ainsi (je suppose que le codage des fontes est celui d'Adobe : avec des fontes T1 ou autres, le résultat sera bizarre). [Question : le codage n'est-il pas indiqué dans la fonte elle-même ? S'il n'est pas indiqué, il n'y a pas trop d'espoir de parvenir à un script qui permette de faire les choses automatiquement, par contre, si le codage est précisé, cela ne devrait pas poser de problème.]

Le fichierTemplate.tex est le même que celui que nous avons utilisé pour réaliser un catalogue de fontes TTF. Voici quelques exemples de résultats :free fonts (gimp),sharefonts (gimp),.

7.11 Y a-t-il des versions PostScript des fontes Computer Modern ?

Oui, ce sont celles utilisées par défaut parpdftex. Si on veut les utiliser avec TeX, il suffit de demander àdvips de lire le fichiercm.map (voir). Toutefois, ces fontes n'existent qu'avec le codageOT1 : si on préfère le codageT1, on peut utiliser les fontes virtuellesae.

7.12 Comment dire à dvips quelles sont les fontes PostScript ?

La liste des correspondances entre les noms de fontes utilisés par LaTeX, le nom des fontes PostSCript et le nom des fichiers les contenant est stockée dans des fichiers*.map. Le fichierpsfonts.map contient la liste des fontes PostScript standard. Si on crée un fichierpsfonts.map dans le répertoire courrant, c'est lui qui sera lu et pas celui par défaut (c'est ce que l'on peut faire si on veut essayer uen fonte sans vraiment l'installer). Pour rajouter des fontes à cette liste, il suffit de modifier le fichier de configuration général dedvips,config.ps ou le fichier de configuration propre à chaque utilisateur, par défaut~/.dvipsrc. Par exemple, pour demander àdvips d'utiliser les fontes PostSCript mentionnées dans le fichiertoto.map, il suffit de rajouter la ligne suivante à la fin de son~/.dvipsrc.

7.13 Comment utiliser une fonte PostScript de manière ponctuelle dans un document LaTeX ?

Tout d'abord, ne nous préoccupons pas du codage des fontes. (Si vous voulez tout de suite la bonne réponse, passez à la question suivante.)

Prenons une fonte PostScript : deux fichiers,toto.afm ettoto.pfb. (Si ce n'est pas le cas, vous risquez d'avoir des problèmes : Sur PC, on trouve parfois un fichier*.pfm à la place, que l'on peut convertir grace àpfm2afm (je n'ai pas essayé). Si vous n'avez rien, on peut en obtenir grace à la commandepf2afm (c'est un programme en PostScript), mais le résultat sera de pauvre qualité : tout ce que l'on peut faire, c'est prétendre que la taille des caractères est exactement celle de la plus petite boite qui les contient ; pour des caractères très penchés, l'effet est desastreux (j'ai déjà essayé)) LaTeX a besoin des métriques au format*.tfm :

et dvips a besoin de savoir où trouver la fontes, rajouter la ligne suivante dans psfonts.map :
En fait, ce n'est pas exactement cette ligne-là : le premiertoto est le nom de la fonte pour LaTeX, le second est le nom postscript de la fonte (qui est précisé dans le fichier postscript, ici, ce pourrait êtreToto) et le dernier est le nom du fichier contenant la fonte. Le premier et le dernier sont connus et la commandeafm2tfm peut nous donner le second. On peu automatiser cela :
On peut ensuite essayer de l'utiliser comme d'habitude :
On n'a pas du tout tenu compte du codage de la fonte : les caractères accentués ne passent pas du tout. Remarquons quexdvi est normalement capable, tout seul, de créer les fontes bitmap (*pk) pour visualiser un document contenant des fontes postscript (pourvu, bien sûr, qu'il trouve le fichierpsfonts.map). Il lance la commandemktexpk,
qui a son tour lancegsftopk
(à la place degsftopk, on peut aussi utiliserps2pk). Pour accélérer les choses (i.e., pour éviter qu'il ne commence par chercher partout s'il n'y a pas déjà un fichier*.pk quelque part, puis un fichier*.mf qui permettrait de le créer, puis un fichier*.hbf qui permettrait de le créer, puis un fichier*.ttf qui permettrait de le créer --- ce qui peut prendre du temps), on peut lancer cette commande soi-même.

7.14 Comment utiliser une fonte PostScript de manière ponctuelle dans un document LaTeX (en tenant compte du codage) ?

(Suite de la question précédente)

Cette fois-ci, il va falloir utiliser la commandeafm2tfm de manière plus pertinente : on peut lui demander de changer le codage. [Question : pourquoi ne demande-t-on pas à LaTeX d'utiliser le codage de la fonte ? À cause des problèmes de césure pour les lettres accentuées ?] La documentation deafm2tfm est dans le manuel dedvips.

La première ligne crée un fichier*.tfm (avec le mauvais codage) ainsi qu'un fichier*.vpl, qui contient une description humainement lisible de la fonte virtuelle. La deuxième ligne transforme le fichier*.vpl en des fichiers *.tfm (avec le bon codage) et en une fonte virtuelle*.vf compréhensible par l'ordinateur. QUESTION : parfois, je met des choses du genre « t1.enc », parfois « ec.enc » : quelle est la diffférence ? [Réponse : aucune, sauf que EC n'est normalement pas un codage mais une fonte utilisant le codage Cork, aussi connus sous le nom de T1 ou 8t. Il faudrait remplacer tous lesec.enc par dest1.enc.] Il faut aussi modifier le fichier psfonts.map, en lui disant qu'il faut changer le codage :
On automatise cela comme précédemment.
Sur le même exemple que tout-à-l'heure, on constate que cela marche.

7.15 Comment utiliser plusieures fontes PostScript de manière ponctuelle dans un document LaTeX ?

Cette fois, il ne s'agit pas d'une unique fonte PostScript, mais plusieures, une fonte normale, une fonte grasse, une fonte italique et une fonte italique grasse. Par exemple des fichiersbg3r.pfb,bg3b.pfb,bg3ri.pfb etbg3bi.pfb, avec les métriques*.afm correspondantes. On procéde comme dans la question précédente, pour créer les fontes virtuelles et on peut les utiliser ainsi. (Il manque un exemple. Prendre le même que pour les fontes MF.)

7.16 Comment utiliser une fonte PostScript comme fonte par défaut dans un document LaTeX ?

Comme pour la question précédente.

Pour plus de détails sur l'utilisation des fontes PostScript sous LaTeX, on peut consulter la page de????.

7.17 Comment utiliser une fonte PostScript de manière ponctuelle dans un document LaTeX (vieille version de la même question --- à effacer) ?

Pour certaines fontes, il y a déjà une extension toute faite : c'est le cas des fontes Times ou Helvetica évoqués plus haut. Sinon, c'est un peu plus compliqué.

Attention : je n'ai pas encore essayé ce qui suit.

Supposons que vous ayez une fonte postscript, ie, deux fichier appelés par exempletoto.afm ettoto.pfa.

Si vous n'avez pas de fichier*.afm, ça ne va pas marcher : ce sont les métriques, ie, la taille des caractères. Sur PC, on trouve parfois un fichier*.pfm à la place, que l'on peut convertir grace àpfm2afm (je n'ai pas essayé). Si vous n'avez rien, on peut en obtenir grace à la commandepf2afm, mais le résultat sera de pauvre qualité : tout ce que l'on peut faire, c'est prétendre que la taille des caractères est exactement celle de la plus petite boite qui les contient ; pour des caractères très penchés, l'effet est desastreux (j'ai déjà essayé).

Si vous avez un fichier*.pfb à la place d'un fichier*.pfa, ce n'est pas grave, ils contiennent exactement la même chose, sous des formats légèrement différents. On peut passer de l'un à l'autre à l'aide des commandespfb2pfa oupfb2pfa (je sais, elles ont toutes deux le même nom). (je n'ai jamais essayé.)

Tapons maintenant

et rajoutons la ligne suivante dans le fichierpsfonts.map

On peut dès lors déclarer la fonte de la manière suivante (on peut mettre les lignes suivantes dans un fichiert1toto.fd)

On peut remplacerm parbx pour avoir du gras étendu oun parit pour avoir de l'italique. Il peut aussi y avoir plusieurs lignes de ce type.

On peut utiliser notre fonte de deux manières différentes : soit comme la fonte principale du document,

soit de manière ponctuelle, tant dans le texte qu'en mode mathématique

Voici le même exemple, complet (non, testé).

Il est peut-être possible de visualiser le résultat avec xdvi, mais je ne sais pas comment. Il s'agit soit de patcher le script MakeTeXPK (qui ne s'appelle d'ailleurs plus ainsi, il n'y a plus que des minuscules et certaines lettres ont disparu), pour que les fichiers*.pk nécessaires soient crés au vol, soit de les créer préalablement, à la main. Le problème est donc le suivant : comment créer des fichiers*.pk à partir de fichiers*.pfa ? gsftopk ? Oui.

7.18 Comment pencher une fonte PostScript ?

Rajouter l'option-s .3 (avec éventuellement un autre chiffre --- c'est la tangente de l'angle d'inclinaison désiré) quand on lanceafm2tfm.

Dans le fichierpsfonts.map, on rajoute une ligne du genre
***** RAJOUTER UN EXEMPLE *****

7.19 Comment élargir ou condenser une fonte PostSCript ?

Rajouter l'option-e 1.5 (avec éventuellement un autre chiffre --- c'est le facteur d'élargissement) quand on lanceafm2tfm.

Dans le fichierpsfonts.map, on rajoute une ligne du genre
***** RAJOUTER UN EXEMPLE *****

7.20 Comment récupérer une fonte PostScript utilisée dans un fichier PDF ?

Une manière simple de procéder consiste à le convertir préalablement en PostScript, à l'aide de Ghostview (pdf2ps) ou d'Acrobat.

Vous constaterez probablement (comme moi) que les fihciers PostScript que l'on obtient sont très étranges et que les suggestions de la question suivante inefficaces. ***** A DETAILLER *****

7.21 Comment récupérer une fonte PostScript utilisée dans un fichier PostScript ?

***** A FAIRE ***** Avant tout, il convient de rappeler que si les fontes sont commerciales, c'est bien évidemment illégal et que les fontes présentes dans un fichier PostScript sont souvent incomplètes et ne comportent que les caractères effectivement utilisés dans le fichier.

Je suppose que le fichier est bien structuré, avec des commentaires indiquant le début des fontes. On le coupe alors en morceaux :

On coupe ensuite juste après la commandecleartomark (car on constate que les fichiers*.pfa se terminent ainsi).
Vous avez maintenant vos nouvelles fontes PostScript. Il peut y avoir un problème avec les métriques (qui sont absentes) et peut-être aussi avec le codage.


8 Fontes True Type (TTF)

8.1 Qu'est-ce qu'une fonte True Type ?

Voir lemanuel de référence, chez Adobe, ou la documentation deMiniMou.

8.2 Comment créer une fonte True Type ? Comment modifier une fonte True Type existante ?

Après avoir lu le manuel de référence, vous pouvez vous tourner versttf_edit (logiciel commercial) ou certains produitsMiniMou.

8.3 Comment visualiser une fonte True Type ?

Je suppose queFreeType a été installé :

(Il y a une erreur dans les lignes précédentes : il faut demander àttf2pk d'utiliserkpathsea. Pour vérifier que, contrairement à moi, vous l'avez bien fait, lancezttf2tfm --version).

Pour pouvoir utiliser les fontes TTF de manière presque transparente, sans avoir à lancer soi-mêmettf2pk, on peut modifier le scriptmktexpk (j'utilise web2c 7.2), à l'aide du patch qui se trouve dansfreetype-current/contrib/ttf2pk/scripts/web2c-7.2/. (Sur certaines distributions récentes, ce n'est pas nécessaire, car cela a déjà été fait.)

Néanmoins, dans les exemples qui suivent, je créerai les fichiers bitmap explicitement.

On peut maintenant visualiser des fontes TrueType à l'aide de la commandeftview.

Utilisez les toucheso eti pour passer à la ligne suivante ou précédente et la toucheq pour quitter le programme.

8.4 Comment réaliser un catalogue de fontes True Type ?

La situation est la suivante : vous avez récupéré quelques dizaines de fontes TTF et vous aimeriez pouvoir les comparer les unes aux autres. On peut utiliser le script suivant (à lancer dans le répertoire contenant les fontes) qui crée des images GIF pour chacune des fontes et un fichier HTML les reliant. Il ne tient pas compte des fontes ne comportant pas de lettres accentuées et indique les fontes sans crénage (kerning), donc a priori de moindre qualité.

Le fichierTemplate.tex est le suivant. Vous pouvez remplacer le texte par ce que vous voulez. Ici, je commence par écrire « Hom » avec les fontes Computer Modern avant de passer à la fonte à tester, afin de mieux pouvoir les comparer.
Si on n'a pas la commandepstogif sous la main (ce doit être un morceau de GhostScript ou de LaTeX2html), on peut convertir une image PS en une image GIF de la manière suivante (remplacer 72 par n*72, avec n suffisemment grand pour avoir des images GIF lisibles).
J'ai mis un exemple de résultat sur leWeb.

Voici une autre manière de procéder, plus simple et plus rapide : l'utilitaireftstrpnm permet de créer des fichiers*.pnm (c'est un format d'image) avec les caractères d'une fonte.

On peut rajouter la taille des images dans le fichier*.html ainsi créé de la manière suivante.

8.5 Comment utiliser une fonte True Type de manière ponctuelle dans un document LaTeX ?

Si vous voulez tout de suite une bonne réponse, passez à la question suivante. Nous allons procéder très lentement, en commettant quelques erreurs, que nous corrigerons plus loin.

On part d'un fichiertoto.ttf. Pour se mettre en confiance, on peut regarder ce qu'il contient (ce n'est pas nécessaire, mais néanmoins rassurant).

Le résultat nous dit entre autres quel sont les codages utilisés (eh oui, il y a généralement plusieurs codages dans une fonte True Type), par exemple comme suit.
Si on voit marquéWindows Unicode, ça va. (Cela revient à donner des paramètres-P 3 -E 1 àttf2tfm, mais ce sont les valeurs par défaut.) Sinon, regarder dans le fichierttf2pk.doc pour plus d'information.

Toujours pour se rassurer, on peut regarder la forme des lettres, à l'aide de la commandeftview

Créons maintenant les métriques et le fichier de configurationttf2pk. Je suppose ici que la fonte contient en fait des caractères latins (pas d'idéogrammes asiatiques).

Il faut préciser le codage utilisé (sinon, le résultat peut être étrange...). La commandetail récupère la dernière ligne, qui contient quelques informations sur la fonte nécessaires àttf2pk, pour la mettre dans le fichier de configuration dettf2pk.

On crée maintenant le fichiertoto.300pk.

Pour se rassurer, on peut vérifier que les caractères sont bien là et les visualiser.

On essaie maintenant de les utiliser...

Cela semble correct : on a même les lettres accentuées. Mais il n'y a pas de crénage (kerning). Dans beaucoup de fontes True Type, il n'y a pas ces informations : c'est le cas de l'exemple ci-dessus (c'est une fonte Microsoft). Mais dans l'exemple ci-dessous, ces informations sont présentes : dans la première ligne, LaTeX utilise les informations de crénage dont il dispose, mais pas dans la seconde.

On ne voit aucune différence : ces informations se sont perdues quelque part en chemin... Dans la question suivante, nous verrons comment les récupérer.

Il y a en fait un autre problème, beaucoup plus visible : il manque certains caractères, certaines ligatures, plus précisément. Dans l'exemple suivant, on devrait voir un trait d'union, un tiret moyen et un tiret long ; à la fin, on devrait dicerner des différences entre les ligatures fi ou fl et ces même lettres bien séparées.

8.6 Comment utiliser une fonte True Type de manière ponctuelle dans un document LaTeX ?

Nous allons maintenant voir comment utiliser correctement des fontes True Type, sans perdre d'information, comme par exemple le crénage de l'exemple précédent.

On demande àttf2tfm de créer des fontes virtuelles, en utilisant le codageT1-WGL4 (qui correspond à une traduction Unicode-->TTF (???)). Ces fontes virtuelles sont crées sous forme de fichiers*.vpl, qu'il faut encore traduire à l'aide devptovf. On peut automatiser les choses de la manière suivante.

On peut dès lors les utiliser, comme d'habitude.
Pour créer les fichiers*.pk :
Voici le résultat.
On remarque aussi que nos histoires de ligatures sont résolues.

8.7 Comment utiliser plusieures fontes True Type de manière ponctuelle dans un document LaTeX ?

C'est exactement comme pour les fontes Métafont. Voici un exemple. Je suppose que l'on a des fichiersgalirdn.ttf,galirdi.ttf,galirdb.ttf etgalirdbi.ttf

Pour créer les métriques et les fichiers bitmap, on peut procéder ainsi.
Voici le résultat.

8.8 Comment utiliser plusieures fontes True Type comme fontes par défaut dans un document LaTeX ?

C'est comme dans la question précédente, mais il faut rajouter les lignes suivantes.

On remarquera que dans cet exemple, il n'y a pas de fonte sans sérif : on peut par exemple prendre Helvetica (il conviendrait de vérifier que ces fontes se marrient bien et, le cas échéant, de les corriger, par exemple à l'aide de fontes virtuelles), en rajoutant la ligne

8.9 Comment pencher une fonte True Type ?

Il suffit donner l'option-s 0.25 (ou toute autre valeur) àttf2tfm et de le préciser dans le fichierttfonts.map, de la manière suivante.

On peut automatiser tout cela.
Essayons enfin de les utiliser.

Comme toutes les fontes que nous avons demandées ne sont pas là, LaTeX a été amené à effectuer certaines substitutions. Par exemple, en bas à gauche, nous voulions du gras italique. Comme il n'y en a pas, il a commencé par chercher du gras droit. Comme il n'y en a pas non plus, il a pris du maigre droit. À l'aide de la commandesub (et passsub : la différence, c'est que les messages d'erreur s'affichent), nous pouvons contrôler ces substitutions, en demandant à LaTeX de remplacer le gras italique par de l'italique (et non plus du gras).

8.10 Comment condenser ou élargir une fonte True Type ?

Il suffit donner l'option-e 0.7 (ou toute autre valeur) àttf2tfm et de le préciser dans le fichierttfonts.map, de la manière suivante.

On peut automatiser tout cela.
Essayons enfin de l'utiliser.

8.11 Comment avoir des petites capitales à l'aide d'une fonte TTF ?

Il s'agit ici d'obtenir de fausses petites capitales : on prend simplement des capitales plus petites. Cette solution n'est pas entièrement satisfaisante, car l'épaisseur des traits, l'espace entre les lettres, le gris de la fonte vont correspondre avec ceux d'un corps inférieur et risquent de mal se marrier avec ceux de la fonte de départ. Nous verrons plus loin comment tenter de remédier à ce problème.

Pour obtenir ces fausses petites capitales, il suffit d'utiliser l'option-V dettf2tfm à la place de-v. On peut automatiser cela de la manière suivante.

On ne voit rien de changé dans le fichierttfonts.map :
On peut ensuite les utiliser de la manière suivante.
Voici le résultat.

8.12 Comment épaissir une fonte TTF ?

Une première solution consiste à l'étendre, horizontalement (8.10).

Une autre solution consiste à utiliser fontinst ().

8.13 Comment automatiser les réponses à toutes les questions précédentes ?

Pour une fonte isolée, si on choisit d'utiliser une version étendue à la place du gras, on peut procéder ainsi.

Le fichierTemplate.sty est le suivant.
Le fichierSample.tex est le suivant.

Pour une fonte composée de deux variantes, maigre et grasse, on peut procéder ainsi.

Le fichierTemplate.sty est le suivant.
Le fichierSample.tex est le suivant.

Pour une fonte un peu plus complète, avec maigre, gras, italique et gras italique, on peut procéder ainsi.

Le fichierTemplate.sty est le suivant.
Le fichierSample.tex est le suivant.

Il y a deux problèmes dans ce que nous venons de voir : d'une part, il manque toujours certains caractères, comme le W majuscule avec un point dessus, d'autre part, quand il n'y a pas de fonte grasse, on aimerait pouvoir en bricoler une en « épaississant » les caracatères et pas en les dilatant comme nous l'avons fait. Nous allons voir que les fontes virtuelles eprmettent ce genre de chose. Il y a un autre problème, plus grave : l'absence de fonte mathématique. Il y a aussi un problème avec ces scripts : ils mettent tout dans le répertoire courrant. Idéalement, il faudrait mettre les fichiers dans $TEXMF/fonts/{truetype:vf:tfm}/ et $TEXMF/tex/generic/, modifier le fichier $TEXMF/fonts/truetype/ttfonts.map et relancer texhash.

8.14 Comment faire pour que LaTeX/xdvi/dvips soit capable de calculer les fontes bitmaps tout seul ?

Il suffit d'installer FreeType correctement, en lui demandant d'utiliser kpathsea.

Les fontes doivent être installées correctement : Effacer cette question et mettre la réponse plus haut.

Remarque : mettre la même question pour les fontes PostScript. On peut avoir plusieurs fichierspsfonts.map : comment ? Mettre cette question plus haut, avec la TDS.

8.15 Y a-t-il un moyen plus simple d'utiliser des fontes TrueType ? Est-il possible d'utiliser des fontes True Type avec pdfTeX ?

Oui. Une première solution consiste à transformer les fontes True Type en fontes PostScript, par exemple à l'aide dettf2pt1. On utilise ici la commandettf2pt1 avec l'option-b pour qu'elle produise un fichier*.pfb. (Je crois qu'il faut une option du genre-l adobestd ou-l latin1, mais vus les problèmes qui apparaitrons, ce n'est pas grave.)

On peut automatiser cela de la manière suivante.
Les fontes s'utilisent alors comme d'habitude. On crée les fontes virtuelles et les métriques.
Et le fichier LaTeX peut ressembler à cela.
Le problème, c'est que la fonte PostScript ainsi créée est souvent corrompue : c'est pour cette raison que je ne montre pas de résultat (à l'écran, ça passe, mais l'imprimante refuse).

Une autre solution, beaucoup plus satisfaisante, consiste à utiliser pdfTeX --- le format PDF reconnait les fontes TrueType. On commence exactement comme pourttf2pk.

On lance ensuitettf2afm etafm2tfm et on met le résultat danspdftex.map (ou dans un fichier*.map que vous chargerez depuispdftex.cfg.
On peut automatiser cela de la manière suivante. (Je ne rajoute pas de lignes pour obtenir des variantes penchées ou des petites capitales, car je constate que cela ne marche pas : avec GhostView, la fonte modifiée reste inchangée, avec AcroRead, elle n'est pas reconnue)
On utilise alors les fontes comme d'habitude.

8.16 Comment obtenir les caractères manquants ?

A FAIRE Il s'agit généralement de certaines lettres accentuées (le Z majuscule accent aigu -- cela dit, je ne sais pas du tout à quoi il pourrait servir...), qui ne sont pas présentes dans la fonte, ou de certaines ligatures (ct, st), qui sont présentes dans la fonte (mais visiblement pas dans le codage).

Une idée pour obtenir les caractères manquants est d'utiliser des fontes virtuelles, avecfontinst etlatin.mtx, qui va par exemple construire les lettres accentuées manquantes à l'aide des accents (s'il y en a) et des lettres non accentuées.

[Donner un exemple, modifier le script plus haut qui créait un catalogue de fontes TTF.]

On peut constater que dans la fontecomic.ttf, il y a un tiret moyen, des ligatures fl et fi : comment les obtenir ?


9 Fontes virtuelles

Avertissement : Je ne manipule pas encore très bien les fontes virtuelles, il y a probablement des erreurs et des manques dans ce qui suit. En particulier, je ne me suis jamais préoccupé des métriques des fontes que je modifiais (par exemple, quand on fait du faux gras, il faut éloigner un peu les caractères). Je ne parle pas non plus de l'utilisation de fontes PostScript (et de leurs métriques,*.afm). Je ne parle pas non plus des différents programmes qui existent sous fontinst, par exemplelatin1.mtx outextcomp.mtx. Je ne parle pas non plus des fichiers de codage*.etx.

9.1 Qu'est-ce qu'une fonte virtuelle ? Que fait-on avec ?

C'est une fonte qui n'existe pas vraiment, qui est construite à partir d'autres fontes, auxquelles on prend certains caractères, après d'éventuelles modifications.

Les fontes virtuelles premettent de

Les fontes virtuelles ne sont pas reconnues par TeX (qui ne connait que des métrique) mais au niveau des programmes qui lisent les fichiers*.dvi telsdvips ouxdvi. Les fontes virtuelles sont présentes sous forme de métriques*.tfm et de fichiers*.vf qui indiquent comment fabriquer les caractères. Ces fichiers*.vf ne sont pas humainement lisibles, on peut les décoder à l'aide devftovpl, qui les transforme en*.vpl, comme nous l'avons déjà vu plus haut (3.2).

9.2 Y a-t-il un moyen SIMPLE d'utiliser des fontes virtuelles ?

Non. On peut utiliser directement les fichiers*.vpl (c'est très compliqué) ou passer parfontinst (c'est compliqué) mais ce n'est jamais simple.

9.3 Qu'est-ce que fontinst ?

C'est un programme en TeX permettant de manipuler, modifier, créer des fontes virtuelles. C'est ce dont nous allons parler à partir de maintenant.

9.4 Comment utilise-t-on fontinst avec des fontes Métafont ?

Tout d'abord Fontinst a besoin de connaître les métriques (de manière plus générale la description) des fontes qu'il va manipuler. Il les attend sous la forme de fichiers*.afm ou*.pl créés à partir des métriques*.tfm par la commandetftopl.

Il lui faut ensuite un fichier TeX (car fontinst est programmé en TeX), qui dise ce qu'il faut faire avec ces fontes.
On met les choses intéressantes dans les pointillés :
La première ligne définit la fonteecorm0500 à partir deecrm0600,tcrm0600 etdostretch. Chacun de ces trois fichiers (il peut y en avoir un nombre quelconque) correspond à une fonte (les deux premiers) ou à des opérations à effectuer sur une fonte (le dernier,dostretch.mtx). La programmation avecfontinst se résume donc souvent à écrire des fichiers*.mtx. Quand un caractère est défini plusieures fois, seule sa première définition est retenue : ainsi, les caractères éventuellement absents de la première fonte sont pris dans les fontes suivantes. Les deux arguments suivants correspondent au codage : généralement, nous mettronsT1 des deux côtés. L'argument suivant est la famille à laquelle appartient la fonte (je ne sais pas du tout à quoi peut servir cette information). Les trois derniers arguments sont la graisse de la fonte (m,b,bx, etc.), sa forme (n,sl,it,sc, etc.) et sa taille.

Dès lors, il ne reste plus qu'à compiler ce fichier et à construire les fontes virtuelles*.vf et leurs métriques*.tfm.

On peut ensuite utilise les fontes comme d'habitude. Par exemple, si la nouvelle fonte s'appelletoto, on peut procéder ainsi.

9.5 Comment utilise-t-on fontinst avec des fontes PostScript ?

C'est comme pour les fontes MétaFont, à la seule différence que les métriques ne sont pas attendues sous la forme de fichiers*.pl provenant de*.tfm, mais directement sous la forme de*.afm.

9.6 Comment utilise-t-on fontinst avec des fontes True Type ?

Si on utilisettf2pk, on peut procéder comme pour les fonte Métafont, si on les a traduites en PostScript, on procède comme pour les fontes PostScript. Dans le permier cas, il arrive que le fichier*.pl obtenu à partir des métriques contienne la ligne

quefontinst ne reconnait pas (il m'est déjà arrivé de trouverECENCODING à la place, qui ne marchait pas non plus). Il suffit de la remplacer par ce qu'il faut.
Une autre solution consiste à définirECENCODING etT1ENCODING, par les commandes suivantes.

9.7 Comment changer le codage d'une fonte ? Comment pencher une fonte ?

Je reprends cet exemple de la documentation defontinst.

Cela va juste créer un fichiertoto26.pl, que l'on peut transformer entoto.tfm grace àpltotf. Il faut ensuite écrire (soi-même) le fichierpsfonts.map.
Dans la suite, nous n'utiliserons pas la commande\trandformfont, nous passerons toujours par des fichiers*.etx ou*.mtx.

9.8 Exemples simples avec fontinst

fontinst part d'une ou plusieures fontes (décrites par des fichiers*.pl ou*.afm) et leur applique différentes transformations, décrites dans des fichiers*.mtx. La syntaxe d'un fichier*.mtx est la suivante.

Les choses intéressantes sont dans les points de suspension. L'exemple suivant efface le caractèrezero, puis définit le caractèrezero comme étant una à la taille de 1000 milièmes (rappelons que quand un caractère est défini plusieures fois, c'est la première qui compte : si on avait oublié d'effacer dezero, sa redéfinition aurait été sans effet) et enfin redéfinit le caractèreone comme étantb à la taille 1.5.

L'exemple suivant (qui n'est pas de moi) crée un nouveau caractère@ à partir d'unO majuscule et d'una.

9.9 Comment intervertir deux caractères dans une fonte ?

Nous allons intervertir les caractèresA etB de la fonteecrm1000.

Voici le fichierintervertir.mtx.
Remarque : n'y a-t-il pas une autre manière d'intervertir deux caractères d'une même fonte, en restant sous TeX ?

9.10 Comment aller chercher un caractère dans une autre fonte ?

Il suffit de charger la première fonte, d'effacer le caractère dont on ne veut plus, et enfin de charger la fonte dans laquelle se trouve la nouvelle version du caractère. Nous allons par exemple remplacer le A de la fonteecrm1000 par celui de la fonteectt1000. Le fichiertoto.mtx est le suivant.

Voici le fichiertoto.tex.

9.11 Comment modifier les métriques d'un caractère ?

Nous avons déjà vu () que les différentes choses que l'on rajoutait dans un caractère contribuaient à ses dimensions, à moins que l'on utilise les commandes\push et\pop. Si cela ne suffit pas, les commandes\resetdepth,\resetwidth,\resetitalic et\resetheight permettent de changer la taille d'un caractère. Il y a un exemple dansdotlessj.mtx (voir).

9.12 Quelles sont les dimensions d'une fonte ? Comment les changer ?

Les dimensions sont (parmi) les suivantes :ascender,capheight,descender,xheight,italicslant,minimumkern,monowidth,underlinethickness,designsize,interword,acccapheight,maxheight,maxdepth,digitwidth,capstem,baselineskip,interword. Dans le cas des fontes mathématiques, on peut aussi accéder aux dimensionsfontdimen(??), où il faut remplacer?? par le numéro de la dimension désirée. On peut changer ces dimensions à l'aide de la commande\resetint.

***** DONNER UN EXEMPLE *****

9.13 Comment ajouter un trait ?

La commande\glyphrule permet de traver un trait, ses arguments sont la largeur et la hauteur. Il faut préalablement s'être placé au bon endroit à l'aide des commande\moveup (déplacement vers le haut) et\movert (déplacement vers la droite). L'exemple suivant souligne le caractère A. Les unités sont des milièmes.

Les commandes\push et\pop permettent de ne pas changer l'état graphique (en particulier la position courrante). Ces sont les analogues des commandes PostScriptgsave etgrestore. Si on ne les utilisait pas, le résultat serait le suivant.

On peut compliquer l'exemple précédent en encadrant le caractère au lieu de le souligner. La commande\add permet d'effectuer une addition de dimensions. On remarquera qu'il faut faire attention à la largeur du caractère (pour l'augmenter, on a simplement rajouté\movert{150} au début et à la fin) et à l'épaisseur des traits (certaines des barres ont une longueur de 340 pour cette raison). Pour généraliser cela à d'autres caractères, il faudrait aussi tenir compte de leur profondeur.

9.14 Comment ajouter des instructions PostScript ?

Lors de la définition d'un caractère, on peut rajouter des instructions PostScript grace à la commande\glyphspecial. Essyons par exemple de mettre un caractère en rouge.

9.15 Peut-on ajouter n'importe quelle instruction PostScript ?

Oui, mais certains problèmes peuvent se poser. En voici un. Essayons par exemple de faire tourner les lettres de 30 degres.

On constate que la rotation ne s'effectue pas par rapport au point en bas à gauche du caractère, comme on s'y serait attendu. Regardons où se trouvecurrentpoint
Il est bien en bas à gauche du caractère. Regardons où se trouve le point de coordonnées (0,0).
Il est en haut à gauche de la feuille. On peut donc à nouveau essayer la rotation.
Voici maintenant une rotation par rapport au centre du caractère.
On peut aussi s'amuser étirer les caractères.
On peut aussi s'amuser à les pencher (voir aussi9.7).

9.16 Peut-on ajouter n'importe quelle instruction PostScript ?

Voici un autre exemple de problème : le corps d'une boucle PostScript est entouré d'accolades, or ces caractères sont interprétés particulièrement par LaTeX. Une manière de les utiliser consiste à changer le catcode des accolades.

Une autre manière de se débarasser de toutes ces histoires de catcode est d'utiliser ActiveTeX.

9.17 Comment avoir des caractères gras quand il n'y en a pas ?

***** A FAIRE ***** Il suffit d'utiliser la question précédente.

9.18 Comment ajouter un caractère ?

***** A FAIRE *****

9.19 Comment ajouter une ligature ?

C'est là qu'interviennent les fichiers*.etx. Comme le codageT1 est déjà bien remplis, nous allons partir du codageOT1 dans lequel il y a beaucoup plus de place libre. Nous allons reprendre le fichierot1.etx et modifier les choses suivantes (attention à l'endroit où on le met !). À l'endroit où la lettrec est définie :

Et à la fin du fichier :
Le fichier*.mtx contient la définition du nouveau caractère.
On appellefontinst avec notre nouveau codage.

9.20 Comment avoir des ligatures ct et st ?

Il faut tout d'abord trouver une fonte qui contienne ces glyphes : par exemple, les fontes d'Omega. Pour les utiliser, il suffit de préciser, dans le codage, qu'il y a des ligaturesct etst. On crée un fichierot1_ctst.etx à partir deot1.etx en rajoutant les lignes suivantes à la fin.

On modifie aussi les entrées correspondant aux lettresc ets.
Le programmefontinst permettant de créer les nouvelles fontes est le suivant.
Et on peut l'utiliser comme ceci.

9.21 Comment changer l'espace entre deux caractères ?

On peut changer la table de crénage. Ainsi, l'exemple suivant va espace un peu moins le i et le j quand ils se suivent, sans rien changer sinon.

Une autre manière de procéder consiste à créer une ligature, comme nous l'avons vu précédemment.

9.22 Comment appliquer une même transformation à tous les caractères d'une fonte ? À toutes les majuscules ? À toutes les minuscules ?

Il suffit d'écrire une macro qui prenne en argument un nom de caractère et qui effectue la modification sur ce caractère. L'exemple suivant souligne toutes les majuscules

Il suffit ensuite d'appeler cette macro avec la liste de tous les caractères (ou de toutes les majuscules, ou de toutes les minuscules). Mais comment avoir ces listes ? On peut prendre la liste des caractères qui est dans les fichiers définissant le codage, par exemplet1.etx. La commande suivante permet d'obtenir la liste de tous les caractères non alphanulmériques.
La commande suivante permet d'obtenir les chiffres.
La commande suivante permet d'obtenir les lettres minuscules.
La commande suivante permet d'avoir la liste des majuscules.
Et voici la liste de tous les caractères.
Nous pouvons maintenant reprendre les exemples précédents et les appliquer à toutes les lettres ou toutes les majuscules.

9.23 Comment avoir les caractères manquants ?

Lorsque l'on utilise une fontes TTF (ou autre), il peut manquer certains caractères : par exemple des lettres accentuées (le Z majuscule avec un point au dessus est rarement là --- mais je ne sais pas à quoi il peut servir). Le fichierlatin.mtx s'occuppe de créer les caractères manquants quand c'est possible. C'est pourquoi on l'utilisera de manière quasi-systématique. [S'il est absent des exemples qui figurent dans ce document, c'est parce que je ne les ai pas encore corrigés.] Prenons par exemple la fonte True Typecomic : il manque le Z majuscule accent aigu. On crée les métrique comme nous l'avons vu dans un chapitre précédent.

Il n'est pas très beau, mais on a maintenant un caractère Z accent aigu.

9.24 Comment avoir une fonte soulignée ?

Il existe déjà un fichier uline.mtx, qui contient les lignes suivantes (voir9.13 et9.22)

Mais on peut vouloir que la barre de soulignement se poursuive aussi entre les mots. On doit pouvoir le faire en rendant le caractère espace actif et en le faisant agir comme\leaders.... Attention à ne pas inhiber la césure... ***** EXERCICE *****

On peut aussi vouloir que la barre de soulignement passe derrière les caractères : quand un caractère descend en dessous de la ligne de base, la barre de soulignement ne devrait pas couper ce caractère mais s'arréter un peu avant la partie qui descent et reprendre un peu après. Une solution, pas entièrement satisfaisante, consiste à tracer la barre de soulignement ; puis le caractère, en blanc, légèrement décalé sur la droite et sur la gauche, ce qui efface certaines parties de la ligne ; et, enfin, le caractère avec la couleur normale. Ne pas utiliser sur un fond coloré...

9.25 Comment avoir un j sans point quand il n'y en a pas ?

Il y a un fichierdotlessj.mtx qui contient :

9.26 Peut-on manipuler des familles de fontes(plutôt que des fontes isolées) avec fontinst ?

Oui, par exemple à l'aide de la commande\latinfamily, mais il faut impérativement que le nom des fontes soit compatible àfontname, donc illisible. Je ne l'ai jamais utilisé.

9.27 Comment avoir une fonte grasse quand il n'y en a pas (sans fontes virtuelles) ?

On peut utiliser la commande\pmb d'amsmath. Elle prend un (ou plusieurs) caractères et les superpose à eux-même après un léger décalage. Le résultat est à peu près correct, mais LaTeX est incapable de couper les mots, les lignes ou les pages à ces endroits-là). Voici un exemple, en mode mathématique (on remarquera que l'on utilise des fontes texte en mode mathématique pour ne pas avoir de problème avec les lettres accentuées).

9.28 Comment avoir une fonte grasse quand il n'y en a pas (avec des fontes virtuelles, premier essai, infructueux --- A EFFACER) ?

Nous présentons ici divers essais, infructueux, pour tenter de mettre des caractères en gras. Au cours de ces différents échecs, nous verrons comment utiliser les différentes commandes de fontinst. Le lecteur désirant voir une bonne solution tout de suite peut passer à la question suivante. Le fichier toto.tex contient :

Le fichier fauxgras.mtx contient :
Ça ne marche pas car j'ai oublié de mettre \unsetglyph Essayons avec :
Ça ne marche toujours pas, car le A n'est plus défini. Essayons avec:
Ça marche un peu mieux, mais la commande \glyph tient compte de la largeur du A : on se retrouve, non pas avec des A presque superposés, mais avec des A les uns à côté des autres. Essayons avec :
C'est à peu près ça. Il reste à affiner un peu les distances. On peut aussi utiliser la commande \resetglyph à la place de
Essayons enfin avec :
Ça marche comme on s'y attend. On compile le tout en tapant :
On l'essaye comme d'habitude :
Compliquons les choses : essayons d'obtenir tous les caractères en gras. Dans le fichier essai.tex, on commence par définir une macro qui va créer une fausse lettre grasse
On peut comprend d'abord la définition d'une macro qui crée une fausse lettre grasse,
Puis on le complète à l'aide d'une boucle. Pour cela, il nous faut une liste de noms de glyphes, que l'on obtient à partir des fichierst1.etx etot1.etx. (Détailler.)

9.29 Comment avoir une fonte grasse quand il n'y en a pas (avec des fontes virtuelles --- A EFFACER) ?

Les essais précédents étaient presque acceptables, mais on ne déplaçait mes caractères qu'horizontalement : les traits verticaux étaient bien épaissis, les traits obliques moins et les traits horizontaux pas du tout. Nous allons donc déplacer les caractères en cercle, pour que l'apaississement soit plus uniforme. Je ne trouve pas la solution que je présente entièrement satisfaisante : pour savoir de combien il faut déplacer le caractère, j'utilise un petit script en Perl. On devrait pouvoir, soit faire ces calculs en TeX (si, si), soit en PostScript (beaucoup plus raisonable).

On obtient quelque chose qui ressemble à

9.30 Comment avoir une fonte « petites capitales » quand les caractères sont là ?

Pour les petites capitales : il semblerait que vfinst suppose qu'elles existent dans la fonte, avec des glyphes ayant pour noms Asmall, Bsmall, etc. Même chose pour les vieux chiffres, qui ont pour noms oneoldstyle, twooldstyle, etc.

9.31 Comment avoir une fonte « petites capitales » quand les caractères ne sont pas là ?

***** A REVOIR *****

**** Que fait le fichiert1c.etx ???

L'idée est de prendre une majuscule mais à une taille différente. On a donc besoin descouples majuscule/minuscule.

On peut rafiner un peu et prendre comme hauteur des petites capitales, la hauteur des minuscules. La hauteur des minuscules est dans la variablexheight et la hauteur des majuscules danscapheight. On veut le quotient des deux.

Nos fausses petites capitales ont les défauts habituels des fausses petites capitales : elles sont trop maigres et trop rapprochées. On peut tenter de les épaissir en reproduisant plusieures fois le même caractère, avec de légers décalages.

Il n'est pas possible de connaître a priori le décalage qu'il va falloir prendre : pour cela, il faudrait connaître l'épaisseur des traits, qui n'est pas dans les métriques (cette épaisseur est d'ailleurs variable). Pour trouver la « bonne » valeur, nous allons tatonner.

On peut améliorer le bricolage précédent en utilisant un nombre plus grand de copies du caractère.

9.32 Comment utiliservfinst ?

vfinst permet d'installer une famille de fontes PostScript. Supposons que nous voulions installer la familleAmericanGaramondBT, ie, les fichiersbg3b.afm,bg3b.pfb,bg3bi.afm,bg3bi.pfb,bg3i.afm,bg3i.pfb,bg3r.afm,bg3r.pfb, On commence par installervfinst et mettre les fontes que l'on veut installer dans un répertoire temporaire.

Il faut ensuite mettre les bon paramètres dans le fichier../vfinst.par. Je suppose que les fontes seront installées dans le (nouveau) répertoire$HOME/gnu/Linux/lib/texmf_tmp.
Pour terminer, on fait ce qu'il demande.
Les fontes sont installées (il y a toutefois un léger problème : le fichierpsfonts.map qu'il a modifié n'est pas le bon --- mais il suffit de ne pas effacer celui du répertoire courrant) : on peut maintenant essayer de les utiliser.

9.33 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (1) ?

Nous avons déjà vu une solution partielle (4.14) : prendre les caractères textuels dans la fonte texte et les autres dans la fonte mathématique Computer Modern ou Euler.

9.34 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (2) ?

On peut le faire avec des fontes virtuelles. On a besoin de trois fontes mathématiques, de codages respectifsOMS,OMX etOML et d'une fonte texte au codageOT1. Nous allons partir d'une fonte textetoto et des trois fontes mathématiques par défautcmmi10 (OML)cmmib10 (OML)cmsy10 (OMS)cmbsy10 (OMS)cmex10 (OMX) (à mettre avec sfixed*cmex10). Les lettres grecques majuscules sont attendues dans la fonte texte (OT1) : nous irons les chercher danscmr10. Voici le programmefontinst.

Il faut faire attention àlatin.mtx : il va remplacer les glyphes que l'on ne peut pas créer par un message d'erreur. Pour éviter que cela se produise, on va simplement effacer les caractères grecs que l'on ira chercher danscmr10. Voici le fichierremovegreek.mtx.
On peut l'utiliser de la manière suivante.

9.35 Comment avoir des majuscules mathématiques droites avec des fontes virtuelles ?

***** A FAIRE *****

9.36 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (3) ?

On peut faire la même chose, mais avec d'autres fontes mathématiques : Euler, Lucida, MathTimes, Mathematica ; c'est ce que faitmathinst. Il suppose que les fontes sont installées en respectantfontname (génant, mais normal), que tous les fichiers sont dans la même arborescence (car le script n'utilise paskpsewhich) et qu'on a le droit d'écrire dedans. Pour cette raison, je ne l'utiliserai pas. (Il se plaint aussi de l'absence de certains répertoires.)

9.37 Comment créer une fonte mathématique qui se marrie bien avec une fonte texte donnée (3) ?

Une manière beaucoup plus satisfaisante de procéder consiste à créer une nouvelle fonte mathématique, en prenant les caractères de la fonte texte là où c'est possible et en prenant des caractères provenant de Computer Modern pour les autres, mais avec des paramètres choisis afin qu'elle se marrie bien avec la fonte texte. C'est ce que faitmathkit. Ce script présente les mêmes limitations quemathinst : il se refuse à utiliserkpsewhich, si bien que l'utilisateur doit lui dire exactement où se trouve chaque fichier, il suppose que tous les fichiers sont installés dans une arborescence unique et suppose que l'utilisateur a le droit d'y écrire. Je ne l'utiliserai donc pas.


10 Divers

10.1 Effets graphiques divers

On peut transformer un fichier LaTeX en une image bitmap, que l'on utilise ensuite dans un logiciel de dessin, par exemple PoVRay ou Gimp.

Il est possible d'extruder une telle image bitmap dans un logiciel de dessin en 3D afin d'obtenir du texte en relief. ****** A FAIRE ********

Les exemples suivants n'on plus rien à voir avec LaTeX.

10.2 Divers (réponses sans questions et questions sans réponses à classer)


11 À FAIRE


[8]ページ先頭

©2009-2025 Movatter.jp