# PB029: Česká sazba TeXem

V rámci předmětu PB029 budeme při sazbě TeXem používat zejména formát LaTeX. Pro kompilaci dokumentů pak doporučujeme využít kompilátory pdfTeX, XeTeX nebo LuaTeX.

Vzhledem k rozdílům v podporovaných kódováních zdrojových textů a (ne)možnosti využití systémových fontů u různých kompilátorů se u nich mírně liší i doporučený postup pro tvorbu českých dokumentů.

Pozor: Při české sazbě je důležité dávat pozor na správné kódování zdrojového textu, viz nástrahy textových souborů.

## Balíček `babel`

Pro sazbu českých a slovenských dokumentů v LaTeXu můžeme ve všech kompilátorech použít balíček `babel`.

Komentovaný český dokument pro LaTeX si můžete na příkazovém řádku přeložit následujícím příkazem: `pdflatex babel.tex` Stejně tak si můžete dokument přeložit a prohlédnout na službě Overleaf.

Tip: Pro stažení souboru `babel.tex` můžete použít command-line nástroj `wget`, který je součástí většiny linuxových distribucí: `wget https://sojka.pages.fi.muni.cz/PB029_web/practices/ceska-sazba-texem/files/babel.tex`

Při použití textového editoru TeXworks můžete vybrat kompilátor TeXu (zde pdfLaTeX) z menu v levém horním rohu. V pravém dolním rohu je pak indikováno používané kódování textu a znak konce řádku zdrojového textu.

## Balíček `polyglossia`

Moderními alternativami kompilátoru pdfTeXu jsou kompilátory XeTeX a LuaTeX. Tyto kompilátory nativně používají Unicode a podporují moderní formáty písem (OpenType, TrueType a AAT). Jsou proto mimořádně vhodné pro sazbu vícejazyčných dokumentů.

Balíček `babel` můžeme sice používat i s kompilátory XeTeX a LuaTeX, ale pro plné využití jejich možností je vhodnější použít balíček `polyglossia`.

Komentovaný český dokument pro LaTeX si můžete na příkazovém řádku přeložit následujícím příkazem: `lualatex lualatex.tex` Stejně tak si můžete dokument přeložit a prohlédnout na službě Overleaf.

Pozor:

Při práci z příkazové řádky studentského unixového serveru Aisa nezapomeňte nejprve načíst softwarový modul `texlive`: `module add texlive`

Tip: Při použití LuaTeXu nejste odkázáni jen na fonty, které jsou instalovány v TeXové instalaci. Pokud je to nutné, můžete se přímo v TeXovém zdrojovém textu odkázat na soubor/adresář s fontem/fonty. Vizte manuál balíčku `fontspec`: `texdoc fontspec`

## Pomocný nástroj `vlna`

Při sazbě českých textů se v mnoha případech v textu používá nezlomitelná mezera, která je v TeXovém zdrojovém textu reprezentována znakem vlnky (`~`).

Jedním z nejčastějších případů použití nezlomitelné mezery je spojení neslabičné předložky (v, k, s, …) se slovem následujícím. Jelikož tento úkon lze relativně snadno automatizovat, vznikl program `vlna`, který na patřičná místa textu nezlomitelnou mezeru doplní.

Vyzkoušejte si použití programu `vlna` na dokumentu `vlna.tex` (dostupném také na službě Overleaf). Nejprve jej pouze přeložte a zhodnoťte výstup:

`pdflatex vlna.tex`

Následně do něj doplňte nezlomitelné mezery: `vlna -r -l -v KkSsVvZzOoUuAaIi vlna.tex` Z integrované nápovědy zjistěte, co znamenají použité parametry a zda je vhodné je použít i při sazbě vašich dokumentů: `vlna --help`

Pozor:

S kompilátory XeTeX a LuaTeX můžeme použít LaTeXové balíčky `xevlna` a `luavlna` které vkládají nezlomitelné mezery přímo v TeXu bez nutnosti používat program `vlna`. Funkci balíčků můžeme otestovat na dokumentech `xelatex-vlna.tex` a `lualatex-vlna.tex`: `xelatex xelatex-vlna.tex
lualatex lualatex-vlna.tex` Stejně tak si můžete dokumenty `xelatex-vlna.tex` a `lualatex-vlna.tex` přeložit a prohlédnout na službě Overleaf.

### Použití programu `vlna` pro (X)HTML dokumenty

Program `vlna` je možné bez větších obtíží použít také pro doplnění nezlomitelných mezer do (X)HTML dokumentů: `vlna -x 266E6273703B -r -v KkSsVvZzOoUuAaIi file.html` Parametr `-x 266E6273703B` zajistí vkládání tvrdých mezer v podobě sekvence znaků `&nbsp;` místo výchozího znaku `~`.

## Praktické úkoly k procvičení

- Pomocí výše uvedených postupů si vysázejte ukázkové české dokumenty v LaTeXu pro kompilátor pdfTeX s balíčkem babel a pro kompilátor LuaTeX s balíčkem polyglossia.
- V dokumentu s balíčkem babel chybí nezlomitelná mezera po neslabičné předložce. Použijte nástroj vlna pro její doplnění.