%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: Customising LaTeX output
% $Id: viritys.tex,v 1.1.1.1 2002/12/01 08:05:09 hellgren Exp $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{\LaTeX:n virittely}

\begin{intro}
Tähän asti opetuilla käskyillä tehdyt dokumentit ovat järjellisen
näköisiä suurimmalle osalle. Vaikka ne eivät ole mitenkään erikoisen
näköisiä, ne noudattavat korkealaatuisen typografian vakiintuneita
sääntöjä, jotka tekevät dokumenteista helppolukuisia ja silmää
miellyttäviä.

On kuitenkin tilanteita, joissa \LaTeX{} ei tarjoa tarpeisiin
sopivia käskyjä tai ympäristöjä tai sitten käytössä olleilla
käskyillä tuotettu ulkoasu ei täytä sille asetettuja vaatimuksia.

Tässä luvussa annetaan joitakin vinkkejä siitä, miten
\LaTeX:lle opetetaan uusia temppuja ja miten sen tulostama
ulkoasu saadaan näyttämään erilaiselta.
\end{intro}

\section{Uudet käskyt, ympäristöt ja makropakkaukset}

Lukija on varmaankin huomannut, että kaikki tässä kirjasessa
esitetyt komennot on ladottu laatikon sisään ja ne esiintyvät
kirjasen lopussa olevassa hakemistossa. Tätä varten kirjoittaja
on luonut makropaketin \index{makropaketti}, jossa on
määritelty uusia komentoja ja ympäristöjä tätä tarkoitusta varten.
Nyt voidaan kirjoittaa yksinkertaisesti:

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

Tässä esimerkissä käytetään sekä uutta \ei{lscommand}-ympäristöä,
joka vastaa laatikon piirtämisestä komennon ympärille, että
uutta \ci{ci}-komentoa, joka latoo komennon nimen ja lisää
vastaavan hakusanan hakemistoon. Tämän voi tarkistaa etsimällä
\ci{esim}-komentoa tämän kirjasen hakemistosta, josta löytyy
hakusana \ci{esim}, joka viittaa joka sivulle, jossa esim-komento
on mainittu.

Jos tekijä päättää, ettei halua enää komentoja ladottavan laatikon
sisään, voidaan \texttt{command}-ympäristön määrittelyjä muuttaa.
Tämä on helpompaa kuin etsiä dokumentista kaikki ne kohdat, joissa
sanojen ympärille on piirretty laatikko \LaTeX:n
peruskäskyillä.


\subsection{Uudet käskyt}

Omien käskyjen lisäämiseen käytetään
\begin{lscommand}
\ci{newcommand}\verb|{|%
       \emph{nimi}\verb|}[|\emph{numero}\verb|]{|\emph{määritelmä}\verb|}|
\end{lscommand}
\noindent "=komentoa. 
Komento tarvitsee vähintään kaksi argumenttia: uuden komennon \emph{nimen}
ja komennon \emph{määritelmän}. Hakasulkeissa oleva \emph{numero} on
vaihtoehtoinen. Sitä voidaan käyttää määrittelemään komentoja, jotka
saavat maksimissaan 9 argumenttia. Jos se puuttuu, argumenttien määräksi
oletataan 0 eli ei lainkaan argumentteja.

Asia pitäisi selvitä seuraavasta kahdesta esimerkistä. Ensimmäinen
esimerkki määrittelee uuden \ci{pjlk}-komennon. Se on lyhenne
sanoista ''Pitkänpuoleinen johdanto \LaTeX2e:n käyttöön''. Kyseinen
komento voi olla tarpeen, jos tämän kirjasen nimi pitäisi latoa
yhä uudelleen ja uudelleen.

\begin{example}
\newcommand{\pjlk}{Pitkänpuoleinen
    johdanto \LaTeX2e:n
    käyttöön}
Tämä on ''\pjlk'' \ldots{} 
''\pjlk''
\end{example}

Seuraava esimerkki esittää \emph{numero}-argumentin käyttöä.
\verb|#1|:n tilalle tulee käyttäjän antama argumentti. Jos halutaan
käyttää useampia argumentteja, jatketaan numerointia \verb|#2| jne.

\begin{example}
\newcommand{\txsit}[1]
 {Tämä on \emph{#1} johdanto
  \LaTeX2e:n käyttöön}
% varsinaisessa dokumentissa: 
\begin{itemize}
\item \txsit{pitkänpuoleinen}
\item \txsit{hyvin lyhyt}
\end{itemize}
\end{example}

\LaTeX{} ei anna määritellä uutta komentoa, jolla on sama nimi
kuin jollain jo määritellyllä. Tätä varten on kuitenkin olemassa
erityinen komento: \ci{renewcommand}.
Sen syntaksi on sama kuin \verb|\newcommand|-komennon.

Tietyissä tilanteissa halutaan ehkä käyttää
\ci{providecommand}-komentoa. Se toimii kuten \ci{newcommand},
mutta jos samanniminen komento on jo määritelty \LaTeX{}
jättää uuden määrittelyn huomiotta.

\LaTeX:n komentoja seuraavissa välilyönneissä on tiettyjä seikkoja,
jotka tulee ottaa huomioon. Katso sivulta \pageref{whitespace} lisätietoja.

\subsection{Uudet ympäristöt}

Ympäristöjen määrittelemiseksi on samantapainen komento kuin
\verb|\newcommand|. \ci{newenvironment}-komennon syntaksi on seuraava:

\begin{lscommand}
\ci{newenvironment}\verb|{|%
       \emph{nimi}\verb|}[|\emph{numero}\verb|]{|%
       \emph{ennen}\verb|}{|\emph{jälkeen}\verb|}|
\end{lscommand}

Myös \ci{newenvironment}-komentoa voidaan käyttää vaihtoehtoisen
argumentin kanssa tai ilman. \emph{ennen}-argumentin materiaali
käsitellään ennen kuin ympäristössä olevaa tekstiä käsitellään.
\emph{jälkeen}-argumentin materiaali käsitellään sen jälkeen
kun vastaan on tullut \verb|\end{|\emph{nimi}\verb|}|-komento.

Alla oleva esimerkki kuvaa \ci{newenvironment}-komennon käyttöä.
\begin{example}
\newenvironment{kuningas}
 {\rule{1ex}{1ex}%
      \hspace{\stretch{1}}}
 {\hspace{\stretch{1}}%
      \rule{1ex}{1ex}}

\begin{kuningas}
Uskolliset alamaiseni \ldots
\end{kuningas}
\end{example}

Argumenttia \emph{numero} käytetään samalla tavoin kuin
\verb|\newcommand|"-komennossa. \LaTeX{} varmistaa, ettei jo
olemassa olevaa ympäristöä aleta määritellä. Jos olemassa olevaa
ympäristöä pitää muuttaa, siihen voidaan käyttää komentoa \ci{renewenvironment}.
Se käyttää samaa syntaksia kuin komento \ci{newenvironment}.

Esimerkissä käytetyt komennot selitetään myöhemmin: katso komentoa
\ci{rule} sivulta \pageref{sec:rule}, \ci{stretch} sivulta \pageref{cmd:stretch}
ja lisätietoa \ci{hspace}:sta saa sivulta \pageref{sec:hspace}.

\subsection{Ylimääräiset välit}

Uuteen ympäristöön tulee helposti mukaan ylimääräisiä tyhjiä välejä, joilla
voi olla kohtalokkaat vaikutukset. Otetaan esimerkiksi
otsikkoympäristö, jossa ei käytetään sisennystä eikä myöskään sitä
seuraavassa kappaleessa. Komento \ci{ignorespaces} ymäpäristön aloituksen
määrittelyissä estää rivinvaihtoja tekemästä tyhjiä välejä.
Ympäristön lopetuksen määrittely on hankalampi tapaus. Komennolla
\ci{ignorespacesafterend} panee {\LaTeX}:n lisäämään komennon
\ci{ignorespaces} kun ympäristö on päättynyt.

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

\begin{simple}
Huomaa välilyönti\\vasemmalla.
\end{simple}
Tässä\\myös.
\end{example}

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

\begin{correct}
Vasemmalla ei ole\\välilyöntiä.
\end{correct}
Sama\\tässä.
\end{example}
                                             
\subsection{\LaTeX{} komentorivillä}

Unixin tapaisissa käyttöjärjestelmissä voidaan {\LaTeX}-projektien
koostamiseen käyttää Makefile-tiedostoja. Tähän liittyen voisi olla
mielenkiintoista tuottaa erilaisia versioita samasta dokumentista
kutsumalla {\LaTeX}:ia erilaisilla komentorivin parametreilla. Mikäli
dokumenttiin lisätään seuraava rakenne:

\begin{verbatim}
\usepackage{ifthen}
\ifthenelse{\equal{\blackandwhite}{true}}{
  % mustavalkotila; jotain tehdään..
}{
  % väritila; jotain muuta tehdään..
}
\end{verbatim}

Nyt {\LaTeX}:ia voidaan kutsua näin:
\begin{verbatim}
latex '\newcommand{\blackandwhite}{true}\input{test.tex}'
\end{verbatim}

Ensin määritellään komento \verb|\blackandwhite| ja sitten luetaan varsinainen tiedosto.
Mikäli \verb|\blackandwhite| saa arvon \texttt{false}, dokumentista tehdään väriversio.

\subsection{Omat makropakkaukset}

Jos dokumentissa määritellään paljon uusia ympäristöjä ja komentoja, tulee
esittelyosasta pitkän puoleinen. Silloin on parempi tehdä makropakkaus,
joka sisältää kaikki uudet määrittelyt. Makropakkaus saadaan käyttöön
komennolla \ci{usepackage}.

\begin{figure}[!htbp]
\begin{lined}{\textwidth}
\begin{verbatim}
% Tobias Oetikerin demopaketti
\ProvidesPackage{demopack}
\newcommand{\pjlk}{Pitkänpuoleinen johdanto \LaTeXe:n käyttöön}
\newcommand{\txsit}[1]{The \emph{#1} Johdanto 
                       \LaTeXe:n käyttöön}
\newenvironment{king}{\begin{quote}}{\end{quote}}
\end{verbatim}
\end{lined}
\caption{Esimerkkipakkaus} \label{package}
\end{figure}

Makropaketin kirjoittaminen vastaa oikeastaan dokumentin johdanto-osan
sisällön kopioimista erilliseen tiedostoon, jolla on \texttt{.sty}-pääte.
Makropakettitiedoston alussa annetaan erityinen
\begin{lscommand}
\ci{ProvidesPackage}\verb|{|\emph{makropaketin nimi}\verb|}|
\end{lscommand}
\noindent komento. \verb|\ProvidesPackage| kertoo \LaTeX:lle paketin
nimen. LaTeX{} antaa virheilmoituksen, mikäli makropaketti yritetään
ottaa käyttöön toistamiseen. Kuvassa \ref{package} on pieni esimerkkimakropakkaus,
joka sisältää edellisissä esimerkeissä esitetyt komennot.

\section{Kirjasinmalli ja "=koko}

\subsection{Kirjasimen vaihtokomennot}

\index{kirjasin}\index{kirjasimen koko} \LaTeX{} valitsee kirjasimen leikkauksen
ja koon dokumentin loogisen rakenteen (otsikot, alaviitteet \ldots) perusteella.
Joissain tapauksissa kirjasinleikkaus ja "=koko halutaan ehkä muuttaa käsin.
Se voidaan tehdä taulukoissa~\ref{fonts} ja \ref{sizes} listatuilla komennoilla.
Jokaisen kirjasimen varsinainen koko riippuu dokumentin luokasta ja sen optioista.
Taulukossa~\ref{tab:pointsizes} esitetään näitä komentoja vastaavat absoluuttiset
pistekoot, sellaisina kuin ne on määritelty dokumenttien standardiluokissa.

\begin{example}
{\small Pienet ja
\textbf{lihavat} latinot}
{\Large isottelivat käyttäen 
\textit{kursiivia}.}
\end{example}

\LaTeXe:n eräs tärkeä ominaisuus on se, että kirjasinten määreet ovat
toisistaan riippumattomia. Tämä tarkoittaa sitä, että kirjasimen kokoa
ja jopa leikkausta voidaan muuttaa ja samalla säilyttää aikaisemmin
määritellyt lihavoinnin tai vinouden määreet.

\emph{Matematiikkatilassa} voidaan kirjasimen vaihtokomentoja käyttää
poistumiseen \emph{matematiikkatilasta} normaaliin tekstitilaan. Jos
kirjasinta halutaan vaihtaa matematiikkaa ladottaessa, on sitä varten
toinen kokoelma komentoja. Katso talukosta~\ref{mathfonts}.

\begin{table}[!bp]
\caption{Kirjasimet} \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@{}}
\ci{textrm}\verb|{...}|        &      \textrm{\wi{antiikva}}&
\ci{textsf}\verb|{...}|        &      \textsf{\wi{groteski}}\\
\ci{texttt}\verb|{...}|        &      \texttt{kirjoituskone}\\[6pt]
\ci{textmd}\verb|{...}|        &      \textmd{keskivahva}&
\ci{textbf}\verb|{...}|        &      \textbf{\wi{lihavoitu}}\\[6pt]
\ci{textup}\verb|{...}|        &       \textup{\wi{pysty}}&
\ci{textit}\verb|{...}|        &       \textit{\wi{kursiivi}}\\
\ci{textsl}\verb|{...}|        &       \textsl{\wi{vino}}&
\ci{textsc}\verb|{...}|        &       \textsc{\wi{kapiteelit}}\\[6pt]
\ci{emph}\verb|{...}|          &            \emph{korostettu} &
\ci{textnormal}\verb|{...}|    &    \textnormal{dokumentin} kirjasin
\end{tabular}

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


\begin{table}[!bp]
\index{kirjasinkoot}
\caption{Kirjasinkoot} \label{sizes}
\begin{lined}{12cm}
\begin{tabular}{@{}ll}
\ci{tiny}      & \tiny        pikkuruinen kirjasin \\
\ci{scriptsize}   & \scriptsize  hyvin pieni kirjasin\\
\ci{footnotesize} & \footnotesize  melko pieni kirjasin\\
\ci{small}        &  \small            pieni kirjasin \\
\ci{normalsize}   &  \normalsize  normaali kirjasin \\
\ci{large}        &  \large       iso kirjasin
\end{tabular}%
\qquad\begin{tabular}{ll@{}}
\ci{Large}        &  \Large       isompi kirjasin \\[5pt]
\ci{LARGE}        &  \LARGE       hyvin iso kirjasin \\[5pt]
\ci{huge}         &  \huge        valtava \\[5pt]
\ci{Huge}         &  \Huge        suurin
\end{tabular}

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

\begin{table}[!tbp]
\caption{Absoluuttiset pistekoot standardiluokissa}\label{tab:pointsizes}
\label{tab:sizes}
\begin{lined}{12cm}
\begin{tabular}{lrrr}
\multicolumn{1}{c}{koko} &
\multicolumn{1}{c}{10pt (oletusarvo) } &
           \multicolumn{1}{c}{11pt optio}  &
           \multicolumn{1}{c}{12pt optio}\\
\verb|\tiny|       & 5pt  & 6pt & 6pt\\
\verb|\scriptsize| & 7pt  & 8pt & 8pt\\
\verb|\footnotesize| & 8pt & 9pt & 10pt \\
\verb|\small|        & 9pt & 10pt & 11pt \\
\verb|\normalsize| & 10pt & 11pt & 12pt \\
\verb|\large|      & 12pt & 12pt & 14pt \\
\verb|\Large|      & 14pt & 14pt & 17pt \\
\verb|\LARGE|      & 17pt & 17pt & 20pt\\
\verb|\huge|       & 20pt & 20pt & 25pt\\
\verb|\Huge|       & 25pt & 25pt & 25pt\\
\end{tabular}

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


\begin{table}[!bp]
\caption{Matemaattiset kirjasimet} \label{mathfonts}
\begin{lined}{0.7\textwidth}
\begin{tabular}{@{}ll@{}}
\fni{mathrm}\verb|{...}|&     $\mathrm{Antiikva\ kirjasin}$\\
\fni{mathbf}\verb|{...}|&     $\mathbf{Lihavoitu\ kirjasin}$\\
\fni{mathsf}\verb|{...}|&     $\mathsf{Groteski\ kirjasin}$\\
\fni{mathtt}\verb|{...}|&     $\mathtt{Konekirjoituskirjasin}$\\
\fni{mathit}\verb|{...}|&     $\mathit{Kursiivi\ kirjasin}$\\
\fni{mathcal}\verb|{...}|&    $\mathcal{KALLIGRAFINEN\ KIRJASIN}$\\
\fni{mathnormal}\verb|{...}|& $\mathnormal{Normaali\ kirjasin}$\\
\end{tabular}

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

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

Kirjasinkokojen yhteydessä aaltosulkeilla \index{aaltosulkeet} on
merkittävä rooli. Niitä käytetään \emph{ryhmittelyyn}. Ryhmittely rajoittaa
useimpien \LaTeX:n komentojen vaikutusaluetta. \index{ryhmittely}

\begin{example}
Hän pitää {\LARGE Suurista ja 
{\small pienistä} kirjaimista}. 
\end{example}

Kirjasinkoon muutos vaikuttaa myös riviväleihin, mutta vain jos
kappale päättyy ennen kuin kirjasinkokoa vaihtavan komennon vaikutus
päättyy. Lopettavaa suljetta \verb|}| ei pitäisi siis käyttää liian
aikaisin. Huomaa seuraavissa kahdessa esimerkissä \verb|\par|-komennon
sijainti.\footnote{\texttt{\bs{}par}
vastaa kappaleiden välissä olevaa tyhjää riviä.}

\begin{example}
{\Large Älä lue tätä! Se ei ole
totta. Usko huviksesi!\par}
\end{example}

\begin{example}
{\Large Tämäkään ei ole totta.
Mutta minä olenkin valehtelija.}\par
\end{example}

Jos kirjasinkokoa halutaan vaihtaa koko kappaleessa tai vielä suuremmassa
osassa tekstiä, halutaan ehkä käyttää ympäristöä kirjasinkoon vaihtamiseksi.

\begin{example}
\begin{Large}
Tämä ei ole totta.
Mutta mikä nykyään
on \ldots 
\end{Large}
\end{example}

\noindent Tämä säästää sulkeiden laskemiselta.

\subsection{Vaaksa väärään voi olla virsta vaaraan}

Kuten tämän luvun alussa todettiin, voi olla vaarallista sorkkia
dokumenttia tällaisilla komennoilla, sillä ne toimivat vastoin
\LaTeX:n perusajatusta, joka on dokumentin loogisen ja visuaalisen
muotoilun erottaminen toisistaan. Tämä tarkoittaa sitä, että
kun samaa kirjasinta vaihtavaa komentoa käytetään useammassa paikassa
tietyn tyyppistä tietoa ladottaessa, pitäisi käyttää
\verb|\newcommand|-määritystä määrittelemään ''looginen peitekomento'',
joka käyttää kyseistä kirjasinkomentoa.

\begin{example}
\newcommand{\hups}[1]{\textbf{#1}}
Älä \hups{tule} tähän huoneeseen,
siinä on tuntematonta alkuperää
oleva \hups{kone}.
\end{example}

Tällä tavalla on se etu, että myöhemmin voidaan päättää, halutaanko
vaaraa ilmaisemaan jokin muu visuaalinen keino kuin \verb|\textbf|
ilman, että täytyisi etsiä dokumentista kaikki kohdat, joissa
on \verb|\textbf| ja joissa sitä on käytetty nimenomaan ilmaisemaan
vaaraa.

\subsection{Neuvo}

Tämän matkan kirjasinten ja kirjasinkokojen maailmaan päättää
muutama neuvon sananen:\nopagebreak

\begin{quote}
  \underline{\textbf{Muista\Huge!}} \textit{Mitä}
  \textsf{EN\textbf{\LARGE EM} \texttt{M}\textsl{ÄN}} kirjasimia \Huge
  dokumentissa \tiny käytetään \footnotesize \textbf{sitä} \small \texttt{luettavampi},
  \large \textit{ja} \normalsize \textsc{kauniimpi}
  \textsl{\textsf{siitä} t\large u\Large l\LARGE e\huge e}.
\end{quote}

\section{Välistys}
 
\subsection{Rivivälit}

\index{riviväli} Mikäli dokumentissa halutaan käyttää isompaa riviväliä,
voidaan sitä muuttaa panemalla
\begin{lscommand}
\ci{linespread}\verb|{|\emph{kerroin}\verb|}|
\end{lscommand}
\noindent "=komento dokumentin esittelyosaan. \verb|\linespread{1.3}|
käytetään ''yhden ja puolen'' riviväliin ja \verb|\linespread{1.6}| ''kakkosen''
riviväliin. Normaalisti riviväliä ei levitetä, joten kerroin on silloin 1.
\index{kakkosen riviväli}

Komennon \ci{linespread} huomattavat vaikutukset eivät sovi julkaistaviin töihin.
Mikäli rivivälin muuttamiseen on hyvät syyt, on ehkä syytä käyttää
komentoa:
\begin{lscommand}
\verb|\setlength{\baselineskip}{1.5\baselineskip}|
\end{lscommand}

\begin{example}
{\setlength{\baselineskip}%
           {1.5\baselineskip}
Tämä kappale on ladottu 1,5 kertaa
leveämmällä rivivälillä. Huomaa
par-komento kappaleen lopussa.\par}

Tämän kappaleen tarkoitus on esittää,
että sulkeen jälkeen riviväli on
taas normaali.
\end{example}
 
\subsection{Kappaleen muotoilu}\label{parsp}

\LaTeX:ssa on kaksi kappaleen ulkoasuun vaikuttavaa parametria.
Panemalla käsikirjoitustiedoston esittelyosaan määrittelyn
\begin{code}
\ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\
\verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}|
\end{code}
voidaan kappaleiden ulkoasua muuttaa. Nämä kaksi komentoa kasvattavat
kappaleiden väliä ja samalla asettavat ensimmäisen rivin sisennyksen
nollaksi.

Yllä olevan esimerkin \texttt{plus} ja \texttt{minus} kertovat
\TeX:lle, että kappaleiden väliä voidaan kasvattaa tai kutistaa
kerrottu määrä, jos näin kappaleet sopivat sivulle paremmin.

Mannereurooppalaisessa typografiassa (myös Suomessa) kappaleiden
väliin tulee usein tyhjä rivi eikä ensimmäistä riviä sisennetä. Tämä
vaikuttaa myös sisällysluetteloon. Sen rivit ladotaan myös väljemmin.
Tämän välttämiseksi voi olla parempi siirtää nämä kaksi komentoa
esittelyosasta johonkin kohtaan \verb|\tableofcontents|-käskyn jälkeen
tai sitten jättää käyttämästä niitä, sillä useimmissa ammattilaisen
tekemissä kirjoissa ensimmäinen rivi on sisennetty eikä kappaleiden
välissä ole tyhjää riviä.

Jos halutaan sisentää sellaisen kappaleen ensimmäinen rivi, jossa se
ei ole sisennetty voidaan käyttää
\begin{lscommand}
\ci{indent}
\end{lscommand}
\noindent "=komentoa kappaleen alussa.\footnote{Jos halutaan sisentää otsikon jälkeinen
ensimmäinen kappale, kannattaa käyttää 'tools'-kokoelman \pai{indentfirst}-makropakkausta.}
Tämä toimii luonnollisesti vain silloin kuin \verb|\parindent| ei ole saanut
arvoa nolla.

Jos halutaan luoda sisentämätön kappale, voidaan käyttää
\begin{lscommand}
\ci{noindent}
\end{lscommand}
\noindent "=käskyä kappaleen alussa. Tästä voi olla hyötyä silloin kun
dokumentti alkaa suoraan leipätekstillä eikä jollain otsikolla.

\subsection{Vaakasuora välistys}

\label{sec:hspace}
\LaTeX{} määrittelee sanojen ja lauseiden välit automaattisesti.
Vaakavälistyksen lisäämiseksi käytetään komentoa\index{vaakavälistys}
\begin{lscommand}
\ci{hspace}\verb|{|\emph{mitta}\verb|}|
\end{lscommand}
Jos tämä välistys tulee säilyttää vaikka se osuisi rivin loppuun tai
alkuun, käytetään \verb|\hspace*|"=komentoa \verb|\hspace|"=komennon
sijasta. \emph{Mitta} on yksinkertaisimmillaan vain numero ja mittayksikkö.
Tärkeimmät mittayksiköt on listattu taulukossa~\ref{units}.
\index{mittayksiköt}

\begin{example}
Tämä\hspace{1.5cm} on 1,5 cm:n
mittainen väli. 
\end{example}
\suppressfloats
\begin{table}[tbp]
\caption{\TeX:n mittayksiköt} \label{units}
\begin{lined}{9.5cm} 
\begin{tabular}{@{}ll@{}}
\texttt{mm} &  millimetri $\approx 1/25$~tuumaa \quad \demowidth{1mm} \\
\texttt{cm} & senttimetri = 10~mm  \quad \demowidth{1cm}                     \\
\texttt{in} & tuuma $=$ 25.4~mm \quad \demowidth{1in}                    \\
\texttt{pt} & piste $\approx 1/72$~tuumaa $\approx \frac{1}{3}$~mm  \quad\demowidth{1pt}\\
\texttt{em} & käytössä olevan kirjasimen 'M':n leveys \quad \demowidth{1em}\\
\texttt{ex} & käytössä olevan kirjasimen 'x':n korkeus \quad \demowidth{1ex}
\end{tabular}

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

\label{cmd:stretch} 
Komento
\begin{lscommand}
\ci{stretch}\verb|{|\emph{n}\verb|}|
\end{lscommand} 
\noindent luo erityisen kumisen välin. Se venyy niin pitkälle, että
rivillä jäljellä oleva tila tulee täyteen. Jos samalla rivillä
annetaan kaksi \verb|\hspace{\stretch{|\emph{n}\verb|}}|"-komentoa,
kasvavat välit venymiskertoimen mukaisesti.

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

Tekstiä välistettäessä voi olla järkevää, että välit riippuvat
käytetyn kirjasimen koosta. Tätä varten on olemessa suhteelliset
mittayksiköt \texttt{em} ja \texttt{ex}.:

\begin{example}
{\Large{}iso\hspace{1em}y}\\
{\tiny{}pieni\hspace{1em}y}
\end{example}

\subsection{Pystysuora välistys}

Kappaleiden, otsikoiden \ldots\ välit \LaTeX{} määrittää automaattisesti.
Tarvittaessa \emph{kahden kappaleen väliin} voidaan lisätä ylimääräinen
väli komennolla
\begin{lscommand}
\ci{vspace}\verb|{|\emph{mitta}\verb|}|
\end{lscommand}

Tätä komentoa pitäisi normaalisti käyttää kahden tyhjän rivin välissä.
Jos tämä väli pitäisi säilyttää myös sivun ylä"- tai alareunassa, käytetään
komennon tähtiversiota \verb|\vspace*|.
\index{pystysuora välistys}

Komentoa \verb|\stretch| voidaan käyttää \verb|\pagebreak|:n yhteydessä
latomaan sivun viimeinen rivi tai keskittämään teksti sivulla pystysuunnassa.
\begin{code}
\begin{verbatim}
Vähän tekstiä \ldots

\vspace{\stretch{1}}
Tämä menee sivun viimeiselle riville.\pagebreak
\end{verbatim}
\end{code}

Ylimääräistä väliä lisätään \emph{saman} kappaleen kahden rivin väliin
\begin{lscommand}
\ci{\bs}\verb|[|\emph{mitta}\verb|]|
\end{lscommand}
\noindent "=komennolla. 

Mikäli väliä ei haluta määritellä tarkkaan, voidaan käyttää komentoja
\ci{bigskip} (isoon väliin) ja \ci{smallskip} (pieneen väliin).

\section{Sivun ulkoasu}

\begin{figure}[!hp]
\begin{center}
\makeatletter\@layout\makeatother
\end{center}
\vspace*{1.8cm}
\caption{Sivun ulkoasun asetukset.}
\label{fig:layout}
\cih{footskip}
\cih{headheight}
\cih{headsep}
\cih{marginparpush}
\cih{marginparsep}
\cih{marginparwidth}
\cih{oddsidemargin}
\cih{paperheight}
\cih{paperwidth}
\cih{textheight}
\cih{textwidth}
\cih{topmargin}
\end{figure}
\index{page layout}

\index{sivun ulkoasu}
\LaTeXe{} antaa mahdollisuuden määritellä arkkikoon \index{arkin koko}
\verb|\documentclass|"-komennossa. \LaTeXe{} valitsee sitten automaattisesti
\wi{marginaalit}. Joskus kuitenkin ennalta määrätyt arvot eivät tyydytä.
Niitä voidaan luonnollisesti muuttaa.
%no idea why this is needed here ...
\thispagestyle{fancyplain}
Kuvassa~\ref{fig:layout} näytetään kaikki muutettavissa olevat parametrit.
Kuva on tehty 'tools' kokoelman \pai{layout}-makropakkauksella.%
\footnote{\CTANref|tex-archive/macros/latex/required/tools|}.

\textbf{SEIS!} \ldots ennenkuin syöksytään ''kapeat sivut leveämmäksi kiihkoon''
kannattaa asiaa miettiä ensin muutama sekunti. Kuten muillakin asioissa \LaTeX:ssa,
on sivun ulkoasulla tarkoituksensa.

Niinpä, MS Wordilla tehtyihin sivuihin verrattuna ne näyttävät hyvinkin kapeilta.
Katsotaanpa kuitenkin lukijan mielikirjaa\footnote{Nyt on kyse vakavaraisen kustantajan
julkaisemasta oikeasta painetusta kirjasta.} ja lasketaan rivillä keskimäärin
olevien merkkien määrä. Huomataan, että rivillä on vain noin 66 merkkiä.
Tehdäänpä sama myös \LaTeX:n sivulla. Huomataan, että myös siinä on 66 merkkiä
rivillä. Kokemus osoittaa, että lukeminen vaikeutuu heti kun rivillä on
enemmän merkkejä. Tämä johtuu siitä, että silmiä on vaikea siirtää
rivin lopusta seuraavan rivin alkuun. Samasta syystä sanomalehdet ladotaan
useammalla palstalla.

Eli jos leipätekstin leveyttä lisätään on muistettava, että lukijoiden
elämä tehdään vaikeammaksi. Riittäköön tämä kuitenkin varoituksista,
lupasinhan kertoa miten se tehdään \ldots

\LaTeX{} tarjoaa näiden parametrien muuttamiseksi kaksi komentoa. Niitä
käytetään tavallisesti dokumentin johdanto-osassa.

Ensimmäinen komento liittää johonkin parametreista tietyn arvon:
\begin{lscommand}
\ci{setlength}\verb|{|\emph{parametri}\verb|}{|\emph{mitta}\verb|}|
\end{lscommand}

Seuraava komento lisää pituutta johonkin parametreista.
\begin{lscommand}
\ci{addtolength}\verb|{|\emph{parametri}\verb|}{|\emph{mitta}\verb|}|
\end{lscommand} 

Tämä toinen komento on oikeastaan hyödyllisempi kuin \ci{setlength}-komento,
sillä nyt tullaan työskentelemään yksinomaan aikaisemmin määritellyillä
asetuksilla. Koko tekstin levyden kasvattamiseksi yhden senttimetrin verran,
dokumentin johdanto-osaan pannaan:
\begin{code}
\verb|\addtolength{\hoffset}{-0.5cm}|\\
\verb|\addtolength{\textwidth}{1cm}|
\end{code}

Tässä yhteydessä voitaisiin tutustua \pai{calc}-makropakettiin,
joka antaa mahdollisuuden käyttää aritmeettisia operaatioita aina
kun funktioiden argumenteille annetaan jotain arvoja.

\section{Lisää hupia mitoista}

Aina kuin vain mahdollista on \LaTeX"-dokumenteissa parasta välttää
absoluuttisia mittoja. On parempi perustaa asiat muiden elementtien
leveydelle tai korkeudelle. Kuvan leveys voisi olla \verb|\textwidth|,
jotta se täyttäisi sivun.

Seuraavat kolme komentoa mahdollistavat tekstijonon leveyden, korkeuden
ja syvyyden määrittämisen.

\begin{lscommand}
\ci{settoheight}\verb|{|\emph{komento}\verb|}{|\emph{teksti}\verb|}|\\
\ci{settodepth}\verb|{|\emph{komento}\verb|}{|\emph{teksti}\verb|}|\\
\ci{settowidth}\verb|{|\emph{komento}\verb|}{|\emph{teksti}\verb|}|
\end{lscommand}

\noindent Seuraava esimerkki esittää tavan käyttää näitä komentoja.

\begin{example}
\flushleft
\newenvironment{vardesc}[1]{%
  \settowidth{\parindent}{#1:\ }
  \makebox[0pt][r]{#1:\ }}{}

\begin{displaymath}
a^2+b^2=c^2
\end{displaymath}

\begin{vardesc}{Jossa}$a$, 
$b$ -- ovat suorakulmaisen kolmion
suoran kulman adjunkteja.

$c$ -- on kolmion
yksinäinen hypotenuusa.

$d$ -- ei lopulta esiinny tässä
lainkaan. Eiko olekin hämäävää? 
\end{vardesc}
\end{example}

\section{Laatikot}

\LaTeX{} rakentaa sivuja työntelemällä laatikoita sinne tänne. Ensinnäkin
jokainen kirjain on pieni laatikko, joka sitten liimataan muihin kirjaimiin
muodostamaan sanoja. Nämä liimataan edelleen muihin sanoihin, mutta erityisellä
elastisella liimalla, jotta joukko sanoja voidaan ahtaa tai levittää täyttämään
sivun yksi rivi.

Myönnettäköön, että tämä oli yksinkertaistettu kuvaus siitä, mitä todella
tapahtuu, mutta ajatus on se, että \TeX{} operoi liimalla ja laatikoilla.
Eikä ainoastaan kirjain ole laatikko. Mitä tahansa voidaan panna laatikkoon,
myös muita laatikoita. \LaTeX{} käsittelee sitten jokaista laatikkoa aivan
kuin yksittäistä kirjainta.

Menneissä luvuissa olemme jo törmänneet joihinkin laatikoihin, vaikka
niitä ei erikseen mainittu. Esimerkiksi \ei{tabular}"-ympäristö ja komento
\ci{includegraphics} saa aikaan laatikon. Tämä tarkoittaa sitä, että kaksi
taulukkoa tai kuvaa voidaan helposti asemoida vierekkäin. On vain varmistettava,
että niiden yhteisleveys ei ylitä tekstin leveyttä.

Tietty kappale voidaan myös pakata laatikkoon joko

\begin{lscommand}
\ci{parbox}\verb|[|\emph{sijainti}\verb|]{|\emph{leveys}\verb|}{|\emph{teksti}\verb|}|
\end{lscommand}

\noindent "=komennolla tai

\begin{lscommand}
\verb|\begin{|\ei{minipage}\verb|}[|\emph{sijainti}\verb|]{|\emph{leveys}\verb|}| teksti
\verb|\end{|\ei{minipage}\verb|}|
\end{lscommand}

\noindent "=ympäristöllä. \texttt{Sijainti} voi olla jokin kirjaimista
\texttt{c, t} tai \texttt{b}, jolla määritellään laatikon pystysuora sijainti
suhteessa ympäröivän tekstin peruslinjaan. \texttt{leveys} ilmaisee
laatikon leveyden. Pääero on siinä, että parboxin sisällä ei voida käyttää
kaikkia komentoja, kun taas minipagessa kaikki on mahdollista.

Vaikka \ci{parbox} pakkaa koko kappaleen rivinvaihtoineen kaikkineen,
on olemassa myös laatikointikomentoja, jotka toimivat vaakasuoralla
asemoidulla materiaalilla. Yksi niistä onkin jo tuttu eli \ci{mbox}.
Se yksinkertaisesti pakkaa joukon laatikoita toiseen laatikkoon, ja
sitä voidaan käyttää estämään \LaTeX:ia panemasta rivinvaihtoa tiettyjen
sanojen väliin. Koska kerran laatikoiden sisään voidaan panna laatikoita,
ovat nämä vaakasuorat laatikonpakkaajat äärimmäisen joustavia käyttää.

\begin{lscommand}
\ci{makebox}\verb|[|\emph{leveys}\verb|][|\emph{sijainti}\verb|]{|\emph{teksti}\verb|}|
\end{lscommand}

\noindent \emph{leveys} määrittää tuloksena saatavan laatikon leveyden ulkoa
nähtynä.\footnote{Tämä tarkoittaa sitä, että se voi olla pienempi kuin
laatikon sisällä oleva materiaali. Leveydeksi voidaan antaa jopa 0 pt, jolloin
laatikon sisällä oleva teksti ladotaan niin, ettei se vaikuta ympäröiviin
laatikoihin.} Mittayksiköiden lisäksi leveytenä voidaan antaa \ci{width},
\ci{height}, \ci{depth} ja \ci{totalheight}. Ne saavat arvon ladotun
\emph{tekstin} mitoista. \emph{sijainti}"-parametri saa yksikirjaimisen arvon:
\textbf{c} keskitetty, \textbf{l} vasemmalle tasattu, \textbf{r} oikealle tasattu
tai \textbf{s}, joka tasaa tekstin laatikon koko alalle.

\ci{framebox} toimii samalla tavoin kuin \ci{makebox}, mutta se piirtää
tekstin ympärille kehyksen.

Seuraavat esimerkit näyttävät mitä \ci{makebox}:lla ja \ci{framebox}:lla
voidaan muun muassa tehdä.

\begin{example}
\makebox[\textwidth]{%
    k e s k i n e n}\par
\makebox[\textwidth][s]{%
    l e v i t e t t y}\par
\framebox[1.1\width]{Näin sitä 
    ollaan kehyksissä!} \par
\framebox[0.8\width][r]{Hitto, 
    tuli liian leveä} \par
\framebox[1cm][l]{Hällä 
    väliä, eiks je?} 
Pystytkö lukemaan tämän?
\end{example}

Nyt kun vaakasuorat asiat ovat hallinassa, voidaan siirtyä
pystysuoriin.\footnote{Täydellinen kontrolli saavutetaan vain hallitsemalla
 sekä vaakasuoraa että pystysuoraa materiaalia \ldots} Se ei ole ongelma
\LaTeX:lle.

\begin{lscommand}
\ci{raisebox}\verb|{|\emph{nosto}\verb|}[|\emph{syvyys}\verb|][|\emph{korkeus}\verb|]{|\emph{teksti}\verb|}|
\end{lscommand}

\noindent "=komennolla voidaan määritellä laatikon ominaisuuksia pystysuoralla akselilla.
Kolmessa ensimmäisessä parametrissa voidaan käyttää muuttujia \ci{width}, \ci{height},
\ci{depth} ja \ci{totalheight}, jolloin laatikon kokoon vaikuttaa \emph{teksti}-argumentti.

\begin{example}
\raisebox{0pt}[0pt][0pt]{\Large%
\textbf{Aaaa\raisebox{-0.3ex}{a}%
\raisebox{-0.7ex}{aa}%
\raisebox{-1.2ex}{r}%
\raisebox{-2.2ex}{g}%
\raisebox{-4.5ex}{h}}}
hän huusi, mutta ei edes seuraava
rivissä huomannut, että jotain
kauheaa oli tapahtunut hänelle.
\end{example}

\section{Linjat ja välikkeet}
\label{sec:rule}

Muutama sivu sitten nähtiin komento

\begin{lscommand}
\ci{rule}\verb|[|\emph{noste}\verb|]{|\emph{leveys}\verb|}{|\emph{korkeus}\verb|}|
\end{lscommand}

\noindent Normaalikäytössä se tekee mustan laatikon.

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

\noindent Siitä on hyötyä piirrettäessä pysty"- ja vaakasuoria viivoja.
Kansisivulla oleva viiva on esimerkiksi tehty \ci{rule}-komennolla.

Erityistapaus on linja, jolla ei ole leveyttä, mutta kylläkin tietty korkeus.
Painoalalla tätä kutsutaan välikkeeksi. \index{välike} Sitä käytetään
varmistamaan, että sivulla olevalla elementillä on tietty minimikorkeus.
Sitä voidaan käyttää \texttt{tabular}-ympäristössä varmistamaan, että
rivillä on tietty minimikorkeus.

\begin{example}
\begin{tabular}{|c|}
\hline
\rule{1pt}{4ex}Tukipalkki \ldots\\
\hline
\rule{0pt}{4ex}Välike\\
\hline
\end{tabular}
\end{example}

\bigskip
{\flushright Loppu.\par}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "lyhyt2e"
%%% End: 

