> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/fr/langues/01-multilingual-typesetting-on-overleaf-using-polyglossia-and-fontspec.md).

# Composition multilingue sur Overleaf à l’aide de polyglossia et fontspec

## Introduction

Cet article présente un aperçu de la composition de documents multilingues sur Overleaf à l’aide du compilateur XeLaTeX (ou LuaLaTeX) conjointement avec les `fontspec` et `polyglossia` paquets LaTeX.

Pour de nombreux utilisateurs, sinon la plupart, le choix par défaut du moteur TeX est `pdfTeX`, qui, contrairement à XeTeX et LuaTeX, n’a pas la capacité intégrée de lire [UTF-8](https://en.wikipedia.org/wiki/UTF-8) des fichiers texte encodés. L’utilisation de pdfTeX rend la composition de certaines langues en LaTeX très compliquée, en particulier celles qui n’utilisent pas une écriture basée sur le latin. Certains paquets — tels que [`inputenc`, `fontenc` et](/latex/fr/langues/05-arabic.md) [`arabtex`](/latex/fr/langues/05-arabic.md)— fournissent à pdfTeX une prise en charge pour la composition de langues et d’écritures non latines, mais tous les glyphes et caractères ne seront pas forcément pris en charge ou rendus correctement dans le PDF de sortie, même si vous avez utilisé l’ `utf8` ou `utf8x` option avec `inputenc`.

Pour une discussion approfondie de l’UTF-8, de l’encodage Unicode et des moteurs XeTeX/LuaTeX, l’article Overleaf [Unicode, UTF-8 et texte multilingue : une introduction](/latex/fr/articles-approfondis/51-unicode-utf-8-and-multilingual-text-an-introduction.md) est une lecture passionnante.

## Voici XeTeX et LuaTeX

Les moteurs XeTeX et LuaTeX peuvent lire/traiter directement du texte encodé en UTF-8 ; par conséquent, ils offrent une prise en charge native d’Unicode — ils peuvent aussi [utiliser directement des polices TrueType et OpenType](/latex/fr/polices/03-xelatex.md) directement. Ces propriétés en font un choix naturel pour la composition de documents multilingues ou non latins en LaTeX, produisant des résultats comme ceux-ci :

![](/files/b0afec7edf6acc2e90d3fbe6d662d604658ff348) ![](/files/50359fffaf916d538ff4d2169ebed601fbd1da0e) ![](/files/c0a07c36a9210c0e42b76c30187a32ddd575c37d)

Ces exemples se trouvent dans la galerie Overleaf : [Comment écrire du texte multilingue avec différentes écritures en LaTeX sur Overleaf](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz) et [Remerciement multilingue](https://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyf).

Si vous souhaitez composer du chinois, du japonais et du coréen, jetez un œil à ces articles :

* [Chinois](/latex/fr/langues/06-chinese.md)
* [Japonais](/latex/fr/langues/11-japanese.md)
* [Coréen](/latex/fr/langues/12-korean.md)

Xe(La)TeX reste utile pour ces langues, mais des moteurs TeX plus spécialisés sont disponibles, notamment [conçus pour la composition des langues CJK](/latex/fr/autres-sujets/45-tex-primitives-listed-by-cjk-tex-engine.md)— tels que [pTeX](https://ctan.org/pkg/ptex?lang=en) pour la composition du japonais.

Notez que si votre curseur semble se comporter bizarrement lors de l’édition de texte dans certaines langues sur Overleaf, vous pouvez cliquer sur le **Menu** bouton (situé au-dessus de la liste des fichiers du projet) et modifier l’option « Font Family ». Vous pouvez aussi essayer [de modifier les préférences de police à chasse fixe de votre navigateur](https://www.howtogeek.com/208552/how-to-change-the-default-fonts-in-your-web-browser/) ou d’utiliser plutôt la vue Rich Text d’Overleaf. Cependant, au moment de la rédaction, les vues Source et Rich Text ne prennent peut-être pas encore entièrement en charge l’édition de texte de droite à gauche au niveau de fonctionnalité que nous visons à atteindre.

## Modifier le compilateur du projet

Le `fontspec` et `polyglossia` Les paquets nécessitent le compilateur XeLaTeX ou LuaLaTeX, vous devrez donc configurer votre projet Overleaf pour utiliser l’un de ces compilateurs. Des instructions détaillées se trouvent dans notre article [Choisir un compilateur LaTeX](/latex/fr/autres-sujets/08-choosing-a-latex-compiler.md) mais voici un court extrait vidéo montrant comment définir le compilateur de votre projet :

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/2HDpWlJuNR50hknbpxfQdu/93cdc17ef2c6c77249a1c7c76b34a817/choosingcompiler.mp4>" %}

Une fois que vous compilez avec XeLaTeX ou LuaLaTeX, vous pouvez (et devriez) supprimer les `inputenc` et `fontenc` paquets de l’en-tête de votre fichier .tex, car ces moteurs compatibles Unicode supposent que les fichiers d’entrée (texte) sont encodés en UTF-8. D’ailleurs, tous les fichiers texte téléversés sur Overleaf sont convertis en UTF-8, donc vous devriez généralement utiliser `utf8` avec `inputenc` lorsque vous travaillez avec les compilateurs pdfLaTeX et LaTeX sur Overleaf.

## Si tout votre document ne concerne qu’une seule langue

Lors de l’utilisation du `fontspec` paquet, vous pourriez vous contenter de configurer uniquement une police principale (avec empattements), une police sans empattement et probablement une police à chasse fixe conçue pour prendre en charge la langue que vous composez — il y a toutefois un bémol, que nous reverrons plus loin dans l’article. Par exemple, si tout votre document est en grec, avec quelques mots anglais, vous pouvez simplement écrire

```latex
\usepackage{fontspec}
\setmainfont[Script=Greek]{GFS Artemisia}
\setsansfont[Script=Greek]{GFS Neohellenic}
\setmonofont[Script=Greek]{Noto Mono}
. . .
Το Lorem Ipsum είναι \textsf{απλά} ένα κείμενο χωρίς νόημα
για τους επαγγελματίες της \texttt{τυπογραφίας} και στοιχειοθεσίας.
```

Vous pouvez choisir des polices dans une [liste de polices TrueType et OpenType disponibles](https://www.overleaf.com/help/193). Le `Ligatures=TeX` option est ajoutée automatiquement pour `\setmainfont` et `\setsansfont`, vous n’avez donc pas à l’ajouter vous-même. (`\setromanfont` est un alias de `\setmainfont`.)

Le code LaTeX ci-dessus produit le résultat suivant :

![](/files/1359e6ba370b18295603bbcc543db32e510e0c0a)

## Plusieurs langues/écritures dans le même document : introduction à polyglossia

Si votre document contient une quantité non négligeable de texte dans plusieurs langues, le `polyglossia` paquet est utile pour prendre en charge les conventions de composition propres à chaque langue et la césure.

```latex
\usepackage{fontspec}
\setmainfont{FreeSerif}
\setsansfont{FreeSans}
\setmonofont{FreeMono}

\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguages{english,russian,thai}

\begin{document}
\begin{abstract}
Le Lorem Ipsum est simplement du faux texte employé dans
la composition et la mise en page avant impression.
\end{abstract}

Merci. \textenglish{Thank you.} \textrussian{Спасибо.} Et plus de
texte en français !

Le Lorem Ipsum est le faux texte standard ...

\begin{english}
Lorem Ipsum est simplement du faux texte ...
\end{english}

\begin{russian}
Lorem Ipsum - это текст-`\textsf{рыба}', часто используемый в
\texttt{печати} и вэб-дизайне. ...
\end{russian}

\begin{thai}
\XeTeXlinebreaklocale "th_TH"
\textenglish{Lorem Ipsum} คือ เนื้อหาจำลองแบบเรียบๆ ที่ใช้กันในธุรกิจงานพิมพ์หรืองานเรียงพิมพ์
\end{thai}
```

![](/files/059b37be3367296f841324ec82b0133f76508794)

`polyglossia` vous permet de définir la langue principale du document avec `\setdefaultlanguage` (la langue par défaut est l’anglais) et des langues « autres » (éventuellement plusieurs) avec `\setotherlanguages`. (`\setmainlanguage` est un alias de `\setdefaultlanguage`.) Si vous pensez n’utiliser qu’une seule autre langue étrangère, vous pouvez utiliser le singulier `\setotherlanguage`. Les noms des langues sont les mêmes que ceux utilisés par `babel`.

Nous avons préparé un petit exemple d’un document (principalement) en français qui contient aussi du texte en anglais, en russe et en thaï. Nous avons décidé d’utiliser les polices FreeSerif, FreeSans et FreeMono.

Parce que la langue principale du document est `french`, la `abstract` l’environnement produit automatiquement le titre « Résumé ». Notez comment, à la fin du premier paragraphe, le point d’exclamation est composé selon la convention typographique française : il est détaché de « français », même s’il suit immédiatement le mot `français` dans le code source.

Dans le corps du texte, de courts extraits en anglais, en cyrillique et en thaï peuvent être inclus dans un paragraphe de texte français avec `\textenglish{Thank you}`, `\textrussian{Спасибо}` et `\textthai{ขอบคุณ}`. En général, vous pouvez utiliser `\textLANGUAGE{...}` pour composer du texte dans n’importe quelle `LANGUAGE` qui a été déclarée par `\setdefaultlanguage` et `\setotherlanguages`. Comme la police principale (avec empattements) du document est FreeSerif, et que FreeSerif contient des glyphes pour les écritures latine, cyrillique et thaïe (et bien plus encore !), `fontspec` et `polyglossia` peut l’utiliser pour rendre tous ces textes dans le PDF de sortie.

Pour des paragraphes plus longs de texte dans des langues étrangères/autres, il est recommandé d’utiliser `\begin{LANGUAGE}`...`\end{LANGUAGE}`, par exemple `\begin{russian}`...`\end{russian}`, `\begin{thai}`...`\end{thai}`. Dans le cas de l’arabe, vous ne pouvez pas utiliser `\begin{arabic}`...`\end{arabic}`; vous devrez écrire `\begin{Arabic}`...`\end{Arabic}` à la place, tandis que `\textarabic{...}` reste valide.

Certaines précautions peuvent être nécessaires pour certaines langues : par exemple, dans l’environnement `thai` environnement, les mots `Lorem Ipsum` doivent être placés dans un `\textenglish{...}` (ou `\textfrench{...}`) afin de garantir qu’ils soient rendus à l’aide des glyphes de l’écriture latine.

À ce stade, vous pourriez vous demander : si FreeSerif est si polyvalente et contient de toute façon des glyphes pour le russe et le thaï, pourquoi aurions-nous encore besoin d’utiliser `\textrussian`, `\begin{english}`...`\end{english}` etc. ? Ne serait-ce pas redondant ? Voyons ce qui se passe lorsque nous supprimons les `\begin{english}`...`\end{english}` et `\begin{russian}`...`\end{russian}` environnements :

![](/files/31a6cd96d7b4e94c56b3b1ac59fab158d7fd52b7)

Certes, tous les glyphes latins et cyrilliques sont rendus dans le PDF de sortie, mais notez que certains mots sont maintenant coupés de manière incorrecte : « unk-nown » et « unchan-ged » — et стандартной n’est pas césuré du tout. Sans les environnements de changement de langue, le compilateur pense que ces éléments de texte sont toujours en français et tente de les composer selon les conventions françaises. Le compilateur essaie d’appliquer les règles françaises de césure qui, naturellement, donnent des résultats incorrects. C’est pourquoi la typographie et la composition sont bien plus que la simple conception et le choix des polices : ce sont des disciplines très liées à la langue et à la culture.

En revenant à notre premier exemple grec, nous voyons maintenant pourquoi il est judicieux de charger `polyglossia` et d’utiliser `\setdefaultlanguage{greek}`: afin de garantir que le document soit composé selon les conventions grecques.

## Mélange de langues de droite à gauche (RTL) et de gauche à droite (LTR)

Vous devez être prudent lorsque vous composez un mélange d’écritures de droite à gauche (RTL), comme l’arabe ou l’hébreu, et d’écritures de gauche à droite (LTR), dans un même document. Considérez le petit document arabe suivant contenant un mot anglais, avec Amiri comme police principale :

```latex
\usepackage{polyglossia}
\setdefaultlanguage{arabic}
\setmainfont{Amiri}
\begin{document}
ما هو differentiation
\end{document}
```

ce qui produit :

![](/files/f2852287047d682c2349b03f873884eec70cb0fd)

Le texte est automatiquement composé de droite à gauche, en commençant sur le bord droit de la page. Le mot « differentiation » lui-même est composé correctement comme du texte de gauche à droite — mais attendez, *non, ce n’est pas le cas*! Il est rendu sous la forme « dffirentiation » dans le résultat ! Que se passe-t-il ?

La police Amiri possède bien des glyphes pour les alphabets latins, mais ici le texte `differentiation` n’est pas marqué comme anglais : le compilateur traite `differentiation` comme du texte de droite à gauche, comme s’il s’agissait d’une suite de caractères arabes. Lors de la composition, la séquence originale `iff` est traitée comme `ffi` (c’est-à-dire comme du texte RTL) et le [ligature](https://en.wikipedia.org/wiki/Typographic_ligature) glyphe « ffi » d’Amiri est composé. Marquer le mot avec `\textenglish{...}` garantit qu’il est interprété correctement comme du texte de gauche à droite.

```latex
\setmainfont{Amiri}
\setotherlanguage{english}
\newfontfamily\englishfont{TeX Gyre Termes}
\begin{document}
ما هو \textenglish{differentiation}
```

![](/files/248de31ab7d1a17d88392fce25a2b29d43812c1d)

**Remarque :** Si vous êtes habitué aux `babel` commandes du paquet, vous serez heureux d’apprendre que les commandes `\selectlanguage`, `\foreignlanguage` et l’environnement `otherlanguage` sont également pris en charge par `polyglossia`.

## Options spécifiques à la langue

Certaines langues prennent en charge des options supplémentaires de personnalisation ; par exemple, `greek` accepte une `variant=ancient`, `mono` ou `poly` option pour le grec ancien, monotone ou polytonique ; `hindi` peut être configuré avec `numerals=western` ou `devanagari`. Voir la [documentation du paquet polyglossia](http://texdoc.net/pkg/polyglossia) pour plus de détails.

Ces options peuvent être spécifiées lors du chargement de la langue :

```latex
\setdefaultlanguage[variant=poly]{greek}
\setotherlanguage[numerals=western]{hindi}
```

ou plus tard à tout moment :

```latex
\setkeys{greek}{variant=ancient}
```

ou même localement pour un environnement spécifique :

```latex
\begin{greek}[variant=ancient]
...
\end{greek}
```

## Spécification des polices pour des langues spécifiques

Vous pouvez spécifier la police utilisée pour différentes langues. Supposons que vous souhaitiez composer tout le texte anglais (contenu dans notre exemple précédent) en italique ; vous pourriez écrire :

```latex
\newfontfamily\englishfont{FreeSerif Italic}
```

![](/files/64814d108bfdc62989bbd0d154a1c6317f0f12cb)

Vous pouvez bien sûr utiliser quelque chose d’encore plus flamboyant :

```latex
\newfontfamily\englishfont{Chancery Uralic}
```

![](/files/22b2c411bc93fb8926df8b6e18b9713035862527)

Ce mécanisme de définition de polices pour différentes langues ou écritures est particulièrement important lorsque vous utilisez une police principale qui *ne* contient des glyphes pour toutes les écritures ou langues de votre document. Supposons maintenant que nous décidions d’utiliser Caladea comme police principale du document :

```latex
\setmainfont{Caladea}
```

À la compilation, nous obtiendrions l’erreur suivante :

```
Erreur du paquet polyglossia : la police romaine actuelle
ne contient pas l’écriture cyrillique !

(polyglossia)                Veuillez définir
\cyrillicfont avec \newfontfamily.

Voir la documentation du paquet polyglossia pour
l’explication.
Tapez H <Entrée> pour une aide immédiate.
 ...

l.15 \select@language {russian}

Erreur du paquet polyglossia : la police romaine actuelle
ne contient pas l’écriture thaïe !

(polyglossia)                Veuillez définir
\thaifont avec \newfontfamily.

Voir la documentation du paquet polyglossia pour
l’explication.
Tapez H <Entrée> pour une aide immédiate.
 ...

l.23 \select@language {thai}
...
```

Nous sommes maintenant obligés de préciser quelles polices utiliser pour les écritures cyrillique et thaïe. Là encore, vous pouvez vous référer à la [liste de polices TrueType et OpenType disponibles](https://www.overleaf.com/help/193) sur Overleaf.

```latex
\newfontfamily\cyrillicfont[Script=Cyrillic]{Charis SIL}
\newfontfamily\thaifont[Script=Thai]{Garuda}
```

![](/files/af77512927d1579f4aa7c50c03da3b2148df4499)

**Remarque**: il dépasse le cadre de cet article de traiter les questions liées au choix de combinaisons de polices esthétiquement harmonieuses et typographiquement compatibles.

Remarquez que nous avons défini `\cyrillicfont` au lieu de `\russianfont`, c’est-à-dire que nous avons défini une police pour l’écriture cyrillique *écriture* plutôt que pour la langue russe *langue*. L’avantage de définir `\cyrillicfont` est que si, par exemple, `serbian` est également une langue définie dans votre projet, alors `\textserbian` utiliserait automatiquement la police définie `\cyrillicfont`. Si vous aviez défini seulement `\russianfont`, alors l’utilisation de `\textserbian` se plaindrait de nouveau que « la police romaine actuelle ne contient pas l’écriture cyrillique » et vous devriez définir `\cyrillicfont` de toute façon — *à moins que* vous *vous n’ayez effectivement* voulu utiliser une police différente pour le texte serbe !

Un autre scénario similaire est celui du devanagari *écriture*, qui est utilisé pour les langues hindi et sanskrite *langues*; ou l’écriture arabe utilisée pour l’arabe et le farsi (persan).

```latex
\setdefaultlanguage{english}
\setotherlanguages{hindi,sanskrit}
\newfontfamily\devanagarifont[Script=Devanagari]{Lohit Devanagari}
...
Hindi: \texthindi{हिन्दी}
Sanskrit: \textsanskrit{संस्कृतम्}
```

![](/files/79e46667ffc4c080779f7f1760168cf1f1aaf7d0)

Lors de l’utilisation de `\newfontfamily` il est nécessaire de spécifier la `Script`, sinon certains glyphes pourraient être rendus incorrectement ; par exemple, si nous avions écrit uniquement `\newfontfamily\thaifont{Garuda}` le résultat composé peut être incorrect (image de gauche ci-dessous) — le résultat correct est obtenu en ajoutant `[Script=Thai]`.

Incorrect : ![](/files/6acfdfab0855dea42713e0f4e3c51eca6e254ec0) Correct : ![](/files/595bf3f3079a4e9f5c83d6c120574e0e802286e8)

## Définition d’autres familles de polices

Jetons un coup d’œil à un autre exemple, cette fois avec l’hébreu :

```latex
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage[numerals=hebrew]{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont[Script=Hebrew]{Hadasim CLM}
\begin{document}
\section{מבוא}
זוהי עובדה מבוססת שדעתו של הקורא תהיה מוסחת עלידי טקטס קריא כאשר הוא יביט בפריסתו.  -
\end{document}
```

![](/files/aa33b62739a17734ed92b3adb8a0f8e7e2d0de25)

Jusqu’ici tout va bien. Supposons maintenant que nous utilisions un modèle créé à l’origine pour un document en anglais, qui définit les titres de section en sans empattement à l’aide du `titlesec` package :

```latex
\RequirePackage{titlesec}
\titleformat{\section}{\Large\sffamily\bfseries}{\thesection}{1em}{}
\usepackage{polyglossia}
\setdefaultlanguage[numerals=hebrew]{hebrew}
...
```

Nous sommes confrontés au message d’erreur :

```
Erreur du paquet polyglossia : la police romaine actuelle
ne contient pas l’écriture hébraïque !

(polyglossia)                Veuillez définir
\hebrewfont avec \newfontfamily.

Voir la documentation du paquet polyglossia pour
l’explication.
Tapez H <Entrée> pour une aide immédiate.
 ...

l.27 \section{מבוא}
```

C’est un peu déroutant : n’avions-nous pas déjà défini `\hebrewfont` comme étant Hadasim CLM ? Eh bien, c’est en réalité parce que nous *n’avons pas spécifié de police sans empattement pour l’hébreu*. Corrigeons cela en ajoutant une définition pour `\hebrewfontsf`:

```latex
\newfontfamily\hebrewfontsf[Script=Hebrew]{Miriam CLM}
```

Et maintenant nous obtenons le résultat :

![](/files/71fe010565a6e1c965889111aa70a8ce8e1130c1)

Au besoin, nous pourrions aussi définir une police à chasse fixe à utiliser avec `\hebrewfonttt`.

## Remerciements

Tous les extraits de lorem ipsum, dans diverses langues, proviennent de [`https://lipsum.com`](https://lipsum.com).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/fr/langues/01-multilingual-typesetting-on-overleaf-using-polyglossia-and-fontspec.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
