20653ddee5
Last-change: ignore this commit
355 lines
13 KiB
XML
355 lines
13 KiB
XML
<?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 — 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 <1999/12/01> 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>œ</code>,
|
||
<code>“</code>, <code>”</code>, <code>‘</code>,
|
||
<code>’</code>, <code>€</code>, <code>…</code>,
|
||
<code>—</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>\usekackage[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: 2007-07-17 10:02:50 $" />.
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|