tuteurs.ens.fr/www/logiciels/latex/xetex.tml

225 lines
9.6 KiB
Text
Raw Permalink Normal View History

2008-03-20 00:08:38 +01:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
2008-03-20 00:19:41 +01:00
<title>XeTeX</title>
2008-03-20 00:08:38 +01:00
</head>
<body>
<h1>Polices et langues exotiques avec XeTeX</h1>
<div class="resume">
<p>Cette page a pour but de montrer comment on peut utiliser le
programme XeTeX pour utiliser facilement des polices extérieures et
taper du texte dans des systèmes d'écriture latins ou non latins.</p>
2008-03-20 00:08:38 +01:00
</div>
<h2>Qu'est-ce que XeTeX</h2>
<p>XeTeX est un programme basé sur TeX, qui en est une variante (les
fichiers écrits pour l'un pour l'autre ne seront pes nécessairement
compatibles). Il a d'abord été conçu pour fonctionner avec Mac OS X
mais fonctionne aujourd'hui avec une grande diversité de systèmes.</p>
<p>Un de ses grands avantages est de gérer tout à fait correctement les
fichiers encodés en UTF-8, et les polices TrueType et OpenType, ce qui
permet de bénéficier des mêmes possiblités techniques que les logiciels
de traitement de texte habituels pour produire des documents, qu'ils soient
écrits en arménien, en araméen, en japonais, en lituanien ou en
persan.</p>
2008-03-20 00:08:38 +01:00
<h2>Compiler un fichier avec XeLaTeX</h2>
<p>De la même manière qu'on utilise la commande <code>latex</code> pour
compiler les fichiers écrits pour LaTeX, on utilise la commande
<code>xelatex</code> pour compiler les fichiers LaTeX destinés à
profiter des fonctionnalités de XeTeX.</p>
2008-03-20 00:08:38 +01:00
<p>La commande <code>xelatex</code> s'utilise comme la commande
<code>pdflatex</code>.</p>
<pre>xelatex fichier.tex</pre>
<p>L'option <code>-no-pdf</code> permet de retrouver le comportement de la
commande <code>latex</code> qui ne produit pas un fichier PDF directement
lisible mais un fichier intermédiaire de la forme
<code>fichier.xdv</code>. La commande <code>xdvipdfmx</code> sert à
2008-03-20 00:08:38 +01:00
convertir les fichiers XDV en fichers PDF.</p>
<h2>Les principales différences avec LaTeX</h2>
2008-03-20 00:08:38 +01:00
<p>XeTeX accepte les fichiers encodés en UTF-8 seulement, par défaut.
assurez-vous donc d'utiliser un éditeur de texte compatible
(voir aussi <a href="&url.tuteurs;faq/utf8.html#editeurs">la page
concernant UTF-8</a> pour plus d'informations).</p>
2008-03-20 00:08:38 +01:00
<p>XeLaTeX possède un certain nombre de paquets spécifiques, et au
contraire ne doit pas être utilisé avec certains paquets traditionnels
2008-03-20 00:08:38 +01:00
de LaTeX.</p>
<ul>
<li>les paquets <code>inputenc</code> et <code>fontenc</code> sont
inutiles</li>
<li>le paquet <code>fontspec</code> sert à sélectionner les polices
2008-03-20 00:08:38 +01:00
facilement</li>
</ul>
<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>
2008-03-20 00:08:38 +01:00
<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>
2008-03-20 00:08:38 +01:00
<h3>Ce qu'il faut écrire</h3>
2008-03-20 00:08:38 +01:00
<p>Les fichiers déjà écrits pour LaTeX peuvent nécessiter quelques
adaptations : grâce à votre éditeur de texte favori, enregistrez votre
2008-03-20 00:08:38 +01:00
fichier au format UTF-8, et remplacez les lignes</p>
<pre>\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}</pre>
<p class="continue">par</p>
<pre>\usepackage{fontspec}</pre>
2008-03-20 00:08:38 +01:00
<h3>Choisir une police de caractères</h3>
2008-03-20 00:08:38 +01:00
<p>Par défaut, XeTeX utilisera les polices Latin Modern qui ont un
2008-03-20 00:08:38 +01:00
aspect semblable aux polices standard de LaTeX. Mais si vous voulez en
changer, en particulier pour afficher du texte dans d'autres écritures,
2008-03-20 00:08:38 +01:00
il faudra se procurer une police capable de les afficher. Prenons par
exemple la police <em>FreeSerif</em>. La commande suivante permet de
sélectionner cette police par défaut pour l'ensemble du document.</p>
<pre>\setmainfont[Ligatures=TeX]{FreeSerif}</pre>
<p>Les options indiquées permettent respectivement d'utiliser certaines
suites de caractères pour les caractères spéciaux (comme
<code>---</code> pour &#x2014;), l'option <code>Ligatures=Common</code>
permet d'utiliser les ligatures standard
de la police si celle-ci en possède (notamment &#xfb01; et &#xfb03;).</p>
2008-03-20 00:08:38 +01:00
<div class="attention">
<p>Attention, certaines anciennes polices, datant d'avant
l'introduction du standard Unicode pour l'encodage des caractères,
permettent d'afficher des écritures non latines, en remplaçant les
dessins des caractères latins par ceux des caractères grecs : elles
permettent ainsi d'«écrire en grec» avec un clavier latin (comme la
police <em>Symbol</em>). L'usage de ces polices de caractères est à
proscrire : l'utilisation de systèmes Unicode permet aux fichiers de
reproduire fidèlement les caractères présents dans le texte.</p>
2008-03-20 00:08:38 +01:00
</div>
<p>Il est possible que la police choisie par défaut ne convienne pas à
tous les usages, par exemple pour écrire en chinois. Si cela s'avérait
nécessaire, rien de plus simple : il suffit de déclarer une nouvelle
2008-03-20 00:08:38 +01:00
police avec la commande suivante</p>
<pre>\newfontfamily\cjkfont[Script=CJK]{AR PL ZenKai Uni}</pre>
<p>Cette commande déclare une nouvelle police utilisable avec la
2008-03-20 00:08:38 +01:00
commande <code>\cjkfont</code> (il s'agit de la police <em>AR PL ZenKai
Uni</em>). On pourra alors l'utiliser sous la forme suivante :</p>
<pre>En chinois, «Chine» s'écrit {\cjkfont 中国}.</pre>
2008-03-20 00:08:38 +01:00
2010-11-15 22:02:14 +01:00
<h2>Documents en langue étrangère avec polyglossia</h2>
<h3>Présentation</h3>
<p>Le paquet <code>polyglossia</code> ne fonctionne qu'avec XeTeX, et sert
à remplacer le paquet <code>babel</code>. Attention cependant : toutes les
focntionnalités de babel n'y sont pas présentes, notamment le remplacement
des puces par des tirets dans les environnements <code>itemize</code>,
pour les documents en français.
</p>
<p>L'intérêt principal de <code>polyglossia</code> est de fournir des
traductions pour les textes affichés traditionnellement par LaTeX
(les dates, les mots <em>Section</em>, <em>Chapter</em>, <em>Contents</em>,
<em>Proof</em>...).
</p>
<p>Là où on écrivait auparavant <code>\usepackage[francais]{babel}</code>
il faudra écrire par exemple</p>
<pre>\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguage[variant=british]{english}
</pre>
<p class="continue">qui indique que le texte est en français (on verra ainsi
<em>Table des matières</em> au lieu de <em>Contents</em> et permet d'insérer
des passages en anglais britannique avec <code>\begin{english}</code> et
<code>\end{english}</code>.</p>
<div class="attention">
Le français et l'anglais sont écrits dans le même alphabet, et il peut sembler
inutile d'indiquer les changements de langue dans le document. Cela a
néanmoins son importance, notamment pour l'adaptation des règles de césure
ou de typographie (espacements et ponctuation) à la langue.
</div>
<h3>Exemple de l'arabe</h3>
<p>On peut aussi utiliser <code>polyglossia</code> pour les langues comme l'arabe.
outre la commande <code>\setdefaultlanguage{arabic}</code>, on peut utiliser
une commande comme</p>
<pre>\newfontfamily\arabicfont[Script=Arabic]{Scheherazade}</pre>
<p class="continue">afin d'indiquer la police souhaitée pour l'arabe.
Cette étape est essentiellement obligatoire, car peu de polices incluent
à la fois les caractères latins et arabes dans le style désiré.
Un exemple de fichier LaTeX avec un texte arabe
<a href="http://github.com/fc7/polyglossia/raw/master/doc/example-arabic.tex">se trouve ici.</a>
</p>
<p>La paquet <code>arabxetex</code>, qui ne fonctionne également qu'avec XeLaTeX,
permet d'entrer du texte dans les écritures arabes (que ce soit en arabe,
en persan ou en ourdou) à l'aide de translittération, et fournit
un certain nombre d'autres fonctions utiles. La documentation
se trouve <a href="http://mirror.ctan.org/macros/xetex/latex/arabxetex/arabxetex.pdf">à
cette adresse</a>.
2010-11-15 22:02:14 +01:00
</p>
2008-03-20 00:08:38 +01:00
<h2>Un exemple</h2>
<pre>\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Linux Libertine O}
\usepackage[margin=4cm]{geometry}
\usepackage{amsthm}
\title{Οἱ πρῶτοι ἀριθμοί}
\date{20 Μαρτίου 2008}
2008-03-20 00:08:38 +01:00
\begin{document}
\maketitle
\textbf{Θεώρημα 1.} «Οἱ πρῶτοι ἀριθμοὶ πλείους εἰσὶ παντὸς τοῦ προτεθέντος
πλήθους πρώτων ἀριθμῶν.» (\emph{Στοιχεία}, Εὐκλείδης). Ἄρα, τὸ σύνολο τῶν
πρώτων ἀριθμῶν εἶναι ἄπειρο.
2008-03-20 00:08:38 +01:00
\textsc{Ἀπόδειξη. } Ἔστω $P$ ἕvα πεπερασμένο σύνολο $\{p_1, \dots, p_k\}$
πρώτων ἀριθμῶν. Θεωροῦμε τὸv ἀκέραιον ἀριθμόν $N := p_1\cdots p_k + 1$, ποὺ
εἶναι μεγαλύτερος τοῦ $1$. Τότε ὑπάρχει ἕνα πρῶτο διαιρέτη $q$ τοῦ $N$.
Ἄv $q = p_i$, τότε $q | N - p_1\cdots p_k$, ἄρα $q | 1$, καὶ αὑτὸ εἶναι
ἄτοπο. $\qed$
2008-03-20 00:08:38 +01:00
\end{document}</pre>
<h2>Informations complémentaires</h2>
2008-03-27 01:56:20 +01:00
<ul>
<li>Le <a href="http://scripts.sil.org/xetex">site officiel</a></li>
</ul>
2008-03-20 00:08:38 +01:00
<div class="metainformation">
Auteur : Rémy Oudompheng.
<date value="from git" />
2008-03-20 00:08:38 +01:00
</div>
</body>
</html>