> 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/nl/talen/01-multilingual-typesetting-on-overleaf-using-polyglossia-and-fontspec.md).

# Meertalige zetting in Overleaf met polyglossia en fontspec

## Inleiding

Dit artikel geeft een overzicht van het zetwerk van meertalige documenten op Overleaf met behulp van de XeLaTeX- (of LuaLaTeX-) compiler in combinatie met de `fontspec` en `polyglossia` LaTeX-pakketten.

Voor veel, zo niet de meeste, gebruikers is hun standaardkeuze voor de TeX-engine `pdfTeX`, die, in tegenstelling tot XeTeX en LuaTeX, niet over een ingebouwde mogelijkheid beschikt om [UTF-8](https://en.wikipedia.org/wiki/UTF-8) gecodeerde tekstbestanden te lezen. Het gebruik van pdfTeX maakt het zetten van bepaalde talen in LaTeX erg ingewikkeld, vooral talen die geen op het Latijn gebaseerde schrijfwijze gebruiken. Sommige pakketten—zoals [`inputenc`, `fontenc` en](/latex/nl/talen/05-arabic.md) [`arabtex`](/latex/nl/talen/05-arabic.md)— bieden pdfTeX ondersteuning voor het zetten van niet-Latijnse talen en schriften, maar niet alle glyphs en tekens worden mogelijk ondersteund of correct weergegeven in de uitvoer-PDF, zelfs als je de `utf8` of `utf8x` optie met `inputenc`.

Voor een diepgaande bespreking van UTF-8, Unicode-codering en de XeTeX/LuaTeX-engines is het Overleaf-artikel [Unicode, UTF-8 en meertalige tekst: een inleiding](/latex/nl/diepgaande-artikelen/51-unicode-utf-8-and-multilingual-text-an-introduction.md) een fascinerende lezing.

## Maak kennis met XeTeX en LuaTeX

De XeTeX- en LuaTeX-engines kunnen UTF-8-gecodeerde tekst direct lezen/verwerken; daardoor bieden ze native ondersteuning voor Unicode—ze kunnen ook [direct werken met TrueType- en OpenType-lettertypen](/latex/nl/lettertypen/03-xelatex.md) rechtstreeks. Deze eigenschappen maken ze tot een natuurlijke keuze voor het zetten van meertalige of niet-Latijnse documenten in LaTeX, met uitvoer zoals deze:

![](/files/2c6c5b8ada136ab672fee0d4d2a2cddf322c8128) ![](/files/b5313541c01a33ec02c91cac1fdcdf1267718131) ![](/files/097ea42a643f8e4d5ccb4cc475b8d21446abb38f)

Deze voorbeelden zijn te vinden in de Overleaf-galerij: [Hoe schrijf je meertalige tekst met verschillende schriften in LaTeX op Overleaf](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz) en [Meertalige ‘dank-je-wel’](https://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyf).

Als je Chinees, Japans en Koreaans wilt zetten, bekijk dan deze artikelen:

* [Chinees](/latex/nl/talen/06-chinese.md)
* [Japans](/latex/nl/talen/11-japanese.md)
* [Koreaans](/latex/nl/talen/12-korean.md)

Xe(La)TeX is nog steeds nuttig voor deze talen, maar er zijn meer gespecialiseerde TeX-engines beschikbaar, namelijk [ontworpen voor het zetten van CJK-talen](/latex/nl/meer-onderwerpen/45-tex-primitives-listed-by-cjk-tex-engine.md)— zoals [pTeX](https://ctan.org/pkg/ptex?lang=en) voor het zetten van Japans.

Merk op dat als je cursor zich vreemd lijkt te gedragen tijdens het bewerken van tekst in bepaalde talen op Overleaf, je misschien op de Overleaf **Menu** knop (boven de projectbestandslijst) wilt klikken en de optie ‘Font Family’ wilt wijzigen. Je kunt ook proberen [de voorkeuren voor het monospaced lettertype van je browser te wijzigen](https://www.howtogeek.com/208552/how-to-change-the-default-fonts-in-your-web-browser/) of in plaats daarvan de Rich Text-weergave van Overleaf te gebruiken. Op het moment van schrijven ondersteunen de Source- en Rich Text-weergaven echter mogelijk nog niet volledig het bewerken van tekst van rechts naar links op het functieniveau dat we willen bereiken.

## De compiler van het project wijzigen

De `fontspec` en `polyglossia` pakketten vereisen de XeLaTeX- of LuaLaTeX-compiler, dus je moet je Overleaf-project zo instellen dat het een van die compilers gebruikt. Gedetailleerde instructies vind je in ons artikel [Een LaTeX-compiler kiezen](/latex/nl/meer-onderwerpen/08-choosing-a-latex-compiler.md) maar hier is een korte videofragment dat laat zien hoe je de compiler voor je project instelt:

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

Zodra je compileert met XeLaTeX of LuaLaTeX, kun je (moet je) de `inputenc` en `fontenc` pakketten uit de preambule van je .tex-bestand verwijderen, omdat deze Unicode-geschikte engines aannemen dat invoer-(tekst)bestanden UTF-8-gecodeerd zijn. Overigens worden alle tekstbestanden die naar Overleaf worden geüpload geconverteerd naar UTF-8, dus je moet `utf8` meestal `inputenc` gebruiken met de pdfLaTeX- en LaTeX-compilers op Overleaf.

## Als je hele document slechts één taal bevat

Bij gebruik van het `fontspec` pakket kun je misschien volstaan met alleen het instellen van een hoofdlettertype (serif), een schreefloos lettertype en waarschijnlijk een monospaced lettertype dat is ontworpen om de taal te ondersteunen die je zet—er is een addertje onder het gras, maar daar komen we later in het artikel op terug. Als je document bijvoorbeeld volledig in het Grieks is, met enkele Engelse woorden, kun je eenvoudig schrijven

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

Je kunt lettertypen kiezen uit een [lijst met beschikbare TrueType- en OpenType-lettertypen](https://www.overleaf.com/help/193)zijn gegenereerd. Het `Ligatures=TeX` optie wordt automatisch toegevoegd voor `\setmainfont` en `\setsansfont`, dus je hoeft dat niet zelf toe te voegen. (`\setromanfont` is een alias van `\setmainfont`.)

De bovenstaande LaTeX-code levert de volgende uitvoer op:

![](/files/70680627c136be2eb2b44971a6f9d2e5a6d33d61)

## Meerdere talen/schriften in hetzelfde document: kennismaking met polyglossia

Als je document aanzienlijke hoeveelheden tekst in meerdere talen bevat, is het `polyglossia` pakket handig om taal-specifieke zetconventies en woordafbreking te verzorgen.

```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 is simply dummy text ...
\end{english}

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

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

![](/files/85a5d2ab496bad8a66d47933c9119964f56d3489)

`polyglossia` laat je de hoofdtaal van het document instellen met `\setdefaultlanguage` (standaard is Engels) en (mogelijk meerdere) ‘andere’ talen met `\setotherlanguages`. (`\setmainlanguage` is een alias van `\setdefaultlanguage`.) Als je verwacht slechts één andere vreemde taal te gebruiken, kun je de enkelvoudsvorm `\setotherlanguage`. De taalnamen zijn dezelfde als die gebruikt worden door `babel`.

We hebben een klein voorbeeld voorbereid van een (voornamelijk) Frans document dat ook wat Engelse, Russische en Thaise tekst bevat. We hebben ervoor gekozen de lettertypen FreeSerif, FreeSans en FreeMono te gebruiken.

Omdat de hoofdtaal van het document `Frans`, de `abstract` omgeving automatisch de kop ‘Résumé’ produceert. Merk op hoe aan het einde van de eerste alinea het uitroepteken wordt gezet volgens de Franse spatiëringsconventie: het staat los van ‘français’, ook al volgt het direct op het woord `français` in de broncode.

In de hoofdtekst kunnen korte Engelse, Cyrillische en Thaise tekstfragmenten met `\textenglish{Thank you}`, `\textrussian{Спасибо}` en `\textthai{ขอบคุณ}`. Over het algemeen kun je `\textLANGUAGE{...}` gebruiken om tekst te zetten in elke `LANGUAGE` die is gedeclareerd door `\setdefaultlanguage` en `\setotherlanguages`. Omdat het hoofdlettertype (serif) van het document FreeSerif is, en FreeSerif glyphs bevat voor Latijnse, Cyrillische en Thaise (en meer!) schriften, `fontspec` en `polyglossia` kan het worden gebruikt om al deze teksten in de uitvoer-PDF weer te geven.

Voor langere alinea's tekst in vreemde/andere talen wordt aangeraden om `\begin{LANGUAGE}`...`\end{LANGUAGE}`bijvoorbeeld `\begin{russian}`...`\end{russian}`, `\begin{thai}`...`\end{thai}`. In het geval van Arabisch kun je niet `\begin{arabic}`...`\end{arabic}`; je moet schrijven `\begin{Arabic}`...`\end{Arabic}` in plaats daarvan, terwijl `\textarabic{...}` nog steeds geldig is.

Voor bepaalde talen kunnen enkele overwegingen nodig zijn: bijvoorbeeld binnen de `Thai` omgeving moeten de woorden `Lorem Ipsum` omsloten worden door een `\textenglish{...}` (of `\textfrench{...}`)-commando om ervoor te zorgen dat ze worden weergegeven met de glyphs van het Latijnse schrift.

Nu vraag je je misschien af: als FreeSerif toch zo veelzijdig is en glyphs bevat voor Russisch en Thai, waarom zouden we dan nog steeds `\textrussian`, `\begin{english}`...`\end{english}` enz.? Zou dat niet overbodig zijn? Laten we eens kijken wat er gebeurt als we de `\begin{english}`...`\end{english}` en `\begin{russian}`...`\end{russian}` omgevingen weghalen:

![](/files/34caa55b3bae1c9bfd1ef196381b818ad287d288)

Zeker, de Latijnse en Cyrillische glyphs worden allemaal weergegeven in de uitvoer-PDF, maar merk op dat sommige woorden nu verkeerd worden afgebroken: ‘unk-nown’ en ‘unchan-ged’—en стандартной wordt helemaal niet afgebroken. Zonder de taalwissel-omgevingen denkt de compiler dat deze tekstelementen nog steeds in het Frans zijn en probeert hij ze volgens Franse conventies te zetten. De compiler probeert Franse afbrekingsregels toe te passen, wat natuurlijk onjuiste resultaten oplevert. Daarom is typografie en zetwerk zoveel meer dan alleen lettertypeontwerp en -selectie: het zijn zeer taal- en cultuurgebonden disciplines.

Als we terugkijken naar ons eerste Griekse voorbeeld, zien we nu waarom het een goed idee is om `polyglossia` te laden en te gebruiken `\setdefaultlanguage{greek}`: om ervoor te zorgen dat het document volgens Griekse conventies wordt gezet.

## Het combineren van rechts-naar-links (RTL) en links-naar-rechts (LTR) talen

Je moet voorzichtig zijn bij het zetten van een mengsel van rechts-naar-links (RTL)-schriften, zoals Arabisch of Hebreeuws, en links-naar-rechts (LTR)-schriften in hetzelfde document. Bekijk het volgende korte Arabische document met een Engels woord, waarbij Amiri als hoofdlettertype wordt gebruikt:

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

wat het volgende oplevert:

![](/files/9e05ea20d08de0cba3239a33a2a73d341e76f172)

De tekst wordt automatisch van rechts naar links gezet, beginnend aan de rechterrand van de pagina. Het woord ‘differentiation’ zelf wordt correct als links-naar-rechts tekst gezet — maar wacht, *nee, dat is niet zo*! Het wordt in de uitvoer weergegeven als ‘dffirentiation’! Wat gebeurt hier?

Het Amiri-lettertype heeft wel glyphs voor Latijnse alfabetten, maar hier wordt de tekst `differentiation` niet als Engels gemarkeerd: de compiler behandelt `differentiation` als rechts-naar-links tekst, alsof het een reeks Arabische tekens was. Tijdens het zetten wordt de oorspronkelijke reeks `iff` verwerkt als `ffi` (d.w\.z. als RTL-tekst) en Amiri’s [ligatuur](https://en.wikipedia.org/wiki/Typographic_ligature) glyph voor ‘ffi’ wordt gezet. Het woord markeren met `\textenglish{...}` zorgt ervoor dat het correct wordt geïnterpreteerd als links-naar-rechts tekst.

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

![](/files/974bed7fdcd62d92d937fb0354b84e4e923d6e76)

**Opmerking:** Als je vertrouwd bent met de `babel` pakketcommando's, dan zul je blij zijn te horen dat de commando's `\selectlanguage`, `\foreignlanguage` en de omgeving `otherlanguage` ook worden ondersteund door `polyglossia`.

## Taal-specifieke opties

Sommige talen ondersteunen extra opties voor maatwerk; bijvoorbeeld, `Grieks` accepteert een `variant=ancient`, `mono` of `poly` optie voor oud, monotone of polytonische Grieks; `Hindi` kan worden geconfigureerd met `numerals=western` of `devanagari`. Zie de [documentatie van het polyglossia-pakket](http://texdoc.net/pkg/polyglossia) voor details.

Deze kunnen worden opgegeven bij het laden van de taal:

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

of later op elk moment:

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

of zelfs lokaal voor een specifieke omgeving:

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

## Lettertypen specificeren voor specifieke talen

Je kunt het lettertype opgeven dat voor verschillende talen wordt gebruikt. Stel dat je alle Engelse tekst (uit ons vorige voorbeeld) cursief wilt zetten; dan kun je schrijven:

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

![](/files/2742bceb816a4149f7ef530516fc0ec9f25f3173)

Je kunt natuurlijk iets nog flamboyanters gebruiken:

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

![](/files/86e6a6dccb2e46d511309334db98a773d93a2769)

Dit mechanisme voor het instellen van lettertypen voor verschillende talen of schriften is vooral belangrijk wanneer je een hoofdlettertype gebruikt dat *doet niet* glyphs heeft voor alle schriften of talen in je document. Stel dat we nu besluiten Caladea te gebruiken als hoofdlettertype van het document:

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

Bij het compileren zouden we de volgende fout zien:

```
Fout in pakket polyglossia: Het huidige romeinse lettertype
bevat het Cyrillische schrift niet!

(polyglossia)                Definieer
\cyrillicfont met \newfontfamily.

Zie de documentatie van het polyglossia-pakket voor
een uitleg.
Typ H <enter> voor onmiddellijke hulp.
 ...

l.15 \select@language {russian}

Fout in pakket polyglossia: Het huidige romeinse lettertype
bevat het Thaise schrift niet!

(polyglossia)                Definieer
\thaifont met \newfontfamily.

Zie de documentatie van het polyglossia-pakket voor
een uitleg.
Typ H <enter> voor onmiddellijke hulp.
 ...

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

We zijn nu verplicht op te geven welke lettertypen te gebruiken voor Cyrillische en Thaise schriften. Je kunt opnieuw verwijzen naar de [lijst met beschikbare TrueType- en OpenType-lettertypen](https://www.overleaf.com/help/193) op Overleaf.

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

![](/files/8553e39a265b57f757bc0c50ffe9ca0a56546641)

**Opmerking**: het valt buiten de reikwijdte van dit artikel om kwesties te behandelen die verband houden met keuzes van esthetisch aantrekkelijke en typografisch compatibele lettertypecombinaties.

Merk op dat we hebben gedefinieerd `\cyrillicfont` in plaats van `\russianfont`, d.w\.z. we hebben een lettertype gedefinieerd voor het Cyrillische *schrift* in plaats van voor de Russische *taal*. Het voordeel van het definiëren van `\cyrillicfont` is dat als bijvoorbeeld, `Servisch` ook een gedefinieerde taal in je project is, dan `\textserbian` automatisch het gedefinieerde zou gebruiken `\cyrillicfont`. Als je alleen `\russianfont`, dan zou het gebruik van `\textserbian` opnieuw klagen dat ‘het huidige romeinse lettertype het Cyrillische schrift niet bevat’ en zou je `\cyrillicfont` toch *tenzij* jullie *je* van plan was een ander lettertype voor Servische tekst te gebruiken!

Een ander vergelijkbaar scenario is het Devanagari *schrift*, dat wordt gebruikt voor de Hindi- en Sanskriet *talen*; of het Arabische schrift dat wordt gebruikt voor Arabisch en Farsi (Perzisch).

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

![](/files/177cb6c8f864e7e4b5b6b1009b235233e242549e)

Bij gebruik van `\newfontfamily` is het noodzakelijk om het `Script`, anders kunnen sommige glyphs verkeerd worden weergegeven; als we bijvoorbeeld alleen hadden geschreven `\newfontfamily\thaifont{Garuda}` kan het gezette resultaat fout zijn (linkerafbeelding hieronder) — de juiste uitvoer wordt geproduceerd door toe te voegen `[Script=Thai]`.

Fout: ![](/files/526093326ca5bc7947afdf1acc5f7b4fe941f553) Correct: ![](/files/492ff2d0201dafde8572c6a4e25c5d5c5b6b601d)

## Andere lettertypefamilies definiëren

Laten we naar een ander voorbeeld kijken, ditmaal met Hebreeuws:

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

![](/files/845c89c190b8c4b4eefd859ed556334cb1658d9d)

Tot zover, prima. Stel nu dat we een sjabloon gebruikten dat oorspronkelijk is gemaakt voor een Engels document, waarin sectiekoppen in schreefloos lettertype worden gezet met behulp van het `titlesec` pakket:

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

We worden geconfronteerd met de foutmelding:

```
Fout in pakket polyglossia: Het huidige romeinse lettertype
bevat het Hebreeuwse schrift niet!

(polyglossia)                Definieer
\hebrewfont met \newfontfamily.

Zie de documentatie van het polyglossia-pakket voor
een uitleg.
Typ H <enter> voor onmiddellijke hulp.
 ...

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

Dit is een beetje verwarrend: hadden we niet al `\hebrewfont` gedefinieerd als Hadasim CLM? Nou, dat komt eigenlijk omdat we *geen schreefloos lettertype voor Hebreeuws hebben opgegeven*. Laten we dit verhelpen door een definitie toe te voegen voor `\hebrewfontsf`:

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

En nu krijgen we de uitvoer:

![](/files/17db581a928decc01fc4f5e640060dd98db01509)

Mocht de behoefte zich voordoen, dan zouden we ook een monospaced lettertype kunnen definiëren om te gebruiken met `\hebrewfonttt`.

## Dankwoord

Alle Lorem Ipsum-fragmenten, in verschillende talen, zijn afkomstig van [`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/nl/talen/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.
