Qu’est-ce que le codage des textes ?#
Le Codage des textes est la représentation des caractères sous forme de nombres ou suite de nombres. Un des codages très connu est l’ASCII qui code les caractères sans accents sur des nombres de 0 à 127 (7 bits).
Ce codage ne permet pas de représenter les caractères accentués utilisés dans la langue française. On a donc étendu le codage à 256 (sur 8 bits), et assigné les caractères régionaux aux nombres de 128 à 256.
Chaque pays a donc assigné ses caractères locaux et il y a donc des codages sur 8 bits différents pour chaque pays.
Les codages connus commencent par ISO-8859 plus un chiffre qui caractérise le pays (ISO-8859-1 pour le latin sans le signe euro).
Les codages ont été normalisés maintenant (norme ISO).
Pour les langues asiatiques qui n’utilisent pas un alphabet fini, mais des idéogrammes, ce codage sur 8 bits est très insuffisant. Seuls 256 caractères (glyphes) peuvent être codés. Ils ont donc codé leurs glyphes sur 2 octets, ce qui permet de disposer de 65000 glyphes différents. Plusieurs codages différents ont été utilisés pour la même langue, et sont utilisés concurremment (suivant les machines, les régions, les habitudes, les programmes utilisés), ce qui pose souvent le problème de la récupération des documents quand des programmes utilisent un codage propriétaire et ne sont plus maintenus. (voir déjà le problème du codage des langues asiatiques sur MacWord
(version 2 de Word
) qui ne permet pas de récupérer les textes sur les nouveaux Macs avec la nouvelle version de Word
.)
Le codage sur 8 bits ne permet que l’emploi de deux langues dont l’anglais, sauf dans les cas de langues extrêmement proches comme l’allemand et le français. Il est possible de coder les caractères et accents particuliers de ces deux langues sur les 128 nombres supplémentaires.
Pour pouvoir utiliser plusieurs langues très différentes simultanément, il faut utiliser l’unicode, qui permet de représenter toutes les langues. Le codage se fait sur plusieurs octets, et avec des codages différents (utf-8, utf-16, etc)
Voir plus loin pour les détails.
Les programmes de saisie de textes «non utf-8» doivent donc pouvoir distinguer le passage d’une langue à l’autre. Ils utilisent pour cela soit le 8e bit du nombre pour savoir si le caractère est régional ou pas, ou utilisent un système de balises comme le fait LaTeX.
Encore faut-il que ce balisage, codage soit documenté pour la pérennité des documents saisis.
Les éditeurs utf-8 utilisent le codage utf-8 pour représenter les glyphes, caractères, et ne nécessitent donc pas de balisage de changement de langue.
1. Qu’est-ce que le codage des polices de caractères ?#
Comme le codage des textes vu au-dessus, il a fallu représenter les glyphes (dessins) des caractères sous forme de nombre (l’ordinateur ne travaille qu’avec des nombres).
Il y a donc une correspondance (bijection…) entre le codage d’un caractère de texte, et son codage dans la fonte.
Il y a des quantités de codages, et LaTeX utilise des codages particuliers (il assigne les glyphes à sa façon). Il permet en plus d’utiliser des fontes virtuelles qui sont composées de caractères piochés dans plusieurs polices.
Nous verrons plus loin comment expliquer à LaTeX quel codage est utilisé pour le texte, et quel codage est utilisé pour la fonte.
2. Comment traiter les textes précédemment saisis avec LaTeX ?#
À faire
Actualiser (notamment sur l’encodage), réduire les exemples et documenter toutes les commandes utilisées.
Suivant le codage utilisé pour la saisie, il sera peut-être nécessaire de procéder à un transcodage du texte. Par exemple,
Emacs
utilise un codage propriétaire (mais documenté ! c’est un logiciel GNU). Il faudra configurer le codage de sauvegarde du texte pour qu’il soit utilisable par LaTeX. Soit utf-8 pour traitement par OMEGA ouUCS-LaTeX
, ou cjk pour traitement parCJK-LaTeX
.Le paquetage babel permet de préciser le codage des textes avec l’option
inputenc
. Il faudra en plus expliciter le « fontencoding » pour préciser le codage de la police utilisée. Ce paquetage permet de traiter de nombreux langages. Se reporter à la documentation de babel pour les langues disponibles.Voici quelques exemples d’utilisation de babel,
CJK-LaTeX
, etc :2.1. Un exemple avec « babel »#
Le texte a été saisi avec
gvim
en utilisant ma locale par défaut (FR), et le codage est donc ISO-8859-1.2.2. Un exemple avec « CJK-LaTeX »#
Cet exemple a été saisi avec
Emacs
en utilisant la versionmule
qui permet de saisir des textes en multiples langues. Le codage interne est spécifique àEmacs
, mais il est possible de spécifier avec quel codage on veut que soit écrit le fichier sur le disque. Le textechinese.tex
a été reproduit tel quel (je ne comprends pas le chinois) et j’en ai seulement traduit la partie en anglais.Le texte a été traité par
CJK-LaTeX
etPDF-TeX
.Il est difficile de montrer des exemples réels car cette FAQ est en langage national, et ne gère pas l’utf-8. Dommage !.. Une solution serait d’inclure des images (exemples d’écran de travail), mais la taille de cette FAQ augmenterait d’une façon déraisonnable.
Notez la première ligne du texte qui indique à
Emacs
la nature de le codage du texte.2.3. Un exemple avec « IvriTeX »#
Vous pourrez trouver des exemples dans la distribution de
IvriTeX
à l’URL suivante : https://ivritex.sourceforge.net/.2.4. Un exemple avec « THAI-LaTeX »#
Vous pourrez trouver des exemples dans la distribution
THAI-LaTeX
à l’URL suivante : http://ichris.ws/latex ou dans votre distribution Linux adorée… Debian propose un paquetagethai-latex
. Les exemples sont dans la section documentation.2.5. Un exemple avec « UCS-LaTeX »#
Le texte a été saisi avec
gvim
en mode utf-8.