%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Obsah: Špeciality systému LaTeX % $Id: spec.tex,v 1.2 1996/01/25 14:01:06 oetiker Exp oetiker $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Špeciality} \begin{intro} Pri spájaní veľkého dokumentu vám \LaTeX{} pomôže riešiť niektoré špeciálne problémy, akými sú vytváranie registra, manažment bibliografických údajov a iné veci. Podstatne úplnejší popis špecialít a rozšírení prístupných v~\LaTeX{}u môžete nájsť v~{\normalfont\manual{}} a {\normalfont \companion}. \end{intro} \section{Vkladanie EPS grafiky} Pomocou prostredí \texttt{figure} a \texttt{table} poskytuje \LaTeX{} základné možnosti na prácu s~plávajúcimi objektmi, napríklad s~obrázkami alebo grafikou. Pomocou \LaTeX{}u alebo \LaTeX{}ových doplňujúcich balíkov je možné vytvárať aj obrázky. Nanešťastie väčšina užívateľov považuje tento spôsob za náročný na pochopenie. Z~tohoto dôvodu sa ďalej nebudeme vytváraním obrázkov v~\LaTeX u~v~tomto manuále zaoberať.\footnote{V slovenskom preklade sa budeme, pozri oddiel \ref{pictureenv} na strane \pageref{pictureenv}. (pozn. prekl.).} Bližšie informácie o~tvorbe obrázkov nájdete v~\companion{} a \manual. Oveľa jednoduchším spôsobom, ako dostať grafiku do dokumentu, je vytvoriť si daný obrázok špeciálnym grafickým programom% \footnote{Ako napríklad XFig, CorelDraw!, Freehand, Gnuplot, \ldots} a potom vložiť hotový obrázok do dokumentu. \LaTeX{} tu znovu ponúka širokú škálu balíkov, ktoré ponúkajú množstvo spôsobov, ako to urobiť. V~tomto úvode sa budeme zaoberať len typom \textsc{Encapsulated PostScript} (EPS), nakoľko je pomerne jednoduchý a často používaný. Aby ste mohli používať obrázky vo formáte EPS, musíte mať k~dispozícii \textsc{PostScript}ovú tlačiareň.\footnote{Druhý spôsob, ako použiť \textsc{PostScript}, je pomocou programu \textsc{GhostScript} dostupného na adrese \texttt{CTAN:/tex-archive/support/ghostscript}.} \index{Encapsulated PostScript@\textsc{Encapsulated PostScript}} \index{PostScript@\textsc{PostScript}} \index{GhostScript@\textsc{GhostScript}} Prospešnú sadu príkazov na vkladanie grafiky poskytuje balík \pai{graphicx}, ktorého autorom je D.~P.~Carlisle. Je to časť celej rodiny balíkov nazývanej \uv{grafický} uzol.\footnote{\texttt{CTAN:/tex-archive/macros/latex/packages/graphics}} Ak pracujete na systéme, ktorý má k~dispozícii \textsc{PostScript}ovú tlačiareň a má nainštalovaný balík \textsf{graphicx}, tak môžete používať nasledujúci návod, kde sa krok za krokom dozviete, ako vložiť grafiku do dokumentu: \begin{enumerate} \item Uložte svoj obrázok v~grafickom programe vo formáte EPS.\footnote{Ak váš softvér nedokáže exportovať do formátu EPS, môžete si skúsiť nainštalovať ovládač \textsc{PostScript}ovej tlačiarne (napríklad nejaký Apple LaserWriter) a potom tlačiť s~týmto ovládačom do súboru. Pri troche šťastia bude tento súbor vo formáte EPS. Poznamenajme, že EPS obrázok nesmie obsahovať viac ako jednu stranu. Niektoré ovládače tlačiarní môžu byť explicitne nakonfigurované na vytváranie formátu EPS.} \item Aktivujte balík \textsf{graphicx} v~hlavičke zdrojového súboru príkazom \begin{lscommand} \verb|\usepackage[|\emph{ovládač}\verb|]{graphicx}| \end{lscommand} \emph{ovládač} je názov vášho \uv{dvi to postscript} prekladača.% \footnote{Najrozšírenejší program sa volá \texttt{dvips}.} Tento názov je požadovaný balíkom, pretože neexistuje štandard na včlenenie grafiky do \TeX{}u. Poznajúc \emph{ovládač}, balík \textsf{graphicx} zvolí správnu metódu na vloženie informácie o obrázku do súboru~\texttt{.dvi} tak, aby ju tlačiareň pochopila a mohla správne začleniť EPS súbor. \item Na vloženie \emph{súboru} do dokumentu použite príkaz \begin{lscommand} \ci{includegraphics}\verb|[|\emph{kľúč}=\emph{hodnota}, \ldots\verb|]{|\emph{file}\verb|}| \end{lscommand} Za voliteľné parametre sa berie zoznam čiarkami oddelených \emph{kľúčov}~a ich hodnôt. \emph{Kľúče} sa môžu použiť na zmenu šírky, výšky a otáčanie vkladanej grafiky. Tabuľka~\ref{keyvals} uvádza zoznam najdôležitejších kľúčov. \end{enumerate} \begin{table}[htb] \caption{Názvy kľučov pre balík \textsf{graphicx}} \label{keyvals} \begin{lined}{9cm} \begin{tabular}{@{}ll} \texttt{width}& zmení obrázok na danú šírku \\ \texttt{height}& zmení obrázok na danú výšku \\ \texttt{angle}& otočí obrázok v~smere hodinových ručičiek\\ \texttt{scale}& zmení mierku obrázka \\ \end{tabular} \bigskip \end{lined} \end{table} Nasledujúci príklad, dúfajme, urobí vo veciach jasno: \begin{code} \begin{verbatim} \begin{figure} \begin{center} \includegraphics[angle=90, width=0.5\textwidth]{test.eps} \end{center} \end{figure} \end{verbatim} \end{code} Príkaz vloží obrázok uložený v~súbore \texttt{test.eps}. Obrázok je \emph{najprv} otočený o~90 stupňov a \emph{potom} rozšírený na konečnú šírku rovnajúcu sa polovici šírky štandardného odseku. Pomer výšky a šírky sa nezmenil, nakoľko sme nedefinovali žiadnu špeciálnu výšku. Parametre šírky a výšky môžu byť tiež zadané v~absolútnych jednotkách. Pozrite sa na tabuľku \ref{units} na strane \pageref{units}. Ak sa o tejto téme chcete dozvedieť viac, určite si prečítajte \cite{graphics} a \cite{eps}. \section{Prostredie \texttt{picture}}\label{pictureenv} \cih{picture} Na tomto mieste doplníme stručný popis prostredia \ei{picture}.% \footnote{Doplnené pri slovenskom preklade (pozn. prekl.).} Podrobnejší popis nájdete v~knižke \cite{rybicka}. \LaTeX{}ovské prostredie \ei{picture} umožňuje priamo v~\LaTeX{}u vytvárať jednoduché obrázky, pozostávajúce z~rovných čiar, šípiek, kružníc a oválov (respektíve polkružníc, štvrťkružníc). Okrem toho vyrába Bezierove krivky. Toto prostredie je vhodné aj na umiestňovanie popisov a to aj popisov ku grafike, vytváranej mimo \TeX{}u, napríklad k~bitmapovým obrázkom. Takýmto spôsobom sa dosiahne jednota textu a popisov obrázkov. Nasledujúci obrázok~\ref{picture} ilustruje uvedené možnosti. Bol vytvorený programom \TeX{}cad~3.2 (autori G.~Horn a J.~Winkelmann), ktorý je aj súčasťou distribúcie \CSTeX{}u. Tento program je vhodný na prvé zoznámenie sa s~prostredím \texttt{picture}, používateľ môže neskôr písať príkazy samostatne. Pri použití príkazov \verb+\emline+ a \verb+\bezier+ sú potrebné štýly \verb+emlines2.sty+ a \verb+bezier.sty+. Navyše nie všetky ovládače zobrazia výsledok príkazu \verb+\emline+. Syntax prostredia je približne nasledujúca: \begin{lscommand} \verb+\begin{picture}+\texttt{(\textit{šírka},\textit{výška})($x_r$,$y_r$)}\\ \verb+\put+\texttt{($x$,$y$)\char'173\textit{objekt}\char'175}\\ \verb+\end{picture}+ \end{lscommand} \noindent Parametre \textit{šírka} a \textit{výška} udávajú rozmery vytvoreného \uv{boxu}. Zadanie $(0,0)$ spôsobí, že vytvorený objekt má nulový rozmer, teda \TeX{} ostáva na mieste, kde bol pred zadaním prostredia \verb+picture+. Nepovinné $(x_r,y_r)$ sú súradnice \uv{referenčného bodu}, teda bodu, v~ktorom sa momentálne \TeX{} nachádza, v~súradnicovom systéme prostredia \verb+picture+. \begin{example} Uprostred slo\begin{picture}(0,0)(0,0) \unitlength=1mm \put(2,2.5) {\framebox(4,2.5)[tr]{$\bullet$}} \end{picture}va môžem na chvíľu odísť. \end{example} \begin{figure}[!h] {\small \begin{verbatim} \special{em:linewidth 0.4pt} \unitlength 1mm \linethickness{0.4pt} \begin{picture}(56.00,73.00) \put(0,0){\vector(1,0){56}} \put(0,0){\vector(0,1){73}} % osi x,y \multiput(0,0)(10,0){6}{\emline{0}{0}{1}{0}{-1}{1}} % znacky osi x \multiput(0,0)(0,10){8}{\emline{0}{0}{1}{-1}{0}{1}} % znacky osi y \put(8.67,28.33){\makebox(0,0)[rt]{Kuku}} \put(15.67,21.00){\framebox(15.67,5.67)[lt]{Zavretý}} \put(36.67,26.67){\dashbox{3.33}(17.33,9.33)[cc]{Som tu}} \put(21.67,30.00){\rule{10.00\unitlength}{5.67\unitlength}} \emline{31.67}{16.67}{1}{19.33}{6.33}{2} \put(12.33,13.33){\vector(-1,1){0.2}} \emline{19.33}{6.33}{3}{12.33}{13.33}{4} %\end \put(43.67,10.33){\circle{13.33}} \put(43.67,10.33){\circle*{4.00}} \put(12.83,46.00){\oval(10.33,4.67)[l]} \put(24.17,51.50){\oval(12.33,6.33)[rt]} \put(44.17,46.67){\oval(17.00,6.67)[]} \bezier{132}(52.67,59.33)(56.00,72.67)(37.00,69.67) \bezier{116}(18.67,64.00)(5.67,68.33)(7.67,53.67) \put(7.67,53.67){\vector(1,-4){0.2}} \put(9.33,73.00){$e^x$} \end{picture} \end{verbatim} } \begin{center} \input{picture.pic} \end{center} \caption{Príklad použitia prostredia \texttt{picture}} \label{picture} \end{figure} \section{Zoznam použitej literatúry} Prostredím \ei{thebibliography} môžete vytvárať \wi{zoznam použitej literatúry}. Každý záznam sa začína príkazom \begin{lscommand} \ci{bibitem}\verb|{|\emph{značka}\verb|}| \end{lscommand} \emph{značka} sa potom používa na citovanie knihy v~dokumente. \begin{lscommand} \ci{cite}\verb|{|\emph{značka}\verb|}| \end{lscommand} Číslovanie záznamov je automatické. Maximálny počet záznamov určuje parameter za príkazom \verb|\begin{thebibliography}|. V~nižšie uvedenom príklade vytvárame zoznam literatúry, ktorý nebude mať viac ako 99 položiek. \begin{example} Partl~\cite{pa} navrhol, že \ldots \begin{thebibliography}{99} \bibitem{pa} H.~Partl: \emph{German \TeX}, TUGboat Vol.~9, No.~1 ('88) \end{thebibliography} \end{example} \chaptermark{Špeciality} % we need to fix the damage done by the %bibliography example. \thispagestyle{fancyplain} Pri väčších projektoch sa vám môže hodiť program Bib\TeX{}. Ten je súčasťou väčšiny \TeX{}ovských distribúcií. Umožní vám udržiavať bibliografickú databázu a potom z~nej vyberať odkazy týkajúce sa prác, ktoré citujete vo vašom článku. Vizuálna prezentácia literatúry vytvorenej Bib\TeX{}om je založená na koncepcii štýlov, čo vám umožní vytvárať literatúru podľa požiadaviek širokej množiny rôznych zriadených vzorov. \section{Tvorba registrov} \label{sec:indexing} Veľmi prospešnou stránkou mnohých kníh je ich \wi{register}. \LaTeX om a podporným programom \texttt{makeindex}% \footnote{V~systémoch, ktoré nepodporujú názvy dlhšie ako 8~znakov sa môže nazývať \texttt{makeidx}. Program \texttt{csindex}, vytvorený pánom Z.~Wagnerom, je česká/slovenská implementácia programu \texttt{makeindex} (pozn. prekl.).} sa registre dajú vytvárať pomerne jednoducho. V~tomto návode budú vysvetlené len základné príkazy na tvorbu registrov. Hlbšie znalosti získate z~knižky \companion. \index{program na usporiadanie registra!makeindex} \index{program na usporiadanie registra!csindex} \index{csindex} \index{makeindex} %\index{balíky!makeidx@\textsf{makeidx}} %\index{makeidx1@\textsf{makeidx}} Aby sa samotný register mohol vytvárať, v~hlavičke musí byť natiahnutý balík \pai{makeidx}: \begin{lscommand} \verb|\usepackage{makeidx}| \end{lscommand} \noindent a špeciálne príkazy na vytváranie registra musia byť aktivované umiestnením príkazu \begin{lscommand} \ci{makeindex} \end{lscommand} \noindent do hlavičky zdrojového súboru. Obsah registra sa určuje príkazmi \begin{lscommand} \ci{index}\verb|{|\emph{kľúč}\verb|}| \end{lscommand} \noindent kde \emph{kľúč} je záznam v~registri. Príkazy na tvorbu registra umiestňujete na miesto v~texte, na ktoré chcete, aby index odkazoval. Tabuľka~\ref{index} popisuje syntax parametra \emph{kľúč} s~niekoľkými príkladmi. \begin{table}[!tp] \caption{Príklady syntaxe indexového kľúča} \label{index} \begin{center} \begin{tabular}{@{}lll@{}} \textbf{Príklad vstupu} &\textbf{Výstup} &\textbf{Poznámka}\\\hline \rule{0pt}{1.05em}\verb|\index{hello}| &hello, 1 &základná položka\\ \verb|\index{hello!Peter}| &\hspace*{2ex}Peter, 3 &podpoložka položky \suv{hello} \\ \verb|\index{Sam@\textsl{Sam}}| &\textsl{Sam}, 2& formátovaný vstup\\ \verb|\index{Lin@\textbf{Lin}}| &\textbf{Lin}, 7& podobne ako vyššie\\ \verb.\index{Jenny|textbf}. &Jenny, \textbf{3}& formát čísla strany \\ \verb.\index{Joe|textit}. &Joe, \textit{5}& podobne ako vyššie \end{tabular} \end{center} \end{table} Keď \LaTeX{} prekladá zdrojový súbor, každý príkaz \verb|\index| zapisuje príslušný indexový záznam spolu s~číslom strany do špeciáleho súbora. Tento súbor má rovnaký názov ako \LaTeX{}ový zdrojový dokument, avšak líši sa koncovkou (\verb|.idx|). Tento \texttt{.idx} súbor potom môže byť spracovaný programom \texttt{makeindex}: \begin{lscommand} \texttt{makeindex} \emph{menosúboru} \end{lscommand} Tento vytvorí usporiadaný register s~rovnakým názvom, avšak v~tomto prípade s~príponou \texttt{.ind}. V~prípade, ak bude \LaTeX{} tento zdrojový súbor znovu prekladať, bude tento zoradený register umiestnený v~dokumente na mieste, kde sa nachádza príkaz \begin{lscommand} \ci{printindex} \end{lscommand} Balík \pai{showidx}, ktorý je distribuovaný spolu s~\LaTeXe, vytlačí všetky indexované údaje na ľavom okraji textu. Toto je celkom prospešné pri kontrolnom čítaní dokumentu a overovaní registra. % Add some infos on PROTECT ... \section{Exotické hlavičky} \label{sec:fancy} Balík \pai{fancyhdr} (od spojenia Fancy Headers)\footnote{Dostupný na \texttt{CTAN:/tex-archive/macros/latex/contrib/supported/fancyhdr}.} napísaný Pietom van Oostrum poskytuje niekoľko jednoduchých príkazov, ktoré vám umožnia prispôsobiť si riadky v~hlavičke alebo v~päte vášho dokumentu. Ak sa pozriete na vrch strany, ktorú práve čítate, môžete vidieť možné použitie tohto balíka. \begin{figure}[!htbp] \begin{lined}{\textwidth} \begin{verbatim} \documentclass{book} \usepackage{fancyhdr} \pagestyle{fancy} % týmto sa uistíme, že hlavičky pre chapter a section % budú písané malými písmenami. \renewcommand{\chaptermark}[1]{\markboth{#1}{}} \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} \fancyhf{} % ruší aktuálne nastavenia pre hlavičku a pätu \fancyhead[LE,RO]{\bfseries\thepage} \fancyhead[LO]{\bfseries\rightmark} \fancyhead[RE]{\bfseries\leftmark} \renewcommand{\headrulewidth}{0.5pt} \renewcommand{\footrulewidth}{0pt} \addtolength{\headheight}{0.5pt} % vytvára medzeru pre čiaru \fancypagestyle{plain}{% \fancyhead{} % zbaví sa hlavičky na stránkach plain \renewcommand{\headrulewidth}{0pt} % aj čiary } \end{verbatim} \end{lined} \caption{Príklad nastavenia \pai{fancyhdr}} \label{fancyhdr} \end{figure} Skryté a neočakávané ťažkosti sa môžu vyskytnúť, keď sa snažíme do hlavičky alebo päty dostať niečo ako priebežné oddiely a kapitoly. \LaTeX{} to vykoná dvojstupňovým prístupom. V~definícii hlavičky a päty použijete príkazy \ci{rightmark} a \ci{leftmark} na reprezentáciu názvu aktuálnej kapitoly, respektíve oddielu. Hodnoty týchto dvoch príkazov budú prepísané pri každom vykonaní príkazu \ci{chapter} alebo \ci{section}. Pre konečnú pružnosť príkaz \verb|\chapter| s~kamarátmi nepredefinujú samotné \ci{rightmark} a \ci{leftmark}. Volajú ešte ďalšie príkazy \ci{chaptermark}, \ci{sectionmark} alebo \ci{subsectionmark}, ktoré sú zodpovedné za predefinovanie obsahu \ci{rightmark} a \ci{leftmark}. Takže ak chcete zmeniť vzhľad názvu kapitoly v~hlavičkovom riadku, musíte jednoducho \uv{obnoviť} príkaz \ci{chaptermark}. \cih{sectionmark}\cih{subsectionmark} Obrázok~\ref{fancyhdr} ukazuje možné nastavenia pre balík \pai{fancyhdr}, ktoré vytvoria hlavičky vyzerajúce približne tak ako hlavičky v~tejto brožúrke. V~každom prípade vám odporúčam stiahnuť si dokumentáciu k~balíku na adrese uvedenej v~poznámke. \section{Balík verbatim} V~našej knižke ste sa už skôr zoznámili s~\emph{prostredím} \ei{verbatim}. V~tomto oddiele sa naučíte niečo o \emph{balíku} \pai{verbatim}. Balík \pai{verbatim} je v~princípe re-implementácia prostredia \ei{verbatim}, ktorá obchádza niektoré ohraničenia pôvodného prostredia \ei{verbatim}. Toto samo osebe nie je nič mimoriadne, ale s~touto implementáciou balíka \pai{verbatim} boli pridané aj nové funkcie, čo bolo dôvodom na to, že tu tento balík spomínam. Balík \pai{verbatim} sprístupňuje príkaz \begin{lscommand} \ci{verbatiminput}\verb|{|\emph{menosúboru}\verb|}| \end{lscommand} \noindent ktorý vám umožní začleniť surový ASCII text do vášho dokumentu ako keby bol vo vnútri prostredia \ei{verbatim}. Keďže balík \pai{verbatim} je časťou uzla \suv{tools}, mali by ste ho nájsť nainštalovaný vo väčšine systémov. Ak sa o tomto balíku chcete dozvedieť viac, určite si prečítajte \cite{verbatim}. \section{Ochrana krehkých príkazov} Text zadaný ako argument príkazov typu \ci{caption} alebo \ci{section} sa môže ukazovať v~dokumente viackrát (napríklad v~obsahu rovnako ako v~samotnom texte). Niektoré príkazy skrachujú, ak sú použité ako argument príkazov typu \ci{section}. Tieto príkazy sa nazývajú \wi{krehké príkazy}. Krehký príkaz je napríklad \ci{footnote} alebo \ci{phantom}. Na to, aby tieto príkazy fungovali, potrebujú ochranu (a my všetci nie?). Môžete ich ochrániť použitím príkazu \ci{protect} umiestneným pred nimi. \ci{protect} sa vzťahuje len na príkaz nasledujúci bezprostredne za ním, nevzťahuje sa dokonca ani na jeho argumenty. Nadbytočný príkaz \ci{protect} vo väčšine prípadov neuškodí. \begin{code} \verb|\section{Som ohľaduplný|\\ \verb| \protect\footnote{a chránim svoje poznámky pod čiarou}}| \end{code} \endinput %%% Local Variables: %%% mode: latex %%% TeX-master: "lshort2e" %%% End: