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 <20><>exotiques<65><73>. Par l<>, nous entendons des langues qui s'<27>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 <20>t<EFBFBD> con<6F>u avant tout par des Am<41>ricains, et <20> ce titre, pr<70>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<75>: avec la mani<6E>re
directe de proc<6F>der, le code source d'un mot en grec ancien risque d'<27>tre
moins lisible que les jurons de Fantasio.
</p>
<p>
Heureusement, LaTeX est programmable, et des extensions ont <20>t<EFBFBD> <20>crites pour
permettre plus de confort. H<>las, ces extensions sont toutes plus ou moins
incompatibles entre elles, et souvent plut<75>t plus que moins. Par exemple, si
vous voulez taper du fran<61>ais et du grec, vous avez un choix exclusif entre
taper confortablement les caract<63>res accentu<74>s fran<61>ais et taper
confortablement les mots grecs.
</p>
<p>
Plus r<>cemment, l'informatique a vu le d<>veloppement d'Unicode, un syst<73>me
qui r<>sout les probl<62>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<EFBFBD>ficier de ce
progr<EFBFBD>s.
</p>
<h3>Difficult<6C>s encore pr<70>sentes</h3>
<p>
Unicode r<>sout certains probl<62>mes, mais ne les r<>sout pas tous. Le principal
est bien s<>r celui des polices<65>: votre texte aura beau contenir,
informatiquement parlant, des id<69>ogrammes chinois, si ces id<69>ogrammes ne
sont disponibles dans aucune police que conna<6E>t LaTeX, vous n'irez pas loin.
</p>
<p>
Ensuite, Unicode est con<6F>u pour la <em>saisie</em> du texte, pas son rendu<64>:
Unicode traite des entit<69>s plus ou moins abstraites appel<65>es caract<63>res, qui
n'ont pas n<>cessairement un rapport direct avec les glyphes qu'on veut voir
dans un document imprim<69>. Pour les langues europ<6F>ennes, <20>a se passe plut<75>t
bien, mais certaines langues, l'arabe et surtout les langues indiennes, ont
des interactions entre caract<63>res tr<74>s complexes<65>: ligatures,
r<EFBFBD>ordonnancement, combinaisons, etc. Unicode n'aplanit pas ces difficult<6C>s,
il se contente de fournir un point d'entr<74>e confortable <20> une extension qui
le fait &mdash; si elle existe.
</p>
<p>
Enfin, LaTeX est con<6F>u presque exclusivement pour l'<27>criture de gauche <20>
droite. Ses algorithmes sont incapables de g<>rer l'<27>criture de droite <20>
gauche de l'arabe et de l'h<>breu, et l'<27>criture en colonnes.
</p>
<h3>Finalement, qu'est-ce qui marche<68>?</h3>
<p>
Apr<EFBFBD>s toutes ces consid<69>rations d<>faitistes, on en vient <20> 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.)<29>;</li>
<li>le grec, moderne et ancien<65>;</li>
<li>le cyrillique</li>
<li>le chinois, simplifi<66> et traditionnel, <20>crit de gauche <20> droite<74>;</li>
<li>le japonais, <20>crit de gauche <20> droite.</li>
</ul>
<p>
La distribution standard de LaTeX comporte des polices latines, grecques et
cyrilliques. Des polices chinoises et japonaises sont <20>galement disponibles,
mais parfois plus techniques <20> installer. Il y en a install<6C>es <20> l'ENS.
</p>
<h2>Comment faire</h2>
<h3>Pr<50>paration</h3>
<p>
Avant de commencer, il y a un pr<70>-requis qui n'est pas sp<73>cifique <20> LaTeX<65>:
savoir taper un texte quelconque, dans la langue qui vous int<6E>resse, en
Unicode. Heureusement, nous avons une documentation sur les
<a href="&url.tuteurs;unix/editeurs/unicode.html"><3E>diteurs en Unicode</a>,
que nous vous invitons <20> lire avant d'aller plus loin si ce n'est d<>j<EFBFBD> fait.
</p>
<p>
Tout ce que vous avez <20> faire maintenant, c'est de cr<63>er votre fichier LaTeX
avec votre <20>diteur en Unicode. Nous allons voir dans un instant ce qu'il
faut mettre dans le pr<70>ambule.
</p>
<div class="ens">
<p>
<strong>Attention,</strong> sur certains PC FreeBSD, c'est une ancienne
version de LaTeX qui est install<6C>e. Si vous <20>prouvez des probl<62>mes, regardez
la deuxi<78>me ligne des messages lors de la compilation<6F>: si elle indique
<EFBFBD><EFBFBD><code>LaTeX2e &lt;1999/12/01&gt; patch level 1</code><3E><>, changez de
machine (en vous loguant <20> distance, c'est le plus simple).
</p>
</div>
<h3>Ce qu'il faut <20>crire</h3>
<p>
Dans le cas g<>n<EFBFBD>ral, il n'y a quasiment rien <20> changer. Il suffit d'avoir la
ligne suivante dans le pr<70>ambule<6C>:
</p>
<pre>\usepackage[utf8]{inputenc}</pre>
<p class="continue">
(<28> la place de l'habituel <code>latin1</code>). Avec cette ligne, un texte
en alphabet latin <20>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<61>s directement) fonctionne directement.
</p>
<p>
Pour d'autres langues, il faut quelques options suppl<70>mentaires, et en
particulier informer babel du changement de langue.
</p>
<h3>Babel polyglotte</h3>
<p>
Jusqu'a pr<70>sent, vous n'avez probablement utilis<69> du package babel que la
ligne <code>\usepackage[francais]{babel}</code>. Il est temps d'apprendre <20>
l'utiliser pour d'autres langues. Par chance, c'est assez simple. La
premi<EFBFBD>re chose <20> faire est de charger les bons modules<65>:
</p>
<pre>\usekackage[greek,russian,francais]{babel}</pre>
<p class="continue">
La derni<6E>re langue mentionn<6E>e est la langue <20><>principale<6C><65> du document,
celle qui est s<>lectionn<6E>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 <20>a<EFBFBD>:
</p>
<pre>\selectlanguage{<var>langue</var>}</pre>
<p class="continue">
s<EFBFBD>lectionne une nouvelle langue pour tout le reste du texte, ou jusqu'<27> la
prochaine rencontre avec la m<>me commande. De mani<6E>re surprenante, cette
commande s'<27>chappe des groupes et des environnements<74>; <20> utiliser avec
prudence donc.
</p>
<pre>
\begin{otherlanguage}{<var>langue</var>}
\end{otherlanguage}
</pre>
<p class="continue">
s<EFBFBD>lectionne une langue pour l'<27>tendue de l'environnement. Aucune surprise
ici.
</p>
<pre>\foreignlanguage{<var>langue</var>}{<var>blabla</var>}</pre>
<p class="continue">
s<EFBFBD>lectionne une langue pour le texte <20><>blabla<6C><61>, et s'utilise de la m<>me
mani<EFBFBD>re que <code>\emph</code>.
</p>
<p>
Souvent, des commandes plus compactes sont disponibles sp<73>cifiquement pour
une langue donn<6E>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<70>cis<69>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 <20>trangers, par exemple le
commentaire en fran<61>ais d'un texte grec, changer sans arr<72>t de langue est
fastidieux, m<>me en ayant d<>fini une macro tr<74>s courte. Il est possible
d'automatiser <20>a en utilisant le package <code>autofe</code>. Attention
cependant si vous optez pour cette solution<6F>: si dans un mot certains
caract<EFBFBD>res sont disponibles dans la police actuelle et d'autres pas, ce mot
sera rendu avec un m<>lange de polices, ce qui peut <20>tre tr<74>s laid, et vous
n'aurez aucun avertissement. De plus, au del<65> 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<73>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<74>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<EFBFBD>cessaire pour que la police soit disponible. Rien d'autre <20> signaler.
</p>
<h3>Le chinois</h3>
<p>
L<EFBFBD>, <20>a se complique un peu, il faut quelques packages suppl<70>mentaires. Voici
ce qu'il faut mettre dans le pr<70>ambule pour du chinois traditionnel<65>:
</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<66><69>:
</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<6D>re ligne indique quelle
interpr<EFBFBD>tation choisir pour un caract<63>re qui aurait le mauvais go<67>t d'<27>tre
commun au chinois simplifi<66>, au chinois traditionnel et au japonais. La
troisi<EFBFBD>me ligne charge l'encodage n<>cessaire (C00 pour le chinois
traditionnel, C10 pour le simplifi<66>), ainsi que l'encodage occidental (faute
de quoi <20>a ne marche pas). Enfin, la derni<6E>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<74>s orn<72>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<70>mentaires <20> savoir. D'abord, babel n'a pas de mode
pour le chinois. Pour <20>viter des bizarreries typographiques, il peut <20>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<EFBFBD>ogrammes<EFBFBD>; il est n<>cessaire d'ins<6E>rer des espaces <20> la main. Peut-<2D>tre
dans un avenir proche un package r<>soudra-t-il le probl<62>me.
</p>
<div class="ens">
<p>
L'installation de polices chinoises pour LaTeX est assez acrobatique, et
pas compl<70>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<72>; en particulier, les noms des polices (pour le
<code>\DeclareFontSubstitution</code>) peuvent varier consid<69>rablement.
</p>
</div>
<h3>Le japonais</h3>
<p>
L<EFBFBD>, <20>a se complique un peu, il faut quelques packages suppl<70>mentaires. Voici
ce qu'il faut mettre dans le pr<70>ambule<6C>:
</p>
<pre>
\usepackage[cjkjis]{ucs}
\usepackage[utf8]{inputenc}
\usepackage[C42,T1]{fontenc}
\DeclareFontSubstitution{C42}{dg}{m}{n}
</pre>
<p>
La premi<6D>re ligne indique quelle
interpr<EFBFBD>tation choisir pour un caract<63>re qui aurait le mauvais go<67>t d'<27>tre
commun au japonais et au chinois. La
troisi<EFBFBD>me ligne charge l'encodage n<>cessaire (C42 pour le japonais), ainsi
que l'encodage occidental (faute de quoi <20>a ne marche pas). Enfin, la
derni<EFBFBD>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
<EFBFBD>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<70>mentaires <20> savoir. D'abord, babel n'a pas de mode
pour le japonais. Pour <20>viter des bizarreries typographiques, il peut <20>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<EFBFBD>res<EFBFBD>; il est n<>cessaire d'ins<6E>rer des espaces <20> la main. Peut-<2D>tre
dans un avenir proche un package r<>soudra-t-il le probl<62>me.
</p>
<div class="ens">
<p>
L'installation de polices japonaises pour LaTeX est assez acrobatique, et
pas compl<70>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<72>; en particulier, les noms des polices (pour le
<code>\DeclareFontSubstitution</code>) peuvent varier consid<69>rablement.
</p>
</div>
<div class="metainformation">
Auteur<EFBFBD>: Nicolas George.
Derni<EFBFBD>re modification le <date value="$Date: 2004-04-12 17:58:02 $" />.
</div>
</body>
</html>