%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: Specialities of the LaTeX system
% $Id: erikois.tex,v 3.7 1999/04/21 08:05:09 hellgren Exp hellgren $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
\chapter{Lisukkeet}
\begin{intro}
  Ison dokumentin työstämisessä \LaTeX{} auttaa erityisominaisuuksillaan.
  Näitä ovat mm.~hakemiston luominen ja kirjallisuusviitteiden hallinta.
  Täydellisempi kuvaus \LaTeX:n erikoistoiminnoista ja lisukkeista
  on saatavilla {\normalfont\manual{}}:ssa ja {\normalfont \companion}:ssa.
\end{intro}

\section{EPS-grafiikan lisääminen}

\LaTeX{} tarjoaa kuvien ja grafiikan kaltaisten objektien käsittelyyn
perustarpeet ympäristöjen \texttt{figure} ja \texttt{table} muodossa.

Perus-\LaTeX{} tai \LaTeX:n laajennuspakkaus tarjoavat useita mahdollisuuksia
tehdä varsinaista grafiikkaa.\index{grafiikka} Valitettavasti ne ovat
useimmille käyttäjille vaikeatajuisia. Niinpä niitä ei selitetä sen
tarkemmin tässä oppaassa. Asiasta saa lisätietoa \companion:sta ja
\manual:sta.

On paljon helpompaa saada grafiikkaa dokumenttiin tekemällä se
siihen erikoistuneella ohjelmalla\footnote{Näitä ovat mm.~XFig, CorelDraw!,
Freehand, Gnuplot, \ldots}. Valmis grafiikka voidaan sitten lisätä
dokumenttiin. \LaTeX tarjoaa jälleen tähän useita tapoja. Tässä
tekstissä käsitellään ainoastaan EPS- eli
\emph{\wi{Encapsulated Postscript}}-kuvia, koska niiden tekeminen on helppoa
ja ne ovat yleisiä. EPS-kuvien tulostamiseksi täytyy käytössä olla
\wi{PostScript}-tulostin\footnote{Toinen vaihtoehto on hoitaa tulostus
\textsc{\wi{GhostScript}}-ohjelman kautta. Se on saatavilla osoitteesta
\texttt{CTAN:/tex-archive/support/ghostscript}}

D.P.~Carlislen tekemässä \pai{graphicx}-makropakkauksessa on joukko
hyviä komentoja grafiikan lisäämiseksi. Se on osa makropakkausten joukkoa
nimeltä ''graphics''.\footnote{CTAN:/tex-archive/macros/latex/packages/graphics}.

Jos oletetaan, että systeemin käytössä on PostScript-tulostin ja
\textsf{graphicx}-pakkaus on asennettu, voidaan dokumenttiin lisätä kuvia

\begin{enumerate}
\item Muuta kuva piirustusohjelmassasi EPS-formaattiin.\footnote{Jos ohjelmasta
 ei voi tallentaa EPS-muotoon, voidaan yritää asentaa PostScript-tulostimen
 ajuri (esim.~Apple LaserWriter) ja tulostaa kuva tiedostoon tällä ajurilla.
 On huomattava, että EPS-kuvassa saa olla vain yksi sivu. Jotkut tulostinajurit
 voidaan säätää tulostamaan erityisesti EPS-formaatissa.}
\item Ladataan \textsf{graphicx}-paketti tiedoston esittelyosassa käskyllä
\begin{command}
\verb|\usepackage[|\emph{ajuri}\verb|]{graphicx}|
\end{command}
jossa \emph{ajuri} on systeemisi ohjelma, jolla dvi-tiedostot muunnetaan Post\-Scriptiksi.
Yleisin tällainen ohjelma on \texttt{dvips}. Ajurin nimi tarvitaan, koska
\TeX:ssä ei ole mitään standarditapaa lisätä kuvia. Kun \textsf{gra\-phicx}-paketti
tietää ajurin nimen se voi valita oikean tavan lisätä tietoa kuvasta
\texttt{.dvi}-tiedostoon niin, että tulostin ymmärtää sen ja lisää \texttt{.eps}-tiedoston
oikein.
\item Käyttämällä komentoa
\begin{command}
\ci{includegraphics}\verb|[|\emph{avain}=\emph{arvo}, \ldots\verb|]{|\emph{tiedosto}\verb|}|
\end{command}
\emph{tiedoston} lisäämiseksi dokumenttiin. Vaihtoehtoinen parametri hyväksyy
pilkulla erotetun \emph{avainten} listan niihin liittyvine \emph{arvoineen}.
\emph{Avaimia} voidaan käyttää muuttamaan kuvan leveyttä, korkeutta tai kääntää sitä.
Taulukko~\ref{keyvals} luettelee tärkeimmät avaimet.
\end{enumerate}

\begin{table}[htb]
\caption{Avainsanat \textsf{graphicx}-pakkaukselle}
\label{keyvals}
\begin{lined}{9cm}
\begin{tabular}{@{}ll}
\texttt{width}& kuvan leveydeksi tulee \emph{arvo}\\
\texttt{height}& kuvan korkeudeksi tulee \emph{arvo}\\
\texttt{angle}& käännä kuvaa vastapäivään\\
\texttt{scale}& suurenna tai pienennä kuvaa \\
\end{tabular}

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

Seuraava esimerkki toivottavasti selvittää asioita:
\begin{code}
\begin{verbatim}
\begin{figure}
\begin{center}
\includegraphics[angle=90, width=0.5\textwidth]{testi.eps}
\end{center}
\end{figure}
\end{verbatim}
\end{code}
Tämä lisää kuvan tiedostosta \texttt{testi.eps}. Kuvaa käännetään ensin 90 astetta
ja \emph{sitten} leveydeksi annetaan puolet normaalin kappaleen leveydestä. Sivujen
suhde on $1,0$, sillä korkeudelle ei ole määritelty mitään erityistä arvoa. Leveys
ja korkeus voidaan antaa myös absoluuttisina mittoina. Katso taulukosta~\ref{units}
sivulla \pageref{units} lisätietoja. Lisää informaatiota tästä aiheestä löytyy
ohjeista \cite{graphics} ja \cite{eps}.

\section{Bibliografia}
 
Bibliografia\index{bibliografia} voidaan tehdä \ei{thebibliography}-ympäristöllä.
Jokainen nimeke alkaa komennolla
\begin{command}
\ci{bibitem}\verb|{|\emph{tunniste}\verb|}|
\end{command}
\emph{Tunnistetta} käytetään dokumentissa viitattaessa kirjaan tai artikkeliin.
\begin{command}
\ci{cite}\verb|{|\emph{tunniste}\verb|}|
\end{command}
Nimekkeiden numerointi tapahtuu automaattisesti. Numeroiden maksimileveys
asetetaan komennon \verb|\begin{thebibliography}| jälkeen tulevalla
parametrilla. Alla olevassa
esimerkissä \verb|{99}| kertoo \LaTeX:lle, että yksikään bibliografian nimekkeiden
numeroista ei ole leveämpi kuin 99.

\begin{example}
Partl~\cite{pa} on
esittänyt, että \ldots
 
\begin{thebibliography}{99}
\bibitem{pa} H.~Partl: 
\emph{German \TeX},
TUGboat Vol.~9, No.~1 ('88)
\end{thebibliography}
\end{example}
\chaptermark{Lisukkeet} % w need to fix the damage done by the
                           %bibliography example.
\thispagestyle{fancyplain}

Laajempia projekteja ajatellen kannattaa tutustua Bib\TeX-ohjelmaan.
Se sisältyy useimpiin \TeX-järjestelmiin. Ohjelma antaa mahdollisuuden
ylläpitää tietokantaa kirjallisuudesta ja ottaa siitä mukaan tekstissä
viitatut nimekkeet. Bib\TeX:n ulkoasu perustuu tyylimäärityksiin, jotka
antavat mahdollisuuden tehdä erityyppisiä kirjallisuusluetteloita.

\section{Hakemiston tekeminen} \label{sec:indexing}

Hakemisto\index{hakemisto} on monissa kirjoissa hyödyllinen ominaisuus.
\LaTeX:lla ja apuohjelmalla \texttt{makeindex}\footnote{Niissä järjestelmissä, jotka
tukevat korkeintaan 8 merkin mittaisia tiedostonimiä, ohjelman nimenä saattaa
olla \texttt{makeidx}.} voidaan generoida helposti hakemisto. Tässä
tekstissä selitetään hakemiston teosta vain peruskomennot. Syvällisempi
selvitys löytyy kirjasta \companion. \index{makeindex-ohjelma} \index{makeidx-paketti}

Jotta \LaTeX{} osaisi tehdä hakemistoja, täytyy esittelyosassa ottaa
käyttöön \pai{makeidx}-makropaketti komennolla:
\begin{command}
\verb|\usepackage{makeidx}|
\end{command}
\noindent lisäksi hakemiston tekemiseksi täytyy esittelyosaan panna komento:
\begin{command}
  \ci{makeindex}
\end{command}

Hakemiston sisältö määritellään komennoilla:
\begin{command}
  \ci{index}\verb|{|\emph{avain}\verb|}|
\end{command}
\noindent joissa \emph{avain} on hakemistoon tuleva hakusana. Hakemistokomennot
pannaan tekstiin siihen kohtaan, johon hakemiston halutaan viittaavan.
Taulukossa~\ref{index} selitetään \emph{avain}-argumentin syntaksia
muutaman esimerkin voimin.

\begin{table}[!tp]
\caption{Hakemiston avainsanojen syntaksin esimerkkejä}
\label{index}
\begin{center}
\begin{tabular}{@{}lll@{}}
  \textbf{Esimerkki} &\textbf{Hakemiston rivi} &\textbf{Kommentti}\\\hline
  \rule{0pt}{1.05em}\verb|\index{morjens}| &morjens, 1 &Yksinkertainen hakusana\\ 
\verb|\index{morjens!Petri}|   &\hspace*{2ex}Petri, 3 &morjenksen alle tuleva hakusana\\ 
\verb|\index{Sam@\textsl{Sami}}|     &\textsl{Sami}, 2& Muotoiltu hakusana\\ 
\verb|\index{Lin@\textbf{Liinu}}|     &\textbf{Liinu}, 7& Sama kuin yllä\\ 
\verb.\index{Jaana|textbf}.     &Jaana, \textbf{3}& Muotoiltu sivunnumero\\
\verb.\index{Jussi|textit}.     &Jussi, \textit{5}& Sama kuin yllä
\end{tabular}
\end{center}
\end{table}

Kun \LaTeX on käy läpi käsikirjoitustiedostoa, jokainen \verb|\index|-komento
kirjoittaa hakemiston hakusanan yhdessä sivunumeron kanssa erityiseen
tiedostoon. Tiedostolla on sama nimi kuin \LaTeX:n käsikirjoitustiedostolla,
mutta eri pääte (\verb|.idx|). Seuraavaksi \texttt{makeindex}-ohjelma käsittelee
tätä \texttt{.idx}-tiedostoa.

\begin{command}
  \texttt{makeindex} \emph{tiedosto}
\end{command}

\texttt{Makeindex}-ohjelma generoi aakkostetun hakemiston jolla on sama
tiedostonimi, mutta nyt päätteenä on \texttt{.ind}. Jos \LaTeX:n
käsikirjoitustiedosto käsitellään jälleen kerran, aakkostettu hakemisto
tulee mukaan dokumenttiin siihen kohtaan, josta \LaTeX{} löytää komennon
\begin{command}
  \ci{printindex}
\end{command}

\LaTeXe:n mukana tuleva \pai{showidx}-makropakkaus tulostaa kaikki
hakemiston hakusanat tekstin vasempaan marginaaliin. Tästä on apua
oikoluettaessa dokumenttia ja hakemistoa tarkistettaessa.
   
% Add some infos on PROTECT ...  


\section{Tyylikkäät ylä- ja alatunnisteet}
\label{sec:fancy}

Piet van Oostrumin kirjoittama makropakkaus \pai{fancyhdr}\footnote{Saatavilla
osoitteesta \texttt{CTAN:/macros/latex/contrib/supported/fancyhdr/}}
lisää muutaman yksinkertaisen komennon, jolla voidaan määritellä
dokumentin ylä- ja alatunnisteiden ulkoasu. Tämän sivun yläosassa nähdään
käytännön toteutus makropakkauksen käytöstä.

\begin{figure}[!htbp]
\begin{lined}{\textwidth}
\begin{verbatim}
\documentclass{book}
\usepackage{fancyhdr}
\pagestyle{fancy}
% tämä varmistaa, että otsikoiden tunnisteet
% ovat pienillä kirjaimilla.
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\fancyhf{}  % poista ylä- ja alatunnisteen nykyiset asetukset
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[LO]{\bfseries\rightmark}
\fancyhead[RE]{\bfseries\leftmark}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\addtolength{\headheight}{0.5pt} % tilaa vaakaviivalle
\fancypagestyle{plain}{%
   \fancyhead{} % perussivuille ei tule tunnisteita
   \renewcommand{\headrulewidth}{0pt} % eikä viivaa
}
\end{verbatim}
\end{lined}
\caption{Esimerkki \pai{fancyhdr}:n käytöstä} \label{fancyhdr}
\end{figure}

Hankalinta ylä- ja alatunnisteiden määrittelemisessä on otsikkotekstien
saaminen sinne. \LaTeX:ssa tämä saadaan aikaan kaksivaiheisella
tempulla. Ylä- ja alatunnisteen määrittelyissä käytetään komentoja \ci{rightmark}
ja \ci{leftmark} esittämään vastaavaa luvun ja osion otsikkoa.
Näiden komentojen arvot kirjoitetaan uusiksi aina kun vastaan tulee uusi
luku tai osio.

Joustavuuden nimissä \verb|\chapter|-komento kumppaneineen ei määrittele
itse \ci{rightmark}:ia ja \ci{leftmark}:ia uusiksi, vaan se kutsuu komentoja
\ci{chaptermark}, \ci{sectionmark} tai \ci{subsectionmark}, jotka sitten
määrittelevät \ci{rightmark}:n ja \ci{leftmark}:n.

Niinpä, mikäli luvun nimen ulkoasua halutaan muuttaa tunnisteessa,
riittää, että \ci{chaptermark} määritellään uusiksi. \cih{sectionmark}\cih{subsectionmark}

Kuva \ref{fancyhdr} näyttää tavan käyttää \pai{fancyhdr}-makroja
niin, että ylätunnisteet näyttävät samalta kuin tässä kirjasessa.
Joka tapauksessa on suositeltavaa hankkia käsiinsä alaviitteessä mainitussa
osoitteessa olevan makropakkauksen käyttöohjeet. 

\section{Verbatim-makropakkaus}

Aikaisemmin tässä kirjasessa tutustuttiin \ei{verbatim}-\emph{ympäristöön}.
Tässä osiossa tutustutaan \pai{verbatim}-\emph{makropakkaukseen}, joka
periaatteessa määrittelee \ei{verbatim}-ympäristön uusiksi. Makropakkaus
pyrkii eroon joistakin alkuperäisen ympäristön rajoituksista. Tässä ei
sinänsä ole mitään mullistavaa, mutta \pai{verbatim}-pakkauksen käyttö
lisää myös uusia ominaisuuksia, mikä on syy sen mainitsemiseen tässä.
\pai{verbatim}-pakkaukseen lisää käyttöön

\begin{command}
\ci{verbatiminput}\verb|{|\emph{tiedosto}\verb|}|
\end{command}

\noindent komennon, jolla tekstiin voidaan lisätä ASCII tiedosto
sellaisenaan, aivan kuin \ei{verbatim}-ympäristössä ladottuna. 

Koska \pai{verbatim}-makropakkaus on osa 'tools'-kokoelmaa, se
pitäisi olla asennettu valmiiksi useimmissa järjestelmissä.
Lisätietoja tästä pakkauksesta saa lukemalla \cite{verbatim}:n.

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