%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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: 

