tuteurs.ens.fr/logiciels/latex/langues.tml

356 lines
13 KiB
Text
Raw Normal View History

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
<title>Langues exotiques</title>
</head>
<body>
<h1>Langues exotiques</h1>
<div class="resume">
<p>
Dans cette page, nous allons voir comment utiliser LaTeX pour taper des
langues « exotiques ». Par là, nous entendons des langues qui s'écrivent
avec autre chose que l'alphabet latin, comme le russe ou le japonais.
</p>
</div>
<h2>Le point sur la situation</h2>
<h3>Anciennes et nouvelles méthodes</h3>
<p>
LaTeX a été conçu avant tout par des Américains, et à ce titre, prévu pour
taper de l'anglais. Comme l'auteur principal est quelqu'un de soigneux, il
est assez facile de rajouter des accents, et même de taper autre chose que
de l'alphabet latin. Mais facile ne veut pas dire pratique : avec la manière
directe de procéder, le code source d'un mot en grec ancien risque d'être
moins lisible que les jurons de Fantasio.
</p>
<p>
Heureusement, LaTeX est programmable, et des extensions ont été écrites pour
permettre plus de confort. Hélas, ces extensions sont toutes plus ou moins
incompatibles entre elles, et souvent plutôt plus que moins. Par exemple, si
vous voulez taper du français et du grec, vous avez un choix exclusif entre
taper confortablement les caractères accentués français et taper
confortablement les mots grecs.
</p>
<p>
Plus récemment, l'informatique a vu le développement d'Unicode, un système
qui résout les problèmes de langues dans les fichiers textes (un fichier
<code>.tex</code> est un fichier texte. L'architecture de LaTeX ne l'a pas
rendu facile, mais petit a petit, il est devenu possible de bénéficier de ce
progrès.
</p>
<h3>Difficultés encore présentes</h3>
<p>
Unicode résout certains problèmes, mais ne les résout pas tous. Le principal
est bien sûr celui des polices : votre texte aura beau contenir,
informatiquement parlant, des idéogrammes chinois, si ces idéogrammes ne
sont disponibles dans aucune police que connaît LaTeX, vous n'irez pas loin.
</p>
<p>
Ensuite, Unicode est conçu pour la <em>saisie</em> du texte, pas son rendu :
Unicode traite des entités plus ou moins abstraites appelées caractères, qui
n'ont pas nécessairement un rapport direct avec les glyphes qu'on veut voir
dans un document imprimé. Pour les langues européennes, ça se passe plutôt
bien, mais certaines langues, l'arabe et surtout les langues indiennes, ont
des interactions entre caractères très complexes : ligatures,
réordonnancement, combinaisons, etc. Unicode n'aplanit pas ces difficultés,
il se contente de fournir un point d'entrée confortable à une extension qui
le fait &mdash; si elle existe.
</p>
<p>
Enfin, LaTeX est conçu presque exclusivement pour l'écriture de gauche à
droite. Ses algorithmes sont incapables de gérer l'écriture de droite à
gauche de l'arabe et de l'hébreu, et l'écriture en colonnes.
</p>
<h3>Finalement, qu'est-ce qui marche ?</h3>
<p>
Après toutes ces considérations défaitistes, on en vient à se demander s'il
est possible de taper autre chose que de l'anglais. Voici une petite liste
de ce qui marche bien.
</p>
<ul>
<li>les langues occidentales, avec des extensions de l'alphabet latin
(accents, ligatures, ponctuations bizarres, etc.) ;</li>
<li>le grec, moderne et ancien ;</li>
<li>le cyrillique</li>
<li>le chinois, simplifié et traditionnel, écrit de gauche à droite ;</li>
<li>le japonais, écrit de gauche à droite.</li>
</ul>
<p>
La distribution standard de LaTeX comporte des polices latines, grecques et
cyrilliques. Des polices chinoises et japonaises sont également disponibles,
mais parfois plus techniques à installer. Il y en a installées à l'ENS.
</p>
<h2>Comment faire</h2>
<h3>Préparation</h3>
<p>
Avant de commencer, il y a un pré-requis qui n'est pas spécifique à LaTeX :
savoir taper un texte quelconque, dans la langue qui vous intéresse, en
Unicode. Heureusement, nous avons une documentation sur les
<a href="&url.tuteurs;unix/editeurs/unicode.html">éditeurs en Unicode</a>,
que nous vous invitons à lire avant d'aller plus loin si ce n'est déjà fait.
</p>
<p>
Tout ce que vous avez à faire maintenant, c'est de créer votre fichier LaTeX
avec votre éditeur en Unicode. Nous allons voir dans un instant ce qu'il
faut mettre dans le préambule.
</p>
<div class="ens">
<p>
<strong>Attention,</strong> sur certains PC FreeBSD, c'est une ancienne
version de LaTeX qui est installée. Si vous éprouvez des problèmes, regardez
la deuxième ligne des messages lors de la compilation : si elle indique
« <code>LaTeX2e &lt;1999/12/01&gt; patch level 1</code> », changez de
machine (en vous loguant à distance, c'est le plus simple).
</p>
</div>
<h3>Ce qu'il faut écrire</h3>
<p>
Dans le cas général, il n'y a quasiment rien à changer. Il suffit d'avoir la
ligne suivante dans le préambule :
</p>
<pre>\usepackage[utf8]{inputenc}</pre>
<p class="continue">
(à la place de l'habituel <code>latin1</code>). Avec cette ligne, un texte
en alphabet latin étendu (y compris <code>&oelig;</code>,
<code>&ldquo;</code>, <code>&rdquo;</code>, <code>&lsquo;</code>,
<code>&rsquo;</code>, <code>&euro;</code>, <code>&hellip;</code>,
<code>&mdash;</code>, etc., tapés directement) fonctionne directement.
</p>
<p>
Pour d'autres langues, il faut quelques options supplémentaires, et en
particulier informer babel du changement de langue.
</p>
<h3>Babel polyglotte</h3>
<p>
Jusqu'a présent, vous n'avez probablement utilisé du package babel que la
ligne <code>\usepackage[francais]{babel}</code>. Il est temps d'apprendre à
l'utiliser pour d'autres langues. Par chance, c'est assez simple. La
première chose à faire est de charger les bons modules :
</p>
<pre>\usepackage[greek,russian,francais]{babel}</pre>
<p class="continue">
La dernière langue mentionnée est la langue « principale » du document,
celle qui est sélectionnée s'il n'y a pas d'indication contraire. L'ordre
des autres langues n'a pas d'importance.
</p>
<p>
Il faut ensuite, tout au long du texte, indiquer les changements de langue.
Trois commandes permettent de faire ça :
</p>
<pre>\selectlanguage{<var>langue</var>}</pre>
<p class="continue">
sélectionne une nouvelle langue pour tout le reste du texte, ou jusqu'à la
prochaine rencontre avec la même commande. De manière surprenante, cette
commande s'échappe des groupes et des environnements ; à utiliser avec
prudence donc.
</p>
<pre>
\begin{otherlanguage}{<var>langue</var>}
\end{otherlanguage}
</pre>
<p class="continue">
sélectionne une langue pour l'étendue de l'environnement. Aucune surprise
ici.
</p>
<pre>\foreignlanguage{<var>langue</var>}{<var>blabla</var>}</pre>
<p class="continue">
sélectionne une langue pour le texte « blabla », et s'utilise de la même
manière que <code>\emph</code>.
</p>
<p>
Souvent, des commandes plus compactes sont disponibles spécifiquement pour
une langue donnée (comme <code>\textgreek</code> pour
<code>\foreignlanguage{greek}</code>).
</p>
<div class="attention">
<p>
<strong>Attention,</strong> il est souvent <strong>nécessaire</strong> de
bien informer LaTeX du changement de langue. En effet, le changement de
langue s'accompagne d'un changement de police (plus précisément,
d'<em>encodage</em> de police), ce dont LaTeX ne prend pas l'initiative tout
seul.
</p>
</div>
<p>
Dans le cas d'un texte comportant beaucoup de mots étrangers, par exemple le
commentaire en français d'un texte grec, changer sans arrêt de langue est
fastidieux, même en ayant défini une macro très courte. Il est possible
d'automatiser ça en utilisant le package <code>autofe</code>. Attention
cependant si vous optez pour cette solution : si dans un mot certains
caractères sont disponibles dans la police actuelle et d'autres pas, ce mot
sera rendu avec un mélange de polices, ce qui peut être très laid, et vous
n'aurez aucun avertissement. De plus, au delà de quelques mots, il faut
quand même expliciter le changement de langue, faute de quoi la typographie
et, plus grave, la césure ne respecteront pas les règles spécifiques.
</p>
<h2>Langue par langue, en détail</h2>
<h3>Le grec</h3>
<p>
Le nom pour babel est simplement <code>greek</code>. La commande
<code>\textgreek{<var>blabla</var>}</code> est définie pour avoir le même
effet que <code>\foreignlanguage{greek}{<var>blabla</var>}</code>. Le
changement de langue est nécessaire pour que la police soit disponible.
</p>
<p>
Quand le grec est actif, LaTeX utilise une sorte de translittération depuis
l'alphabet latin, avec des conventions pour les accents et les esprits. Mais
comme nous travaillons en UTF-8, c'est inutile et nous n'en parlons pas.
</p>
<h3>Le cyrillique</h3>
<p>
Le nom pour babel est <code>russian</code>, et le changement de langue est
nécessaire pour que la police soit disponible. Rien d'autre à signaler.
</p>
<h3>Le chinois</h3>
<p>
Là, ça se complique un peu, il faut quelques packages supplémentaires. Voici
ce qu'il faut mettre dans le préambule pour du chinois traditionnel :
</p>
<pre>
\usepackage[cjkbg5]{ucs}
\usepackage[utf8]{inputenc}
\usepackage[C00,T1]{fontenc}
\DeclareFontSubstitution{C00}{sng}{m}{n}
</pre>
<p class="continue">
et pour du chinois simplifié :
</p>
<pre>
\usepackage[cjkgb]{ucs}
\usepackage[utf8]{inputenc}
\usepackage[C10,T1]{fontenc}
\DeclareFontSubstitution{C10}{sng}{m}{n}
</pre>
<p>
Les deux ont la même structure. La première ligne indique quelle
interprétation choisir pour un caractère qui aurait le mauvais goût d'être
commun au chinois simplifié, au chinois traditionnel et au japonais. La
troisième ligne charge l'encodage nécessaire (C00 pour le chinois
traditionnel, C10 pour le simplifié), ainsi que l'encodage occidental (faute
de quoi ça ne marche pas). Enfin, la dernière ligne indique quelle famille
de police employer par défaut pour cet encodage, ici Arphic SungtiL
(<code>sng</code>). Deux autres polices sont disponibles ici, Arphic KaitiM
(<code>kai</code>), très ornée, et Bitstream Cyberbit (<code>cyb</code>),
qui n'est pas libre. Il est possible de changer de police en modifiant la
ligne <code>\DeclareFontSubstitution</code> ou en utilisant la commande
<code>\fontfamily</code>.
</p>
<p>
Quelques points supplémentaires à savoir. D'abord, babel n'a pas de mode
pour le chinois. Pour éviter des bizarreries typographiques, il peut être
bon de passer babel en mode anglais pour un bout de chinois. Ensuite, ce
mode de saisie n'est pas capable de couper automatiquement entre les
idéogrammes ; il est nécessaire d'insérer des espaces à la main. Peut-être
dans un avenir proche un package résoudra-t-il le problème.
</p>
<div class="ens">
<p>
L'installation de polices chinoises pour LaTeX est assez acrobatique, et
pas complètement standard. Les indications ci-dessus fonctionneront
normalement sur l'installation LaTeX de l'ENS, mais il n'est pas sûr du tout
que ce soit le cas ailleurs ; en particulier, les noms des polices (pour le
<code>\DeclareFontSubstitution</code>) peuvent varier considérablement.
</p>
</div>
<h3>Le japonais</h3>
<p>
Là, ça se complique un peu, il faut quelques packages supplémentaires. Voici
ce qu'il faut mettre dans le préambule :
</p>
<pre>
\usepackage[cjkjis]{ucs}
\usepackage[utf8]{inputenc}
\usepackage[C42,T1]{fontenc}
\DeclareFontSubstitution{C42}{dg}{m}{n}
</pre>
<p>
La première ligne indique quelle
interprétation choisir pour un caractère qui aurait le mauvais goût d'être
commun au japonais et au chinois. La
troisième ligne charge l'encodage nécessaire (C42 pour le japonais), ainsi
que l'encodage occidental (faute de quoi ça ne marche pas). Enfin, la
dernière ligne indique quelle famille de police employer par défaut pour cet
encodage, ici Wadalabe DG (<code>dg</code>). Trois autres polices Wadalabe
sont disponibles ici, <code>dm</code>, <code>mc</code> et <code>mr</code>.
Il est possible de changer de police en modifiant la ligne
<code>\DeclareFontSubstitution</code> ou en utilisant la commande
<code>\fontfamily</code>. La police (non-libre) Bitstream Cyberbit est
également disponible sous le nom <code>cyb</code>, mais il faut dans ce cas
remplacer partout C42 par C40, et donc exclure d'utiliser les polices
Wadalabe.
</p>
<p>
Quelques points supplémentaires à savoir. D'abord, babel n'a pas de mode
pour le japonais. Pour éviter des bizarreries typographiques, il peut être
bon de passer babel en mode anglais pour un bout de japonais. Ensuite, ce
mode de saisie n'est pas capable de couper automatiquement entre les
caractères ; il est nécessaire d'insérer des espaces à la main. Peut-être
dans un avenir proche un package résoudra-t-il le problème.
</p>
<div class="ens">
<p>
L'installation de polices japonaises pour LaTeX est assez acrobatique, et
pas complètement standard. Les indications ci-dessus fonctionneront
normalement sur l'installation LaTeX de l'ENS, mais il n'est pas sûr du tout
que ce soit le cas ailleurs ; en particulier, les noms des polices (pour le
<code>\DeclareFontSubstitution</code>) peuvent varier considérablement.
</p>
</div>
<div class="metainformation">
Auteur : Nicolas George.
Dernière modification le <date value="$Date: 2008-03-22 15:47:59 $" />.
</div>
</body>
</html>