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

# Fler-sproget satsning på Overleaf med polyglossia og fontspec

## Introduktion

Denne artikel giver et overblik over tekstsætning af flersprogede dokumenter på Overleaf ved hjælp af XeLaTeX- (eller LuaLaTeX-) kompileren i kombination med `fontspec` og `polyglossia` LaTeX-pakker.

For mange, om ikke de fleste, brugere er deres standardvalg af TeX-motor `pdfTeX`, som, i modsætning til XeTeX og LuaTeX, ikke har indbygget mulighed for at læse [UTF-8](https://en.wikipedia.org/wiki/UTF-8) kodede tekstfiler. Brug af pdfTeX gør det meget kompliceret at tekstsætte visse sprog i LaTeX, især dem, der ikke bruger et latinsk skriftsystem. Nogle pakker—såsom [`inputenc`, `fontenc` og](/latex/da/sprog/05-arabic.md) [`arabtex`](/latex/da/sprog/05-arabic.md)—giver pdfTeX understøttelse til tekstsætning af ikke-latinske sprog og skriftsystemer, men ikke alle glyffer og tegn understøttes eller gengives korrekt i den output-PDF, selv hvis du har brugt `utf8` eller `utf8x` tilvalget med `inputenc`.

For en dybdegående diskussion af UTF-8, Unicode-kodning og XeTeX/LuaTeX-motorerne er Overleaf-artiklen [Unicode, UTF-8 og flersproget tekst: En introduktion](/latex/da/dybtgaende-artikler/51-unicode-utf-8-and-multilingual-text-an-introduction.md) en fascinerende læsning.

## Ind i billedet kommer XeTeX og LuaTeX

XeTeX- og LuaTeX-motorerne kan direkte læse/behandle UTF-8-kodede tekstfiler; derfor tilbyder de indbygget understøttelse af Unicode—de kan også [arbejde direkte med TrueType- og OpenType-skrifttyper](/latex/da/skrifttyper/03-xelatex.md) direkte. Disse egenskaber gør dem til et naturligt valg til tekstsætning af flersprogede eller ikke-latinske dokumenter i LaTeX, hvilket giver resultater som disse:

![](/files/55e0cb3cd719586c6b1a3d20512f882cd446a70a) ![](/files/bae33aeefd782473c7bbea71428e66b81aa24207) ![](/files/6bc35e636ab8167db5d6622d63dd5a842a4146bf)

Disse eksempler kan findes i Overleaf-galleriet: [Sådan skriver du flersproget tekst med forskellige skriftsystemer i LaTeX på Overleaf](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz) og [Flersproget "Tak"](https://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyf).

Hvis du gerne vil tekstsætte kinesisk, japansk og koreansk, så se på disse artikler:

* [Kinesisk](/latex/da/sprog/06-chinese.md)
* [Japansk](/latex/da/sprog/11-japanese.md)
* [Koreansk](/latex/da/sprog/12-korean.md)

Xe(La)TeX er stadig nyttig for disse sprog, men der findes mere specialiserede TeX-motorer, nærmere bestemt [designet til tekstsætning af CJK-sprog](/latex/da/flere-emner/45-tex-primitives-listed-by-cjk-tex-engine.md)—såsom [pTeX](https://ctan.org/pkg/ptex?lang=en) til tekstsætning af japansk.

Bemærk, at hvis din markør ser ud til at opføre sig mærkeligt, mens du redigerer tekst på visse sprog på Overleaf, kan du måske klikke på Overleaf **Menu** knappen (placeret over projektets filliste) og ændre indstillingen “Font Family”. Du kan også prøve [at ændre din browsers præferencer for monospatierede skrifttyper](https://www.howtogeek.com/208552/how-to-change-the-default-fonts-in-your-web-browser/) eller i stedet bruge Overleafs Rich Text-visning. Men på skrivningstidspunktet understøtter Source- og Rich Text-visningerne måske endnu ikke fuldt ud tekstredigering fra højre mod venstre på det funktionsniveau, vi sigter efter at opnå.

## Ændring af projektets kompilator

Den `fontspec` og `polyglossia` pakker kræver XeLaTeX- eller LuaLaTeX-kompileren, så du skal konfigurere dit Overleaf-projekt til at bruge en af disse kompilatorer. Detaljerede instruktioner kan findes i vores artikel [Valg af LaTeX-kompilator](/latex/da/flere-emner/08-choosing-a-latex-compiler.md) men her er et kort videoklip, der viser, hvordan du indstiller kompilatoren for dit projekt:

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

Når du først kompilerer med XeLaTeX eller LuaLaTeX, kan du (bør du) fjerne `inputenc` og `fontenc` pakkerne fra din .tex-fils præambel, fordi disse Unicode-kompatible motorer antager, at inputfiler (tekstfiler) er kodet i UTF-8. I øvrigt konverteres alle tekstfiler, der uploades til Overleaf, til UTF-8, så du bør normalt bruge `utf8` med `inputenc` når du arbejder med pdfLaTeX- og LaTeX-kompilatorerne på Overleaf.

## Hvis hele dokumentet kun omfatter ét sprog

Når du bruger `fontspec` pakken, kan du måske nøjes med kun at opsætte en hovedskrifttype (serif), en sans serif-skrifttype og sandsynligvis en monospatieret skrifttype designet til at understøtte det sprog, du tekstsætter—der er dog en hage, men det vender vi tilbage til senere i artiklen. For eksempel, hvis hele dokumentet er på græsk, med nogle engelske ord, kan du blot skrive

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

Du kan vælge skrifttyper fra en [liste over tilgængelige TrueType- og OpenType-skrifttyper](https://www.overleaf.com/help/193). `Ligatures=TeX` tilvalget tilføjes automatisk for `\setmainfont` og `\setsansfont`, så du behøver ikke selv at tilføje det. (`\setromanfont` er et alias for `\setmainfont`.)

LaTeX-koden ovenfor giver følgende output:

![](/files/6c5c9f30df77f0d18b44fbbda9ada9e86a50fd91)

## Flere sprog/skriftsystemer i samme dokument: Introduktion til polyglossia

Hvis dit dokument indeholder ikke-betydelige mængder tekst på flere sprog, er `polyglossia` pakken nyttig til at tage sig af sprogspecifikke typografiske konventioner og orddeling.

```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{Спасибо.} Og mere
tekst på fransk!

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/5cbb8acd5daf3f16941ef8bbc6e38a62dc355178)

`polyglossia` lader dig sætte dokumentets hovedsprog med `\setdefaultlanguage` (standard er engelsk) og (eventuelt flere) ‘andre’ sprog med `\setotherlanguages`. (`\setmainlanguage` er et alias for `\setdefaultlanguage`.) Hvis du forventer kun at bruge ét andet fremmedsprog, kan du bruge entalsformen `\setotherlanguage`. Sprognavnene er de samme som dem, der bruges af `babel`.

Vi har forberedt et lille eksempel på et (primært) fransk dokument, som også indeholder noget engelsk, russisk og thailandsk tekst. Vi har besluttet at bruge skrifttyperne FreeSerif, FreeSans og FreeMono.

Fordi dokumentets hovedsprog er `french`, den `abstract` miljøet producerer automatisk overskriften ‘Résumé’. Bemærk, hvordan udråbstegnet i slutningen af første afsnit sættes efter den franske typografiske konvention for mellemrum: det er adskilt fra ‘français’, selv om det følger umiddelbart efter ordet `français` i kildekoden.

I hovedteksten kan korte engelske, kyrilliske og thailandske tekststykker indsættes i et afsnit med fransk tekst med `\textenglish{Thank you}`, `\textrussian{Спасибо}` og `\textthai{ขอบคุณ}`. Generelt kan du bruge `\textLANGUAGE{...}` til at tekstsætte tekst på ethvert `LANGUAGE` der er erklæret af `\setdefaultlanguage` og `\setotherlanguages`. Fordi dokumentets hoved- (serif-) skrifttype er FreeSerif, og FreeSerif indeholder glyffer for latinske, kyrilliske og thailandske (og flere!) skriftsystemer, `fontspec` og `polyglossia` kan den bruges til at gengive alle disse tekster i output-PDF'en.

For længere tekstafsnit på fremmede/andre sprog anbefales det at bruge `\begin{LANGUAGE}`...`\end{LANGUAGE}`, f.eks. `\begin{russian}`...`\end{russian}`, `\begin{thai}`...`\end{thai}`. I tilfælde af arabisk kan du ikke bruge `\begin{arabic}`...`\end{arabic}`; du bliver nødt til at skrive `\begin{Arabic}`...`\end{Arabic}` i stedet, mens `\textarabic{...}` stadig er gyldig.

Der kan være behov for nogle overvejelser for visse sprog: for eksempel, inden for `thai` miljøet, skal ordene `Lorem Ipsum` indpakkes i en `\textenglish{...}` (eller `\textfrench{...}`)-kommandoen for at sikre, at de gengives med de latinske skriftsystemsglyffer.

På dette tidspunkt spørger du måske: Hvis FreeSerif er så alsidig og alligevel indeholder glyffer for russisk og thailandsk, hvorfor skulle vi så stadig bruge `\textrussian`, `\begin{english}`...`\end{english}` osv.? Ville det ikke være overflødigt? Lad os se, hvad der sker, når vi fjerner `\begin{english}`...`\end{english}` og `\begin{russian}`...`\end{russian}` miljøerne:

![](/files/04d5c6aad85487cac42ee35dfd36620a78db0338)

Helt sikkert, de latinske og kyrilliske glyffer gengives alle i output-PDF'en, men bemærk, at nogle ord nu orddeletes forkert: ‘unk-nown’ og ‘unchan-ged’—og стандартной deles slet ikke. Uden miljøerne til sprogskift tror kompileren, at disse tekstdele stadig er på fransk, og forsøger at tekstsætte dem efter franske konventioner. Kompileren prøver at anvende franske orddelingsregler, hvilket naturligvis giver forkerte resultater. Derfor er typografi og tekstsætning så meget mere end blot skrifttypedesign og -valg: de er meget sprog- og kulturafhængige discipliner.

Når vi ser tilbage på vores første græske eksempel, kan vi nu se, hvorfor det er en god idé at indlæse `polyglossia` og bruge `\setdefaultlanguage{greek}`: for at sikre, at dokumentet sættes efter græske konventioner.

## Blanding af højre-til-venstre- (RTL) og venstre-til-højre- (LTR) sprog

Du skal være omhyggelig, når du tekstsætter en blanding af højre-til-venstre- (RTL) skriftsystemer, såsom arabisk eller hebraisk, og venstre-til-højre- (LTR) skriftsystemer i det samme dokument. Overvej følgende lille arabiske dokument med et engelsk ord, der bruger Amiri som hovedskrifttype:

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

som giver:

![](/files/73f4c745b192dd14663062a910a3af5fb1758e3a)

Teksten sættes automatisk fra højre mod venstre og starter ved højre side af siden. Ordet “differentiation” i sig selv sættes korrekt som tekst fra venstre mod højre—men vent, *nej, det gør den ikke*! Den gengives som “dffirentiation” i outputtet! Hvad sker der?

Amiri-skrifttypen har godt nok glyffer for latinske alfabeter, men her er teksten `differentiation` ikke markeret som engelsk: kompileren behandler `differentiation` som tekst fra højre mod venstre, som om det var en sekvens af arabiske tegn. Under tekstsætningen behandles den oprindelige sekvens `iff` som `ffi` (dvs. som RTL-tekst), og Amiris [ligatur](https://en.wikipedia.org/wiki/Typographic_ligature) glyf for “ffi” sættes. At markere ordet med `\textenglish{...}` sikrer, at det fortolkes korrekt som tekst fra venstre mod højre.

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

![](/files/46dc174af68a008868dd1b2800aaa27e6167bf97)

**Bemærk:** Hvis du er vant til `babel` pakkens kommandoer, vil du blive glad for at høre, at kommandoerne `\selectlanguage`, `\foreignlanguage` og miljøet `otherlanguage` også understøttes af `polyglossia`.

## Sprog-specifikke indstillinger

Nogle sprog understøtter yderligere tilpasningsmuligheder; for eksempel, `greek` accepterer en `variant=ancient`, `mono` eller `poly` indstilling for oldgræsk, monoton eller polytonisk græsk; `hindi` kan konfigureres med `numerals=western` eller `devanagari`. Se [polyglossia-pakkedokumentationen](http://texdoc.net/pkg/polyglossia) for detaljer.

Disse kan angives, når sproget indlæses:

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

eller senere når som helst:

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

eller endda lokalt for et specifikt miljø:

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

## Angivelse af skrifttyper for specifikke sprog

Du kan angive den skrifttype, der bruges til forskellige sprog. Antag, at du gerne vil tekstsætte al engelsk tekst (i vores tidligere eksempel) i kursiv; du kunne skrive:

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

![](/files/fc14090a7a270ddcb3711b2c0a5f5c712d203300)

Du kan naturligvis bruge noget endnu mere prangende:

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

![](/files/b8696d3fa05f7579f8c0885c7312b7a443b5c69f)

Denne mekanisme til at angive skrifttyper for forskellige sprog eller skriftsystemer er især vigtig, når du bruger en hovedskrifttype, der *ikke* har glyffer til alle skriftsystemer eller sprog i dit dokument. Antag, at vi nu beslutter at bruge Caladea som dokumentets hovedskrifttype:

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

Ved kompilering ville vi se følgende fejl:

```
Package polyglossia Error: Den aktuelle romerske skrifttype
indeholder ikke det kyrilliske skriftsystem!

(polyglossia)                Definér venligst
\cyrillicfont med \newfontfamily.

Se polyglossia-pakkens dokumentation for
forklaring.
Skriv H <retur> for øjeblikkelig hjælp.
 ...

l.15 \select@language {russian}

Package polyglossia Error: Den aktuelle romerske skrifttype
indeholder ikke det thailandske skriftsystem!

(polyglossia)                Definér venligst
\thaifont med \newfontfamily.

Se polyglossia-pakkens dokumentation for
forklaring.
Skriv H <retur> for øjeblikkelig hjælp.
 ...

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

Vi er nu nødt til at angive, hvilke skrifttyper der skal bruges til de kyrilliske og thailandske skriftsystemer. Igen kan du henvise til [liste over tilgængelige TrueType- og OpenType-skrifttyper](https://www.overleaf.com/help/193) i Overleaf.

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

![](/files/8dfb93d8e708c3e4863b3562ca9d48abbbd7b13a)

**Bemærk**: det ligger uden for denne artikels rammer at behandle spørgsmål vedrørende valg af æstetisk tiltalende og typografisk kompatible skrifttypekombinationer.

Bemærk, at vi har defineret `\cyrillicfont` i stedet for `\russianfont`, dvs. vi definerede en skrifttype til det kyrilliske *skriftsystem* i stedet for det russiske *sprog*. Fordelen ved at definere `\cyrillicfont` er, at hvis for eksempel `serbisk` også er et defineret sprog i dit projekt, så `\textserbian` ville automatisk bruge den definerede `\cyrillicfont`. Hvis du kun havde defineret `\russianfont`, så vil brug af `\textserbian` igen klage over “the current roman font does not contain the Cyrillic script” og du ville alligevel skulle definere `\cyrillicfont` alligevel — *medmindre* jer *du faktisk* mente at bruge en anden skrifttype til serbisk tekst!

Et andet lignende scenarie er det devanagari *skriftsystem*, som bruges til hindi- og sanskrit- *sprog*; eller det arabiske skriftsystem, der bruges til arabisk og farsi (persisk).

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

![](/files/7cf34cec3d1143b51f9bdff55c36317c9bee2a61)

Når du bruger `\newfontfamily` er det nødvendigt at angive `Script`, ellers kan nogle glyffer gengives forkert; for eksempel, hvis vi kun havde skrevet `\newfontfamily\thaifont{Garuda}` kunne det typografiske resultat være forkert (venstre billede nedenfor)—det korrekte output fremkommer ved at tilføje `[Script=Thai]`.

Forkert: ![](/files/3830ce9389327b0543c63b61b37e414e66cfd449) Korrekt: ![](/files/8a109e99909b5774f1a1bc6361e524c1b5bb0717)

## Definition af andre skrifttypefamilier

Lad os se på endnu et eksempel, denne gang med hebraisk:

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

![](/files/f430327d8599bfbacfd8e50bc951256dbd2e18d0)

Så langt, så godt. Forestil dig nu, at vi brugte en skabelon, der oprindeligt blev lavet til et engelsk dokument, og som sætter sektionsoverskrifter i sans serif-skrift ved hjælp af `titlesec` pakken:

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

Vi står over for fejlmeddelelsen:

```
Package polyglossia Error: Den aktuelle romerske skrifttype
indeholder ikke det hebraiske skriftsystem!

(polyglossia)                Definér venligst
\hebrewfont med \newfontfamily.

Se polyglossia-pakkens dokumentation for
forklaring.
Skriv H <retur> for øjeblikkelig hjælp.
 ...

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

Det er lidt forvirrende: definerede vi ikke allerede `\hebrewfont` til at være Hadasim CLM? Nå, det er egentlig fordi vi *ikke har angivet en sans serif-skrifttype for hebraisk*. Lad os afhjælpe dette ved at tilføje en definition for `\hebrewfontsf`:

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

Og nu har vi outputtet:

![](/files/8f7257eb94550bc4fd103fa26da13c491a5df650)

Hvis behovet opstår, kunne vi også definere en monospatieret skrifttype til brug med `\hebrewfonttt`.

## Tak

Alle lorem ipsum-udsnit på forskellige sprog er fra [`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/da/sprog/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.
