Jak sázet česky

[  CsLaTex a balík czech  |  Balík babel  |  Vlnky  ]
[  CsLaTeX v teTeXu v některých distribucích (Ubuntu, Gentoo, Debian)  |  Používání unicode  ]

CsLaTex a balík czech

Typografická pravidla pro sázení českého či slovenského jazyka se liší od pravidel pro sázení angličtiny. Proto vznikly modifikace programů tex, latex a pdflatex, které implementují algoritmy českého sázení. Český tex se jmenuje csplain, český latex je cslatex a český pdflatex je pdfcslatex (nebo v některých distribucích cspdflatex). Jejich ovládání je totožné s ovládáním anglických verzí.

$> cslatex dokument.tex
$> cslatex dokument.tex

Pokud chcete sázet české dokumenty v LaTeXu nestačí použít počeštěný překladač, protože ten řeší pouze odsazování a lámání vět a odstavců. Běžně používané LaTeXové balíčky ovšem obsahují předdefinované názvy kapitol či sekcí, které jsou v angličtině (Contents, References, ...). Počeštění těchto věcí, stejně jako sázení kalendářních dat (pomocí \today) a dělení českých slov řeší balík czech. Český LaTeXový dokument by tudíž měl začínat takto:

\documentclass[a4]{article}
\usepackage{czech}
\usepackage[latin2]{inputenc} % pro iso8859-2
% \usepackage[utf8]{inputenc}   % pro unicode UTF-8
% \usepackage[cp1250]{inputenc} % pro win1250

Balík inputenc říká překladači, v jakém kódování byl dokument napsán. Překladač potom vybere správnou kódovou stránku nezávisle na tom, jestli překládáme v Linuxu nebo ve Windows. Použití tohoto balíku tedy zvyšuje přenositelnost dokumentů.

V balíku czech je navíc definováno makro \uv, které slouží pro sázení českých uvozovek. České uvozovky používané například pro vyznačení přímé řeči se liší od anglických tím, že první dvojitá uvozovka je sázena dole, a koncová je sázena nahoře. Po vysázení tohoto textu:

Vesmírný počítač naznal, že odpověď demonstrací bude dostačující.
Vesmírný počítač tedy řekl: \uv{Budiž světlo!} A bylo světlo...

dostaneme toto:

a bylo světlo...

Anglické "uvozovky" nebo 'uvozovky' bychom v českém textu používat neměli. Srovnejte rozdíly:

Anglické dvojité "uvozovky", jednoduché 'uvozovky', použití
opačné `uvozovky' a \uv{české uvozovky.}
srovnání uvozovek

Poznámka: V současnosti to vypadá, že CsLaTeX nebude dále vyvíjen a spíše budou pokračovat snahy přesunout správnou implementaci českého sázení do standardního LaTeXu. V současnosti má CsLaTeX problémy s použitím balíku geometry (PdfCsLaTeX + geometry tímto problémem netrpí). Ačkoli jsou tyto problémy způsobeny chybou v tomto balíku, je pravděpodobné, že časem mohou vyplout na povrch další problémy. Osobně pořád CsLaTeX pro českou sazbu používám, protože se mi jeví stále spolehlivější než babel.

Balík babel

Další možností, jak sázet česky, je použít balík babel s parametrem czech. V tomto případě už se nepřekládá programem cslatex, ale originálním programem latex.

\documentclass[a4]{article}
% \usepackage[czech]{babel} % nové rozhraní pro použití babelu, ale zatím s ním mám problémy
\usepackage{czech} % staré rozhraní pro babel, ale pořád funkční s českým babelem
\usepackage[latin2]{inputenc}
$> latex dokument.tex
$> latex dokument.tex

Tento způsob by se měl časem stát standardním způsobem, jak sázet české texty. Balík babel je míněn jako obecný, tedy pro použití s libovolným jazykem. Opravená podpora pro češtinu v babelu od pana Tesaříka zatím (začátek roku 2008) není implementována do běžně rozšířených distribucí LaTeXu, takže si musíte stáhnout instalační program nebo instalační balík ze stránek CSTUG.

Tato implementace se snaží být co nejvíce kompatibilní s CsLaTeXem. Obsahuje správné vzory pro dělení českých slov i příkaz \uv pro sázení českých uvozovek. Staré dokumenty pro CsLaTeX by s touto implementací měly jít bez problémů přeložit standardním LaTeXem. Nové české dokumenty by podle doporučení autora měly používat nové rozhraní babelu.

V současnosti vytvářím české texty tak, aby byly kompatibilní s CsLaTeXem a PdfCsLaTeXem. Babel a LaTeX používám jenom v případě, že zároveň potřebuji použít balík geometry a chci generovat postscriptový dokument. Pro generování PDF používám stále PdfCsLaTeX, který žádné problémy s balíkem geometry nemá.

Vlnky

Pro správné sázení českého textu je nezbytné používat v některých případech nezalomitelné mezery namísto mezer obyčejných. Nezalomitelná mezera se v LaTeXu sází pomocí znaku vlnka (~).

Ve správně vysázeném českém textu by se nemělo stát, že na konci řádku zůstane samotná jednopísmenná předložka (v, k, o, ...). Vložením nezalomitelné mezery mezi předložku a následující slovo tomu lze zabránit.

Mezi oblíbené dětské pohádky patří \emph{O~Palečkovi,
Alenka v~říši divů} a \emph{Socialismem k~lepším zítřkům.}
Vlnky

Aby nebylo potřeba tyto mezery vkládat ručně, vzniknul program Vlna (autor Petr Olšák), který projde celý LaTeXový (nebo TeXový) dokument a vlnky doplní. Použití:

$> vlna -l -m -n dokument.tex

Poznámka: Přepínač -l zapíná LaTeXový mód, přepínače -m a -n zajistí, že program bude ignorovat obsah matematických prostředí a prostředí verbatim.



CsLaTeX v teTeXu v některých distribucích (Ubuntu, Gentoo, Debian)

Ve většině distribucí jsou implicitně k dispozici programy csplain, cslatex, csindex, pdfcsplain a pdfcslatex. Všechny tyto programy slouží k použití společně s balíkem czech. V některých distribucích Linuxu však tyto programy k dispozici implicitně nejsou. Osobně jsem se s tímto problémem setkal v Ubuntu 6.x a podobné to asi bude i v Debianu a v Gentoo.

Řešení (platí pro teTeX)

  1. Jako root spustit program texconfig
  2. Z menu vybrat FORMAT
  3. V nabídnutém konfiguračním souboru odpoznámkovat řádky s programy csplain, cslatex, csindex, pdfcsplain, pdfcslatex. Je potřeba umazat znaky #! na začátcích příslušných řádků. Edituje se editorem vim - znaky se mažou klávesou x, konec :wq.
  4. Po opuštění editoru vybrat z menu REHASH a provést.

Nyní by měl být český CsLaTeX normálně dostupný v systému. Konfigurační soubor, který se upravoval je /usr/share/texmf/web2c/fmtutil.cnf, ale je lepší jej upravovat pomocí texconfig.

Používání unicode

V novějších distribucích Linuxu je standardním nastaveným kódováním češtiny UTF-8. Aby soubory s tímto kódováním šlo správně přeložit, je potřeba použít balík inputenc se správně zapnutým kódováním.

\usepackage[utf8]{inputenc}

Poznámky

  1. V některých distribucích je podpora UTF-8 pro TeX/LaTeX umístěna v samostatném distribučním balíčku.
  2. Zdá se, že v novějších distribucích už se vůbec nevyskytuje program csindex. Pravděpodobně byla upravena lokalizace programu makeindex tak, aby fungoval správně i pro češtinu. Naposledy jsem používal makeindex pod Ubuntu 7.10 a vypadá to, že řadí správně podle české normy.

Autor: David Martinek. Poslední modifikace: 2. October 2008. Pokud v tomto dokumentu narazíte na chybu, dejte mi prosím vědět.