%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Contents: Typesetting Part of LaTeX2e Introduction % $Id: typeset.tex,v 1.2 2003/03/19 20:57:47 oetiker Exp $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Stavljenje teksta} \begin{intro} Če ste prebrali prejšnje poglavje, potem poznate osnovne sestavine \LaTeXe{} datotek. V tem poglavju bomo to dopolnili z dodatnimi podatki, ki jih potrebujete, če želite pisati ">ta prave"< dokumente. \end{intro} \section{Zgradba teksta in jezika} \secby{Hanspeter Schmid}{hanspi@schmid-werren.ch} Glavni namen pisanja teksta je prenesti določene ideje, podatke, ali znanje na bralca. Le ta bo tekst razumel bolje, če bodo ideje dobro strukturirane, to strukturo pa bo videl in občutil veliko bolje, če se bo v tiskani obliki zrcalila logična in semantična zgradba vsebine. \LaTeX{} se razlikuje od ostalih urejevalnikov besedil v tem, da mu moramo podati logično in semantično zgradbo teksta. Na podlagi tega lahko iz pravil, ki veljajo za izbrani razred dokumenta in iz ustreznih stilskih datotek, prevede besedilo v obliko za tiskanje. Najpomembnejša enota besedila v \LaTeX{}u (in pri stavljenju teksta) je \wi{odstavek}. Odstavek predstavlja eno zaključeno misel ali eno idejo. V raz\-del\-kih, ki sledijo, se bomo naučili, kako lahko prelomimo vrstico (npr.{} z \texttt{\bs\bs}) in kako pridemo do novega odstavka (npr.{} tako, da v vhodnem besedilu pustimo prazno vrstico). Torej, če začenjamo novo misel, potem naj se začne v novem odstavku, sicer pa v vhodni datoteki uporabljamo le prelome vrstic. Če smo v dvomih ali naj naredimo nov odstavek ali ne, potem si predstavljamo celotno besedilo kot tekoči trak idej in razmišljanj. Če imamo v besedilu nov odstavek, a se misel iz prejšnjega nadaljuje, potem v resnici ne potrebujemo novega odstavka. Če pa se znotraj odstavka pojavi popolnoma nova misel, potem je potrebno začeti nov odstavek. Večina popolnoma podcenjuje pomembnost dobro postavljenih prelomov odstavkov. Veliko jih sploh ne pozna pomena odstavka ali pa, še posebno v \LaTeX{}u, dodajajo prelome odstavkov, ne da bi za to sploh vedeli. Ta zadnjo napako je še posebno lahko zagrešiti kadar tekst vsebuje tudi enačbe. Poglejte naslednji zgled in ugotovite, zakaj nekje pred in po enačbi uporabljamo prazno vrstico (prelom odstavka), drugje pa ne. (Če še ne poznate dovolj ukazov, da bi lahko brez težav razumeli te zglede, preberite to in še naslednje poglavje, potem pa se vrnite na ta razdelek.) \begin{example} \ldots Preko Pitagorovega izreka \begin{equation} c^2 = a^2+b^2 \end{equation} lahko izračunamo tretjo stranico pravokotnega trikotnika iz ostalih dveh. \end{example} \begin{example} \ldots iz česar sledi Kirchoffov zakon o toku: \begin{equation} \sum_{k=1}^{n} I_k = 0 \; . \end{equation} Izpeljemo lahko tudi Kirchhoffov zakon o napetosti \ldots \end{example} \begin{example} \ldots, ki ima številne prednosti. \begin{equation} I_D = I_F - I_R \end{equation} je bistvo drugačnega modela tranzistorja. \ldots \end{example} Naslednja manjša enota je stavek. V angleških besedilih za piko, ki konča stavek, stoji daljši presledek kot za piko, ki označuje okrajšavo. \LaTeX{} sicer sam poskuša ugotoviti, kaj od tega želimo, če pa mu to ne uspe zadovoljivo, mu moramo povedati, kaj želimo. To je razloženo v nadaljevanju tega poglavja. Strukturiranje teksta se nadaljuje celo na dele stavkov. Večina jezikov ima zelo zapletena pravila za postavljanje ločil, v veliko jezikih (vključno z nemščino in angleščino), pa se da zadeti skoraj vsako vejico, če se zavedamo, da predstavlja kratko zaustavitev toka jezika. Če niste prepričani, kam postaviti vejico, preberite stavek naglas in za vsako vejico naredite malo premora. Če to na kakšnem mestu ne zveni najbolje, tisto vejico odstranite. Prav tako, če morate na kakšnem mestu zajeti zrak (ali se ustaviti), potem na to mesto postavite vejico. Odstavke je potrebno logično povezati v strukture na višjem nivoju v poglavja, razdelke, podrazdelke, in tako dalje. Kako deluje ukaz kot je npr.{} \verb|\section{|\texttt{Struktura teksta in jezika}\verb|}| je tako očitno, da je skoraj samoumevno kako se uporablja te višje strukture. \section{Prelomi vrstic in strani} \subsection{Obojestransko poravnani odstavki} Ponavadi so knjige stavljene tako, da imajo vse vrstice enako dolžino. \LaTeX{} vstavi potrebne \wii{prelom vrstice}{prelome vrstic} in presledke med besedami tako, da optimizira vsebino celotnega odstavka. Če je potrebno, tudi deli besede, ki jih ni možno udobno postaviti v vrstico. Sama oblika odstavkov je odvisna od uporabljenega razreda. Normalno je prva vrstica zamaknjena, med dvema odstavkoma pa ni dodatnega navpičnega presledka. Več podrobnosti o tem lahko najdete v razdelku~\ref{parsp}. V posebnih primerih je potrebno ukazati \LaTeX{}u, da naj prelomi vrstico ali stran. Ukaz \begin{lscommand} \ci{\bs} ali \ci{newline} \end{lscommand} \noindent izsili prelom vrstice, ostanemo pa v istem odstavku. Ukaz \begin{lscommand} \ci{\bs*} \end{lscommand} \noindent dodatno preprečuje prelom strani za izsiljenim prelomom vrstice. Ukaz \begin{lscommand} \ci{newpage} \end{lscommand} \noindent začenja novo stran. Ukazi \begin{lscommand} \ci{linebreak}\verb|[|\emph{n}\verb|]|, \ci{nolinebreak}\verb|[|\emph{n}\verb|]|, \ci{pagebreak}\verb|[|\emph{n}\verb|]| and \ci{nopagebreak}\verb|[|\emph{n}\verb|]| \end{lscommand} \noindent naredijo to, kar pravijo njihova imena. Z dodatnim parametrom \emph{n} lahko vplivamo na njihovo obnašanje. Vrednost parametra je lahko med $0$ in $4$. Če nastavimo \emph{n} na vrednost pod 4, potem pustimo \LaTeX{}u možnost, da ignorira naš ukaz, če bo rezultat zgledal zelo slabo. Teh ">break"< ukazov ne smemo zamenjevati z ">new"< ukazi. Celo kadar uporabimo ">break"< ukaz, bo \LaTeX{} še vedno poskušal poravnati desni rob oziroma skupno dolžino strani, kot je opisano v naslednjem razdelku. Če res želimo novo vrstico (new line), potem je potrebno uporabiti ustrezni ukaz. Uganite njegovo ime! \LaTeX{} vedno poskuša narediti čim boljše prelome vrstic. Če vseeno ne uspe zlomiti vrstice tako, da bi to zadoščalo njegovim visokim standardom, potem pusti, da ena vrstica štrli ven na desni strani odstavka. V tem primeru \LaTeX{} med prevajanjem vhodne datoteke izpiše opozorilo (">\wi{overfull hbox}"<). Najpogostejši razlog je, da \LaTeX{} ni uspel poiskati primernega mesta za delitev besede.\footnote{Čeprav \LaTeX{} izpiše opozorilo (Overfull hbox) in izpiše predolgo vrstico, takih vrstic ni preprosto poiskati. Če pri ukazu \ci{documentclass} označimo opcijo \texttt{draft}, potem bodo predolge vrstice označene z debelo črno črto na desnem robu.} \LaTeX{}u lahko naročimo, da malo omili svoj kriterij z ukazom \ci{sloppy}. Ta prepreči predolge vrstice tako, da poveča presledke med posameznimi besedami, pa čeprav končni izgled ni optimalen. Tudi v tem primeru \LaTeX{} pri prevajanju izpiše opozorilo (">\wi{underfull hbox}"<). V večini takšnih primerov rezultat ne zgleda najboljše. Ukaz \ci{fussy} vrne \LaTeX{} nazaj na privzeto nastavitev. \subsection{Deljenje besed} \label{hyph} \LaTeX{} deli besede, kadar je to potrebno. Če algoritem za deljenje ne najde pravilnega mesta deljenja, lahko takšno situacijo popravimo tako, da \TeX{}u povemo za to izjemo. Ukaz \begin{lscommand} \ci{hyphenation}\verb|{|\emph{seznam besed}\verb|}| \end{lscommand} \noindent povzroči, da se besede, ki so navedene v seznamu, delijo le na mestih označenih z ">\verb|-|"<. Argument ukaza naj vsebuje samo besede zgrajene iz normalnih črk oziroma znakov, ki se v trenutnem kontekstu obnašajo kot normalne črke. Namigi za deljenje se shranijo za tisti jezik, ki je aktiven, ko je uporabljen ukaz \texttt{hyphenation}. To pomeni, da če ukaz \texttt{hyphenation} stoji v preambuli, potem so to namigi za deljenje besed v angleščini. Če pa ukaz uporabimo za \verb|\begin{document}| in uporabljamo kakšen paket za podporo svojega jezika kot npr.~\pai{babel}, potem bodo namigi za deljenje aktivirani v okviru paketa \pai{babel}. Spodnji primer omogoča, da se beseda ">hyphenation"< deli in prav tako ">Hyphenation"<, preprečuje pa vsakršno deljenje besed ">FORTRAN"<, ">Fortran"< in ">fortran"<. V argumentu ukaza ni dovoljeno uporabljati posebnih znakov, posamezne besede pa ločimo s presledki. \begin{code} \verb|\hyphenation{FORTRAN Hy-phen-a-tion}| \end{code} Namesto \texttt{hyphenation} lahko na samem mestu, kjer potrebujemo deljenje besede, uporabimo ukaze \ci{-}, ki označujejo potencialna mesta deljenja v besedi. Ta ukaz je še posebno uporaben za besede, ki vsebujejo posebne znake (npr.{} znake z akcenti), saj \LaTeX{} ne zna avtomatično deliti besed, ki vsebujejo posebne znake. %\footnote{Unless you are using the new %\wi{DC fonts}.}. \begin{example} I think this is: su\-per\-cal\-% i\-frag\-i\-lis\-tic\-ex\-pi\-% al\-i\-do\-cious \end{example} Če ne želimo deljenja besede oziroma želimo, da več besed stoji skupaj v eni vrstici brez preloma vrstice, uporabimo ukaz \begin{lscommand} \ci{mbox}\verb|{|\emph{text}\verb|}| \end{lscommand} \noindent Ukaz povzroči, da argument stoji skupaj v eni vrstici ne glede na okoliščine. \begin{example} Moja telefonska številka je spremenjena. Nova številka je \mbox{0116 291 2319}. Parameter \mbox{\emph{filename}} naj vsebuje ime datoteke. \end{example} Ukaz \ci{fbox} je podoben \ci{mbox}, dodatno pa nariše še vidni pravokotnik okrog vsebine. \section{Že pripravljeni nizi} V nekaterih primerih na prejšnjih straneh ste lahko opazili nekaj zelo preprostih \LaTeX{}ovih ukazov, ki izpišejo tekstovni niz z določeno vsebino: \vspace{2ex} \noindent \begin{tabular}{@{}lll@{}} Ukaz&Primer&Opis\\ \hline \ci{today} & \today & Trenutni datum v izbranem jeziku\\ \ci{TeX} & \TeX & Ime vašega priljubljenega programa \\ \ci{LaTeX} & \LaTeX & Glavna zadeva\\ \ci{LaTeXe} & \LaTeXe & Trenutna inkarnacija \LaTeX{}a\\ \end{tabular} \section{Specialni znaki in simboli} \subsection{Narekovaji} Za \wii{narekovaji}{narekovaje} se \emph{ne} uporablja \verb|"| \index{""@\texttt{""}} kot na pisalnem stroju. Pri tisku poznajo posebne začetne in zaključne narekovaje. V \LaTeX{}u uporabimo dva znaka ~\verb|`| za začetne narekovaje in dva znaka~\verb|'| (apostrof) za zaključne narekovaje. Za enojne narekovaje uporabimo po en znak \verb|`| in \verb|'|. \begin{example} ``Prosim, pritisnite `x' tipko.'' \end{example} Seveda to velja le za narekovaje v angleščini. Za pravilen zapis narekovajev v slovenščini si poglejte razdelek \ref{slovenscina}. \subsection{Pomišljaji in vezaji} \LaTeX{} pozna štiri vrste \wii{vezaj}{vezajev}. Do treh lahko pridemo tako, da vnesemo od enega do tri zaporedne pomišljaje. Četrti znak v bistvu sploh ni vezaj, saj gre za matematični simbol minus: \index{-} \index{--} \index{---} \index{-@$-$} \index{matematični minus} \begin{example} daughter-in-law, X-rated\\ pages 13--67\\ yes---or no? \\ $0$, $1$ and $-1$ \end{example} Imena so naslednja: `-' \wi{vezaj}, `--' \wi{pomišljaj}, `---' \wi{dvodelni pomišljaj} in `$-$' \wi{minus}. \subsection{Tilda ($\sim$)} \index{www}\index{URL}\index{tilda ( \verb.~.)} Znak, ki se pogosto pojavlja v internetnih naslovih, je tilda. V \LaTeX{}u jo lahko dobimo z \verb|\~|, vendar rezultat \~{} ni povsem to, kar želimo. Namesto tega lahko poskusite: \begin{example} http://www.rich.edu/\~{}bush \\ http://www.clever.edu/$\sim$demo \end{example} \subsection{Znak za stopinje ($\circ$)} Kako v \LaTeX{}u izpišemo znak za stopinje, prikazuje naslednji primer. \begin{example} Pri $-30\,^{\circ}\mathrm{C}$ se bo kmalu začela superprevodnost. \end{example} Uporabimo lahko tudi paket \pai{textcomp}, kjer je znak za stopinje na voljo kot \ci{textcelsius}. \subsection{Znak za valuto evro \texorpdfstring{(\officialeuro)}{}} Za pisanje denarnih zneskov potrebujemo znak za evro. Ta je vključen v številne pisave. Če v preambuli dokumenta naložimo paket \pai{textcomp} z ukazom \begin{lscommand} \ci{usepackage}\verb|{textcomp}| \end{lscommand} imamo potem na voljo ukaz \begin{lscommand} \ci{texteuro} \end{lscommand} za znak za evro. Če v naši pisavi ni simbola za evro oziroma je na voljo, pa nam ni všeč, imamo na voljo še dve dodatni možnosti. Prva je paket \pai{eurosym}. V njem je na voljo uradni simbol za evro: \begin{lscommand} \ci{usepackage}\verb|[|\emph{official}\verb|]{eurosym}| \end{lscommand} Če bi raje uporabili simbol za evro, ki bi se ujemal z izbrano pisavo, lahko uporabimo opcijo \texttt{gen} namesto opcije \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"<). V paketu \pai{marvosym} je na voljo mnogo različnih simbolov, vključno z znakom za evro, ki ima ime \ci{EURtm}. Slabost tega paketa je, da ne podpira nagnjenih in krepkih variant znaka za evro.. \begin{table}[!htbp] \caption{Polna vreča znakov za evro} \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{Tri pike ( \ldots )} Na pisalnem stroju \wi{vejica} in \wi{pika} zavzameta enako velik prostor kot katerikoli drug znak. V knjigah ta znaka zavzameta le malo prostora in stojita zelo blizu predhodnih črk. Zaradi tega ne moremo vnesti \wii{tri pike}{tri pike} tako, da bi le vnesli tri pike, saj bi bili presledki napačni. Za tri pike imamo poseben ukaz \begin{lscommand} \ci{ldots} \end{lscommand} \index{...@\ldots} \begin{example} Ne tako ... ampak tako:\\ New York, Tokio, Budimpešta, \ldots \end{example} \subsection{Ligature} Nekatere kombinacije črk se ne stavijo s postavljanjem različnih črk druge k drugi, temveč se uporabi posebne simbole. \begin{code} {\large ff fi fl ffi\ldots}\quad namesto\quad {\large f{}f f{}i f{}l f{}f{}i \ldots} \end{code} Te t.i.~\wi{ligature} lahko preprečimo, če med ustrezni dve črki vrinemo \ci{mbox}\verb|{}|. To je lahko pomembno, če je beseda sestavljena iz dveh samostojnih besed. \begin{example} Not shelfful\\ but shelf\mbox{}ful \end{example} \subsection{Akcenti in posebni znaki} \LaTeX{} podpira uporabo \wii{akcenti}{akcentov} in \wii{posebni znaki}{posebnih znakov}, ki jih poznajo neangleški jeziki. Tabela~\ref{accents} prikazuje vse možne akcente, s katerimi lahko opremimo črko o. Seveda to deluje tudi za ostale črke. Če želimo postaviti akcent na vrh črke i ali j, potem moramo najprej odstraniti piko. To naredimo z ukazom \verb|\i| oziroma \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, \v{s}\v{c}epec soli \end{example} \begin{table}[!hbp] \caption{Akcenti in posebni znaki.} \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{gola \i{} in \j}\index{skandinavski znaki} \index{šumniki} \index{ae@\ae}\index{preglas} \index{oe@\oe} \bigskip \end{lined} \end{table} \section{Podpora drugih jezikov} \index{mednarodne nastavitve}Če pišemo besedila v \wi{jezik}u, ki ni angleščina, potem moramo \LaTeX{} na treh mestih pravilno nastaviti: \begin{enumerate} \item Vsi nizi, ki se avtomatično generirajo\footnote{npr.~Table of Contents, List of Figures, \ldots} morajo biti prilagojeni novemu jeziku. Za večino jezikov, med njimi tudi za slovenščino, lahko to dosežemo z uporabo paketa \pai{babel}, ki ga je napisal Johannes Braams. \item \LaTeX{} mora poznati pravila za deljenje besed za novi jezik. Za večino jezikov (tudi za slovenščino) je to že vključeno v paket \texttt{babel}, le pri namestitvi je \LaTeX{}u potrebno povedati, da naj jih uporablja, kar je odvisno od operacijskega sistema lahko malce bolj zapleteno opravilo. Če podpore za jezik ni, je potrebno ročno zgraditi datoteko pravil za deljenje. \item Potrebno je nastaviti specifična pravila za stavljenje teksta. Npr.,~v francoščini mora obvezno stati presledek pred vsakim dvopičjem (:). \end{enumerate} Če je sistem že pravilno nastavljen, potem lahko paket \pai{babel} aktiviramo z ukazom \begin{lscommand} \ci{usepackage}\verb|[|\emph{jezik}\verb|]{babel}| \end{lscommand} \noindent za ukazom \verb|\documentclass|. Argument \emph{jezik} je ime jezika, ki ga podpira sistem. V primeru slovenščine je to \texttt{slovene}. Pri vsakem klicu prevajalnika se izpiše seznam jezikov, ki so vgrajeni v naše \LaTeX{} okolje. Babel avtomatično vključi ustrezna pravila za deljenje za izbrani jezik. Če \LaTeX{} ne podpira deljenja v izbranem jeziku, bo \textsf{babel} še vedno delal, toda deljenje besed bo ali izključeno ali pa nepravilno, kar ima lahko negativne posledice na sam videz prevedenega dokumenta. Pri nekaterih jezikih \textsf{babel} tudi definira nove ukaze, ki poenostavijo vnos posebnih znakov oziroma lokalnih črk. V slovenščini tako lahko šumnike pišemo kot \verb|"c|, \verb|"s|, \verb|"z|, \verb|"C|, \verb|"S|, \verb|"Z| namesto \verb|\v{c}|, \verb|\v{s}|, \verb|\v{z}|, \verb|\v{C}|, \verb|\v{S}|, \verb|\v{Z}|. V vseh novejših različicah \LaTeX{}a lahko šumnike vnašamo tudi kot \verb|č|, \verb|š|, \verb|ž|, \verb|Č|, \verb|Š|, \verb|Ž|, podrobnosti najdete v nadaljevanju. Če pri klicu paketa babel navedemo več jezikov \begin{lscommand} \ci{usepackage}\verb|[|\emph{jezikA}\verb|,|\emph{jezikB}\verb|]{babel}| \end{lscommand} \noindent potem bo aktiven zadnji jezik iz seznama (v zgornjem primeru jezikB). Z ukazom \begin{lscommand} \ci{selectlanguage}\verb|{|\emph{jezikA}\verb|}| \end{lscommand} \noindent lahko spremenimo aktivni jezik. %Input Encoding \newcommand{\ieih}[1]{% \index{encodings!input!#1@\texttt{#1}}% \index{input encodings!#1@\texttt{#1}}% \index{#1@\texttt{#1}}} \newcommand{\iei}[1]{% \ieih{#1}\texttt{#1}} %Font Encoding \newcommand{\feih}[1]{% \index{encodings!font!#1@\texttt{#1}}% \index{font encodings!#1@\texttt{#1}}% \index{#1@\texttt{#1}}} \newcommand{\fei}[1]{% \feih{#1}\texttt{#1}} Večina modernih operacijskih sistemih dopušča, da posebne znake nacionalne abecede vnašamo kar direktno s tipkovnico. Za obdelavo različnih vhodnih kodnih tabel, ki jih potrebujemo za različne skupine jezikov in različna računalniška okolja, \LaTeX{} uporablja paket \pai{inputenc}, ki ga vključimo z ukazom \begin{lscommand} \ci{usepackage}\verb|[|\emph{kodna tabela}\verb|]{inputenc}| \end{lscommand} Pri uporabi tega paketa moramo razmišljati o tem, da zaradi uporabe različnih kodnih tabel na različnih operacijskih sistemih, dokument s takim kodiranjem mogoče ne bo možno predelati na drugem računalniku. Tipičen primer so šumniki, ki imajo pod Okni na PC drugačne kode kot pa na Unixu. Naslednja tabela prikazuje nekatera imena kodnih tabel, ki jih lahko uporabimo kot argument v paketu \textsf{inputenc}:\footnote{Več o podprtih vhodnih kodiranjih za jezike, ki uporabljajo latinico in cirilico, lahko najdete v v dokumentaciji \texttt{inputenc.dtx} oziroma \texttt{cyinpenc.dtx}. V razdelku~\ref{sec:Packages} preberite, kako se pripravi navodila za pakete iz \texttt{.dtx} datotek.} \begin{center} \begin{tabular}{l | r} operacijski sistem & kodna tabela\\ \hline Mac & \texttt{applemac} \\ Unix & \texttt{latin1} \\ Windows & \texttt{ansinew} \\ OS/2 & \texttt{cp850} \\ MS-DOS (šumniki) & \texttt{cp852} \\ Windows (šumniki) & \texttt{cp1250} \\ Unix (šumniki) & \texttt{latin2} \\ \end{tabular} \end{center} Če imate večjezični dokument, v katerem se iste kode znakov uporabljajo v različnih jezikih za različne črke, je mogoče bolje, da preklopite na kodiranje unicode z uporabo paketa \pai{ucs}. Ukaza \begin{lscommand} \ci{usepackage}\verb|{ucs}|\\ \ci{usepackage}\verb|[|\iei{utf8x}\verb|]{inputenc}| \end{lscommand} \noindent vam omogočata kreiranje \LaTeX{}ove vhodne datoteke v kodiranju \iei{utf8x}, kjer je vsak znak predstavljen z najmanj enim in največ štirimi bajti. Samo kodiranje pisave je druga zadeva. Ta pove, na katerem položaju v \TeX{}ovih pisavah je shranjen posamezni znak. Več vhodnih kodiranj se lahko preslika na isto kodiranje pisave, kar zmanjša število potrebnih pisav. Za kodiranje pisav skrbi paket \pai{fontenc}: \label{fontenc} \begin{lscommand} \ci{usepackage}\verb|[|\emph{kodiranje}\verb|]{fontenc}| \index{font encodings} \end{lscommand} \noindent kjer je \emph{kodiranje} izbrano kodiranje pisave. Možno je naložiti več kodiranj pisav naenkrat. Privzeto \TeX{}ovo kodiranje pisave je \label{OT1} \fei{OT1}, kar ustreza originalni Computer Modern pisavi. Ta vsebuje le 128 znakov 7-bitnega ASCII nabora znakov. Ko potrebujemo znake z akcenti, jih \TeX{} naredi tako, da kombinira normalno črko z ustreznim akcentom. Čeprav rezultat zgleda sijajno, pa tak pristop preprečuje avtomatično deljenje besed, ki vsebujejo znake z akcenti. Poleg tega nekaterih znakov v latinici ni možno sestaviti s kombiniranjem akcenta in normalne črke, da grških črk in cirilice sploh ne omenjamo. Za odpravo te pomanjkljivosti so razvili nekaj 8 bitnih pisav, ki so podobne Computer Modern (CM). Tako \emph{Extended Cork} (EC) pisave v \fei{T1} kodiranju vsebujejo črke in ločila za večino evropskih jezikov, ki uporabljajo latinico. Pisave LH vsebujejo črke za pisavo dokumentov v cirilici. Ker je znakov v cirilici veliko, so urejeni v štiri kodiranja---\fei{T2A}, \fei{T2B}, \fei{T2C} in~\fei{X2}.\footnote{Seznam jezikov, ki jih podpira vsako izmed teh kodiranj, lahko najdete v \cite{cyrguide}.} Skupina CB vsebujejo pisave v \fei{LGR} kodiranju za sestavljanje grških tekstov. Z uporabo teh pisav lahko izboljšamo deljenje besed v neangleških besedilih. Še ena prednost je tudi, da imamo na voljo CM pisave vseh debelin, nagibov in poljubne optične povečave. \subsection{Podpora za slovenščino}\label{slovenscina} Tu je nekaj kratkih napotkov za pisanje \index{slovenščina}slovenskih dokumentov. Najprej je potrebno naložiti paket \textsf{babel} in izbrati slovenščino. \begin{lscommand} \verb|\usepackage[slovene]{babel}| \end{lscommand} To vključi slovenska pravila za deljenje besed, če je \LaTeX{} pravilno nameščen (če ni, poglejte navodila \cite{slotex}.) Teksti, ki jih \TeX{} avtomatično generira, so prevedeni. Tako npr.~">Chapter"< postane ">Poglavje"<. Poleg tega imamo sedaj na voljo nekaj novih ukazov za lažji zapis slovenskih tekstov, ki so prikazani v tabeli \ref{german}. \begin{table}[!hbp] \caption{Posebni znaki v slovenščini.} \label{german} \begin{lined}{5cm} \begin{tabular}{*2{cl}} \verb|"c| & "c \hspace*{1ex} & \verb|"C| & "C \\[1ex] \verb|"s| & "s \hspace*{1ex} & \verb|"S| & "S \\[1ex] \verb|"z| & "z \hspace*{1ex} & \verb|"Z| & "Z \\[1ex] \verb|"`| & \glqq & \verb|"'| & \grqq \\[1ex] \verb|"<| & \flqq & \verb|">| & \frqq \end{tabular} \bigskip \end{lined} \end{table} Namesto \verb|"c|, \verb|"s|, \ldots, lahko do šumnikov pridemo tudi tako, da v vhodno datoteko kar direktno pišemo šumnike, če pravilno nastavimo vhodno kodno tabelo. Se pa moramo zavedati, da so potem takšni vhodni dokumenti prenosljivi le znotraj istega operacijskega sistema. Za rezultate to ni pomembno, saj so DVI datoteke neodvisne od kodne tabele v vhodnih podatkih. Priporočljivo je tudi vedno uporabljati pisave EC, zaradi deljenja besed s šumniki. Kratek dokument v slovenščini (pomebna je le preambula) je prikazan na sliki~\ref{sloslika}. Pomembno je tudi, da v ukazu \texttt{documentclass} uporabimo opcijo \texttt{a4paper}, saj je privzeta velikost papirja \texttt{letter}, medtem ko pri nas uporabljamo papir A4. \begin{figure}[!bp] \begin{lined}{10cm} \begin{verbatim} \documentclass[a4paper]{article} \usepackage[slovene]{babel} \usepackage[cp1250]{inputenc} \usepackage[T1]{fontenc} \begin{document} To je zelo zelo preprosto besedilo v slovenščini. \end{document} \end{verbatim} \end{lined} \caption{Primer vhodne \LaTeX{} datoteke v slovenščini.} \label{sloslika} \end{figure} \section{Razmiki med besedami} Da bi bilo besedilo tudi na desni strani poravnano, \LaTeX{} vstavlja med besede različno široke razmike. Na koncu stavka vstavi malo večji presledek, da je tekst lažje berljiv. \LaTeX{} predpostavlja, da se stavek konča s piko, vprašajem ali klicajem. Če pika sledi veliki črki, potem to ne vzame za konec stavka, saj se velike črke in pika normalno pojavljajo v okrajšavah. Vsako odstopanje od teh pravil mora avtor sam izrecno navesti. Znak $\backslash$ pred presledkom naredi presledek, ki ga \LaTeX{} ne bo raztegnil. Znak \verb|~| se prevede v presledek, ki ga ni moč povečati, na tem mestu pa tudi ni moč zlomiti vrstice. Ukaz \verb|\@| pred piko pomeni, da ta pika končuje stavek, ne glede na to, da je pred njo velika črka. \cih{"@} \index{~@ \verb.~.} \index{tilda ( \verb.~.)} \index{., presledek za} \begin{example} Mr.~Smith was happy to see her\\ cf.~Fig.~5\\ I like BASIC\@. What about you? \end{example} Dodatne presledke za vejico lahko izključimo z ukazom \begin{lscommand} \ci{frenchspacing} \end{lscommand} \noindent ki pove \LaTeX{}u, da naj za vejico ne vstavlja večji presledek kot za normalno črko. To je zelo pogosto v neagleških jezikih, razen v seznamu literature. Če uporabimo ukaz \ci{frenchspacing}, potem ukaza \verb|\@| ne potrebujemo. \section{Naslovi, poglavja in razdelki} Da se bo bralec lažje znašel v vašem dokumentu, se ga spodobi razdeliti na logične enote, kot so poglavja, razdelki in podrazdelki. \LaTeX{} ima na voljo posebne ukaze, kjer kot argument navedemo naslov enote. Paziti moramo na to, da jih uporabljamo v pravilnem vrstnem redu. Naslednji ukazi za logične enote so na voljo v razredu \texttt{article}: \nopagebreak \begin{code} \ci{section}\verb|{...} |\ci{paragraph}\verb|{...}|\\ \ci{subsection}\verb|{...} |\ci{subparagraph}\verb|{...}|\\ \ci{subsubsection}\verb|{...}| \end{code} Kadar želimo razdeliti dokument na dele, ki na ne vplivajo na oštevilčenje razdelkov oziroma poglavij, uporabimo \begin{code} \ci{part}\verb|{...}| \end{code} V razredih \texttt{report} in \texttt{book} je na voljo še dodatni višji nivo za deljenje dokumentov: \begin{code} \ci{chapter}\verb|{...}| \end{code} Ker razred \texttt{article} ne pozna poglavij, je zelo preprosto iz posameznih člankov narediti poglavja knjige. Za presledke med enotami, njihovo oštevil\-čen\-je in velikost pisave avtomatično skrbi \LaTeX. \pagebreak[3] Dva ukaza za logično delitev besedila sta posebna: \begin{itemize} \item Ukaz \ci{part} ne vpliva na oštevilčenje poglavij. \item Ukaz \ci{appendix} je brez argumenta. Vse kar naredi je, da oštevilčenje poglavij spremeni v črke.\footnote{V razredu \texttt{article} spremeni oštevilčenje razdelkov.} \end{itemize} \LaTeX{} sam naredi kazalo iz naslovov logičnih enot, številke strani pa vzame iz prejšnjega prevajanja dokumenta. Ukaz \begin{lscommand} \ci{tableofcontents} \end{lscommand} \noindent na mestu uporabe pripravi kazalo. Zaradi morebitnih sprememb strani je potrebno vhodni dokument prevesti z \LaTeX{}om dvakrat, da bodo strani v kazalu pravilne, v nekaterih primerih pa so potrebna tudi tri prevajanja. Pri prevajanju \LaTeX{} sam opozori, kdaj je priporočljivo dokument še enkrat prevesti. Vsi ukazi za logične enote imajo tudi različico ">z zvezdico"<. Dobimo jih tako, da ustreznemu ukazu na koncu dodamo zvezdico \verb|*|. Tak ukaz pripravi naslov enote, vendar se ta naslov ne pojavi v kazalu in ni oštevilčen. Ukaz \verb|\section{Pomoč}| lahko tako spremenimo v \verb|\section*{Pomoč}|, če želimo neoštevilčeni razdelek, ki se ne bo pojavil v kazalu. Normalno se naslovi enot pojavijo v kazalu v takšni obliki kot so vnešeni v tekst. V nekaterih primerih to ni možno, saj je lahko naslov predolg za eno vrstico v kazalu. V takšnem primeru lahko naslov, ki naj se izpiše v kazalu, podamo kot dodatni argument pred dejanskim naslovom \begin{code} \verb|\chapter[Kratek naslov za kazalo]{Dolg|\\ \verb| in še posebno dolgočasen naslov,|\\ \verb| ki se izpiše na začetku poglavja}| \end{code} \index{naslov}Naslov celotnega dokumenta se naredi z ukazom \begin{lscommand} \ci{maketitle} \end{lscommand} \noindent Vsebino naslova je potrebno definirati z ukazoma \begin{lscommand} \ci{title}\verb|{...}|, \ci{author}\verb|{...}| in po želji tudi z ukazom \ci{date}\verb|{...}| \end{lscommand} \noindent še preden kličemo ukaz \verb|\maketitle|. Kot argument ukaza \ci{author} lahko podamo več imen, ki jih ločimo z ukazom \ci{and}. Primer uporabe nekaterih izmed naštetih ukazov je na sliki~\ref{document} na strani~\pageref{document}. Poleg že omenjenih ukazov \LaTeXe{} pozna še nekaj dodatnih ukazov, ki jih lahko uporabimo v razredu \verb|book|. Primerni so za razdelitev publikacije na tri dele in spremenijo naslove poglavij in oštevilčenje strani, kot je to v navadi v knjigi: \begin{description} \item[\ci{frontmatter}] naj bi bil čisto prvi ukaz za \verb|\begin{document}|. Ta ukaz spremeni oštevilčenje strani v rimske številke. Na začetku knjige uporabljamo neoštevilčene logične enote, kot npr. \verb|\chapter*{Predgovor}|, ki ne nastopajo v kazalu, strani pa so oštevilčene z rimskimi številkami. \item[\ci{mainmatter}] uporabimo takoj za prvim poglavjem v knjigi (za poglavjem z rimskimi številkami), ukaz pa spremeni oštevilčenje strani na arabske številke in postavi števec strani na začetek. \item[\ci{appendix}] Označuje začetek dodatka v knjigi. Od tu naprej so poglavja oštevilčena s črkami. \item[\ci{backmatter}] vstavimo pred zadnjimi stvarmi v knjigi, kot sta seznam literature in stvarno kazalo, ukaz pa izklopi oštevilčenje logičnih enot. V preostalih standardnih razredih dokumentov ukaz nima nobenega učinka. \end{description} \section{Sklicevanja} V knjigah, poročilih in člankih se velikokrat \wii{sklicevanja}{sklicujemo} na slike, tabele in druge dele teksta. \LaTeX{} ima na voljo naslednje ukaze za sklicevanja \begin{lscommand} \ci{label}\verb|{|\emph{marker}\verb|}|, \ci{ref}\verb|{|\emph{marker}\verb|}| in \ci{pageref}\verb|{|\emph{marker}\verb|}| \end{lscommand} \noindent kjer je \emph{marker} oznaka, ki jo izbere uporabnik in mora biti seveda enolična. \LaTeX{} zamenja \verb|\ref| z oznako razdelka, podrazdelka, slike, tabele, ali izreka, kjer smo uporabili ustrezni ukaz \verb|\label|. Ukaz \verb|\pageref| izpiše številko strani, na kateri je med besedilom ukaz \verb|\label|.\footnote{Ti ukazi ne vedo, na kaj se sklicujejo. \ci{label} shrani le zadnjo avtomatično narejeno oznako.} Kot pri naslovih enot in straneh v kazalu, se tudi tu uporabijo oznake iz prejšnjega prevajanja besedila. \begin{example} Sklic na ta podrazdelek \label{sec:this} ima obliko:\\ ">poglej podrazdelek~\ref{sec:this} na strani ~\pageref{sec:this}."< \end{example} \section{Opombe} Z ukazom \begin{lscommand} \ci{footnote}\verb|{|\emph{footnote text}\verb|}| \end{lscommand} \noindent izpišemo opombo pod črto na dnu tekoče strani. Opombe vedno vstavljamo za besedo oziroma stavkom, na katerega se nanašajo. Opombe na del stavka je zato potrebno postaviti za piko ali vejico.\footnote{Opombe odmikajo bralca od glavnega besedila. Res je, da vsi beremo opombe, ker smo radovedni, ampak ali ni bolje vsega, kar želimo povedati, vstaviti v glavni dokument?\footnotemark} \footnotetext{Pred dajanjem nasvetov bi bilo mogoče dobro pomesti pred lastnim pragom \ldots.} \begin{example} Opombe\footnote{To je opomba.} se v \LaTeX{}u pogosto uporabljajo. \end{example} \section{Poudarjene besede} Če tekst pišemo na pisalnem stroju, potem pomembne besede poudarimo tako, da jih \underline{podčrtamo}. Za podčrtanje je v \LaTeX{}u na voljo ukaz \begin{lscommand} \ci{underline}\verb|{|\emph{text}\verb|}| \end{lscommand} \noindent V natisnjenih knjigah so besede ponavadi poudarjene tako, da so zapisane s \emph{poševno} pisavo. V \LaTeX{}u imamo za poudarjanje besed na voljo ukaz \begin{lscommand} \ci{emph}\verb|{|\emph{text}\verb|}| \end{lscommand} \noindent Rezultat ukaza je odvisen od konteksta, kjer ga uporabimo: \begin{example} \emph{Če poudarimo tekst znotraj poudarjenega tekst, potem ga \LaTeX{} poudari z \emph{normalno} pisavo.} \end{example} Bodite pozorni na razliko med tem, ko \LaTeX{}u naročimo, da naj \emph{poudari} tekst in tem, ko mu naročimo, da naj uporablja drugačno \emph{pisavo}: \begin{example} \textit{Tudi v poševni pisavi lahko \emph{poudarimo} tekst,} \textsf{prav tako v \emph{gladki} (sans serif) pisavi,} \texttt{in v pisavi \emph{pisalnega stroja}.} \end{example} \section{Okolja} \label{env} Za izpis teksta posebne oblike (naštevanja, sredinsko poravnani tekst,\ldots) so v \LaTeX{}u na voljo številna \wi{okolja}. Okolje se začne z \verb|\begin{ime okolja}| in konča z \verb|\end{ime okolja}|, vmes pa postavimo tekst, za katerega želimo poseben izpis: \begin{lscommand} \ci{begin}\verb|{|\emph{okolje}\verb|}|\quad \emph{tekst}\quad \ci{end}\verb|{|\emph{okolje}\verb|}| \end{lscommand} \noindent Tu je \emph{okolje} naziv okolja. Okolja lahko gnezdimo enega v drugega vse dokler uporabljamo pravilni vrstni red, kot npr. \begin{code} \verb|\begin{aaa}...\begin{bbb}...\end{bbb}...\end{aaa}| \end{code} \noindent V naslednjih podrazdelkih so opisana vsa pomembnejša okolja. \subsection{Seznami} Okolje \ei{itemize} je primerno za preproste sezname, kjer navajamo stvari, okolje \ei{enumerate} je namenjeno za oštevilčene sezname, okolje \ei{description} pa za sezname, kjer opisujemo zadeve. \cih{item} \begin{example} \flushleft \begin{enumerate} \item Različna okolja lahko mešamo po lastnem okusu: \begin{itemize} \item Toda to lahko postane smešno. \item[-] To se začne s pomišljajem. \end{itemize} \item Zapomnite si: \begin{description} \item[Neumne] zadeve ne bodo postale pametne, če so v seznamu. \item[Pametne] zadeve, za razliko, pa lahko čudovito prikažemo s seznamom. \end{description} \end{enumerate} \end{example} \subsection{Levo, desno in sredinsko poravnan tekst} Okolji \ei{flushleft} in \ei{flushright} naredita odstavke, ki so levo oziroma desno poravnani.\index{leva poravnava}\index{desna poravnava} Tekst v okolju \ei{center} je sredinsko poravnan. Če z ukazom \ci{\bs} ne povemo, kje so prelomi, bo \LaTeX{} sam določil prelome vrstic. \begin{example} \begin{flushleft} Ta tekst je \\ levo poravnan. \LaTeX{} se ne trudi narediti vrstic z enakimi dolžinami. \end{flushleft} \end{example} \begin{example} \begin{flushright} Ta tekst je desno \\poravnan. Kot prej tudi tu vrstice nimajo enakih dolžin. \end{flushright} \end{example} \begin{example} \begin{center} V središču\\sveta \end{center} \end{example} \subsection{Navedki in verzi} Okolje \ei{quote} uporabljamo za navedke, pomembne fraze in primere. \begin{example} Splošno tiskarsko pravilo za dolžino vrstice je: \begin{quote} V povprečju ne sme imeti nobena vrstica več kot 66 znakov. \end{quote} Zaradi tega imajo strani v \LaTeX{}u privzete tako velike robove in zato se v časopisih uporablja več stolpcev. \end{example} Dve podobni okolji sta \ei{quotation} in \ei{verse}. Okolje \texttt{quotation} uporabljamo za daljše navedke, ki so lahko sestavljeni iz več odstavkov, saj so v tem okolju odstavki zamaknjeni. Okolje \texttt{verse} pa je pomembno za pisanje pesmi, kjer so prelomi vrstic pomembni. Vrstice ločimo z ukazom \ci{\bs} na koncu vrstice, kitice pa s prazno vrstico. \begin{example} Tole pesem najbrž vsi poznamo. \begin{flushleft} \begin{verse} Barčica po morju plava,\\ drevesa se priklanjajo.\\ O le naprej, o le naprej,\\ dokler je še vetra kej. Barčica po morju plava \ldots \end{verse} \end{flushleft} \end{example} \subsection{Povzetek} V znanstvenih publikacijah je običajno na začetku povzetek (abstrakt), v katerem je kratek pregled vsebine dokumenta. \LaTeX{} ima v ta namen na voljo okolje \ei{abstract}. Okolje \ei{abstract} uporabljamo v dokumentih, ki so napisani v razredu article. \newenvironment{abstract}% {\begin{center}\begin{small}\begin{minipage}{0.8\textwidth}}% {\end{minipage}\end{small}\end{center}} \begin{example} \begin{abstract} To je povzetek. \end{abstract} \end{example} \subsection{Dobesedni izpis} Tekst med \verb|\begin{|\ei{verbatim}\verb|}| in \verb|\end{verbatim}| bo natisnjen tako, kot da bi ga natisnili s pisalnim strojem, z vsemi prelomi vrst in presledki vred in brez izvajanja morebitnih \LaTeX{}ovih ukazov. Znotraj odstavka lahko podobno dosežemo z \begin{lscommand} \ci{verb}\verb|+|\emph{text}\verb|+| \end{lscommand} \noindent Črka \verb|+| je le ena možnost, v resnici lahko uporabimo poljuben par enakih znakov za označitev začetka in konca, razen črk, znaka \verb|*| ali presledka. Veliko \LaTeX{} zgledov v tej knjigi je natisnjenih ravno s tem ukazom. \begin{example} Ukaz \verb|\ldots| naredi \ldots \begin{verbatim} 10 PRINT "HELLO WORLD "; 20 GOTO 10 \end{verbatim} \end{example} \begin{example} \begin{verbatim*} različica z zvezdico okolja verbatim poudari presledke v besedilu \end{verbatim*} \end{example} Podobno lahko tudi ukazu \ci{verb} dodamo na konec zvezdico: \begin{example} \verb*|kot kaže ta primer :-) | \end{example} Okolja \texttt{verbatim} in ukaza \verb|\verb| ne moremo uporabljati znotraj argumentov drugih ukazov. \subsection{Tabele} \newcommand{\mfr}[1]{\framebox{\rule{0pt}{0.7em}\texttt{#1}}} Okolje \ei{tabular} uporabljamo za stavljenje lepih \wii{tabele}{tabel}, ki imajo lahko tudi vodoravne in navpične črte. Širino stolpcev \LaTeX{} določi avtomatično (če ni podano drugače). Argument \emph{stolpci} v ukazu \begin{lscommand} \verb|\begin{tabular}[|\emph{pos}\verb|]{|\emph{table spec}\verb|}| \end{lscommand} \noindent določa število stolpcev in poravnavanje v vsakem stolpcu. Pri tem \mfr{l}, \mfr{r} in \mfr{c} pomenijo stolpec z levo, desno oziroma sredinsko poravnanim tekstom; \mfr{p\{\emph{širina}\}} pomeni stolpec z dano širino in z obojestransko poravnanim tekstom, kjer se predolg tekst avtomatično zlomi v več vrstic, znak \mfr{|} pa pomeni navpično črto. Če je tekst znotraj stolpca preširok, ga \LaTeX{} ne bo avtomatično prelomil v novo vrstico. Z ukazom \mfr{p\{\emph{širina}\}} definiramo posebno vrsto stolpca, kjer se tekst lomi kot v normalnem odstavku, Argument \emph{pos} določa vertikalno poravnavo tabele relativno glede na dno besedila, ki jo obkroža. Z vrednostmi \mfr{t}, \mfr{b} oziroma \mfr{c} nastavimo poravnavo tabele glede na vrh, dno ali sredino. V okviru okolja \texttt{tabular} znak \verb|&| pomeni konec stolpca in začetek naslednjega, \ci{\bs} začenja novo vrstico, z ukazom \ci{hline} pa vstavimo vodoravno črto. Če želimo vodoravno črto, ki se razteza le čez nekaj stolpcev, uporabimo ukaz \ci{cline}\verb|{i-j}|, kjer sta \verb|i| in \verb|j| indeksa stolpcev kjer se črta začne oziroma konča. \index{"|@ \verb."|.} \begin{example} \begin{tabular}{|r|l|} \hline 7C0 & hexadecimal \\ 3700 & octal \\ \cline{2-2} 11111000000 & binary \\ \hline \hline 1984 & decimal \\ \hline \end{tabular} \end{example} \begin{example} \begin{tabular}{|p{4.7cm}|} \hline Dobrodošli v škatlastem odstavku. Upam, da ste zaenkrat zadovoljni s tem, kar berete.\\ \hline \end{tabular} \end{example} Ukaz \verb|@{besedilo}| v vsaki vrstici med stolpcema namesto praznega prostora izpiše besedilo med zavitimi oklepaji. Zgled za uporabo je v nadaljevanju predstavljen kot rešitev problema poravnavanja števil na decimalni piki. Druga možna uporaba je, kadar želimo tabelo brez začetnega praznega prostora v prvem stolpcu oziroma končnega praznega prostora v zadnjem stolpcu. V ta namen uporabimo \mfr{@\{\}}. \begin{example} \begin{tabular}{@{} l @{}} \hline brez presledka na začetku in na koncu\\ \hline \end{tabular} \end{example} \begin{example} \begin{tabular}{l} \hline presledek na začetku in koncu\\ \hline \end{tabular} \end{example} % % This part by Mike Ressler % \index{poravnava na decimalni piki} Ker ni na voljo nobenega vgrajenega orodja, ki bi vsebino stolpcev z decimalnimi števili poravnalo na decimalni piki,\footnote{Poravnavo decimalnih števil na piki omogoča dodatni paket \pai{dcolumn}.} lahko malo ">goljufamo"< in to naredimo z uporabo dveh stolpcev: desno poravnanega z celim delom števila in levo poravnanega z decimalnim delom. Ukaz \verb|@{.}| v \verb|\begin{tabular}| zamenja normalni presledek med dvema stolpcema s piko `.' in dobimo videz enojnega stolpca, kjer so podatki poravnani po decimalni piki. Pri vnosu decimalnih števil v takšno tabelo ne smemo pozabiti decimalne pike zamenjati z znakom za ločevanje stolpcev \verb|&|. Naslov stolpca nad stolpcem, ki je v resnici sestavljen iz dveh stolpcev, dobimo z ukazom \ci{multicolumn}. \begin{example} \begin{tabular}{c r @{.} l} izraz s številom $\pi$ & \multicolumn{2}{c}{vrednost} \\ \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} Vsebina okolja \texttt{tabular} vedno ostane na eni strani, saj v tem okolju ni preloma strani. Če potrebujemo dolge tabele, ki se raztezajo čez več strani, si lahko pomagamo s paketom \pai{longtable}. \section{Plavajoči objekti} Večina sodobnih publikacij vsebuje veliko slik in tabel. Ti objekti potrebujejo posebno obdelavo, saj jih ni možno deliti med stranmi. En način bi bil, da bi vedno, ko je tabela ali slika prevelika, da bi se jo še dalo spraviti na tekočo stran, naredili novo stran. Omenjeni pristop bi pustil strani delno nezapolnjene, to pa bi zgledalo grdo. Rešitev je, da sliko oziroma tabelo, ki je premajhna za tekočo stran, pustimo za naslednjo stran, prostor na tekoči strani pa zapolnimo z naslednjim tekstom. Tako si lahko predstavljamo slike in tabele kot telesa, ki plavajo med tekstom, postavimo pa jih na prvo naslednjo stran, na kateri imamo za objekt dovolj prostora. \LaTeX{} ponuja dve okolji za \wii{plavajoči objekti}{plavajoče objekte}: \ei{table} za tabele in \ei{figure} za slike. Da lahko ti dve okolji čim bolj izkoristimo, moramo najprej vsaj približno razumeti, kako \LaTeX{} interno vodi plavajoče objekte. V nasprotnem primeru lahko plavajoči objekti postanejo glavni vzrok frustracij, saj jih \LaTeX{} nikoli ne postavi tam, kjer bi mi to želeli. \bigskip Najprej si poglejmo ukaze, ki jim imamo v \LaTeX{}u za plavajoče objekte: Vse kar je znotraj okolja \ei{figure} oziroma \ei{table} se obravnava kot en plavajoči objekt. Obe okolji poznata še opcijske parametre v obliki \begin{lscommand} \verb|\begin{figure}[|\emph{lega}\verb|]| ali \verb|\begin{table}[|\emph{lega}\verb|]| \end{lscommand} \noindent ki določajo lego objekta. Parameter \emph{lega} pove \LaTeX{}u, kam je dovoljeno postaviti objekt. Vrednost parametra je niz sestavljen iz ene ali več črk, ki označujejo dovoljene položaje. Možne oznake so navedene v tabeli~\ref{tab:permiss}. \begin{table}[!bp] \caption{Oznake za dovoljene položaje plavajočega objekta.}\label{tab:permiss} \noindent \begin{minipage}{\textwidth} \medskip \begin{center} \begin{tabular}{@{}cp{10cm}@{}} Oznaka&Objekt lahko stoji \ldots\\ \hline \rule{0pt}{1.05em}\texttt{h} & \emph{tukaj} na mestu v tekstu, kjer je vstavljen. To pride v poštev za majhne plavajoče objekte.\\[0.3ex] \texttt{t} & na \emph{vrhu} strani.\\[0.3ex] \texttt{b} & na \emph{dnu} strani.\\[0.3ex] \texttt{p} & na posebni \emph{strani}, ki vsebuje le plavajoče objekte.\\[0.3ex] \texttt{!} & brez upoštevanja večine vgrajenih parametrov\footnote{Kot npr. maksimalno število plavajočih objektov na strani.}, ki bi lahko preprečile, da je objekt postavljen na to mesto. \end{tabular} \end{center} \end{minipage} \end{table} Tabela se lahko začne npr. z naslednjo vrstico \begin{code} \verb|\begin{table}[!hbp]| \end{code} \noindent Niz \verb|[!hbp]| dovoljuje \LaTeX{}u da postavi to tabelo točno na to mesto (\texttt{h}), na dno strani (\texttt{b}) ali pa na posebno stran, na kateri so le plavajoči objekti (\texttt{p}), to vse pa lahko naredi tudi, če rezultat ni najlepši (\texttt{!}). Če ne podamo opcijskega argumenta z lego, potem standardni razredi privzamejo lego \verb|[tbp]|. \LaTeX{} bo vsak plavajoči objekt, ki ga sreča, postavil na tak položaj, kot ga je predpisal avtor. Če objekta ne more postaviti na tekočo stran, se prenese v ustrezno čakalno vrsto (ena za tabele in ena za slike)\footnote{Vrsti sta tipa fifo - `first in first out', oziroma, objekt, ki prej pride, gre tudi prej ven.}. Ko se začne nova stran, \LaTeX{} najprej preveri, če lahko celo stran zapolni z objekti iz obeh čakalnih vrst in tako naredi posebno stran le s tabelami in s slikami. Če to ni možno, potem v vsaki vrsti prvi objekt obravnava tako, kot da bi se ravnokar pojavil v besedilu in ga poskusi postaviti na ustrezno mesto (razen lege \verb|h|, ki ni več možna). Vsak nov objekt, ki se pojavi v tekstu, gre v ustrezno čakalno vrsto. \LaTeX{} ves čas vzdržuje vrstni red objektov v takšnem vrstnem redu, kot se pojavijo v dokumentu. Zaradi tega slika, ki je ni možno postaviti na predpisano mesto, porine vse preostale slike proti koncu dokumenta. Torej: \begin{quote} Če \LaTeX{} ne razporedi plavajočih objektov po željah, potem je pogosto vzrok v tem, da je en plavajoči objekt zamašil eno izmed dveh čakalnih vrst. \end{quote} Čeprav je možno pri določanju lege objekta uporabiti le en znak, to povzroča težave. Če je objekt prevelik za prostor, ki je na voljo, potem se zatakne in blokira plavajoče objekte, ki mu sledijo. Zaradi tega ne smemo za lego nikoli uporabiti le \verb|[h]|, saj je to zelo slabo; tako zanič, da novejše različice \LaTeX{a} pri prevajanju \verb|[h]| avtomatično spremenijo v \verb|[ht]|. \bigskip \noindent Sedaj, ko smo obdelali težavni del, lahko omenimo še nekaj stvari, ki se tičejo okolij \ei{table} in \ei{figure}. Z ukazom \begin{lscommand} \ci{caption}\verb|{|\emph{pojasnilo}\verb|}| \end{lscommand} \noindent lahko definiramo pojasnilo za objekt, kjer za oštevilčenje in niz ">Figure"< oziroma ">Table"< (v slovenščini ">Slika"< in ">Tabela"<) poskrbi \LaTeX. \begin{lscommand} \ci{listoffigures} in \ci{listoftables} \end{lscommand} \noindent delujeta podobno kot \verb|\tableofcontents|, izpišeta pa kazalo slik oziroma tabel. V teh kazalih se še enkrat ponovijo celotna pojasnila. Če uporabljamo dolga pojasnila, lahko podobno kot pri logičnih enotah kot dodatni parameter v oglatih oklepajih zapišemo kratko pojasnilo za kazalo. \begin{code} \verb|\caption[Kratko]{Doooooooooooooollllgooo}| \end{code} S pomočjo ukazov \verb|\label| in \verb|\ref| se lahko v besedilu sklicujemo na plavajoči objekt. Naslednji primer nariše kvadrat in ga vstavi v dokument. To lahko npr. naredimo, če v besedilu želimo rezervirati prostor za bodoče slike. \begin{code} \begin{verbatim} Figure~\ref{white} is an example of Pop-Art. \begin{figure}[!hbp] \makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}} \caption{Five by Five in Centimetres.} \label{white} \end{figure} \end{verbatim} \end{code} \noindent V zgornjem primeru se \LaTeX{} trudi \emph{zares trudi}~(\texttt{!}) postaviti sliko \emph{točno} na to mesto~(\texttt{h}).\footnote{Tu smo predpostavili, da je čakalna vrsta za slike prazna.} Če to ne gre, poskuša postaviti sliko na dno strani. Ko ne uspe slike postaviti na tekočo stran, ugotavlja naprej, če je možno narediti stran s samimi plavajočimi objekti na naslednji strani. Če za takšno posebno stran ni dovolj objektov, potem \LaTeX{} začne novo stran in spet obravnava sliko, kot da bi se ravnokar pojavila v besedilu. Pod določenimi pogoji je bolje uporabljati ukaza \begin{lscommand} \ci{clearpage} ali celo \ci{cleardoublepage} \end{lscommand} \noindent Ukaza naročata \LaTeX{}u, da takoj razmesti vse preostale plavajoče objekte in nato začne novo stran. Razlika med ukazoma je, da se \ci{cleardoublepage} vedno nadaljuje na novi desni strani. \section{Zaščita krhkih ukazov} Tekst, ki je v argumentu nekaterih ukazov, kot npr.~\ci{caption} ali \ci{section}, se lahko v dokumentu pojavi več kot enkrat (npr.~enkrat kot naslov med tekstom in drugič v kazalu). Nekateri ukazi ne delujejo, če jih uporabimo v argumentu ukazov kot je npr.~\ci{section}. Takšnim ukazom pravimo \wi{krhki ukazi}. Krhka ukaza sta npr.~\ci{footnote} in \ci{phantom}. Takšni krhki ukazi potrebujejo zaščito, da ">ne razpadejo"< in to dobimo z ukazom \ci{protect}, ki ga postavimo pred krhki ukaz. Ukaz \ci{protect} deluje samo za ukaz, pred katerim stoji, ne velja pa niti za njegove argumente. V večini primerov preveč uporabljenih ukazov \ci{protect} ne more škoditi. Če v spodnjem primeru ne bi bilo ukaza \verb|\protect|, bi \LaTeX{} pri prevajanju javil napako. \begin{code} \verb|\section{Delujem premišljeno|\\ \verb| \protect\footnote{in varujem svoje opombe}}| \end{code} % Local Variables: % TeX-master: "lshort2e" % mode: latex % mode: flyspell % End: