%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Contents: Customising LaTeX output % $Id: custom.tex,v 1.2 1998/09/29 08:05:09 oetiker Exp oetiker $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Prispôsobovanie \LaTeX{}u} \begin{intro} Vzhľad dokumentov vytvorených na základe príkazov, ktoré ste sa doteraz naučili bude prijateľný pre široký kruh užívateľov. Hoci nemusia vyzerať fantasticky, budú vyhovovať ustanoveným pravidlám dobrej typografie, čo ich urobí ľahko čitateľnými a na pohľad príjemnými. Napriek tomu sú situácie, keď \LaTeX{} neposkytuje príkazy alebo prostredia odpovedajúce vašim potrebám, prípadne výstup získaný na základe existujúcich príkazov neuspokojuje vaše požiadavky. V~tejto kapitole sa pokúsim trochu naznačiť ako naučiť \LaTeX{} nové triky a~ako ho donútiť vytvoriť výstup, ktorý vyzerá ináč, ako to poskytuje štandard. \end{intro} \section{Nové príkazy, prostredia a balíky} Mohli ste si všimnúť, že všetky príkazy, ktoré som uviedol v~tejto knihe, sú sádzané v~rámčekoch a že sú vytlačené v~registri na konci knižky. Namiesto priameho použitia príkazov \LaTeX{}u potrebných na dosiahnutie týchto úloh som vytvoril \wi{balík}, v~ktorom som za týmto účelom definoval nové príkazy a prostredia. Teraz jednoducho napíšem: \begin{example} \begin{lscommand} \ci{dum} \end{lscommand} \end{example} V~tomto príklade používam oboje: nové prostredie s~názvom \ei{command}, ktoré je zodpovedné za nakreslenie rámčeka okolo príkazu aj nový príkaz \ci{ci}, ktorý vytlačí názov príkazu a zároveň vytvorí odpovedajúcu položku registra. Môžete sa o tom presvedčiť, ak sa pozriete do registra na konci knihy a nájdete položku príkazu \ci{dum}, ukazujúcu na každú stranu, kde som sa o príkaze \ci{dum} zmienil. Ak by som sa hocikedy rozhodol, že už viac nemám rád príkazy sádzané v~rámčekoch, môžem jednoducho zmeniť definíciu prostredia \texttt{command} a vytvoriť jeho nový vzhľad. Je to oveľa ľahšie ako prechádzať celým dokumentom a hľadať všetky miesta, kde som použil niektoré základné príkazy \LaTeX{}u na vykreslenie rámčeku okolo nejakého slova. \subsection{Nové príkazy} Na pridanie vašich nových príkazov použite príkaz \begin{lscommand} \ci{newcommand}\verb|{|% \emph{meno}\verb|}[|\emph{počet}\verb|]{|\emph{definícia}\verb|}| \end{lscommand} \noindent Príkaz potrebuje v~podstate dva argumenty. \emph{meno} -- názov príkazu, ktorý chcete vytvoriť a \emph{definíciu} príkazu. Argument \emph{počet} v~hranatých zátvorkách je nepovinný a určuje počet parametrov, ktoré používa nový príkaz (maximálne 9). Ak chýba, štandardná hodnota je 0, t.~j. nie je dovolený žiaden argument. Nasledujúce dva príklady by vám mali pomôcť pochopiť hlavnú myšlienku. Prvý príklad definuje príkaz nazývaný \verb|\npsu| (toto je skratka pre \uv{Nie príliš stručný úvod do systému \LaTeXe}). Takýto príkaz môže byť veľmi praktický, keď musíte písať názov tejto knihy znovu a znovu. \begin{example} \newcommand{\npsu} {Nie príliš stručný úvod do systému \LaTeXe} % v dokumente: Toto je \uv{\npsu} \ldots{} \uv{\npsu} \end{example} Nasledujúci príklad ukazuje, ako sa definuje nový príkaz s~parametrom. Značka \verb|#1| bude nahradená parametrom, ktorý zadáte. Ak chcete použiť viac ako jeden parameter, použijete \verb|#2| a tak ďalej. \begin{example} \newcommand{\txsit}[1] {Toto je \emph{#1} stručný úvod do systému \LaTeXe} % v dokumente: \begin{itemize} \item \txsit{nie príliš} \item \txsit{veľmi} \end{itemize} \end{example} \LaTeX{} vám nedovolí vytvoriť nový príkaz, ktorý predefinuje už existujúci. Ale v~prípade, ak chcete urobiť práve toto, máte k~dispozícii zvláštny príkaz \ci{renewcommand}. Používa rovnakú syntax ako príkaz \verb|\newcommand|. Za určitých podmienok môžete tiež chcieť použiť príkaz \ci{providecommand}. Funguje podobne ako \ci{newcommand}, ale ak príkaz s~týmto názvom je už definovaný, \LaTeX{} ho bude potichu ignorovať. Pár slov by bolo dobré povedať o medzerách nasledujúcich za príkazmi \LaTeX{}u. Pre podrobnejšiu informáciu pozrite stranu \pageref{sec:latexcom}. \subsection{Nové prostredia} Podobný príkaz ako \verb|\newcommand| existuje aj na vytváranie vašich vlastných prostredí. Počas písania tohoto úvodu do \LaTeX u~som si vytvoril špeciálne prostredia pre štruktúry, ktoré som opakovane používal: \uv{príklady}, \uv{úryvky zo zápisov} a \uv{rámčeky definícií príkazov}. Príkaz \ci{newenvironment} má nasledujúcu štruktúru: \begin{lscommand} \ci{newenvironment}\verb|{|% \emph{meno}\verb|}[|\emph{počet}\verb|]{|% \emph{pred}\verb|}{|\emph{potom}\verb|}| \end{lscommand} Ako pri príkaze \verb|\newcommand|, aj príkaz \ci{newenvironment} môžete použiť s~parametrom alebo bez neho. Materiál bližšie určený v~parametri \emph{pred} je spracovaný predtým ako text v~danom prostredí. Materiál bližšie určený v~parametri \emph{potom} je spracovaný až po vykonaní príkazu \verb|\end{|\emph{meno}\verb|}|. Nižšie uvedený príkaz ukazuje používanie príkazu \ci{newenvironment}. \begin{example} \newenvironment{kral} {\rule{1ex}{1ex}% \hspace{\stretch{1}}} {\hspace{\stretch{1}}% \rule{1ex}{1ex}} % použite toto v časti textu \begin{kral} Moje skromné prípady \ldots \end{kral} \end{example} Argument \emph{počet} sa používa rovnakým spôsobom ako to bolo v~prípade príkazu \verb|\newcommand|. \LaTeX{} spoľahlivo zabezpečuje, aby ste nenadefinovali prostredie, ktoré už existuje. Ak budete chcieť niekedy zmeniť existujúci príkaz, môžete použiť príkaz \ci{renewenvironment}. Používa sa rovnakým spôsobom ako príkaz \ci{newenvironment}. Príkazy použité v~tomto príklade budú vysvetlené neskôr. Na príkaz \ci{rule} sa pozrite na stranu \pageref{sec:rule}, príkaz \ci{stretch} nájdete na strane \pageref{cmd:stretch}. Podrobnejšia informácia o \ci{hspace} sa dá nájsť na strane \pageref{sec:hspace}. \subsection{Váš vlastný balík} Ak definujete veľké množstvo prostredí a príkazov, bude preambula vášho dokumentu príliš dlhá. V~tomto prípade je dobrým nápadom vytvorenie \LaTeX{}ovského balíka obsahujúceho všetky definície vašich príkazov a prostredí. Na sprístupnenie balíka vo vašom dokumente môžete použiť príkaz \ci{usepackage}. \begin{figure}[!htbp] \begin{lined}{\textwidth} \begin{verbatim} % Demo Package by Tobias Oetiker \ProvidesPackage{demopack} \newcommand{\npsu}{Nie príliš stručný úvod do systému \LaTeXe} \newcommand{\txsit}[1]{Toto je \emph{#1} stručný úvod do systému \LaTeXe} \newenvironment{king}{\rule{1ex}{1ex}% hspace{\stretch{1}}}{\hspace{\stretch{1}}\rule{1ex}{1ex}} \end{verbatim} \end{lined} \caption{Príklad balíka} \label{package} \end{figure} Napísanie balíka spočíva v~podstate v~skopírovaní obsahu vašej preambuly do samostatného súboru s~názvom s~koncovkou \texttt{.sty}. Existuje jeden zvláštny príkaz, \begin{lscommand} \ci{ProvidesPackage}\verb|{|\emph{názov balíka}\verb|}| \end{lscommand} \noindent používaný na úplnom začiatku súboru vášho balíka. \verb|\ProvidesPackage| oznámi \LaTeX{}u názov balíka a umožní mu vydať výrazné chybové hlásenie, ak sa pokúsite balík inicializovať druhý raz. Obrázok~\ref{package} ukazuje malý príklad balíka obsahujúceho príkazy definované vo vyššie uvedených príkladoch. \section{Fonty a veľkosti} \subsection{Príkazy na zmenu písma} \index{fonty!veľkosti} \index{fonty!typy} \LaTeX{} volí vhodný font a jeho veľkosť na základe logickej štruktúry dokumentu (oddiely, poznámky pod čiarou, \ldots). V~niektorých prípadoch môže niekto chcieť zmeniť fonty a ich veľkosti ručne. Toto sa dá urobiť pomocou príkazov, ktoré sú uvedené v~tabuľkách~\ref{fonts} a~\ref{tab:pointsizes}. Skutočná veľkosť každého fontu je výsledok dizajnu a závisí od triedy dokumentu a jej volieb. Tabuľka~\ref{tab:pointsizes} ukazuje absolútne bodové veľkosti pre tie príkazy, ktoré sú súčasťou štandardných tried dokumentu. \begin{table}[!t] \caption{Fonty} \label{fonts} \vspace{-5mm} \begin{lined}{133mm} \index{fonty!typy} % % Alan suggested not to tell about the other form of the command % eg \verb|\sffamily| or \verb|\bfseries|. This seems a good thing to me. % \begin{tabular}{@{}rl@{\qquad}rl@{}} \ci{textrm}\verb|{...}| & \textrm{roman} (antikva)& \ci{texttt}\verb|{...}| & \texttt{typewriter}\\[6pt] \ci{textsf}\verb|{...}| & \textsf{sans serif} (bezpätkové)\\[6pt] \ci{textbf}\verb|{...}| & \textbf{bold face} (tučné) & \ci{textmd}\verb|{...}| & \textmd{medium} \\[6pt] \ci{textit}\verb|{...}| & \textit{italic} (kurzíva)& \ci{textup}\verb|{...}| & \textup{upright} \\[6pt] \ci{textsl}\verb|{...}| & \textsl{slanted} (naklonené)& \ci{textsc}\verb|{...}| & \textsc{Small Caps}\\[6pt] \ci{emph}\verb|{...}| & \emph{emphasised} & \ci{textnormal}\verb|{...}| & \textnormal{bežné} \end{tabular} \index{typy písma!antikva (roman)} \index{typy písma!kurzíva (italic)} \index{typy písma!bezpätičkové (sans serif)} \index{typy písma!písací stroj (typewriter)} \index{typy písma!polotučné (bold face)} \index{typy písma!naklonené (slanted)} \index{typy písma!malé kapitálky (small caps)} \index{typy písma!zvýraznené (emphasised)} \bigskip \end{lined} \end{table} \begin{example} {\small The small and \textbf{bold} Romans ruled} {\Large all of great big \textit{Italy}.} {\small Malí, \textbf{tuční} Rimania vládli} {\Large celej veľkej \textit{Itálii}.}% \footnote{roman\,--\,antikva, italic\,--\,kurzíva, bold\,--\,tučný --- v~angličtine je to pekná typografická slovná hračka (pozn. prekl.)} \end{example} Jedna dôležitá vlastnosť systému \LaTeXe{} je, že vlastnosti fontov sú nezávislé. To znamená, že môžete zmeniť počiatočnú veľkosť alebo dokonca typ fontu a pritom zachovať skôr zadaný príkaz na tučné alebo naklonené písmo. \footnote{Aj keď je toto zrejmé pre niekoho, kto sa učí \LaTeXe{}, nie je to také zrejmé pre niekoho, kto používal \LaTeX{} 2.09.} V~\emph{matematickom režime} môžete používať na dočasné opustenie \emph{matematického režimu} a napísanie normálneho textu príkazy na zmenu aktuálneho typu písma. Ak chcete v~matematickom režime použiť nejaký iný typ písma, existuje ďalšia sada príkazov. Tieto fonty sú podrobne uvedené v~tabuľke~\ref{mathfonts}. V~súvislosti s~príkazmi na veľkosť a tvar písma majú významné postavenie \wi{zložené zátvorky}. Používajú sa na vytváranie \emph{skupín}. Skupiny obmedzujú pôsobenie väčšiny \LaTeX{}ových príkazov.\index{zoskupovanie} \begin{example} Má rád {\LARGE veľké a {\small malé} písmená}. \end{example} \pagebreak \begin{table} \index{fonty!veľkosti} \caption{Veľkosti fontov} \label{tab:pointsizes} \begin{lined}{12.3cm} \begin{tabular}{@{}ll} \ci{tiny} & \tiny drobný font \\ \ci{scriptsize} & \scriptsize veľmi malý font\\ \ci{footnotesize} & \footnotesize dosť malý font \\ \ci{small} & \small malý font \\ \ci{normalsize} & \normalsize normálny font \\ \ci{large} & \large veľký font \end{tabular}% \quad\begin{tabular}{ll@{}} \ci{Large} & \Large väčší font \\[5pt] \ci{LARGE} & \LARGE veľmi veľký font \\[5pt] \ci{huge} & \huge obrovský font \\[5pt] \ci{Huge} & \Huge najväčší font \\ \end{tabular} \bigskip \end{lined} \end{table} \begin{table} \caption{Matematické fonty} \label{mathfonts} \begin{lined}{12cm} \begin{tabular}{@{}lll@{}} \textit{Príkaz}&\textit{Príklad}& \textit{Výstup}\\[6pt] \ci{mathcal}\verb|{...}|& \verb|$\mathcal{B}=c$|& $\mathcal{B}=c$\\ \ci{mathrm}\verb|{...}|& \verb|$\mathrm{K}_2$|& $\mathrm{K}_2$\\ \ci{mathbf}\verb|{...}|& \verb|$\sum x=\mathbf{v}$|& $\sum x=\mathbf{v}$\\ \ci{mathsf}\verb|{...}|& \verb|$\mathsf{G\times R}$|& $\mathsf{G\times R}$\\ \ci{mathtt}\verb|{...}|& \verb|$\mathtt{L}(b,c)$|& $\mathtt{L}(b,c)$\\ \ci{mathnormal}\verb|{...}|& \verb|$\mathnormal{R_{19}}\ne R_{19}$|& $\mathnormal{R_{19}}\ne R_{19}$\\ \ci{mathit}\verb|{...}|& \verb|$\mathit{ffi}\neq ffi$|& $\mathit{ffi}\neq ffi$ \end{tabular} \bigskip \end{lined} \end{table} Príkaz na zmenu veľkosti fontov môže zmeniť aj riadkovanie, avšak iba ak odstavec končí za účinku príkazu na veľkosť fontu. Zatváracia zložená zátvorka \verb|}| preto nesmie prísť príliš skoro. Všimnite si polohu príkazu \verb|\par| v~nasledujúcich dvoch príkladoch. \begin{example} {\Large Nečítajte to! To nie je pravda. Môžete mi veriť!\par} \end{example} \begin{example} {\Large Toto nie je pravda, ale nezabúdajte: som klamár.}\par \end{example} Ak chcete uplatniť príkaz na zmenu veľkosti pre celý odstavec textu alebo dokonca na viac textu, môže byť užitočné použiť na zmenu veľkosti syntax typu prostredí. \begin{example} \begin{Large} To nie je pravda. Ale potom znova, čo sú dnešné dni\ldots \end{Large} \end{example} \noindent Toto vás ochráni pred počítaním množstva zložených zátvoriek. \subsection{Pozor, nebezpečenstvo!} Ako bolo poznamenané na začiatku tejto kapitoly, je nebezpečné preplniť váš dokument explicitnými príkazmi, pretože tieto potláčajú základnú myšlienku \LaTeX{}u, ktorou je oddelenie logického a vizuálneho značkovania vášho dokumentu. To znamená, že ak chcete použiť rovnaký príkaz na zmenu písma na viacerých miestach pre to, aby ste zvýraznili zvláštny druh informácií, mali by ste použiť príkaz \verb|\newcommand| na definovanie \uv{príkazu logického vyčlenenia}, ktorý zmení font. \begin{example} \newcommand{\oops}[1]{\textbf{#1}} \oops{Nevstupujte} do tejto miestnosti, je obsadená\oops{strojom} neznámeho pôvodu a účelu. \end{example} Tento prístup má tú výhodu, že vám neskôr umožní rozhodnúť sa, či nechcete použiť nejakú inú vizuálnu reprezentáciu nebezpečenstva, ako je použitie \verb|\textbf| bez toho, aby ste sa brodili svojím dokumentom, vyhľadávali všetky výskyty príkazu \verb|\textbf| a potom pre každý z nich určovali, či bol použitý na vyznačenie nebezpečenstva alebo na nejaký iný účel. \subsection{Rada} Na záver tejto cesty do krajiny fontov a ich veľkostí vám ponúkam malú radu:\nopagebreak \begin{quote} \underline{\textbf{Pamätajte\Huge!}} \textit{Čím} \textsf{V\textbf{\LARGE I} \texttt{A}\textsl{C}} fontov \Huge použijete \tiny vo \footnotesize \textbf{vašom} dokumente, \small \texttt{tým} \large \textit{krajším} \normalsize a \textsc{čitateľnejším} \textsl{\textsf{sa} s\large t\Large a\LARGE n\huge e}.\footnote{Pozor! Toto je trochu satira. Dúfam, že ste si to všimli!} \end{quote} % % Pridať nejaké poznámky o príkazoch \begin{Large} % \section{Medzery} \subsection{Riadkovanie} \index{riadkovanie} Ak chcete väčšie medzery medzi riadkami svojho dokumentu, môžete to urobiť pomocou príkazu \begin{lscommand} \ci{linespread}\verb|{|\emph{faktor}\verb|}| \end{lscommand} \noindent umiestneného v~hlavičke zdrojového súboru. Príkaz \verb|\linespread{1.3}| zabezpečí riadkovanie $1\frac{1}{2}$, pomocou príkazu \verb|\linespread{1.6}| dosiahneme riadkovanie $2$. Obvykle sa medzery medzi riadkami nezväčšujú, preto je základný zväčšovací koeficient rovný~1.\index{riadkovanie!dvojité} \subsection{Formátovanie odsekov}\label{parsp} V~\LaTeX u~existujú dva príkazy ovplyvňujúce úpravu odsekov. Pomocou príkazov \begin{code} \ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\ \verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}| \end{code} umiestnených v~hlavičke\footnote{Medzi príkazy \texttt{\char'134documentclass} a \texttt{\char'134begin\char'173document\char'175}.} zdrojového súboru môžete meniť nastavenie odsekov. Tieto dva príkazy zväčšujú miesto medzi odsekmi, pričom rušia odsadzovanie prvých riadkov odsekov. V~kontinentálnej Európe sa odseky často oddeľujú voľným miestom a neodsadujú sa ich prvé riadky. Ale pozor, toto má vplyv aj na obsah. Aj riadky obsahu budú oddeľované väčším priestorom. Aby ste sa tomu vyhli, môžete umiestniť tieto dva príkazy na nejaké miesto za príkazom \verb+\tableofcontents+ alebo sa môžete rozhodnúť, že ich nepoužijete vôbec, pretože ste zistili, že väčšina profesionálnych kníh používa odsadzovanie odsekov bez medzery medzi nimi. Ak chcete odsadiť odsek, ktorý nie je odsadený, môžete použiť na začiatku odseku príkaz\footnote{Ak chcete odsadiť prvý odsek v~každej kapitole, použite balík \pai{indentfirst} z~uzla \suv{tools}.} \begin{lscommand} \ci{indent} \end{lscommand} \noindent Samozrejme, že to môže fungovať len v~prípade, ak nie je \verb|\parindent| nastavený na nulu. Ak chcete, aby daný odsek nebol odsadený, môžete na začiatku odseku použiť príkaz \begin{lscommand} \ci{noindent} \end{lscommand} \noindent Môže sa vám to zísť, ak začínate dokument samotným textom a nie príkazom pre kapitolu, respektíve oddiel. \subsection{Vodorovné medzery}\label{sec:hspace} \LaTeX{} určuje medzery medzi slovami a vetami automaticky. Ak chcete zväčšiť vodorovnú (horizontálnu) medzeru, musíte použiť príkaz: \index{medzera!horizontálna} \begin{lscommand} \ci{hspace}\verb|{|\emph{dĺžka}\verb|}| \end{lscommand} Ak sa má takáto medzera zachovať aj v~prípade, že pripadne na koniec alebo začiatok riadku, použite príkaz \verb|\hspace*| namiesto \verb|\hspace|. V~najjednoduchších prípadoch je \emph{dĺžka} len číslo a jednotka. Najdôležitejšie jednotky sú uvedené v~tabuľke~\ref{units}. \index{jednotky}\index{rozmery} \begin{example} Táto\hspace{1.5cm}medzera má 1.5 cm. \end{example} \suppressfloats \begin{table}[tbp] \caption{Jednotky \TeX{}u} \label{units}\index{jednotky} \begin{lined}{9.5cm} \begin{tabular}{@{}ll@{}} \texttt{mm} & milimeter $\approx 1/25$~inch \quad \demowidth{1mm} \\ \texttt{cm} & centimeter = 10~mm \quad \demowidth{1cm} \\ \texttt{in} & inch $=$ 25.4~mm \quad \demowidth{1in} \\ \texttt{pt} & point $\approx 1/72$~inch $\approx \frac{1}{3}$~mm \quad\demowidth{1pt}\\ \texttt{em} & približne výška daného fontu \quad \demowidth{1em}\\ \texttt{ex} & približne výška \texttt{x} v~danom fonte \quad \demowidth{1ex} \end{tabular} \bigskip \end{lined} \end{table} Príkaz\label{cmd:stretch} \begin{lscommand} \ci{stretch}\verb|{|\emph{n}\verb|}| \end{lscommand} \noindent vytvára špeciálnu mäkkú (gumenú) medzeru. Rozpína sa, až kým nie je vyplnený celý zvyšný priestor riadku. Ak sa v~jednom riadku nachádzajú dva príkazy \verb|\hspace{\stretch{|\emph{n}\verb|}}|, narastajú primerane svojmu rozširovaciemu koeficientu. \begin{example} x\hspace{\stretch{1}} x\hspace{\stretch{3}}x \end{example} \subsection{Zvislé medzery} Medzera medzi odsekmi, oddielmi, pooddielmi, \ldots\ je určovaná automaticky \LaTeX om. V~prípade, že je to potrebné, môžete zvislú (vertikálnu) medzeru zväčšiť pomocou príkazu: \begin{lscommand} \ci{vspace}\verb|{|\emph{dĺžka}\verb|}| \end{lscommand} Tento príkaz sa normálne oddeľuje voľným riadkom pred a za príkazom. V~prípade, že sa má medzera udržovať aj na začiatku (konci) strany a medzi dvoma stránkami, použite namiesto \verb|\vspace| hviezdičkovú verziu príkazu \verb|\vspace*|. \index{medzera!vertikálna} Príkaz \verb|\stretch| spolu s~príkazom \verb|\pagebreak| sa môže použiť na napísanie textu na posledný riadok strany, prípadne na zvislé vycentrovanie strany. \begin{code} \begin{verbatim} Nejaký text \ldots \vspace{\stretch{1}} Toto bude napísané na poslednom riadku strany.\pagebreak \end{verbatim} \end{code} V~prípade, že chceme zväčšiť medzery medzi riadkami \emph{toho istého} odseku alebo vo vnútri tabuľky, môžeme namiesto príkazu \verb+\\+ použiť príkaz: \begin{lscommand} \ci{\bs}\verb|[|\emph{dĺžka}\verb|]| \end{lscommand} \section{Rozvrhnutie stránky} \begin{figure}[!hp] \begin{center} \makeatletter\@layout\makeatother \end{center} \vspace*{1.8cm} \caption{Parametre ovplyvňujúce rozvrhnutie stránky} \label{fig:layout} \end{figure} \index{rozvrhnutie stránky} \LaTeXe{} vám umožňuje zadať \wi{veľkosť papiera} v~príkaze \verb|\documentclass|. \LaTeX{} potom automaticky zvolí správne \wi{rozmery textu}. V~niektorých prípadoch vám však preddefinované hodnoty nemusia vyhovovať. Prirodzene, môžete ich zmeniť. %no idea why this is needed here ... \thispagestyle{fancyplain} Obrázok~\ref{fig:layout} ukazuje všetky parametre, ktoré sa dajú meniť. Obrázok bol vytvorený pomocou balíka \pai{layout} z~uzla \pai{tools}.\footnote{\texttt{CTAN:/tex-archive/macros/latex/packages/tools}} \textbf{POČKAJTE!} \ldots skôr než sa pustíte do šialených aktivít typu: \uv{Rozšírme trošku túto úzku stranu!}, porozmýšľajte pár sekúnd. Rovnako ako v~prípade väčšiny vecí v~\LaTeX{}u, nájdu sa dobré dôvody aj nato, aby bol vzhľad stránky taký, aký je. Samozrejme, v~porovnaní so stránkou MS Wordu vyzerá hrozne úzka. %off-the-shelf MS Word page Ale pozrite sa na vašu obľúbenú knihu\footnote{Mám na mysli skutočnú tlačenú knihu vyrobenú vydavateľom s~dobrou povesťou.} a spočítajte počet písmen na štandardnom textovom riadku. Zistíte, že tam nie je viac písmen ako okolo 66. Teraz urobte to isté so svojou \LaTeX{}ovskou stranou. Zistíte, že aj tam sa nachádza približne 66 znakov na riadok. Skúsenosti ukazujú, že ak sa na riadku vyskytuje viac písmen, čítanie sa stáva obtiažnejším. Je to preto lebo očiam je náročné presúvať sa z~konca riadku na začiatok ďalšieho. Toto je tiež dôvod nato, aby sa noviny tlačili do viacerých stĺpcov. Teda ak zväčšíte šírku vášho textu, uvedomte si, že komplikujete život čitateľom vašej práce. Ale dosť bolo výstrah, sľúbil som, že vám poviem, ako sa to robí\ldots \LaTeX{} poskytuje dva príkazy na zmenu týchto parametrov. Väčšinou sa používajú v~hlavičke dokumentu. Prvým príkazom sa nastavuje určitá hodnota ktoréhokoľvek z~daných parametrov: \begin{lscommand} \ci{setlength}\verb|{|\emph{parameter}\verb|}{|\emph{dĺžka}\verb|}| \end{lscommand} Druhý príkaz pridáva určitú hodnotu ku ktorémukoľvek z~daných parametrov: \begin{lscommand} \ci{addtolength}\verb|{|\emph{parameter}\verb|}{|\emph{dĺžka}\verb|}| \end{lscommand} Tento druhý príkaz je v~skutočnosti prospešnejší než príkaz \ci{sethlength}, pretože môžete pracovať podobne, ako pri existujúcich nastaveniach. Aby ste k~šírke stránky pridali jeden centimeter, do hlavičky treba pridať nasledujúce príkazy: \begin{code} \verb|\addtolength{\hoffset}{-0.5cm}|\\ \verb|\addtolength{\textwidth}{1cm}| \end{code} V~tejto súvislosti vás možno zaujme balík \pai{calc} umožňujúci použitie aritmetických operácií v~argumente príkazu \verb+\setlength+ a na iných miestach, kde môžete zadávať numerické hodnoty ako argumenty funkcií. \section{Viac zábavy s~dĺžkami} Vždy, keď je to možné, vyhýbam sa používaniu absolútnych dĺžok v~\LaTeX{}ov\-ských dokumentoch. Radšej sa snažím založiť veci na dĺžke, výške alebo inom prvku strany. Pre šírku obrázku to môže byť \verb|\textwidth| -- takto zaplní stranu. Nasledujúce 3 príkazy umožňujú určiť šírku, výšku a hĺbku textového reťazca. \begin{lscommand} \ci{settoheight}\verb|{|\emph{príkaz}\verb|}{|\emph{text}\verb|}|\\ \ci{settodepth}\verb|{|\emph{príkaz}\verb|}{|\emph{text}\verb|}|\\ \ci{settowidth}\verb|{|\emph{príkaz}\verb|}{|\emph{text}\verb|}| \end{lscommand} \noindent Nasledujúci príklad ilustruje možné použitie týchto príkazov. \begin{example} \flushleft \newenvironment{vardesc}[1]{% \settowidth{\parindent}{#1:\ } \makebox[0pt][r]{#1:\ }}{} \begin{displaymath} a^2+b^2=c^2 \end{displaymath} \begin{vardesc}{Kde}$a$, $b$ -- sú odvesny pravouhlého trojuholníka. $c$ -- je prepona trojuholníka a cíti sa osamelo. $d$ -- sa tu nakoniec vôbec nevyskytuje. Nie je to popletené? \end{vardesc} \end{example} \section{Škatuľky, krabičky, schránky, skrinky, boxy} \LaTeX{} vytvára svoje strany rozmiestňovaním boxov (škatuliek, krabičiek, schránok, skriniek). Po prvé, každé písmeno je malá krabička, ktorá sa ďalej nalepuje na iné písmená, vytvárajúc slová. Tieto sa zasa prilepujú k~ďalším slovám, ale špeciálnym glejom\footnote{Anglicky glue (pozn. prekl.)}, ktorý je pružný. Preto môže byť rad slov stlačený alebo roztiahnutý tak, aby mohol presne vyplniť riadok na strane. Pripúšťam, že toto je veľmi zjednodušená verzia toho, čo sa skutočne stane, ale myšlienka je taká, že \TeX{} narába s~glejom (lepidlom) a so škatuľkami (boxmi). Ale nielen písmená môžu tvoriť box. Do krabičky môžete položiť skutočne všetko, vrátane iných boxov. \LaTeX{} zaobchádza s~každým boxom, akoby to bolo jedno písmeno. V~predchádzajúcich kapitolách ste sa už niektorými boxmi stretli, hoci som vám to nepovedal. Prostredie \ei{tabular} a príkaz \ci{includegraphics}, napríklad, oboje vytvárajú box. To znamená, že ľahko môžete umiestniť dve tabuľky alebo dva obrázky vedľa seba. Len si musíte byť istí, že ich spoločná šírka nie je väčšia ako nastavená šírka strany. Rovnako môžete do boxu zabaliť vami zvolený odsek a to buď príkazom \begin{lscommand} \ci{parbox}\verb|[|\emph{pozícia}\verb|]{|\emph{šírka}\verb|}{|\emph{text}\verb|}| \end{lscommand} \noindent alebo pomocou prostredia \begin{lscommand} \verb|\begin{|\ei{minipage}\verb|}[|\emph{pozícia}\verb|]{|\emph{šírka}\verb|}| text \verb|\end{|\ei{minipage}\verb|}| \end{lscommand} \noindent Parameter \emph{pozícia} môže byť jedno z~písmen \texttt{c, t} alebo \texttt{b}. Týmto sa riadi vertikálne uloženie boxu vzhľadom na základnú čiaru okolitého textu. Parameter \emph{šírka} je dĺžkový argument určujúci šírku boxu. Základný rozdiel medzi príkazmi \ei{minipage} a \ei{parbox} je, že vo vnútri \ei{parbox}\/u nemôžete používať všetky príkazy a prostredia, zatiaľ čo vo vnútri \ei{minipage} je možné takmer všetko. Zatiaľ čo \ci{parbox} zabalí celý odsek so zalomením riadkov, existuje aj trieda príkazov vytvárajúcich boxy, ktoré pracujú len s~horizontálne uloženým materiálom. Už poznáme jeden z~nich. Nazýva sa \ci{mbox} a jednoducho spája do jedného boxu rad boxov. Môže byť použitý na zabránenie \LaTeX{}u rozdeliť dve slová. Keďže dovnútra boxov môžete uložiť ďalšie boxy, tieto príkazy na horizontálne balenie boxov vám poskytujú obrovskú flexibilitu. \begin{lscommand} \ci{makebox}\verb|[|\emph{šírka}\verb|][|\emph{pozícia}\verb|]{|\emph{text}\verb|}| \end{lscommand} \noindent \emph{šírka} určuje šírku výsledného boxu videného zvonku.\footnote{To znamená, že môže byť menšia ako materiál obsiahnutý vo vnútri boxu. Dokonca môžete nastaviť šírku na 0pt, takže text vo vnútri boxu sa vytlačí bez vplyvu na okolité boxy.} Oddelene od dĺžkových výrazov môžete použiť aj \ci{width}, \ci{height}, \ci{depth} a \ci{totalheight} v~parametri šírky. Tieto sa nastavia podľa hodnôt získaných meraním vytlačeného \emph{text}\/u. Parameter \emph{pozícia} nadobúda jednu z~hodnôt: \textbf{c}entrovanie, \textbf{l}eft flush (zarovnanie naľavo), \textbf{r}ight flush (zarovnanie vpravo) alebo \textbf{s}, ktorý roztiahne text, obsiahnutý v~boxe, na celú šírku boxu. Príkaz \ci{framebox} funguje presne tak ako \ci{makebox}, ale navyše nakreslí okolo textu rámček. Nasledujúci príklad vám ukáže niektoré veci, ktoré môžete robiť príkazmi \ci{makebox} a \ci{framebox}. \begin{example} \makebox[\textwidth]{% c e n t r o v a n i e}\par \makebox[\textwidth][s]{% r o z t i a h n u t i e}\par \framebox[1.1\width]{Tuším som zarámovaný!} \par \framebox[0.8\width][r]{Ty nešika, som príliš široký} \par \framebox[1cm][l]{nevadí, ja som tiež} Dokážeš to prečítať? \end{example} Teraz, keď sme zvládli vodorovné riadenie, očividne nasledujúci krok je prechod na vertikálne.\footnote{Úplnú kontrolu nad všetkým môžeme získať len kombináciou horizontálneho a vertikálneho\ldots.} Žiaden problém pre \LaTeX{}. Príkazom \begin{lscommand} \ci{raisebox}\verb|{|\emph{nadvihnutie}\verb|}[|\emph{hĺbka}\verb|][|\emph{výška}\verb|]{|\emph{text}\verb|}| \end{lscommand} \noindent môžete určiť vertikálne vlastnosti boxu. V~prvých troch parametroch môžete použiť \ci{width}, \ci{height}, \ci{depth} a \ci{totalheight}, aby ste ovplyvnili veľkosť boxu pre argument \emph{text}. \begin{example} \raisebox{0pt}[0pt][0pt]{\Large% \textbf{Aaaa\raisebox{-0.3ex}{a}% \raisebox{-0.7ex}{aa}% \raisebox{-1.2ex}{a}% \raisebox{-2.2ex}{c}% \raisebox{-4.5ex}{h}}} -- zakričal, ale dokonca ani najbližší v~rade si nevšimol, že sa mu prihodilo niečo strašné. \end{example} \section{Čiary a rozpery} \label{sec:rule} Pred niekoľkými stranami ste si mohli všimnúť príkaz \begin{lscommand} \ci{rule}\verb|[|\emph{nadvihnutie}\verb|]{|\emph{šírka}\verb|}{|\emph{výška}\verb|}| \end{lscommand} \noindent Pri obyčajnom použití vytvorí jednoduchý čierny obdĺžnik. \newpage \begin{example} \rule{3mm}{.1pt}% \rule[-1mm]{5mm}{1cm}% \rule{3mm}{.1pt}% \rule[1mm]{1cm}{5mm}% \rule{3mm}{.1pt} \end{example} \noindent Toto je užitočné na kreslenie vertikálnych a horizontálnych čiar. Napríklad čiara na titulnej strane bola vytvorená príkazom \ci{rule}. Zvláštnym prípadom je čiara s~nulovou šírkou, ale s určitou výškou. V~profesionálnej typografii sa to anglicky nazýva \wi{strut}.\footnote{Žiaľ, neviem, aký je slovenský typografický názov pre niečo také. Snáď to vystihuje slovo rozpera. (pozn. prekl.)} Používa sa na zabezpečenie toho, aby prvok stránky mal určitú minimálnu výšku. Môžete ju využiť v~prostredí \texttt{tabular} na zaistenie určitej minimálnej výšky riadku. \begin{example} \begin{tabular}{|c|} \hline \rule{1pt}{4ex}Viditeľná podpera \ldots\\ \hline \rule{0pt}{4ex}Rozpera\\ \hline \end{tabular} \end{example} %%% Local Variables: %%% mode: latex %%% TeX-master: "lshort2e" %%% End: