%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: Customising LaTeX output
% $Id: custom.tex 533 2015-04-09 13:00:40Z oetiker $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{\LaTeX i seadistamine}

\begin{intro}
Seni õpitud käskudega loodud dokumendid on välimuselt aktsepteeritavad
laia lugejaskonna jaoks. Kuigi nad ei hiilga toredusega, järgivad nad
kõiki väljakujunenud tüpograafiareegleid, mistõttu neid on kerge lugeda
ja kena vaadata.

Kuid tuleb ette olukordi, kus \LaTeX is mõni vajalik käsk või keskkond
puudub või mõne olemasoleva käsu väljund ei vasta tingimustele. Selles
peatükis püüame anda nõu, kuidas õpetada \LaTeX ile uusi trikke ja
kuidas panna ta looma väljundit, mis erineb vaikimisi saadavast
väljundist.
\end{intro}

\section{Uued käsud, keskkonnad ja paketid}

Olete võib-olla juba tähele pannud, et kõik selles raamatus sissetoodud
käsud on trükitud kasti sees ja et nad esinevad ka aineregistris raamatu
lõpus. Selle asemel et realiseerida see igal pool vahetult \LaTeX i
käskudega, olen koostanud \index{pakett}paketi, milles on defineeritud uued
käsud ja keskkonnad. Nüüd võib lihtsalt kirjutada:

\begin{example}
\begin{lscommand}
\ci{liba}
\end{lscommand}
\end{example}

Selles näites on kasutatud nii uut keskkonda nimega \ei{lscommand}, mis
joonistab käsu ümber kasti, kui ka uut käsku nimega \ci{ci}, mis trükib
käsu nime ja lisab vastava kirje aineregistrisse. Seda võib järele
kontrollida: raamatu tagant aineregistrist leiab käsu \ci{liba} kirje,
mis viitab igale leheküljele, kus käsku \ci{liba} on mainitud.

Kui teose autor peaks otsustama, et kast käskude ümber talle enam ei
meeldi, siis võib lihtsalt muuta keskkonna \ei{lscommand}
definitsiooni ja luua uue kujunduse. See on palju hõlpsam kui käia läbi
terve dokument, püüdes üles leida kõik kohad, kus on sõna ümber kast
joonistatud tavaliste \LaTeX i käskudega.

\subsection{Uued käsud}

Uusi käske saab moodustada
käsuga\index{argument}\index{argument!valikuline}
\begin{lscommand}
\ci{newcommand}\verb|{|%
       \emph{nimi}\verb|}[|\emph{arv}\verb|]{|\emph{definitsioon}\verb|}|
\end{lscommand}
\noindent Põhiliselt nõuab see käsk kahte argumenti: loodava käsu
\emph{nimi} ja käsu \emph{definitsioon}. Argument \emph{num}
nurksulgudes on valikuline ja määrab uue käsu argumentide arvu (võimalik
on kuni 9). Kui see puudub, siis on argumentide arvuks 0, st argumendid
pole lubatud.

Järgmised kaks näidet peaksid aitama mõtet selgitada. Esimeses näites
defineeritakse uus käsk \ci{mvl}, mis on lühend fraasist "`Mitte väga
lühike \LaTeXe{} sissejuhatus"'. Niisugune käsk võib olla abiks, kui
selle raamatu pealkirja tuleb kirjutada korduvalt ja korduvalt.

\begin{example}
\newcommand{\mvl}{Mitte väga
    lühike \LaTeXe{}
    sissejuhatus}
See on "`\mvl"' \ldots{}
"`\mvl"'
\end{example}

Teine näide demonstreerib, kuidas defineerida käsku, millel on üks
argument. Märgis \verb|#1| asendatakse argumendiga, mis käsule ette
antakse. Kui vaja on rohkem kui ühte argumenti, siis järgmine on
\verb|#2| ja nii edasi.

\begin{example}
\newcommand{\xlit}[2]
 {See on \emph{#1}
  #2 \LaTeXe{} sissejuhatus}
% dokumendi tekstis
\begin{itemize}
\item \xlit{mitte väga}{lühike}
\item \xlit{eriti}{pikk}
\end{itemize}
\end{example}

\LaTeX{} ei luba luua uut käsku, mis kirjutab mõne olemasoleva üle. Kuid
on olemas spetsiaalne käsk, kui tarvis on teha just seda:
\ci{renewcommand}. Selle süntaks on sama nagu käsul \verb|\newcommand|.

Teatavatel juhtudel võib vaja minna käsku \ci{providecommand}. See
töötab samamoodi nagu \ci{newcommand}, kuid kui käsk on juba
defineeritud, siis \LaTeXe{} lihtsalt ignoreerib uut definitsiooni.

Mõnda asja tuleb tähele panna \LaTeX i käskudele järgneva tühja ruumi
puhul, rohkem infot leiab leheküljelt \pageref{whitespace}.

\subsection{Uued keskkonnad}

Käsuga \verb|\newcommand| sarnaselt on olemas käsk uute keskkondade
loomiseks. Sellel käsul \ci{newenvironment} on järgmine süntaks:

\begin{lscommand}
\ci{newenvironment}\verb|{|%
       \emph{nimi}\verb|}[|\emph{arv}\verb|]{|%
       \emph{enne}\verb|}{|\emph{pärast}\verb|}|
\end{lscommand}

Käsul \ci{newenvironment} võib jällegi olla valikuline argument.
Argumendis \emph{enne} määratud materjal töödeldakse enne keskkonnas
oleva teksti töötlemist. Argumendi \emph{pärast} materjal töödeldakse
siis, kui kohatakse käsku \verb|\end{|\emph{nimi}\verb|}|.

Käsu \ci{newenvironment} kasutamist illustreerib järgmine näide.
\begin{example}
\newenvironment{kuningas}
 {\rule{1ex}{1ex}%
      \hspace{\stretch{1}}}
 {\hspace{\stretch{1}}%
      \rule{1ex}{1ex}}

\begin{kuningas}
Mu ustavad alamad \ldots
\end{kuningas}
\end{example}

Argumenti \emph{arv} kasutatakse samamoodi nagu käsus
\verb|\newcommand|. \LaTeX{} kontrollib, et defineeritavat keskkonda ei
oleks enne olemas. Kui on tõesti tarvis olemasolevat keskkonda muuta,
siis selleks on käsk \ci{renewenvironment}, mille süntaks on sama nagu
käsul \ci{newenvironment}.

Ülaltoodud näites esinevate käskude tähendust selgitatakse hiljem. Käsku
\ci{rule} vaadeldakse leheküljel \pageref{sec:rule}, käskude \ci{hspace}
ja \ci{stretch} kohta leiab rohkem infot leheküljelt
\pageref{sec:hspace}.

\subsection{Lisatühikud}

Uusi keskkondi luues võib kergesti saada nõelata sissehiilivatest
lisatühikutest, millel võib olla potentsiaalselt fataalne efekt, näiteks
püüdes defineerida keskkonda tiitli jaoks, mis lülitab välja nii iseenda
taande kui ka sellele järgneva lõigu taande.

\begin{example}
\newenvironment{lihtne}%
 {\noindent}%
 {\par\noindent}

\begin{lihtne}
Vaata tühikut\\vasakul.
\end{lihtne}
Sama\\siin.
\end{example}

Vastumeetmena võib keskkonna alguseplokki panna käsu \ci{ignorespaces},
siis ignoreerib keskkond kõiki tühikuid, mis tulevad ette vahetult
pärast alguseploki täitmist. Lõpuplokk on keerulisem, sest keskkonna
lõpus toimub eritöötlus. Käsu \ci{ignorespacesafterend} toimel annab
\LaTeX{} käsu \ci{ignorespaces} pärast seda, kui lõpu eritöötlus on
toimunud.

\begin{example}
\newenvironment{korrektne}%
 {\noindent\ignorespaces}%
 {\par\noindent%
   \ignorespacesafterend}

\begin{korrektne}
Pole tühikut\\vasakul.
\end{korrektne}
Sama\\siin.
\end{example}

\subsection{Käsurea \LaTeX}

Operatsioonisüsteemides nagu Unix kasutatakse \LaTeX i projektide
kompileerimiseks koostefaile (\emph{makefile}). Sellega seoses võib
pakkuda huvi võimalus produtseerida samast dokumendist erinevaid
versioone, kutsudes \LaTeX i välja käsurea argumentidega.

Näiteks võib dokumenti lisada järgmise struktuuri:
\begin{code}
\begin{verbatim}
\usepackage{ifthen}
\ifthenelse{\equal{\mustvalge}{true}}{
  % mustvalge väljund; tee midagi..
}{
  % värviline väljund; tee midagi muud..
}
\end{verbatim}
\end{code}
Nüüd saab \LaTeX i välja kutsuda nii:
\begin{lscommand}
\verb|latex '\newcommand{\mustvalge}{true}\input{test.tex}'|
\end{lscommand}
Kõigepealt defineeritakse käsk \verb|\mustvalge| ja seejärel loetakse
sisse tegelik fail. Seades \verb|\mustvalge| väärtuseks \verb|false|,
luuakse dokumendist värviline versioon.

\subsection{Oma pakett}

Kui defineerida palju uusi keskkondi ja käske, siis muutub dokumendi
preambul üsnagi pikaks. Sellises olukorras on hea mõte koondada kõik
käsu- ja keskkonnadefinitsioonid omaette \LaTeX i \wi{pakett}i. Dokumendis
kättesaadavaks saab selle paketi teha käsuga \ci{usepackage}.

\begin{figure}[!htbp]
\begin{lined}{\textwidth}
\begin{verbatim}
% Tobias Oetikeri demopakett
\ProvidesPackage{demopakett}
\newcommand{\mvl}{Mitte väga lühike \LaTeX i
                   sissejuhatus}
\newcommand{\xlit}[1]{\emph{#1} lühike \LaTeX i
                       sissejuhatus}
\newenvironment{kuningas}{\begin{quote}}{\end{quote}}
\end{verbatim}
\end{lined}
\caption{Näitepakett} \label{package}
\end{figure}

Paketi kirjutamine seisneb peamiselt dokumendi preambuli sisu
kopeerimises eraldi faili, mille nimi lõpeb laiendiga \eei{sty}. On
üks spetsiaalkäsk%
\begin{lscommand}
\ci{ProvidesPackage}\verb|{|\emph{paketi nimi}\verb|}|
\end{lscommand}
\noindent mis pannakse paketifaili algusesse. Käsk
\verb|\ProvidesPackage| teatab \LaTeX ile paketi nime ja võimaldab tal
anda sisuka veateate, kui paketti proovitakse sisse lugeda kaks korda.
Joonisel~\ref{package} on toodud väike näitepakett, mis sisaldab
eelnevates näidetes defineeritud käske.

\section{Kirjad ja suurused}
\label{sec:fontsize}

\subsection{Kirja muutmise käsud}
\index{kiri}\index{kirjasuurus} \LaTeX{} valib sobiva kirjatüübi ja
-suuruse vastavalt dokumendi loogilisele struktuurile (jaotised,
allmärkused, \ldots). Mõnel juhul võib tekkida soov muuta kirju ja
nende suurusi käsitsi. Seda võib teha tabelites~\ref{fonts}
ja~\ref{sizes} loetletud käskudega. Iga kirja tegelik suurus on
kujunduse küsimus ja sõltub dokumendiklassist ning selle suvanditest.
Tabelis~\ref{tab:pointsizes} on kirjakäskude absoluutsed
punktisuurused, mis kehtivad standardsetes dokumendiklassides.

\begin{example}
{\small Väikesed ja
\textbf{paksud} roomlased}
valitsesid {\Large kogu suurt
\textit{Itaaliat}.}
\end{example}

\begin{table}[!tbp]
\caption{Kirjatüübid} \label{fonts}
\begin{lined}{12cm}
%
% 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@{}}
\fni{textrm}\verb|{...}|        &      \textrm{\wi{seriifkiri}}&
\fni{textsf}\verb|{...}|        &      \textsf{\wi{seriifideta kiri}}\\
\fni{texttt}\verb|{...}|        &      \texttt{\wi{masinakiri}}\\[6pt]
\fni{textmd}\verb|{...}|        &      \textmd{\wi{keskmine kiri}}&
\fni{textbf}\verb|{...}|        &      \textbf{\wi{paks kiri}}\\[6pt]
\fni{textup}\verb|{...}|        &      \textup{\wi{püstkiri}}&
\fni{textit}\verb|{...}|        &      \textit{\wi{kursiivkiri}}\\
\fni{textsl}\verb|{...}|        &      \textsl{\wi{kaldkiri}}&
\fni{textsc}\verb|{...}|        &      \textsc{\wi{kapiteelkiri}}\\[6pt]
\ci{emph}\verb|{...}|           &      \emph{\wi{rõhutatud kiri}} &
\fni{textnormal}\verb|{...}|    &      \textnormal{\wi{dokumendikiri}}
\end{tabular}

\bigskip
\end{lined}
\end{table}

\begin{table}[!tp]
\index{kirjasuurus}
\caption{Kirjasuurused} \label{sizes}
\begin{lined}{12cm}
\begin{tabular}{@{}ll}
\fni{tiny}         & \tiny        pisitilluke kiri \\
\fni{scriptsize}   & \scriptsize  väga väike kiri\\
\fni{footnotesize} & \footnotesize  üsna väike kiri\\
\fni{small}        &  \small            väike kiri\\
\fni{normalsize}   &  \normalsize  harilik kiri\\
\fni{large}        &  \large       suur kiri
\end{tabular}%
\qquad\begin{tabular}{ll@{}}
\fni{Large}        &  \Large       suurem kiri\\[5pt]
\fni{LARGE}        &  \LARGE       väga suur kiri\\[5pt]
\fni{huge}         &  \huge        tohutu\\[5pt]
\fni{Huge}         &  \Huge        hiiglaslik
\end{tabular}

\bigskip
\end{lined}
\end{table}

\begin{table}[!tbp]
\caption{Absoluutsed punktisuurused standardklassides}\label{tab:pointsizes}
\label{tab:sizes}
\begin{lined}{12cm}
\begin{tabular}{lrrr}
 &
\multicolumn{1}{c}{\texttt{10pt} (vaikesuvand) } &
           \multicolumn{1}{c}{\texttt{11pt} suvand}  &
           \multicolumn{1}{c}{\texttt{12pt} suvand}\\
\verb|\tiny|       & 5\,pt  & 6\,pt & 6\,pt\\
\verb|\scriptsize| & 7\,pt  & 8\,pt & 8\,pt\\
\verb|\footnotesize| & 8\,pt & 9\,pt & 10\,pt \\
\verb|\small|        & 9\,pt & 10\,pt & 11\,pt \\
\verb|\normalsize| & 10\,pt & 11\,pt & 12\,pt \\
\verb|\large|      & 12\,pt & 12\,pt & 14\,pt \\
\verb|\Large|      & 14\,pt & 14\,pt & 17\,pt \\
\verb|\LARGE|      & 17\,pt & 17\,pt & 20\,pt\\
\verb|\huge|       & 20\,pt & 20\,pt & 25\,pt\\
\verb|\Huge|       & 25\,pt & 25\,pt & 25\,pt\\
\end{tabular}

\bigskip
\end{lined}
\end{table}


\begin{table}[!tbp]
\caption{Valemikirjad} \label{mathfonts}
\begin{lined}{0.7\textwidth}
\begin{tabular}{@{}ll@{}}
\fni{mathrm}\verb|{...}|&     $\mathrm{Seriifkiri}$\\
\fni{mathbf}\verb|{...}|&     $\mathbf{Paks\ kiri}$\\
\fni{mathsf}\verb|{...}|&     $\mathsf{Seriifideta\ kiri}$\\
\fni{mathtt}\verb|{...}|&     $\mathtt{Masinakiri}$\\
\fni{mathit}\verb|{...}|&     $\mathit{Kursiivkiri}$\\
\fni{mathcal}\verb|{...}|&    $\mathcal{KALLIGRAAFILINE\ KIRI}$\\
\fni{mathnormal}\verb|{...}|& $\mathnormal{Harilik\ kiri}$\\
\end{tabular}

%\begin{tabular}{@{}lll@{}}
%\textit{Command}&\textit{Example}&    \textit{Output}\\[6pt]
%\fni{mathcal}\verb|{...}|&    \verb|$\mathcal{B}=c$|&     $\mathcal{B}=c$\\
%\fni{mathscr}\verb|{...}|&    \verb|$\mathscr{B}=c$|&     $\mathscr{B}=c$\\
%\fni{mathrm}\verb|{...}|&     \verb|$\mathrm{K}_2$|&      $\mathrm{K}_2$\\
%\fni{mathbf}\verb|{...}|&     \verb|$\sum x=\mathbf{v}$|& $\sum x=\mathbf{v}$\\
%\fni{mathsf}\verb|{...}|&     \verb|$\mathsf{G\times R}$|&        $\mathsf{G\times R}$\\
%\fni{mathtt}\verb|{...}|&     \verb|$\mathtt{L}(b,c)$|&   $\mathtt{L}(b,c)$\\
%\fni{mathnormal}\verb|{...}|& \verb|$\mathnormal{R_{19}}\neq R_{19}$|&
%$\mathnormal{R_{19}}\neq R_{19}$\\
%\fni{mathit}\verb|{...}|&     \verb|$\mathit{ffi}\neq ffi$|& $\mathit{ffi}\neq ffi$
%\end{tabular}

\bigskip
\end{lined}
\end{table}

\LaTeXe{} olulise iseärasusena on kirjade atribuudid üksteisest
sõltumatud. See tähendab, et on võimalik anda suuruse või isegi
kirjatüübi muutmise käsk ja ikkagi säilitada varem seatud paksu või
kaldkirja atribuut.

Valemire\v{z}iimis saab kirjamuutmise käske kasutada ajutiselt
valemire\v{z}iimist lahkumiseks ja hariliku teksti sisestamiseks. Kui on
soov valemi vormistamisel lülituda ümber mõnele muule kirjale, siis
läheb vaja veel omaette käske, vt tabelit~\ref{mathfonts}.


Kirjasuuruse käskude puhul mängivad olulist rolli \wi{looksulud}, mille
abil moodustatakse \index{rühm}\emph{rühmi}. Rühmad piiravad enamiku
\LaTeX i käskude skoopi.

\begin{example}
Ta armastab {\LARGE suuri
ja {\small väikesi} tähti}.
\end{example}

Kirjasuuruse käsud muudavad ka reavahet, kuid ainult siis, kui lõik
lõpeb kirjasuuruse käsu mõjupiirkonnas. Sulgev looksulg \verb|}| ei tohi
seega tulla liiga vara. Järgmises kahes näites tasub tähele panna käsu
\ci{par} asukohta.\footnote{\ci{par} on samaväärne tühja reaga.}

\begin{example}
{\Large Ära loe seda!
 See ei ole tõsi.
 Võid mind uskuda!\par}
\end{example}

\begin{example}
{\Large See ei ole samuti tõsi.
Arvesta, et olen valetaja.}\par
\end{example}

Terve tekstilõigu või veelgi pikema tekstiploki kirjasuuruse muutmiseks
võib kasutada kirjamuutmiskäske keskkonna vormis.

\begin{example}
\begin{Large}
See pole tõsi.
Kuid jällegi, mis tänapäeval
\ldots
\end{Large}
\end{example}

\noindent See hoiab palju kokku looksulgude loendamist.

\subsection{Ohtlik, Will Robinson, ohtlik}

Nagu esimese peatüki alguses märgitud, on ohtlik selliseid otseseid
käske oma dokumenti kuhjata, sest nad töötavad vastu \LaTeX i
põhiideele, milleks on dokumendi loogilise ja visuaalse märgenduse lahus
hoidmine. See tähendab, et kui mitmes kohas kasutatakse teatavat tüüpi
informatsiooni trükkimiseks sama kirjamuutmiskäsku, siis tuleks käsuga
\verb|\newcommand| defineerida kirjamuutmiskäsu jaoks "`loogiline
ümbris"'.

\begin{example}
\newcommand{\ups}[1]{%
 \textbf{#1}}
Ära \ups{sisene} sellesse ruumi,
selle ruumi on hõivanud tundmatu
päritolu ja otstarbega
\ups{masinad}.
\end{example}

Sellise lähenemise eelis on see, et autor saab mõnel hilisemal hetkel
otsustada, et ohu visuaalseks esituseks sobib paremini miski muu kui
\verb|\textbf|, ilma et oleks vaja dokument läbi lapata, otsides üles
kõik käsu \verb|\textbf| esinemised ja tehes kindlaks, kas igaüks neist
oli mõeldud ohu tähistamiseks või täitis mingit teist eesmärki.

Tasub tähele panna, et käskida \LaTeX il midagi \emph{rõhutada} ja
käskida tal kasutada erinevat \textit{kirja} ei ole üks ja sama. Käsk
\ci{emph} võtab arvesse konteksti, samas kui kirjakäsud on absoluutsed.

\begin{example}
\textit{On täiesti võimalik
  \emph{rõhutada} teksti, mis
  on trükitud kursiivis,}
\textsf{%
  \emph{seriifideta} kirjas}
\texttt{või
  \emph{masinakirja} stiilis.}
\end{example}

\subsection{Nõuanne}

Lõpetades teekonna kirjade ja kirjasuuruste maale, on siin veel
üks väike nõuanne:

\begin{quote}
  \underline{\textbf{Pea meeles\Huge!}} \textit{Mida}
  \textsf{Ro\textbf{\LARGE H}\texttt{K}\textsl{E}M} kirju \Huge sa
  \tiny oma \footnotesize \textbf{dokumendis} \small \texttt{kasutad},
  \large \textit{seda} \textsc{loetavamaks} ja
  \textsl{\textsf{ilusamaks} see mu\large u\Large t\LARGE u\huge b}.
\end{quote}

\section{Vahed}

\subsection{Reavahed}

\index{reavahed} Soovides jätta ridade vahele rohkem ruumi,
võib dokumendi preambulisse panna käsu
\begin{lscommand}
\ci{linespread}\verb|{|\emph{tegur}\verb|}|
\end{lscommand}
\noindent "`Pooleteisekordse"' reavahe annab \verb|\linespread{1.3}| ja
"`kahekordse"' reavahe \verb|\linespread{1.6}|. Tavalistel reavahedel
laiendus puudub, nii et laiendusteguri vaikeväärtus
on~1.\index{kahekordne reavahe}

Käsu \ci{linespread} mõju on üsna drastiline ja avaldamiseks mõeldud töö
jaoks ebakohane. Seega kui reavahe muutmiseks on olemas hea põhjus, siis
võiks seda teha käsuga\cih{baselineskip}
\begin{lscommand}
\verb|\setlength{\baselineskip}{1.5\baselineskip}|
\end{lscommand}

\begin{example}
{\setlength{\baselineskip}%
           {1.5\baselineskip}
Selle lõigu vormistamisel on
alusjoonte hüppeks määratud 1{,}5
korda senine väärtus. Pane tähele
lõigukäsku lõigu lõpus.\par}

Sellel lõigul on kindel eesmärk:
ta näitab, et sulgeva looksulu
järel on kõik jälle normaalne.
\end{example}

\subsection{Lõigu vormindamine}\label{parsp}

\LaTeX is on kaks parameetrit, mis mõjutavad lõigu küljendust.
Paigutades sisendfaili preambulisse definitsioonid nagu
\begin{code}
\ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\
\verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}|
\end{code}
on võimalik muuta lõikude vormindust. Need käsud suurendavad kahe lõigu
vahele jäetavat ruumi ja samal ajal seavad lõigu algtaande
nulliks.\index{taane}

Pikkuse komponendid \texttt{plus} ja \texttt{minus} ütlevad \TeX ile, et
lõikudevahelist hüpet võib kokku suruda või välja venitada määratud
väärtuste võrra, kui see on vajalik lõigu korralikuks mahutamiseks
leheküljele.

Mandri-Euroopa tüpograafias eraldataksegi lõike tavaliselt tühja reaga
ja lõigu esimest rida ei taandata. Kuid need käsud mõjutavad ka
sisukorda, mille ridade vahele jäetakse samuti rohkem vahet. Selle
vältimiseks võib nimetatud kaks käsku viia preambulist dokumendi sisusse
mingisse kohta pärast käsku \verb|\tableofcontents| või neid üldse mitte
kasutada, sest professionaalselt küljendatud raamatutes eraldatakse
lõike enamasti taandridade, mitte lõiguvahede abil.

Kui taandamata lõigu esimesele reale on vaja lisada \wi{taane}, võib
lõiku alustada käsuga
\begin{lscommand}
\ci{indent}
\end{lscommand}
\noindent Selge, et sellel on mingi mõju ainult siis, kui
\verb|\parindent| ei ole null.\footnote{Igale jaotisepäisele järgneva
esimese lõigu taandamiseks sobib pakett \pai{indentfirst} komplektist
Tools.}

Taandeta lõigu moodustamiseks tuleks lõigu esimeseks käsuks panna
\begin{lscommand}
\ci{noindent}
\end{lscommand}
\noindent See on otstarbekas siis, kui dokument algab otse põhitekstiga,
mitte jaotisekäsuga.

\subsection{Horisontaalvahe}

\label{sec:hspace}
\LaTeX{} määrab sõnade ja lausete vahed automaatselt. Horisontaalvahet
saab lisada käsuga \index{horisontaalvahe}\index{vahe!horisontaalne}
\begin{lscommand}
\ci{hspace}\verb|{|\emph{pikkus}\verb|}|
\end{lscommand}
Kui see vahe peab alles jääma isegi siis, kui ta satub rea algusesse või
lõppu, võib käsu \ci{hspace} asemel anda käsu \ci{hspace*}.
Argument \emph{pikkus} on lihtsamal juhul arv koos mõõtühikuga. Kõige
tähtsamad mõõtühikud on toodud tabelis~\ref{units}.

\begin{example}
See\hspace{1.5cm}on vahe
pikkusega 1{,}5 cm.
\end{example}
\begin{table}[tbp]
\index{ühikud}\index{mõõtühikud}
\caption{\TeX i mõõtühikud} \label{units}
\begin{lined}{9.5cm}
\begin{tabular}{@{}ll@{}}
\texttt{mm} & millimeeter $\approx 1/25$~tolli \quad \demowidth{1mm} \\
\texttt{cm} & sentimeeter = 10~mm  \quad \demowidth{1cm}                     \\
\texttt{in} & toll $=$ 25{,}4~mm \quad \demowidth{1in}                    \\
\texttt{pt} & punkt $\approx 1/72$~tolli $\approx \frac{1}{3}$~mm  \quad\demowidth{1pt}\\
\texttt{em} & tähe M ligikaudne laius jooksvas kirjas \quad \demowidth{1em}\\
\texttt{ex} & tähe x ligikaudne kõrgus jooksvas kirjas\quad \demowidth{1ex}
\end{tabular}

\bigskip
\end{lined}
\end{table}

\label{cmd:stretch}
Käsk
\begin{lscommand}
\ci{stretch}\verb|{|\emph{n}\verb|}|
\end{lscommand}
\noindent loob spetsiaalse paisuva vahe. See venib niikaua, kuni reas on
kogu järelejäänud ruum täidetud. Kui samas reas antakse mitu
\verb|\hspace{\stretch{|\emph{n}\verb|}}|-käsku, siis täidavad nad kogu
olemasoleva ruumi võrdeliselt oma paisumisteguritega.

\begin{example}
x\hspace{\stretch{1}}
x\hspace{\stretch{3}}x
\end{example}

Horisontaalvahet ja teksti koos kasutades võib olla mõttekas muuta vahe
suurust olenevalt jooksva kirja suurusest. Seda saab teha kirjast
sõltuvate ühikute \texttt{em} ja \texttt{ex} abil:

\begin{example}
{\Large{}suu\hspace{1em}r}\\
{\tiny{}väik\hspace{1em}e}
\end{example}

\subsection{Vertikaalvahe}

Vahed lõikude, jaotiste, alajaotiste, \ldots{} vahel määrab \LaTeX{}
automaatselt. Kui vaja, saab vertikaalvahet \emph{kahe lõigu vahele}
lisada käsuga
\begin{lscommand}
\ci{vspace}\verb|{|\emph{pikkus}\verb|}|
\end{lscommand}

See käsk tuleks tavaliselt panna kahe tühja rea vahele. Kui vahe peab
säilima ka lehekülje üla- või alaääres, võib käsu \ci{vspace} asendada
selle tärniga versiooniga \ci{vspace*}.
\index{vertikaalvahe}\index{vahe!vertikaalne}
\index{käsk!tärniga}\index{tärniga käsk}

Käske \verb|\stretch| ja \verb|\pagebreak| koos kasutades saab teksti
trükkida lehekülje viimasele reale või tsentreerida teksti leheküljel
vertikaalselt:
\begin{code}
\begin{verbatim}
Natuke teksti \ldots

\vspace{\stretch{1}}
See läheb lehekülje viimasele reale.\pagebreak
\end{verbatim}
\end{code}

Lisavahet \emph{sama} lõigu kahe rea vahele või tabelisse saab jätta
käsuga
\begin{lscommand}
\ci{\bs}\verb|[|\emph{pikkus}\verb|]|
\end{lscommand}

Käskudega \ci{bigskip} ja \ci{smallskip} saab lisada eeldefineeritud
suurusega vertikaalvahe, ilma täpsete arvudega vaeva nägemata.

\section{Lehekülje kujundus}

\begin{figure}[!hp]
\begin{center}
\makeatletter\lay@layout\makeatother%\par
\raisebox{-2.65\baselineskip}{\hspace*{-14.9em}\ttfamily\footnotesize \bs evensidemargin}
\end{center}
\vspace*{1.8cm}
\caption[Selle raamatu kujunduse parameetrid]{Selle raamatu kujunduse
parameetrid. Oma dokumendi kujunduse saab trükkida paketiga
\pai{layout}}
\label{fig:layout}
\cih{hoffset}
\cih{voffset}
\cih{oddsidemargin}
\cih{evensidemargin}
\cih{topmargin}
\cih{headheight}
\cih{headsep}
\cih{textheight}
\cih{textwidth}
\cih{marginparsep}
\cih{marginparwidth}
\cih{footskip}
\cih{marginparpush}
\cih{paperheight}
\cih{paperwidth}
\end{figure}

\index{lehekülje kujundus}
\LaTeXe{} võimaldab käsus \ci{documentclass} valida \index{paberi
formaat}paberi formaati. Sellest lähtudes määrab ta automaatselt õige
suurusega \wi{ääred}, kuid mõnikord eeldefineeritud väärtused ei sobi.
Loomulikult saab neid muuta.
%no idea why this is needed here ...
\thispagestyle{fancyplain}%
Joonisel~\ref{fig:layout} on kujutatud kõik parameetrid, mida muuta saab.
See joonis on tehtud paketiga \pai{layout} komplektist Tools.%
\footnote{\CTAN|pkg/tools|}

\textbf{OOTA!} \ldots{} Enne, kui lähed kaasa "`Teeme selle kitsa
lehekülje veidi laiemaks"' hullusega, mõtle mõni sekund järele. Nagu
enamiku asjadega \LaTeX is, on ka siin kindel põhjus, miks lehekülje
kujundus just selline on.

Muidugi, võrreldes \wi{MS Word}i standardleheküljega tundub \LaTeX i
lehekülg kohutavalt kitsas. Kuid vaata mõnda raamatut\footnote{See
tähendab, tõelist raamatut, mille on välja andnud tuntud kirjastus.} ja
loe kokku sümbolid tavalises tekstireas. Ilmneb, et reas ei ole rohkem
kui umbes 66 sümbolit. Seejärel tee sama \LaTeX i leheküljega. Selgub,
et ka seal on ühes reas umbes 66 sümbolit. Kogemus näitab, et
lugemine muutub raskeks niipea, kui reas on sümboleid rohkem. See tuleb
sellest, et silmadel on raske hüpata rea lõpust järgmise rea
algusesse. Samal põhjusel trükitakse ka ajalehti mitmes veerus.

Seega tuleb põhiteksti laiust suurendades arvestada, et teose lugejatel
tehakse niimoodi elu raskemaks. Kuid aitab hoiatustest, lubasime
rääkida, kuidas seda teha \ldots

\LaTeX is on nende parameetrite muutmiseks kaks käsku, mis tavaliselt
antakse dokumendi preambulis.

Esimene käsk omistab ükskõik millise parameetri väärtuseks fikseeritud
pikkuse:
\begin{lscommand}
\ci{setlength}\verb|{|\emph{parameeter}\verb|}{|\emph{pikkus}\verb|}|
\end{lscommand}
\noindent Teine käsk liidab ükskõik millisele parameetri väärtusele
pikkuse:
\begin{lscommand}
\ci{addtolength}\verb|{|\emph{parameeter}\verb|}{|\emph{pikkus}\verb|}|
\end{lscommand}

Teine käsk on tegelikult kasulikum kui käsk \ci{setlength}, sest ta
töötab relatiivselt senise seadistuse suhtes. Et liita üldisele teksti
laiusele üks sentimeeter, võib dokumendi preambulisse kirjutada
järgmised read:
\begin{code}
\verb|\addtolength{\hoffset}{-0.5cm}|\\
\verb|\addtolength{\textwidth}{1cm}|
\end{code}

Selles kontekstis võib heita pilgu ka paketile \pai{calc}. See võimaldab
kasutada aritmeetilisi tehteid nii käsu \ci{setlength} argumendis kui ka
muudes kohtades, kus funktsioonile antakse ette arvulisi väärtusi.

\section{Veel nippe pikkustega}

Kus võimalik, tasuks \LaTeX i dokumentides mitte kasutada absoluutseid
pikkusi, vaid püüda asju taandada muude leheküljeelementide laiustele
või kõrgustele. Näiteks joonise laiuse puhul võiks aluseks olla
\verb|\textwidth|, et joonis lehekülje täidaks.

Kolme käsuga saab määrata tekstifraasi laiust, kõrgust ja sügavust.

\begin{lscommand}
\ci{settowidth}\verb|{|\emph{muutuja}\verb|}{|\emph{tekst}\verb|}|\\
\ci{settoheight}\verb|{|\emph{muutuja}\verb|}{|\emph{tekst}\verb|}|\\
\ci{settodepth}\verb|{|\emph{muutuja}\verb|}{|\emph{tekst}\verb|}|
\end{lscommand}

\noindent Järgmine näide demonstreerib nende käskude võimalikku
rakendust.

\begin{example}
\newenvironment{muutkirj}[1]{%
  \settowidth{\parindent}{#1:\ }
  \makebox[0pt][r]{#1:\ }}{}
\begin{displaymath}
a^2+b^2=c^2
\end{displaymath}

\begin{muutkirj}{Kus}$a$, $b$ --
on täisnurga lähisküljed
täisnurkses kolmnurgas.

$c$ -- on kolmnurga hüpotenuus
ja tunneb end üksikuna.

$d$ -- ei esine siin üldse.
Kas see pole mõistatuslik?
\end{muutkirj}
\end{example}
\enlargethispage{\baselineskip}

\section{Kastid}

\LaTeX{} ehitab lehekülgi kaste paigutades. Alustuseks on iga täht üks
väike \wi{kast}, need liimitakse teiste tähtedega kokku sõnaks. Sõnad
omakorda liimitakse teiste sõnade külge; seda tehakse spetsiaalse
elastse liimiga, tänu millele on sõnade jada võimalik kokku suruda või
välja venitada, et rida saaks leheküljel täpselt täidetud.

Muidugi on see tegelikult toimuvast väga lihtsustatud ettekujutus, kuid
põhimõte on selles, et \TeX{} tegutseb \wi{liim}i ja kastidega. Tähed ei
ole ainsad, mis võivad kastides olla. Kasti sisse võib panna peaaegu
ükskõik mida, kaasa arvatud teisi kaste. Iga kasti käsitleb \LaTeX{}
nii, nagu oleks see üksainus täht.

Eelmises peatükkides juba esines mõningaid kaste, kuigi siis seda ei
mainitud. Näiteks keskkond \ei{tabular} ja käsk \ci{includegraphics}
moodustavad kasti. Seega võib kaks tabelit või pilti\index{joonised}
lihtsasti asetada teineteise kõrvale. Tuleb ainult jälgida, et nende
kogulaius ei oleks teksti laiusest suurem.

Kasti sisse saab panna ka suvalise lõigu kas käsuga

\begin{lscommand}
\ci{parbox}\verb|[|\emph{asend}\verb|]{|\emph{laius}\verb|}{|\emph{tekst}\verb|}|
\end{lscommand}

\noindent või keskkonnaga

\begin{lscommand}
\verb|\begin{|\ei{minipage}\verb|}[|\emph{asend}\verb|]{|\emph{laius}\verb|}|
\emph{tekst} \verb|\end{|\ei{minipage}\verb|}|
\end{lscommand}

\noindent Argument \emph{asend} võib olla üks tähtedest \texttt{c},
\texttt{t} või \texttt{b} ning sellega määratakse kasti vertikaalne
joondus ülejäänud teksti alusjoone suhtes. Argument \emph{laius} on
pikkusetüüpi ja määrab kasti laiuse. Keskkonna \ei{minipage} ja käsu
\ci{parbox} peamine erinevus on see, et käsu \ci{parbox} sees ei saa
kasutada kõiki käske ja keskkondi, samas kui keskkonna \ei{minipage}
sees on peaaegu kõik võimalik.

Sellal kui käsk \ci{parbox} pakib sisse terve lõigu, koos reamurdmiste
ja kõige muuga, on olemas ka klass kastikäske, mis tegutsevad ainult
horisontaalselt joondatud materjalil. Ühte neist me juba tunneme, nimelt
\ci{mbox}. See käsk seob lihtsalt rea kaste üheks kastiks ning selle
abil saab takistada \LaTeX il kahte sõna teineteisest eraldamast. Kuna
kaste võib panna kastide sisse, on nende horisontaalsete kastipakkijate
paindlikkus piiramatu.

\begin{lscommand}
\ci{makebox}\verb|[|\emph{laius}\verb|][|\emph{asend}\verb|]{|\emph{tekst}\verb|}|
\end{lscommand}

\noindent Argument \emph{laius} määrab tulemuskasti suuruse
väljastpoolt vaadates.\footnote{See võib olla ka väiksem
kui kasti sees olev materjal. Laiuseks võib panna isegi \texttt{0pt},
millega kasti sees olev tekst trükitakse nii, et see ümbritsevaid kaste
ei mõjuta.} Peale pikkusetüüpi väärtuste võib argumendis \emph{laius}
kasutada ka suurusi \ci{width}, \ci{height}, \ci{depth} ja
\ci{totalheight}. Need kajastavad vormindatud \emph{tekst}i mõõtmisel
saadud väärtusi. Argument \emph{asend} on üksainus täht:
\texttt{c} (keskele), \texttt{l} (vasakule), \texttt{r} (paremale) või
\texttt{s} (laotatud laiali kogu kasti alale).

Käsk \ci{framebox} töötab täpselt samamoodi nagu \ci{makebox}, ainult
lisaks joonistab teksti ümber raami.

Järgmises näites demonstreeritakse mõningaid asju, mida saab käskudega
\ci{makebox} ja \ci{framebox} teha.

\begin{example}
\makebox[\textwidth]{%
    k e s k e l}\par
\makebox[\textwidth][s]{%
    l a o t a t u d}\par
\framebox[1.1\width]{Olen
    nüüd raami sees!} \par
\framebox[0.8\width][r]{Bumm,
    ma olen liiga lai} \par
\framebox[1cm][l]{pole vahet,
    mina ka}
Kas seda saab lugeda?
\end{example}

Nüüd kui me oskame juhtida horisontaalset, on järgmine ilmne samm minna
vertikaalseks.\footnote{Täielik juhtimine saavutatakse korraga
horisontaalset ja vertikaalset juhtides \ldots} \LaTeX i jaoks pole
see probleem. Käsk

\begin{lscommand}
\ci{raisebox}\verb|{|\emph{tõste}\verb|}[|\emph{ulatus alusjoonest
üles}\verb|][|\emph{ulatus alusjoonest
alla}\verb|]{|\emph{tekst}\verb|}|
\end{lscommand}
\noindent võimaldab määrata kasti vertikaalseid omadusi. Esimeses kolmes
argumendis võib kasutada suurusi \ci{width}, \ci{height}, \ci{depth} ja
\ci{totalheight}, et tegutseda sõltuvalt argumendis \emph{tekst} oleva
kasti suurusest.

\begin{example}
\raisebox{0pt}[0pt][0pt]{\Large%
\textbf{Aaaa\raisebox{-0.3ex}{a}%
\raisebox{-0.7ex}{aa}%
\raisebox{-1.2ex}{pp}%
\raisebox{-2.2ex}{i}%
\raisebox{-4.5ex}{i}}}
hüüdis ta, kuid isegi reas
järgmine ei märganud, et temaga
oli juhtunud midagi kohutavat.
\end{example}

\section{Jooned}
\label{sec:rule}

Mõned leheküljed tagasi esines käsk

\begin{lscommand}
\ci{rule}\verb|[|\emph{tõste}\verb|]{|\emph{laius}\verb|}{|\emph{kõrgus}\verb|}|
\end{lscommand}

\noindent Tavakasutuses moodustab see hariliku musta kasti.

\begin{example}
\rule{3mm}{.1pt}%
\rule[-1mm]{5mm}{1cm}%
\rule{3mm}{.1pt}%
\rule[1mm]{1cm}{5mm}%
\rule{3mm}{.1pt}
\end{example}

\noindent See on kasulik vertikaalsete ja horisontaalsete joonte
tõmbamiseks. Näiteks tiitellehe jooned on loodud käsuga \ci{rule}.

\bigskip
{\flushright Lõpp.\par}

%

% Local Variables:
% TeX-master: "lshort2e"
% mode: latex
% mode: flyspell
% End:
