%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Contents: Typesetting Part of LaTeX2e Introduction % $Id: typeset.tex 199 2009-04-20 06:29:16Z oetiker $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Sazba textu} \begin{intro} Po přečtení předchozí kapitoly byste měli znát základní prvky dokumentu systému \LaTeXe. V~této kapitole doplním informace o~zbytku reálně potřebných věcí. \end{intro} \section{Struktura textu a~jazyka} \secby{Hanspeter Schmid}{hanspi@schmid-werren.ch} Hlavním cílem psaní textu (vyjma některou DAAC\footnote{Different At All Cost (Odlišný za každou cenu), překlad zkratky UVA (Um's Verrecken Anders) ze švýcarské němčiny.} moderní literaturu) je předat myšlenky, informace nebo znalosti čtenáři. Text je srozumitelnější, pokud jsou myšlenky dobře strukturované a~typografická forma odpovídá logické a~významové struktuře obsahu. \LaTeX{} se od jiných sázecích systémů liší v~tom, že od uživatele vyžaduje popis logické a~sémantické struktury textu. \LaTeX{} sám potom vytvoří typografickou reprezentaci textu podle \emph{pravidel} uvedených v~souboru s~třídou dokumentu a~různých stylových souborech. Nejdůležitější \emph{jednotka textu} v~\LaTeX u (i~v~typografii) je \wi{odstavec}. Odstavci se říká jednotka textu, protože je typografickou formou, která by měla vyjadřovat jednu soudržnou myšlenku nebo ideu. V~následujících sekcích se dozvíte, jak vynutit řádkový zlom (např. pomocí \texttt{\bs\bs}) a~konec odstavce (např. pomocí prázdného řádku v~zdrojovém souboru). S~novou myšlenkou by měl začít i~nový odstavec. Pokud jste ohledně dělení do odstavců na pochybách, představte si text jako přepravce ideí a~myšlenek. Stejná myšlenka by neměla být rozdělena do několika odstavců, naopak objeví-li se v~textu odstavce myšlenka nová, měla by být přesunuta do zvláštního odstavce. Většina lidí podceňuje význam správného dělení textu do odstavců. Řada lidí dokonce neví, na základě čeho se toto dělení uskutečňuje nebo, zvláště v~\LaTeX u, vytvářejí nové odstavce omylem. Tento poslední případ je jednoduché udělat hlavně tehdy, když jsou v~textu použity rovnice. Podívejte se na následující příklady a~zkuste poznat, proč prázdné řádky (odstavcové zlomy) před a~za rovnicí někdy uvedeny jsou a~někdy ne. (Pokud těmto příkladům ještě úplně nerozumíte, přečtěte si nejdřív tuto a~následující kapitolu a~k~této sekci se vraťte potom.) \begin{code} \begin{verbatim} % Example 1 \ldots když Einstein přišel s~vzorcem \begin{equation} e = m \cdot c^2 \; , \end{equation} což je nejznámější a~zároveň nejméně pochopený matematický vzorec. % Example 2 \ldots z~čehož plyne Kirchhoffův zákon o~uzlech: \begin{equation} \sum_{k=1}^{n} I_k = 0 \; . \end{equation} Kirchhoffův zákon o~napětí lze odvodit\ldots % Example 3 \ldots což má několik výhod. \begin{equation} I_D = I_F - I_R \end{equation} je jádrem velmi odlišného tranzistorového modelu. \end{verbatim} \end{code} Menší textovou jednotkou je věta. V~anglických textech bývá větší mezera za tečkou ukončující větu než za tečkou uvedenou za zkratkou. \LaTeX{} zkouší odhadnout, který z~těchto dvou významů každá tečka má. Pokud je jeho odhad špatný, musíte udělat opravu. To je vysvětleno níže v~této kapitole. Strukturování textu se týká dokonce i~částí vět. Většina jazyků má komplikovaná interpunkční pravidla, ale v~mnoha jazycích (včetně němčiny a~angličtiny) se můžete řídit jednoduchým vodítkem: krátká pauza v~toku jazyka. Pokud si s~čárkami nejste jistí, přečtěte si větu nahlas a~krátce se zastavte na každé čárce. Pokud je někde pauza nepřirozená, vymažte příslušnou čárku. Cítíte-li, že byste se v~některém místě měli nadechnout (nebo krátce zastavit), přidejte čárku. Nakonec, odstavce textu by měly být logicky seskupeny do vyšších celků (kapitol, sekcí, podsekcí atd.). Typografický efekt napsání např. \verb|\section{| \texttt{Struktura textu a~jazyka}\verb|}| je zřejmý a~je jasně vidět, jak se toto strukturování na vyšší úrovni používá. \section{Řádkový a~stránkový zlom} \subsection{Zarovnané odstavce} Knihy se často sází tak, že každý řádek má stejnou délku. Aby toho dosáhl, vkládá \LaTeX{} nezbytné \index{řádkový zlom}řádkové zlomy a~mezery mezi slova a~přitom optimalizuje s~ohledem na obsah celého odstavce. Navíc dělí slova, která nelze dobře umístit na jednu řádku. To, jak jsou odstavce vysázeny, závisí na třídě dokumentu. Obyčejně se odsazuje první řádek odstavce a~mezi dva odstavce se nevkládá žádná dodatečná mezera. Více informací je uvedeno v~sekci~\ref{parsp}%. Ve speciálních případech musíme \LaTeX u říct, aby rozdělil řádku: \begin{lscommand} \ci{\bs} nebo \ci{newline} \end{lscommand} \noindent zahájí novou řádku (ale ne nový odstavec). \begin{lscommand} \ci{\bs*} \end{lscommand} \noindent navíc zakáže stránkový zlom za specifikovaným řádkovým zlomem. \begin{lscommand} \ci{newpage} \end{lscommand} \noindent zahájí stránku. \begin{lscommand} \ci{linebreak}\verb|[|\emph{n}\verb|]|, \ci{nolinebreak}\verb|[|\emph{n}\verb|]|, \ci{pagebreak}\verb|[|\emph{n}\verb|]|, \ci{nopagebreak}\verb|[|\emph{n}\verb|]| \end{lscommand} \noindent indikuje místa, kde je možné provést řádkový, resp. stránkový zlom. Hodnotou nepovinného parametru je možné upřesnit, jak se má \LaTeX{} zachovat. Hodnota může být mezi nula a~čtyři. Hodnota čtyři znamená, že \LaTeX{} nemusí zlom udělat, pokud by výsledek vypadal velmi špatně. Tyto \emph{příkazy zlomu} ale nejsou to samé jako \emph{příkazy new} (např. \ci{newline}). Použijete-li některý z~\uv{příkazů zlomu}, \LaTeX{} se pokusí vyrovnat na řádku text před zlomem (jak je popsáno v~následující sekci); nepříjemným výsledkem mohou být velké mezery na daném řádku. Pokud opravdu chcete začít novou řádku, resp. novou stránku, použijte příslušný \uv{příkaz new}. \LaTeX{} se vždy snaží najít nejlepší možné řádkové zlomy. Pokud se mu nepodaří najít takové, které by splňovaly jeho vysoké standardy, nechá jednu z~řádek odstavce přečnívat přes pravý okraj a~vypíše varování (\index{varování overfull hbox}\texttt{overfull hbox}). K~tomu dochází hlavně tehdy, když se \LaTeX u nepodaří najít vhodné místo pro rozdělení slova.% \footnote{Ačkoliv je vypsáno varování (\uv{Overfull hbox}) a~vypsán problematický řádek, najít tento řádek v~dokumentu nemusí být snadné. Použijete-li v~příkazu \ci{documentclass} volbu \texttt{draft}, budou takového řádku označeny tlustou černou čárou v~pravém okraji.} Pomocí příkazu \ci{sloppy} je možné \LaTeX u říct, aby trochu snížil své standardy. Dá se tím zabránit výše zmíněným přečnívajícím řádkám (pomocí zvětšení mezislovních mezer) a~je zobrazeno varování (\index{varování underfull hbox}\texttt{underfull hbox}). Výsledek většinou nevypadá moc dobře. Příkazem \ci{fussy} vrátíme \LaTeX{} zpět k~jeho \uv{vysokým standardům}. \subsection{Dělení slov} \label{hyph} \LaTeX{} se pokouší dělit slova vždy, když by to vedlo k~\uv{lépe vypadajícímu} odstavci. Pokud v~daném slově existují místa, kde lze slovo korektně rozdělit, ale \LaTeX ový algoritmus dělení slov tato místa nenajde, můžete pomocí následujících příkazů tato místa \LaTeX u označit \uv{ručně}. Příkaz \begin{lscommand} \ci{hyphenation}\verb|{|\emph{word list}\verb|}| \end{lscommand} \noindent zařídí, že pro slova uvedená jako argument bude \LaTeX{} uvažovat rozdělení jen v~místech ve slově označených pomocí \verb|-|. Argumenty příkazu by měla být slova obsahující jen normální písmena a~znaky, které jsou \LaTeX em za normální písmena považovány. Argument příkazu (\uv{tipy} pro dělení daných slov) je uložen pro jazyk, který je aktivní ve chvíli, kdy je příkaz spuštěn. Umístíte-li tedy tento příkaz do preambule svého dokumentu, bude se vztahovat na angličtinu. Pokud příkaz umístíte za \verb|\begin{document}| a~používáte balík podporující sazbu v~jiném jazyku (např. \pai{babel}), pak se bude argument příkazu \ci{hyphenation} vztahovat na jazyk daným balíkem aktivovaný. Následující příkaz zařídí, že bude možno dělit jak \uv{hyphenation}, tak \uv{Hyphenation} a~zakáže dělení slov \uv{FORTRAN}, \uv{Fortran} a~\uv{fortran}. Argument příkazu \ci{hyphenation} nesmí obsahovat žádné speciální znaky nebo symboly. Příklad: \begin{code} \verb|\hyphenation{FORTRAN Hy-phen-a-tion}| \end{code} Příkaz \ci{-} vloží na dané místo do daného slova \uv{volitelné dělítko}. Místa v~daném slově takto označená budou jedinými místy, kde smí \LaTeX{} dané slovo rozdělit. Tento způsob popisu výjimek pro dělení slov je obzvlášť užitečný u~slov, která obsahují speciální znaky (např. znaky s~akcenty), protože \LaTeX{} sám by takováto slova neumožnil dělit v~žádném místě. %\footnote{Unless you are using the new %\wi{DC fonts}.}. \begin{example} nej\-ne\-ob\-hos\-po\-da\-% \v{r}o\-v\'{a}\-va\-tel\-% n\v{e}j\-\v{s}\'{\i}mu \end{example} Chceme-li zabránit tomu, aby byla část textu rozdělena, můžeme tento text zadat jako argument příkazu \begin{lscommand} \ci{mbox}\verb|{|\emph{text}\verb|}| \end{lscommand} \begin{example} Brzy budu mít nové telefonní číslo. Bude to \mbox{0116 291 2319}. Parametr \mbox{\emph{filename}} by měl obsahovat jméno daného souboru. \end{example} Příkaz \ci{fbox} je podobný jako \ci{mbox}, ale navíc bude okolo obsahu nakreslen rámeček. \section{Předpřipravené řetězce} V~některých z~příkladů na předchozích stranách se objevily jednoduché \LaTeX ové příkazy pro sazbu speciálních řetězců: \vspace{2ex} \noindent \begin{tabular}{@{}lll@{}} Příkaz&Možný výsledek&Popis\\ \hline \ci{today} & \today & Aktuální datum\\ \ci{TeX} & \TeX & Váš oblíbený sazeč\\ \ci{LaTeX} & \LaTeX & Jméno naší hry\\ \ci{LaTeXe} & \LaTeXe & Její aktuální inkarnace\\ \end{tabular} \section{Zvláštní znaky a~symboly} \subsection{Uvozovky} \index{uvozovky}Uvozovky byste \emph{neměli} sázet pomocí znaku \verb|"|\index{""@\texttt{""}}. Pro otevírací a~uzavírací uvozovku místo toho používáme v~\LaTeX u speciální symboly: dva znaky~\textasciigrave~(obrácený apostrof) pro otevírací uvozovku a~dva znaky~\textquotesingle~(apostrof) pro uzavírací uvozovku. Pro jednoduché uvozovky používáme jen jeden z~této dvojice znaků. \begin{example} ``Press the key `x', please.'' \end{example} Vysázeno výše vpravo to nevypadá nejlépe, ale opravdu jsme použili zpětný apostrof pro otevírací uvozovku a~normální apostrof pro zavírací. Navzdory tomu, co zvolený font skutečně vysázel\ldots \TODO{add text about quotes in Czech} \subsection{Pomlčky a~spojovníky} Spojovník do \LaTeX ového dokumentu vložíme, uvedeme-li ve vstupním souboru jeden znak \texttt{-}. Uvedením dvou, resp. tří za sebou následujících znaků \texttt{-} vložíme pomlčky dvou různých velikostí. Uvedením znaku \texttt{-} uvnitř matematického vzorce vložíme do dokumentu matematický znak mínus: \index{-}\index{--}\index{---}\index{-@$-$}\index{matematické!mínus} \begin{example} je-li, anglicko-německý\\ na stranách 13--67\\ yes---or no? \\ $0$, $1$ a~$-1$ \end{example} Jména jednotlivých znaků jsou: \wi{spojovník} (-), \wi{půlčtverčíková pomlčka} (--), \wi{čtverčíková pomlčka} (---) a~\wi{matematický znak mínus} ($-$). \subsection{Tilda ($\sim$)} \index{www}\index{URL}\index{tilda} Ve webových adresách se často objevuje znak tilda. V~\LaTeX u ho vygenerujete pomocí \verb|\~|, ale výsledek \~{} asi není to, co chcete získat. Srovnejte: \begin{example} http://www.rich.edu/\~{}bush \\ http://www.clever.edu/$\sim$demo \end{example} \subsection{Symbol stupně \texorpdfstring{($\circ$)}{}} Tisk symbolu \wi{stupeň} v~\uv{normálním} \LaTeX u. \begin{example} Je-li opravdu $-30\,^{\circ}\mathrm{C}$, je asi zima\ldots \end{example} Balík \pai{textcomp} generuje symbol stupně i~pomocí příkazu \ci{textdegree} nebo -- v~kombinaci s~C -- pomocí \ci{textcelsius}. \begin{example} 30 \textcelsius{} je 86 \textdegree{}F. \end{example} \subsection{Symbol Eura \texorpdfstring{(\officialeuro)}{}} Mnoho současných fontů obsahuje symbol Eura. Po nahrání balíku \pai{textcomp} v~preambuli dokumentu \begin{lscommand} \ci{usepackage}\verb|{textcomp}| \end{lscommand} můžete tento symbol vysázet pomocí příkazu \begin{lscommand} \ci{texteuro} \end{lscommand} Pokud váš font znak Eura neobsahuje, nebo pokud obsažen je, ale nelíbí se vám, můžete použít balík \pai{eurosym}, který poskytuje oficiální podobu symbolu: \begin{lscommand} \ci{usepackage}\verb|[|\emph{official}\verb|]{eurosym}| \end{lscommand} Pokud byste chtěli symbol Eura, který se hodí k~vašemu fontu, použijte \texttt{gen} místo \texttt{official}. %If the Adobe Eurofonts are installed on your system (they are available for %free from \url{ftp://ftp.adobe.com/pub/adobe/type/win/all}) you can use %either the package \pai{europs} and the command \ci{EUR} (for a Euro symbol %that matches the current font). % does not work % or the package % \pai{eurosans} and the command \ci{euro} (for the ``official Euro''). %The \pai{marvosym} package also provides many different symbols, including a %Euro, under the name \ci{EURtm}. Its disadvantage is that it does not provide %slanted and bold variants of the Euro symbol. \begin{table}[!htbp] \caption{Balík plný symbolů Eura.}\label{eurosymb} \begin{lined}{10cm} \begin{tabular}{llccc} LM+textcomp &\verb+\texteuro+ & \huge\texteuro &\huge\sffamily\texteuro &\huge\ttfamily\texteuro\\ eurosym &\verb+\euro+ & \huge\officialeuro &\huge\sffamily\officialeuro &\huge\ttfamily\officialeuro\\ $[$gen$]$eurosym &\verb+\euro+ & \huge\geneuro &\huge\sffamily\geneuro &\huge\ttfamily\geneuro\\ %europs &\verb+\EUR + & \huge\EURtm &\huge\EURhv % &\huge\EURcr\\ %eurosans &\verb+\euro+ & \huge\EUROSANS &\huge\sffamily\EUROSANS % & \huge\ttfamily\EUROSANS \\ %marvosym &\verb+\EURtm+ & \huge\mvchr101 &\huge\mvchr101 % &\huge\mvchr101 \end{tabular} \medskip \end{lined} \end{table} \subsection{Výpustky (\texorpdfstring{\ldots}{...})} Na psacím stroji má znak \index{čárka}{čárky} a~\index{tečka}tečky stejnou šířku jako každý jiný znak. U~sázených textů jsou tyto znaky mnohem užší a~sází se velmi blízko k~předcházejícímu písmenu. Napsáním tří teček za sebou tedy \index{výpustka}výpustku nezískáme. Získáme ji ale pomocí příkazu: \begin{lscommand} \ci{ldots} \end{lscommand} \index{...@\ldots} \begin{example} Takto ne ... ale takto ano:\\ New York, Tokyo, Budapest, \ldots \end{example} \subsection{Ligatury} Některé znaky, zapíšeme-li je ve vstupním souboru za sebou, budou vysázeny jako jediný speciální symbol (doporučujeme v~ukázce využít zvětšení). \begin{code} {\large ff fi fl ffi\ldots}\quad místo \quad {\large f{}f f{}i f{}l f{}f{}i \ldots} \end{code} Jedná se o~tzv. \index{ligatura}ligatury a~spojení jednotlivých znaků ve vstupním souboru do speciálního symbolu (ligatury) dělá \LaTeX{} automaticky. Pokud si tyto speciální symboly nepřejeme, můžeme napsat \ci{mbox}\verb|{}| mezi příslušné dva znaky. Potlačit ligatury můžeme chtít u~slov skládajících se ze dvou slov. \begin{example} \Large Not shelfful\\ but shelf\mbox{}ful \end{example} \subsection{Akcenty a~speciální znaky} \LaTeX{} podporuje používání \index{akcent}akcentů a~\index{speciální znak}speciálních znaků mnoha jazyků. Tabulka~\ref{accents} ukazuje všechny druhy akcentů aplikované na písmeno o. Akcenty jde samozřejmě stejně použít i~na ostatní písmena. Při přidávání akcentů nad písmena i~a~j je navíc potřeba odstranit tečky, které jsou součástí těchto písmen, aby s~těmito akcenty nekolidovaly. Provede se to pomocí \verb|\i| a~\verb|\j|. \begin{example} H\^otel, na\"\i ve, \'el\`eve,\\ sm\o rrebr\o d, !`Se\~norita!,\\ Sch\"onbrunner Schlo\ss{} Stra\ss e \end{example} \begin{table}[bth] \caption{Akcenty a~speciální znaky.} \label{accents} \begin{lined}{10cm} \begin{tabular}{*4{cl}} \A{\`o} & \A{\'o} & \A{\^o} & \A{\~o} \\ \A{\=o} & \A{\.o} & \A{\"o} & \B{\c}{c}\\[6pt] \B{\u}{o} & \B{\v}{o} & \B{\H}{o} & \B{\c}{o} \\ \B{\d}{o} & \B{\b}{o} & \B{\t}{oo} \\[6pt] \A{\oe} & \A{\OE} & \A{\ae} & \A{\AE} \\ \A{\aa} & \A{\AA} \\[6pt] \A{\o} & \A{\O} & \A{\l} & \A{\L} \\ \A{\i} & \A{\j} & !` & \verb|!`| & ?` & \verb|?`| \end{tabular} \index{\i{} a~\j{} bez tečky}\index{skandinávská písmena}% \index{ae@\ae}\index{umlaut}\index{grave}\index{acute}% \index{oe@\oe}\index{aa@\aa}% \bigskip \end{lined} \end{table} \section{Podpora pro neanglické jazyky} \index{internacionalizace} Když píšete dokumenty v~\index{jazyk}jazycích jiných než je angličtina, je potřeba nakonfigurovat tři aspekty \LaTeX u: \begin{enumerate} \item Všechny automaticky generované textové řetězce% \footnote{Nadpis obsahu, seznamu obrázků, \ldots} je potřeba přizpůsobit danému jazyku. Pro mnoho jazyků tak lze učinit pomocí balíku \pai{babel} od Johanna Braamse. \item Je potřeba nastavit pravidla pro dělení slov v~daném jazyce. Tento aspekt je trochu komplikovanější. Je potřeba znovu přeložit formátový soubor, který bude používat nové vzory dělení slov. Váš \guide{} by měl obsahovat informace o~tom, jak to provést. \item Je potřeba nastavit typografická pravidla specifická pro daný jazyk. Např. ve francouzštině je povinné psát mezeru před každý výskyt znaku dvojtečka (:). \end{enumerate} %Pokud je Je-li váš systém %řádně nakonfigurován, aktivujte balík \pai{babel} pomocí příkazu \begin{lscommand} \ci{usepackage}\verb|[|\emph{language}\verb|]{babel}| \end{lscommand} \noindent za příkazem \verb|\documentclass|. Na začátku každého překladu pomocí \LaTeX u pak bude zobrazen seznam \emph{jazyků} zabudovaných do vašeho \LaTeX ového systému. \textsf{Babel} automaticky aktivuje příslušné vzory dělení slov pro jazyk, který si vyberete. Pokud váš \LaTeX ový formát nepodporuje dělení slov v~jazyce, s~kterým pracujete, \textsf{babel} bude fungovat i~tak, ale dělení slov samozřejmě prováděno nebude, což mívá negativní vliv na vzhled vysázeného dokumentu. \textsf{Babel} také pro některé jazyky poskytuje příkazy, které zjednodušují sazby speciálních znaků. Např. \wi{němčina} obsahuje mnoho přehlásek (\"a\"o\"u). S~nahraným \textsf{babel}em vložíte znak \"o pomocí \verb|"o| místo~\verb|\"o|. Používáte-li \textsf{babel} s~více jazyky, pak po provedení následujícího řádku vašeho dokumentu \begin{lscommand} \ci{usepackage}\verb|[|\emph{jazykA}\verb|,|\emph{jazykB}\verb|]{babel}| \end{lscommand} \noindent bude aktivní poslední z~jazyků, uvedených jako argumenty \ci{usepackage} (tj. \emph{jazykB}). Příkazem \begin{lscommand} \ci{selectlanguage}\verb|{|\emph{languageA}\verb|}| \end{lscommand} \noindent pak můžete změnit aktivní jazyk. %Input Encoding \newcommand{\ieih}[1]{% \index{kódování!vstupní!#1@\texttt{#1}}% \index{vstupní kódování!#1@\texttt{#1}}% \index{#1@\texttt{#1}}} \newcommand{\iei}[1]{% \ieih{#1}\texttt{#1}} %Font Encoding \newcommand{\feih}[1]{% \index{kódování!fontů!#1@\texttt{#1}}% \index{font -- kódování!#1@\texttt{#1}}% \index{#1@\texttt{#1}}} \newcommand{\fei}[1]{% \feih{#1}\texttt{#1}} Většina moderních počítačů umožňuje zapsat písmena národních jazyků přímo z~klávesnice. \LaTeX{} na zacházení s~vstupními kódováními různých skupin jazyků na různých platformách používá balík \pai{inputenc}: \begin{lscommand} \ci{usepackage}\verb|[|\emph{encoding}\verb|]{inputenc}| \end{lscommand} Při používání tohoto kódování byste měli vzít v~úvahu, že čtenáři vašeho dokumentu nemusí být schopni si správně zobrazit vaše vstupní soubory, protože používají jiné kódování. Např. německá přehláska \"a je na OS/2 zakódována jako 132, na Unixových systémech používajících ISO-LATIN~2 jako 228, zatímco v~kódování podle cyriliky cp1251 na Windows tento znak vůbec neexistuje. S~\pai{inputenc} byste proto měli zacházet obezřetně. Následující kódování mohou být užitečná (v~závislosti na tom, který systém používáte).\footnote{Více se o~podporovaných vstupních kódováních pro latinkové a~cyrilické jazyky můžete dočíst v~dokumentaci k~\texttt{inputenc.dtx} a~k~\texttt{cyinpenc.dtx}. Sekce~\ref{sec:Packages} ukazuje, jak vyrobit dokumentaci k~balíku.} \begin{center} \begin{tabular}{l | r | r } Operační & \multicolumn{2}{c}{kódování}\\ systém & západní latinka & cyrilika\\ \hline Mac & \iei{applemac} & \iei{macukr} \\ Unix & \iei{latin1} & \iei{koi8-ru} \\ Windows & \iei{ansinew} & \iei{cp1251} \\ DOS, OS/2 & \iei{cp850} & \iei{cp866nav} \end{tabular} \end{center} Obsahuje-li váš dokument texty ve více jazycích s~nekompatibilními vstupními kódováními, můžete používat Unicode a~balík \pai{ucs}. \begin{lscommand} \ci{usepackage}\verb|{ucs}|\\ \ci{usepackage}\verb|[|\iei{utf8x}\verb|]{inputenc}| \end{lscommand} \noindent vám umožní vytvářet \LaTeX ové vstupní soubory v~kódování \iei{utf8x}, vícebytovém kódování kde každý znak je zakódován pomocí jednoho až čtyř bytů. Jiným případem je kódování fontů, které definuje, na jakých pozicích v~\TeX ovém fontu jsou uložené jednotlivé znaky. Více vstupních kódování může být namapováno do jednoho kódování fontu, což redukuje počet potřebných sad fontů. Kódování fontů se zařizuje pomocí balíku \pai{fontenc}:\label{fontenc} \begin{lscommand} \ci{usepackage}\verb|[|\emph{encoding}\verb|]{fontenc}| \index{fonty -- kódování} \end{lscommand} \noindent kde \emph{encoding} je kódování fontu. Je možné nahrát více kódování. Implicitním kódováním fontů v~\LaTeX u je \label{OT1}\fei{OT1}, což je kódování původních \TeX o\-vých fontů Computer Modern. Tyto fonty obsahují jen 128 znaků 7-bitové znakové sady ASCII. Když chceme používat akcentované znaky, můžeme je \TeX em vytvořit kombinací normálních znaků s~akcenty. Výsledek sice vypadá dobře, ale slova s~akcentovanými znaky nelze dělit. Navíc ne všechny latinkové znaky lze vytvořit kombinací normálních znaků s~akcenty, nemluvě o~písmenech nelatinkových abeced, např. v~řečtině nebo cyrilice. Za účelem odstranění těchto nedostatků bylo navrženo několik sad osmibitových fontů odvozených z~fontů Computer Modern. Fonty \emph{Extended Cork} (EC) v~kódování \fei{T1} obsahují písmena a~interpunkční znaky většiny evropských jazyků založených na latince. Sada fontů LH obsahuje písmena potřebná k~sazbě dokumentů v~jazycích používajících cyriliku. Kvůli velkému počtu znaků cyriliky jsou tyto rozděleny do čtyř fontových kódování -- \fei{T2A}, \fei{T2B}, \fei{T2C}, a~\fei{X2}.\footnote{Seznam jazyků podporovaných každým z~těchto kódování lze najít v~\cite{cyrguide}.} Sada CB obsahuje fonty v~kódování \fei{LGR} a~lze ji použít pro řecké texty. Používáním těchto fontů můžete zlepšit, resp. umožnit dělení slov v~neanglických dokumentech. Další výhodou používání fontů odvozených z~CM je, že jsou dostupné ve všech váhách, tvarech a~opticky škálované pro různé velikosti. \subsection{Podpora pro portugalštinu} \secby{Demerson Andre Polli}{polli@linux.ime.usp.br} Aktivování dělení slov a~změnu všech automatických textů do portugalštiny \index{Portugu\^es} provedete příkazem: \begin{lscommand} \verb|\usepackage[portuguese]{babel}| \end{lscommand} Pokud jste v~Brazílii, uveďte \texttt{\wi{brazilian}} místo \texttt{\wi{portuguese}}. Protože v~portugalštině existuje mnoho akcentů, může se vám hodit \begin{lscommand} \verb|\usepackage[latin1]{inputenc}| \end{lscommand} pomocí čehož je můžete snadno zadávat a~také \begin{lscommand} \verb|\usepackage[T1]{fontenc}| \end{lscommand} pomocí kterého získáte korektní dělení slov. V~tabulce~\ref{portuguese} je uveden text preambule, který je pro práci s~portugalštinou potřeba použít. V~příkladech používáme vstupní kódování \texttt{latin1}, takže nebudou fungovat na operačních systémech Mac nebo DOS. Stačí ale nastavit stejné kódování, jako má váš systém. \begin{table}[!bth] \caption{Preambule pro dokumenty v~portugalštině.} \label{portuguese} \begin{lined}{6.5cm} \begin{verbatim} \usepackage[portuguese]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \end{verbatim} \bigskip \end{lined} \end{table} %\newpage \subsection{Podpora pro francouzštinu} \secby{Daniel Flipo}{daniel.flipo@univ-lille1.fr} Několik rad pro ty, kteří pomocí \LaTeX u vytvářejí dokumenty ve \index{francouzština}francouzštině: Nahrajte podporu francouzštiny pomocí příkazu: \begin{lscommand} \verb|\usepackage[frenchb]{babel}| \end{lscommand} Všimněte si, že z~historických důvodů je jméno \textsf{babel}ovského nastavení pro francouzštinu buď \emph{frenchb} nebo \emph{francais}, nikoliv \emph{french}. Tím jsme umožnili francouzské dělení slov (je-li váš \LaTeX ový systém řádně nakonfigurován). Také všechny automatické texty jsou převedeny do francouzštiny. \verb+\chapter+ vysází Chapitre, \verb+\today+ vysází aktuální datum ve francouzštině, atd. Je také aktivována sada nových příkazů, pomocí kterých můžete vstupní soubory ve francouzštině psát jednodušeji. Pro inspiraci se můžete podívat do tabulky \ref{cmd-french}: \begin{table}[!htbp] \caption{Speciální příkazy pro francouzštinu.} \label{cmd-french} \begin{lined}{9cm} \selectlanguage{french} \begin{tabular}{ll} \verb+\og guillemets \fg{}+ \quad &\og guillemets \fg \\[1ex] \verb+M\up{me}, D\up{r}+ \quad &M\up{me}, D\up{r} \\[1ex] \verb+1\ier{}, 1\iere{}, 1\ieres{}+ \quad &1\ier{}, 1\iere{}, 1\ieres{}\\[1ex] \verb+2\ieme{} 4\iemes{}+ \quad &2\ieme{} 4\iemes{}\\[1ex] \verb+\No 1, \no 2+ \quad &\No 1, \no 2 \\[1ex] \verb+20~\degres C, 45\degres+ \quad &20~\degres C, 45\degres \\[1ex] \verb+\bsc{M.~Durand}+ \quad &\bsc{M.~Durand} \\[1ex] \verb+\nombre{1234,56789}+ \quad &\nombre{1234,56789} \end{tabular} \selectlanguage{czech}% \bigskip \end{lined} \end{table} S~přepnutím do francouzštiny se změní i~vzhled seznamů. Více informací o~tom, co volba \texttt{frenchb} v~\textsf{babel}u dělá a~jak lze přizpůsobit, spusťte \LaTeX{} na soubor \texttt{frenchb.dtx} a~přečtěte si vytvořený soubor \texttt{frenchb.dvi}. \subsection{Podpora pro němčinu} Několik tipů pro ty, kteří v~\LaTeX u vytvářejí dokumenty v~\index{němčina}němčině\index{němčina}: nahrajte podporu pro němčinu pomocí následujícího příkazu: \begin{lscommand} \verb|\usepackage[german]{babel}| \end{lscommand} Tím je umožněno německé dělení slov (je-li váš \LaTeX ový systém nakonfigurován správně) a~změněny automatické texty do němčiny. Z~\uv{Chapter} se tak stává \uv{Kapitel}. K~dispozici je navíc sada nových příkazů, pomocí kterých můžete psát německé vstupní soubory rychleji dokonce i~tehdy, když nepoužíváte balík \texttt{inputenc}. Pro inspiraci můžete nahlédnout do tabulky \ref{german}. Jestliže ale balík \texttt{inputenc} používáte, je možná lepší psát speciální německé symboly jednoduše vložením kódu daného znaku v~daném kódování. (Nevýhodou tohoto postupu by snad mohly být komplikace při konverzi dokumentu do jiného kódování.) % With inputenc, all this becomes moot, but your text also is locked in a particular encoding world.\TODO{what was meant?} \shorthandon{"} \begin{table}[!htbp] \caption{Speciální německé znaky.} \label{german} \begin{lined}{8cm} \selectlanguage{german} \begin{tabular}{*2{ll}} \verb|"a| & "a \hspace*{1ex} & \verb|"s| & "s \\[1ex] \verb|"`| & "` & \verb|"'| & "' \\[1ex] \verb|"<| nebo \ci{flqq} & "< & \verb|">| nebo \ci{frqq} & "> \\[1ex] \ci{flq} & \flq & \ci{frq} & \frq \\[1ex] \ci{dq} & " \\ \end{tabular} \selectlanguage{czech} \bigskip \end{lined} \end{table} \shorthandoff{"} V~německých knihách se často setkáte s~francouzskými uvozovkami (\flqq guil\-le\-mets\frqq). Němečtí sazeči je ale používají jinak než francouzští. Citace v~německé knize vypadá \frqq takto\flqq. V~německy mluvící části Švýcarska ale sazeči používají \flqq guillemets\frqq~stejným způsobem jako francouzští. Vážným problémem vyskytujícím se při používání příkazů typu \verb+\flq+ je, že jestliže používáte font OT1 (což je implicitní font), guillemets vypadají jako matematický symbol ``$\ll$'', což žádného sazeče nepotěší. Naproti tomu fonty kódované pomocí T1 obsahují příslušné symboly. Pokud tedy tento typ citací používáte, užijte fontů v~kódování T1, \verb|\usepackage[T1]{fontenc}|. %\newpage \subsection[Podpora pro korejštinu]{Podpora pro korejštinu\footnotemark}\label{support_korean}% \footnotetext{% Nastínění řady problémů, s~kterými se korejští uživatelé \LaTeX u musejí vypořádat. Za korejský tým překladatelů lshort tuto sekci sepsal Karnes KIM. Do angličtiny text přeložil SHIN Jungshik a~zredukoval Tobi Oetiker.} Abychom %pomocí \LaTeX u mohli sázet \index{korejština}korejštinu, musíme vyřešit tři problémy: \begin{enumerate} \item Musíme být schopni vytvořit \wi{vstupní soubory v~korejštině}. Tyto soubory musí mít formát obyčejného textu, ale protože korejština používá vlastní znakovou sadu odlišnou od US-ASCII, budou při prohlížení pomocí normálního ASCII editoru tyto vstupní soubory vypadat \uv{divoce}. Dvě nejčastěji používaná kódování korejštiny jsou EUC-KR a~shora kompatibilní rozšíření používané na korejských MS-Windows, CP949/Windows-949/UHC. U~těchto kódování kódy znaků US-ASCII reprezentují příslušné ASCII znaky, podobně jako u~ostatních kompatibilních kódování jako např. ISO-8859-\textit{x}, EUC-JP, Big5 nebo Shift\_JIS. Naopak, slabiky Hangul, Hanjas (čínské znaky použité v~korejštině), Hangul Jamos, Hiraganas, Katakanas, Greek a~cyrilické znaky a~další symboly a~znaky odvozené z~KS~X~1001 jsou reprezentovány dvěma byty. První z~nich má nastaven svůj nejvýznamnější bit. Do poloviny devadesátých let minulého století bylo velmi obtížné nastavit korejské národní prostředí na nelokalizovaných (nekorejských) operačních systémech. Chcete-li mít představu o~tom, jak se tehdy korejština na nekorejských operačních systémech používala, podívejte se do dnes už velmi zastaralého dokumentu \url{http://jshin.net/faq}. \item \TeX{} a~\LaTeX{} byly původně navrženy pro písmové systémy jejichž abecedy obsahovaly maximálně 256 znaků. Aby bylo možné sázet i~jazyky s~mnohem více znaky, jako např. korejštinu% \footnote{ Korejský Hangul je systém založený na abecedě s~čtrnácti základními souhláskami a~deseti základními samohláskami (\emph{jamos} [čamo]). Na rozdíl od latinky nebo cyriliky musí být jednotlivé znaky seřazeny do obdélníkových bloků velikých zhruba jako čínské znaky. Každý blok reprezentuje slabiku. Z~konečného množství samohlásek a~souhlásek je tedy možno vytvořit neomezeně mnoho slabik. Moderní korejské pravopisné standardy (pro Severní i~Jižní Koreu) ale pro tvorbu uvádějí určitá omezení. Důsledkem je existence pouze konečného počtu korektních slabik. Korejské znakové kódování pro každou z~těchto slabik definuje kódové pozice (KS~X~1001:1998 and KS~X~1002:1992). To znamená, že Hangul, i~když je abecedního typu, se zpracovává jako čínština a~japonština, s~jejich desetitisíci obrázkovými/slovními znaky. ISO~10646/Unicode nabízí dvě cesty, jak Hangul použitý pro \emph{moderní} korejštinu reprezentovat. První možností je pomocí zakódování spojených samohlásek Hangulu (abecedy: \url{http://www.unicode.org/charts/PDF/U1100.pdf}). \par Druhou možností je zakódování všech korektních slabik Hangulu \emph{moderní} korejštiny (\url{http://www.unicode.org/charts/PDF/UAC00.pdf}). Jednou z~nejobávanějších výzev sazby korejštiny pomocí \LaTeX u a~příslušného sázecího systému je podpora středověké korejštiny -- a~případně budoucích korejštin -- slabik, které lze reprezentovat jedině spojením \emph{jamo} v~Unicode. Lze doufat, že budoucí \TeX ové systémy, např. $\Omega$ a~$\Lambda$, přinesou řešení, takže i~korejští lingvisté a~historici budou moct přejít z~Microsoft Wordu, který má pro středověkou korejštinu slušnou podporu. } nebo čínštinu, byl vytvořen mechanismus subfontů. Ten dělí jeden ČJK font s~tisíci nebo desetitisíci znaků na množinu subfontů po 256 znacích. Pro korejštinu se široce používají tři balíky; \wi{H\LaTeX} od UN~Koaunghiho, \wi{h\LaTeX{}p} od CHA~Jaechoona a~\wi{balík CJK} od Wernera~Lemberga.\footnote{% \raggedright% Je možné je získat z~\CTANref|language/korean/HLaTeX/|, \CTANref|language/korean/CJK/| a~\texttt{http://knot.kaist.ac.kr/htex/}} H\LaTeX{} a~h\LaTeX{}p jsou specifické pro korejštinu a~kromě podpory fontů poskytují i~korejskou lokalizaci. Oba umějí zpracovat korejské vstupní soubory zakódované v~EUC-KR. H\LaTeX{}, je-li použitý spolu se systémem $\Lambda$ nebo $\Omega$, umí zpracovat dokonce i~vstupní soubory zakódované v~CP949/Windows-949/UHC a~UTF-8. Balík CJK není specifický pro korejštinu. Umí zpracovat vstupní soubory v~kódování UTF-8, EUC-KR a~CP949/Windows-949/UHC a~je možné s~ním sázet vícejazyčné dokumenty (zvláště čínštinu, japonštinu a~korejštinu). Na rozdíl od h\LaTeX u neobsahuje balík CJK korejskou lokalizaci a~nemá ani tolik speciálních korejských fontů. Konečným cílem použití programů typu \TeX{} a~\LaTeX{} je vysázení dokumentů ,esteticky` uspokojivým způsobem. Lze tvrdit, že nejdůležitější částí sazby je množina dobře navržených fontů. Distribuce H\LaTeX u obsahuje fonty \index{korejský font!font UHC}UHC \PSi{} (deset rodin písem) a~TrueType fonty Munhwabu\footnote{Korejské ministerstvo kultury.} (pět rodin písem). Balík CJK pracuje s~množinou fontů používanou dřívější verzí H\LaTeX u a~může používat cyberbit TrueType font od Bitstreamu. \end{enumerate} Abyste mohli své korejské texty vysázet pomocí balíku H\LaTeX, vložte následující řádek do preambule svého dokumentu: \begin{lscommand} \verb+\usepackage{hangul}+ \end{lscommand} Tímto příkazem se zapne korejská lokalizace. Názvy kapitol, sekcí, podsekcí, obsah a~tabulka obrázků budou všechny přeloženy do korejštiny a~formátování dokumentu bude přizpůsobeno korejským konvencím. Navíc je aktivován automatický výběr \uv{částic}. Korejština má dvojice částic-přípon, které jsou gramaticky ekvivalentní, ale liší se formou. To, kterou z~nich použít závisí na tom, zda předcházející slabika končí samohláskou nebo souhláskou (zjednodušeně řečeno). Rodilí mluvčí nemají problém vybrat správnou částici, ale u~odkazů a~dalších automatických textů je tento výběr nemožný. Ruční upravování částic po každém přidání nebo odebrání odkazu nebo dalších úpravách je únavné. H\LaTeX{} vás této zátěže zbaví. Pokud chcete sázet korejštinu, ale korejskou lokalizaci nepotřebujete, stačí do preambule dokumentu vložit následující řádku: \begin{lscommand} \verb+\usepackage{hfont}+ \end{lscommand} Více informací o~sazbě korejštiny pomocí H\LaTeX u lze najít v~návodu k~H\LaTeX u. Dalším zdrojem informací jsou stránky korejské skupiny uživatelů \TeX u (KTUG) na \url{http://www.ktug.or.kr/}. K~dispozici je také korejský překlad tohoto manuálu. \subsection{Sazba řečtiny} \secby{Nikolaos Pothitos}{pothitos@di.uoa.gr} Abyste mohli sázet \index{řečtina}řečtinu\index{Greek}, musíte do preambule svého dokumentu vložit text uvedený v~tabulce~\ref{preamble-greek}. Potom bude umožněno dělení řeckých slov a~změněny automatické texty.% \footnote{Použijete-li volbu \texttt{utf8x} balíku \texttt{inputenc}, \LaTeX{} bude umět číst řecké a~polytonické řecké znaky Unicodu.} \begin{table}[!bthp] \caption{Preambule pro řecké dokumenty.} \label{preamble-greek} \begin{lined}{7cm} \begin{verbatim} \usepackage[english,greek]{babel} \usepackage[iso-8859-7]{inputenc} \end{verbatim} \bigskip \end{lined} \end{table} Výše zmíněný text v~preambuli také zpřístupní množinu příkazů, pomocí které lze jednodušeji psát vstup v~řečtině. Pro dočasné přepínání mezi řečtinou a~angličtinou můžeme použít příkazy \verb|\textlatin{|\emph{anglický text}\verb|}| a~\verb|\textgreek{|\emph{řecký text}\verb|}|, které oba vysázejí text předaný jako argument pomocí požadovaného kódování. Pro \uv{dlouhodobé} přepnutí použijte příkaz \verb|\selectlanguage| popsaný v~předchozí sekci. Některé z~řeckých interpunkčních znaků jsou uvedené v~tabulce~\ref{sym-greek} Použijte \verb|\euro| pro symbol Eura. \begin{table}[!htbp] \caption{Greek Special Characters.} \label{sym-greek} \begin{lined}{4cm} \selectlanguage{french} \begin{tabular}{*2{ll}} \verb|;| \hspace*{1ex} & $\cdot$ \hspace*{1ex} & \verb|?| \hspace*{1ex}& ; \\[1ex] \verb|((| & \og & \verb|))|& \fg \\[1ex] \verb|``| & ` & \verb|''| & ' \\ \end{tabular} \selectlanguage{czech} \bigskip \end{lined} \end{table} \subsection{Podpora cyriliky} \secby{Maksym Polyakov}{polyama@myrealbox.com} Verze~3.7h balíku \pai{babel} obsahuje podporu kódování \fei{T2*} a~podporu sazby bulharských, ruských a~ukrajinských textů pomocí písmen cyriliky. Podpora pro cyriliku je založena na mechanismech standardního \LaTeX u a~balíků \pai{fontenc} a~\pai{inputenc}. Pokud ale chcete používat cyriliku v~matematickém módu, budete potřebovat před balíkem \pai{fontenc} nahrát balík \pai{mathtext}:\footnote{Používáte-li balíky \AmS-\LaTeX, nahrajte je také před \pai{fontenc} a~\paih{babel}\textsf{babelem}.} \begin{lscommand} \verb+\usepackage{mathtext}+\\ \verb+\usepackage[+\fei{T1}\verb+,+\fei{T2A}\verb+]{fontenc}+\\ \verb+\usepackage[+\iei{koi8-ru}\verb+]{inputenc}+\\ \verb+\usepackage[english,bulgarian,russian,ukranian]{babel}+ \end{lscommand} Balík \pai{babel} obecně automaticky vybere implicitní kódování fontů, což pro výše zmíněné tři jazyky je kódování \fei{T2A}. Dokumenty ale mohou obsahovat text ve více kódováních. Vícejazyčné dokumenty používající jak cyrilické tak latinkové jazyky je rozumné explicitně vložit v~kódování latinkového fontu. \paih{babel}\textsf{Babel} se postará o~přepnutí do příslušného kódování fontů ve chvíli, kde je v~dokumentu vybrán jiný jazyk. Mimo zpřístupnění dělení slov, překladu automaticky generovaných textů a~aktivování některých typografických pravidel týkajících se konkrétních jazyků (podobně jako příkaz \ci{frenchspacing} ve standardním \LaTeX u) \pai{babel} poskytuje příkazy umožňující sazbu podle standardů bulharštiny, ruštiny nebo ukrajinštiny. K~dispozici jsou interpunkční symboly pro všechny tři jazyky: cyrilická textová pomlčka (trochu užší než latinková a~obklopená drobnými mezerami), pomlčka pro přímou řeč, uvozovky a~příkazy usnadňující dělení slov, všechny jsou uvedeny v~tabulce~\ref{Cyrillic}. % Table borrowed from Ukrainian.dtx \begin{table}[htb] \begin{center} \index{""-@\texttt{""}\texttt{-}} \index{""---@\texttt{""}\texttt{-}\texttt{-}\texttt{-}} \index{""=@\texttt{""}\texttt{=}} \index{""`@\texttt{""}\texttt{`}} \index{""'@\texttt{""}\texttt{'}} \index{"">@\texttt{""}\texttt{>}} \index{""<@\texttt{""}\texttt{<}} \caption[Bulharština, ruština a~ukrajinština.]{Speciální definice pro bulharské, ruské a~ukrajinské volby.\paih{babel}%\textsf{babelu}. }\label{Cyrillic}\shorthandon{"} \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} \hline \verb="|= & Zakaž ligaturu na tomto místě. \\ \verb|"-| & Explicitní pomlčka, která nebrání dělení v~daném slově. \\ \verb|"---| & Pomlčka pro obyčejný text v~cyrilice. \\ \verb|"--~| & Pomlčka pro složená jména (příjmení) v~cyrilice. \\ \verb|"--*| & Pomlčka pro přímou řeč v~cyrilice. \\ \verb|""| & Podobné jako \verb|"-|, ale nevytvoří žádný znak pomlčky (pro složená slova s~pomlčkou, např.\verb|x-""y| nebo některé jiné znaky jako \uv{zakaž/povol}. \\ \verb|"~| & Pro složené slovo bez možnosti zlomu. \\ \verb|"=| & Pro složené slovo s~možností zlomu, umožňující dělení v~jednotlivých slovech. \\ \verb|",| & Úzká mezera pro iniciály s~místem zlomu v~následujícím příjmení. \\ \verb|"`| & Pro německé levé dvojité uvozovky (vypadají podobně jako: \quotedblbase). \\ \verb|"'| & Pro německé pravé dvojité uvozovky (vypadají takto: ``). \\%'' \verb|"<| & Pro francouzské levé dvojité uvozovky (vypadají jako: $<\!\!<$). \\ \verb|">| & Pro francouzské pravé dvojité uvozovky (vypadají jako: $>\!\!>$). \\ \hline \end{tabular} \end{center} \end{table} \shorthandoff{"} Ruské a~ukrajinské volby \paih{babel}\textsf{babelu} definují příkazy \ci{Asbuk} a~\ci{asbuk}, které se chovají jako \ci{Alph} a~\ci{alph}, ale vytvoří velká a~malá písmena ruské nebo ukrajinské abecedy (v~závislosti na tom, který z~těchto jazyků je právě aktivní). Bulharská volba \paih{babel}\textsf{babelu} zpřístupňuje příkazy \ci{enumBul} a~\ci{enumLat} (\ci{enumEng}), které předefinovávají \ci{Alph} a~\ci{alph} tak, že vytvoří písmena bulharské nebo latinské (anglické) abecedy. Implicitní výstup příkazů \ci{Alph} a~\ci{alph} pro bulharštinu jsou znaky z~bulharské abecedy. %Finally, math alphabets are redefined and as well as the commands for math %operators according to Cyrillic typesetting traditions. \subsection{Podpora pro mongolštinu} Pro sazbu mongolštiny pomocí \LaTeX u máte dvě možnosti: buď vícejazyčný Babel, nebo Mon\TeX{} Olivera Corffa. Mon\TeX{} podporuje jak cyrilici tak tradiční mongolské písmo. Abyste mohli použít příkazy Mon\TeX u, přidejte: \begin{lscommand} \ci{usepackage}\verb|[|\emph{language},\emph{encoding}\verb|]{mls}| \end{lscommand} \noindent do preambule. Pro generování popisů a~dat v~moderní mongolštině zadejte \pai{xalx} jako volbu \emph{language}. Pro psaní celého dokumentu v~mongolštině je třeba jako \emph{language} zadat hodnotu \pai{bicig}. Volba jazyka \pai{bicig} umožňuje vstupní metody \uv{zjednodušené transliterace}. Latinkový transliterační mód lze povolit a~zakázat pomocí \begin{lscommand} \verb|\SetDocumentEncodingLMC| \end{lscommand} a~\begin{lscommand} \verb|\SetDocumentEncodingNeutral| \end{lscommand} Na \CTANalt|tex-archive/language/mongolian/montex/doc| získáte další informace o~Mon\TeX u. Mongolské cyrilické písmo je podporováno i~v~\paih{babel}\textsf{babelu}. Podporu pro mongolštinu aktivujete pomocí příkazů: \begin{lscommand} \verb|\usepackage[T2A]{fontenc}|\\ \verb|\usepackage[mn]{inputenc}|\\ \verb|\usepackage[mongolian]{babel}| \end{lscommand} \noindent kde \iei{mn} je vstupní kódování \iei{cp1251}. Pro modernější přístup místo toho použijte \iei{utf8}. \section{Mezery mezi slovy} Aby mohly být řádky vysázených odstavců zarovnané (tj. mít stejnou šířku), \LaTeX{} mezi slova vkládá různě velké mezery. Na konci věty je obvykle vložena větší mezera, čímž se zlepší čitelnost. \LaTeX{} předpokládá, že věty končí buď tečkou, otazníkem nebo vykřičníkem. Pokud ale tečka následuje za velkým písmenem, \LaTeX{} předpokládá, že se o~konec věty \emph{nejedná} -- ve většině případů totiž tato situace opravdu nastává u~zkratek (uvedených uprostřed věty). Chceme-li jiné chování než to popsané v~předchozím odstavci, musíme se o~ně sami postarat: Backslash před mezerou generuje mezeru, která se nikdy \uv{nenatáhne}. Znak tilda~`\verb|~|' vygeneruje mezeru, která také nemůže být roztažena a~navíc v~ní ani nemůže dojít k~řádkovému zlomu. Příkaz \verb|\@| uvedený před tečkou specifikuje, že tato tečka ukončuje větu, i~když předchází velké písmeno. \cih{"@}\index{~@ \verb.~.}\index{tilda@tilda ( \verb.~.)}\index{. (mezera za .)} \begin{example} Prof.~Smith byl šťastný, že ji vidí\\ srv.~Obr.~5\\ Mám rád BASIC\@. Co vy? \end{example} Dodatečné mezery za tečkami lze zakázat pomocí příkazu \begin{lscommand} \ci{frenchspacing} \end{lscommand} \noindent který \LaTeX u řekne, aby za tečku vložil \emph{stejné množství} mezery bez ohledu na to, jestli se nachází na konci věty. To je běžné v~neanglických jazycích (s~výjimkou bibliografií). Použijete-li (jednou) \ci{frenchspacing}, příkaz \verb|\@| už pak není nutné nikdy uvádět. %\newpage \section{Titulky, kapitoly, sekce} Rozdělením dokumentu do kapitol, sekcí a~podsekcí usnadníme čitateli orientaci v~textu. \LaTeX{} pro tento účel nabízí několik příkazů, které jako svůj argument přijímají název dané kapitoly, sekce, \ldots \ Jen je nesmíte \uv{pomíchat}. Následující \emph{oddílové} příkazy jsou dostupné ve třídě dokumentů \texttt{article}: \nopagebreak \begin{lscommand} \ci{section}\verb|{...}|\\ \ci{subsection}\verb|{...}|\\ \ci{subsubsection}\verb|{...}|\\ \ci{paragraph}\verb|{...}|\\ \ci{subparagraph}\verb|{...}| \end{lscommand} Chcete-li svůj dokument rozdělit do částí aniž byste ovlivnili číslování sekcí nebo kapitol, použijte \begin{lscommand} \ci{part}\verb|{...}| \end{lscommand} Používáte-li třídu \texttt{report} nebo \texttt{book}, máte na nejvyšší úrovni k~dispozici ještě oddílový příkaz \begin{lscommand} \cialt{chapter}{cghapter}\verb|{...}| \end{lscommand} Protože třída \texttt{article} neví nic o~kapitolách (chapters), je jednoduché přidat články (articles) jako kapitoly do knihy (book). Mezery mezi sekcemi, číslování a~velikost fontu nadpisů \LaTeX{} přizpůsobí automaticky. Dva oddílové příkazy se trochu liší: \begin{itemize} \item Příkaz \ci{part} neovlivňuje sekvenci čísel kapitol. \item Příkaz \ci{appendix} nemá argumenty, pouze změní značení kapitol z~čísel na písmena.\footnote{Pro styl \emph{article} se změní číslování sekcí.} \end{itemize} Obsah je \LaTeX em vytvořen pomocí informací (jmen oddílů a~čísel stran, kde jednotlivé oddíly začínají) shromážděných při předchozím překladu dokumentu. Příkaz \begin{lscommand} \ci{tableofcontents} \end{lscommand} \noindent vytvoří obsah v~místě, kde je zapsán. Aby čísla stránek uvedená v~obsahu byla správná, je obvykle potřeba nový dokument \LaTeX em přeložit dvakrát. Někdy je dokonce potřeba dokument přeložit třikrát -- \LaTeX{} vás na potřebu třetího přeložení případně sám upozorní. Všechny oddílové příkazy zmíněné výše existují i~ve \uv{hvězdičkovaných} verzích. Tyto verze zapíšeme tak, že za jméno příkazu uvedeme hvězdičku. Tyto verze se liší v~tom, že nejsou uvedeny v~obsahu a~nejsou číslovány. Ukázka hvězdičkované verzi příkazu: \verb|\section*{Help}|. Normálně jsou názvy oddílů v~obsahu zobrazeny stejně, jako jsou vysázeny na začátku daného oddílu. Příliš dlouhé názvy by se do obsahu nevešly a~v~takových případech je možné pomocí nepovinného argumentu zadat kratší text, který pro danou kapitolu bude v~obsahu vysázen. \begin{code} \verb|\chapter[Title for the table of contents]{A long|\\ \verb| and especially boring title, shown in the text}| \end{code} \index{titul}Titul celého dokumentu se generuje pomocí příkazu \begin{lscommand} \ci{maketitle} \end{lscommand} \noindent Text popisující titul se vkládá pomocí příkazů \begin{lscommand} \ci{title}\verb|{...}|, \ci{author}\verb|{...}| a~případně \ci{date}\verb|{...}| \end{lscommand} \noindent před zavoláním \verb|\maketitle|. V~příkazu \ci{author} může být seznam jmen oddělených příkazy \ci{and}. % Na obrázku~\ref{document} najdete ukázku použití některých z~příkazů zmíněných výše. Kromě právě zmíněných oddílových příkazů má \LaTeXe{} tři další příkazy ve třídě \verb|book|. Jsou užitečné pro dělení publikací. Tyto příkazy mění názvy kapitol a~číslování stránek tak, jak je obvyklé u~knih: \begin{description} \item[\ci{frontmatter}] by měl být uveden jako úplně první příkaz na začátku těla dokumentu (\verb|\begin{document}|). Tento příkaz zapne číslování stránek římskými čísly a~sekce nebudou číslovány, jako kdybyste používali hvězdičkované verze příkazů (např. \verb|\chapter*{Preface}|). V~obsahu ale sekce uvedeny \emph{budou}. \item[\ci{mainmatter}] se píše před první kapitolou knihy. Zapne číslování stránek arabskými čísly a~stránky začne číslovat znovu od jedné. \item[\ci{appendix}] značí místo, kde ve vašem dokumentu začíná přídavný materiál. Případné následující kapitoly budou značeny písmeny (a~ne čísly). \item[\ci{backmatter}] by mělo být uvedeno před posledními položkami vaší knihy (jako jsou seznam literatury a~rejstřík% %bibliografie a~index ). V~standardních třídách dokumentů nemá tento příkaz žádný efekt. \end{description} \section{Křížové odkazy} V~knihách, zprávách a~článcích se často odkazujeme (tj. používáme \wi{křížové odkazy}) na obrázky, tabulky a~speciální části textu. V~\LaTeX u jsou k~dispozici tyto příkazy pro křížové odkazy: \begin{lscommand} \ci{label}\verb|{|\emph{marker}\verb|}|, \ci{ref}\verb|{|\emph{marker}\verb|}| a~\ci{pageref}\verb|{|\emph{marker}\verb|}| \end{lscommand} \noindent kde \emph{marker} (též značka) je identifikátor vybraný uživatelem. \LaTeX{} nahradí \verb|\ref| číslem sekce, podsekce, obrázku, tabulky nebo věty za kterými se vyskytuje příslušný příkaz \verb|\label|. Příkaz \verb|\pageref| vypíše číslo stránky, na které se vyskytl příkaz \verb|\label|.% \footnote{Tyto příkazy neví, na co odkazují. \ci{label} jen uloží naposledy vygenerované číslo.} Použijí se čísla vygenerovaná v~předchozím překladu dokumentu, podobně jako u~názvů oddílů. \begin{example} Odkaz na tuto sekci \label{sec:this} vypadá takto: \uv{viz sekce~\ref{sec:this} na straně~\pageref{sec:this}.} \end{example} \section{Poznámky pod čarou} Příkazem \begin{lscommand} \ci{footnote}\verb|{|\emph{footnote text}\verb|}| \end{lscommand} \noindent vysázíme u~paty stránky poznámku (tzv. poznámku pod čarou). Poznámky pod čarou vkládáme za\footnote{Upozornění: \emph{ne} před.} slovo nebo větu, ke které se vztahují. Poznámky k~větě nebo její části bychom tedy měli napsat za čárku nebo tečku.\footnote{Poznámky pod čarou odvádějí čtenářovu pozornost od hlavní části dokumentu -- jsme nakonec zvědaví tvorové, proč tedy neříct všechno v~hlavní části dokumentu?\footnotemark} \footnotetext{Ukazatel směru nemusí sám jít tam, kam ukazuje. \texttt{:-)}} \begin{example} Poznámky pod čarou\footnote{Toto je jedna z~nich.} jsou u~lidí používajících \LaTeX{} časté. \end{example} \section{Zdůrazněná slova} Na psacím stroji důležitá slova \texttt{zvýrazňujeme jejich \underline{podtržením}}. \begin{lscommand} \ci{underline}\verb|{|\emph{text}\verb|}| \end{lscommand} V~knihách se ale slova zvýrazňují vysázením pomocí \emph{italického} fontu. \LaTeX{} ke zvýraznění textu poskytuje příkaz \begin{lscommand} \ci{emph}\verb|{|\emph{text}\verb|}| \end{lscommand} \noindent Záleží na kontextu, co tento příkaz se svým argumentem udělá: \begin{example} \emph{Budete-li zvýrazňovat uvnitř zvýrazňovaného textu, \LaTeX{} pro toto zvýraznění použije \emph{normální} font} \end{example} Všimněte si rozdílu mezi \emph{zvýrazněním} a~změnou \emph{fontu}: \begin{example} \textit{Máte možnost \emph{zvýraznit} text sázený pomocí italiky,} \textsf{pomocí \emph{bezserifového} fontu,} \texttt{nebo pomocí stylu \emph{psací stroj}.} \end{example} \section{Prostředí} \label{env} % To typeset special purpose text, \LaTeX{} defines many different % \wi{environment}s for all sorts of formatting: \begin{lscommand} \ci{begin}\verb|{|\emph{environment}\verb|}|\quad \emph{text}\quad \ci{end}\verb|{|\emph{environment}\verb|}| \end{lscommand} \noindent Kde \emph{environment} je jméno prostředí. Prostředí mohou být vnořená, ale nesmí být \uv{pomíchaná}. \begin{code} \verb|\begin{aaa}...\begin{bbb}...\end{bbb}...\end{aaa}| \end{code} \noindent V~následujících podsekcích vysvětlíme všechna důležitá prostředí. \subsection{Itemize, Enumerate a Description} Prostředí \ei{itemize} je užitečné pro jednoduché seznamy (také se říká výčty), prostředí \ei{enumerate} pro číslované seznamy a~\ei{description} pro popisy. \cih{item} \begin{example} \flushleft \begin{enumerate} \item Seznamová prostředí můžete míchat, jak se vám zlíbí: \begin{itemize} \item Ale výsledek nemusí vypadat dobře. \item[--] S~pomlčkou. \end{itemize} \item Proto vezměte v~úvahu: \begin{description} \item[Hloupé] věci nezlepšíme tím, že je dáme do seznamu. \item[Chytré] věci ale uvedením v~seznamu mohou získat. \end{description} \end{enumerate} \end{example} \subsection{Flushleft, Flushright a Center} Prostředí \ei{flushleft} a~\ei{flushright} generují odstavce s~řádky zarovnanými vlevo, resp. vpravo.\index{zarovnané doleva} Prostředí \ei{center} generuje text s~vycentrovanými řádky. Pokud nespecifikujete řádkový zlom sami, pomocí \ci{\bs}, \LaTeX{} řádky zalomí automaticky. \begin{example} \begin{flushleft} Tento text je\\ zarovnaný doleva. \LaTeX{} se nesnaží zajistit, aby každý řádek byl stejně široký. \end{flushleft} \end{example} \begin{example} \begin{flushright} Tento text je zarovnaný\\doprava. \LaTeX{} se nesnaží zajistit, aby každý řádek byl stejně široký. \end{flushright} \end{example} \begin{example} \begin{center} V~centru\\země \end{center} \end{example} \subsection{Citace, citáty a~verše} Prostředí \ei{quote} je užitečné pro citace, důležité fráze a~příklady. \begin{example} Obecné pravidlo pro délku řádku je: \begin{quote} V~průměru by žádný řádek neměl být delší než 66~znaků. \end{quote} Proto mají \LaTeX ové stránky implicitně tak široké okraje a~proto se v~novinách tiskne do sloupců. \end{example} Existují dvě podobná prostředí: \ei{quotation} a~\ei{verse}. Prostředí \texttt{quotation} je užitečné pro delší citace (přes několik odstavců), protože odsadí první řádku každého z~těchto odstavců. Prostředí \texttt{verse} je užitečné pro básně (jejichž rozdělení do řádek se nedá dělat automaticky). Jejich řádky jsou odděleny pomocí \ci{\bs} na konci řádky a~prázdné řádky oddělují sloky. \begin{example} Nazpaměť znám pouze jednu anglickou báseň. Je o~Humpty Dumptym. \begin{flushleft} \begin{verse} Humpty Dumpty sat on a~wall:\\ Humpty Dumpty had a~great fall.\\ All the King's horses and all the King's men\\ Couldn't put Humpty together again. \end{verse} \end{flushleft} \end{example} \subsection{Abstrakty} Vědecké publikace obvykle začínají abstraktem -- rychlým přehledem obsahu. \LaTeX{} pro tento účel poskytuje prostředí \ei{abstract}, které obvykle používáme v~dokumentech sázených pomocí třídy \texttt{article}. \newenvironment{abstract}% {\begin{center}\begin{small}\begin{minipage}{0.8\textwidth}}% {\end{minipage}\end{small}\end{center}} \begin{example} \begin{abstract} Abstraktní abstrakt. \end{abstract} \end{example} \subsection{Sazba doslovně} Text uzavřený mezi \verb|\begin{|\ei{verbatim}\verb|}| a~\verb|\end{verbatim}| bude vysázen tak, jak je, jako kdyby byl napsán na psacím stroji. Všechny řádkové zlomy a~mezery budou zachovány a~jména \LaTeX ových příkazů budou vysázena, místo toho, aby se příslušné příkazy vykonaly. Vprostřed normálního textu můžeme podobného chování docílit pomocí \begin{lscommand} \ci{verb}\verb|+|\emph{text}\verb|+| \end{lscommand} \noindent \verb|+| je jedním z~možných oddělovačů. Můžete použít libovolný znak kromě písmen, \verb|*| a~mezery. Mnoho příkladů v~této knize je sázeno pomocí tohoto příkazu. \begin{example} Příkaz \verb|\ldots| \ldots \begin{verbatim} 10 PRINT "HELLO WORLD "; 20 GOTO 10 \end{verbatim} \end{example} \begin{example} \begin{verbatim*} hvězdičkovaná verze doslovného prostředí zdůrazňuje mezery v~textu \end{verbatim*} \end{example} Příkaz \ci{verb} lze s~hvězdičkou použít také: \begin{example} \verb*|like this :-) | \end{example} Prostředí \texttt{verbatim} a~příkaz \verb|\verb| někdy nejdou použít uvnitř parametru příkazu. \subsection{Tabular} \newcommand{\mfr}[1]{\framebox{\rule{0pt}{0.7em}\texttt{#1}}} Pomocí prostředí \ei{tabular} lze sázet nádherné \index{tabulka}tabulky s~případnými horizontálními a~vertikálními linkami. Šířku sloupců \LaTeX{} určí automaticky. Argument \emph{table spec} příkazu \begin{lscommand} \verb|\begin{tabular}[|\emph{pos}\verb|]{|\emph{table spec}\verb|}| \end{lscommand} \noindent definuje formát tabulky. Sloupec tabulky zarovnaný vlevo se specifikuje pomocí \mfr{l}, sloupec zarovnaný vpravo pomocí \mfr{r} a~vycentrovaný sloupec pomocí \mfr{c}; sloupec obsahující zarovnaný text (výsledek automatického řádkového zlomu \LaTeX u) pomocí \mfr{p\{\emph{width}\}} a~vertikální linka pomocí \mfr{|}. Je-li text pro daný sloupec příliš široký, \LaTeX{} ho \emph{nebude} automaticky lámat. Pro přizpůsobení textu šířce sloupce je potřeba použít \mfr{p\{\emph{width}\}}, kde se pak s~textem bude zacházet stejně, jako v~normálním odstavci. Argument \emph{pos} specifikuje vertikální pozici tabulky vzhledem k~účaří okolního textu. Můžete použít některý ze znaků \mfr{t}, \mfr{b} a~\mfr{c} (pro zarovnání horní části, resp. spodní části, resp. středu tabulky). Uvnitř prostředí \texttt{tabular} znamená znak \texttt{\&} oddělovač sloupců, \ci{\bs} začíná novou řádku a~\ci{hline} vloží horizontální linku. Neúplné linky můžeme vložit pomocí \ci{cline}\texttt{\{}\emph{i}\texttt{-}\emph{j}\texttt{\}}, kde $i$~a~$j$~jsou čísla sloupců, mezi kterými by linka měla být natažena. Při užití \texttt{czech} v~\textsf{babel}u vypneme navíc lokálně či globálně aktivní divis: \verb+\shorthandoff{-}+. \index{"|@{\me\char'174}} \begin{example} \begin{tabular}{|r|l|} \hline 7C0 & šestnáctkově \\ 3700 & osmičkově \\ \cline{2-2} 11111000000 & binárně \\ \hline \hline 1984 & desítkově \\ \hline \end{tabular} \end{example} \begin{example} \begin{tabular}{|p{4.7cm}|} \hline Menší demonstrace odstavce uvnitř tabulky. Výsledek snad bude vypadat přijatelně.\\ \hline \end{tabular} \end{example} Oddělovač sloupců lze specifikovat pomocí konstrukce \mfr{@\{...\}}. Tento příkaz potlačí veškeré mezisloupcové mezery a~nahradí je materiálem uvedeným mezi složenými závorkami. Jedno běžné použití tohoto příkazu je vysvětleno níže (zarovnání desetinných čísel). Jinou možnou aplikací je potlačení úvodních mezer v~tabulce pomocí \mfr{@\{\}}. \begin{example} \begin{tabular}{@{} l @{}} \hline žádné úvodní mezery\\ \hline \end{tabular} \end{example} \begin{example} \begin{tabular}{l} \hline úvodní a~závěrečné mezery\\ \hline \end{tabular} \end{example} % % This part by Mike Ressler % \index{zarovnání desetinných čísel} V~\LaTeX u není vestavěna podpora pro zarovnávání desetinných čísel\footnote{Pokud ale máte nainstalovánu kolekci \textsf{tools}, podívejte se na balík \pai{dcolumn}.}, jednou z~možností, jak čísla zarovnat je použít tabulku se dvěma sloupci: vpravo zarovnaná celá část desetinného čísla a~vlevo zarovnaná příslušná desetinná část. Příkaz \verb|@{,}| ve specifikaci sloupců \verb|\begin{tabular}| nahradí normální mezisloupcové mezery čárkou a~tabulka bude vypadat jako jeden sloupec čísel zarovnaných na desetinnou čárku. Nezapomeňte oddělit celou a~desetinnou část jednotlivých čísel místo desetinou čárkou oddělovačem sloupců (\verb|&|)! Název sloupce umístíme nad náš číselný \uv{sloupec} pomocí příkazu \ci{multicolumn}. Více o~možnostech tabulkové sazby balíček \textsf{tabu}. \begin{example} \begin{tabular}{c r @{,} l} výraz obsahující Pi & \multicolumn{2}{c}{Hodnota} \\ \hline $\pi$ & 3&1416 \\ $\pi^{\pi}$ & 36&46 \\ $(\pi^{\pi})^{\pi}$ & 80662&7 \\ \end{tabular} \end{example} \begin{example} \begin{tabular}{|c|c|} \hline \multicolumn{2}{|c|}{Ene} \\ \hline Mene & Muh! \\ \hline \end{tabular} \end{example} Materiál vysázený pomocí prostředí tabular vždy zůstane pohromadě na jedné stránce. Chcete-li sázet vícestránkové tabulky, je třeba použít prostředí \pai{longtable}. \LaTeX ové tabulky mohou někdy vypadat trochu \uv{zhuštěně}. \uv{Rozvolnění} lze provést nastavením vyšších hodnot \ci{arraystretch} a~\ci{tabcolsep}. \begin{example} \begin{tabular}{|l|} \hline Tyto řádky\\\hline jsou namačkané\\\hline \end{tabular} {\renewcommand{\arraystretch} {1.5} \renewcommand{\tabcolsep}{0.2cm} \begin{tabular}{|l|} \hline méně namačkané\\\hline rozložení tabulky\\\hline \end{tabular}} \end{example} Pokud potřebujete zvětšit výšku jen jedné řádky tabulky, přidejte neviditelnou vertikální podpěru\footnote{V~profesionální sazbě se jí často říká \wi{strut}.} pomocí linky s~nulovou šířkou. \begin{example} \begin{tabular}{|c|} \hline \rule{1pt}{4ex}Pitprop \ldots\\ \hline \rule{0pt}{4ex}Strut\\ \hline \end{tabular} \end{example} \section{Plovoucí objekty} Dnešní publikace často obsahují hodně obrázků a~tabulek. S~těmi se musí zacházet zvláštním způsobem, protože na rozdíl od normálního textu nemohou být vždy rozděleny na více stránek. Jednoduché ale neuspokojivé řešení je začít novou stránku vždy, když je potřeba vysázet obrázek nebo tabulku, které se nevlezou na aktuální stránku. Problém tohoto přístupu je, že části stránek pak zůstávají prázdné, což špatně vypadá. Uspokojivým řešením je nechat obrázky a~tabulky, které se nevlezou na aktuální stránku, \uv{doplavat} na některou z~následujících stránek, přičemž aktuální stránka se zaplní textem, který ve vstupním souboru následuje za daným obrázkem nebo tabulkou. \LaTeX{} pro \emph{plovoucí objekty} nabízí dvě prostředí -- jedno pro tabulky a~jedno pro obrázky. Abychom mohli plně využít možností těchto dvou prostředí, je důležité, abychom zhruba věděli, jak \LaTeX{} s~plovoucími objekty vnitřně zachází. Jinak bychom měli problémy odhadnout, kam \LaTeX{} konkrétní plovoucí objekty umístí. \bigskip Začneme náš výklad s~\LaTeX ovými příkazy, které jsou pro plovoucí objekty k~dispozici. S~jakýmkoliv materiálem uvedeným v~prostředí \ei{figure} nebo \ei{table} se bude zacházet jako s~plovoucím objektem. Obě prostředí pro plovoucí objekty poskytují nepovinný parametr \begin{lscommand} \verb|\begin{figure}[|\emph{specifikace umístění}\verb|]| or \verb|\begin{table}[|\ldots\verb|]| \end{lscommand} \noindent nazvaný \emph{specifikace umístění}. Tímto parametrem můžeme \LaTeX u říct o~místech, do kterých smí daný plovoucí objekt nechat doplavat. \emph{Specifikace umís\-tění} se skládá z~řetězce \emph{povolenek pro umístění plovoucího objektu}. Viz tabulka~\ref{tab:permiss}. \begin{table}[!bp] \caption{Povolenky pro umístění plovoucího objektu.}\label{tab:permiss} \noindent \begin{minipage}{\textwidth} \medskip \begin{center} \begin{tabular}{@{}cp{8cm}@{}} Pozice&Povolení umístit plovoucí objekt\ldots\\ \hline \rule{0pt}{1.05em}\texttt{h} & \emph{Zde} (here) přesně na místo, kde byl daný text uveden ve vstupním souboru. Toto je užitečné zejména při použití malých fontů.\\[0.3ex] \texttt{t} & Na \emph{vrcholu} (top) strany.\\[0.3ex] \texttt{b} & Na \emph{spodu} (bottom) strany.\\[0.3ex] \texttt{p} & Na zvláštní \emph{stránce} (page), která bude obsahovat jen plovoucí objekty.\\[0.3ex] \texttt{!} & Bez braní v~úvahu většiny vnitřních parametrů\footnote{Např. maximální počet plovoucích objektů, který může být umístěn na jednu stranu.}, které by mohly zabránit v~umístění tohoto plovoucího objektu. \end{tabular} \end{center} Poznámka: \texttt{pt} a~\texttt{em} jsou \TeX ové jednotky. Více informací je uvedeno v~tabulce~\ref{units} na straně \pageref{units}. \end{minipage} \end{table} Tabulku můžeme začít např. následujícím řádkem: \begin{code} \verb|\begin{table}[!hbp]| \end{code} \noindent \index{povolenka umístění}Povolenka umístění \verb|[!hbp]| říká \LaTeX u, že může tabulku umístit buď přímo v~aktuálním místě (\texttt{h}), nebo naspodu nějaké strany (\texttt{b}), nebo na zvláštní stránce obsahující jen plovoucí objekty (\texttt{p}) -- to vše i~tehdy, když výsledek nebude vypadat nejlépe (viz \texttt{!}). Neuvedeme-li žádnou povolenku, \LaTeX{} se chová, jako bychom uvedli \verb|[tbp]|. \LaTeX{} umístí každý plovoucí objekt, na který při zpracování dokumentu narazí, podle povolenky umístění zadané autorem. Nejde-li objekt přidat do aktuálního místa na stránce, je přidán buď do fronty \emph{obrázků} nebo do fronty \emph{tabulek}% \footnote{Fronty jsou klasické FIFO struktury -- \uv{Kdo první vejde, první odejde.}}. Když zahájí novou stránku, \LaTeX{} nejdřív zkontroluje, jestli je v~některé frontě \uv{na řadě} objekt, který má povoleno být umístěn na zvláštní stránce (která obsahuje jen plovoucí objekty). Jestliže takový objekt přítomen není, první objekt v~každé frontě je uvažován jako kdyby se právě objevil ve vstupním souboru: \LaTeX{} znovu zkouší umístit tento objekt podle příslušných povolenek (kromě povolenky ,h`, která se už u~objektu ve frontě vyskytnout nemůže). Jakýkoliv nový plovoucí objekt, který se objeví v~textu, je umístěn do příslušné fronty. \LaTeX{} přidává plovoucí objekty do výstupu přesně v~tom pořadí, v~kterém na ně ve vstupním souboru narazí. Z~toho vyplývá, že obrázek, který se nepodaří umístit na aktuální stranu, \uv{zablokuje} i~ostatní obrázky (protože ty nemohou být umístěny dřív, než obrázek, který je ve frontě před nimi). Proto: \begin{quote} Jestliže \LaTeX{} neumístí plovoucí objekt tak, jak jste očekávali, často je to proto, že jeden z~plovoucích objektů zablokoval jednu z~front plovoucích objektů. \end{quote} \LaTeX{} sice umožňuje zadat povolenku umístění o~jedné položce, ale ta způsobuje problémy. Jestliže plovoucí objekt nelze pomocí dané položky umístit, jsou on i~všechny následující zablokovány. Obzvlášť \emph{nevhodná} je položka [h] -- je to tak špatná možnost, že v~novějších verzích \LaTeX u je dokonce automaticky změněna na [ht]. \bigskip \noindent Tím jsme probrali to obtížné. Nyní se zmíníme o~několika věcech souvisejících s~prostředími \ei{table} a~\ei{figure}. Příkazem \begin{lscommand} \ci{caption}\verb|{|\emph{caption text}\verb|}| \end{lscommand} \noindent můžeme definovat titulek daného plovoucího objektu. \LaTeX{} připojí pořadové číslo a~řetězec \uv{Obrázek} nebo \uv{Tabulka}. Příkazy \begin{lscommand} \ci{listoffigures} a~\ci{listoftables} \end{lscommand} \noindent pracují podobně jako příkaz \verb|\tableofcontents| -- vysází seznam obrázků, resp. tabulek. Tyto seznamy zobrazí celý text uvedený jako titulek jednotlivých objektů. Pokud tedy používáte dlouhé titulky, měli byste zadat i~jejich kratší verze, Krátkou verzi můžete uvést do hranatých závorek za příkazem \verb|\caption|. \begin{code} \verb|\caption[Short]{LLLLLoooooonnnnnggggg}| \end{code} Daný plovoucí objekt \uv{identifikujete} pomocí příkazu \ci{label} a~můžete se pak na něj ve svém dokumentu odkazovat pomocí příkazu \ci{ref}. Příkaz \ci{label} musí být uveden \emph{za} příkazem \ci{caption}, aby se vztahoval na daný plovoucí objekt. Následující příklad nakreslí čtverec a~vloží ho do dokumentu. Takto můžete v~dokumentu rezervovat místo pro obrázky, které budete později do hotového dokumentu vkládat. \begin{code} \begin{verbatim} Obrázek~\ref{white} je příkladem pop artu. \begin{figure}[!hbtp] \makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}} \caption{Pět krát pět centimetrů.\label{white}} \end{figure} \end{verbatim} \end{code} \noindent V~předchozím příkladu \LaTeX{} udělá \emph{všechno možné}~(viz \texttt{!}) pro to, aby obrázek umístil \emph{v~aktuálním místě}~(\texttt{h}).% \footnote{Za předpokladu, že fronta obrázků je prázdná.} Pokud se to ani tak nepodaří, \LaTeX{} zkusí obrázek umístit \emph{naspod}~(\texttt{b}) strany. Pokud se nepodaří ani to, \LaTeX{} zkusí obrázek umístit \emph{nahoru}~(\texttt{t}) na aktuální straně. Nepodaří-li se ani to, \LaTeX{} zjistí, jestli je možné vytvořit \uv{plovoucí stránku} obsahující tento obrázek a~případně některé z~tabulek ve frontě tabulek. Není-li pro speciální stránku obsahující jen plovoucí objekty dost těchto objektů k~dispozici, \LaTeX{} zahájí novou stranu a~opět zachází s~obrázkem stejným způsobem, jako kdyby se právě objevil v~textu. Někdy je nutné použít příkaz \begin{lscommand} \ci{clearpage} nebo dokonce \ci{cleardoublepage} \end{lscommand} \noindent Tento příkaz říká \LaTeX u, aby hned umístil všechny plovoucí objekty přítomné ve frontách a~potom začal novou stránku. Příkaz \ci{cleardoublepage} udělá to samé, ale navíc přejde na novou pravou stranu (nejbližší lichou). Později se v~tomto dokumentu dočtete o~tom, jak do svého dokumentu \LaTeXe{} vložit kresby ve formátu \PSi{}. \section{Chránění \uv{zranitelných} příkazů} Text, který zadáme jako argument příkazů typu \ci{caption} nebo \ci{section}, se může v~dokumentu objevit na více místech (např. v~obsahu i~v~těle dokumentu). Pokud některé příkazy uvedeme jako argumenty příkazů typu \ci{section}, zpracování našeho dokumentu selže. Těmto příkazům, které jako parametry selžou, říkám \wi{zranitelné příkazy}. Patří mezi ně např. \ci{footnote} nebo \ci{phantom}. Pokud ale zranitelné příkazy \uv{ochráníme} tím, že před nimi uvedeme příkaz \ci{protect}, jako argumenty příkazů typu \ci{section} je už použít můžeme. Příkaz \ci{protect} se vztahuje jen na příkaz, který za ním bezprostředně následuje, ale ne na jeho argumenty. Ve většině případu neuškodí, když \ci{protect} uvedeme navíc. \begin{code} \verb|\section{I am considerate|\\ \verb| \protect\footnote{and protect my footnotes}}| \end{code} % Local Variables: % TeX-master: "lshort2e" % mode: latex % mode: flyspell % End: