Česká sazba v LaTeXu

From MerlinWiki
Jump to: navigation, search


Tento text je zatím ve výstavbě a pochází z originálních stránek LaTeXových specialit.

--David Martinek 12:04, 22 June 2010 (UTC)


Contents

Odlišnosti české a standardní LaTeXové sazby

Ve standardním režimu sází LaTeX texty podle zvyklostí běžných v anglofonních zemích. Pravidla pro sazbu českých dokumentů jsou z velké většiny stejná, ale jsou zde některé rozdíly. Některé rozdíly se ošetřují automaticky pomocí vhodných LaTeXových balíčků, ale na některé musí autor pamatovat sám.

Sázení vět a odstavců

Prvním viditelným rozdílem mezi českou a anglofonní sazbou je způsob sázení odstavců zarovnaných do bloku a vět v něm. U české sazby platí pravidlo pro odsazování prvních řádků v odstavci. V odstavci za nadpisem se první řádek neodsazuje, ale v odstavcích, jimž předchází jiný odstavec, je první řádek o něco odsazen, aby bylo lépe patrné jejich oddělení.

Dále se v české sazbě, na rozdíl od sazby anglické, nedělá zvětšená mezera mezi větami. Mezera mezi ukončující tečkou a prvním písmenem nové věty je stejně velká, jako mezery mezi ostatními slovy na řádku.

Tato pravidla se začnou uplatňovat automaticky při použití počeštěného LaTeXu, nebo při správném použití balíku babel (viz dále).

Uvozovky

Dalším rozdílem je sazba uvozovek. V českém textu se uvozovky používají pro označení přímé řeči a v menší míře pro označení ironie. Česká sazba rozlišuje dvojité otevírací a zavírací uvozovky, které se liší od anglických dvojitých uvozovek zejména tím, že české otevírací uvozovky jsou otočeny směrem dolů a uzavírací směrem nahoru (viz ukázky dále).

Jednopísmenná slova na koncích řádků

Dalším významným rozdílem je pravidlo pro sázení konců řádků. V české sazbě nesmí řádek končit jednopísmennou předložkou nebo spojkou. Výjimkou je úzká sazba do sloupců užších jak 25 liter, kdy je možné na koncích řádků tolerovat samostatné spojky a a i, pokud jde o malá písmena. Tento problém se obvykle řeší vkládáním nezlomitelných mezer mezi předložku či spojku a následující slovo (možná řešení jsou uvedena dále na stránce).

Pomlčky, spojovníky, rozdělovníky, vsuvky

Pomlčky se sází ručně pomocí dvou znaků --. Výsledkem je o něco delší pomlčka (tzv. en-pomlčka, tedy pomlčka šířky písmene n). Tato pomlčka se používá pro sázení rozsahů a nevkládají se kolem ní mezery, např. 1--10, a--z.

Spojovníky se sází stejně jako v anglické sazbě, tedy jedním znakem -, ve slovech jako "je-li", "česko-anglický", atd. Autor je pochopitelně musí vysázet ručně.

Rozdělovníky se používají pro dělení slov v místech řádkových zlomů, kdy je potřeba rozdělit dlouhé slovo, aby nepřetékalo za okraj odstavcového bloku. Dělení slov dělá LaTeX automaticky, ale je potřeba použít lokalizovaný LaTeX nebo počeštěný balík babel, aby se nahrál správný slovník pro dělení českých slov. Pokud LaTeX nějaké slovo rozdělit neumí, je potřeba mu pomoci vložením zlomových míst do slova pomocí příkazu \- (nej\-ne\-ob\-\vyk\-lej\-ší). Podotýkám, že češtině lze slovo rozdělit pouze na hranici jednotlivých slabik, přičemž jednopísmenné slabiky by neměly zůstávat samostatně na konci řádků (tohle ne: a\-legorie).

Čtvrtým typem pomlček jsou dlouhé pomlčky, neboli vsuvky sázené ručně jako -- (en-pomlčka) nebo --- (em-pomlčka) s mezerami, nebo zúženými (\,) mezerami okolo. Používají se jako interpunkční znaky ve větách: Česko\,---\,Slovensko, ale také Česko\,--\,Slovensko. V anglické sazbě se používají pro tyto účely em-pomlčky bez okolních mezer.

Doporučená česká sazba s balíky babel, inputenc a fontenc

LaTeXový balík babel slouží pro správné dělení slov na koncích řádků. Jde o obecný balík, který umožňuje vytvářet dokumenty v různých jazycích. Babel poskytuje algoritmy pro správné dělení slov a odsazování odstavců v těchto jazycích. Dále obsahuje překlady automaticky generovaných textových elementů (např. nadpisy Obsah, Literatura, Kapitola, atd.) a formáty pro správný tisk dat a časových údajů. Různé jazykové mutace pak také mohou zahrnovat další prostředky pro specifickou sazbu v daném jazyce.

Dalšími nutnými balíky jsou inputenc a fontenc, viz dále.

Doporučené použití těchto balíků v českých dokumentech:

\documentclass[a4paper]{article}

\usepackage[czech]{babel}
\usepackage[latin2]{inputenc} % pro iso8859-2
\usepackage[IL2]{fontenc}     % fonty vygenerované pro iso8859-2

% \usepackage[utf8x]{inputenc}  % pro unicode UTF-8
% \usepackage[cp1250]{inputenc} % pro win1250
% \usepackage[T1]{fontenc}

Při použití těchto balíků se pro překlad dokumentů používají programy latex nebo pdflatex.

$ latex dokument.tex
$ pdflatex dokument.tex


Poznámka: Pokud ve vaší distribuci LaTexu český babel nefunguje jak má, je možné, že zatím nemáte nainstalovanou opravenou podporu pro češtinu v babelu od pana Tesaříka. V tom případě si musíte stáhnout instalační program nebo instalační balík ze stránek CSTUG.

Kódování dokumentů a fontů

Pro správný výsledek potřebujeme balíky inputenc a fontenc. 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ů.

Balík fontenc slouží pro výběr kódování fontů použitých v cílovém dokumentu. Pro českou sazbu jsou obvyklé parametry T1 pro unicode fonty a IL2 pro fonty v kódování ISO8859-2 (pozor, ne všechny fonty existují i v tomto kódování).

Vliv kódování na dělení českých slov

Bez správného nastavení kódování zdrojových textů a fontů nebude správně fungovat příkaz \hyphenation pro dělení slov. Tento příkaz standardně umí pracovat pouze se slovy bez diakritiky. Po správném nastavení kódování umí zpracovávat i česká slova s diakritikou. Nastavení kódování fontů má zřejmě vliv i na samotný algoritmus dělení slov.

Vyhledávání v PDF s češtinou

Další situací, kdy oceníme správně nastavené kódování je tvorba PDF dokumentů, v nichž chceme fulltextově vyhledávat. Pokud kódování není nastaveno správně, vyhledávat nepůjde, protože znaky a diakritika pak budou v PDF dokumentu pravděpodobně uloženy jako samostatné znaky vytištěné přes sebe (písmeno č zde bude reprezentováno jako samostatný znak c a samostatný znak háčku). Se správně nastaveným kódováním fontů budou písmena s diakritikou v PDF reprezentována správně a uživatel bude mít možnost vyhledávat i česká slova.

Sazba pomocí CsLaTeXu a balíku czech

Další možností, jak sázet české dokumenty představuje program cslatex a balík czech. Tento balík nelze použít bez csLaTeXu. Program cslatex je počeštěnou verzí standardního překladače latex. Podobně jako pro LaTeX, existují i počeštěné verze TeXu (csplain) a pdfLaTeXu (pdfcslatex).

CsLaTeX spolu s balíkem czech se starají o počeštění automaticky generovaných nadpisů, sazbu dat a časových údajů a samozřejmě i o správné dělení českých slov na koncích řádků.

Hlavička českého dokumentu s balíkem czech vypadá takto:

\documentclass[a4paper]{article}
\usepackage{czech}
\usepackage[latin2]{inputenc} % pro iso8859-2
\usepackate{IL2}{fontenc}

Pro překlad je poté potřeba použít počeštěné verze překladačů:

$ cslatex dokument.tex
$ pdfcslatex dokument.tex

Balík czech dále obsahuje makro \uv{} pro sazbu českých uvozovek.

Problémy a budoucnost CsLaTeXu

CsLaTeX je historicky starší než počeštěný babel. 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 balíku geometry, je pravděpodobné, že časem mohou vyplout na povrch další problémy.

Dalším problémem CsLaTeXu je, že jde v podstatě o ad-hoc řešení, které působí problémy zejména u dokumentů, které obsahují různojazyčný text. Zatímco ostatní jazyky píšící latinkou řeší lokalizaci pomocí balíku babel a standardního překladače, československý CsLaTeX představuje z pohledu autora vícejazyčných textů nepříjemnou výjimku.

V současnosti (únor 2010) to vypadá, že s použitím standardního LaTeXu spolu s balíkem babel nejsou spojeny žádné velké problémy a tato možnost je tudíž do budoucna preferována oproti CsLaTeXu.

Sázení uvozovek

Standardní anglické dvojité uvozovky se pro českou sazbu nepoužívají. Balík czech pro sazbu českých uvozovek zavedl speciální makro \uv{}. Balík babel by měl v budoucnu umožňovat použití německých "`uvozovek"', které by se měly vysázet jako české, ale zatím to zdá se není funkční. Jako provizorní řešení si můžeme sami vytvořit makro \uv{}.

\newcommand{\uv}[1]{\quotedblbase #1\textquotedblleft}

Nyní zkusme vysázet text s českými uvozovkami.

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...

Po překladu dostaneme toto:

uvozovky.png

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.}

uvozovky2.png

Vlnky

Pro správné sázení českého textu zarovnaného do bloku je nezbytné používat nezlomitelné mezery namísto mezer obyčejných. Nezlomitelná mezera se v LaTeXu sází pomocí znaku vlnka (~). U textu, který je zarovnán jiným způsobem, toto pravidlo neplatí a není potřeba vlnkovat (téměř) vůbec.

Ve správně vysázeném českém textu zarovnaném do bloku by se nemělo stát, že na konci řádku zůstane samotná jednopísmenná předložka (v, k, o, ...). Výjimkou je sazba do sloupců užších než 25 liter, kde lze na koncích řádků tolerovat samostatná malá písmena a a i. Vložením nezalomitelné mezery mezi předložku a následující slovo tomu lze nechtěnému zalomení 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.png

Aby nebylo potřeba tyto mezery vkládat ručně, vznikl program vlna od Petra Olšáka, který projde celý LaTeXový (nebo TeXový) dokument a vlnky v něm doplní. Používá se takto:

$ vlna -l -v KkSsVvZzOoUuAaIi dokument.tex

Poznámka: Přepínač -l zapíná LaTeXový mód, to znamená že program nebude doplňovat vlnky uvnitř matematických prostředí a prostředí verbatim. Přepínač -v slouží pro vyjmenování jednoznakových slov, za které se mají sázet vlnky. Pokud je vaše sazba užší než 25 znaků (sazba do úzkých sloupců), můžete tento přepínač vynechat. Když je tento přepínač vynechán, je jeho implicitní nastavení KkSsVvZzOoUuAI. Pro bližší informace o programu vlna se prosím podívejte do jeho manuálové stránky.

Použití balíku encxvlna

Ruční doplňování nezlomitelných mezer pomocí vlnek i použití programu vlna není principiálně nejlepší způsob, jak vytvářet dokumenty. Toto ad-hoc doplňování vlnek způsobuje hned několik problémů.

Prvním problém nastává, když samotný text LaTeXového dokumentu potřebujeme použít i k jiným účelům, než k sazbě. Potom je potřeba vlnky zase více, či méně pracně odstraňovat. Při ručním doplňování vlnek se může snadno stát, že na nějakou důležitou zapomeneme a vyžaduje to důkladnější kontrolu vysázeného dokumentu. Problémy se ale nevyhýbají ani automatickému doplňování pomocí programu vlna. Problémy nastávají zejména u speciálních prostředí, kde program může doplňovat vlnky i tam, kde to nechceme.

Principiálně lepší způsob řešení tohoto typografického problému české sazby nabízí balík encxvlna od pánů Olšáka a Wagnera. Tento balík stačí použít v LaTeXovém dokumentu (podle doporučení autorů těsně před \begin{document}) a nezlomitelné mezery budou automaticky doplněny během překladu dokumentu.

...
\usepackage{encxvlna}
\begin{document}
...

Výhodou tohoto přístupu je, že není potřeba do textu psát vlnky ručně, ale hlavně že se vše děje automaticky vždy při překladu dokumentu. Nevýhodou je, že v současné době (únor 2010) není tento balík součástí standardních distribucí LaTeXu, takže je potřeba si jej nainstalovat ručně.

Zprovoznění balíku encxvlna a encTeXu v Ubuntu 9.10 (únor 2010) a 10.04 (červen 2010)

Balík encxvlna využívá rozšíření standardního TeXu vyvinuté panem Olšákem, které se jmenuje encTeX. Toto rozšíření je sice v dnešní době součástí distribuce TeX Live, která je v repozitářích Ubuntu Linuxu 9.10, ale není zde standardně aktivováno. Následující návod vám pomůže jej zprovoznit. Pomoci vám také může oficiální dokumentace balíku encxvlna.

Pokud nemáte TeX/LaTeX instalovaný lokálně, budete pravděpodobně muset používat příkaz sudo.

1. Je potřeba mít nainstalovaný instalační balík texlive-base (v Ubuntu 10.04 je encxvlna součástí balíku texlive-generic-extra).

2. Zkontrolujte, zda po jeho instalaci máte v systému tento adresář: /usr/share/texmf-texlive/tex/generic/enctex

3. Konfigurace se mírně liší, pokud používáte lokalizaci ISO8859-2 nebo UTF-8.

3a. Tato konfigurace platí pro kódování ISO-8859-2. Upravte konfigurační soubory v adresáři /etc/texmf/fmt.d Upravte v těchto souborech odpovídající řádky. Je možné, že některé soubory tam mít nebudete. Instalují se spolu s rozšiřujícími balíky TeXu.

Poznámka: Podoba jednotlivých parametrů v konfiguračních souborech se může s různými verzemi měnit. Důležité je přidání parametru -enc k řádkům s používanými programy (pdftex, latex, pdflatex, ...).

10texlive-base.cnf

pdftex          pdftex         -       -enc -translate-file=cp227.tcx *pdftex.ini

10texlive-lang-czechoslovak.cnf

csplain         pdftex         -       -etex -enc -translate-file=cp227.tcx csplain.ini
pdfcsplain      pdftex         -       -etex -enc -translate-file=cp227.tcx csplain.ini
cslatex         pdftex         -       -etex -enc -translate-file=cp227.tcx cslatex.ini
pdfcslatex      pdftex         -       -etex -enc -translate-file=cp227.tcx cslatex.ini

10texlive-latex-base.cnf

latex           pdftex         language.dat    -enc -translate-file=cp227.tcx *latex.ini
pdflatex        pdftex         language.dat    -enc -translate-file=cp227.tcx *pdflatex.ini

3b. Používáte-li kódování UTF-8, potom je potřeba tyto řádky upravit podle tohoto vzoru:

cslatex         pdftex         -       -etex -enc cslatex-utf8.ini

4. Máte-li balík encxvlna nainstalován (např. v Ubuntu je součástí texlive-generic-extra), měli byste mít na disku tento soubor /usr/share/texmf-texlive/tex/latex/encxvlna/encxvlna.sty. Pokud tento balík vaše distribuce neobsahuje, musíte si jej stáhnout sami.

4a. Pokud nemáte balík encxvlna v žádném distribučním balíčku, stáhněte si soubor encxvlna.zip. Tento soubor rozbalte do adresářové struktury, kde máte nainstalovánu svou distribuci TeXu/LaTeXu.

4b. Poslední možností, jak používat balík encxvlna, je umísťovat soubor encxvlna.sty do adresářů se svými LaTeXovými dokumenty.

5. Spusťte s administrátorskými právy program

$ sudo update-fmtutil

6. Spusťte s administrátorskými právy program

$ sudo dpkg-reconfigure texlive-base

6a. Program dpkg-reconfigure zřejmě v Ubuntu nefunguje správně. Místo něj lze použít program fmtutil.

$ sudo fmtutil --all 
Personal tools
Namespaces

Variants
Actions
Navigation
Tools