Diel XIII.

Dnešný diel začneme odpoveďou na otázku jedného z našich čitateľov, ktorého zaujíma spracovanie slovenského textu v rôznych kódovaniach. Samozrejme nás budú zaujímať dve najpoužívanejšie kódovania ISO 8859-2 a Windows 1250. Text v kódovaní ISO 8859-2 môžeme v LaTeXu pod Linuxom spracovávať priamo, bez akýchkoľvek úprav. Stačí, keď použijeme cslatex a balík slovak.

Pri tlačení textu v inom kódovaní, napr. Windows 1250 máme niekoľko možností. Prvá z nich je konverzia na text v kódovaní ISO 8859-2. Na to si môžeme sami napísať jednoduchý program či skript, alebo použiť už existujúci. Veľmi vhodný a často používaný je cstocs, ktorý podporuje kódovania ISO 8859-1, ISO 8859-2, Cork (T1 kódovanie, zmienili sme sa o ňom pri fontoch), KOI 8-CS, PC Latin 2, Windows 1250, Windows 1252 a ďalšie.

Ďalšiu možnosť nám ponúka balík inputenc. Kódovanie, v ktorom je text napísaný, uvedieme ako voľbu balíku: \usepackage[kódovanie]{inputenc}. Ku každému kódovaniu musí existovať súbor kódovanie.def. V štandardnej inštalácii LaTeXu sú podporované kódovania ascii, latin1, latin2 (ISO 8859-2), cp850, cp852 a niektoré ďalšie (neslovanské). Kódovanie (Windows) 1250 medzi nimi ale nenájdeme, a preto si súbor 1250.def musíme napísať sami. Obmedzíme sa pritom len na písmena s mäkčeňmi a dĺžňami.

1250.def

	\ProvidesFile{1250.def}[2000/04/01
	v1.0 1250-encoding file]

	\NeedsTeXFormat{LaTeX2e}[1995/12/01]

	\DeclareInputText{"0BC}{\v L}
	\DeclareInputText{"08A}{\v S}
	\DeclareInputText{"08D}{\v T}
	\DeclareInputText{"08E}{\v Z}
	\DeclareInputText{"0BE}{\v l}
	\DeclareInputText{"09A}{\v s}
	\DeclareInputText{"09D}{\v t}
	\DeclareInputText{"09E}{\v z}
	\DeclareInputText{"0C1}{\@tabacckludge'A}
	\DeclareInputText{"0C4}{\"A}
	\DeclareInputText{"0C5}{\@tabacckludge'L}
	\DeclareInputText{"0C8}{\v C}
	\DeclareInputText{"0C9}{\@tabacckludge'E}
	\DeclareInputText{"0CC}{\v E}
	\DeclareInputText{"0CD}{\@tabacckludge'I}
	\DeclareInputText{"0CF}{\v D}
	\DeclareInputText{"0D2}{\v N}
	\DeclareInputText{"0D3}{\@tabacckludge'O}
	\DeclareInputText{"0D4}{\^O}
	\DeclareInputText{"0D8}{\v R}
	\DeclareInputText{"0D9}{\r U}
	\DeclareInputText{"0DA}{\@tabacckludge'U}
	\DeclareInputText{"0DC}{\"U}
	\DeclareInputText{"0DD}{\@tabacckludge'Y}
	\DeclareInputText{"0E1}{\@tabacckludge'a}
	\DeclareInputText{"0E4}{\"a}
	\DeclareInputText{"0E5}{\@tabacckludge'l}
	\DeclareInputText{"0E8}{\v c}
	\DeclareInputText{"0E9}{\@tabacckludge'e}
	\DeclareInputText{"0EC}{\v e}
	\DeclareInputText{"0ED}{\@tabacckludge'i}
	\DeclareInputText{"0EF}{\v d}
	\DeclareInputText{"0F2}{\v n}
	\DeclareInputText{"0F3}{\@tabacckludge'o}
	\DeclareInputText{"0F4}{\^o}
	\DeclareInputText{"0F8}{\v r}
	\DeclareInputText{"0F9}{\r u}
	\DeclareInputText{"0FA}{\@tabacckludge'u}
	\DeclareInputText{"0FD}{\@tabacckludge'y}

	\endinput

Tento súbor buď vložíme do stromovej štruktúry s koreňom TEXMF (pozrite si výstup z programu texconfig conf) a spustíme texconfig rehash, alebo ho umiestnime do adresáru, v ktorom spúšťame cslatex.

Predpokladajme, že v súbore text.txt je uložené jadro dokumentu (to, čo píšeme medzi \begin{document} a \end{document}) v kódovaní Windows 1250. Dokument môžeme spracovať pomocou tohto zdrojového súboru:

	\documentclass[12pt]{article}
	\usepackage{slovak}
	\usepackage[1250]{inputenc}

	\begin{document}
	\input{text.txt}
	\end{document}

Tu na chvíľu odbočíme a ukážeme si, ako písať dokumenty na termináloch bez podpory slovenčiny. Dĺžeň napíšeme pomocou príkazu \' pred daným písmenom, napr. \'a znamená á, \'U Ú, atď. Podobne mäkčeň pomocou \v (za \v musí ísť samozrejme medzera, alebo musí byť písmeno v { }), napr. \v n, \v{l}, vokáň nad písmenom použitím sekvencie \^ a prehlasované samohlásky vytlačíme použitím \".

	\documentclass[12pt]{article}
	\usepackage{slovak}

	\begin{document}
	\begin{flushleft}
	\ldots\\

	\textbf{v\^o\v la}, vedom\'e \'usilie nie\v{c}o dosiahnu\v t\\

	\textbf{vp\'isa\v t}, p\'isan\'im vnies\v t, zap\'isa\v t\\

	\ldots

	\end{flushleft}
	\end{document}

Vyskúšajte si, ako sa zmení výstup, ak z príkladu vymažete príkaz \usepackage{slovak}. Všimnite si najmä písmeno í. Skúste nahradiť sekvenciu \'i sekvenciou \'\i.

Balík fancyheadings

V dnešnom dieli si ešte ukážeme možnosti balíku fancyheadings. Ako už názov prezrádza, balík slúži na zmenu záhlaví a piat strán. Pomocou fancyheadings môžeme jednoduchým spôsobom definovať ľavé, stredné a práve časti záhlaví a piat, ktoré môžu byť navyše aj ozdobené čiarami.

V preambuli dokumentu uvedieme okrem \usepackage{fancyheadings} aj príkaz \pagestyle{fancy}. Príkazy

	\lhead{text}
	\chead{text}
	\rhead{text}

určujú, aký text sa vytlačí v záhlaví po rade v ľavej časti, v strede a v pravej časti a použijú sa v preambuli dokumentu. Analogický význam pre pätu strany majú príkazy

	\lfoot{text}
	\cfoot{text}
	\rfoot{text}

Hrúbky čiar, ktoré sa zobrazia hneď pod záhlavím a nad pätou strany je možné nastaviť zavolaním príkazov

	\setlength{\headrulewidth}{hrúbka čiary pod záhlavím}
	\setlength{\footrulewidth}{hrúbka čiary nad pätou&}

Nastavenie hrúbky na 0 pt potlačí vykreslenie odpovedajúcej čiary. Použitie týchto príkazov ukazuje jednoduchý príklad:

	\documentclass[12pt]{article}
	\usepackage{slovak,fancyheadings,a4wide}

	\pagestyle{fancy}

	\lhead{E-mail od kudlicka@prima.sk}
	\chead{}
	\rhead{}

	\lfoot{\today}
	\cfoot{}
	\rfoot{\thepage}

	\setlength{\headrulewidth}{0.4pt}

	\setlength{\footrulewidth}{0.4pt}

	\begin{document}
	\begin{verbatim}

	Nejaký text...

	\end{verbatim}
	\end{document}

Pri tomto príklade ešte chvíľu ostaneme a upravíme ho tak, aby sa namiesto čísla strany vytlačil text v tvare číslo strany/počet strán. Použijeme balík lastpage a namiesto \rfoot{\thepage} príkaz

	\rfoot{\thepage/\pageref{LastPage}}

Je zrejmé, že zdrojový súbor sa musí v tomto prípade kompilovať dvakrát.

Ak chceme zmeniť štýl len na aktuálnej strane, použijeme príkaz \thispagestyle{štýl}. Pri obojstrannej tlači (pri použití triedy book, alebo nepovinného parametru twoside príkazu \documentclass pri triedach article a report) väčšinou vyžadujeme iné záhlavia a päty pre ľavé (párne) a iné pre pravé (nepárne) strany. Spôsob, akým sa definujú, si vysvetlíme na príklade príkazu \lhead.

	\lhead[textL]{textP}

vytlačí v ľavej časti záhlavia textL, ak je aktuálna strana ľavá (párna) a textP, ak je pravá (nepárna). (Ak voliteľný parameter nie je uvedený, použije sa textP na ľavých aj pravých stranách.) Analogicky sa definujú aj ostatné časti záhlaví a piat.


Autor: Ján Kudlička. Vyšlo v Netáčiku.