From 2257828845c52e3a8b6becfa850d1eafdf6f20e5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 21 Dec 2012 17:17:30 +0000 Subject: new doc package cstex (20dec12) git-svn-id: svn://tug.org/texlive/trunk@28595 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/cstex/prvni.tex | 1562 +++++++++++++++++++++++++++++++++ 1 file changed, 1562 insertions(+) create mode 100644 Master/texmf-dist/doc/cstex/prvni.tex (limited to 'Master/texmf-dist/doc/cstex/prvni.tex') diff --git a/Master/texmf-dist/doc/cstex/prvni.tex b/Master/texmf-dist/doc/cstex/prvni.tex new file mode 100644 index 00000000000..a4586a93708 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/prvni.tex @@ -0,0 +1,1562 @@ + +% První setkání s TeXem +%%%%%%%%%%%%%%%%%%%%%%%% +% (C) 1999 Petr Olšák + +% format: csplain, kódování ISO-8859-2 + +% Tento dokument můžete vytisknout pro vlastní potřeby nebo jej +% elektronicky dále šířit v nezměněné podobě jako soubory prvni.tex, +% prvni.ps a prvni.pdf + +\chyph +\magnification\magstep1 +\advance\vsize by\baselineskip + +%% Varianta pro pdftex +\ifx\pdfoutput\undefined + \def\zalozka#1{} +\else + \def\zalozka#1{% + \global\advance\secnum by1 + \pdfdest num\secnum fitbh + {\let~=\space \def\TeX{TeX}% + \pdfoutline goto num\secnum count 0 {#1}}} + \pdfinfo{ + /Author (Petr Olsak) + /CreationDate (D:20121212) + /ModDate (D:20121212) + /Creator (TeX) + /Producer (pdfTeX) + /Title (Prvni setkani s TeXem) + /Subject (manual) + /Keywords (TeX) } + \pdfcatalog{/PageMode /UseOutlines} + \pdfcompresslevel=9 +\fi + +%% Vzhled dokumentu +\parindent=11pt +\lineskiplimit=-4pt +\emergencystretch=2em +\raggedbottom + +%% Deklarace registrů +\newcount\bibnum +\newcount\footnum +\newcount\secnum + +% Fonty +\input cpalatin +\font\tentt=cstt10 \hyphenchar\tentt=-1 +\font\cmit=csti10 +\font\mflogo=logo10 +\font\showtt=cstt9 +\font\tencsr=csr10 +\font\titulfont=\fontname\tenbf\space scaled\magstep2 +\font\bigfont=\fontname\tenbf\space scaled\magstep5 +\font\scriptm=\fontname\tenrm\space at7pt +\scriptfont0=\scriptm + +%% Základní makra +\def\sekce #1\par{\removelastskip\penalty0\zalozka{#1}\nobreak\bigskip + \noindent{\titulfont #1}\par\nobreak\medskip} +\def\bod{\item{$\triangleright$}} +\def\bib{\parindent=22pt\global\advance\bibnum by1 + \par\hang\indent\llap{[\the\bibnum]\hskip11pt}\ignorespaces} + +%% Čárka místo tečky v matematice: +\mathcode`\.="013B +\def\doteq{\buildrel\hbox{.}\over=} + +%% Verbatim prostředí \begtt...\endtt, "...". +{\obeyspaces \gdef\activespace{\obeyspaces\let =\ }} +\def\setverb{\def\do##1{\catcode`##1=12}\dospecials} +\def\begtt{\medskip\hbox\bgroup\vrule\vbox\bgroup\hrule + \smallskip\bgroup \setverb \catcode`\"=12 \activespace + \baselineskip=.9\baselineskip + \def\par{\leavevmode\strut\endgraf} + \obeylines \startverb} +{\obeylines \catcode`\|=0 \catcode`\\=12 + |gdef|startverb#1^^M#2\endtt{% + |showtt#2|egroup|smallskip|hrule|egroup|vrule|egroup|medskip}} +\def\"{"} \catcode`\"=13 +\def"{\leavevmode\hbox\bgroup\let"=\egroup\setverb\obeyspaces\tt} + +%% Prostředí ukázek +\def\beguk{\medskip\hbox\bgroup\vrule\vbox\bgroup\hrule\medskip + \leftskip=\parindent \rightskip=\parindent \relax} +\def\enduk{\medskip\hrule\egroup\vrule\egroup\medskip} + +%% Tabulky +\def\begtable{$$\vbox\bgroup + \let\par=\cr \obeylines \halign\bgroup &##\hfil\qquad\cr} +\def\endtable{\egroup\egroup$$} +\abovedisplayskip=\abovedisplayshortskip +\def\tabline{\noalign{\smallskip\hrule}} +\def\.{\hphantom{0}} + +%% Výčtová prostředí +\def\begitems{\medskip\bgroup} +\def\enditems{\par\egroup\medskip} + +%% Loga +\def\LaTeX{L\kern-.36em\raise.5ex\hbox{\sevenrm A}\kern-.12em\TeX} +\def\CS{$\cal C\kern-.1667em\lower.5ex\hbox{$\cal S$}\kern-.075em $} +\def\mf{{\mflogo META}\-{\mflogo FONT}} +\def\AMS{$\cal A\kern-.166em\lower.5ex\hbox{$\cal M$}\kern-.075em S$} +\def\twoe{$2_{\textstyle\varepsilon}$} + +%% Poznámky pod čarou +\let\orifootnote=\footnote +\def\footnote{\global\advance\footnum by1\orifootnote{$^{\the\footnum}$}} + +%% Pomocné +\def\url#1{{\tt #1}} +\let\pp=\noindent +\let\,=\thinspace + +%% Titulní strana +\bgroup \nopagenumbers \pageno=0 +\null\vfill +{\baselineskip=40pt +\centerline{\bigfont První setkání s~\TeX{}em} +\centerline{\bigfont Petr Olšák} +} +\vskip 0pt plus2fill\break +\parindent=0pt \parskip=\bigskipamount +\null\vfil +Autor programu \TeX{} je profesor Donald Knuth. +\par +\TeX{} je ochranná známka American Mathematical Society. +\par +Ostatní v manuálu použité názvy programových produktů, firem +apod. mohou být ochrannými známkami nebo registrovanými ochrannými +známkami příslušných vlastníků. +\vfill +Copyright $\copyright$ RNDr. Petr Olšák, 1999, 2012 +\par +Tento text si můžete vytisknout pro vlastní potřeby. Je k~dispozici +společně s~balíkem \CS\TeX{} na +\url{ftp://math.feld.cvut.cz/pub/cstex/doc} +ve zdrojovém textu ({\tt prvni.tex}), PostScriptu ({\tt prvni.ps}) a ve +formátu PDF ({\tt prvni.pdf}). Můžete jej také distribuovat, ale pouze +v~nezměněné elektronické podobě. +\bigskip\break +\egroup +\pageno=1 + + + +\sekce Úvod +%%%%%%%%%%% + +Tento manuál je koncipován jako \uv{první seznámení s~programem \TeX{}% + \footnote{Název \TeX{} se čte \uv{tech}, nikoli \uv{teks}.} +na jeden večer}. Měl by umožnit začátečníkovi porozumět +základním principům \TeX{}u. Manuál obsahuje ukázku jednoduchého dokumentu, +který by si měl čtenář sám přepsat do svého počítače a na něm \TeX{} +vyzkoušet. Je to dobrý první krok do pestrého světa tohoto programu plného +zajímavých možností. Ukázka by měla též naznačit užitečnost dobrého návrhu +značkování vstupního textu tak, aby byl oddělen obsah dokumentu od jeho +formy. Předvedená ukázka také ilustruje základní principy rozšíření \TeX{}u +(plain nebo \LaTeX). Tím může uživatel hned na prvním dokumentu rozhodnout, +které \TeX{}ové rozšíření je bližší jeho srdci a podle toho vybrat další +literaturu pro doplňující studium. + +Předpokládáme, že čtenář má určité důvody proč použít \TeX{}, takže se zde +nebudeme zdržovat výčtem jeho výhod, rozepisovat obšírně jeho historii a +nebudeme polemizovat o~užitečnosti či neužitečnosti dávkového či +interaktivního systému na přípravu sazby. + + +\sekce \TeX\ a jeho okolí +%%%%%%%%%%%%%%%%%%%%%%%%% + +\TeX{} je formátor. Je to program, kterému předložíme vstupní text +dokumentu v~\uv{holé} textové podobě doplněný textovými +značkami, které vymezují strukturu dokumentu nebo dávají \TeX{}u pokyny +o~způsobu formátování dokumentu. Bývá obvyklé (ale není to nutné) +pojmenovat tento soubor s~použitím přípony {\tt.tex}, například +\hbox{\tt dokument.tex}. Na výstupu pak po zpracování \TeX{}em dostaneme +tzv.~{\tt dvi} soubor%, + \footnote{Odvozeno z~anglického \uv{device independent}~-- na + zařízení nezávislý}, +který obsahuje definitivní informace o~použitých fontech a o~umístění +jednotlivých znaků na stránce. Tento soubor má název odvozený od názvu +vstupního souboru, ale má příponu {\tt.dvi}% + \footnote{Často se používá modifikace \TeX{}u, která vytváří přímo PDF + soubor.}. +Lze jej prostřednictvím +vhodného programu prohlédnout na obrazovce (vidíme, jak bude dokument +skutečně vypadat), nebo jej vytisknout na tiskárně. + +\TeX{} tedy čte na svém vstupu soubor s~dobře definovanou syntaxí jazyka +značek a na výstupu je rovněž soubor s~úplným popisem sazby. \TeX{} +jako takový je nezávislý na operačním systému. Vývoj samotného \TeX{}u +je zastaven, takže pro uživatele nehrozí nebezpečí vzniku dalších +nekompatibilních verzí. Další programy \uv{okolo \TeX{}u} tvoří +dohromady tzv.~implementaci \TeX{}u a umožní s~\TeX{}em rozumným +způsobem pracovat. + +Začínající uživatel se samozřejmě hlavně ptá po způsobu, jak může +v~konkrétním operačním systému s~konkrétní \TeX{}ovou implementací +s~tímto programem pracovat, jak jej spustit, jakými tlačítky se ovládá +textový editor, jaké nabídky jsou k~dispozici, co nad kterým obrázkem udělá +myš. Ptá se tedy po uživatelském rozhraní. Jednotlivé manuály o~\TeX{}u +tradičně odkazují na tzv.~\uv{místní příručku} (Local Guide), která by +měla toto rozhraní popisovat. Tato příručka je závislá na použitém +operačním systému, na použité implementaci \TeX{}u, na vybraném textovém +editoru a někdy též na administrátorovi systému, který konfiguruje některé +věci specificky pro větší pohodlí uživatelů. Ani v~tomto manuálu nejsou +uvedeny podrobnosti o~uživatelském rozhraní. + +V~graficky orientovaných operačních systémech je většinou možné otevřít +současně v~jednom okénku textový editor, ve kterém uživatel píše nebo +modifikuje vstupní text a ve vedlejším okénku prohlížeč výstupního +{\tt dvi} souboru. Po modifikaci vstupního textu a spuštění \TeX{}u +(nejlépe klávesovou zkratkou přímo z~editoru) se během pár sekund +projeví změna v~prohlížeči výsledného dokumentu. + +Textový editor, ve kterém připravujeme nebo modifikujeme vstupní texty +dokumentů, nesmí ukládat na disk žádné skryté formátovací informace +implementované jen pro tento editor (jako například změna fontu, měkké +konce řádku apod.). To dělají tzv.~textové procesory, které v~případě +práce s~\TeX{}em většinou nepoužíváme. + +Zvyklosti ve značkování dokumentu jsou vesměs závislé na použitém {\it +formátu} \TeX{}u, který modifikuje jeho chování. Říkáme, že je +dokument napsán ve formátu {\it \LaTeX}, pokud je někde na začátku +vstupního textu dokumentu uvedena značka "\documentclass" nebo +"\documentstyle". Pokud tam tuto značku nenajdeme, můžeme +předpokládat, že je dokument napsán ve formátu {\it plain}, v~případě +česky psaného dokumentu pak ve formátu {\it csplain}. Tento manuál je +například napsán ve formátu csplain a je uložen v~souboru +{\tt prvni.tex}. Může se stát, že nějaký dokument je napsán ve formátu +\AMS\TeX{} nebo v~jiném méně používaném formátu. Tím se ale zde nebudeme +zabývat. Rozdíl mezi plainem a \LaTeX{}em a smysl použití formátů vyplyne +až z~dalšího textu. + +Následující tabulka ukazuje způsoby spuštění \TeX{}u. Předpokládáme, +že je k~dispozici operační systém, který umožňuje uživateli zadávat +pokyny z~příkazového řádku. Tím nevylučujeme, že nelze některé +popisované činnosti implementovat do nějaké uživatelské nabídky +konkrétního uživatelského rozhraní. Uvažujme, že je +vstupní text dokumentu připraven v~souboru {\tt dokument.tex}. + +\begtable + příkazový řádek & komentář + \tabline + "tex dokument" & anglický dokument, formát plain + "csplain dokument" & český nebo slovenský dokument, formát csplain + "pdfcsplain dokument" & český, slovenský dokument s výstupem do PDF + "latex dokument" & formát \LaTeX, jazyk je deklarován v~dokumentu +\endtable + +Všimneme si, že v~příkazovém řádku píšeme za jméno formátu název vstupního +souboru a že příponu {\tt.tex} nemusíme psát. Dobře instalovaná +implementace \TeX{}u by měla podle jména formátu spustit \TeX{} modifikovaný +právě tímto formátem. + +Pokud nemáme ve své implementaci \TeX{}u formát csplain, je to špatné +znamení. Nebudeme totiž schopni zpracovat ani tento manuál ani +ukázku, která je v~něm obsažena. V~takovém případě lze doporučit +poohlédnout se po \CS\TeX{}u, který najdeme například na +\url{http://petr.olsak.net/cstex.html}. + +K~prohlédnutí dokumentu se používají různé programy (tzv.~dvi~prohlížeče)% + \footnote{Nebo PDF prohlížeče při výstupu sazby do PDF}. +Volba prohlížeče závisí na použitém operačním systému a na implementaci +\TeX{}u. V~UNIXu je nejčastější program {\tt xdvi} (stačí napsat +"xdvi dokument"). V~MS Windows se používá {\tt windvi}, {\tt dviwin} +nebo {\tt yapp}. V~DOSu se setkáme nejčastěji s~programem {\tt dviscr} +z~implementace em\TeX{}. Pro OS/2 má em\TeX{} \uv{okenní} variantu +prohlížeče {\tt dvipm}. + +Na PostScriptovou tiskárnu vytiskneme {\tt dvi} dokument programem {\tt dvips}, +příkazový řádek: "dvips -Ptiskarna dokument". +Při výstupu do PDF souboru stačí vytisknout dokument z PDF prohlížeče. + + +\sekce Jdeme na to +%%%%%%%%%%%%%%%%%% + +Nejprve zkusíme v~nějakém textovém editoru vytvořit soubor {\tt pokus.tex}, +který obsahuje zkušební větu: + +\begtt %-------------------------------------------------------------- +Ahoj světe! +\bye +\endtt %-------------------------------------------------------------- + +Pokud zpracujeme tento soubor \TeX{}em s~formátem csplain +(připomínáme, že je možné použít povel {\tt csplain pokus}), +dostaneme výstupní soubor {\tt pokus.dvi}. Navíc +\TeX{} uloží informaci o~zpracování do souboru {\tt pokus.log}. Výsledný +{\tt dvi} soubor si můžeme prohlédnout prohlížečem. Dostaneme +očekávaný výsledek: + +\beguk %------------------------------------------------------------- +\tencsr Ahoj světe! +\enduk %------------------------------------------------------------- + +\pp Přitom dole na stránce je ještě vytištěno číslo strany:~1. +Povelem {\tt pdfcsplain pokus} dostaneme tentýž výsledek, ale +výstupem je PDF soubor. + +Pokud zkusíme tentýž soubor zpracovat \TeX{}em s~formátem plain +(příkazový řádek {\tt tex pokus}), výstup bude zmršený: \uv{Ahoj svte!}. +Vidíme, že textový soubor s~akcenty nelze jednoduše vnutit originálnímu +americkému \TeX{}u, ale místo formátu plain je potřeba použít modifikovaný +csplain. + +Kdybychom chtěli tentýž soubor zpracovat \TeX{}em s~formátem \LaTeX{} +(krátce říkáme, že soubor zpracováváme \LaTeX{}em), obdržíme chybové +hlášení: + +\begtt %-------------------------------------------------------------- +! LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.1 A + hoj světe! +? +\endtt %-------------------------------------------------------------- + +Vidíme tedy, že soubor není vhodně připraven ke zpracování \LaTeX{}em. +Chybí mu "\begin{document}". Později ukážeme, že mu chybí více věcí, ale +v~tuto chvíli raději zůstaneme u~csplainu. Komunikaci s~\TeX{}em při +chybovém hlášení ukončíme odesláním znaku {\tt x}. Chceme-li, aby +\TeX{} chybu ignoroval a pokračoval ve zpracování dokumentu, stačí na +otazník odpovědět \uv{Enter} (v~tomto příkladě, kdy dokument vhodný +pro csplain chceme zpracovat \LaTeX{}em, se pouze dočkáme další +zavlečené chyby). + +Zkusíme si nyní přepsat do počítače následující poněkud rozsáhlejší +dokument. Soubor nazveme třeba {\tt mujprvni.tex} a vytvoříme jej +libovolným textovým editorem. Pokud je čtenář od přírody \uv{lenivý}, může +se místo zdlouhavého přepisování pokusit najít text ukázky ve vstupním +souboru {\tt prvni.tex} tohoto manuálu a přenést jej do svého souboru +{\tt mujprvni.tex} jako blok v~textovém editoru. + +Možná nám může připadat část označená jako \uv{oblast definic} hodně +nepochopitelná, skoro jako porucha na lince. Přesto se zatím pokusíme +překonat odpor k~této poruše a důsledně všechny znaky přepíšeme. +\TeX{} se nám za to odvděčí silnými možnostmi, které budeme postupně +odhalovat. + +Nemusíme se obtěžovat přepisováním textů, schovaných za znakem "%", protože +tímto znakem je zahájen komentář, který končí koncem řádku a který je při +zpracování \TeX{}em ignorován. V~každém případě ale nevynechávejme prázdné +řádky v~ukázce a věnujme pozornost obsahu části označené jako \uv{vlastní +text}, kde jsou vyjmenovány základní jevy, se kterými se při pořizování +textů pro \TeX{} budeme neustále setkávat. + +\begtt %============================================================= +%%%%%%%% Zde začíná "oblast definic" pro tento dokument %%%%%%%%%%% + +\chyph % inicializace českého dělení slov v csplainu +\font\titulfont=\fontname\tenbf\space scaled \magstep2 % větší font +\def\bod{\item{$\bullet$}} % definice zkratky \bod pro výčet +\def\nadpis#1\par{ % definice nadpisu: + \removelastskip\bigskip % odmaže poslední vert. mezeru a přidá vlastní + \indent{\titulfont #1} % odsazený text nadpisu větším fontem + \par\nobreak\medskip} % konec řádku, zakázaný zlom, menší mezera +\let\itemskip=\medskip % kolem výčtu prvků bude menší mezera \medskip + +%%%%%%%% Zde začíná "vlastní text" dokumentu %%%%%%%%%%%%%%%%%%%%%%%% + +\nadpis Můj první dokument + +Zkouším napsat první text v~\TeX u. Tento odstavec musí být +tak dlouhý, aby bylo vidět, že se rozlomil aspoň na dva řádky. + +Jednotlivé odstavce oddělujeme od sebe prázdným řádkem. Prázdnými řádky +vůbec nešetříme, protože zvyšují přehlednost zdrojového textu. +Vyzkoušíme si nyní několik věcí. + +\itemskip +\bod Budeme používat české \uv{uvozovky}, které se liší od ``anglických''. + Uvědomíme si, že použití "těchto znaků" je úplně špatně! +\bod Rozlišujme mezi spojovníkem (je-li), pomlčkou ve větě~-- + a dlouhou pomlčkou---ta se používá v~anglických dokumentech. +\bod Předpokládáme, že každý dokáže rozeznat 1 (jedničku) od l + (písmene el) a 0 (nulu) od O~(písmene~O). +\bod Zkusíme přepnout do {\bf polotučného písma}, nebo do + {\it kurzívy}. Také vyzkoušíme {\tt strojopis}. +\bod Všimneme si, že ve slovech grafika, firma, apod. se písmena + f a i automaticky proměnila v~jediný znak fi (srovnáme to + s~nesprávným f\/i). +\bod Mezery mezi písmeny jsou automaticky vyrovnávány podle tvaru písmen. + Ve slově \uv{Tento} je například písmeno~e těsněji přisazeno + k~písmenu~T, aby se mezery mezi písmeny opticky jevily stejnoměrné. +\bod Vypravíme se na malou exkurzi do matematiky: $a^2 + b^2 = c^2$. + Zjistíme, že číslo -1 je zde napsáno špatně (prokletý spojovník), + zatímco správně má být $-1$. +\bod Protože \% uvozuje komentář a \$ přepíná do matematické sazby, + musíme před ně napsat zpětné lomítko, chceme-li je dostat do dokumentu. +\itemskip + +\nadpis Závěr + +To by pro začátek stačilo. Příkazem {\tt\char`\\bye} ukončíme své pokusy. +\bye +\endtt %============================================================= + +Po zpracování tohoto dokumentu formátem csplain si můžeme prohlédnout +prohlížečem {\tt dvi} souboru následující výsledek: + +\beguk %============================================================= +\parindent=20truept +\baselineskip=12truept +\font\tenbf=csbx10 at10truept \font\tenit=csti10 at10truept +\font\tentt=cstt10 at10truept +\font\tenrm=csr10 at10truept \tenrm +\font\symbol=cmsy10 at10truept +\font\mmi=cmmi10 at10truept \font\sevenrm=csr7 at7truept +\textfont0=\tenrm \scriptfont0=\sevenrm +\textfont1=\mmi \textfont2=\symbol +\font\titulfont=csbx10 scaled\magstep1 % větší font +\def\bod{\item{$\bullet$}} % definice zkratky \bod pro výčet +\def\nadpis#1\par{ % definice nadpisu: + \removelastskip\bigskip % odmaže poslední vert. mezeru a přidá vlastní + \indent{\titulfont #1} % odsazený text nadpisu větším fontem + \par\nobreak\medskip} % konec řádku, zakázaný zlom, menší mezera +\bigskipamount=12truept \medskipamount=6truept +\let\itemskip=\medskip % kolem výčtu prvků bude menší mezera \medskip + +\nadpis Můj první dokument + +Zkouším napsat první text v~\TeX u. Tento odstavec musí být +tak dlouhý, aby bylo vidět, že se rozlomil aspoň na dva řádky. + +Jednotlivé odstavce oddělujeme od sebe prázdným řádkem. Prázdnými řádky +vůbec nešetříme, protože zvyšují přehlednost zdrojového textu. +Vyzkoušíme si nyní několik věcí. + +\itemskip +\bod Budeme používat české \uv{uvozovky}, které se liší od ``anglických''. + Uvědomíme si, že použití \"těchto znaků\" je úplně špatně! +\bod Rozlišujme mezi spojovníkem (je-li), pomlčkou ve větě~-- + a dlouhou pomlčkou---ta se používá v~anglických dokumentech. +\bod Předpokládáme, že každý dokáže rozeznat 1 (jedničku) od l + (písmene el) a 0 (nulu) od O~(písmene~O). +\bod Zkusíme přepnout do {\bf polotučného písma}, nebo do + {\it kurzívy}. Také vyzkoušíme {\tt strojopis}. +\bod Všimneme si, že ve slovech grafika, firma, apod. se písmena + f a i automaticky proměnila v~jediný znak fi (srovnáme to + s~nesprávným f\/i). +\bod Mezery mezi písmeny jsou automaticky vyrovnávány podle tvaru písmen. + Ve slově \uv{Tento} je například písmeno~e těsněji přisazeno + k~písmenu~T, aby se mezery mezi písmeny opticky jevily stejnoměrné. +\bod Vypravíme se na malou exkurzi do matematiky: $a^2 + b^2 = c^2$. + Zjistíme, že číslo -1 je zde napsáno špatně (prokletý spojovník), + zatímco správně má být $-1$. +\bod Protože \% uvozuje komentář a \$ přepíná do matematické sazby, + musíme před ně napsat zpětné lomítko, chceme-li je dostat do dokumentu. +\itemskip + +\nadpis Závěr + +To by pro začátek stačilo. Příkazem {\tt\char`\\bye} ukončíme své pokusy. +\enduk %============================================================= + +Všimněme si, že v~příkladu je důsledně oddělena forma od obsahu dokumentu. +V~části označené \uv{vlastní text} jsou použity značky "\nadpis", +"\bod" a "\itemskip", které ohraničují logické části dokumentu (vymezení +nadpisu, uvedení další položky ve výčtu prvků, obklopení skupiny výčtu prvků) +a nepopisují žádné konkrétní formátovací informace (volba fontu, velikost +fontu, velikost mezer nad a pod nadpisem, tvar puntíku ve výčtu prvků +apod.). + +Značky vymezující strukturu dokumentu jsou definovány v~části \uv{oblast +definic}. Zde je řečeno, jaký bude mít nadpis font, jak bude +v~textu umístěn a jak bude vypadat formátování výčtu prvků. Podrobnější +rozbor těchto definic uvedeme za chvíli. + +Toto oddělení formy od obsahu se v~mnoha případech začátečníkům nedaří. +Přímo v~textu jejich dokumentů se vyskytují značky jako "\vskip12mm" +(vertikální mezera 12\,mm), "\vfill\break" (vynucené ukončení strany) a mnoho +dalších nešvarů. My se pokusíme hned z~počátku se takovým věcem pokud možno +vyhnout. V~sekci \uv{změna vzhledu dokumentu} uvidíme, že se nám to bohatě +vyplatí. + + +\sekce Vysvětlení použitých značek v~příkladu +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Jednotlivé značky, které řídí formátování a vymezují strukturu dokumentu +jsou vesměs ve tvaru "\slovo". Tyto značky se nazývají +{\it řídicí sekvence\/} a někdy též budeme hovořit o~{\it příkazech}, +protože jimi přikazujeme, aby \TeX{} něco vykonal. + +Řídicí sekvence v~příkladu rozdělíme na dvě skupiny. 1.~ty, co jsou +definovány v~samotném \TeX{}u nebo v~použitém formátu (v~našem případě +ve formátu {\tt csplain}). 2.~řídicí sekvence, které jsme definovali sami. + +Začneme rozborem druhé skupiny řídicích sekvencí: + +\begitems +\bod "\nadpis" je sekvence, která za sebou očekává text nadpisu a pak + prázdný řádek. +\bod "\titulfont" je přepínač pro větší velikost fontu pro nadpis. + Je definován na řádku začínajícím příkazem "\font" a použit v~definici + řídicí sekvence "\nadpis". +\bod "\bod" je sekvence, která uvozuje položku ve výčtu prvků. Promění se + v~nějakou grafickou realizaci zarážky (zde puntík) a způsobí odsazení + textu položky. +\bod "\itemskip" vytvoří vertikální mezeru, která oddělí výčet prvků + od ostatního textu. Použije se na začátku i na konci výčtu. +\enditems + +Ostatní řídicí sekvence jsou definovány v~použitém formátu nebo přímo +zabudovány v~\TeX{}u. Uživatel se s~nimi bude postupně seznamovat +studiem vhodné literatury. Zde uvedeme velmi stručně jen ty nejdůležitější +řídicí sekvence, abychom usnadnili pochopení příkladu. + +\begitems +\bod "\chyph". Tato řídicí sekvence inicializuje české vzory dělení slov a + je definována pouze ve formátu csplain. V~případě českých textů + bychom ji nikdy neměli vynechat! Analogicky "\shyph" inicializuje + slovenské vzory dělení slov. Bez těchto příkazů \TeX{} pracuje + implicitně s~anglickými vzory dělení. +\bod "\font" zavede z~instalace \TeX{}u do dokumentu další font. + Struktura parametrů příkazu bude vysvětlena v~sekci o~fontech. +\bod "\def" definuje novou řídicí sekvenci (zde "\bod" a "\nadpis"). + Za řídicí sekvencí může následovat formální popis parametrů nové + sekvence a pak následuje ve složených závorkách tělo definice. + V~ní je popsáno, co se při použití nové řídicí sekvence má vykonat. +\bod "\item" zahájí výčtovou položku (odsazením textu) a převezme + za sebou ve složených závorkách parametr, který popisuje vzhled puntíku. +\bod "\bullet" vytvoří v~matematickém módu černý puntík: $\bullet$. +\bod "\bigskip" vytvoří vertikální mezeru velikosti jednoho řádku a + "\medskip" velikosti poloviny řádku. "\indent" odsadí další text + o~velikost odstavcové zarážky. +\bod Řídicí sekvence "\par" je explicitní ukončení odstavce. \TeX{} ji + interně vytváří v~místě každého prázdného řádku. Ve formálním popisu + parametru za "\def\nadpis" má ale "\par" pouze vymezovací + účinek. Formální popis parametru v~našem příkladě čteme takto: + nově definovaná řídicí sekvence "\nadpis" převezme za sebou text + až po první výskyt "\par" (tedy až po první výskyt prázdného řádku) + a uloží jej do \uv{proměnné} s~označením "#1". +\bod "\let" čteme česky nechť. Tento příkaz ztotožní význam nové + řídicí sekvence (v~našem příkladě "\itemskip") s~předlohou (v~tomto + příkladě "\medskip"). +\enditems + +V~naší ukázce jsme použili též některé speciální \TeX{}ovské znaky. +Vysvětlíme si nyní stručně jejich význam. + +\begitems +\bod Znak "~" znamená nedělitelnou mezeru. Je zde použita za neslabičnými + předložkami a před jednopísmennými ukázkami, aby se v~těchto místech + nerozdělil řádek. Při pořizování textu nemusíme psát za neslabičnými + předložkami vlnku \uv{ručně}. Vlnky tam lze doplnit později jednoduchými + programy, které bývají součástí \TeX{}ovských instalací. +\bod Znaky "{ }" mají v~\TeX{}u tři mírně odlišné významy. +\itemitem{1.} Obklopují těla definic za příkazem "\def", jak již bylo řečeno. +\itemitem{2.} Obklopují parametry některých řídicích sekvencí (viz + například text {\tt uvozovky}, který je parametrem řídicí sekvence + "\uv", nebo text "$\bullet$", který je parametrem řídicí sekvence + "\item". +\itemitem{3.} Samotné znaky "{ }" vymezují jisté skupiny, ve kterých je + veškeré přiřazení a nastavení lokální. Skupiny se často používají pro + vymezení platnosti přepínačů písma (viz "\bf", "\it", "\tt" a + "\titulfont"). +\item{} Závorky "{ }" musí vzájemně párovat, což je důležité zejména ve + vymezovacích významech~(ad~1 a~2). Proto třeba tělo definice + "\bod" obsahuje text "\item{$\bullet$}" a je ukončeno až druhou + závorkou~"}". +\bod Znak "%" uvozuje komentář až do konce řádku. +\bod Znak "$" přepíná do {\it matematického módu} a zpět. V matematickém + módu \TeX{} sestavuje sazbu poněkud odlišným způsobem (všimneme + si, že například proměnné $a$, $b$ jsou v matematickém módu + automaticky sázeny kurzívou). +\bod Znak "^" v~matematickém módu uvozuje horní index (exponent). +\enditems + +\sekce Změna vzhledu dokumentu +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Předvedeme, v~čem spočívá výhoda oddělení obsahu +dokumentu od formy. Předpokládejme, že nám nějaký zkušenější kolega +pomůže s~přípravou definic pro náš dokument. Předpokládejme dále, že onen +kolega má na věc poněkud jiný typografický názor a začne věci předělávat. +V~editoru modifikuje definice a ve vedlejším okénku v~prohlížeči se průběžně +mění náš první dokument skoro k~nepoznání. Přitom kolega +{\it vůbec nemusí\/} zasáhnout do vlastního textu dokumentu. + +Především se mu nelíbí rodina fontů Computer Modern, která je +v~\TeX{}u implicitně nastavena. Mnoho instalací \TeX{}u obsahuje +nástroje pro práci s~dalšími, zejména PostScriptovými, fonty. Máme-li +takovou instalaci, můžeme napsat na začátek dokumentu třeba +"\input cbookman" a máme celý dokument v~rodině Bookman. Příkaz "\input" +zavádí do dokumentu externí soubor definic, zde soubor s~názvem {\tt +cbookman.tex}. Tento soubor obsahuje příkazy "\font" na zavedení +skupiny fontů Bookman a nastaví je jako implicitní. + +Kolega se dále rozhodl vkládat mezi každý odstavec drobnou vertikální mezeru +a místo puntíků pro výčty chce použít čtverečky, které ve větší velikosti +zařadí i do nadpisů. Konečně velikost fontu pro nadpis se mu zdá příliš +velká (místo "\magstep2" v~řádku "\font" použije \uv{menší} "\magstep1"). +Výsledek jeho snažení v~\uv{oblasti definic} dopadne třeba takto: + +\begtt %============================================================= +\chyph % inicializace českého dělení slov v csplainu +\magnification\magstep1 % celý dokument bude 1,2 krát větší +\input cbookman \setsimplemath % použité písmo: Bookman i v matematice +\font\titulfont=\fontname\tenbf\space scaled \magstep1 % větší font +\newdimen\indskip \indskip=15pt % výčty budou odsazeny 15pt +\def\ctverecek#1{\noindent % čtvereček proměnné velikosti v místě \indskip + \hbox to\indskip{\vrule height#1pt depth0pt width#1pt\hss}} +\def\bod{\par\hangindent=\indskip \ctverecek{4}} % definice zkratky \bod +\def\nadpis#1\par{ % definice nadpisu: + \removelastskip\bigskip % odmaže poslední vert.mezeru a přidá vlastní + \ctverecek{7}{\titulfont #1} % nadpis odsazený čtverečkem + \par\nobreak} % konec řádku, zakázaný zlom, žádná mezera +\parskip=\medskipamount % mezi odstavci bude mezera jako \medskip +\parindent=0pt % odstavce nebudou odsazeny zarážkou +\let\itemskip=\relax % žádné další mezery mezi výčty +\endtt %============================================================= + +Náš dokument vypadá pak následovně: + +\beguk %============================================================= +\input cbookman % použité písmo: Bookman +\font\mmi=\fontname\tenit +\font\sevenrm=\fontname\tenrm\space at 7pt +\textfont0=\tenrm \scriptfont0=\sevenrm +\textfont1=\mmi + +\font\titulfont=\fontname\tenbf\space scaled \magstep1 % větší font +\newdimen\indskip \indskip=15pt % výčty budou odsazeny 15pt +\def\ctverecek#1{\noindent % čtvereček o proměnné velikosti v místě \indskip + \hbox to\indskip{\vrule height#1pt depth0pt width#1pt\hss}} +\def\bod{\par\hangindent=\indskip \ctverecek{4}} % definice zkratky \bod +\def\nadpis#1\par{ % definice nadpisu: + \removelastskip\bigskip % odmaže poslední vert. mezeru a přidá vlastní + \ctverecek{7}{\titulfont #1} % nadpis odsazený čtverečkem + \par\nobreak} % konec řádku, zakázaný zlom, žádná mezera +\parskip=\medskipamount % mezi odstavci bude mezera jako \medskip +\parindent=0pt % odstavce nebudou odsazeny zarážkou +\let\itemskip=\relax % žádné další mezery mezi výčty + +\nadpis Můj první dokument + +Zkouším napsat první text v~\TeX u. Tento odstavec musí být +tak dlouhý, aby bylo vidět, že se rozlomil aspoň na dva řádky. + +Jednotlivé odstavce oddělujeme od sebe prázdným řádkem. Prázdnými řádky +vůbec nešetříme, protože zvyšují přehlednost zdrojového textu. +Vyzkoušíme si nyní několik věcí. + +\itemskip +\bod Budeme používat české \uv{uvozovky}, které se liší od ``anglických''. + Uvědomíme si, že použití \"těchto znaků\" je úplně špatně! +\bod Rozlišujme mezi spojovníkem (je-li), pomlčkou ve větě~-- + a dlouhou pomlčkou---ta se používá v~anglických dokumentech. +\bod Předpokládáme, že každý dokáže rozeznat 1 (jedničku) od l + (písmene el) a 0 (nulu) od O~(písmene~O). +\bod Zkusíme přepnout do {\bf polotučného písma}, nebo do + {\it kurzívy}. Také vyzkoušíme {\tt strojopis}. +\bod Všimneme si, že ve slovech grafika, firma, apod. se písmena + f a i automaticky proměnila v~jediný znak fi (srovnáme to + s~nesprávným f\/i). +\bod Mezery mezi písmeny jsou automaticky vyrovnávány podle tvaru písmen. + Ve slově \uv{Tento} je například písmeno~e těsněji přisazeno + k~písmenu~T, aby se mezery mezi písmeny opticky jevily stejnoměrné. +\bod Vypravíme se na malou exkurzi do matematiky: $a^2 + b^2 = c^2$. + Zjistíme, že číslo -1 je zde napsáno špatně (prokletý spojovník), + zatímco správně má být $-1$. +\bod Protože \% uvozuje komentář a \$ přepíná do matematické sazby, + musíme před ně napsat zpětné lomítko, chceme-li je dostat do dokumentu. +\itemskip + +\nadpis Závěr + +To by pro začátek stačilo. Příkazem {\tt\char`\\bye} ukončíme své pokusy. +\enduk %============================================================== + +Kdyby náš kolega chtěl, implementoval by třeba automatické číslování +položek, automatické číslování nadpisů, generování obsahu a další věci. +Vysvětlení nových řídicích sekvencí, které kolega použil, bohužel +překračuje rámec tohoto úvodního dokumentu. + +Definice lze umístit do jiného souboru než vlastní text dokumentu. +Na začátku dokumentu pak soubor definic načteme příkazem "\input". +Nebo naopak, hlavní bude soubor definic, ze kterého se příkazem "\input" +postupně načítají jednotlivé kapitoly rozsáhlejšího díla. + + +\sekce Stojíme na křižovatce +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +V~předchozím příkladě jsme ilustrovali důležitou vlastnost \TeX{}u~-- +schopnost měnit vzhled dokumentu jen výměnou některých definic. Kromě toho +ale tyto definice také musejí navazovat na úmluvu, jakými značkami bude +autor vymezovat strukturu svého dokumentu. Kdyby autor použil místo značky +"\nadpis" značku "\section", \TeX{} by nám při zpracování dokumentu vynadal: + +\begtt %-------------------------------------------------------------- +! Undefined control sequence. +l.14 \section + Můj první dokument +? +\endtt %-------------------------------------------------------------- + +\pp tedy: nedefinovaná řídicí sekvence. Odpovíme-li na otazník pouhým +stiskem klávesy Enter, \TeX{} tuto sekvenci zcela ignoruje a pracuje dál. +Žádného zvýraznění nadpisu bychom se nedočkali. Je tedy vidět, +že je hodně důležité ujasnit si, jaké značkování struktury dokumentu +použijeme. + +V~této souvislosti si musíme odpovědět jednu důležitou otázku. Chceme se +naučit jazyk definic \TeX{}u na takové úrovni, jako náš imaginární kolega +z~předchozího příkladu? Budeme raději sami kontrolovat každý detail vzhledu +dokumentu prostřednictvím vlastních definic, než abychom přebírali hotová +řešení odjinud? +Pokud na tyto otázky odpovíme \uv{ano}, pak je pro nás +výhodné použít formát plain (pro české a slovenské dokumenty jen mírně +modifikovaný formát csplain), který definuje jen minimum základních +řídicích sekvencí. O~další řídicí sekvence stejně jako o~modifikaci +vzhledu dokumentu podle našich představ se musíme postarat sami.% + \footnote{Po zveřejnění makra OPmac (\url{http://petr.olsak.net/opmac.html}) + uvedená věta o nutnosti plain\TeX{}isty vše si programovat vlastními silami + není zcela pravdivá. + I tito uživatelé mohou použít \uv{hotové řešení} OPmac, ale + mají možnost snadno do jeho maker nahlédnout a upravit si je k obrazu + svému.} +V~takovém případě si můžeme sami rozhodnout, jaké značky pro vymezení +struktury dokumentu použijeme, protože si pro ně nakonec uděláme vlastní +definice. + +Na druhé straně, pokud rádi přebíráme hotová řešení, pokud nechceme +zbytečně pronikat do problematiky jazyka definic \TeX{}u, pokud se +spokojíme s~už připravenými šablonami vzhledu dokumentu (tzv. styly), +pokud jsme ochotni se místo tří set základních příkazů \TeX{}u učit +zhruba tisíc uživatelských značek pro \LaTeX, bude pro nás +výhodné použít raději formát \LaTeX{}. + +\LaTeX{} doporučuje určité značkování struktury dokumentu. Například se +předpokládá členění na kapitoly (značka "\chapter") a na sekce (značka +"\section"). Každý dokument by měl začít záhlavím uvozeným sekvencí +"\documentclass" (u~staré verze \LaTeX{}u se můžeme setkat ještě se +sekvencí "\documentstyle"). Parametrem této sekvence by měl být název +základního stylového souboru (souboru definic upravujících vzhled +dokumentu). Nejčastěji bývá tímto parametrem "book" (formát knihy) +nebo "article" (formát článku). Doplňkové stylové soubory se načítají pomocí +sekvence "\usepackage". Vlastní text dokumentu musí být uzavřen mezi +značkami "\begin{document}" a "\end{document}". Často se vyskytují další +značky "\begin" a "\end" vymezující v~\LaTeX{}u jistá prostředí (například +prostředí pro výčtové položky). + +Vraťme se k~našemu příkladu a přepišme jej do značkování podle \LaTeX{}u. + +\begtt %============================================================= +\documentclass{article} % základní styl bude "odborný článek" +\usepackage[utf8]{inputenc} % je nutno specifikovat kódování dokumentu +\usepackage[T1]{fontenc} % požadujeme LaTeXovské fonty s akcenty +\usepackage[czech]{babel} % voláme styl czech z Babelu +\begin{document} + +\section{Můj první dokument} + +Zkouším napsat první text v~\TeX u. Tento odstavec musí být +tak dlouhý, aby bylo vidět, že se rozlomil aspoň na dva řádky. + +Jednotlivé odstavce oddělujeme od sebe prázdným řádkem. Prázdnými řádky +vůbec nešetříme, protože zvyšují přehlednost zdrojového textu. +Vyzkoušíme si nyní několik věcí. + +\begin{itemize} +\item Budeme používat české \uv{uvozovky}, které se liší od ``anglických''. + Uvědomíme si, že použití "těchto znaků" je úplně špatně! +\item Rozlišujme mezi spojovníkem (je-li), pomlčkou ve větě~-- + a dlouhou pomlčkou---ta se používá v~anglických dokumentech. +\item Předpokládáme, že každý dokáže rozeznat 1 (jedničku) od l + (písmene el) a 0 (nulu) od O~(písmene~O). +\item Zkusíme přepnout do {\bf polotučného písma}, nebo do + {\it kurzívy}. Také vyzkoušíme {\tt strojopis}. +\item Všimneme si, že ve slovech grafika, firma, apod. se písmena + f a i automaticky proměnila v~jediný znak fi (srovnáme to + s~nesprávným f\/i). +\item Mezery mezi písmeny jsou automaticky vyrovnávány podle tvaru písmen. + Ve slově \uv{Tento} je například písmeno~e těsněji přisazeno + k~písmenu~T, aby se mezery mezi písmeny opticky jevily stejnoměrné. +\item Vypravíme se na malou exkurzi do matematiky: $a^2 + b^2 = c^2$. + Zjistíme, že číslo -1 je zde napsáno špatně (prokletý spojovník), + zatímco správně má být $-1$. +\item Protože \% uvozuje komentář a \$ přepíná do matematické sazby, + musíme před ně napsat zpětné lomítko, chceme-li je dostat do dokumentu. +\end{itemize} + +\section{Závěr} + +To by pro začátek stačilo. Příkazem \verb|\bye| ukončíme své pokusy. +\end{document} +\endtt %-------------------------------------------------------------- + +Poznamenejme, že zavedení doplňkového stylu {\tt czech} způsobí aktivaci +českých vzorů dělení slov a písma s~českými znaky. Bez použití tohoto stylu +pracuje \LaTeX{} implicitně s~anglickými vzory dělení slov a s~písmy, která +neobsahují háčkovaná a čárkovaná písmena. + +Upozorňujeme, že v~současné době je \LaTeX{}ů několik druhů. Už +zmíněný \uv{starý \LaTeX} (tzv.~verze 2.09), ve kterém se +struktura záhlaví dokumentu mírně lišila. Dále je pro potřeby +českých dokumentů nutné rozlišovat mezi \LaTeX{}em a \CS\LaTeX{}em +(druhý jmenovaný je dnes považován zastaralý). +\LaTeX{} implementuje +český a slovenský jazyk pomocí balíku maker \uv{Babel} nebo +\uv{polyglossia}, zatímco \CS\LaTeX{} měl k tomu vlastní stylový soubor. +\CS\LaTeX{} byl u nás mnoho let používán jako jistá +modifikace \LaTeX{}u. Váče uvedená ukázka předpokládá \LaTeX{} s balíčkem +Babel. + +Výsledek po zpracování našeho dokumentu \LaTeX{}em v~tomto manuálu +pro stručnost neuvádíme. Kdo chce, může si sám \LaTeX{} +vyzkoušet. Nelíbí se nám, že za čísly v~nadpisech nejsou tečky? +Zavedeme do dokumentu prostřednictvím "\usepackage" další doplňkový +styl, který toto výchozí chování základního stylu {\tt article} +upraví. Nelíbí se nám, že jsou mezi jednotlivými položkami ve výčtu +velké mezery a položky jsou až příliš odsazeny? Použijeme v~dokumentu +další doplňkový styl. Nelíbí se nám, že je použito písmo Computer +Modern? Napišme třeba "\usepackage{times}". + +Otázka ale je, kdo pro nás tyto doplňkové styly (neboli doplňující sady +definic pro \TeX) bude připravovat. Velké množství stylů na všechno možné +lze nalézt ve veřejných archivech \TeX{}ovského softwaru. \LaTeX{} nám tedy +při jednoduchých šablonovitých požadavcích na vzhled dokumentu umožňuje +zůstat v~roli autora, který pořizuje text. Nemusíme umět poměrně složitý +jazyk definic \TeX{}u. + +Pokud nám žádná z~možností nabízených stylů nevyhovuje, musíme se pokusit +tyto styly modifikovat podle své potřeby. To ale může být už hodně +komplikované. Záleží znovu na nás, zda rádi modifikujeme zdrojové kódy +cizích programů nebo si raději napíšeme programy vlastní. Pokud píšeme +raději programy vlastní, asi nám bude spíše vyhovovat jednodušší výchozí +formát plain (csplain). + +Jestliže jsme se rozhodli pracovat raději v~plainu, pak lze k~dalšímu +studiu doporučit následující literaturu: + +\begitems +\bib Michael Doob. {\it Jemný úvod do \TeX{}u}. Třetí vydání českého + překladu, \CS{}TUG 1993. Knížka je rovněž volně k~dispozici ve + zdrojových textech jako {\tt jemny.tex} v~archivu + {\tt ftp://math.feld.cvut.cz/pub/cstex/doc/jemny.tar.gz}. + Anglický originál je volně šířen jako {\tt gentle.tex}.% + \footnote{Připravuji nový text \uv{\TeX, \CS plain, OPmac -- příručka + pro pragmatiky}, který by mohl původní Doobův text nahradit.} + +\bib Petr Olšák. {\it \TeX{}book naruby}. Konvoj 1997. Celý text knihy je + volně k~dispozici ve formátu {\tt pdf} + na \url{http://math.feld.cvut.cz/olsak/tbn.html}. +\enditems + +Vyhovuje-li nám více \LaTeX, pak je možné sáhnout po těchto manuálech: + +\begitems +\bib Jiří Rybička. {\it \LaTeX{} pro začátečníky}. Druhé, upravené vydání, + Konvoj 1999. +\bib Tobias Oetiker. {\it Ne příliš stručný úvod do systému + \LaTeX{} \twoe}. Text je šířen volně včetně zdrojových textů a je + přeložen do mnoha jazyků. Do češtiny přeložil Michal Kočer. + {\tt ftp://math.feld.cvut.cz/pub/cstex/doc/lshort2e.tar.gz} +\bib Leslie Lamport. {\it\LaTeX---A Document Preparation System---User's + Guide and Reference Manual}. Ad\-di\-son-Wes\-ley, Reading, MA, + USA, 2nd ed. 1994. +\bib Michel Goossens, Frank Mittelbach, Alexander Samarin. + {\it The \LaTeX{} Companion}. Druhé vydání, Addisson Wesley 1994. +\bib Michel Goossens, Sebastian Rahtz, Frank Mittelbach. + {\it The \LaTeX{} Graphics Companion: Illustrating Documents with + \TeX{} and PostScript}. Addisson Wesley 1997. +\enditems + +Pokud budeme používat \LaTeX{} a budeme chtít rozumět použitým stylovým +souborům, můžeme použít knihu [2]. Popisuje totiž vnitřní algoritmy +\TeX{}u, což jsou informace, které využijeme jak v~plainu tak v~\LaTeX{}u. + +Pro úplnost ještě citujme dva tituly. První z~nich je základní biblí +k~\TeX{}u od samotného autora \TeX{}u (česká alternativa [2] ji poměrně +dobře nahrazuje) a druhý titul obsahuje informace o~\TeX{}ových +souvislostech, tj. popis spolupracujících programů v~běžných distribucích, +implementace fontů, vkládání obrázků apod. + +\begitems +\bib Donald E. Knuth. {\it The \TeX{}book}. Mnohonásobné vydání. Addison + Wesley, 1986--{\tt*}. Díl~A~z~pětidílné monografie k~\TeX{}u a \mf{}u + \uv{Computers \& Typesetting}. +\bib Petr Olšák. {\it Typografický systém \TeX}. \CS{}TUG 1995. +\enditems + +Další text v~tomto manuálu se věnuje základům \TeX{}u, které bývají +shodné při použití většiny formátů. Ukázky budeme pro jednoduchost +nadále zkoušet ve formátu csplain, protože jinak bychom museli kolem +vlastního textu ukázky přidat zmíněné \uv{obkladové řádky} závislé na +použitém \uv{druhu} \LaTeX{}u. + + +\sekce Technické pozadí formátů +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +V~předchozím textu jsme na mnoha místech hovořili o~formátech \TeX{}u +(plain, \LaTeX{}, csplain), ale zatím jsme pořádně neřekli, co to je. + +Formát je binární soubor (v~\TeX{}ové implementaci má příponu {\tt.fmt}), +který zahrnuje: + +\begitems +\bod výchozí sadu definic, která rozšiřuje vestavěné řídicí sekvence + o~další, pro uživatele většinou snadněji použitelné, +\bod výchozí nastavení vnitřních parametrů \TeX{}u (například šířka + odstavce nebo velikost odstavcové zarážky), +\bod výchozí fonty, které budou v~dokumentu použity, pokud uživatel + nespecifikuje jiné, +\bod vzory dělení vybraných jazyků, podle kterých \TeX{} dělí slova při + zalamování odstavce. +\enditems + +Až na vzory dělení lze vše ostatní ve vlastním dokumentu pomocí +\TeX{}ových definic dodatečně měnit. Pro načtení vzorů dělení +jednotlivých jazyků má \TeX{} speciální řídicí sekvenci "\patterns", +která funguje jen při vytváření formátu. Existuje ještě jedna řídicí +sekvence, která má smysl pouze při generování formátu: "\dump". Tento +příkaz způsobí uložení \uv{nabytých vědomostí} +\TeX{}u z~jeho vnitřní paměti do binárního formátového souboru {\tt *.fmt} +a ukončí činnost \TeX{}u. Tento soubor se může později při startu +\TeX{}u načíst, a \TeX{} tím začíná se svými znalostmi z~místa, kde +naposledy načítání definic skončil v~době příkazu "\dump". + +Příkazy "\patterns" a "\dump" umí speciální varianta \TeX{}u zvaná +ini\TeX{}. V~nových implementacích \TeX{}u není tato varianta +reprezentována samostatným programem, ale vyvolá se prostřednictvím +přepínače {\tt -i} nebo {\tt -ini}. Například k~vygenerování formátu +plain lze postupovat takto: + +\begtt +> tex -ini plain +* \dump +\endtt + +\TeX{} zde ve variantě ini\TeX{} načetl soubor definic plain.tex a uložil +nabyté vědomosti do souboru {\tt plain.fmt}. Nyní lze formátový soubor +použít: + +\begtt +> tex &plain document +\endtt + +V~běžných \TeX{}ových distribucích je implementována nějakým způsobem +zkratka, která uživateli umožní místo {\tt tex \&plain} psát pouze +{\tt tex} a třeba místo {\tt tex \&latex} psát pouze {\tt latex}. + + +\sekce Speciální znaky +%%%%%%%%%%%%%%%%%%%%%% + +V~této sekci popíšeme chování speciálních vstupních znaků, které +nejsou \TeX{}em většinou slepě přepisovány do výstupu, ale \TeX{} na +ně určitým způsobem zareaguje. + +Jedním takovým speciálním znakem je "\" (zpětné lomítko). Pokud za ním +následuje písmeno, \TeX{} přečte řídicí sekvenci typu "\slovo" +ukončenou prvním znakem, který není písmeno (separátorem). Je-li +tímto separátorem mezera, pak se na výstupu neobjeví. Ostatní +separátory nejsou na rozdíl od mezery ignorovány. +Vyzkoušejte si: + +\begtt %---------------------------------------------------------- +Zkouším \TeX. % Tečka je separátor sekvence \TeX, který se vytiskne +Píšu v \TeX u % Separátorem je mezera před u, která se netiskne +\TeX je formátor. +\endtt %---------------------------------------------------------- + +Z~posledního řádku ukázky dostáváme nesprávný výsledek: \TeX je formátor. +Projevila se totiž další vlastnost \TeX{}u: jednu mezeru i více mezer +za sebou považuje za mezeru jedinou a ta v~našem příkladě funguje jako +separátor, který mizí. Proto se často používají \uv{zbytečné skupiny}, +jejichž závorky mají funkci separátoru řídicí sekvence: + +\begtt %----------------------------------------------------------- +Píšu v \TeX{}u. \TeX{} je formátor. +Nebo raději píšu v {\TeX}u a používám {\TeX} jako formátor. +\endtt %----------------------------------------------------------- + +Pokud za zpětným lomítkem následuje něco jiného, než písmeno +(například "\$"), je řídicí sekvence tvořena jen tímto znakem. +Mezery za takovými jednoznakovými sekvencemi zůstávají +zachovány: + +\begtt %----------------------------------------------------------- +Pracuji se 100\% nasazením. +\endtt %----------------------------------------------------------- + +Vidíme, že dalším speciálním znakem v~\TeX{}u je mezera. Jak jsme před +chvílí uvedli, více mezer za sebou se chová jako mezera jediná. + +Všechny mezery na začátku řádku jsou ignorovány až po první znak, který +není mezera. Toho můžeme využít pro zlepšení přehlednosti našich +vstupních textů (viz naše ukázka s~výčtem prvků). + +Konec řádku je v~\TeX{}u interpretován jako mezera, která se vytiskne, +pokud není separátorem řídicí sekvence. Pokud si mezeru z~konce +řádku nepřejeme, můžeme ji \uv{zamaskovat} komentářovým znakem: + +\begtt %----------------------------------------------------------- +Toto je + zvrácený +pří% +klad v~\TeX +u. +\endtt %----------------------------------------------------------- + +Prázdný řádek vytvoří interní příkaz "\par", který ukončuje +odstavec. Není-li co ukončovat, "\par" nedělá nic. Proto více +prázdných řádků pod sebou se chovají stejně jako jeden prázdný +řádek. I~toho lze využít pro zvýšení přehlednosti zdrojových textů. + +V~následující tabulce je přehled všech znaků, které bývají +nastaveny jako speciální: + +\begtable + "\" & uvozuje řídicí sekvenci + mezera & speciální vlastnosti popsány výše + konec řádku & speciální vlastnosti popsány výše + "{" & zahájení skupiny, parametru nebo definice + "}" & konec skupiny, parametru nebo definice + "$" & přepínač matematického módu + "&" & separátor používaný v tabulkách + "#" & označení parametru v definicích + "^" & konstruktor mocniny v matematickém módu + "_" & konstruktor indexu v matematickém módu + "~" & nedělitelná mezera + "%" & zahajuje na řádku komentář +\endtable + +Speciální význam každého znaku lze v~\TeX{}u nastavit pomocí určitých +definic. Výše uvedená tabulka tedy není v~ničem definitivní. +Uvedený seznam speciálních znaků bývá takto nastaven ve +formátech plain, csplain i \LaTeX. + +Pokud chceme vytisknout souvislejší část textu bez speciální +interpretace, musíme těmto znakům jejich speciální funkce odebrat. +V~\LaTeX{}u se pro tyto účely používá \LaTeX{}ové prostředí vymezené +příkazy "\begin{verbatim}" a "\end{verbatim}". Vše mezi těmito příkazy% + \footnote{s výjimkou sekvence čtrnácti znaků + \uv{{\tt \char`\\end\char`\{verbatim\char`\}}}} +se vytiskne tak, jak je napsáno ve vstupním textu. Uvedené prostředí +vždy ukončí odstavec a zahájí tisk textu bez speciální interpretace. +Pokud chceme mít bez speciální interpretace jen část textu uvnitř +odstavce, použijeme v~\LaTeX{}u příkaz "\verb|text bez svislé čáry|" +nebo třeba "\verb+text bez znaku plus+". + +V~plainu ani v~csplainu hotové řešení na vypnutí speciální +interpretace znaků nenajdeme. Můžeme se inspirovat dvojicí "\begtt" +a "\endtt" ve zdrojovém textu tohoto manuálu. + +Pokud chceme vytisknout jen jednotlivé speciální znaky, měli bychom +vědět, jakou sekvencí to zařídit. Pro znaky používané v~běžném textu +("$", "&", "#" a "_") jsou ve všech formátech připraveny řídicí +sekvence "\$", "\&", "\#" a "\_". Tím požadovaný znak vytiskneme +v~libovolném fontu. Výjimkou je znak \$, který se v~kurzívě +Computer Modern fontu mění v~libru: {\cmit\$}. Je to taková malá +kuriozita \TeX{}u. + +S~ostatními speciálními znaky to tak jednoduché není. V~implicitně +nastaveném fontu Computer Modern totiž tyto znaky vesměs nemají ve +fontu svůj odpovídající obraz. Například na pozici 92 bychom měli +najít podle normy ASCII znak~"\" (zpětné lomítko), ale místo něj tam +najdeme znak~`` (obrácené uvozovky). Nemile nás překvapí i jinak +obyčejný znak "<" (symbol pro relaci je menší), který nemá ve fontu +svůj obraz a místo něho dostaneme do výstupu < (obrácený +vykřičník). Pokud chceme, aby se do výstupu věrně dostal znak, který +známe z~tabulky ASCII, musíme použít variantu fontu "\tt" (strojopis), +nebo jinou rodinu fontu, která má fonty v~kódování přesně podle +ASCII. Následující tabulka ukazuje všechny běžné ASCII znaky, které +mají v~Computer Modern jiný obraz: + +\begtable + kód znaku & "\tt" (strojopis) & Computer Modern + \tabline + \.60 & "<" & \tencsr < + \.62 & ">" & \tencsr > + \.92 & "\" & \tencsr \char92 + 123 & "{" & \tencsr -- + 124 & "|" & \tencsr --- + 125 & "}" & \tencsr \char125 +\endtable + +Znak z~dané pozice ve fontu vytiskneme pomocí příkazu "\char kód". +Například "\char92" nám vytiskne ve strojopisu "\" a v~antikvě +Computer Modern {\tencsr\char92}. Pokud si nepamatujeme číselnou +hodnotu ASCII kódu nějakého znaku, můžeme místo ní použít konstrukci +"`\znak", takže například "`\\" vrátí číslo 92. Proto při tisku +zpětného lomítka píšeme "{\tt\char`\\}". + +Budeme-li chtít vytisknout některý ze znaků "< > \ { | }", musíme si +uvědomit, jaký význam daný znak reprezentuje. Většinou se jedná +o~matematické symboly, takže pro ně použijeme odpovídající řídicí +sekvence v~matematickém módu (mezi dvěma dolary). Relace \uv{je menší}, +\uv{je větší} a symbol pro absolutní hodnotu lze dokonce +v~matematickém módu napsat přímo, zatímco v~textovém módu mimo +strojopis se promění ve španělskou interpunkci nebo pomlčku. +Následující tabulka udává doporučený způsob zápisu příslušných +znaků podle jejich významu: + +$$\vbox{\let\par=\cr \obeylines \halign{&#\hfil\quad + význam znaku & jak jej zapsat & jak se vytiskne + \tabline + relace \uv{je menší} & "$a < b$" & $a < b$ + relace \uv{je větší} & "$a > b$" & $a > b$ + uzavřený interval & "$\langle a,b\rangle$" & $\langle a,b\rangle$ + ASCII znaky "< >" & "{\tt < >}" & "< >" + rozdíl množin & "$A\setminus B$" & $A\setminus B$ + ASCII znak "\" & "{\tt\char`\\}" & "\" + Množinové závorky & "$M = \{a,b,c\}$" & $M = \{a,b,c\}$ + ASCII znaky "{ }" & "{\tt\char`\{ \char`\}}" & "{ }" + absolutní hodnota & "$|x|$" & $|x|$ + ASCII znak "|" & "{\tt |}" & {\tt|} + vlnka jako akcent & "\~a" & \~a + samostatný akcent & "\~{}" & \~{} + ASCII znak "~" & "{\tt\char`\~}" & "~" + stříška jako akcent & "\^a" & \^a + ASCII znak "^" & "{\tt\char`\^}" & "^" +}}$$ + +V~\LaTeX{}u lze místo konstrukcí "{\tt\char`\znak}" použít +jednoduššího "\verb|znak|". Ovšem příkaz "\verb", který odebírá znaku +jeho speciální funkci a zapíná tisk ve strojopisu, nemusí fungovat +všude. Například jej nelze použít jako argument jiného příkazu +("\section", "\uv", apod.). + +\sekce Rozměrové jednotky používané v~\TeX u a typografii +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Z~historických důvodů v~typografii stále přežívají měrné jednoty +rozdílné od soustavy SI. Základní měrnou jednotkou, která se používá +v~anglosaských zemích, je jednotka point ({\tt pt}), která má rozměr +asi třetinu milimetru. Dvanáctinásobek je pica (čteme pajka, {\tt +pc}). Jednotkou, která se používala v~Evropě, je \uv{Didotův bod} +({\tt dd}), který je větší než point, ale zhruba taky měří třetinu +milimetru. Dvanáctinásobek tohoto bodu je cicero ({\tt cc}). +V~počítačových programech pro sazbu se používá počítačový bod +({\tt bp}), který je jen velmi nepatrně větší. 72 počítačových bodů se +přesně vejde do jednoho palce ({\tt in}, inch používaný především +v~Americe). + +Všechny tyto jednotky je možné použít v~\TeX{}u jako dvoupísmenové zkratky, +jak ukazuje následující tabulka. Navíc lze použít jednotky odvozené +z~metru. + +\begtable + "pt" & monotypový bod & $1\,{\tt pt} = 1/72.27\,{\tt in} \doteq % + 0.35146\,{\tt mm}$ + "pc" & pica & $1\,{\tt pc} = 12\,{\tt pt}$ + "bp" & počítačový bod & $1\,{\tt bp} = 1/72\,{\tt in}$ + "dd" & Didotův bod & $1\,{\tt dd} = 1238/1157\,{\tt pt}$ + "cc" & cicero & $1\,{\tt cc} = 12\,{\tt dd}$ + "in" & palec (inch, coul) & $1\,{\tt in} = 25.4\,{\tt mm}$ + "cm" & centimetr & $1\,{\tt cm} = 10\,{\tt mm}$ + "mm" & milimetr & $1\,{\tt mm} \doteq 2.84528\,{\tt pt}$ + "sp" & jednotka \TeX{}u & $1\,{\tt sp} = 1/65536\,{\tt pt}$ + "em" & velikost písma & závislé na aktuálním písmu + "ex" & výška malého x & závislé na aktuálním písmu +\endtable + +Velikost písma se měří zhruba jako celková výška řádku, který obsahuje +všechny znaky písma (mimo akcentované verzálky, tj. neuvažujeme v~takovém +řádku háčky a čárky nad velkými písmeny). Zhruba to také odpovídá +šířce velkého písmene M (odtud jednotka {\tt em}). Bohužel, na jednotlivých +písmech není nic společného, co by se dalo vždy jednoduše změřit a přesně +říci, že právě to je ona velikost písma. + + +\sekce Práce s~fonty +%%%%%%%%%%%%%%%%%%%% + +Implicitní fonty, které jsou v~každé implementaci \TeX{}u k~dispozici +a které jsou nezávislé na použitém operačním systému, jsou fonty +rodiny Computer Modern. Běžná antikva v~této rodině má název {\tt +cmr10}. To je zkratka pro \uv{Computer Modern Roman ve velikosti 10pt}. +Fonty Computer Modern bývají už načteny ve formátu a pro +jednotlivé varianty (antikva, kurzíva, polotučné, strojopis) bývají +připraveny přepínače "\rm", "\it", "\bf", "\tt". + +Fonty Computer Modern neobsahují akcentovaná písmena (s~háčky a čárkami). +Proto jsou ve formátu csplain místo nich implicitně načteny tak zvané +\CS{}fonty, které rozšiřují Computer Modern fonty o~písmena s~akcenty +z~české a slovenské abecedy. Běžná antikva v~této rodině má název +{\tt csr10}. \LaTeX{} také implicitně pracuje s~rodinou Computer Modern, +pomocí dodatečných stylů se dá přinutit k zavedení dalších fontů. Používá k +tomu zabudovaný balík makrer NFSS, který uživatele totálně odstíní od +primitivního příkazu "\font". + +Ve všech formátech (v~\LaTeX{}u navzdory jeho NFSS konceptu) +můžete zavést nový přepínač pro nové písmo +pomocí příkazu "\font". Ten má následující syntaxi: + +\begtt +\font\přepínač=název-fontu nepovinné parametry zvětšení +\endtt + +Například + +\begtt +\font\titulfont=csr10 scaled \magstep2 +\endtt + +\pp zavede do \TeX{}u font csr10 (tedy běžnou počeštěnou antikvu +odvozenou z~Computer Modern) ve zvětšení $1.44$ krát normální +velikost, která je 10 bodů. Tento font se pak v~textu aktivuje +přepínačem "\titulfont". Proč zrovna koeficient $1.44$? To je +koeficient, pro který byla v~\TeX{}u vytvořena zkratka +"\magstep2". Následující tabulka shrnuje všechny zkratky typu +"\magstep", které jsou definovány ve všech běžně používaných +formátech. + +\begtable + sekvence & koeficient & implementováno jako + \tabline + "\magstep0" & 1:1 (žádné zvětšení) & 1000 + "\magstep1" & $1.2$ & 1200 + "\magstep2" & $1.2^2 = 1.44$ & 1440 + "\magstep3" & $1.2^3 = 1.728$ & 1728 + "\magstep4" & $1.2^4 = 2.0736$ & 2074 + "\magstep5" & $1.2^5 = 2.48832$ & 2488 + "\magstephalf" & $\sqrt{1.2}\doteq1.095445$ & 1095 +\endtable + +Odstupňování jednotlivých velikostí písma pomocí mocnin čísla $1.2$ bývá +v~typografii dobrým zvykem. + +Ve sloupci \uv{implementováno jako} vidíme, že koeficient se za slovem +{\tt magstep} (stejně jako na mnoha dalších místech v~\TeX{}u) zadává jako +celé číslo odpovídající tisícinásobku uvažované hodnoty. Chceme-li tedy +použít font dvojnásobně velký, použijeme {\tt scaled~2000} a při požadavku +na poloviční velikost píšeme {\tt scaled~500}. + +Kromě koeficientu zvětšení (slovo {\tt scaled}) můžeme chtít zvětšit +font bez ohledu na jeho původní velikost do námi požadované velikosti. +K~tomu se používá slovo {\tt at}, například: + +\begtt %-------------------------------------------------------------- +\font\prvni=csr10 at 20pt +\font\druhy=csr10 scaled 2000 +\endtt %-------------------------------------------------------------- + +Oba řádky této ukázky zavádějí stejný font ve stejném zvětšení. + +Rodina písma Computer Modern (a jeho odvozeniny, například \CS{}fonty) +obsahuje různé velikosti stejné varianty písma, přitom tyto +alternativy nejsou jen stejnoměrným násobením všech rozměrů. +Doporučuje se, zvláště v~menších velikostech písma, používat +implicitní velikost písma a dále ji nezmenšovat ani nezvětšovat. +Implicitní velikost písma je označena číslem v~názvu +fontu, tj. například {\tt csr10} má implicitní velikost 10\,pt a +{\tt csr5} má velikost 5\,pt. Srovnáme výsledek tohoto příkladu: + +\begtt %-------------------------------------------------------------- +\font\zvetseny=csr5 at10pt +\font\normalni=csr10 +\normalni Tady je přirozená velikost písma 10 bodů +\zvetseny a tady je písmo navržené pro pět bodů zvětšeno na 10 bodů. +\endtt %-------------------------------------------------------------- + +Na výstupu dostaneme: + +\beguk %-------------------------------------------------------------- +\font\zvetseny=csr5 at10truept +\font\normalni=csr10 at10truept +\baselineskip=12truept +\normalni Tady je přirozená velikost 10 bodů +\zvetseny a tady je písmo navržené pro pět bodů zvětšeno na 10 bodů. +\enduk %-------------------------------------------------------------- + +Přepnout písmo dokumentu do jiné rodiny fontů znamená postarat se o~změnu +významu všech přepínačů jednotlivých variant písma ("\rm", "\bf", "\it" a +"\tt") a nezapomenout na vhodnou změnu fontu též v~nadpisech a v~dalších +velikostech písma, které jsou v~dokumentu použity. Jednoduché definice +alternativních přepínačů najdeme pro csplain v~následujících souborech: + +\begtable + soubor & Rodina fontů + \tabline + "cavantga.tex" & Avantgarde Book + "cbookman.tex" & Bookman + "chelvet.tex" & Helvetica + "cncent.tex" & New Century + "cpalatin.tex" & Palatino + "ctimes.tex" & Times Roman +\endtable + +Tyto rodiny fontů jsou instalovány v~každém výstupním PostScriptovém +zařízení, takže s~těmito fonty můžeme v~\TeX{}u pracovat, aniž bychom je +museli mít zakoupené. \TeX{} samotný totiž pracuje pouze s~metrickými +informacemi k~fontům a do výstupu vkládá pouze odkazy na fonty. Metrické +informace jsou obvykle k~dispozici zdarma. Pokud budeme tisknout na +PostScriptovém zařízení, pak jsme s~cenou PostScriptového modulu tyto fonty +vlastně koupili a můžeme v~nich tisknout \TeX{}ové dokumenty. Pokud budeme +tisknout na zařízení bez PostScriptu, pak je vhodné PostScriptový kód +zpracovat volně dostupným programem Ghostscript, který má v~sobě zahrnuty +volně dostupné alternativy k~uvedeným základním fontům. Rozdíl mezi +alternativou a draze koupeným fontem přitom ani moc nepoznáme. + +Chceme-li například přepnout do písma Bookman, stačí napsat do dokumentu +"\input bookman". Takovou věc jsme už ilustrovali na našem příkladě +v~předchozím textu. + +Podíváme-li se do souborů {\tt cbookman.tex} a dalších, které najdeme +v~instalaci \TeX{}u někde v~adresáři {\tt csplain}, zjistíme, že zde nejsou +předefinovány přímo přepínače "\rm", "\bf", "\it" a "\tt", ale že se zde +místo nich pracuje s~přepínači "\tenrm", "\tenbf", "\tenit" a "\tentt". +To jsou totiž v~plainu (i csplainu) skutečné přepínače \uv{nejnižší +úrovně}. Pro uživatele se pak definují značky "\rm", "\bf", "\it" a "\tt" +s~dalším přihlédnutím na chování těchto značek v~matematickém módu. +Například "\bf" je definováno takto: + +\begtt %-------------------------------------------------------------- +\def\bf{\tenbf \fam\bffam} +\endtt %-------------------------------------------------------------- + +Je-li tedy předefinován přepínač "\tenbf", bude se od této chvíle chovat +jinak i značka "\bf". Kód "\fam\bffam" zde nebudeme rozebírat, protože +překračuje rámec tohoto úvodního textu. Spokojíme se s~tím, že v~textovém +módu nemá tento kód žádný vliv a v~matematickém módu cosi udělá. + +Příkaz "\fontname\přepínač\space" se promění zpět v~původní název +fontu ukončený mezerou. Tato vlastnost byla použita v~našem příkladu, +kde jsme zaváděli větší font pomocí této konstrukce: + +\begtt %--------------------------------------------------------------- +\font\titulfont=\fontname\tenbf\space scaled \magstep2 % větší font +\endtt %--------------------------------------------------------------- + +Výhodou tohoto zápisu je fakt, že nemusíme znát název fontu, stačí si +zapamatovat základní přepínače "\tenrm", "\tenbf", "\tenit" a "\tentt". +Názvy fontů se nejenom těžko pamatují, ale také se mohou změnit, +pokud před takovou konstrukcí použijeme "\input cbookman" nebo něco +podobného. + +V~\LaTeX{}u asi takové obraty nebudeme potřebovat, protože o~zavedení +potřebných fontů pro různé velikosti se \LaTeX{} stará sám. Pro +přepínání mezi rodinami fontů používáme v~\LaTeX{}u příkaz +"\usepackage" a následuje ve složených závorkách jedno ze slov +{\tt avantgar}, {\tt bookman}, {\tt helvet}, {\tt newcent}, +{\tt palatino}, {\tt times}. Písmeno {\tt c} na začátku názvu rodiny +fontů (na rozdíl od csplainu) nepíšeme. + +Možná nás začne zajímat, jaké fonty máme v~\TeX{}ové instalaci +připraveny k~použití. Stačí udělat menší průzkum v~adresáři {\tt tfm} +(odvozeno od zkratky \TeX{} font metrics) a podívat se do jednotlivých +podadresářů na názvy přítomných souborů. To jsou současně názvy fontů, +které jsou použitelné v~příkaze "\font". Chceme rychle vědět, jak který +font vypadá? Napišme na příkazový řádek + +\begtt %----------------------------------------------------------------- +tex testfont +\endtt %----------------------------------------------------------------- + +\TeX{} se nás vyptá na název fontu, který zadáme bez přípony +{\tt.tfm}. Pak nás požádá o~instrukci, co s~načteným fontem má dělat. +Nejlépe je odpovědět "\table\end" a podívat se na tabulku znaků +testovaného fontu třeba pomocí "xdvi testfont". + + + +\sekce Umístění sazby na papíře +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Při poznávání \TeX{}u si jistě velmi brzo položíme otázku, jak je +možné změnit velikost okrajů, neboli jak umístit sazbu na papíře. + +V~plainu jsou implicitně nastaveny velikosti okrajů jeden palec +z~každé strany papíru amerického formátu Letter. Takové formáty papíru +u~nás většinou nerostou, takže plain nám na papíru A4 udělá jen levý a +horní okraj velikosti jeden palec a pravý okraj bude menší a spodní +větší. + +V~csplainu jsou implicitně nastaveny velikosti okrajů jeden palec +z~každé strany pro formát A4. Sazba je tedy v~csplainu mírně užší a +vyšší, než v~plainu. Sazbu přitom měříme bez případného záhlaví a bez +stránkových číslic. + +Po zavedení makra OPmac v~plainu nebo csplainu je možné +okraje pohodlně nastavit makrem "\margins". Jak to udělat je popsáno v +dokumentaci k OPmac. Níže je uveden postup nastavení okrajů v \TeX{}u na +úrovni \TeX{}u samostného bez použití maker. + +Umístění sazby měříme vzhledem k~počátku, který se nalézá na papíře +1~palec od levého okraje a 1~palec od horního okraje. Levý horní roh +sazby se kryje s~tímto počátkem, pokud jsou nastaveny registry +"\hoffset=0pt" a "\voffset=0pt". Levý horní roh sazby se posune +doprava o~hodnotu "\hoffset" a dolů o~hodnotu "\voffset". Při +záporných hodnotách těchto registrů se sazba posunuje samozřejmě doleva +respektive nahoru. + +Šířka sazby (přesněji šířka zpracovávaného odstavce) se nastaví pomocí +registru "\hsize". Výška sazby na stránce se nastaví pomocí "\vsize". +V~následující ukázce jsou uvedeny hodnoty, které nastavuje plain. + +\begtt +\voffset=0in % velikost horního okraje = \voffset + 1 palec +\hoffset=0in % velikost levého okraje = \hoffset + 1 palec +\hsize=6.5in % šířka řádku, 165.1mm +\vsize=8.9in % výška sazby, 266mm +\endtt + +Formát csplain má registry "\hoffset" a "\voffset" také nulové, ale +šířku a výšku sazby nastavuje odlišně: + +\begtt +\hsize= 159.2 mm % šířka řádku v csplainu (šířka A4 - 2in) +\vsize= 239.2 mm % výška sazby (výška A4 - 2in) +\endtt + +Pokud chceme nastavit vlastní velikosti, doporučujeme nejprve registry +"\hoffset" a "\voffset" nastavit na hodnotu $-1$\,in a pak k~nim přičíst +hodnoty požadovaných okrajů pomocí příkazu "\advance". Dále +doporučujeme výšku sazby přesně rozměřit na počet řádků. K~tomu +potřebujeme vědět, že vzdálenost dvou řádků se určí pomocí registru +"\baselineskip" (pozor: při větším písmu se toto řádkování může +rozhodit). Plain i csplain nastavují "\baselineskip" na 12\,pt. +Kromě toho je účaří prvního řádku od pomyslného horního okraje sazby +vzdáleno o~"\topskip", který má v~plainu i v~csplainu hodnotu 10\,pt. +Protože se výška sazby "\vsize" měří od horního pomyslného okraje po +účaří posledního řádku na stránce, vychází "\vsize" jako +\hbox{$"\topskip" + (n-1)\times "\baselineskip"$}, kde $n$ je počet řádků na +stránce. Nastavení velikosti sazby tedy můžeme udělat například takto: + +\begtt +\voffset=-1in +\advance\voffset by 2cm % velikost horního okraje bude 2cm +\hoffset=-1in +\advance\hoffset by 1.5cm % velikost pravého okraje bude 1.5cm +\hsize=10cm % šířka řádku bude 10cm +\vsize=\topskip +\advance\vsize by 15\baselineskip % sazba bude mít 16 řádků na stránce +\endtt + +V~\LaTeX{}u se při nastavování rozměrů sazby používají registry +speciálně deklarované v~tomto formátu. Jedná se o~"\textheight" (výška +sazby), "\textwidth" (šířka sazby), "\oddsidemargin" (levý okraj na +lichých stránkách), "\evensidemargin" (levý okraj na sudých stránkách) +a "\topmargin" (horní okraj). \LaTeX{} pak sám podle hodnot těchto +registrů nastaví vnitřní registry \TeX{}u "\hoffset", "\voffset", +"\hsize" a "\vsize". Uživatel \LaTeX{}u by k~nim neměl přistupovat +přímo a navíc by měl s~registry zacházet \uv{\LaTeX{}ovsky}, což +prakticky znamená, že místo jednoduchého přiřazení nebo příkazu +"\advance" by měl zapisovat své požadavky zhruba takto: + +\begtt +\setlength\topmargin{-1in} +\addtolength\topmargin{2cm} % velikost horního okraje bude 2cm +\setlength\oddsidemargin{-1in} +\addtolength\oddsidemargin{1.5cm} % velikost pravého okraje bude 1.5cm +\setlength\evensidemargin{\oddsidemargin} +\setlength\textwidth{10cm} % šířka sazby bude 10cm +\setlength\textheight{\topskip} +\addtolength\textheight{15\baselineskip} % 16 řádků +\endtt + +\TeX{}em většinou nenastavujeme parametry pro archovou montáž sazby, +takže nám výše uvedené příklady pro nastavení velikosti sazby bohatě +stačí. Pokud bychom chtěli se sazbou dále manipulovat a umisťovat ji +na jednotlivé archy podle určitých požadavků, použijeme většinou +pomocné programy, které manipulují s~PostScriptovým výstupem. +Představme si, že chceme stránky tohoto manuálu zmenšit tak, aby se +vešly dvě vedle sebe na stranu A4. Dále chceme tyto stránky uspořádat +tak, abychom po oboustranném vytištění manuálu na šest archů A4 +dostali svazeček, který přeložíme v~půli a máme knížečku +s~24 na sebe navazujícími stránkami. Pro takový úkol se asi nejlépe hodí +programy z~volně šířeného balíčku psutils. Na příkazový řádek můžeme +postupně napsat tyto instrukce: + +\begtt +> csplain prvni +> dvips prvni +> psbook prvni.ps p0.ps +> pstops "4:0L@.7(21cm,.5cm)+1L@.7(21cm,14.4cm)" p0.ps p1.ps +> pstops "4:2L@.7(21cm,.5cm)+3L@.7(21cm,14.4cm)" p0.ps p2.ps +> lpr -Ptiskarna p1.ps +> lpr -Ptiskarna p2.ps +> rm prvni.ps p0.ps p1.ps p2.ps +\endtt + +Příkaz {\tt dvips} převede dokument do PostScriptu a {\tt psbook} +uspořádá stránky pro použití do \uv{svazečku}. První volání příkazu +{\tt pstops} vybere vždy dvě ze čtyř stránek, zmenší je na +$0.7$\,násobek původní velikosti ({\tt @.7}) a umístí je do archu +podle uvedených parametrů. Tím vzniká podklad pro tisk lícových stran +archů A4 ({\tt p1.ps}). Podobně druhé volání příkazu {\tt pstops} +vytvoří podklad pro rubovou stranu archů. Vlastní tisk ({\tt lpr}) +pak můžeme provést na tiskárně, která neumí oboustranný tisk, ve dvou +průchodech. Před druhým průchodem obrátíme vytištěné papíry a vložíme +je do zásobníku tiskárny znovu. + + +\sekce Overfull/Underfull box +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Při práci s~\TeX{}em narazíme postupně na celou řadu chybových +hlášení, při kterých se program většinou zastaví a vyzve nás k~nějaké +akci. Ačkoli třeba jen stiskneme klávesu Enter, uvědomíme si, že je +něco špatně a pokusíme se chybu řešit. + +Kromě toho \TeX{} vypisuje varování o~přetečených (overfull) a +nedoplněných (underfull) boxech. Protože se při těchto výpisech +nezastavuje, považují to mnozí začátečníci za menší zlo, kterého si +není nutné všímat. Není to tak docela pravda. + +Přetečené boxy (overfull) bychom měli rovněž zařadit do kategorie +chyb. \TeX{}u se totiž nepodařilo vměstnat sazbu do předepsané šířky +"\hsize". Prakticky to znamená, že sazba v~daném místě \uv{vyčnívá} +na pravé straně ven směrem do okraje. Hlášení obsahuje údaj, o~kolik +bodů sazba vyčnívá, číslo řádku ve zdrojovém kódu a kus textu, který určuje +problémové místo. Plain a csplain dále nastavuje registr +"\overfullrule" na 5\,pt, takže se v~sazbě na problémovém místě objeví +těžko přehlédnutelný černý obdélník. \LaTeX{} tento registr nuluje, +takže černé obdélníky nejsou vidět, což dává uživateli pocit, že je +všechno v~pořádku. + +Objeví-li se přetečený box v~odstavci, většinou stačí \uv{rozvolnit} +mezery. Mezery mezi slovy mají totiž pružnost (mohou se smršťovat nebo +natahovat). Tato pružnost není neomezená, ale je daná jistými +parametry podle použitého fontu. Chceme-li dát mezerám větší volnost +v~roztahování, než si přál autor fontu, pišme například +"\emergencystretch=2cm". \TeX{} má plno dalších vnitřních registrů, +jejichž nastavením ovlivníme algoritmy na sestavování +odstavce. Jejich popis ovšem překračuje rámec tohoto úvodního textu. + +Nedoplněné boxy (underfull) můžeme na rozdíl od přetečených boxů +považovat pouze za varování. \TeX{} nás informuje, že byl nucen +v~některém místě natáhnout mezery víc, než je esteticky zdrávo. Hodnota +{\tt badness}, která hlášení doprovází, udává zhruba stupeň estetické +vady v~takovém místě (nebo také velikost násilí provedené na +mezerách). Čím vyšší badness, tím horší výsledek. Maximální hodnota +badness je 1000, což značí, že některý řádek je úplně špatně. Stojí +zato se podívat do sazby na takto označená místa a zamyslet se, co by +se dalo změnit, aby se zlepšila estetická úroveň výsledku. + +\LaTeX{}oví uživatelé dosti často neopatrně pracují s~příkazem "\\", +který se v~různých \LaTeX{}ových prostředích chová jako ukončení +řádku. Někdy se dostane takový příkaz i na konec odstavce, což samo +o~sobě nemá logiku, protože na konci odstavce se samo sebou ukončí +řádek. Pokud se tak stane, \TeX{} na konci odstavce vytvoří ještě další +prázdný řádek, ve kterém nemá žádnou mezeru k~natažení na šířku +"\hsize" a oprávněně se rozčílí: {\tt Underfull hbox badness 1000}. +V~tomto případě vlastně \TeX{} křičí na uživatele, který nebyl schopen +opustit principy starodávného psacího stroje a potřebuje mít k~ruce tu +velikou páku, do které je občas potřeba praštit, aby se přešlo na nový +řádek. + + + +\end + + + + -- cgit v1.2.3