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

# Vícejazyčná sazba v Overleafu pomocí polyglossia a fontspec

## Úvod

Tento článek poskytuje přehled sazby vícejazyčných dokumentů v Overleafu pomocí překladače XeLaTeX (nebo LuaLaTeX) ve spojení s `fontspec` a `polyglossia` balíčky LaTeXu.

Pro mnoho, ne-li většinu, uživatelů je jejich výchozí volbou TeXového enginu `pdfTeX`, který na rozdíl od XeTeXu a LuaTeXu nemá vestavěnou schopnost číst [UTF-8](https://en.wikipedia.org/wiki/UTF-8) kódované textové soubory. Používání pdfTeXu značně komplikuje sazbu některých jazyků v LaTeXu, zejména těch, které nepoužívají písmo založené na latině. Některé balíčky — například [`inputenc`, `fontenc` a](/latex/cs/jazyky/05-arabic.md) [`arabtex`](/latex/cs/jazyky/05-arabic.md)— poskytují pdfTeXu podporu pro sazbu nelatinských jazyků a písem, ale ne všechna písmena a znaky mohou být ve výstupním PDF podporována nebo vykreslena správně, i když jste použili `utf8` nebo `utf8x` volbu s `inputenc`.

Pro podrobnou diskusi o UTF-8, kódování Unicode a enginech XeTeX/LuaTeX je článek na Overleafu [Unicode, UTF-8 a vícejazyčný text: Úvod](/latex/cs/clanky-do-hloubky/51-unicode-utf-8-and-multilingual-text-an-introduction.md) fascinující čtení.

## Vstupte do XeTeXu a LuaTeXu

Enginy XeTeX a LuaTeX mohou přímo číst/zpracovávat text kódovaný UTF-8; proto nabízejí nativní podporu Unicode — mohou také [pracovat s písmy TrueType a OpenType](/latex/cs/pisma/03-xelatex.md) přímo. Tyto vlastnosti z nich dělají přirozenou volbu pro sazbu vícejazyčných nebo nelatinských dokumentů v LaTeXu a vytvářejí výstupy jako tyto:

![](/files/9d952169f093afc3ee01ebd03fe6357654b9c688) ![](/files/d7f0d3b1c5f7de4652c2c85c8f2c89504844d78a) ![](/files/9a8f6e83a326db2f2d191f0e567760798eec86bb)

Tyto příklady najdete v galerii Overleafu: [Jak psát vícejazyčný text s různými skripty v LaTeXu na Overleafu](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz) a [Vícejazyčné „Děkuji“](https://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyf).

Pokud chcete sázet čínštinu, japonštinu a korejštinu, podívejte se na tyto články:

* [Čínština](/latex/cs/jazyky/06-chinese.md)
* [Japonština](/latex/cs/jazyky/11-japanese.md)
* [korejština](/latex/cs/jazyky/12-korean.md)

Xe(La)TeX je pro tyto jazyky stále užitečný, ale jsou k dispozici specializovanější TeXové enginy, konkrétně [navržené pro sazbu jazyků CJK](/latex/cs/dalsi-temata/45-tex-primitives-listed-by-cjk-tex-engine.md)— například [pTeX](https://ctan.org/pkg/ptex?lang=en) pro sazbu japonštiny.

Všimněte si, že pokud se vám při úpravách textu v některých jazycích na Overleafu zdá, že se kurzor chová divně, možná budete chtít kliknout na tlačítko Overleafu **Menu**  (umístěné nad seznamem souborů projektu) a změnit volbu „Font Family“. Můžete také zkusit [změnit předvolby neproporcionálního písma ve vašem prohlížeči](https://www.howtogeek.com/208552/how-to-change-the-default-fonts-in-your-web-browser/) nebo místo toho použít zobrazení Rich Text v Overleafu. V době psaní však zobrazení Source a Rich Text možná (zatím) plně nepodporují editaci textu zprava doleva na úrovni funkcí, které se snažíme dosáhnout.

## Změna překladače projektu

Ta `fontspec` a `polyglossia` balíčky vyžadují překladač XeLaTeX nebo LuaLaTeX, takže budete muset svůj projekt v Overleafu nastavit tak, aby používal některý z těchto překladačů. Podrobné pokyny najdete v našem článku [Výběr kompilátoru LaTeXu](/latex/cs/dalsi-temata/08-choosing-a-latex-compiler.md) ale zde je krátký videoklip ukazující, jak nastavit překladač pro váš projekt:

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

Jakmile kompilujete pomocí XeLaTeXu nebo LuaLaTeXu, můžete (a měli byste) odstranit `inputenc` a `fontenc` balíčky z preambule vašeho souboru .tex, protože tyto enginy schopné pracovat s Unicode budou předpokládat, že vstupní (textové) soubory jsou kódované UTF-8. Mimochodem, všechny textové soubory nahrané do Overleafu jsou převáděny na UTF-8, takže byste obvykle měli používat `utf8` s `inputenc` při práci s překladači pdfLaTeX a LaTeX na Overleafu.

## Pokud se celý váš dokument týká pouze jednoho jazyka

Při použití balíčku `fontspec` můžete si vystačit pouze s nastavením hlavního (serifového) písma, bezpatkového písma a pravděpodobně i neproporcionálního písma navrženého pro podporu jazyka, který sázíte — je tu ale háček, k němuž se později v článku vrátíme. Například pokud je celý váš dokument v řečtině a obsahuje jen několik anglických slov, můžete jednoduše napsat

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

Můžete si vybrat písma z [seznamu dostupných písem TrueType a OpenType](https://www.overleaf.com/help/193). Balíček `Ligatures=TeX` volba se automaticky přidává pro `\setmainfont` a `\setsansfont`, takže ji nemusíte přidávat sami. (`\setromanfont` je aliasem `\setmainfont`.)

Výše uvedený kód LaTeXu vytváří následující výstup:

![](/files/4e141ffdc5f4340dabe67a9bf1ebed2b78ce68ab)

## Více jazyků/písem v jednom dokumentu: Představení polyglossie

Pokud váš dokument obsahuje nezanedbatelné množství textu ve více jazycích, balíček `polyglossia` je užitečný pro zajištění sazebních konvencí specifických pro daný jazyk a dělení slov.

```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{Спасибо.} A více
textu ve francouzštině!

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/8eda8e5ea8e6769576b9753268a7b9536a912a7f)

`polyglossia` umožňuje nastavit hlavní jazyk dokumentu pomocí `\setdefaultlanguage` (výchozí je angličtina) a (případně více) „dalších“ jazyků pomocí `\setotherlanguages`. (`\setmainlanguage` je aliasem `\setdefaultlanguage`.) Pokud očekáváte, že budete používat jen jeden další cizí jazyk, můžete použít jednotné číslo `\setotherlanguage`. Názvy jazyků jsou stejné jako ty používané `babel`.

Připravili jsme malý příklad převážně francouzského dokumentu, který obsahuje také několik anglických, ruských a thajských textů. Rozhodli jsme se použít písma FreeSerif, FreeSans a FreeMono.

Protože hlavním jazykem dokumentu je `francouzština`, `abstract` prostředí automaticky vytvoří nadpis ‚Résumé‘. Všimněte si, jak je na konci prvního odstavce vykřičník vysázen podle francouzské sazební konvence: je oddělen od slova ‚français‘, přestože bezprostředně následuje za slovem `français` v zdrojovém kódu.

V hlavním textu lze krátké úryvky anglického, cyrilického a thajského textu vložit do odstavce francouzského textu pomocí `\textenglish{Thank you}`, `\textrussian{Спасибо}` a `\textthai{ขอบคุณ}`. Obecně můžete použít `\textLANGUAGE{...}` pro sazbu textu v jakémkoli `LANGUAGE` který byl deklarován pomocí `\setdefaultlanguage` a `\setotherlanguages`. Protože hlavní (serifové) písmo dokumentu je FreeSerif a FreeSerif obsahuje glyfy pro latinku, cyrilici a thajské písmo (a další!), `fontspec` a `polyglossia` může jej použít k vykreslení všech těchto textů do výstupního PDF.

Pro delší odstavce textu v cizích/dalších jazycích se doporučuje použít `\begin{LANGUAGE}`...`\end{LANGUAGE}`, např. `\begin{russian}`...`\end{russian}`, `\begin{thai}`...`\end{thai}`. V případě arabštiny nemůžete použít `\begin{arabic}`...`\end{arabic}`; budete muset napsat `\begin{Arabic}`...`\end{Arabic}` místo toho, zatímco `\textarabic{...}` je stále platný.

U některých jazyků může být třeba zohlednit jisté aspekty: například uvnitř prostředí `thai` musí být slova `Lorem Ipsum` uzavřena do `\textenglish{...}` (nebo `\textfrench{...}`) příkazu, aby bylo zajištěno, že budou vykreslena pomocí glyfů latinky.

V tuto chvíli byste se možná mohli ptát: pokud je FreeSerif tak všestranné a stejně obsahuje glyfy pro ruštinu a thajštinu, proč bychom stále měli používat `\textrussian`, `\begin{english}`...`\end{english}` atd.? Nebylo by to nadbytečné? Podívejme se, co se stane, když odstraníme `\begin{english}`...`\end{english}` a `\begin{russian}`...`\end{russian}` prostředí:

![](/files/76cb5081d623eff2cb8ab3abe34b386edcd14f71)

Jistě, všechny latinské a cyrilické glyfy jsou ve výstupním PDF vykresleny, ale všimněte si, že některá slova jsou nyní nesprávně dělená: ‚unk-nown‘ a ‚unchan-ged‘ — a стандартной není děleno vůbec. Bez prostředí pro přepínání jazyka si překladač myslí, že tyto textové položky jsou stále ve francouzštině, a snaží se je sázet podle francouzských konvencí. Překladač se pokouší použít pravidla francouzského dělení slov, což samozřejmě vede k nesprávným výsledkům. Proto je typografie a sazba mnohem víc než jen návrh a výběr písma: jde o disciplíny velmi závislé na jazyce a kultuře.

Když se vrátíme k našemu prvotnímu řeckému příkladu, nyní vidíme, proč je dobrý nápad načíst `polyglossia` a použít `\setdefaultlanguage{greek}`: aby dokument byl vysázen podle řeckých konvencí.

## Míchání jazyků psaných zprava doleva (RTL) a zleva doprava (LTR)

Při sazbě směsi skriptů psaných zprava doleva (RTL), jako je arabština nebo hebrejština, a skriptů psaných zleva doprava (LTR), ve stejném dokumentu musíte být opatrní. Zvažte následující krátký arabský dokument s anglickým slovem, používající Amiri jako hlavní písmo:

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

který vytváří:

![](/files/6fc5217c0d81cd283b36825095f2731a43543772)

Text je automaticky vysázen zprava doleva, počínaje na pravém okraji stránky. Samotné slovo „differentiation“ je vysázeno správně jako text zleva doprava — ale počkat, *ne, není*! Je ve výstupu vykresleno jako „dffirentiation“! Co se děje?

Písmo Amiri sice má glyfy pro latinku, ale zde text `differentiation` není označen jako angličtina: překladač považuje `differentiation` za text psaný zprava doleva, jako by šlo o sekvenci arabských znaků. Při sazbě je původní sekvence `iff` zpracována jako `ffi` (tj. jako text RTL) a vysází se ligatura [ligatura](https://en.wikipedia.org/wiki/Typographic_ligature) glyf „ffi“ od Amiri. Označení slova pomocí `\textenglish{...}` zajistí, že bude správně interpretováno jako text zleva doprava.

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

![](/files/1cfaa2a3b37b8e77d2ef3b1e591485c4e2edb5bd)

**Poznámka:** Pokud jste zvyklí na `babel` příkazy balíčku, potěší vás, že příkazy `\selectlanguage`, `\foreignlanguage` a prostředí `otherlanguage` jsou také podporovány `polyglossia`.

## Možnosti specifické pro daný jazyk

Některé jazyky podporují dodatečné možnosti přizpůsobení; například `řečtina` přijímá `variant=ancient`, `mono` nebo `poly` volbu pro starořeckou, monotónní nebo polytonickou řečtinu; `hindština` může být nakonfigurována pomocí `numerals=western` nebo `dévanágarí`. Podrobnosti viz [dokumentace balíčku polyglossia](http://texdoc.net/pkg/polyglossia) .

Tyto lze zadat při načítání jazyka:

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

nebo kdykoli později:

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

nebo dokonce lokálně pro konkrétní prostředí:

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

## Specifikace písem pro konkrétní jazyky

Můžete určit písmo použité pro různé jazyky. Předpokládejme, že byste chtěli sázet veškerý anglický text (obsažený v našem předchozím příkladu) kurzívou; mohli byste napsat:

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

![](/files/72b0b437f160468e60be5776ab7d1158074e6a25)

Samozřejmě můžete použít něco ještě okázalejšího:

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

![](/files/caff427f5d9510fbadfa0ecace5535a8aca1c4ac)

Tento mechanismus nastavení písem pro různé jazyky nebo skripty je obzvlášť důležitý, když používáte hlavní písmo, které *ne* obsahuje glyfy pro všechny skripty nebo jazyky ve vašem dokumentu. Předpokládejme, že se nyní rozhodneme použít Caladea jako hlavní písmo dokumentu:

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

Při kompilaci bychom viděli následující chybu:

```
Chyba balíčku polyglossia: Současné římské písmo
neobsahuje cyrilici!

(polyglossia)                Prosím definujte
\cyrillicfont pomocí \newfontfamily.

Podrobnosti viz dokumentace balíčku polyglossia pro
vysvětlení.
Pro okamžitou nápovědu zadejte H <return>.
 ...

l.15 \select@language {russian}

Chyba balíčku polyglossia: Současné římské písmo
neobsahuje thajské písmo!

(polyglossia)                Prosím definujte
\thaifont pomocí \newfontfamily.

Podrobnosti viz dokumentace balíčku polyglossia pro
vysvětlení.
Pro okamžitou nápovědu zadejte H <return>.
 ...

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

Nyní jsme povinni určit, která písma použít pro cyrilici a thajské písmo. Opět se můžete obrátit na [seznamu dostupných písem TrueType a OpenType](https://www.overleaf.com/help/193) v Overleafu.

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

![](/files/1a4c7b6f00b3315847be5eda68eadc77b6df83f8)

**Poznámka**: cílem tohoto článku není řešit problémy související s výběrem esteticky působivých a typograficky kompatibilních kombinací písem.

Všimněte si, že jsme definovali `\cyrillicfont` místo `\russianfont`, tj. definovali jsme písmo pro cyrilický *skript* místo pro ruský *jazyk*. Výhodou definování `\cyrillicfont` je, že pokud je například `srbština` také definovaný jazyk ve vašem projektu, pak `\textserbian` automaticky použije definované `\cyrillicfont`. Pokud byste definovali pouze `\russianfont`, pak použití `\textserbian` by si opět stěžovalo na „současné římské písmo neobsahuje cyrilici“ a stejně byste museli definovat `\cyrillicfont` — *ledaže* vás *byste* chtěli použít jiné písmo pro srbský text!

Dalším podobným scénářem je písmo dévanágarí *skript*, které se používá pro hindštinu a sanskrt *jazyky*; nebo arabské písmo používané pro arabštinu a fársí (perštinu).

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

![](/files/558baf756a45bb73afe7f2c56b231d84acad5044)

Při použití `\newfontfamily` je nutné určit `Script`, jinak mohou být některé glyfy vykresleny nesprávně; například kdybychom napsali jen `\newfontfamily\thaifont{Garuda}` mohl by být vysázený výsledek chybný (levý obrázek níže) — správný výstup vznikne přidáním `[Script=Thai]`.

Chybně: ![](/files/924c38620a4b4cc0c1620790aa3b9446fbf0ecd4) Správně: ![](/files/2c31de4e4c69c4e1e558456ff5b1ce4a74b25ef6)

## Definování dalších rodin písem

Podívejme se na další příklad, tentokrát s hebrejštinou:

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

![](/files/82c58a685234fa342cbe6dac7a21f6ddc969618b)

Zatím vše v pořádku. Nyní předpokládejme, že používáme šablonu původně vytvořenou pro anglický dokument, která nastavuje nadpisy sekcí bezpatkovým písmem pomocí `titlesec` balíček:

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

Setkáváme se s chybovou hláškou:

```
Chyba balíčku polyglossia: Současné římské písmo
neobsahuje hebrejské písmo!

(polyglossia)                Prosím definujte
\hebrewfont pomocí \newfontfamily.

Podrobnosti viz dokumentace balíčku polyglossia pro
vysvětlení.
Pro okamžitou nápovědu zadejte H <return>.
 ...

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

To je trochu matoucí: nedefinovali jsme už `\hebrewfont` tak, aby bylo Hadasim CLM? No, je to skutečně proto, že jsme *dosud neurčili bezpatkové písmo pro hebrejštinu*. Opravme to přidáním definice pro `\hebrewfontsf`:

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

A nyní máme výstup:

![](/files/487948373baf70d4e61b0020824fcba1c4a56ba3)

Pokud by bylo potřeba, mohli bychom také definovat neproporcionální písmo pro použití s `\hebrewfonttt`.

## Poděkování

Všechny ukázky lorem ipsum v různých jazycích pocházejí z [`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/cs/jazyky/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.
