356 lines
13 KiB
Text
356 lines
13 KiB
Text
|
<?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 — 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 <1999/12/01> 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>œ</code>,
|
|||
|
<code>“</code>, <code>”</code>, <code>‘</code>,
|
|||
|
<code>’</code>, <code>€</code>, <code>…</code>,
|
|||
|
<code>—</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>
|