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

# Flerspråkig sättning i Overleaf med polyglossia och fontspec

## Introduktion

Den här artikeln ger en översikt över hur man sätter flerspråkiga dokument i Overleaf med hjälp av XeLaTeX- (eller LuaLaTeX-) kompilatorn tillsammans med `fontspec` och `polyglossia` LaTeX-paket.

För många, om inte de flesta användare, är deras standardval av TeX-motor `pdfTeX`, som, till skillnad från XeTeX och LuaTeX, inte har inbyggd förmåga att läsa [UTF-8](https://en.wikipedia.org/wiki/UTF-8) kodade textfiler. Att använda pdfTeX gör typsättning av vissa språk i LaTeX mycket komplicerad, särskilt de som inte använder ett latinskt skriftsystem. Vissa paket—såsom [`inputenc`, `fontenc` och](/latex/sv/sprak/05-arabic.md) [`arabtex`](/latex/sv/sprak/05-arabic.md)—ger stöd åt pdfTeX för att sätta icke-latinska språk och skriftsystem, men alla glyfer och tecken kanske inte stöds eller återges korrekt i PDF-utdata, även om du har använt `utf8` eller `utf8x` alternativet med `inputenc`.

För en djupgående diskussion om UTF-8, Unicode-kodning och XeTeX/LuaTeX-motorerna är Overleaf-artikeln [Unicode, UTF-8 och flerspråkig text: En introduktion](/latex/sv/fordjupade-artiklar/51-unicode-utf-8-and-multilingual-text-an-introduction.md) en fascinerande läsning.

## Här kommer XeTeX och LuaTeX

XeTeX- och LuaTeX-motorerna kan direkt läsa/bearbeta UTF-8-kodad text; följaktligen erbjuder de inbyggt stöd för Unicode—de kan också [arbeta direkt med TrueType- och OpenType-teckensnitt](/latex/sv/typsnitt/03-xelatex.md) direkt. Dessa egenskaper gör dem till ett naturligt val för typsättning av flerspråkiga eller icke-latinska dokument i LaTeX, vilket ger utdata som dessa:

![](/files/243c68d4bc0c06064101b2aec4449682e5f4ec15) ![](/files/43bf66aa8d833356f03f7b5c7048e55d50844d43) ![](/files/bd438c2254a717da16ce12d71c2a3cd3a0e450cc)

Dessa exempel finns i Overleaf Gallery: [Hur man skriver flerspråkig text med olika skriftsystem i LaTeX på Overleaf](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz) och [Flerspråkigt ”tack”](https://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyf).

Om du vill sätta kinesiska, japanska och koreanska, ta en titt på dessa artiklar:

* [Kinesiska](/latex/sv/sprak/06-chinese.md)
* [Japanska](/latex/sv/sprak/11-japanese.md)
* [Koreanska](/latex/sv/sprak/12-korean.md)

Xe(La)TeX är fortfarande användbart för dessa språk, men mer specialiserade TeX-motorer finns tillgängliga, särskilt [utformade för typsättning av CJK-språk](/latex/sv/fler-amnen/45-tex-primitives-listed-by-cjk-tex-engine.md)—såsom [pTeX](https://ctan.org/pkg/ptex?lang=en) för typsättning av japanska.

Observera att om markören verkar bete sig konstigt när du redigerar text på vissa språk i Overleaf, kan du vilja klicka på Overleafs **Meny** knapp (placerad ovanför projektets fillista) och ändra alternativet ”Font Family”. Du kan också prova [att ändra webbläsarens inställningar för monospaced-teckensnitt](https://www.howtogeek.com/208552/how-to-change-the-default-fonts-in-your-web-browser/) eller använda Overleafs Rich Text-vy i stället. Men vid tidpunkten för skrivandet kanske Source- och Rich Text-vyerna ännu inte fullt ut stöder redigering av höger-till-vänster-text på den funktionsnivå vi strävar efter att uppnå.

## Ändra projektets kompilator

Den `fontspec` och `polyglossia` paketen kräver XeLaTeX- eller LuaLaTeX-kompilatorn, så du behöver ställa in ditt Overleaf-projekt så att det använder någon av dessa kompilatorer. Detaljerade instruktioner finns i vår artikel [Att välja en LaTeX-kompilator](/latex/sv/fler-amnen/08-choosing-a-latex-compiler.md) men här är ett kort videoklipp som visar hur du ställer in kompilatorn för ditt projekt:

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

När du kompilerar med XeLaTeX eller LuaLaTeX kan du (bör du) ta bort `inputenc` och `fontenc` paketen från din .tex-fils preamble eftersom dessa Unicode-kapabla motorer antar att indatafiler (text) är UTF-8-kodade. För övrigt konverteras alla textfiler som laddas upp till Overleaf till UTF-8, så du bör vanligtvis använda `utf8` med `inputenc` när du arbetar med pdfLaTeX- och LaTeX-kompilatorerna i Overleaf.

## Om hela dokumentet bara omfattar ett språk

När du använder `fontspec` paketet kan du kanske klara dig med att bara ställa in ett huvudteckensnitt (serif), ett sans-serif-teckensnitt och sannolikt ett monospace-teckensnitt utformat för att stödja språket du sätter—det finns dock en hake, men vi återkommer till den senare i artikeln. Om hela dokumentet till exempel är på grekiska, med några engelska ord, kan du helt enkelt skriva

```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älja teckensnitt från en [lista över tillgängliga TrueType- och OpenType-teckensnitt](https://www.overleaf.com/help/193). Paketet `Ligatures=TeX` alternativet läggs automatiskt till för `\setmainfont` och `\setsansfont`, så du behöver inte lägga till det själv. (`\setromanfont` är ett alias för `\setmainfont`.)

LaTeX-koden ovan ger följande utdata:

![](/files/71c13d47a4d0459eeb50d182c7069a3ed5a3556f)

## Flera språk/skrifter i samma dokument: Introduktion till polyglossia

Om ditt dokument innehåller betydande mängder text på flera språk är `polyglossia` paketet användbart för att hantera språkspecifika typsättningskonventioner och avstavning.

```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/0e141fc9c018f7d3f94138d3af0bcec67fec19ce)

`polyglossia` låter dig ange dokumentets huvudspråk med `\setdefaultlanguage` (standard är engelska) och (eventuellt flera) ”andra” språk med `\setotherlanguages`. (`\setmainlanguage` är ett alias för `\setdefaultlanguage`.) Om du förväntar dig att bara använda ett annat främmande språk kan du använda den singulara `\setotherlanguage`. Språknamnen är desamma som de som används av `babel`.

Vi har förberett ett litet exempel på ett (främst) franskt dokument som också innehåller en del engelsk, rysk och thailändsk text. Vi har bestämt oss för att använda typsnitten FreeSerif, FreeSans och FreeMono.

Eftersom dokumentets huvudspråk är `franska`, den `abstract` miljön producerar automatiskt rubriken ”Résumé”. Lägg märke till hur utropstecknet i slutet av det första stycket sätts enligt den franska avståndskonventionen för typsättning: det separeras från ”français” trots att det följer direkt efter ordet `français` i källkoden.

I brödtexten kan korta textsnuttar på engelska, kyrilliska och thailändska inkluderas i ett stycke fransk text med `\textenglish{Thank you}`, `\textrussian{Спасибо}` och `\textthai{ขอบคุณ}`. I allmänhet kan du använda `\textLANGUAGE{...}` för att sätta text på vilket `LANGUAGE` som har deklarerats av `\setdefaultlanguage` och `\setotherlanguages`. Eftersom dokumentets huvudsakliga (serif-)teckensnitt är FreeSerif, och FreeSerif innehåller glyfer för latinska, kyrilliska och thailändska (och fler!) skriftsystem, `fontspec` och `polyglossia` kan den användas för att återge all denna text i PDF-utdata.

För längre textstycken på främmande/andra språk rekommenderas det att använda `\begin{LANGUAGE}`...`\end{LANGUAGE}`, till exempel `\begin{russian}`...`\end{russian}`, `\begin{thai}`...`\end{thai}`. I fallet med arabiska kan du inte använda `\begin{arabic}`...`\end{arabic}`; du måste skriva `\begin{Arabic}`...`\end{Arabic}` i stället, medan `\textarabic{...}` fortfarande är giltigt.

Vissa överväganden kan behövas för vissa språk: till exempel behöver orden inom `thailändska` miljön `Lorem Ipsum` omslutas av ett `\textenglish{...}` (eller `\textfrench{...}`) kommandot för att säkerställa att de återges med glyfer från det latinska skriftsystemet.

Vid det här laget kanske du undrar: om FreeSerif ändå är så mångsidigt och innehåller glyfer för ryska och thailändska, varför skulle vi fortfarande behöva använda `\textrussian`, `\begin{english}`...`\end{english}` etc? Skulle inte det vara redundant? Låt oss se vad som händer när vi tar bort `\begin{english}`...`\end{english}` och `\begin{russian}`...`\end{russian}` miljöerna:

![](/files/cf63b989331c21f7303dcc09176c8ae9ea2da8ba)

Självklart återges alla latinska och kyrilliska glyfer i PDF-utdata, men lägg märke till att vissa ord nu avstavas fel: ”unk-nown” och ”unchan-ged”—och стандартной avstavas inte alls. Utan språkväxlingsmiljöerna tror kompilatorn att dessa textobjekt fortfarande är på franska och försöker sätta dem enligt franska konventioner. Kompilatorn försöker tillämpa franska avstavningsregler som naturligtvis ger fel resultat. Det är därför typografi och typsättning är så mycket mer än bara formgivning och val av teckensnitt: det är discipliner som är mycket språk- och kulturberoende.

Om vi återvänder till vårt första grekiska exempel ser vi nu varför det är en god idé att ladda `polyglossia` och använda `\setdefaultlanguage{greek}`: för att säkerställa att dokumentet sätts enligt grekiska konventioner.

## Att blanda höger-till-vänster- (RTL) och vänster-till-höger- (LTR) språk

Du behöver vara försiktig när du sätter en blandning av höger-till-vänster-skript (RTL), såsom arabiska eller hebreiska, och vänster-till-höger-skript (LTR) i samma dokument. Betrakta följande lilla arabiska dokument med ett engelskt ord, där Amiri används som huvudteckensnitt:

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

vilket ger:

![](/files/244895d283e8661e8057f591f7a5b8ca550770f2)

Texten sätts automatiskt höger-till-vänster, med början vid sidans högra kant. Själva ordet ”differentiation” sätts korrekt som vänster-till-höger-text—men vänta, *nej, det är det inte*! Det återges som ”dffirentiation” i utdata! Vad händer?

Amiri-teckensnittet har visserligen glyfer för latinska alfabet, men här är texten `differentiation` inte markerad som engelska: kompilatorn behandlar `differentiation` som höger-till-vänster-text, som om det vore en följd av arabiska tecken. Under typsättningen behandlas den ursprungliga sekvensen `iff` som `ffi` (dvs. som RTL-text) och Amiris [ligatur](https://en.wikipedia.org/wiki/Typographic_ligature) glyf för ”ffi” sätts. Att markera ordet med `\textenglish{...}` säkerställer att det tolkas korrekt som vänster-till-höger-text.

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

![](/files/9282115f8f8dab4d192feaa7c607c1eedf84e369)

**Obs:** Om du är van vid `babel` paketkommandona kommer du att bli glad att höra att kommandona `\selectlanguage`, `\foreignlanguage` och miljön `otherlanguage` också stöds av `polyglossia`.

## Språkspecifika alternativ

Vissa språk stöder ytterligare anpassningsalternativ; till exempel, `grekiska` accepterar ett `variant=ancient`, `mono` eller `poly` alternativ för antik, monotont eller polytonisk grekiska; `hindi` kan konfigureras med `numerals=western` eller `devanagari`. Se [dokumentationen för paketet polyglossia](http://texdoc.net/pkg/polyglossia) för detaljer.

Dessa kan anges när språket laddas:

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

eller senare när som helst:

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

eller till och med lokalt för en specifik miljö:

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

## Ange teckensnitt för specifika språk

Du kan ange teckensnittet som används för olika språk. Anta att du vill sätta all engelsk text (som ingick i vårt föregående exempel) i kursiv stil; du kan skriva:

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

![](/files/e360dfdf27254f30ceb7ae3333177b70f21a8be7)

Du kan förstås använda något ännu mer extravagant:

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

![](/files/c3dfbcd80426945ade989c907fd5b9dd252f76d0)

Den här mekanismen för att ange teckensnitt för olika språk eller skriftsystem är särskilt viktig när du använder ett huvudteckensnitt som *gör inte* har glyfer för alla skriftsystem eller språk i ditt dokument. Anta att vi nu bestämmer oss för att använda Caladea som dokumentets huvudteckensnitt:

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

Vid kompilering skulle vi se följande fel:

```
Felkod från paketet polyglossia: Det nuvarande romanska teckensnittet
innehåller inte det kyrilliska skriftsystemet!

(polyglossia)                Definiera
\cyrillicfont med \newfontfamily.

Se dokumentationen för paketet polyglossia för
förklaring.
Skriv H <retur> för omedelbar hjälp.
 ...

l.15 \select@language {russian}

Felkod från paketet polyglossia: Det nuvarande romanska teckensnittet
innehåller inte det thailändska skriftsystemet!

(polyglossia)                Definiera
\thaifont med \newfontfamily.

Se dokumentationen för paketet polyglossia för
förklaring.
Skriv H <retur> för omedelbar hjälp.
 ...

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

Vi är nu tvungna att ange vilka teckensnitt som ska användas för kyrilliska och thailändska skriftsystem. Återigen kan du hänvisa till [lista över tillgängliga TrueType- och OpenType-teckensnitt](https://www.overleaf.com/help/193) i Overleaf.

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

![](/files/7f37a49c88f5dc7ee1bbe4e8fbd82a4b4d585f81)

**Obs**: det ligger utanför ramen för den här artikeln att ta upp frågor som rör val av estetiskt tilltalande och typografiskt kompatibla kombinationer av teckensnitt.

Observera att vi har definierat `\cyrillicfont` i stället för `\russianfont`, dvs. vi definierade ett teckensnitt för det kyrilliska *skriftsystemet* i stället för det ryska *språket*. Fördelen med att definiera `\cyrillicfont` är att om till exempel `serbiska` också är ett definierat språk i ditt projekt, då `\textserbian` automatiskt skulle använda det definierade `\cyrillicfont`. Om du bara hade definierat `\russianfont`, då skulle användning av `\textserbian` skulle återigen klaga över ”det nuvarande romanska teckensnittet innehåller inte det kyrilliska skriftsystemet” och du skulle behöva definiera `\cyrillicfont` ändå — *om inte* er *du* faktiskt menade att använda ett annat teckensnitt för serbisk text!

Ett annat liknande scenario är devanagari *skriftsystemet*, som används för hindi- och sanskrit *språken*; eller det arabiska skriftsystem som används för arabiska och farsi (persiska).

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

![](/files/6c52c44744ee463d05b2573b7f0d0242f693915a)

När du använder `\newfontfamily` är det nödvändigt att ange `Script`, annars kan vissa glyfer återges felaktigt; till exempel, om vi bara hade skrivit `\newfontfamily\thaifont{Garuda}` kan det typsatta resultatet bli fel (vänster bild nedan)—det korrekta resultatet fås genom att lägga till `[Script=Thai]`.

Fel: ![](/files/f84af1d237bb8a2cc7b95b147a7a404a5dadfa43) Rätt: ![](/files/764dfe444025961dad32d53ff86b8b0bda6216f3)

## Definiera andra teckensnittsfamiljer

Låt oss titta på ett annat exempel, den här gången med hebreiska:

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

![](/files/275d091ec6b7d8c02f982a377f32dc00ad00f338)

Så här långt så bra. Anta nu att vi använde en mall som ursprungligen skapades för ett engelskt dokument, som sätter avsnittsrubriker i sans-serif-stil med hjälp av `titlesec` paketet:

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

Vi möts av felmeddelandet:

```
Felkod från paketet polyglossia: Det nuvarande romanska teckensnittet
innehåller inte det hebreiska skriftsystemet!

(polyglossia)                Definiera
\hebrewfont med \newfontfamily.

Se dokumentationen för paketet polyglossia för
förklaring.
Skriv H <retur> för omedelbar hjälp.
 ...

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

Det här är lite förvirrande: hade vi inte redan definierat `\hebrewfont` att vara Hadasim CLM? Tja, det beror egentligen på att vi *inte har angett något sans-serif-teckensnitt för hebreiska*. Låt oss rätta till detta genom att lägga till en definition för `\hebrewfontsf`:

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

Och nu har vi utdata:

![](/files/a7a6d4e4ffcaab91c7647a24cfe507c5bb831606)

Om behov skulle uppstå skulle vi också kunna definiera ett monospace-teckensnitt att använda med `\hebrewfonttt`.

## Tack

Alla lorem ipsum-snuttar på olika språk kommer från [`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/sv/sprak/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.
