codepage un style pour traiter diff´ erents code de page dans le mˆeme document
Alain Aubord le 29 novembre 2008
R´esum´e
Cet article d´ ecrit les nouvelles commandes disponibles pour traiter un code de page
1ainsi que les probl` emes rencontr´ es pour r´ ealiser cette implantation uniquement en TEX.
1 Introduction
La version 3 de TEX permet de composer plus facilement des documents dans une autre langue que l’anglais. En effet, cette version autorise l’usage de caract` eres cod´ es sur 8 bits (valeurs de 0
`
a 255) dans le texte source et de multiples tables de c´ esures dans un format.
Ces am´ eliorations ´ etaient n´ ecessaires, mais pas suffisantes. En effet, il est encore n´ ecessaire de disposer de styles adapt´ es aux diff´ erentes langues ainsi que des polices de caract` eres contenant des signes sp´ ecifiques (comme les caract` eres accentu´ es
2, les guillemets fran¸cais...).
Le style Babel et les polices Dc ont ´ et´ e d´ evelopp´ es pour r´ esoudre ces probl` emes. Cependant, il reste encore un probl` eme de taille: les diff´ erents codes de page existant sont incompatibles. Un document
´
ecrit dans un code de page doit ˆ etre converti dans un nouveau code de page lorsqu’il est utilis´ e sur un ordinateur avec un syst` eme d’exploitation diff´ erent ou avec des polices de caract` eres dont l’encodage correspond ` a un autre code de page (comme les polices Dc). La gestion des diff´ erents codes de page peut se faire de plusieurs mani` eres en TEX:
• Par l’utilisation d’un programme externe de conversion de caract`eres. Lorsqu’un tel pro- gramme est bien int´ egr´ e dans TEX (comme les tables Tcp d´efinies par EmTeX), cette so- lution est tr` es efficace et agr´ eable ` a utiliser. Son principal d´ esavantage est le manque de portabilit´ e.
• Par l’utilisation de polices virtuelles
3. Cette solution est tr` es bien int´ egr´ ee dans TEX
4. Cepen- dant, il est n´ ecessaire de fournir les fichiers d´ ecrivant la m´ etrique et le r´ e-encodage de chaque police virtuelle utilis´ ee dans un document.
• Par l’utilisation de la composition pour obtenir un caract`ere accentu´e (i.e.\’e pour ´e).
Cette solution fonctionne remarquablement bien avec les polices Dc. Le style fourni pour l’utilisation de ces polices red´ efinit tr` es habilement les commandes qui dessinent un caract` ere accentu´ e. Chaque fois qu’un caract` ere accentu´ e existe dans la police, il est employ´ e (en lieu et place de la composition). Ce syst` eme est donc parfaitement int´ egr´ e dans TEX, mais il est tr` es d´ esagr´ eable de taper et de relire les caract` eres accentu´ es suivant cette m´ ethode.
• Par l’utilisation du paquet codepage qui est totalement compatible avec TEX (version 3). Ce paquet offre en outre la possibilit´ e de composer avec TEX un document pr´evu pour un autre
1Un code de page est une convention qui d´efinit une association unique entre un caract`ere et un nombre qui le repr´esente dans un ordinateur.
2La composition, c’est-`a-dire l’utilisation d’une commande de positionnement d’un accent suivie par la lettre `a accentuer, pr´esente l’avantage de pouvoir accentuer n’importe quel caract`ere mais empˆeche la c´esure correcte d’un mot accentu´e.
3Une police virtuelle est un m´ecanisme fourni avec TEX version 3 qui permet de changer le vecteur d’encodage d’une police de caract`eres, de composer une nouvelle police de caract`eres `a partir de plusieurs polices etc.
4Certains vieux pilotes de p´eriph´eriques ne savent pas utiliser les polices virtuelles.
1
code de page que celui de son propre ordinateur et de d´ eclarer des exceptions de c´ esures contenant des syllabes accentu´ ees.
Ce paquet transforme tous les caract` eres sup´ erieurs ` a 127 en caract` ere
actif
(chaque car- act` ere actif est une commande TEX) et il n´ecessite la transmission de quelques fichiers annexes pour pouvoir composer un document sur un autre syst` eme.
Comme on le voit, il n’y a pas de solution parfaite dans tous les cas. Le probl` eme provient d’un manque de norme dans la mani` ere de coder les symboles sp´ eciaux
5.
1.1 Le probl` eme des c´ esures
TEX effectue une c´esure automatique des mots en se basant sur une table d´ecrivant quelles syllabes peuvent ˆ etre coup´ ees. Cette table est inclue dans le format
6et sa forme est fig´ ee tant qu’un nouveau format n’est pas reconstruit. Lors de la construction d’une table de c´ esure toutes les syllabes sont converties en minuscules (en utilisant le \lccode de chaque caract` ere) avant d’ˆ etre enregistr´ ees.
Pour trouver une c´ esure lors de la composition d’un document, le texte ` a couper est traduit en minuscule et compar´ e avec les tables pr´ e-d´ efinies.
Lorsque les tables de c´ esures utilis´ ees lors de la construction du format et le texte du document utilisent des codes de pages diff´ erents, les caract` eres (dont la valeur est plus grande que 127) du texte ` a composer et ceux utilis´ es pour les tables de c´ esure ne correspondront jamais. Aucune c´ esure ne pourra alors ˆ etre trouv´ ee (des exceptions existent cependant).
Il est ´ evidemment possible de modifier la table de c´ esure et de reg´ en´ erer un nouveau format, cependant cette solution n’est pas toujours possible ni forc´ ement souhaitable pour plusieurs raisons:
• le fichier qui d´ecrit la table de c´esure devrait ˆetre identique quel que soit le syst`eme pour obtenir une c´ esure identique partout
7.
• la g´en´eration d’un format est une op´eration complexe et d´elicate qui peut exiger la possession d’autorisations sp´ ecifiques (sur une machine partag´ ee entre plusieurs utilisateurs).
La solution propos´ ee par le paquet codepage pour r´ esoudre ce probl` eme consiste en une nouvelle commande \MakeHyphenationLetter qui permet de modifier les valeurs associ´ ees ` a un caract` ere cod´ e au-del` a de 127 pour utiliser des valeurs compatibles avec la commande \hyphenation .
2 L’interface utilisateur
Cet interface a ´ et´ e con¸cu pour ˆ etre
le plus simple possible
. Seules deux macros (commandes) et quelques constantes sont d´ efinies.
Les diff´ erents codes de page possibles sont d´ efinis par des constantes:
\FourThreeSeven pour le code de page 437 du PC; ce code de page est surtout utilis´ e avec les syst` emes ayant l’anglais comme langue principale;
\EightFiveZero pour le code de page 850 du PC. Ce code de page est semblable au code 437 mais il contient moins de signes semi-graphiques et math´ ematiques et plus de lettres (comme les caract` eres majuscules accentu´ es). Ce code de page est surtout utilis´ e avec d’autres langues que l’anglais.
5Si un standard unique devait voir le jour, il serait d´efini sur 16 bits (valeur de 0 `a 65535).
6Un format est un ensemble de commandes pr´e-d´efinies qui sont analys´ees et enregistr´ees sous une forme sp´eciale par une variante du programme TEX appel´ee IniTEX. Le programme TEX peut ensuite charger en m´emoire tr`es rapidement un format.
7Un exemple tr`es concret de cette situation est l’utilisation de la table de c´esure anglaise pour des textes fran¸cais.
Les tables de c´esures anglaises sont disponibles et identiques quelle que soit l’implantation de TEX. Lorsqu’on veut transmettre un document ´ecrit en fran¸cais `a un correspondant dont on n’est pas certain qu’il puisse disposer d’une table de c´esure fran¸caise, il est toujours possible d’utiliser le table de c´esure anglaise et d’indiquer les exceptions de c´esure avec la commande\hyphenation. Cette m´ethode fonctionne relativement bien si l’on prend la pr´ecaution de red´efinir les commandes qui dessinent les accents sur les caract`eres (comme cela est fait dans le paquetcodepage).