diff options
author | Norbert Preining <norbert@preining.info> | 2021-12-28 03:01:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-12-28 03:01:00 +0000 |
commit | ecdf859b6ce481abfd530425dcf6f0f764bd0001 (patch) | |
tree | 13bc161dc046876ac6c92fce5f9f5034ba9aa573 /info/kaytannollista-latexia/luku-rakenne.tex | |
parent | 790995b7e79697514364450bf9c04f1b8d500838 (diff) |
CTAN sync 202112280300
Diffstat (limited to 'info/kaytannollista-latexia/luku-rakenne.tex')
-rw-r--r-- | info/kaytannollista-latexia/luku-rakenne.tex | 7903 |
1 files changed, 7903 insertions, 0 deletions
diff --git a/info/kaytannollista-latexia/luku-rakenne.tex b/info/kaytannollista-latexia/luku-rakenne.tex new file mode 100644 index 0000000000..3d55ec708f --- /dev/null +++ b/info/kaytannollista-latexia/luku-rakenne.tex @@ -0,0 +1,7903 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\chapter{Rakenne ja sisältö} +\label{luku/rakenne} + +Tämä luku on oppaan kaikista luvuista kenties käytännönläheisin. Luku +keskittyy asioihin, joita kirjoittaja miettii erityisesti dokumentin +sisällön kirjoitusvaiheessa. Kirjoittaja tekee esimerkiksi valintoja +otsikoinnin ja muun jäsentämisen osalta. Hän miettii tiedon esittämistä +paitsi tekstin avulla myös esimerkiksi luetelmien, kuvien ja taulukoiden +avulla. Kirjoittaja tekee myös typografisia valintoja tekstin muotoilun +ja korostuskeinojen näkökulmasta. Edellä mainittuja ja muitakin +dokumentin rakenteen ja sisällön asioita käsitellään niin tekniikan kuin +typografiankin näkökulmasta. + +\section{Tekstikappaleet} +\label{luku/kappale} + +Tekstikappale on tekstin osa, jonka pitäisi käsitellä suunnilleen yhtä +asiakokonaisuutta. Se voi olla esimerkiksi yksi aihe, näkökulma, +ajankohta tai henkilö. Tekstin seuraava kappale käsittelee jotakin +toista aihetta, näkökulmaa tms. Kappaleen vaihtuminen on lukijalle +merkki siitä, että tekstin sisällössäkin jokin muuttuu. + +Latexin lähdetiedostoissa kappaleen vaihtuminen ilmaistaan +kirjoittamalla kappaleiden väliin vähintään yksi tyhjä rivi. Tätä +merkintäkielen piirrettä käsitellään myös luvussa +\ref{luku/kappaleen-vaihtuminen}. Kappale vaihtuu myös komennolla +\komentom{par}, joka sopii käytettäväksi esimerkiksi komentojen +määrittelyssä (luku \ref{luku/komennot}), kun halutaan varmistaa +kappaleen vaihtuminen tietyssä kohdassa. + +Ladotuissa teksteissä kuten kirjoissa ja lehdissä kappaleen vaihtuminen +ilmaistaan melkein aina siten, että uuden kappaleen ensimmäinen rivi +sisennetään hieman. Niin on tässäkin oppaassa. Toisinaan tekstikappaleet +erotetaan pystysuuntaisella välillä, ja silloin kappaleiden ensimmäistä +riviä ei sisennetä. Kappaleiden välejä, sisennyksiä, rivien tasaamista +ja muita asetuksia käsitellään seuraavissa alaluvuissa. + +Monissa kappaleisiin liittyvissä asetuksissa tarvitaan Texin mittoja ja +mittayksiköitä. Mittoihin liittyvää tekniikkaa käsitellään tarkemmin +luvussa \ref{luku/mitat}, joka on syytä tuntea ennen tämän alaluvun +lukemista. + +\subsection{Tasaaminen ja palstan muoto} +\label{luku/kappaleen-tasaus} + +Perusdokumenttiluokissa (luku \ref{luku/perusdokumenttiluokat}) +tekstikappaleet tasataan oletuksena palstan molempiin reunoihin, ja tätä +palstan muotoa kutsutaan tasapalstaksi. Se tarkoittaa samalla sitä, että +rivillä olevia sanavälejä venytetään sopivasti, jotta jokainen rivi +näyttäisi yhtä pitkältä ja palstan molemmat reunat tasaiselta. + +Käytännössä sanavälien venymiselle on määritelty yläraja, jonka yli +niitä ei venytetä. Ylärajan tarkoituksena on estää liian suuret ja rumat +sanavälit. Rajoitus on sinänsä järkevä, mutta se voi myös johtaa siihen, +että Tex ei saa tasattua kaikkia tekstikappaleita palstan oikeasta +reunasta: jotkin rivit yltävät palstan reunan yli; jotkin rivit jäävät +vajaaksi. Näin käy usein varsinkin suomen kielessä, jonka sanat ovat +usein pitkiä ja riveillä on vähänlaisesti sanavälejä. Suomen kielessä +sanavälien venymisen yläraja on usein tarpeellista asettaa oletusarvoa +suuremmaksi. Se tehdään mitan \mittam{emergencystretch} avulla, +esimerkiksi seuraavasti: + +\komentoi{setlength} +\mittai{emergencystretch} +\begin{koodilohkosis} +\setlength{\emergencystretch}{1em} +\end{koodilohkosis} + +\noindent +Kaikenlaiset kappaleiden latomiseen liittyvät tekniset rajoitukset voi +poistaa tai asettaa hyvin suuriksi komennolla \komentom{sloppy}. Komento +asettaa muun muassa sanavälien venymisen ylärajaksi 3\,em. Tämän +komennon käyttö ei ole kovin suositeltavaa, koska sillä on muitakin +seurauksia ja se voi vaikuttaa myös sellaisiin kappaleisiin, jotka +muuten saataisiin ladottua nätisti. Parempi on asettaa vain mitta +\mitta{emergencystretch} riittävän suureksi. Sanavälien venymiseen ja +kappaleiden tasaiseen latomiseen liittyvät asetukset voi palauttaa +oletusarvoihin komennolla \komentom{fussy}. + +Hyvin tavallista on tasata teksti pelkästään vasempaan reunaan, jolloin +rivien pituudet vaihtelevat ja oikealla on niin sanottu liehureuna. +Oikea liehureuna sopii pitkiin teksteihin yhtä hyvin kuin tasapalstakin, +mutta se on parempi valinta erityisesti silloin, kun palsta on kapea. +Nimittäin kapealla palstalla venyviä sanavälejä on käytettävissä hyvin +vähän ja oikean reunan tasaaminen vaatii sanavälien venyttämistä joskus +kohtuuttoman paljon. Tekstiin jää rumia aukkoja. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\komento{#1} & \ymparisto{#2} & #3 \\} + \begin{tabular}{lll} + \toprule + \ots{Komento} & \ots{Ympäristö} & \ots{Merkitys} \\ + \midrule + \rivi{raggedright}{flushleft}{vasen tasaus, oikea liehu} + \rivi{raggedleft}{flushright}{oikea tasaus, vasen liehu} + \rivi{centering}{center}{keskitetty} + \midrule + \rivi{RaggedRight}{FlushLeft} + {vasen tasaus, oikea liehu, tavutus (\paketti{ragged2e})} + \rivi{RaggedLeft}{FlushRight} + {oikea tasaus, vasen liehu, tavutus (\paketti{ragged2e})} + \rivi{Centering}{Center}{keskitetty, tavutus (\paketti{ragged2e})} + \rivi{justifying}{justify}{tasapalsta, tavutus (\paketti{ragged2e})} + \bottomrule + \end{tabular} +}{ + \caption{Tekstikappaleen tasaamiseen ja palstan muotoon vaikuttavat + komennot ja ympäristöt. Osa sisältyy \paketti{ragged2e}\-/pakettiin} + \label{tlk/kappaleen-tasauskomennot} +} + +Kappaleiden tasaamiseen ja palstan muotoon vaikuttavia komentoja ja +ympäristöjä on koottu taulukkoon \ref{tlk/kappaleen-tasauskomennot}. +Taulukossa on mainittu ensin Latexin omat komennot ja sitten +\pakettictan{ragged2e}\-/ paketin vastaavat. Latexin omat komennot +estävät sanojen tavuttamisen, kun taas \paketti{ragged2e}\-/ paketin +komennot sallivat tavutuksen normaalisti. + +\subsection{Pystysuuntaiset välit} +\label{luku/pystysuuntaiset-välit} + +Kappaleiden väliin ladottava pystysuuntainen tyhjä tila asetetaan mitan +\mittam{parskip} avulla. Se on oletuksena nolla, mutta pientä venymistä +kuitenkin sallitaan, eli joissakin tilanteissa kappaleiden väliin +voidaan latoa pieni tyhjä tila. Jos tyhjää tilaa ei haluta missään +tilanteessa, asetetaan mitta vain nollaksi: + +\komentoi{setlength} +\mittai{parskip} +\begin{koodilohkosis} +\setlength{\parskip}{0ex} +\end{koodilohkosis} + +\noindent +Seuraava esimerkkikomento asettaa kappaleväliksi 1,3\,ex. Lisäksi se +sallii kappalevälin venyä 0,2\,ex:n verran tai kutistua 0,1\,ex:n +verran. + +\komentoi{setlength} +\mittai{parskip} +\begin{koodilohkosis} +\setlength{\parskip}{1.3ex plus .2ex minus .1ex} +\end{koodilohkosis} + +\noindent +Silloin kun kappaleet ladotaan erilleen toisistaan, on yleensä hyvä +sallia kappalevälin venyä tai kutistua hieman, koska venyvät +pystysuuntaiset välit antavat Texille paremmat mahdollisuudet latoa +hyvännäköisiä sivuja. Venyvien välien avulla esimerkiksi sivun +tekstialueen ylä- ja alareunat saadaan aina samalle kohdalle. Toisaalta +myös liian suuret ja toisistaan liiaksi poikkeavat kappalevälit voivat +olla rumannäköisiä. + +Tavallista kappaleväliä suurempien pystysuuntaisten välien tekemiseen on +olemassa kolme valmista komentoa: suurimmasta pienimpään ne ovat +\komentom{bigskip}, \komentom{medskip} ja \komentom{smallskip}. Ne +sopivat käytettäväksi yksittäisiin tilainteisiin, joissa normaali +kappaleväli on liian vähän. Jos sivunvaihto osuu näiden komentojen +kohdalle, mitään väliä ei ladota sivun loppuun eikä seuraavan alkuun. + +Edellä mainittujen komentojen latoman välin suuruuteen voi vaikuttaa +mittojen \mitta{bigskipamount}, \mitta{medskipamount} ja +\mitta{smallskipamount} avulla. Seuraavassa on esimerkkikomennot +mittojen määrittelemiseen ja samalla niiden oletusarvot: + +\komentoi{setlength} +\mittai{bigskipamount} +\mittai{medskipamount} +\mittai{smallskipamount} +\begin{koodilohkosis} +\setlength{\bigskipamount} {12pt plus 4pt minus 4pt} +\setlength{\medskipamount} {6pt plus 2pt minus 2pt} +\setlength{\smallskipamount}{3pt plus 1pt minus 1pt} +\end{koodilohkosis} + +\noindent +Komentojen \komento{bigskip}, \komento{medskip} ja \komento{smallskip} +sijasta voi käyttää myös komentoja \komentom{bigbreak}, +\komentom{medbreak} tai \komentom{smallbreak}. Nämä toimivat lähes +samalla tavalla, mutta niihin sisältyy myös sivunvaihtovihje. Toisin +sanoen ne vaikuttavat ladonta\-/algoritmiin siten, että komennon +kohdalla todennäköisyys sivun vaihtumiselle kasvaa suhteessa muihin +kohtiin. Sivu voi edelleen vaihtua muustakin kohdasta, jos algoritmi +löytää omasta mielestään vielä paremman paikan. + +Pystysuuntaisten välien yleiskomento on \komentom{vspace}, jolle +annetaan argumentiksi välin suuruus ja mahdolliset venymisen rajat. +Tämäkin komento jättää välin latomatta, jos se sattuu sivunvaihdon +kohdalle. Sen sijaan tähdellinen versio \komentom{vspace*} latoo välin +joka tapauksessa, vaikka se olisi sivun lopussa tai alussa. + +\komentoi{vspace} +\begin{koodilohkosis} +Tekstikappale. +\vspace{5ex plus 1ex minus .5ex} + +Toinen tekstikappale. +\end{koodilohkosis} + +\noindent +Komento \komentom{addvspace} toimii lähes samoin kuin \komento{vspace}, +mutta se huomioi mahdolliset peräkkäiset \komento{addvspace}\-/ komennot +ja varmistaa, että vain suurin väli toteutuu. Jos siis useita +\komento{addvspace}\-/ komentoja sattuu peräkkäin, niiden määrittämiä +välejä ei ladota peräkkäin vaan ainoastaan suurin niistä ladotaan. +Seuraava esimerkki latoo kappaleiden väliin 2\,ex:n suuruisen +pystysuuntaisen välin: + +\komentoi{addvspace} +\begin{koodilohkosis} +Tekstikappale. + +\addvspace{1ex} \addvspace{2ex} \addvspace{.5ex} +Toinen tekstikappale. +\end{koodilohkosis} + +\noindent +Jos edellisessä esimerkissä olisi käytetty \komento{vspace}\-/ komentoa, +pystysuuntaisen välin suuruus olisi 3,5\,ex, joka on välien +yhteenlaskettu suuruus. + +\komento{addvspace}\-/komento soveltuu hyvin komentojen ja ympäristöjen +määrittelyyn (luvut \ref{luku/komennot} ja \ref{luku/ympäristöt}). +Esimerkiksi itse määritellyn ympäristön alussa ja lopussa voi +\komento{addvspace}\-/ komennolla varmistaa tietynsuuruisen välin, mutta +jos sama tai muu vastaava ympäristö on dokumentissa kahdesti peräkkäin, +huomioidaan pystysuuntainen väli vain kerran eli suurimman välin mukaan. +Jotkin Latexin valmiit ympäristöt tekevät juuri näin eli käyttävät +\komento{addvspace}\-/komentoa välien asettamiseen. + +Sivun alueella äärettömästi venyvän pystysuuntaisen välin saa komennolla +\komentom{vfill}. Mitan luonnollinen arvo on nolla, mutta se voi venyä +niin, että se täyttää kaiken tyhjän tilan sivulla. \komento{vfill}\-/ +komento tarkoittaa käytännössä samaa kuin +\komento{vspace}\komentoarg{0mm plus 1fill} \=/komento. Texin venyviä +mittoja ja välejä käsitellään tarkemmin luvussa +\ref{luku/venyvät-mitat}. + +\subsection{Ensimmäisen rivin sisennys} +\label{luku/ensimmäisen-rivin-sisennys} + +Kirjojen ja lehtien typografiassa kappaleen ensimmäinen rivi on tapana +sisentää merkiksi siitä, että alkaa uusi kappale. Sisennys on lukijalle +merkki siitä, että tekstin sisällössä siirrytään seuraavaan asiaan. +Oletusasetuksilla Latex latoo sisennyksen automaattisesti kappaleen +alkuun mutta ei kuitenkaan otsikoiden jälkeen. + +Ensimmäisen rivin sisennyksen suuruus asetetaan mitan \mittam{parindent} +avulla, esimerkiksi seuraavan esimerkin mukaisesti. Sopiva mittayksikkö +tähän tarkoitukseen on \emph{em}, koska se viittaa suoraan nykyisen +fontin kokoon. + +\komentoi{setlength} +\mittai{parindent} +\begin{koodilohkosis} +\setlength{\parindent}{1em} +\end{koodilohkosis} + +\noindent +Edellä mainittu mitta pitäisi asettaa nollaan silloin, kun kappaleiden +välissä on tyhjää tilaa. Pystysuuntainen välihän jo sinänsä ilmaisee, +että kappale vaihtuu. + +\komentoi{setlength} +\mittai{parskip} +\mittai{parindent} +\begin{koodilohkosis} +\setlength{\parskip}{1.3ex plus .2ex minus .1ex} +\setlength{\parindent}{0em} % Ei sisennystä. +\end{koodilohkosis} + +\noindent +\mitta{parindent}\-/ mitan levyisen välin voi tehdä mihin tahansa +komennolla \komentom{indent}. Tätä komentoa ei tavallisesti tarvita, +koska kappaleet alkavat automaattisesti sen suuruisella sisennyksellä. +Tarpeellisempi komento on sen vastakohta \komentom{noindent}, joka +voidaan kirjoittaa kappaleen alkuun estämään kyseisen kappaleen +ensimmäisen rivin sisentäminen. + +\komentoi{noindent} +\begin{koodilohkosis} +\noindent +Tämän tekstikappaleen ensimmäistä riviä ei sisennetä. +\end{koodilohkosis} + +\noindent +Suomenkielisissä julkaisuissa on tavallista, että leipätekstin +kappaleessa ei ole sisennystä, jos sitä ennen on pystysuuntainen väli. +Tällainen tilanne on aina otsikoiden jälkeen mutta myös kokonaan +sisennetyn tekstikappaleen jälkeen tai kuvan, taulukon, luetelman tai +muun vastaavan osan jälkeen, jos nämä ovat osa tekstivirtaa eivätkä +leijuvia osia (luku \ref{luku/leijuosat}). Käytäntöön on joskus +poikkeuksia suomenkielisessäkin typografiassa, mutta eri kielten välillä +käytäntö voi vaihdella enemmänkin. + +Latex estää sisennyksen automaattisesti otsikoiden jälkeen mutta latoo +sisennyksen kuitenkin kaikkien muiden elementtien ja pystysuuntaisen +välin jälkeen. Jos sisennys halutaan estää, pitäisi kyseiset kappaleet +aloittaa aina \komento{noindent}\-/komennolla. + +Toinen vaihtoehto on käyttää \pakettictan{noindentafter}\-/ pakettia ja +määritellä sen tarjoaman komennon avulla, minkä ympäristöjen jälkeen ei +haluta sisennystä. Seuraava esimerkki poistaa sisennyksen aina +\ymparisto{list}- ja \ymparisto{tabular}\-/ ympäristöjen jälkeen (luvut +\ref{luku/list-ympäristö} ja \ref{luku/taulukot}). + +\komentoi{NoIndentAfterEnv} +\ymparistoi{list} +\ymparistoi{tabular} +\begin{koodilohkosis} +\NoIndentAfterEnv{list} +\NoIndentAfterEnv{tabular} +\end{koodilohkosis} + +\noindent +Tosin \paketti{noindentafter}\-/ paketti ei ole aina toiminut +luotettavasti yhdessä \paketti{polyglossia}\-/ kielipaketin kanssa. Jos +sisennyksen poistaminen ei tahdo toimia, kyse voi olla juuri tästä. + +Kolmas keino kappaleen ensimmäisen rivin sisennyksen estämiseksi jonkin +ympäristön jälkeen on se, että aloittaa tekstikappaleen heti ympäristön +lopettavan \komento{end}\-/ komennon jälkeen -- ilman tyhjää riviä. + +\subsection{Riippuva sisennys} +\label{luku/riippuva-sisennys} + +Riippuva sisennys tarkoittaa tekstikappaleen muotoa, jossa sisennetään +kappaleen muita rivejä mutta ei ensimmäistä. Riippuvaa sisennystä +käytetään esimerkiksi kirjallisuus\-/{} ja lähdeluetteloissa, joissa on +tarpeellista saada henkilön nimi tai muu lähdemerkinnän hakusana +erottumaan selvästi vasemmassa reunassa. Tämän oppaan lopussa sivulla +\pageref{luku/kirjallisuutta} on esimerkki lähdemerkinnöistä. + +Myös virallisten asiakirjojen muotoilussa käytetään riippuvaa +sisennystä. Niissä kappaleen ensimmäinen rivi voi sisältää otsikon, joka +on tasattu vasempaan marginaaliin. Otsikon perässä on sarkainhyppy +tekstikappaleen sisennyksen tasalle, ja kappaleen muut rivit on +sisennettynä samalla tasolle. + +\begin{esimerkki*} + \komentoi{hangpara} + \pakettii{hanging} + \komentoi{,} + +\begin{koodilohko} +\hangpara{2cm}{1}Tässä tekstikappaleessa on riippuva sisennys. Kappale +alkaa yhdellä sisentämättömällä rivillä, ja kappaleen seuraavat rivit +on sisennetty 2\,cm. Ei ole kovin vaikeaa. +\end{koodilohko} + \begin{tulos} + \hangpara{2cm}{1}Tässä tekstikappaleessa on riippuva sisennys. Kappale + alkaa yhdellä sisentämättömällä rivillä, ja kappaleen seuraavat rivit + on sisennetty 2\,cm. Ei ole kovin vaikeaa. + \end{tulos} + \caption{Riippuva sisennys \paketti{hanging}\-/ paketin ja sen + \komento{hangpara}\-/ komennon avulla} + \label{esim/riippuva-sis-hangpara} +\end{esimerkki*} + +Helpoin tapa riippuvien sisennysten toteuttamiseen lienee +\pakettictan{hanging}\-/ paketin käyttö. Paketti tuo uuden komennon +\komentom{hangpara}, jonka käyttöä esimerkki +\ref{esim/riippuva-sis-hangpara} selventää. Komennon ensimmäinen +argumentti on sisennyksen mitta ja toinen argumentti (positiivinen +kokonaisluku) määrittää, kuinka monta riviä kappaleen alusta jätetään +sisentämättä. Jos taas toinen argumentti on negatiivinen luku, luvun +itseisarvo määrittää, kuinka monta riviä kappaleen alusta sisennetään. + +Komennon \komento{hangpara} vaihtoehtona on ympäristö +\ymparistom{hangparas}, jonka sisällä kaikki kappaleet sisennetään +riippuvalla tyylillä samojen asetusten mukaisesti. Ympäristön +aloituskomennolle annetaan samat argumentit kuin \komento{hangpara}\-/ +komennollekin. + +\ymparistoi{hangparas} +\begin{koodilohkosis} +\begin{hangparas}{2cm}{1} + ... +\end{hangparas} +\end{koodilohkosis} + +\begin{esimerkki*} + \komentoi{hangpara} + \komentoi{makebox} + \komentoi{,} + +\begin{koodilohko} +\hangpara{2cm}{1}\makebox[2cm][l]{Otsikko}Tässä tekstikappaleessa on +riippuva sisennys. Kappale alkaa yhdellä sisentämättömällä rivillä, +joka sisältää näkymättömässä 2\,cm leveässä laatikossa olevan otsikon. +Kappaleen muut rivit on sisennetty 2\,cm. +\end{koodilohko} + \begin{tulos} + \hangpara{2cm}{1}\makebox[2cm][l]{Otsikko}Tässä tekstikappaleessa on + riippuva sisennys. Kappale alkaa yhdellä sisentämättömällä rivillä, + joka sisältää näkymättömässä 2\,cm leveässä laatikossa olevan otsikon. + Kappaleen muut rivit on sisennetty 2\,cm. + \end{tulos} + \caption{Asiakirjan tyylisten tekstikappaleiden toteutus} + \label{esim/riippuva-sis-asiakirja} +\end{esimerkki*} + +\noindent +Asiakirjan tyylisen otsikon saa toteutettua \komento{makebox}\-/ +komennon avulla esimerkin \ref{esim/riippuva-sis-asiakirja} tavoin. +Komento latoo näkymättömän laatikon, jonka leveys määritellään +sisennyksen levyiseksi ja jonka sisään kirjoitetaan otsikko. Jos +asiakirjatyylisiä tekstikappaleita tarvitaan useita, kannattaa +määritellä sarkainleveyttä ja sisennystä varten oma mitta ja +tekstikappaleen kirjoittamista varten oma komento. Seuraavassa on siitä +esimerkki: + +\komentoi{newlength} +\komentoi{setlength} +\komentoi{newcommand} +\komentoi{makebox} +\komentoi{par} +\komentoi{hangpara} +\komentoi{ignorespaces} +\begin{koodilohkosis} +\newlength{\sarkain} +\setlength{\sarkain}{2.3cm} +\newcommand{\kappale}[1][]{\par\hangpara{2\sarkain}{1}% + \makebox[2\sarkain][l]{\ignorespaces #1}\ignorespaces} +\end{koodilohkosis} + +\noindent +Tämän jälkeen voi komennolla \komentox{kappale} aloittaa asiakirjan +sisennetyn tekstikappaleen. Komennolle voi antaa hakasulkeissa +valinnaisen argumentin, joka on kappaleen otsikko. \komento{makebox}\-/ +komentoa ja muita laatikoita käsitellään tarkemmin luvussa +\ref{luku/laatikot}. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{setlength} + \mittai{leftmargin} + \mittai{itemindent} + \komentoi{item} + \komentoi{,} + +\begin{koodilohko} +\begin{list}{}{ + \setlength{\leftmargin}{2cm} + \setlength{\itemindent}{-2cm} + } +\item Tässä tekstikappaleessa on riippuva sisennys. Kappale alkaa + yhdellä sisentämättömällä rivillä, ja kappaleen muut rivit on + sisennetty 2\,cm. +\end{list} +\end{koodilohko} + \caption{Riippuvan sisennyksen toteuttaminen \ymparisto{list}\-/ + ympäristön avulla} + \label{esim/riippuva-sis-list} +\end{esimerkki*} + +Riippuvan sisennyksen voi toteuttaa myös \ymparisto{list}\-/ ympäristön +avulla. Se on tarkoitettu luetelmien tekemiseen, mutta sopivilla +asetuksilla yksi ''luetelman'' kohta on riippuvasti sisennetty kappale. +Tarkemmin \ymparisto{list}\-/ ympäristöä käsitellään luetelmien +yhteydessä luvussa \ref{luku/list-ympäristö}, mutta oheisessa +esimerkissä \ref{esim/riippuva-sis-list} on sopivat asetukset riippuvan +sisennyksen toteuttamiseen. Kappale alkaa \komento{item}\-/ komennolla, +koska kyseessä on ikään kuin luetelman kohta. + +\subsection{Vasen ja oikea sisennys sekä lohkolainaukset} +\label{luku/lohkolainaukset} + +Dokumentteihin tarvitaan välillä kokonaisia sisennettyjä +tekstikappaleita, koska leipätekstin ohessa halutaan näyttää +muuntyyppistä sisältöä. Kyse voi olla teksti- tai kuvaesimerkeistä, +esimerkiksi muualta lainatusta tekstistä. Tässä oppaassa käytetään +paljon sisennettyjä tekstikappaleita Latex\-/koodien esimerkkeihin. + +Kokonaan sisennettyjä tekstikappaleita kutsutaan lohkolainauksiksi, +koska ne ovat lainauksia, jotka käsittävät kokonaisen tekstilohkon. +Lainausmerkkejä ei tarvitse käyttää, koska lainaus ilmaistaan +typografisin keinoin. Sisennyksen lisäksi varsin yleistä on käyttää +hieman pienempää kirjainleikkausta ja riviväliä kuin leipätekstissä. +Joskus vasemman reunan sisennyksen lisäksi sisennetään myös oikeasta +reunasta. + +Latexissa on tavallisille lohkolainauksille kolme erilaista ympäristöä: +\ymparisto{quotation}, \ymparisto{quote} ja \ymparisto{verse}. Kaksi +ensin mainittua on tarkoitettu normaalilla tavalla juoksevalle +tekstille, kun taas kolmas on tarkoitettu runon säkeiden ja säkeistöjen +latomiseen. + +\ymparistom{quotation}\-/ ympäristö sisentää tekstikappaleiden +ensimmäisen rivin 1,5\,em:n verran, eikä kappaleiden välissä ole +pystysuuntaista tilaa. \ymparistom{quote}\-/ ympäristö ei sisennä +kappaleiden ensimmäistä riviä, ja se puolestaan erottaa kappaleet +toisistaan pystysuuntaisen tilan avulla. \ymparisto{verse}\-/ ympäristöä +käytetään siten, että lähdedokumentissa runon säkeet lopetetaan +rivinvaihtokomentoon (\komento{\keno}), lukuun ottamatta säkeistön +viimeistä säettä. Säkeistöt erotetaan toisistaan tyhjällä rivillä, kuten +Latexissa tekstikappaleet muutenkin. Lopputuloksena on useimpiin +runoihin sopiva ladontatapa, jossa säkeistöjen vasen reuna on samalla +tasolla, oikealla on liehureuna ja säkeistöjen välissä on +pystysuuntaista tilaa. + +Jos Latexin valmiit lohkolainausympäristöt eivät tuota haluttua +lopputulosta, voi sisennetyt tekstikappaleet toteuttaa myös luetelmien +tekemiseen tarkoitetun \ymparisto{list}\-/ ympäristön avulla (luku +\ref{luku/list-ympäristö}). Sopivilla asetuksilla ''luetelma'' sisältää +ihan tavallisen näköisiä tekstikappaleita, jotka vain on sisennetty +vasemmalta tai oikealta tai molemmista reunoista. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{setlength} + \mittai{leftmargin} + \mittai{rightmargin} + \mittai{itemindent} + \mittai{listparindent} + \mittai{parindent} + \mittai{parsep} + \mittai{topsep} + \mittai{partopsep} + \komentoi{item} + \komentoi{linespread} + \komentoi{small} + +\begin{koodilohko} +\newenvironment{lohkolainaus}{% + \begin{list}{}{ + \setlength{\leftmargin}{1cm} + \setlength{\rightmargin}{1cm} + \setlength{\itemindent}{0bp} + \setlength{\listparindent}{\parindent} + \setlength{\parsep}{\parskip} + \setlength{\topsep}{1em} + \setlength{\partopsep}{0bp} + } + \item\linespread{1}\small + }{\end{list}} +\end{koodilohko} + \caption{Lohkolainausten eli tekstikappaleen vasemman ja oikean + sisennyksen toteutus \ymparisto{list}\-/ ympäristön avulla. + Esimerkkikoodi määrittelee uuden ympäristön nimeltä + \ymparistox{lohkolainaus}} + \label{esim/vasen-oikea-sisennys} +\end{esimerkki*} + +Esimerkistä \ref{esim/vasen-oikea-sisennys} selviää, kuinka +\ymparisto{list}\-/ ympäristöä voi käyttää sisennyksen toteuttamiseen. +Esimerkki määrittelee uuden ympäristön nimeltä +\ymparistox{lohkolainaus}, jota voi hyödyntää myöhemmin dokumentissa. + +\begin{koodilohkosis} +\begin{lohkolainaus} + Tämä tekstikappale on sisennetty vasemmalta ja oikealta. Lisäksi + kirjainleikkaus on hieman pienempi (\small) kuin leipätekstissä. +\end{lohkolainaus} +\end{koodilohkosis} + +\noindent +Omien ympäristöjen määrittelyä käsitellään tarkemmin luvussa +\ref{luku/ympäristöt}. Esimerkin \ref{esim/vasen-oikea-sisennys} rivillä +11 oleva \komento{item}\-/ komento on pakollinen, koska se aloittaa +\ymparisto{list}\-/ ympäristöön kuuluvan luetelman kohdan. Sen perässä +olevat komennot \komento{linespread} ja \komento{small} sen sijaan ovat +vapaaehtoisia. Ne ovat mukana siksi, että on varsin tavallista latoa +lohkolainaukset pienemmällä rivivälillä (rivikorkeudella) ja pienemmällä +kirjainleikkauksella kuin leipäteksti. + +\subsection{Rivinvaihtokomennot} +\label{luku/rivinvaihtokomennot} + +Latex\-/lähdedokumentissa olevat rivinvaihdot tulkitaan sanaväleiksi +siinä missä välilyönnitkin, eli ne rivinvaihdot eivät päädy ladottuun +dokumenttiin (luvut \ref{luku/sanaväli} ja +\ref{luku/rivinvaihtomerkit}). Sen sijaan ladottuun dokumenttiin saadaan +rivinvaihto käyttämällä komentoa \komentom{\keno} eli kaksi kenoviivaa. +Komennon ei tarvitse sijaita lähdedokumentissa rivin lopussa. + +\komentoi{\keno} +\begin{koodilohkosis} +ensimmäinen \\ toinen \\ +kolmas +\end{koodilohkosis} + +\begin{tulossis} + ensimmäinen \\* toinen \\* kolmas +\end{tulossis} + +\noindent +Rivinvaihtokomennolle voi antaa hakasulkeissa valinnaisen argumentin, +joka ilmaisee rivien väliin ladottavan ylimääräisen pystysuuntaisen +tilan. Argumentin on siis oltava mitta (luku \ref{luku/mitat}). + +\komentoi{\keno} +\begin{koodilohkosis} +ensimmäinen \\ toinen \\[1.3ex] kolmas +\end{koodilohkosis} + +\begin{tulossis} + ensimmäinen \\* toinen \\*[1.3ex] kolmas +\end{tulossis} + +\noindent +Komennosta on olemassa tähtiversio \komentom{\keno *}, joka edellisten +ominaisuuksien lisäksi estää sivun vaihtumisen tämän rivinvaihdon +kohdalla. Myös tähtiversiolle voi antaa valinnaiseksi argumentiksi +mitan. Sen merkitys on sama kuin komennon normaalilla versiollakin. + +Rivin voi vaihtaa myös komennolla \komentom{newline}, mutta tämä komento +ei hyväksy valinnaista argumenttia eikä siitä ole tähdellistä versiota. +Komennot \komento{newline} ja \komento{\keno} käyttäytyvät eri tavoin +taulukoissa, joita käsitellään luvussa \ref{luku/taulukot}. + +\subsection{Lesket ja orvot} + +Leski- ja orporivit tarkoittavat typografiassa rumannäköisiä yksinäisiä +rivejä. Leskirivi (\englanti{widow}) on tekstikappaleen viimeinen rivi, +joka on yksinään sivun tai palstan yläreunassa. Orporivi +(\englanti{orphan}) puolestaan on tekstikappaleen ensimmäinen rivi, joka +on yksin sivun tai palstan alareunassa. Molemmat voivat näyttää +ikävältä, mutta yleensä orporivejä ei pidetä kovin vakavana virheenä; +leskien välttämisessä ollaan enemmän tosissaan. + +Ulkoasun lisäksi lesket ja orvot voivat olla ikäviä myös lukemisen +kannalta. Kun tekstikappale vaihtuu, lukija pitää pienen tauon ja +valmistautuu uuteen kappaleeseen. Sivun tai palstan olisi sopivaa +vaihtua samassa kohdassa eli tekstikappaleiden välissä, mutta leski- ja +orporivit aiheuttavat kaksi taukoa melkein peräkkäin: sekä kappaleiden +välissä että sivun tai palstan vaihtumisen kohdalla. + +Latexissa leski- tai orporivit lienee käytännöllisintä estää +\pakettictan{nowidow}\-/ paketin avulla. Paketin lataamisen jälkeen +käytetään komentoa \komentom{setnowidow}, joka estää leskirivit eli +pitää tekstikappaleen lopusta vähintään kaksi riviä yhdessä sivun tai +palstan yläreunassa. Komennolle voi antaa hakasulkeissa valinnaisen +argumentin (kokonaisluvun), joka ilmaisee, kuinka monta riviä täytyy +vähintään pysyä yhdessä. Vastaavasti orporivit estetään komennolla +\komentom{setnoclub}, joka toimii samalla tavalla. Molemmat komennot +vaikuttavat koko dokumenttiin eli kaikkiin tekstikappaleisiin. + +\komentoi{usepackage} +\pakettii{nowidow} +\komentoi{setnowidow} +\komentoi{setnoclub} +\begin{koodilohkosis} +\usepackage{nowidow} +\setnowidow % leskirivien esto +\setnoclub % orporivien esto +\end{koodilohkosis} + +\noindent +Paketti \paketti{nowidow} määrittelee myös komennot \komentom{nowidow} +ja \komentom{noclub}, joilla voi vaikuttaa yksittäisen tekstikappaleen +leski- ja orporiveihin. Nämä komennot täytyy sijoittaa tekstikappaleen +loppuun, ja myös niille voi antaa hakasulkeissa valinnaiseksi +argumentiksi luvun, joka kertoo yhdessä pidettävien rivien määrän. + +Jos ei halua tai voi käyttää \paketti{nowidow}\-/pakettia, voi leski- ja +orporivit estää myös Texin matalan tason toimintojen avulla. +Ladonta\-/algoritmi käyttää leski- ja orporiveissä sisäisesti +haitallisuusarvoa tai sakkoarvoa (\englanti{penalty}), ja jos lesket ja +orvot halutaan estää, määritellään niiden haitallisuusarvo +mahdollisimman korkeaksi. Käytännössä arvo 10\,000 tarkoittaa samaa kuin +ääretön, eli silloin lesken tai orvon haitallisuus on niin suuri, että +sellaisia ei sallita. + +\komentoi{widowpenalty} +\komentoi{clubpenalty} +\begin{koodilohkosis} +\widowpenalty 10000 % leskirivien esto +\clubpenalty 10000 % orporivien esto +\end{koodilohkosis} + +\noindent +Leskien ja orpojen haitallisuusarvoiksi voi kokeilla hieman pienempiäkin +lukuja. Silloin leski- tai orporivit voidaan sallia joissakin +tilanteissa, jos ladonta\-/algoritmi ei löydä parempaakaan ratkaisua. + +Orvoksi kutsutaan myös tavua, joka jää yksin kappaleen viimeiselle +riville. Se on häiritsevän näköinen ainakin silloin, kun tavu on +kapeampi kuin seuraavan kappaleen ensimmäisen rivin sisennys. +Orpotavujen estämiseen ei taida olla automaattisia keinoja, mutta +kappaleen sanamäärää ja sanajärjestystä muuttamalla voi tietenkin +vaikuttaa rivien latomiseen. Kappaleen viimeiseen sanaan voi kirjoittaa +myös tavutusvihjeitä (\komento{-}) mutta jättää vihje pois ennen +viimeistä tavua. Näin estetään lyhyen orpotavun muodostuminen. +Tavutusvihjeitä ja muita tavutuksen asetuksia käsitellään +luvussa~\ref{luku/tavutus}. + +\subsection{Marginaalihuomautukset} +\label{luku/marginaalihuomautukset} + +Klassisessa kirjatypografiassa -- jota tämäkin opas suunnilleen +noudattaa -- on aukeaman ulkoreunoissa melko suuret marginaalit. Niitä +voidaan käyttää eräänlaisina apupalstoina, joihin voi kirjoittaa +lyhyehköjä huomautuksia ja lisätietoa. + +Marginaalihuomautukset tehdään komennolla \komentom{marginpar}, jonka +argumentiksi annetaan marginaaliin tuleva teksti. Marginaalin teksti +ladotaan vasempaan tai oikeaan marginaaliin riippuen siitä, kumpi on +aukeaman ulkoreunassa. Yksipuolisilla sivuilla teksti ladotaan +oletuksena oikeaan marginaaliin. Mikäli sivu on kaksipalstaisessa +tilassa (luku \ref{luku/palstat}), marginaalihuomautus ladotaan +lähempänä olevaan marginaaliin. + +\komentoi{marginpar} +\begin{koodilohkosis} +Tämä on leipätekstin tekstikappale, +\marginpar{Tämä ladotaan marginaaliin.} +joka ladotaan sivun normaalille tekstialueelle. +\end{koodilohkosis} + +% Miten valinnainen argumentti toimii? \marginpar[left]{right} + +\noindent +Yleensä marginaalihuomautukset ladotaan erilaisella kirjainleikkauksella +kuin leipäteksti, jotta ne erottuvat toisistaan. Jos leipätekstissä +käytetään antiikvaa, voisi marginaalissa käyttää esimerkiksi pienempää +groteskia. Tämän toteutusta varten kannattaa määritellä uusi komento, +vaikkapa nimellä \komentox{huomautus}, jota käyttämällä +marginaalihuomautukset saa helposti yhdenmukaiseksi. Seuraavassa on +esimerkki tällaisen komennon määrittelystä: + +\komentoi{newcommand} +\komentoi{marginpar} +\komentoi{sffamily} +\komentoi{scriptsize} +\komentoi{RaggedRight} +\begin{koodilohkosis} +\newcommand{\huomautus}[1]{% + \marginpar{\sffamily\scriptsize\RaggedRight #1}} +\end{koodilohkosis} + +\noindent +Omien komentojen määrittelyä käsitellään tarkemmin luvussa +\ref{luku/komennot} ja fonttiasetuksia luvussa~\ref{luku/kirjaintyypit}. +Edellä olevassa komennon määrittelyssä on mukana myös palstan muotoon +vaikuttava komento \komento{RaggedRight}, josta on lisätietoa luvussa +\ref{luku/kappaleen-tasaus}. + +Tämän \marginpar{\sffamily \linespread{1} \scriptsize \RaggedRight Tässä + on pienellä groteskilla ladottu huomautus.} tekstikappaleen vieressä +on esimerkki edellä mainitun tyylisestä marginaalihuomautuksesta. +Kirjainleikkauksen on syytä olla selvästi pienempi ja riittävän +erilainen kuin leipätekstissä, jotta huomautus ei häiritse liikaa +leipätekstin lukemista. \noclub[3] + +Sivun marginaalissa olevan huomautuspalstan leveys voidaan määrittää +sivun asetusten yhteydessä. Asetuksia hoitavan \paketti{geometry}\-/ +paketin valitsimella \koodi{marginparwidth} asetetaan palstan leveys ja +valitsimella \koodi{marginparsep} palstan etäisyys leipätekstistä. +Valitsimella \koodi{reversemarginpar} siirretään marginaalihuomautukset +päinvastaiseen marginaaliin. Näitä ja muitakin sivun asetuksia +käsitellään luvussa~\ref{luku/sivuasetukset}. + +Asetuksia voi muuttaa myös kesken dokumentin. Mitta +\mitta{marginparwidth} määrittää marginaalihuomautuspalstan leveyden ja +mitta \mitta{marginparsep} sen etäisyyden leipätekstistä. Lisäksi on +mitta \mitta{marginparpush}, jolla asetetaan peräkkäisten +marginaalihuomautusten vähimmäisetäisyys toisistaan. Seuraavassa on +esimerkki näiden mittojen asettamisesta: + +\komentoi{setlength} +\mittai{marginparwidth} +\mittai{marginparsep} +\mittai{marginparpush} +\begin{koodilohkosis} +\setlength{\marginparwidth}{50bp} +\setlength{\marginparsep}{10bp} +\setlength{\marginparpush}{6bp} +\end{koodilohkosis} + +\noindent +Kesken dokumentin komennolla \komentom{reversemarginpar} voidaan vaihtaa +marginaalihuomautukset vastakkaiseen marginaaliin ja komennolla +\komentom{normalmarginpar} palautetaan oletusasetukset. + +\subsection{Anfangit eli suurikokoiset alkukirjaimet} + +\lettrine[lines=3, loversize=.06, lhang=.02, findent=-5bp, nindent=4bp, +slope=4bp]{A}{nfangit} ovat suurikokoisia tekstin alkukirjaimia. +Tyypillisesti kirjaimen korkeus on kahdesta viiteen riviä ja se +upotetaan kappaleen sisään, mutta joskus se sijoitetaan kokonaan +marginaalin puolelle tai yltää normaalin tekstirivin yläpuolelle. +Anfangikirjain voidaan latoa erilaisella kirjainleikkauksella kuin +leipäteksti. Esimerkiksi vanhassa ja vanhantyylisessä typografiassa +anfangiin voi sopia erityisen koristeellinen kirjain. + +\smallskip + +\lettrine[lines=2, lhang=1, nindent=0bp]{E\hspace{1.5bp}}{dellä + olevaan}, tähän ja seuraavaan tekstikappaleeseen anfangit sopivat +huonosti, eikä niitä tavallisesti käytetä kirjan alalukujen alussa eikä +väliotsikon jälkeen. Tässä ne ovatkin vain esimerkin vuoksi. Anfangien +käytön varsinainen tarkoitus on osoittaa tekstin alkamiskohta +esimerkiksi artikkelin alussa tai kirjan päälukujen alussa. Varsinkin +aikakauslehden artikkelit sisältävät monenlaisia visuaalisia elementtejä +kuten pää- ja alaotsikon, erillisen johdantokappaleen eli ingressin, +kuvia ja tietolaatikoita. Anfangin avulla katse löytää artikkelin alun +helposti. + +\lettrine[lines=1, loversize=.1, lhang=.02, findent=1.5bp]{K}{appaleen + aloittava sana} tai pidempikin ilmaus ladotaan joskus lihavoidulla +kirjainleikkauksella tai pienversaalilla, kuten näissä esimerkeissä on +tehty. Tällainen kappaleen aloitus voi toimia hieman otsikon tavoin tai +sitten muuten vain ilmaisee uuden luvun alkamista. + +Latexissa anfangien tekemistä varten on paketti \pakettictan{lettrine}, +joka tarjoaa käyttöön samannimisen komennon. Jokainen anfangi on +erilainen, ja siksi \komentom{lettrine}\-/ komentokin sisältää useita +asetuksia anfangin ulkoasun hienosäätöön. Komentoa käytetään seuraavalla +tavalla: + +\komentoi{lettrine} +\begin{koodilohkosis} +\lettrine[lines=3, loversize=.06, lhang=.02, findent=-5bp, + nindent=4bp, slope=4bp]{A}{nfangi} aloittaa tämän tekstikappaleen. +\end{koodilohkosis} + +\noindent +Edellä oleva esimerkki tekee kolmerivisen upotetun A\-/anfangin, jonka +perässä oleva sanan osa ''nfangi'' ladotaan pienversaalilla. +Valitsimella \koodi{lover\-size} kasvatetaan hieman anfangikirjaimen +kokoa, ja \koodi{lhang}\-/ valitsimella siirretään kirjainta hieman +vasemmalle marginaalin puolelle. Valitsin \koodi{findent} määrittää +anfangikirjaimen rinnalla olevien rivien sisennyksen määrän suhteessa +kirjaimeen. \koodi{nindent} määrittää toisen ja sitä seuraavien rivien +sisennyksen suhteessa ensimmäiseen riviin, ja \koodi{slope} määrittää +sisennysportaan, joka kertautuu joka rivillä kolmannesta rivistä alkaen. +Näillä asetuksilla saadaan A\-/kirjaimen viistoa reunaa mukailevat +rivien alut. + +Ennen \paketti{lettrine}\-/paketin käyttämistä kannattaa lukea paketin +ohjekirjasta tietoa \komento{lettrine}\-/ komennon valitsimista ja myös +teknisistä rajoituksista. Anfangit eivät toimi Latexissa teknisesti joka +paikassa -- ja typografisesti vielä harvemmassa. + +\section{Tekstin korostaminen} +\label{luku/korostus} + +Tekstin yksittäisten sanojen korostukset toteutetaan tavallisimmin +siten, että käytetään leipätekstin kirjainperheestä jotakin poikkeavaa +kirjainleikkausta, esimerkiksi \textit{kursiivia}, +\textsl{kallistettua}, \textbf{lihavoitua} tai \textsc{pienversaalia}. +Joskus vaihdetaan koko kirjainperhe toiseksi, esimerkiksi ladotaan +\textrm{antiikvan} sekaan \textsf{groteskia} tai \texttt{tasalevyistä}. + +Korostukset siis liittyvät läheisesti fonttien valintaan ja asetuksiin, +ja siksi korostusten teknistä toteuttamista ja Latex\-/komentoja +käsitellään pääasiassa fonttien yhteydessä luvussa +\ref{luku/fontit-korkea}. Siellä muun muassa neuvotaan, kuinka +kirjainperheet ja niiden eri kirjainleikkaukset valitaan. Sen sijaan nyt +käsillä olevassa luvussa keskitytään tekstin korostamisen typografisiin +käytäntöihin ja suosituksiin. Joitakin uusia komentojakin esitellään. + +Tekstissä sanoja korostetaan siksi, että halutaan niiden erottuvan +ympäristöstään. Tärkeän avainsanan pitää ehkä erottua tekstipalstasta +niin, että sen huomaa nopeasti tekstiä silmäilemällä. Se voi helpottaa +tiedon löytämistä. + +Sanoja tai ilmauksia korostetaan toisinaan myös siksi, että ne eivät ole +kielen sanoja tavallisessa merkityksessään vaan lainauksia kielestä tai +toisesta tekstityypistä. Ihmiskieltä käsittelevissä teksteissä on +tavallista kursivoida sanat silloin, kun viitataan itse sanoihin eikä +varsinaisesti käytetä kyseisiä sanoja. Sanoihin ja muuhun kieliainekseen +viitatessa voi tosin käyttää myös lainausmerkkejä. Tietotekniikan +koodikielen esimerkit ladotaan usein leipätekstistä poikkeavalla +fontilla, jotta käy selväksi, että kyse on koodikielisestä lainauksesta. +Tällöin hyvin tavallista on tasalevyisen fontin käyttö, koska se +jäljittelee tekstieditorien ja komentotulkkia suorittavien +pääteohjelmien fonttia. + +Sopivan korostustavan valinnassa on olennaista saavuttaa riittävä +kontrasti ympäröivään tekstiin. Liian lievä muutos ei erotu; toisaalta +liian räikeä muutos voi olla häiritsevä. Yhteensopivat korostuskeinot +saadaankin lähes aina saman kirjainperheen sisältä, eri leikkauksia +käyttämällä. + +\subsection{Kursiivi, kallistus ja lihavointi} +\label{luku/peruskorostukset} + +Antiikvatyyppisen kirjainleikkauksen korostamiseen sopii yleensä +parhaiten saman perheen \textit{kursiivi} (\komentom{textit}). +Lihavointi toimii huonommin antiikvan kanssa, koska pelkkä merkkien +viivojen vahvistaminen ei tuo riittävää kontrastia. + +\begin{tulossis} + \rmfamily Antiikvaperheen \textit{kursiivileikkaus} tuo yleensä + voimakkaan muotokontrastin ja on tyylillisesti yhteensopiva + korostuskeino. Sen sijaan \textbf{lihavointi} erottuu antiikvassa + huonommin. +\end{tulossis} + +\noindent +\textbf{Lihavointi} (\komentom{textbf}) toimii huomattavasti paremmin +groteskityyppisen kirjainperheen kanssa, koska lihavoitu leikkaus on +usein selvästi vahvempi normaaliin verrattuna. Groteskin kursiivi sen +sijaan ei monesti edes ole varsinainen kursiivileikkaus vaan pelkkä +lievä kallistus (\komentom{textsl}). Sellainen ei välttämättä tuo +riittävää muotokontrastia.\footnote{Joissakin niin sanotuissa + humanistisissa groteskiperheissä on mukana ihan käyttökelpoinen ja + selvästi erottuva kursiivileikkaus.} + +\begin{tulossis} + \sffamily Groteskia on tavallista korostaa \textbf{lihavoinnilla} eli + leikkauksella, joka on selvästi tavallista vahvempi. Sen sijaan + \textit{kursiivi} tai \textsl{kallistus} ei kaikissa groteskiperheissä + erotu riittävästi. +\end{tulossis} + +\noindent +Joissakin kirjainperheissä on mukana useita erivahvuisia leikkauksia. +Silloin täytyy valita käyttöön riittävästi toisistaan poikkeavat +vahvuudet. Esimerkiksi kaksi vierekkäistä vahvuutta eivät välttämättä +poikkea toisistaan riittävästi, eikä selvää vahvuuskontrastia synny. + +Mikäli leipätekstissä käytetään sulkeita ja niiden sisällä kursivoitua +ilmausta (\textit{kuten tässä}), ei itse suljemerkkejä pidä kursivoida, +koska ne kuuluvat ulompaan tekstiin. Jos sulkeiden ulkopuolellakin on +voimassa kursivointi, voi itse sulkeetkin kursivoida. + +Latexissa kursiivin voi toteuttaa myös komennolla \komentom{emph}, joka +huomioi ympärillä olevan korostustilan. Tavallisesti komento kursivoi +argumentiksi annetun tekstin, mutta jos kursivointi on jo päällä +komennon ympärillä, se latookin argumentiksi annetun tekstin +tavallisella pystyasentoisella kirjainleikkauksella. Komennon ajatuksena +on, että voidaan samalla komennolla korostaa sekä pystyasentoisen +tekstin että kursiivin keskellä, eikä tarvitse välittää tai tietää, +kumpi leikkaus on voimassa. + +\komentoi{emph} +\begin{koodilohkosis} +tavallinen \emph{korostettu} tavallinen \\ +\emph{korostettu \emph{kaksoiskorostettu} korostettu} +\end{koodilohkosis} + +\begin{tulossis} + tavallinen \emph{korostettu} tavallinen \\ + \emph{korostettu \emph{kaksoiskorostettu} korostettu} +\end{tulossis} + +\subsection{Pienversaali eli kapiteeli} +\label{luku/korostus-pienversaali} + +Melko rauhallinen typografinen keino on \textsc{pienversaali} eli +kapiteeli (\komentom{textsc}), jonka kirjaimet näyttävät +versaalikirjaimilta mutta ovat suunnilleen gemenakirjainten eli pienten +kirjainten korkuisia. Pienversaali on fonttiin sisältyvä erillinen +kirjainmuotoilijan piirtämä leikkaus, eli se ei ole tietokoneen +mekaanisesti pienentämä versio versaalikirjaimista. Jos fonttiin ei +sisälly pienversaalia ja sellaisen silti haluaa omaan +keinovalikoimaansa, voi yrittää vähemmän tyylikästä mekaanista +toteutusta luvussa \ref{luku/fontit-keinopienversaali} kerrotuilla +asetuksilla. Luvuissa \ref{luku/fontit-välistys} ja +\ref{luku/korostus-harvennus} puolestaan käsitellään merkkivälien +{\scshape\addfontfeatures{LetterSpace=6} harvennusta}, joka voi +maltillisesti käytettynä sopia pienversaaleihin. + +Korostustarkoituksessa pienversaalia käytetään esimerkiksi pienissä +väliotsikoissa, koska sen avulla syntyy selvä muotokontrasti +leipätekstin kanssa. Toisinaan tekstikappaleen ensimmäisiä sanoja +ladotaan pienversaalilla, jolloin se toimii otsikon kaltaisessa +tehtävässä. Myös kirjallisuus\-/{} ja lähdeluetteloissa käytetään +välillä pienversaalia tekijöiden nimissä, koska se helpottaa nimen +mukaan aakkostetun luettelon silmäilyä. + +Pienversaalia käytetään toisinaan versaalikirjainten sijasta. Silloin +tarkoituksena ei ole tekstin korostamiseen vaan päinvastoin häiritsevän +korostuksen välttäminen. Esimerkiksi versaalikirjaimiset lyhenteet (SPR, +HTML) voivat paljon käytettynä erottua leipätekstistä ikävän selvästi, +eikä tekstipalsta näytä tasaiselta. Pienversaalit sulautuvat muuhun +tekstiin paremmin (\textsc{spr}, \textsc{html}). + +Typografisesta estetiikasta juontuu sekin, että pienversaali on sopiva +pari gemenanumeroiden kanssa erilaisiin teknisiin koodeihin ja muihin +ilmauksiin, jotka koostuvat kirjaimista ja numeroista. Sen sijaan +versaalikirjaimia ja gemenanumeroita ei sovi käyttää yhdessä, koska +merkkien kokoero on häiritsevän suuri. Kuten seuraavista esimerkeistä +näkyy, versaalit ovat joskus miltei kaksinkertaisia gemenanumeroihin +verrattuna, ja muutenkin gemenanumerot asettuvat keskimäärin eri +korkeustasolle. + +\begin{tulossis} + \begin{tabular}[t]{@{}lll} + Väärin: + & {\gemenanum ISO-8859-1} + & {\gemenanum 2012 a.D.} \\[1ex] + Oikein: + & {\gemenanum\scshape iso-8859-1} + & {\gemenanum\scshape 2012 a.d.} \\[1ex] + Oikein: + & {\versaalinum ISO-8859-1} + & {\versaalinum 2012 A.D.} \\ + \end{tabular} +\end{tulossis} + +\noindent +Fontin näkökulmasta gemenanumerot ovat erillinen ominaisuus, jonka +fontin suunnittelija on toteuttanut. Ominaisuuden käyttöönottoa ja muita +numeroihin liittyviä fonttiasetuksia käsitellään luvussa +\ref{luku/fontit-numerot}. + +\subsection{Alleviivaus ja yliviivaus} + +Alleviivaus on käsin kirjoitetun tekstin ja mekaanisten +kirjoituskoneiden korostuskeino, mutta nykyajan typografiaan se ei +oikeastaan sovi. Alleviivaus nimittäin vaikeuttaa kirjainhahmojen +tunnistamista ja hidastaa lukemista. Parempia korostuskeinoja ovat +esimerkiksi kursiivi ja lihavointi. Alleviivaus voi kuitenkin joskus +olla kätevä keino ohjata lukijan huomio tiettyyn kohtaan esimerkiksi +pidemmässä esimerkkitekstissä. + +Latexin oma alleviivauskomento \komentom{underline} piirtää viivan +tekstin tai muun argumentiksi annetun sisällön alapuolelle. Komennon +huono puoli on, että erilliset alleviivaukset eivät välttämättä osu +samalle korkeudelle. Seuraavassa esimerkissä toisen sanan alleviivaus on +alempana j- ja y\=/kirjainten alapidennyksen vuoksi. + +\komentoi{underline} +\begin{koodilohkosis} +\underline{kone}, \underline{öljy} +\end{koodilohkosis} + +\begin{tulossis} + \underline{kone}, \underline{öljy} +\end{tulossis} + +\noindent +Toinen \komento{underline}\-/ komennon ongelma on, että se estää sanojen +tavuttamisen ja muutenkin tekstin katkaisemisen rivin lopussa. Komennon +argumentiksi annettua tekstiä ei katkaista edes sanavälien kohdalta. +Komennon hyvä puoli on, että se toimii myös matematiikkatilassa +(luku~\ref{luku/matematiikka}). + +Käytännössä alleviivaukset on parempi toteuttaa esimerkiksi paketin +\pakettictan{ulem} avulla. Tavallisen alleviivauksen lisäksi se sisältää +kaksoisalleviivauksen, aaltoviivat, pisteviivat ja erilaisia +ylikirjoitusmerkintöjä. Taulukkoon \ref{tlk/ulem} on koottu paketin +sisältämiä komentoja. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\komento{#1} & #2} + % \setlength{\ULdepth}{.2ex} + \begin{tabular}{llll} + \toprule + \ots{Komento} + & \ots{Merkitys} & \ots{Komento} & \ots{Merkitys} \\ + \cmidrule(r){1-2} + \cmidrule(l){3-4} + \rivi{uline}{\uline{alleviivaus}} + & \rivi{uuline}{\uuline{kaksoisalleviivaus}} \\ + \rivi{uwave}{\uwave{aaltoviiva}} + & \rivi{sout}{\sout{yliviivaus}} \\ + \rivi{dashuline}{\dashuline{katkoviiva}} + & \rivi{xout}{\xout{poisto}} \\ + \rivi{dotuline}{\dotuline{pisteviiva}} \\ + \bottomrule + \end{tabular} +}{ + \caption{Alleviivaus- ja ylikirjoitusmerkintöjä \paketti{ulem}\-/ + paketin komentojen avulla} + \label{tlk/ulem} +} + +Oletuksena \paketti{ulem}\-/ paketti määrittelee Latexin +\komento{emph}\-/ korostuskomennon (luku \ref{luku/peruskorostukset}) +uudelleen siten, että komento tuottaa kursiivin sijasta alleviivattua +tekstiä. Ajatuksena lienee se, että paketin avulla voi helposti muuttaa +typografisen peruskorostusten eli kursiivin tilalle kirjoituskoneen +korostustavan eli alleviivauksen. Käytännössä tällaista tuskin halutaan +koskaan, ja onneksi paketin lataamisen yhteydessä voi käyttää valitsinta +\koodi{nor\-mal\-em}, joka estää Latexin komentojen uudelleen +määrittelyn. + +\pakettii{ulem} +\komentoi{usepackage} +\begin{koodilohkosis} +\usepackage[normalem]{ulem} +\end{koodilohkosis} + +\noindent +Paketin \paketti{ulem} myötä on käytettävissä mitta \mitta{ULdepth}, +joka on alleviivauksen etäisyys tekstin peruslinjasta. Mitta asetetaan +\komento{setlength}\-/ komennolla (luku \ref{luku/mitat}). Viivan +paksuus puolestaan sisältyy komennon \komento{ULthickness} määritelmään, +ja komennon voi halutessaan määritellä uudestaan. Seuraavassa on näistä +esimerkki: + +\komentoi{setlength} +\mittai{ULdepth} +\komentoi{renewcommand} +\komentoi{ULthickness} +\komentoi{uline} +\begin{koodilohkosis} +\setlength{\ULdepth}{.2ex} % viivan etäisyys +\renewcommand{\ULthickness}{.1ex} % viivan paksuus +\uline{kone}, \uline{öljy} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\ULdepth}{.2ex} + \renewcommand{\ULthickness}{.1ex} + \uline{kone}, \uline{öljy} +\end{tulossis} + +\noindent +Toinen paketti alleviivausten ja yliviivausten tekemiseen on +\pakettictan{soul}. Se ei sisällä erikoisempia korostustapoja kuten +aalto- ja katkoviivoja, mutta viivan etäisyyden ja paksuuden +määrittämiseen on hieman kätevämmät komennot. + +Tekstin alleviivauksen lisäksi on olemassa pari komentoa, joilla saa +ladottua pelkän viivan ilman tekstiä. Komento \komento{hrulefill} latoo +kaiken tilan täyttävän alaviivan ja komento \komento{dotfill} kaiken +tilan täyttävän pisteviivan. Myös \komento{rule}\-/ komento voi soveltua +alaviivojen toteuttamiseen. Komentoa käsitellään erikoismerkkien +yhteydessä luvussa \ref{luku/tarkkeet}. + +\komentoi{hrulefill} +\komentoi{dotfill} +\komentoi{rule} +\begin{koodilohkosis} +abc \hrulefill\ abc \dotfill\ abc \rule[-.3ex]{5em}{.4bp} abc +\end{koodilohkosis} + +\begin{tulossis} + abc \hrulefill\ abc \dotfill\ abc \rule[-.3ex]{5em}{.4bp} abc +\end{tulossis} + +\subsection{Harvennus ja tiivistys} +\label{luku/korostus-harvennus} + +Merkkivälien harventaminen on tyyli- tai korostuskeino, joka juontuu +antiikin roomalaisten kiveen hakatuista teksteistä. Historiansa vuoksi +harvennus sopii luontevimmin antiikvan eli pääteviivallisen +kirjainperheen versaali\-/\ tai pienversaalikirjainten (luku +\ref{luku/korostus-pienversaali}) kanssa. Antiikin aikana +gemenakirjaimet eivät olleet vielä käytössä. Tässä alaluvussa +keskitytään harventamisen ja tiivistämisen typografiaan; teknisiä +ohjeita on luvussa \ref{luku/fontit-välistys}. + +\komentoi{large} +\komentoi{addfontfeatures} +\begin{koodilohkosis} +\large TAVALLINEN \\ +{\addfontfeatures{LetterSpace=10} KLASSINEN HARVENNUS} +\end{koodilohkosis} + +\begin{tulossis} + \large + TAVALLINEN \\ + {\addfontfeatures{LetterSpace=10} KLASSINEN HARVENNUS} +\end{tulossis} + +\noindent +Klassisesti eli antiikin tyyliin harvennetut (n.~10\,\%) +versaalikirjaimet voivat sopia joihinkin otsikoihin. Sen sijaan +pienversaalit lievästi {\addfontfeatures{LetterSpace=6} + \textsc{harvennettuna}} (esim.~6\,\%) voivat olla tyylikäs +tehostuskeino leipätekstiin. + +Edellisiä esimerkkejä suurempi harvennus on huomiota herättävä +korostus\-/\ tai tehokeino, joka voi sopia yksittäisiin sanoihin +leipätekstin ulkopuolella. Jos kirjaimet ovat hyvinkin kaukana +toisistaan, täytyy sanan ympärillä olla runsaasti tyhjää tilaa, jotta +sanahahmo pysyy visuaalisesti koossa. + +\komentoi{sffamily} +\komentoi{bfseries} +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\sffamily\bfseries\addfontfeatures{LetterSpace=40} SEIS!} +\end{koodilohkosis} + +\begin{tulossis} + {\sffamily\bfseries\addfontfeatures{LetterSpace=40} SEIS!} +\end{tulossis} + +\noindent +Merkkivälien tiivistäminen on joskus tarpeen suurikokoisissa otsikoissa. +Fontin merkkivälit on ehkä suunniteltu ensisijaisesti pienten kokojen +ehdoilla, ja siksi reilusti suuremmilla fonttiko'oilla välit voivat olla +häiritsevän suuria. Erityisesti tämä pätee groteskiin eli +pääteviivattomaan kirjainperheeseen, kuten kuva +\ref{kuva/otsikon-tiivistys} osoittaa. Antiikvat eivät yleensä siedä +tiivistämistä, koska kirjainten pääteviivat asettuvat helposti +päällekkäin. + +\leijukuva{ + \sffamily\fontsize{50bp}{50bp}\selectfont + Tavallinen \\ + \addfontfeatures{LetterSpace=-5} Tiivistetty +}{ + \caption{Otsikoiden merkkivälien tiivistäminen voi olla tarpeen + suurikokoisen groteskin kanssa -- varsinkin jos lihavointi ei ole + käytössä} + \label{kuva/otsikon-tiivistys} +} + +\subsection{Tietokonekoodi ja tasalevyinen kirjainperhe} + +Tietokonekoodi tai muu vastaava tekninen, koneelle syötettävä tai koneen +tulostama koodi on tapana esittää \texttt{tasalevyisellä} fontilla. +Kyseessä on ikään kuin lainaus toisenlaisesta tekstityypistä, joka ei +ole luonnollista kieltä lainkaan. + +Tasalevyinen kirjainperhe määritellään fonttiasetusten yhteydessä (luku +\ref{luku/fontin-valinta}) ja valitaan käyttöön esimerkiksi komennolla +\komentom{texttt}. Tasalevyisellä fontilla ladottava teksti on +tavallisesti tietokonekoodia, joten sille on asetettu hieman +toisenlaiset oletusasetukset kuin muille kirjainperheille. Oletuksena +tekstiä ei tavuteta, ja esimerkiksi \komento{texttt}\-/ komennon +argumentiksi annettu teksti katkaistaan vain sanavälien ja yhdysmerkkien +kohdalta. Myös niin sanotut Tex\-/ligatuurit (esim. \koodi{''} +ja~\koodi{--}) on kytketty pois päältä. Fonttien oletusasetuksia ja +niiden muuttamista käsitellään luvussa +\ref{luku/fontit-oletusasetukset}. Tex\-/ligatuureja eli Texin +merkintätapoja lainausmerkeille ja ajatusviivoille käsitellään luvuissa +\ref{luku/lainausmerkit} ja \ref{luku/yhdys-ajatus-miinus}. + +Toinen vaihtoehto tasalevyisen tekstin tuottamiseen on +\komentom{verb}\-/ komento. Komennon nimi on lyhennetty englannin kielen +sanasta \englantik{verbatim}, joka tarkoittaa 'kirjaimellisesti' tai +'sananmukaisesti'. Niin se juuri toimiikin, eli \keno{verb}\-/ +komennolle annettu argumentti tulkitaan kirjaimellisesti. +Tex\-/järjestelmän omat merkintätavat kuten kenoviivalla (\koodi{\keno}) +alkavat komennot eivät toimi tämän komennon argumentissa. + +\komento{verb}\-/ komennon argumentti täytyy ilmaista tavallisesta +poikkeavalla tavalla. Välittömästi komennon nimen jälkeen tuleva merkki +on oleva argumentin aloitus- ja lopetusmerkki. Niiden välissä oleva +teksti tulkitaan kirjaimellisesti ja ladotaan tasalevyisellä +kirjainperheellä. Seuraavassa on tästä kaksi esimerkkiä: + +\komentoi{verb} +\begin{koodilohkosis} +\verb.tasalevyinen. % aloitus- ja lopetusmerkkinä piste +\verb|tasalevyinen| % aloitus- ja lopetusmerkkinä pystyviiva +\end{koodilohkosis} + +\begin{tulossis} + \verb.tasalevyinen. + \verb|tasalevyinen| +\end{tulossis} + +\noindent +Yksittäisiä sanoja pidempien tietokonekoodien latomiseen on olemassa +\ymparistom{verbatim}\-/ ympäristö, jonka sisällä kaikki teksti +tulkitaan kirjaimellisesti -- myös välilyönnit ja rivinvaihdot. + +\ymparistoi{verbatim} +\begin{koodilohkosis} +\begin{verbatim} +tieto- kone- + koodia +\end{verbatim} +\end{koodilohkosis} + +\begin{tulossis} +\begin{verbatim} +tieto- kone- + koodia +\end{verbatim} +\end{tulossis} + +\noindent +Paljon monipuolisemman ympäristön tarjoaa paketti +\pakettictan{fancyvrb}. Sen mukana tuleva \ymparistom{Verbatim}\-/ +ympäristö ymmärtää monenlaisia asetuksia, joilla vaikutetaan +tietokonekoodin latomiseen. Koodiin saa mukaan esimerkiksi rivinumerot, +tai sen voi latoa kehyksen sisään. Myös koodin sisennykseen, fontin +kokoon ja väreihin voi vaikuttaa. + +\subsection{Verkko-osoitteet} + +Verkko\-/osoitteiden eli internetin linkkien latominen voi olla +pienoinen typografinen ongelma: osoitteet ovat pitkiä, eivätkä ne +sisällä välilyöntejä, joista ne voisi luontevasti katkaista rivin +vaihtumisen kohdalla. Tavuviivojen lisääminen rivin loppuun voi olla +ongelmallista, koska kyse on teknisestä merkkijonosta, joka pitäisi +tulkita kirjaimellisesti. + +Parasta olisi latoa verkko\-/osoitteet leipäteksti ulkopuolelle, +esimerkiksi sivun alareunaan alaviitteeksi (luku +\ref{luku/alaviitteet}). Tällä tavoin pitkät ja joskus rumat osoitteet +eivät häiritse leipätekstin lukemista mutta ovat silti lukijan +saatavilla. + +Latexissa verkko\-/osoitteet kannattaa toteuttaa siihen tarkoitetun +paketin avulla. Paketti \pakettictan{hyperref} sisältää toimintoja +paitsi verkko\-/ osoitteiden latomiseen mutta myös pdf\-/tiedoston +asetusten ja ristiviitteiden hallintaan (luku \ref{luku/pdf-asetukset}). +Paketin avulla valmiin pdf\-/ tiedoston verkkolinkit toimivat, eli +pdf\-/lukijassa linkkiä napsauttamalla pitäisi avautua verkkoselain ja +linkin osoittama sivu. + +Paketin käyttämisen typografinen hyöty on se, että rivin vaihdon +kohdalle sattuvat verkko\-/ osoitteet katkaistaan automaattisesti +luontevista kohdista eli vain tiettyjen välimerkkien jälkeen. +Tavuviivoja ei lisätä rivin loppuun. Myös typografiset ligatuurit (luku +\ref{luku/typo-liga}) kytketään pois päältä. + +\paketti{hyperref}\-/paketin ohjekirja neuvoo lataamaan paketin +viimeisenä eli muiden pakettien lataamisen jälkeen, koska se +muokkaa joidenkin muualla määriteltyjen komentojen ominaisuuksia. + +\komentoi{usepackage} +\pakettii{hyperref} +\komentoi{hypersetup} +\komentoi{urlstyle} +\begin{koodilohkosis} +\usepackage{hyperref} % paketin lataaminen +\hypersetup{hidelinks} % linkeistä pois kehykset +\urlstyle{same} % linkkien fontti +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komennolla \komentom{hypersetup} vaikutetaan +paketin asetuksiin. Oletuksena esimerkiksi linkkien ympärille +ladotaan värilliset kehykset, mutta valitsin \koodi{hide\-links} poistaa +ne. Valitsimella \koodi{url\-color} voisi vaihtaa verkko\-/osoitteiden +kehyksen väriä. + +Esimerkin seuraava komento \komentom{urlstyle} määrittää, mitä +kirjainperhettä käytetään verkko\-/ osoitteiden latomiseen. Komennon +argumentti \koodi{same} tarkoittaa, että käytetään samaa kirjainperhettä +kuin ympärillä olevassa tekstissä. Tietty kiinteä kirjainperhe valitaan +\komento{urlstyle}\-/ komennon argumentilla \koodi{rm} (antiikva, +roman), \koodi{sf} (groteski, sans serif) tai \koodi{tt} (tasalevyinen). +Oletusasetus on tasalevyinen kirjainperhe. + +Verkko\-/ osoitteiden ilmaisemisen peruskomento on \komentom{href}, +jolle annetaan kaksi pakollista argumenttia: ensimmäinen on varsinainen +osoite ja toinen on dokumenttiin ladottava teksti. Linkin teksti voi +siis olla mitä hyvänsä tekstiä, ja pdf\-/ lukijassa tekstiä +napsauttamalla linkin osoittama sivusto avautuu. + +\komentoi{href} +\begin{koodilohkosis} +\href{https://www.ctan.org/}{CTAN-sivusto} +\end{koodilohkosis} + +\begin{tulossis} + \href{https://www.ctan.org/}{CTAN-sivusto} +\end{tulossis} + +\noindent +Kun halutaan latoa dokumenttiin itse verkko\-/osoite, käytetään komentoa +\komento{url}, \komentomargin{url} joka osaa katkaista osoitteet +järkevällä tavalla rivin lopussa. Komennolle annetaan vain yksi +argumentti, verkko\-/osoite. + +\komentoi{url} +\begin{koodilohkosis} +\url{https://www.ctan.org/} +\end{koodilohkosis} + +\begin{tulossis} + \url{https://www.ctan.org/} +\end{tulossis} + +\noindent +Joskus dokumenttiin voidaan tarvita verkko\-/osoite, joka ei ole +pdf\-/dokumentissa napsautettava linkki. Silloin käytetään komentoa +\komentom{nolinkurl}. Tämän komennon argumenttina oleva verkko\-/osoite +ainoastaan ladotaan osoitteiden tavoin. + +Linkkinä toimivien sähköpostiosoitteiden latominen vaatii +\komento{href}- ja \komento{nolinkurl}\-/ komentojen yhdistämistä. +Linkin alkuun täytyy lisätä sana \koodi{mailto:}, mutta tuota sanaa +tuskin halutaan näkyviin itse dokumenttiin. Niinpä sähköpostiosoite +kannattaa kirjoittaa seuraavalla tavalla: + +\komentoi{href} +\komentoi{nolinkurl} +\begin{koodilohkosis} +\href{mailto:tunnus@osoite.net}{\nolinkurl{tunnus@osoite.net}} +\end{koodilohkosis} + +\noindent +Osoite pitää siis kirjoittaa kaksi kertaa: itse linkkiä varten ja +dokumenttiin ladottavaa tekstiä varten. Omaa työtä kannattaa helpottaa +määrittelemällä sähköpostiosoitteita varten oma komento, esimerkiksi +seuraavalla tavalla: + +\komentoi{newcommand} +\komentoi{href} +\komentoi{nolinkurl} +\begin{koodilohkosis} +\newcommand{\sposti}[1]{\href{mailto:#1}{\nolinkurl{#1}}} +\end{koodilohkosis} + +\subsection{Värit} +\label{luku/korostus-värit} + +Eri värien käyttö voi sopia tekstin erilaisten osien korostamiseen. +Esimerkiksi otsikot, taulukot tai leijuvat osat saa erottumaan +selvemmin, kun niiden toteutuksessa käyttää värejä. Sen sijaan +leipätekstin sisällä värejä täytynee käyttää hillitysti, sillä värikäs +tekstipalsta näyttää rauhattomalta ja voi hidastaa lukemista. + +Latexiin saa värit \pakettictan{xcolor}\-/ paketin +avulla.\footnote{Toinen vaihtoehto on yksinkertaisempi väripaketti + \paketti{color}, joka sisältää värien käsittelyn perustoiminnot.} Se +tarjoaa muun muassa komentoja, joilla tekstin väriä, tekstin taustaväriä +tai sivun taustaväriä voi muuttaa. Lisäksi se sisältää värien +sekoittamiseen ja muuntamiseen liittyvää tekniikkaa. Paketin komentojen +avulla voi myös värittää taulukoiden (luku \ref{luku/taulukot}) rivit +vuorottelevin värein. + +Omassa dokumentissa käytettävät värit on hyvä määritellä alussa. +Määrittely tarkoittaa sitä, että annetaan väreille nimet -- esimerkiksi +käyttötarkoituksen mukaan -- ja myöhemmin lähdedokumentissa viitataan +väreihin käyttämällä alussa määriteltyjä nimiä. Näin väri on määritelty +yhdessä paikassa ja sen muuttaminen on myöhemmin helppoa. On kyllä +mahdollista käyttää värejä ilman etukäteismäärittelyäkin. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\koodi{#1} & #2 & \koodi{#3} + & \textcolor[#1]{#3}{\rule{.9em}{.9em}} \\} + \begin{tabular}{llll} + \toprule + \ots{Malli} + & \ots{Parametrit} + & \multicolumn{2}{l}{\ots{Esimerkki}} \\ + \midrule + \rivi{rgb}{punainen, vihreä, sininen}{1,.7,.3} + \rivi{HTML}{punainen, vihreä, sininen}{33aaf3} + \rivi{cmyk}{syaani, magenta, keltainen, musta}{.1,1,.5,0} + \rivi{hsb}{sävy, kylläisyys, kirkkaus}{.2,1,.6} + \rivi{gray}{harmaa}{.55} + \bottomrule + \end{tabular} +}{ + \caption{Erilaisia värimalleja ja niiden parametreja + \paketti{xcolor}\-/ paketissa} + \label{tlk/värimalleja} +} + +Omat värit määritellään komennolla \komentom{definecolor}. Se tarvitsee +kolme argumenttia: värin nimen, värimallin ja värikoodin. Komennon +argumenttien rakenteesta on seuraavassa esimerkki: + +\komentoi{definecolor} +\begin{koodilohkosis} +\definecolor{nimi}{välimalli}{parametrit} +\end{koodilohkosis} + +\noindent +Komennon argumentti \koodi{nimi} on kirjoittajan itse valitsema nimi, +ja se voi liittyä esimerkiksi värin käyttötarkoitukseen (''nuoli'') tai +värin yleiseen nimeen (''keltainen''). Argumentti \koodi{väri\-malli} +tarkoittaa värin ilmaisemisen tapaa. Niitä on useita erilaisia, mutta +yleisimmät on koottu taulukkoon \ref{tlk/värimalleja}. Eri malleilla on +eri määrä parametreja, joilla ilmaistaan värin ominaisuuksia. Kunkin +parametrin arvo on yleensä desimaaliluku 0\==1, mutta \koodi{HTML}\-/ +värimallissa parametrit ilmaistaan yhtenä kolmen kaksinumeroisen +heksadesimaaliluvun sarjana \textsc{html}\-/ merkintäkielen tavoin. +Värin parametrit kirjoitetaan komennon argumenttiin +\koodi{para\-metrit} ja ne erotetaan toisistaan pilkulla. Taulukon +\ref{tlk/värimalleja} Esimerkki\-/sarakkeessa on parametrien antamisesta +esimerkki. Muista värimalleista voi lukea \paketti{xcolor}\-/ paketin +ohjekirjasta. + +Kun värit on määritelty, niitä voi käyttää eri komentojen yhteydessä. +Tekstin väri vaihdetaan toiseksi komennolla \komentom{color}, josta on +kaksi erilaista versiota. Komento vaihtaa värin pysyvästi nykyisen +ympäristön (luku \ref{luku/ympäristöt}) tai aaltosulkeilla (luku +\ref{luku/aaltosulkeet}) rajatun alueen sisällä. + +\komentoi{color} +\begin{koodilohkosis} +\color{nimi} % väriksi ennalta määritelty ”nimi” +\color[värimalli]{parametrit} % värimallin ja parametrien avulla +\end{koodilohkosis} + +\noindent +Toinen vaihtoehto on käyttää komentoa \komentom{textcolor}, jolle +annetaan edelliseen verrattuna vielä yksi argumentti lisää. Argumenttina +on teksti, johon värin halutaan vaikuttavan. Vaikutusalueena on siis +vain kyseinen teksti. + +\komentoi{textcolor} +\begin{koodilohkosis} +\textcolor{nimi}{teksti} +\textcolor[värimalli]{parametrit}{teksti} +\end{koodilohkosis} + +\noindent +Tekstin taustaväri vaihdetaan komennoilla \komentom{colorbox} ja +\komentom{fcolorbox}. Komennot luovat ikään kuin laatikon, jonka sisällä +taustaväri on voimassa. Ensin mainittu komento vahtaa vain taustavärin, +ja jälkimäinen sisältää lisäksi värillisen kehyksen, eli sille +määritellään kaksi väriä. + +\begin{koodilohkosis} +\colorbox{nimi}{teksti} % taustaväriksi ennalta määritelty ”nimi” +\colorbox[värimalli]{parametrit}{teksti} +\fcolorbox{nimi(kehys)}{nimi(tausta)}{teksti} +\fcolorbox[värimalli]{parametrit(kehys)}{parametrit(tausta)}{teksti} +\end{koodilohkosis} + +\noindent +Kehystetyn laatikon kehysviivan leveys on mitassa \mittam{fboxrule} ja +kehyksen etäisyys sisällöstä mitassa \mitta{fboxsep}. Seuraavassa on +esimerkki useiden edellä mainittujen komentojen käytöstä. Tästä tuskin +kannattaa ottaa mallia vakavaan typografiseen työhön. + +\komentoi{colorbox} +\komentoi{color} +\komentoi{definecolor} +\komentoi{fcolorbox} +\komentoi{setlength} +\komentoi{textcolor} +\mittai{fboxrule} +\mittai{fboxsep} +\begin{koodilohkosis} +\definecolor{pun}{rgb}{1,.2,.2} +\setlength{\fboxrule}{2bp} \setlength{\fboxsep}{1bp} +\fcolorbox[gray]{.4}{.2}{\color[gray]{1}Tekstiä} +\textcolor{pun}{voi korostaa} \colorbox{pun}{väreillä}. +\end{koodilohkosis} + +\begin{tulossis} + \definecolor{pun}{rgb}{1,.2,.2} + \setlength{\fboxrule}{2bp} \setlength{\fboxsep}{1bp} + \fcolorbox[gray]{.4}{.2}{\color[gray]{1}Tekstiä} + \textcolor{pun}{voi korostaa} \colorbox{pun}{väreillä}. +\end{tulossis} + +\noindent +Sivulle voi määrittää taustavärin komennolla \komentom{pagecolor}. +Taustäväri vaihtuu nykyiselle ja seuraaville sivuille, kunnes väri +vaihdetaan toiseksi tai poistetaan. Komennolle annetaan samanlaiset +argumentit kuin muillekin värikomennoille. Komento +\komentom{nopagecolor} poistaa taustavärin kokonaan eli palauttaa +taustan oletustilaan. + +\komentoi{pagecolor} +\komentoi{nopagecolor} +\begin{koodilohkosis} +\pagecolor{nimi} % sivun taustaväriksi ennalta määritelty ”nimi” +\pagecolor[värimalli]{parametrit} +\nopagecolor +\end{koodilohkosis} + +\section{Sivunvaihdot ja sivujen tasaaminen} +\label{luku/sivunvaihdot} + +Kirjoittajan ei normaalisti tarvitse huolehtia sivun vaihtumisesta +lainkaan, vaan järjestelmä pyrkii latomaan hyvännäköisiä sivuja +automaattisesti. Välillä tietenkin halutaan aloittaa jokin uusi aihe +puhtaalta sivulta, ja sitä varten Latexissa on muutama komento. +Mainittakoon kuitenkin heti aluksi, että otsikoiden yhteyteen saa +sivunvaihdon kätevimmin keinoilla, jotka neuvotaan otsikoiden yhteydessä +luvussa \ref{luku/otsikot-ulkoasu}. + +Komento \komentom{clearpage} vaihtaa sivua, eli komennon jälkeinen +dokumentin osa alkaa aina puhtaalta sivulta. Lähes samanlainen komento +on \komentom{cleardoublepage}, joka kaksipuolisessa dokumentissa +aloittaa uuden sisällön aina parittomilta sivuilta. Jos seuraavana ei +satu olemaan pariton sivu, komento tekee väliin tyhjän sivun. Tätä +ominaisuutta on käytetty tässä oppaassa: pääluvut alkavat aina +oikeanpuoleiselta eli parittomalta sivulta. + +\komento{cleardoublepage}\-/komennon aiheuttamalle tyhjälle sivulle +saatetaan kuitenkin latoa ylä- ja alatunnisteet, jos sellaiset on +määritelty (luku \ref{luku/ylä-ala-tunnisteet}). Täysin tyhjän sivun saa +käyttämällä apuna pakettia \pakettictan{titlesec} ja sen valitsinta +\koodi{clear\-empty}: + +\komentoi{usepackage} +\pakettii{titlesec} +\begin{koodilohkosis} +\usepackage[clearempty]{titlesec} +\end{koodilohkosis} + +\noindent +Edellä mainittu \paketti{titlesec}\-/ paketti sisältää monenlaisia +toimintoja otsikoiden muotoiluun, joten sitä käsitellään tarkemmin +otsikoiden yhteydessä luvussa \ref{luku/otsikot-ulkoasu}. + +Komennoilla \komento{clearpage} ja \komento{cleardoublepage} on lisäksi +sellainen ominaisuus, että ne pakottavat aiemmin määritellyt leijuvat +osat (luku \ref{luku/leijuosat}) ladottavaksi ennen uutta puhdasta +sivua. + +Hieman toisenlainen sivunvaihtokomento on \komentom{newpage}. Se sallii +aiempien leijuvien osien latomisen myös sivunvaihdon jälkeen. +\komento{newpage} eroaa edellisistä sivuvaihtokomennoista myös siten, +että kaksipalstaisessa tilassa (luku \ref{luku/palstat}) se aloittaa +vain uuden palstan, ei välttämättä uutta sivua. + +Sivunvaihdon todennäköisyyteen tietyssä kohdassa voi vaikuttaa +komennoilla \komentom{pagebreak} ja \komentom{nopagebreak}. Kummallekin +voi antaa hakasulkeissa valinnaisen argumentin, joka on luku 0\==4. +Nolla tarkoittaa pienintä todennäköisyyttä sivunvaihdolle +(\komento{pagebreak}\komentoargv{0}) tai sen välttämiselle +(\komento{nopagebreak}\komentoargv{0}). Luku neljä (joka on oletusarvo) +tarkoittaa, että sivunvaihto pakotetaan tai estetään siinä kohdassa. +Näiden komentojen tarkoitus on kertoa ladonta\-/ algoritmille vihje, +kuinka toivottavaa sivunvaihto on tietyssä kohdassa. Jos ei käytä +suurinta arvoa neljä~(4), algoritmi voi löytää omasta mielestään +paremmankin sivunvaihtokohdan. + +\komentoi{pagebreak} +\komentoi{nopagebreak} +\begin{koodilohkosis} +\pagebreak[3] % Lisätään sivunvaihdon todennäköisyyttä. +\nopagebreak % Estetään sivunvaihto (oletusarvo 4). +\end{koodilohkosis} + +\noindent +Jos \komento{pagebreak}\-/ komentoa käyttää tekstikappaleen sisällä, +sivunvaihto ei välttämättä satu juuri komennon kohdalle. Sivu vaihdetaan +kohdalle osuvan rivin lopussa. + +Oletuksena Latex pyrkii latomaan kaikkien sivujen ylä- ja alareunan +tasaiseksi. Toisin sanoen se saattaa venyttää tai kutistaa sivulla +olevia pystysuuntaisia välejä niin, että kaikki sivut näyttävät yhtä +korkeilta. Tämä tila voidaan asettaa päälle komennolla +\komentom{flushbottom}, mutta se on jo oletuksena päällä ainakin Latexin +perusdokumenttiluokissa. + +Vaihtoehtoinen tila asetetaan komennolla \komentom{raggedbottom}. +Komennon seurauksena sivujen alareunoja ei tasata. Toisin sanoen sivun +pystysuuntaisiin väleihin ei kosketa, joten eri sivujen alareunat voivat +sattua eri korkeudelle. + +Dokumentin viimeistelyvaiheessa sivujen hienosäätöön sopinee komento +\komentom{enlargethispage}, jolla voi muuttaa käsillä olevan sivun +korkeutta, käytännössä \mitta{textheight}\-/mittaa. Komennolle annetaan +argumentiksi positiivinen tai negatiivinen mitta. Seuraavassa on +esimerkkejä: + +\komentoi{enlargethispage} +\mittai{baselineskip} +\begin{koodilohkosis} +\enlargethispage{12bp} % 12 pistettä korkemmaksi +\enlargethispage{-4bp} % 4 pistettä matalammaksi +\enlargethispage{\baselineskip} % yksi tekstirivi lisää +\end{koodilohkosis} + +\noindent +Komennon tähtiversio \komentom{enlargethispage*} pyrkii lisäksi +tiivistämään sivun sisältöä pystysuunnassa niin paljon kuin mahdollista. +Sen tyypillisin käyttötarkoitus lienee se, että sivulle pyritään +mahduttamaan yksi ylimääräinen rivi. Tämäntyyppinen sivujen hienosäätö +kannattaa tehdä vasta viimeisenä eli siinä vaiheessa, kun kaikki sisältö +on valmiina ja muu typografinen asettelu tehty. + +\section{Jäsennys} +\label{luku/jäsennys} + +Tekstin jäsentäminen tarkoittaa sisällön järjestystä ja sen jakamista +sopiviin kokonaisuuksiin. Esimerkiksi laaja teos voi koostua osista, +osien sisäisistä pääluvuista ja niiden alaluvuista. Eri luvut ilmaistaan +eritasoisilla otsikoilla. Varsinaisten sisältölukujen jälkeen teoksessa +voi olla erilaisia liite- tai luettelosivuja, esimerkiksi lähdeluettelo +ja asiahakemisto. Toisaalta lyhyempi artikkeli sisältää ehkä vain yhden- +tai kahdentasoisia otsikoita -- muuta ei tarvita. Tässä alaluvussa +käsitellään juuri tämäntyyppisiä asioita eli tekstikappaletta suurempien +kokonaisuuksien jäsentämistä. + +\subsection{Perustiedot, kansisivu ja tiivistelmä} +\label{luku/dokumentin-perustiedot} + +Latexissa on yksinkertainen toiminto dokumentin perustietojen latomiseen +dokumentin alkuun, mahdollisesti erilliselle kansisivulle. Perustietoja +ovat teoksen nimi, tekijä ja päiväys. Lähdedokumentin alussa perustiedot +ilmaistaan seuraavilla komennoilla: + +\komentoi{title} +\komentoi{author} +\komentoi{date} +\komentoi{and} +\komentoi{today} +\begin{koodilohkosis} +\title{Tieteellistä tiedettä} % teoksen nimi +\author{Timo Tiedemies \and Tuija Tutkija} % tekijöiden nimet +\date{\today} % päiväys +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komentojen argumentissa voi käyttää komentoa +\komento{thanks}, joka on tarkoitettu kiitosten osoittamiseen. +Komennolle annetaan argumentiksi lyhyehkö teksti eli kiitosviesti, joka +tulisi näkymään sivulla alaviitteessä. + +Komennot eivät itse vielä lado mitään tekstiä dokumenttiin. Ne vain +tallentavat perustiedot muistiin mahdollista myöhempää käyttöä varten. +Komennolla \komentom{maketitle} voi latoa kaikki edellä mainitut tiedot. +Ne voivat näkyä ensimmäisen sisältösivun alussa tai erillisellä +kansisivulla; se riippuu dokumenttiluokan asetuksista ja valitsimista +\koodi{titlepage} ja \koodi{notitlepage}. Se, kumpi asetus on oletuksena +päällä, vaihtelee eri dokumenttiluokissa. Dokumenttiluokkia ja niiden +asetuksia käsitellään tarkemmin luvussa \ref{luku/dokumenttiluokat}. +Yksittäiset perustiedot saa ladottua seuraavilla komennoilla: +\komento{thetitle}, \komento{theauthor} ja \komento{thedate}. + +Perustietokomentoihin \komento{title}, \komento{author} ja +\komento{date} ei ole tarkoitus sisällyttää kovin monimutkaisia +muotoilukomentoja. Jos haluaa vaikuttaa perustietojen ulkoasuun, +kannattaa käyttää siihen tarkoitettua pakettia \pakettictan{titling}. +Toisaalta mikään ei estä muotoilemasta oman dokumentin perustietoja +ilman Latexin valmiita keinoja. + +Hyödyllisiä ympäristöjä dokumentin alussa käytettäväksi voivat olla +\ymparistom{titlepage} ja \ymparistom{abstract}. Ensin mainittu luo +tyhjän sivun kansisivun toteuttamiseen. Se myös aloittaa sivunumeroinnin +alusta eli asettaa uudelleen \laskuri{page}\-/ laskurin arvon. +\ymparisto{abstract}\-/ ympäristö on tarkoitettu tieteellisen artikkelin +tiivistelmän kirjoittamiseen. Molempien edellä mainittujen ympäristöjen +käyttö on vapaaehtoista. Kansisivun ja artikkelin tiivistelmän voi aivan +hyvin toteuttaa ilman näitäkin. + +Teoksen kansisivu -- jos sellainen on -- kannattanee lisätä pdf\-/ +tiedoston sisäiseen sisällysluetteloon, jotta lukija voi helposti palata +alkuun myös luettelon kautta. Normaaliin ladottavaan sisällysluetteloon +tuskin koskaan merkitään kansisivua. Pdf:n sisällysluetteloon saa oman +merkinnän esimerkiksi seuraavalla komennolla: + +\komentoi{pdfbookmark} +\begin{koodilohkosis} +\pdfbookmark[0]{Kansi}{sivu/kansi} +\end{koodilohkosis} + +\noindent +Edellä mainittu komento \komento{pdfbookmark} täytyy sijoittaa Latex\-/ +lähdedokumentissa nimenomaan kansisivulle, koska +sisällysluettelomerkintä on samalla linkki kyseiseen kohtaan +dokumentissa. Komento kuuluu \paketti{hyperref}\-/ pakettiin, ja sitä +käsitellään tarkemmin pdf:n asetusten yhteydessä luvussa +\ref{luku/pdf-asetukset}. + +\subsection{Otsikointi} +\label{luku/otsikot} + +Otsikoiden tehtävänä on tietenkin jakaa sisältö mielekkäisiin osiin ja +ilmaista tekstikokonaisuuksien aihe. Ne auttavat lukijaa ennakoimaan, +mitä on tulossa. Otsikot havainnollistavat myös asioiden +hierarkkisuutta: ylemmäntasoiset otsikot nimeävät yläkäsitteitä tai +laajempia kokonaisuuksia, alemmantasoiset otsikot alakäsitteitä ja +pienempiä kokonaisuuksia. + +Jos kirjoittaa Latexilla vähänkään otsikoita, kannattaa ladata mukaan +paketti \paketti{hyperref}. Se huolehtii, että Latexiin merkityt otsikot +tuodaan mukaan pdf\-/ tiedoston sisäiseen sisällysluetteloon ja että +dokumenttiin mahdollisesti ladottavassa sisällysluettelossa otsikot ovat +automaattisesti myös linkkejä, joilla voi hypätä kyseiseen lukuun. +Pdf\-/ tiedoston selailu on näin mukavampaa. \paketti{hyperref}\-/ +pakettia ja pdf\-/ tiedoston ominaisuuksia käsitellään tarkemmin luvussa +\ref{luku/pdf-asetukset}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4]{\komento{#1} & #2 & #3 & #4 \\} + \begin{tabular}{lccl} + \toprule + \multirow{2}{*}{\ots{Komento}} + & \ots{Taso} + & \ots{Taso} + & \multirow{2}{*}{\ots{Merkitys}} \\ + & (\luokka{article}) & (\luokka{book}, \luokka{report}) \\ + \midrule + \rivi{part}{0}{-1}{teoksen osa} + \rivi{chapter}{}{0}{pääluku} + \rivi{section}{1}{1}{otsikko 1, luku} + \rivi{subsection}{2}{2}{otsikko 2, alaluku} + \rivi{subsubsection}{3}{3}{otsikko 3, alaluvun alaluku} + \rivi{paragraph}{4}{4}{kappaleotsikko 1} + \rivi{subparagraph}{5}{5}{kappaleotsikko 2} + \bottomrule + \end{tabular} +}{ + \caption{Otsikointikomennot ja niitä vastaavat tasot Latexin + otsikkohierarkiassa. Dokumenttiluokassa \luokka{article} ei ole + päälukuja (\komento{chapter})} + \label{tlk/otsikkotasot} +} + +Latexissa eri otsikoiden tasoille on omat komentonsa, jotka on koottu +taulukkoon \ref{tlk/otsikkotasot} -- suurimmasta otsikosta pienimpään. +Ylin otsikkotaso on teoksen osa, ja sitä merkitään komennolla +\komentom{part}. Tämän komennon käyttö on vapaaehtoista, mutta sillä on +voi osoittaa laajan teoksen osia. Osat numeroidaan oletuksena +roomalaisilla järjestysluvuilla: ''\partname~I'', ''\partname~II'', +''\partname~III'' jne. Ne eivät vaikuta alemmantasoisten otsikoiden +numerointiin, eli osan vaihtuminen ei oletusasetuksilla nollaa +alemmantasoisten lukujen laskuria. + +Otsikkotaso \komentom{chapter} tarkoittaa kirjan päälukua, joka alkaa +oletuksena puhtaalta sivulta. Otsikkoa ennen siis suoritetaan +automaattisesti sivunvaihtokomento \komento{clearpage} tai +\komento{cleardoublepage} (luku \ref{luku/sivunvaihdot}). +\komento{chapter}\-/ tasoiset otsikot saavat oletuksena numeroinnin +''\chaptername~1'', ''\chaptername~2'', ''\chaptername~3'' jne. +Dokumenttiluokassa \luokka{article} ei tätä otsikkotasoa ole lainkaan. + +Seuraavat otsikkotasot \komentom{section}, \komentom{subsection} ja +\komentom{subsubsection} ovat tavallisimpia tekstin väliotsikoita. Nekin +saavat oletuksena numeroinnin, jossa pisteellä erotetaan mahdolliset +alaluvut: 1.1, 1.2, 1.2.1, 1.2.2 yms. + +Otsikoinnissa on tärkeää säilyttää suora hierarkkinen suhde +otsikkotasojen välillä: alemmantasoista otsikkoa ei saa käyttää ennen +kuin on ensin ollut yhtä astetta ylempi otsikkotaso. Täytyy siis olla +ensin \komento{section} ennen kuin voi olla \komento{subsection}. Muuten +otsikoiden numerointi ei toimi oikein. Poikkeus on \komento{part}, jota +ei välttämättä tarvitse käyttää. + +Otsikkotasot \komentom{paragraph} ja \komentom{subparagraph} eivät ole +ihan perinteisiä otsikoita, vaan ne ladotaan tekstikappaleen alkuun. +Nekin kyllä erottuvat leipätekstistä ja voivat toimia otsikon +kaltaisessa tehtävässä. Oletuksena kappaleotsikoita ei numeroida eivätkä +ne tule mukaan sisällysluetteloon. Oletusasetuksia on kuitenkin +mahdollista muuttaa, ja tarvittaessa \komento{paragraph} ja +\komento{subparagraph} voivat toimia normaaleina otsikoina tason +\komento{subsubsection} jälkeen. Kovin syvää otsikkorakennetta ei +yleensä suositeta, koska lukijan voi olla vaikeaa hahmottaa monitasoisia +kokonaisuuksia. + +Otsikkokomennoille annetaan tyypillisesti vain yksi argumentti, joka on +kyseisen otsikon teksti. Otsikkoon ei ole tarkoitus kirjoittaa kovin +monimutkaisia fontti- eikä muotoilukomentoja, vaan mieluiten ainoastaan +otsikon teksti. Typografinen muotoilu tehdään muilla keinoilla, joita +esitellään alaluvussa \ref{luku/otsikot-ulkoasu}. Yksinkertaiset +korostuskomennot ja tavutusvihjeet (\komento{-}) kuitenkin toimivat +yleensä. Hauraiden komentojen (luku \ref{luku/komennot-hauraat}) eteen +täytyy kirjoitaa komento \komento{protect}. + +\komentoi{section} +\begin{koodilohkosis} +\section{Tämä teksti on otsikko} +\end{koodilohkosis} + +\noindent +Otsikko tulee automaattisesti mukaan teoksen sisällysluetteloon, jos +sellainen on olemassa (luku \ref{luku/sisällysluettelo}). Otsikko näkyy +myös pdf\-/ tiedoston sisällysluettelossa, jos vain +\paketti{hyperref}\-/ paketti on käytössä (luku +\ref{luku/pdf-asetukset}). Lisäksi otsikon tekstiä voi käyttää +ristiviittauksissa (luku~\ref{luku/ristiviitteet}). + +Otsikkokomennoille voi antaa yhden valinnaisen argumentin, jolla +ilmaistaan otsikosta lyhempi tai yksinkertaisempi versio. Tällöin +sisällysluettelossa ja ristiviitteissä näytetään lyhempi otsikko ja +tekstiin ladotaan varsinainen otsikko. Tätä ominaisuutta on syytä +hyödyntää myös silloin, kun varsinainen otsikko sisältää otsikkotekstin +lisäksi muotoilukomentoja. Silloin valinnaiseen argumenttiin +kirjoitetaan vain puhdasta tekstiä sisältävä versio otsikosta. + +\komentoi{section} +\begin{koodilohkosis} +\section[Lyhyt otsikko]{Tämä tässä on pitkä otsikko} +\end{koodilohkosis} + +\noindent +Kaikille otsikkokomennoille on olemassa myös niin sanottu tähtiversio +eli komentovaihtoehto, jonka nimen lopussa on tähti: \komento{part*}, +\komento{chapter*}, \komento{section*}, \komento{subsection*}, +\komento{subsubsection*}, \komento{paragraph*}, \komento{subparagraph*}. +Nämä vaihtoehdot latovat otsikon, jolla ei ole numerointia ja jota ei +lisätä sisällysluetteloon. + +Pelkän otsikon numeroinnin poistamiseen ei ehkä kannata käyttää näitä +tähtiversioita, koska yleensä otsikko kuitenkin halutaan +sisällysluetteloon. Otsikoiden numeroinnin saa pois muilla keinoilla, +jotka neuvotaan luvussa \ref{luku/otsikot-numerointi}. + +Jos kuitenkin jostain syystä haluaa käyttää tähdellistä otsikkokomentoa +ja haluaa otsikon myös sisällysluetteloon, täytyy se tehdä seuraavalla +tavalla: + +\komentoi{section*} +\komentoi{addcontentsline} +\komentoi{phantomsection} +\begin{koodilohkosis} +\section*{Tässäpä numeroimaton otsikko} +\phantomsection +\addcontentsline{toc}{section}{Tässäpä numeroimaton otsikko} +\end{koodilohkosis} + +\noindent +Edellä olevan esimerkin komento \komentom{addcontentsline} lisää +merkinnän sisällysluetteloon. Komennon ensimmäinen argumentti on +\koodi{toc} (\englanti{table of contents}), joka on sisällysluetteloiden +tekemisessä tarvittavan väliaikaistiedoston pääte. Esimerkissä lisättävä +sisällysluettelon merkintä on tasoltaan \koodi{section} eli vastaa muita +\komento{section}\-/ komennolla syntyviä sisällysluettelon kohtia. +Komento \komentom{phantomsection} kuuluu \paketti{hyperref}\-/ +pakettiin, ja se lisää pdf\-/ tiedostoon näkymättömän ankkurin tähän +kohtaan dokumentissa. Sitä tarvitaan, jotta sisällysluettelon merkintä +viittaisi oikealle sivulle ja toimisi myös linkkinä, joka tuo juuri +tähän kohtaan. + +\subsection{Otsikoiden numerointi} +\label{luku/otsikot-numerointi} + +Oletusasetuksilla Latex numeroi otsikot (\komento{chapter}, +\komento{section} jne.) automaattisesti, mutta kirjoittaja voi vaikuttaa +numerointiin monella tavalla, kuten siihen, mihin otsikkotasoon saakka +numerointi yltää ja millä tyylillä otsikoiden numerot ylipäätään +ladotaan. + +Laskuri \laskurim{secnumdepth} on tarkoitettu kirjoittajan +asetettavaksi, ja sillä määritetään, mihin otsikkotasoon saakka otsikot +numeroidaan. Tasonumerot ovat taulukossa \ref{tlk/otsikkotasot}. +Seuraava esimerkki määrittelee, että vain tasoon~1 (\komento{section}) +saakka otsikot numeroidaan. Alemmantasoiset otsikot +(\komento{subsection} ym.) eivät saa numeroa. + +\komentoi{setcounter} +\laskurii{secnumdepth} +\begin{koodilohkosis} +\setcounter{secnumdepth}{1} +\end{koodilohkosis} + +\noindent +Asetusta voi muuttaa kesken dokumentin. Muuttaminen voi olla mielekästä +esimerkiksi laajan teoksen lopussa, jossa on mahdollisesti +lähdeluettelo, asiahakemistoja tai liitteitä, joille ei ehkä haluta +samanlaista otsikkonumerointia kuin varsinaisille sisältöluvuille. + +Latexin otsikoiden numerointi noudattaa yleistä tietokirjallisuuden +käytäntöä, eli numeroinnissa käytetään arabialaisia numeroita ja eri +tasoja ilmaisevat numerot erotetaan toisistaan pisteellä: 1.1, 1.2, +1.2.1, 1.2.2 jne. Sisäisesti Latex käyttää laskureita, joilla on sama +nimi kuin vastaavalla otsikointikomennolla: \laskuri{part}, +\laskuri{chapter}, \laskuri{section}, \laskuri{subsection}, +\laskuri{subsubsection}, \laskuri{paragraph}, \laskuri{subparagraph}. + +Laskureiden toimintaan voi perehtyä tarkemmin luvun \ref{luku/laskurit} +avulla, mutta kerrataan tässä yhteydessä yksi asia. Laskurin arvon voi +latoa dokumenttiin käyttämällä komentoa, joka alkaa kirjaimilla +\komentox{the} ja jatkuu laskurin nimellä. Niin otsikkokomennot juuri +tekevät: esimerkiksi \komento{section}\-/ otsikon kohdalla suoritetaan +automaattisesti \komento{thesection}, joka tuottaa otsikon numeron. +Vastaavasti \komento{subsection}\-/ komento latoo numeron käyttämällä +komentoa \komento{thesubsection} jne. + +Kirjoittaja voi halutessaan määritellä nämä laskurin latomiskomennot +uudelleen. Jos esimerkiksi teoksen osat (\komento{part}) halutaan +ilmaista arabialaisin numeroin eikä roomalaisin (kuten on oletus), +tehdään se seuraavan esimerkin mukaisesti. Esimerkissä käytettävä +komento \komento{arabic} latoo laskurin arvon arabialaisilla numeroilla. + +\komentoi{renewcommand} +\komentoi{thepart} +\laskurii{part} +\komentoi{arabic} +\begin{koodilohkosis} +\renewcommand{\thepart}{\arabic{part}} +\end{koodilohkosis} + +\noindent +Joskus ehkä halutaan, että otsikoissa eri tasojen numeroita ei eroteta +toisistaan pisteellä (2.1) vaan yhdysmerkillä tai ajatusviivalla +(2\==1). Tällainen asetus saadaan määrittelemällä alemmantasoisten +laskurien latomiskomennot uudelleen, esimerkiksi seuraavasti:% +\footnote{Parempi olisi ehkä käyttää sitovaa ajatusviivaa, jonka saa + \paketti{extdash}\-/ paketin \komento{==}\-/ komennolla. Katso + lisätietoa luvusta \ref{luku/tavutus-sallivat-sitovat}.} + +\komentoi{renewcommand} +\komentoi{thesection} +\komentoi{thesubsection} +\komentoi{thesubsubsection} +\laskurii{subsection} +\laskurii{subsubsection} +\komentoi{arabic} +\begin{koodilohkosis} +\renewcommand{\thesubsection}{\thesection--\arabic{subsection}} +\renewcommand{\thesubsubsection}{% + \thesubsection--\arabic{subsubsection}} +\end{koodilohkosis} + +\noindent +Otsikkonumeroinnin poistamista ei pidä toteuttaa siten, että määrittelee +edellä mainitut \komentox{the}\-/ alkuiset komennot tyhjäksi. Numerointi +poistetaan laskurin \laskuri{secnumdepth} avulla määrittämällä sen arvo +tarpeeksi pieneksi. Sekin on syytä muistaa, että nämä \komentox{the}\-/ +alkuiset komennot on tarkoitettu vain laskurien arvon latomiseen. +Komennon määritelmään ei pidä kirjoittaa typografiseen muotoiluun +liittyviä komentoja. Otsikoiden ulkoasuun vaikutetaan muilla keinoilla. + +\subsection{Otsikoiden ulkoasu} +\label{luku/otsikot-ulkoasu} + +Otsikoiden typografiaan eli esimerkiksi kirjainperheen ja \=/leikkauksen +valintaan ja välistyksiin on kätevintä käyttää \pakettictan{titlesec}\-/ +pakettia. Perus Latexissakin on kyllä otsikoiden muotoiluun tarkoitettu +komento \komentox{@startsection}, mutta sen käyttö on hankalampaa eikä +se toimi kaikilla otsikkotasoilla. Perus Latexin keinoihin voi tutustua +esimerkiksi epävirallisen Latex\-/ hakuteoksen \textcite{unoffref} +avulla. Tässä oppaassa sen sijaan keskitytään \paketti{titlesec}\-/ +pakettiin. + +Otsikoiden perusmuotoilu on helpointa toteuttaa +\komentom{titleformat*}\-/ komennon avulla. Sille annetaan argumentiksi +otsikkokomennon nimi ja sitä vastaavat muotoilukomennot. Seuraava +esimerkki vaihtaa otsikoihin groteskin kirjainperheen +(\komento{sffamily}) ja hieman toisistaan poikkeavan kirjainleikkauksen. + +\komentoi{titleformat*} +\komentoi{section} +\komentoi{subsection} +\komentoi{subsubsection} +\komentoi{sffamily} +\komentoi{large} +\komentoi{Large} +\komentoi{normalsize} +\komentoi{bfseries} +\komentoi{itshape} +\begin{koodilohkosis} +\titleformat*{\section} {\sffamily\bfseries\Large} +\titleformat*{\subsection} {\sffamily\bfseries\itshape\large} +\titleformat*{\subsubsection}{\sffamily\bfseries\normalsize} +\end{koodilohkosis} + +\noindent +Monipuolisemmat muotoiluasetukset saa toteutettua komennon tähdettömällä +versiolla \komentom{titleformat}. Tämän komentoversion monista +argumenteista ja ominaisuuksista kannattaa lukea \paketti{titlesec}\-/ +paketin ohjekirjasta, mutta esimerkistä \ref{esim/titleformat} +selvinnevät perustoiminnot. + +\begin{esimerkki*} + \komentoi{titleformat} + \komentoi{section} + \komentoi{sffamily} + \komentoi{bfseries} + \komentoi{Large} + \komentoi{raggedright} + \komentoi{thesection} + +\begin{koodilohko} +\titleformat{\section} % otsikkotaso: \section +[hang] % muoto: riippuva sisennys +{\sffamily\bfseries\Large % ulkoasukomentoja + \raggedright} +{\thesection} % numerointi +{.8em} % numeroinnin ja otsikkotekstin väli (mitta) +{} % koodia ennen otsikkotekstiä +[] % koodia otsikon jälkeen +\end{koodilohko} + \caption{Otsikoiden ulkoasuun voi vaikuttaa monipuolisesti + \komento{titleformat}\-/ komennolla, joka kuuluu \paketti{titlesec}\-/ + pakettiin} + \label{esim/titleformat} +\end{esimerkki*} + +Luvun numeroinnin (1.1, 1.2 jne.) tyyliin voi vaikuttaa komennolla +\komentom{titlelabel}. Komento suoritetaan yleensä vain kerran, ja se +vaikuttaa kaikentasoisiin otsikoihin. Tätä komentoa ei tarvita, jos +käyttää edellä mainittua ''tähdetöntä'' \komento{titleformat}\-/ +komentoa, koska se sisältää jo toiminnot myös lukujen numeroinnin +asetuksiin. + +\komentoi{titlelabel} +\komentoi{hspace} +\begin{koodilohkosis} +\titlelabel{\thetitle\hspace{1em}} +\end{koodilohkosis} + +\noindent +Edellä olevan komennon argumentissa käytetty komento \komentox{thetitle} +on tarkoitettu vain tämän komennon ja \paketti{titlesec}\-/ paketin +sisäiseen käyttöön. Se latoo kyseisen luvun numeron, olipa otsikkotaso +mikä hyvänsä. Sen perään esimerkissä asetetaan 1\,em:n suuruinen väli +\komento{hspace}\-/ komennolla. + +Otsikoiden yhteydessä ladottavaan sisennykseen ja pystysuuntaiseen +väliin vaikutetaan komennolla \komentom{titlespacing*}. Sille annetaan +argumentiksi otsikkokomennon nimi ja halutut mitat järjestyksessä vasen +sisennys, yläpuolinen väli ja alapuolinen väli. + +\komentoi{titlespacing*} +\komentoi{section} +\begin{koodilohkosis} +\titlespacing*{\section}{0mm}{3ex plus 2bp minus 1bp}{2ex plus 1bp} +\end{koodilohkosis} + +\noindent +Pystysuuntaiset mitat on yleensä hyvä asettaa venyviksi (luku +\ref{luku/venyvät-mitat}), jotta Tex saa pelivaraa sivujen latomiseen. +Otsikon yläpuolella pitäisi olla isompi väli kuin alapuolella, koska +otsikko kuuluu kiinteämmin sitä seuraavaan tekstiin. Pystysuuntaisten +välien määrittämisessä voi käyttää *\=/lyhennettä, joka tarkoittaa +oletuksena ex\-/mittayksikköä ja sallii hieman venymistä. + +\komentoi{titlespacing*} +\komentoi{section} +\begin{koodilohkosis} +\titlespacing*{\section}{0mm}{*3}{*2} +\end{koodilohkosis} + +\noindent +Tähdellinen \komento{titlespacing*}\-/ komento poistaa otsikon jälkeen +tulevasta tekstikappaleesta ensimmäisen rivin sisennyksen (luku +\ref{luku/ensimmäisen-rivin-sisennys}). Tähdetön komentoversio +\komentom{titlespacing} sen sijaan säilyttää kappaleen sisennyksen. Sitä +ei liene tarvetta käyttää koskaan, sillä otsikoiden jälkeen tulevaa +tekstikappaletta ei kuulu sisentää. + +Teoksen osien (\komento{part}) vaihtuessa sivulle ladotaan oletuksena +teksti kuten ''\partname~I'', ''\partname~II'' jne. Mainittu sana +''\partname'' tulee suomen kieliasetuksista ja komennosta +\komentom{partname}. Kaikkien kielten asetukset nimittäin määrittelevät +komennon \komento{partname} siten, että se sisältää ja latoo kyseiseen +kieleen sopivan ilmauksen. Vastaavasti päälukujen (\komento{chapter}) +yhteydessä ladotaan suomen kieliasetuksilla ilmaus ''\chaptername~1'', +''\chaptername~2'' jne. Sana ''\chaptername'' tulee komennosta +\komentom{chaptername}. + +Jos omassa dokumentissa haluaa kutsua teoksen osia tai päälukuja +joksikin muuksi, voi määritellä edellä mainitut komennot uudelleen. +Seuraavassa esimerkissä voisi olla jokin romaani, jossa teoksen osat +ovat ''kausia'' ja pääluvut ovat ''päiviä''. + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{partname} +\komentoi{chaptername} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\partname}{Kausi} + \renewcommand{\chaptername}{Päivä} +} +\end{koodilohkosis} + +\noindent +Tässä \komento{renewcommand}\-/ komennot sijoitettiin \komento{addto}\-/ +komennon sisään, sen toiseen argumenttiin. Komento \komento{addto} +täytyy suorittaa lähdedokumentin esittelyosassa, ja tässä se lisää uusia +komentoja suomen kielen asetuksiin (\komento{captionsfinnish}), niin +että ne tulevat voimaan samalla kun suomen kieliasetuksetkin. +\komento{addto} kuuluu \paketti{polyglossia}\-/\ ja \paketti{babel}\-/ +paketteihin, joita käsitellään tarkemmin kieliasetusten yhteydessä +luvussa \ref{luku/kieliasetukset}. + +Otsikoiden yhteyteen saa automaattisen sivunvaihdon määrittämällä +komennon, jonka nimen alussa on otsikkokomennon nimi ja lopussa sana +\koodi{break}. Tavallisin lienee \komentom{sectionbreak}. Komennon +määritelmään kirjoitetaan jokin sivuvaihtokomento kuten +\komento{clearpage}. Sivunvaihtokomentoja käsitellään tarkemmin luvussa +\ref{luku/sivunvaihdot}. + +\komentoi{newcommand} +\komentoi{sectionbreak} +\komentoi{clearpage} +\begin{koodilohkosis} +\newcommand{\sectionbreak}{\clearpage} +\end{koodilohkosis} + +\subsection{Esittely, pääluvut, liitteet ja luettelot} +\label{luku/frontmainbackmatter} + +Dokumenttiluokassa \luokka{book} (luku \ref{luku/perusdokumenttiluokat}) +on käytettävissä kolme lisäkomentoa dokumentin erilaisten osien +ilmaisemiseen: \komento{frontmatter}, \komento{mainmatter} ja +\komento{backmatter}. Niillä jaetaan laaja teos esittelysivuihin, +varsinaisiin sisältölukuihin ja loppuosaan kuten liitesivuihin ja +erilaisiin luetteloihin. Lisäksi muissakin dokumenttiluokissa on komento +\komento{appendix}, jolla voi aloittaa liitesivuja sisältävän osan +dokumentissa. Näiden komentojen käyttö on vapaaehtoista. Luvussa +\ref{luku/tyypillinen-tietokirja} käsitellään tyypillisen suomalaisen +tietokirjan rakennetta ja teknistä toteuttamista. + +Dokumentin alkuun voi kirjoittaa komennon \komentom{frontmatter}, joka +asettaa sivunumeroiden tyyliksi roomalaiset numerot (i, ii, iii jne.) ja +poistaa pääluvuilta (\komento{chapter}) numeroinnin. Tässä osassa ovat +teoksen kansi ja perustiedot, sisällysluettelo, tietokirjan tai +tutkimuksen tiivistelmä ja mahdollisesti teoksen esipuhe tai muu +vastaava esittelyteksti, joka ei ole vielä varsinaista sisältöä. + +Jos dokumentissa käytetään \komento{frontmatter}\-/ komentoa, täytynee +varsinaisten sisältölukujen alkuun kirjoittaa komento +\komentom{mainmatter}, joka nollaa sivunumerolaskurin, asettaa +numeroinnin tyyliksi arabialaiset numerot (1, 2, 3 jne.) ja kytkee +päälle lukujen numeroinnin. Sen jälkeen ensimmäinen \komento{chapter}\-/ +komennolla tehty luku on siis ''\chaptername~1''. + +Sisältösivujen lopussa voi olla komento \komentom{appendix}. Se +ensinnäkin nollaa \luokka{book}- ja \luokka{report}\-/ luokissa +päälukujen laskurin \laskuri{chapter}. Sen sijaan \luokka{article}\-/ +luokassa se nollaa \laskuri{section}\-/ laskurin. Sen lisäksi +\komento{appendix}\-/ komento muuttaa lukujen numerointityyliksi +kirjaimet (A, B, C jne.) ja päälukujen nimeksi ''\appendixname'', joka +tulee komennosta \komento{appendixname}. Näin teoksen lopussa +\komento{appendix}\-/ komennon jälkeen pääluvut tulevat nimetyksi +uudella tavalla: ''\appendixname~A'', ''\appendixname~B'' jne. + +Sisältösivujen ja mahdollisten liitteiden jälkeen voi olla hyödyllistä +käyttää komentoa \komentom{backmatter}, joka lopettaa päälukujen +numeroinnin kokonaan. Tähän osaan voisi sijoittaa ainakin asiahakemistot +sekä kirjallisuus\-/\ tai lähdeluettelon. + +\subsection{Tyypillinen tietokirjan rakenne} +\label{luku/tyypillinen-tietokirja} + +Latexin komennot \komento{frontmatter} ja \komento{mainmatter} (luku +\ref{luku/frontmainbackmatter}) eivät ihan vastaa suomalaista +tietokirjojen käytäntöä. Suomessa teoksen alun sivunumeroita ei ole +tapana ilmaista roomalaisilla numeroilla eikä sivunumerointia nollata +sisältölukujen alkaessa. Esimerkkiin \ref{esim/tietokirjojen-rakenne} on +koottu varsin tyypillinen suomalainen tietokirjojen rakenne. Esimerkissä +ei käytetä lainkaan komentoja \komento{frontmatter}, +\komento{mainmatter} eikä \komento{backmatter}, vaan lukujen +numerointiin vaikutetaan suoraan asettamalla laskuriin +\laskuri{secnumdepth} sopiva arvo. Tätä laskuria käsitellään otsikoiden +yhteydessä luvussa \ref{luku/otsikot-numerointi}. + +\begin{esimerkki*} + \komentoi{documentclass} + \luokkai{book} + \komentoi{pagestyle} + \komentoi{cleardoublepage} + \komentoi{setcounter} + \laskurii{tocdepth} + \laskurii{secnumdepth} + \komentoi{tableofcontents} + \komentoi{chapter} + \komentoi{appendix} + \komentoi{printbibliography} + \komentoi{printindex} + \ymparistoi{document} + +\begin{koodilohko} +\documentclass{book} + +\begin{document} + +\pagestyle{empty} % sivunumerot pois näkyvistä +% nimiösivu yms. + +\cleardoublepage +\setcounter{tocdepth}{2} % sisällysluettelon syvyys +\pagestyle{plain} % sivunumerot näkyviin +\tableofcontents % sisällysluettelo + +\setcounter{secnumdepth}{-1} % lukujen numerointi pois + +\chapter{Esipuhe} +% esipuheen teksti + +\setcounter{secnumdepth}{2} % aloitetaan lukujen numerointi + +\chapter{Ensimmäinen pääluku} +% ... +\chapter{Toinen pääluku} +% ... + +% mahdollisesti liitteet +\appendix +\chapter{Tärkeä liite} +% ... +\chapter{Tosi tärkeä liite} +% ... + +% Kirjallisuusluettelot, asiahakemistot yms. +\setcounter{secnumdepth}{-1} % lukujen numerointi pois + +\chapter{Kirjallisuutta} +\printbibliography + +\chapter{Asiahakemisto} +\printindex + +\end{document} +\end{koodilohko} + \caption{Tyypillinen suomalainen tietokirjojen rakenne sekä sivujen ja + lukujen numerointikäytännöt} + \label{esim/tietokirjojen-rakenne} +\end{esimerkki*} + +Suomalaisissa kirjoissa sivunumeroinnin laskuri alkaa ensimmäiseltä +sivulta, johon on painettu jotakin, yleensä pelkkä teoksen nimi tai +kirjailijan nimi. Sivu~1 ei ole vielä kirjan kansi, koska kirjapainossa +kannet lisätään ikään kuin tekijöiden työn ympärille. Aikakauslehdissä +kansi on kuitenkin sivu~1. + +Sivunumerot tulevat näkyviin hieman vaihtelevasti: joskus sivunumerot +näytetään sisällysluettelon alusta saakka; joskus ne näytetään vasta +sisällysluettelon jälkeen esipuheessa; joskus esipuhe on ennen +sisällysluetteloa ja sivunumerot näkyvät esipuheen alusta saakka. +Esimerkissä \ref{esim/tietokirjojen-rakenne} sivutyyli \koodi{plain} +kytketään päälle sisällysluettelon alkaessa, eli sivunumerotkin alkavat +sen myötä näkyä. Sivutyylejä ja muita ylä- ja alatunnisteisiin liittyviä +asioita käsitellään tarkemmin luvussa \ref{luku/ylä-ala-tunnisteet}. + +Mikäli haluaa, että sisällysluettelossa ei vielä näytetä sivunumeroita, +joutuu dokumenttiluokissa \luokka{book} ja \luokka{report} käyttämään +vähän epätavallista keinoa halutun lopputuloksen saavuttamiseksi. +Sellainen neuvotaan sisällysluettelon käsittelyn yhteydessä esimerkissä +\ref{esim/sisällysluettelo-empty}. + +\section{Sisällysluettelo} +\label{luku/sisällysluettelo} + +Dokumentin sisällysluettelo syntyy helposti yhdellä komennolla: +\komentom{tableofcontents}. Otsikkokomennoilla (luku \ref{luku/otsikot}) +tehdyt otsikot tulevat automaattisesti sisällysluetteloon. Jos käytössä +on paketti \paketti{hyperref} (luku \ref{luku/pdf-asetukset}), +sisällysluettelon otsikot ovat myös linkkejä, jotka vievät kyseiseen +kohtaan dokumentissa. Oletuksena syntyvä sisällysluettelo on tyyliltään +neutraali, ja se sopinee sellaisenaan useimpiin töihin. Ulkoasua voi +kyllä muokatakin varsin helposti. + +\komentoi{tableofcontents} +\begin{koodilohkosis} +% Ladotaan sisällysluettelo tähän kohtaan. +\tableofcontents +\end{koodilohkosis} + +\noindent +Laskurin \laskurim{tocdepth} avulla kirjoittaja voi määritellä, mihin +tasoon saakka sisällysluettelossa näytetään otsikoita. Esimerkiksi +jonkin kuvitteellisen romaanin (dokumenttiluokka \luokka{book}) +sisällysluettelossa voisi näyttää ainoastaan osat (\komento{part}) ja +pääluvut (\komento{chapter}) asettamalla laskurin arvoksi nolla. Arvo +nolla viittaa nimenomaan \komento{chapter}\-/ tasoisiin otsikoihin. +Otsikoiden tasonumerot voi tarkistaa taulukosta \ref{tlk/otsikkotasot} +(s.~\pageref{tlk/otsikkotasot}). + +\komentoi{setcounter} +\laskurii{tocdepth} +\begin{koodilohkosis} +\setcounter{tocdepth}{0} +\end{koodilohkosis} + +\noindent +Sisällysluettelolle ladotaan automaattisesti otsikko, joka tulee +komennosta \komentom{contentsname}. Komento on määritelty +kieliasetuksissa, ja se latoo suomen kielessä sanan ''Sisältö'' tai +''Sisällys''.% +\footnote{Se, kumpi otsikko on käytössä, riippuu kielipakettien + \paketti{polyglossia} ja \paketti{babel} versiosta. Vuonna 2020 + kumpaankin kielipakettiin on muutettu otsikoksi ''Sisällys'', joka on + selvästi yleisin sisällysluettelon otsikko.} Jos otsikkoon ei ole +tyytyväinen, voi lähdedokumentin esittelyosassa \komento{addto}\-/ +komennon avulla muuttaa kieliasetuksia. Seuraavassa esimerkissä +muutetaan sisällysluettelon otsikko suomen kielen osalta: + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{contentsname} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\contentsname}{Sisällysluettelo} +} +\end{koodilohkosis} + +\noindent +Dokumenttiluokissa \luokka{book} ja \luokka{report} (luku +\ref{luku/perusdokumenttiluokat}) on sellainen ominaisuus tai +kummallisuus, että sisällysluettelon alkusivulla suoritetaan +automaattisesti komento \komento{thispagestyle}\komentoarg{plain}. Tämän +vuoksi sisällysluettelon ensimmäinen sivu on aina \koodi{plain}\-/ +tyylinen eli alatunnisteessa näkyy sivunumero, vaikka ennen +sisällysluetteloa olisikin asettanut sivutyyliksi jonkin muun. +Monisivuisen sisällysluettelon seuraavilla sivuilla sen sijaan +noudatetaan aiemmin \komento{pagestyle}\-/ komennolla asetettua +sivutyyliä. + +\begin{esimerkki*} + \komentoi{pagestyle} + \komentoi{renewcommand} + \komentoi{thispagestyle} + \komentoi{tableofcontents} + +\begin{koodilohko} +\pagestyle{empty} +{ + \renewcommand{\thispagestyle}[1]{} % tyhjä määritelmä + \tableofcontents +} +\end{koodilohko} + \caption{Sisällysluettelon sivutyylin muuttaminen kokonaan + \koodi{empty}\-/ tyyliseksi. Komento \komento{thispagestyle} pitää + määritellä väliaikaisesti uudestaan dokumenttiluokissa \luokka{report} + ja \luokka{book}} + \label{esim/sisällysluettelo-empty} +\end{esimerkki*} + +Jotta edellä mainitusta kummallisuudesta pääsisi eroon, täytyy +määritellä väliaikaisesti \komento{thispagestyle}\-/ komento +toisenlaiseksi. Väliaikainen komennon määrittely saadaan aikaan +aaltosulkeilla (luku \ref{luku/aaltosulkeet}), joiden sisään komennon +uudelleen määrittely ja sisällysluettelon latomiskomento sijoitetaan. +Esimerkistä \ref{esim/sisällysluettelo-empty} selviää, miten se tehdään. +Tässä esimerkissä komennon määritelmä jätettiin tyhjäksi, koska sen ei +haluta tekevän mitään. Näin ollen aiemmin annettu \komento{pagestyle}\-/ +komento vaikuttaa koko sisällysluetteloon. + +Normaalit otsikot tulevat mukaan sisällysluetteloon itsestään, mutta +joskus voi joutua lisäämään luetteloon kohtia myös keinotekoisesti. Se +tehdään komennolla \komentom{addcontentsline}, jonka käytöstä on +esimerkki luvussa \ref{luku/otsikot}. Pelkkään pdf\-/ tiedoston +sisäiseen sisällysluetteloon voi lisätä kohtia komennolla +\komentom{pdfbookmark}, joka kuuluu \paketti{hyperref}\-/ pakettiin. +Tätä komentoa käsitellään luvussa \ref{luku/pdf-asetukset}. + +\begin{esimerkki*} + \komentoi{addvspace} + \komentoi{bfseries} + \komentoi{contentslabel} + \komentoi{contentspage} + \komentoi{hspace} + \komentoi{large} + \komentoi{normalsize} + \komentoi{rmfamily} + \komentoi{small} + \komentoi{titlecontents} + \komentoi{titlerule*} + \komentoi{titlerule} + +\begin{koodilohko} +\titlecontents{chapter} % otsikon taso: chapter +[8mm] % vasen sisennys (mitta) +{\addvspace{1.5ex}\rmfamily\bfseries\large} % yläpuolinen koodi +{\contentslabel{8mm}} % numeroitu kohta +{\hspace{-8mm}} % numeroimaton kohta +{\small\titlerule[0bp]\contentspage} % pisteviiva (pois) ja sivunumero +[\addvspace{.5ex}] % alapuolinen koodi + +\titlecontents{section} % otsikon taso: section +[8mm] % vasen sisennys (mitta) +{\addvspace{.5ex}\rmfamily\normalsize} % yläpuolinen koodi +{\contentslabel{8mm}} % numeroitu kohta +{} % numeroimaton kohta +{~\small\titlerule*[3mm]{.}\contentspage} % pisteviiva ja sivunumero +[\addvspace{.2ex}] % alapuolinen koodi + +\titlecontents{subsection} % otsikon taso: subsection +[18mm] % vasen sisennys (mitta) +{\rmfamily\small} % yläpuolinen koodi +{\contentslabel{10mm}} % numeroitu kohta +{} % numeroimaton kohta +{~\small\titlerule*[3mm]{.}\contentspage} % pisteviiva ja sivunumero +[] % alapuolinen koodi +\end{koodilohko} + \caption{Sisällysluettelon ulkoasua muokataan \komento{titlecontents}\-/ + komennolla, joka on peräisin \paketti{titletoc}\-/ paketista} + \label{esim/titlecontents} +\end{esimerkki*} + +Sisällysluettelon ulkoasun muokkaamista varten on paketti +\pakettictan{titletoc}, jonka tärkeimmän komennon +(\komentom{titlecontents}) käyttöä esitellään esimerkissä +\ref{esim/titlecontents}. Komennolla voi muokata paitsi +sisällysluettelon kohtia mutta myös leijuvien osien (luku +\ref{luku/leijuosat}) kuten kuvien ja taulukoiden luetteloita. + +Esimerkistä selviää, miten \komento{titlecontents}\-/ komennolla +määritellään luettelokohdan vasemman sisennyksen mitta, yläpuolinen ja +alapuolinen väli (\komento{addvspace}, luku +\ref{luku/pystysuuntaiset-välit}), mahdolliset kirjainperheeseen ja +\=/leikkaukseen vaikuttavat komennot kuten \komento{rmfamily}, +\komento{bfseries} ja \komento{large} (luku \ref{luku/fontit-korkea}). + +\komento{titlecontents}\-/ komennon argumenteissa käytetään jonkin +verran muita komentoja, jotka on tarkoitettu nimenomaan tämän komennon +argumentteihin. Komento \komento{contentslabel} latoo kyseisen otsikon +numeron (1.2, 1.3 tms.) tietynlevyiseen tilaan ja sisennystason +vasemmalle puolelle (ns. riippuva sisennys). Komento +\komento{contentspage} latoo sivunumeron. Komennolla \komento{titlerule} +voi tehdä katsetta ohjaavan viivan tai pisteviivan otsikkotekstin ja +sivunumeron väliin. + +Paketin \paketti{titletoc} ohjekirjassa on paljon muitakin +toimintoja ja esimerkkejä sisällysluetteloiden ehostamiseen. Ohjeisiin +kannattaa tutustua, mikäli kaipaa erikoisempia sisällysluettelomalleja. + +\section{Luetelmat} +\label{luku/luetelmat} + +Latexissa on helppokäyttöiset ympäristöt kolmelle erilaiselle luetelman +perustyypille: numeroimaton (\ymparisto{itemize}), numeroitu +(\ymparisto{enumerate}) ja määritelmäluetelma (\ymparisto{description}). +Ne riittänevät perustarpeisiin ja ovat hieman myös muokattavissa +typografisesti. Luetelmien perusympäristöjä käsitellään luvussa +\ref{luku/luetelma-perus}. + +Perusluetelmien lisäksi on olemassa yleinen luetelmien rakenteluun +tarkoitettu ympäristö \ymparisto{list}, jolla voi toteuttaa suunnilleen +mitä tahansa luetelmiin tai tekstikappaleisiin liittyviä rakenteita. +Teknisesti \ymparisto{list}\-/ ympäristö sisältää kaikki tarvittavat +luetelmiin liittyvät ominaisuudet, joten kirjoittaja voi aivan hyvin +käyttää pelkästään sitä. Ympäristöä käsitellään luvussa +\ref{luku/list-ympäristö}. + +\subsection{Perusympäristöt} +\label{luku/luetelma-perus} + +Ympäristö \ymparistom{itemize} tekee numeroimattoman luetelman, jonka +jokainen kohta merkitään samanlaisella merkillä, esimerkiksi +luetelmaympyrällä~(\textbullet). \ymparistom{enumerate} puolestaan on +numeroitu luetelma, eli luetelman kohdat saavat järjestysnumeron tai +muun järjestystä ilmaisevan merkinnän kuten kirjaimen tai roomalaisen +numeron. Ympäristö \ymparistom{description} luo määritelmäluetelman, +jossa luetellaan käsitteitä ja niiden määritelmiä. Tämä on käytännössä +sama kuin tekstikappaleen riippuva sisennys (luku +\ref{luku/riippuva-sisennys}), jossa kappale alkaa määriteltävällä +ilmauksella. + +Luetelmien perusrakenne on samanlainen: luetelmaympäristön sisällä +käytetään \komentom{item}\-/ komentoa, joka aloittaa uuden +luetelmakohdan. Komennolle ei tarvitse antaa argumenttia: se vain +aloittaa uuden luetelmakohdan. Seuraavassa on esimerkki +\ymparisto{itemize}\-/ ympäristöstä, mutta \ymparisto{enumerate}\-/ +ympäristöäkin käytetään samalla tavalla: + +\ymparistoi{itemize} +\komentoi{item} +\begin{koodilohkosis} +\begin{itemize} +\item Luetelman ensimmäinen kohta. +\item Toinen kohta heti perään. +\item Kolmaskin kohta on tarpeen. +\end{itemize} +\end{koodilohkosis} + +\noindent +\komento{item}\-/ komennolle voi antaa hakasulkeissa valinnaisen +argumentin. Silloin ei ladota tavanomaista luetelmamerkkiä vaan +argumentin sisältämä teksti tai koodi. + +\komentoi{item} +\begin{koodilohkosis} +\item[--] Tässä kohdassa onkin ajatusviiva (--). +\end{koodilohkosis} + +\begin{esimerkki*} + \ymparistoi{description} + \komentoi{item} + +\begin{koodilohko} +\begin{description} +\item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. +\item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. +\item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimisen ohjelmointikielen. +\end{description} +\end{koodilohko} + + \begin{tulos} + \begin{description} + \item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. + \item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. + \item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimi\-sen ohjelmointikielen. + \end{description} + \end{tulos} + \caption{Käsitteiden määritelmiä ja sen kaltaisia luetelmia voi + toteuttaa \ymparisto{description}\-/ ympäristön avulla. Käsitteet + kirjoitetaan \komento{item}\-/ komennon valinnaiseen argumenttiin} + \label{esim/description} +\end{esimerkki*} + +\noindent +Komennon valinnaista argumenttia hyödynnetään varsinkin +\ymparisto{description}\-/ ympäristössä, jossa luetellaan sanoja tai +käsitteitä ja niiden määritelmiä. Esimerkistä \ref{esim/description} +selviää, kuinka määriteltävät käsitteet ilmaistaan \komento{item}\-/ +komennon valinnaisessa argumentissa. + +Edellä mainittuja luetelmaympäristöjä voi kirjoittaa sisäkkäin: yksi +luetelman kohta (\komento{item}) voi siis aloittaa uuden +luetelmaympäristön. Latex osaa käsitellä neljä sisäkkäistä luetelmaa. + +Latex sisentää sisäkkäiset luetelmat automaattisesti loogisella tavalla +ja vaihtaa eri tasoilla luetelmakohtien merkkiä tai numerointitapaa. +Esimerkiksi ulommaisin \ymparisto{itemize}\-/ ympäristö käyttää +luetelmaympyrää~(\textbullet), mutta sen sisällä oleva käyttää +ajatusviivaa~(\==). Ulommaisin \ymparisto{enumerate}\-/ ympäristö +käyttää arabialaisia numeroita (1, 2, 3 jne.) mutta sen sisällä oleva +kirjaimia (a, b, c jne.). + +\begin{esimerkki*} + \komentoi{renewcommand} + \komentoi{labelitemi} + \komentoi{labelitemii} + \komentoi{labelitemiii} + \komentoi{labelitemiv} + \komentoi{textbullet} + \komentoi{normalfont} + \komentoi{bfseries} + \komentoi{textendash} + \komentoi{textasteriskcentered} + \komentoi{textperiodcentered} + \komentoi{labelenumi} + \komentoi{labelenumii} + \komentoi{labelenumiii} + \komentoi{labelenumiv} + \komentoi{arabic} + \komentoi{alph} + \komentoi{Alph} + \komentoi{roman} + \laskurii{enumi} + \laskurii{enumii} + \laskurii{enumiii} + \laskurii{enumiv} + +\begin{koodilohko} +% itemize-ympäristön luetelmamerkki +\renewcommand{\labelitemi} {\textbullet} % ulommainen luetelma +\renewcommand{\labelitemii} {\normalfont\bfseries\textendash} +\renewcommand{\labelitemiii}{\textasteriskcentered} +\renewcommand{\labelitemiv} {\textperiodcentered} + +% enumerate-ympäristön numerointitapa +\renewcommand{\labelenumi} {\arabic{enumi}.} % ulommainen luetelma +\renewcommand{\labelenumii} {(\alph{enumii})} +\renewcommand{\labelenumiii}{\roman{enumiii}.} +\renewcommand{\labelenumiv} {\Alph{enumiv}.} +\end{koodilohko} + \caption{Luetelmamerkkien ja numerointitapojen muuttaminen + \ymparisto{itemize}\-/\ ja \ymparisto{enumerate}\-/ ympäristöissä. + Esimerkissä näkyvät oletusarvot} + \label{esim/labelitem-labelenum} +\end{esimerkki*} + +Luetelmamerkit ja luetelmien numerointitavat ovat kirjoittajan +muutettavissa. Ympäristössä \ymparisto{itemize} luetelmamerkit tulevat +komennosta, joka alkaa sanoilla \komentox{label\-item} ja jatkuu +luetelman tasoa ilmaisevalla roomalaisella numerolla +\koodi{i}\==\koodi{iv}. Komennot voi määritellä uudelleen haluamallaan +tavalla, kuten esimerkki \ref{esim/labelitem-labelenum} osoittaa. + +\ymparisto{enumerate}\-/ ympäristössä numeroidut kohdat tulevat +komennosta, joka alkaa sanoilla \komentox{label\-enum} ja jatkuu +luetelman tasoa ilmaisevalla roomalaisella numerolla +\koodi{i}\==\koodi{iv}. Numeroidussa luetelmassa käytetään laskureita +\laskuri{enumi}, \laskuri{enumii}, \laskuri{enumiii} ja +\laskuri{enumiv}, joten luetelmakohtien täytyy latoa näiden laskurien +arvo jossakin muodossa. Esimerkki \ref{esim/labelitem-labelenum} +selventää asiaa. + +Numeroiduista luetelmakohdista huolehtivat laskurit nollataan +automaattisesti aina ympäristön alussa. Joskus voi kuitenkin olla +tarpeen aloittaa luetelmakohdat jostain muusta kuin luvusta~1, +kirjaimesta~\textit{a} tms. Silloin kirjoittajan täytyy asettaa laskuri +haluamaansa arvoon \ymparisto{enumerate}\-/ ympäristön sisällä. Seuraava +esimerkki asettaa uloimman luetelman \laskuri{enumi}\-/ laskurin +arvoon~3, joten ensimmäiseksi luetelmakohdaksi tulee~4. + +\ymparistoi{enumerate} +\komentoi{setcounter} +\komentoi{item} +\laskurii{enumi} +\begin{koodilohkosis} +\begin{enumerate} + \setcounter{enumi}{3} +\item Tämä on luetelmakohta numero 4. +\end{enumerate} +\end{koodilohkosis} + +\noindent +Kirjoittaja voi vaikuttaa myös luetelmakohtien sisennykseen ja +pystysuuntaisiin väleihin. Sisennykseen vaikuttavat mitat alkavat +sanoilla \mittax{leftmargin} ja jatkuvat roomalaisella numerolla +\koodi{i}\==\koodi{iv}, joka ilmaisee luetelman tasoa. Ulommaisen +luetelman sisennys ilmaistaan suhteessa sivun tekstialueen reunaan; +sisempien luetelmien sisennys ilmaistaan suhteessa edellisen tason +sisennykseen. Oletuksena Latexin sisennykset ovat melko suuria, joten +niitä on usein tarpeen pienentää, esimerkiksi seuraavan esimerkin +mukaisesti: + +\komentoi{setlength} +\mittai{leftmargini} +\mittai{leftmarginii} +\mittai{leftmarginiii} +\mittai{leftmarginiv} +\begin{koodilohkosis} +\setlength{\leftmargini} {1.5em} % ulommainen luetelma +\setlength{\leftmarginii} {1.5em} +\setlength{\leftmarginiii}{1.5em} +\setlength{\leftmarginiv} {1.5em} +\end{koodilohkosis} + +\noindent +Edellä olevat sisennysasetukset toimivat ympäristöissä +\ymparisto{itemize}, \ymparisto{enumerate} ja \ymparisto{description}. +Mainituissa ympäristöissä voi säätää pystysuuntaisia välejä kolmen +seuraavassa esimerkissä mainitun mitan avulla. Mittojen sijainti +luetelmassa on nähtävissä kuvassa \ref{kuva/list-mitat} +(s.~\pageref{kuva/list-mitat}). Seuraavat komennot on syytä sijoittaa +luetelmaympäristön sisään heti \komento{begin}\-/ komennon jälkeen. + +\komentoi{setlength} +\mittai{parsep} +\mittai{itemsep} +\mittai{parskip} +\begin{koodilohkosis} +\setlength{\parsep} {0bp} % kappaleiden väli +\setlength{\itemsep}{3bp} % luetelmakohtien väli +\setlength{\parskip}{1.2ex} % väli luetelman alussa ja lopussa +\end{koodilohkosis} + +\subsection{Omat luetelmat (list)} +\label{luku/list-ympäristö} + +Ympäristö \ymparistom{list} on yleistyökalu, joka soveltuu moniin +asioihin: se on tarkoitettu erilaisten luetelmien rakentamiseen, mutta +sen avulla muotoilla mitä tahansa tekstikappaleita. Esimerkiksi luvussa +\ref{luku/luetelma-perus} käsitellyt luetelmat voi toteuttaa myös +\ymparisto{list}\-/ ympäristön avulla -- samoin luvuissa +\ref{luku/riippuva-sisennys} ja \ref{luku/lohkolainaukset} käsitellyt +riippuvat sisennykset ja lohkolainaukset. + +Tyypillisesti \ymparisto{list}\-/ ympäristöä ei käytetä dokumentin +kirjoittamisessa sellaisenaan, vaan kirjoittaja määrittelee oman +helppokäyttöisen luetelma\-/\ tai muun ympäristön, ja +\ymparisto{list}\-/ ympäristöä hyödynnetään ympäristön +määrittelemisessä. Omien ympäristöjen tekemistä käsitellään tarkemmin +luvussa \ref{luku/ympäristöt}, mutta tämänkin alaluvun loppupuolella on +esimerkki, joka liittyy nimenomaan \ymparisto{list}\-/ ympäristöön. + +Seuraavassa on esimerkki \ymparisto{list}\-/ ympäristön rakenteesta. Se +muistuttaa luvussa \ref{luku/luetelma-perus} käsiteltyjä perusluetelmia, +mutta lisäksi sille täytyy antaa kaksi argumenttia. Niiden avulla +vaikutetaan luetelman asetuksiin. + +\begin{koodilohkosis} +\begin{list}{merkki}{asetukset} +\item ... +\end{list} +\end{koodilohkosis} + +\noindent +Edellisen esimerkin argumentti \koodi{merk\-ki} sisältää tekstiä tai +koodia, jonka muodostaa luetelmakohdan merkin. Numeroimattomassa +luetelmassa siihen voi laittaa esimerkiksi luetelmaympyrän eli komennon +\komento{textbullet} tai ajatusviivan (\koodi{--}). Numeroidussa +luetelmassa siihen kirjoitetaan komento, joka latoo jonkin laskurin +arvon. + +\ymparisto{list}\-/ ympäristön toinen argumentti \koodi{ase\-tuk\-set} +sisältää mitä hyvänsä koodia, jolla vaikutetaan ympäristön asetuksiin. +Tyypillisesti siinä määritellään käytettävä luetelmalaskuri sekä +asetetaan luetelman ulkoasuun vaikuttavat mitat sopivaksi. Mahdollisesti +siinä myös määritellään luetelmamerkkien latomiseen vaikuttava komento +\komento{makelabel}. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{arabic} + \komentoi{setlength} + \komentoi{usecounter} + \mittai{leftmargin} + \mittai{itemsep} + \mittai{parsep} + \laskurii{enumi} + +\begin{koodilohko} +\begin{list}{\arabic{enumi})}{ + \usecounter{enumi} % käytetään enumi-laskuria + \setlength{\leftmargin}{1.5em} % vasen sisennys + \setlength{\itemsep}{.2ex} % luetelmakohtien väli + \setlength{\parsep}{0ex} % luetelmakappaleiden väli + } +\item Luetelman ensimmäinen kohta. +\item Tässä on vielä toinen +\item ja kolmas kohta. +\end{list} +\end{koodilohko} + \begin{tulos} + \begin{list}{\arabic{enumi})}{ + \usecounter{enumi} % käytetään enumi-laskuria + \setlength{\leftmargin}{1.5em} % vasen sisennys + \setlength{\itemsep}{.2ex} % luetelmakohtien väli + \setlength{\parsep}{0ex} % luetelmakappaleiden väli + } + \item Luetelman ensimmäinen kohta. + \item Tässä on vielä toinen + \item ja kolmas kohta. + \end{list} + \end{tulos} + \caption{\ymparisto{list}\-/ ympäristön argumenttien avulla vaikutetaan + luetelmakohtien merkintätapaan ja mittoihin} + \label{esim/list-perus} +\end{esimerkki*} + +Esimerkissä \ref{esim/list-perus} on yksinkertainen numeroitu luetelma, +joka hyödyntää olemassa olevaa \laskuri{enumi}\-/ laskuria (luku +\ref{luku/luetelma-perus}). Laskurin arvo ladotaan arabialaisilla +numeroilla (\komento{arabic}). Laskurin \laskuri{enumi} sijasta voi +käyttää mitä tahansa omaakin laskuria, kunhan luo sen etukäteen +komennolla \komento{newcounter} (luku \ref{luku/laskurit}). Esimerkissä +asetetaan myös eräitä luetelman sisäisiä mittoja, joista on lisätietoa +myöhemmin tässä alaluvussa sekä kuvassa \ref{kuva/list-mitat}. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{renewcommand} + \komentoi{makelabel} + \komentoi{textsc} + \komentoi{setlength} + \komentoi{item} + \mittai{leftmargin} + \mittai{labelwidth} + \mittai{labelsep} + \mittai{itemindent} + \mittai{itemsep} + +\begin{koodilohko} +\begin{list}{}{ + \renewcommand{\makelabel}[1]{\textsc{#1:}} + \setlength{\leftmargin}{1.5em} + \setlength{\labelwidth}{1.5em} + \setlength{\itemindent}{1em} + \setlength{\labelsep}{1em} + \setlength{\itemsep}{.2ex} + } +\item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. +\item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. +\item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimi\-sen ohjelmointikielen. +\end{list} +\end{koodilohko} + \begin{tulos} + \begin{list}{}{ + \renewcommand{\makelabel}[1]{\textsc{#1:}} + \setlength{\leftmargin}{1.5em} + \setlength{\labelwidth}{1.5em} + \setlength{\itemindent}{1em} + \setlength{\labelsep}{1em} + \setlength{\itemsep}{.2ex} + } + \item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. + \item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. + \item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimi\-sen ohjelmointikielen. + \end{list} + \end{tulos} + \caption{Määritelmäluetelmien tekeminen \ymparisto{list}\-/ ympäristön + avulla. Sisäisesti komento \komento{makelabel} huolehtii + luetelmamerkkien eli tässä käsitteiden nimien latomisesta} + \label{esim/list-makelabel} +\end{esimerkki*} + +Luetelmamerkit \ymparisto{list}\-/ ympäristö latoo siten, että se +suorittaa aina komennon \komento{makelabel} ja antaa sille argumentiksi +kulloisenkin luetelmamerkin eli \ymparisto{list}\-/ ympäristön +ensimmäisenä argumenttina annetun tekstin tai \komento{item}\-/ komennon +valinnaisena argumenttina olevan tekstin. Luetelmamerkki ladotaan sille +varatun alueen oikeaan reunaan. Oletuksena \komento{makelabel}\-/ +komento toimii ikään kuin se olisi määritelty seuraavalla tavalla: + +\komentoi{renewcommand} +\komentoi{makelabel} +\komentoi{hfill} +\begin{koodilohkosis} +\renewcommand{\makelabel}[1]{\hfill #1} +\end{koodilohkosis} + +\noindent +Kirjoittaja voi määritellä \komento{makelabel}\-/ komennon uudelleen +sellaiseksi kuin haluaa. Se on tarpeen esimerkiksi silloin, kun täytyy +latoa kaikki luetelmamerkit eri fontilla kuin muu teksti. Varsinkin +määritelmäluetelmissa (luku \ref{luku/luetelma-perus}), joissa +luetellaan käsitteitä ja niiden määritelmiä, on usein hyödyllistä, että +käsitteet erottuvat muusta tekstistä selvästi. Esimerkki +\ref{esim/list-makelabel} selventää tätä asiaa. + +\leijukuva{ + \begin{tikzpicture} + [x=.01\textwidth, y=.01\textwidth, line width=1bp, rounded corners=2bp] + + \newcommand{\kpl}[1]{\draw (15,#1) -- ++(70,0) -- ++(0,15) + -- ++(-60,0) -- ++(0,-5) -- ++(-10,0) -- cycle} + \newcommand{\nuoli}[2]{\draw [color=mittanuoli, <->] (#1) -- (#2)} + \newcommand{\kyltti}[2]{\draw (#1) node [anchor=west] {#2}} + + \newcommand{\katko}[2]{\draw [color=apuviiva, densely dotted, line + width=.7bp] (#1) -- (#2)} + + \katko{0,10}{0,110}; + \katko{100,10}{100,110}; + + \kpl{80}; + \kpl{55}; + \kpl{25}; + + \draw (0,10) rectangle ++(100,-7); + \node at (50,6) {alapuolinen teksti}; + + \draw (0,110) rectangle ++(100,7); + \node at (50,113) {yläpuolinen teksti}; + + \nuoli{50,110}{50,95}; + \kyltti{51,102.5}{\mitta{topsep} + \mitta{parskip} (+ \mitta{partopsep})}; + + % Ylin kappale + \node at (50,87) {luetelmakohta 1}; + \draw (5,91) rectangle ++(15,4); + \katko{5,98}{5,95}; + \katko{20,98}{20,95}; + \katko{25,98}{25,95}; + \nuoli{5,98}{20,98}; \kyltti{2,102}{\mitta{labelwidth}}; + \nuoli{20,98}{25,98}; \kyltti{20,102}{\mitta{labelsep}}; + \katko{25,90}{25,87}; + \nuoli{15,87}{25,87}; \kyltti{15,84}{\mitta{itemindent}}; + + \nuoli{50,70}{50,80}; + \kyltti{51,75}{\mitta{parsep}}; + + % Keskimmäinen kappale + \node at (50,62) {toinen tekstikappale}; + \nuoli{0,57}{15,57}; + \kyltti{0,52}{\mitta{leftmargin}}; + \nuoli{85,57}{100,57}; + \kyltti{82,52}{\mitta{rightmargin}}; + \katko{15,70}{15,65}; + \nuoli{15,70}{25,70}; + \kyltti{13,74}{\mitta{listparindent}}; + + \nuoli{50,40}{50,55}; + \kyltti{51,47}{\mitta{itemsep} + \mitta{parsep}}; + + % Alin kappale + \node at (50,32) {luetelmakohta 2}; + \draw (5,36) rectangle ++(15,4); + + \nuoli{50,25}{50,10}; + \kyltti{51,17.5}{\mitta{topsep} + \mitta{parskip} (+ \mitta{partopsep})}; + \end{tikzpicture} +}{ + \caption{Luetelmien tekemiseen tarkoitetun \ymparisto{list}\-/ + ympäristön mitat} + \label{kuva/list-mitat} +} + +Luetelmiin liittyviä mittoja on useita, ja ne voi asettaa sopiviin +arvoihin \ymparisto{list}\-/ ympäristön toisen argumentin sisällä. +Mittojen sijainnit on koottu kuvaan \ref{kuva/list-mitat}, ja +seuraavassa on lisätietoa niiden merkityksestä. + +\begin{maaritelma}{\mitta{#1}} +\item [parskip] Pystysuuntainen mitta ja väli, joka ei liity pelkästään + \ymparisto{list}\-/ ympäristöön vaan on yleinen tekstikappaleiden + välinen etäisyysmitta (luku \ref{luku/pystysuuntaiset-välit}). Mitta + on vaikuttaa kuitenkin myös \ymparisto{list}\-/ ympäristöön, ja sen + voi määritellä väliaikaisesti uudelleen ympäristön yhteydessä. +\item [topsep] Pystysuuntainen väli, joka ladotaan ennen ja jälkeen + \ymparisto{list}\-/ ympäristön, yhdessä mittojen \mitta{parskip} ja + \mitta{partopsep} kanssa. +\item [partopsep] Pystysuuntainen väli, joka lisätään + \ymparisto{list}\-/ ympäristöä ennen ja sen jälkeen silloin, kun + ympäristö aloittaa uuden tekstikappaleen eli sitä ennen on tyhjä rivi. +\item [parsep] Pystysuuntainen väli, joka tulee luetelman sisällä + kaikkien luetelmakohtien väliin sekä saman luetelmakohdan eri + tekstikappaleiden väliin. +\item [itemsep] Pystysuuntainen väli, joka tulee luetelman sisällä + luetelmakohtien väliin. +\item [leftmargin] Luetelman kappaleiden vasen sisennys. +\item [rightmargin] Luetelman kappaleiden oikea sisennys. Oletusarvo on + nolla. +\item [labelwidth] Luetelmamerkin leveys. Merkki ladotaan oletuksena + tämän alueen oikeaan reunaan, mutta se riippuu \komento{makelabel}\-/ + komennon on määrittelystä. Jos luetelmamerkki on leveämpi kuin + \mitta{labelwidth}\-/ mitta, luetelman teksti siirtyy oikealle siten, + että merkki mahtuu kokonaan. Luetelmamerkin alueen vasen reuna + sijaitsee kohdassa, jonka voi laskea seuraavasta kaavasta: + \mitta{leftmargin} − \mitta{labelwidth} + \mitta{itemindent} − + \mitta{labelsep}. Mikäli haluaa, että luetelmamerkin vasen reuna on + sisennyksen nollakohdassa, täytyy edellä mainitut mitat asettaa siten, + että mittojen yhteistulos on nolla. Esimerkissä + \ref{esim/list-makelabel} on tehty juuri näin. +\item [labelsep] Vaakasuuntainen väli luetelmamerkin jälkeen, ennen + luetelman sisältötekstiä. Oletusarvo on 0,5\,em. +\item [itemindent] Ylimääräinen luetelmakohtien ensimmäisen rivin + sisennys. Tätä voi tarvita, kun haluaa säätää luetelmamerkin vasemman + reunan tiettyyn kohtaa. Katso mitta \mitta{labelwidth} edellä. + Oletusarvo on nolla. +\item [listparindent] Luetelmakohtien toisen ja sitä seuraavien + tekstikappaleiden ensimmäisen rivin sisennys. Oletusarvo on nolla. +\end{maaritelma} + +\noindent +Kun on lopulta saanut \ymparisto{list}\-/ ympäristön asetukset +kohdalleen ja luetelmat ovat sellaisia kuin pitääkin, on varmaankin hyvä +aika luoda oma ympäristö, joka piilottaa asetukset yhden +ympäristömäärittelyn sisään. Omaa ympäristöä on sitten helppoa käyttää +useitakin kertoja omassa lähdedokumentissa. + +\begin{esimerkki*} + \komentoi{newenvironment} + \komentoi{setlength} + \komentoi{textbullet} + \mittai{itemsep} + \mittai{labelsep} + \mittai{leftmargin} + \mittai{parsep} + \ymparistoi{list} + +\begin{koodilohko} +\newenvironment{numeroimaton}[1][\textbullet]{% + \begin{list}{#1}{ + \setlength{\leftmargin}{1.1em} + \setlength{\labelsep}{.2em} + \setlength{\itemsep}{.4ex plus .1ex} + \setlength{\parsep}{.2ex} + } + }{\end{list}} +\end{koodilohko} + \caption{Oman numeroimattoman luetelman tekeminen \ymparisto{list}\-/ + ympäristön avulla} + \label{esim/list-oma-numeroimaton} +\end{esimerkki*} + +\begin{esimerkki*} + \komentoi{arabic} + \komentoi{bfseries} + \komentoi{hfill} + \komentoi{large} + \komentoi{makelabel} + \komentoi{newenvironment} + \komentoi{renewcommand} + \komentoi{setcounter} + \komentoi{setlength} + \komentoi{usecounter} + \laskurii{enumi} + \mittai{itemsep} + \mittai{labelsep} + \mittai{leftmargin} + \mittai{parsep} + \ymparistoi{list} + +\begin{koodilohko} +\newenvironment{numeroitu}[1][0]{% + \begin{list}{\arabic{enumi}.}{ + \usecounter{enumi} + \setcounter{enumi}{#1} + \renewcommand{\makelabel}[1]{\hfill\bfseries\large ##1} + \setlength{\leftmargin}{2em} + \setlength{\labelsep}{.5em} + \setlength{\itemsep}{.4ex plus .1ex} + \setlength{\parsep}{.2ex} + } + }{\end{list}} +\end{koodilohko} + \caption{Oman numeroidun luetelman tekeminen \ymparisto{list}\-/ + ympäristön avulla} + \label{esim/list-oma-numeroitu} +\end{esimerkki*} + +Esimerkissä \ref{esim/list-oma-numeroimaton} on vinkkejä oman +numeroimattoman luetelman tekemiseen. Luetelma on nimeltään +\ymparistox{numeroimaton}, ja sille voi antaa hakasulkeissa valinnaisen +argumentin, jolla valitaan luetelmamerkki. Oletuksena se on +luetelmaympyrä (\komento{textbullet}). + +Esimerkki \ref{esim/list-oma-numeroitu} tekee numeroidun ympäristön +nimeltä \ymparistox{numeroitu}. Tälle ympäristölle voi antaa valinnaisen +argumentin, jolla ilmaistaan numerointilaskurin alkukohta. Oletuksena se +on nolla, eli luetelmakohtien numerointi alkaa luvusta~1. Tämä ympäristö +määrittelee myös \komento{makelabel}\-/ komennon siten, että +luetelmanumerot ladotaan lihavoituna (\komento{bfseries}) ja suuremmalla +fontilla (\komento{large}). Numerot myös tasataan luetelmamerkille +varatun tilan oikeaan reunaan (\komento{hfill}). Huomaa, että parametri +\koodi{\#1} kuuluu \ymparistox{numeroitu}\-/ ympäristön määritelmään ja +parametri \koodi{\#\#1} kuuluu sisempään, \komento{renewcommand}\-/ +komennolla tehtävään määritelmään. Katso lisätietoa komentojen +määrittelyä käsittelevästä luvusta \ref{luku/komennot-määrittely}. + +\section{Taulukot} +\label{luku/taulukot} + +Taulukoiden tekemiseen on perus Latexissa kaksi ympäristöä +\ymparisto{tabular} ja \ymparisto{tabular*}, joskin jälkimmäisen tilalle +sopii yleensä paremmin \paketti{tabularx}\-/ paketin ympäristö +\ymparisto{tabularx}. Ennen varsinaista taulukoiden tekniikkaa +käsitellään kuitenkin niiden sijoittamista ja typografiaa. + +Taulukon voi sijoittaa dokumenttiin eri tavoin. Yksi mahdollisuus on +sijoittaa taulukot normaalin tekstivirran mukaan omiksi +tekstikappaleikseen. Pieni pystysuuntainen väli on silloin tarpeen ennen +ja jälkeen taulukon. Jos tekstikappaleiden välissä ei ole normaalisti +ole väliä (\mitta{parskip}\-/ mitta), täytyy sellainen lisätä käsin. +Pystysuuntaisia välejä käsitellään luvussa +\ref{luku/pystysuuntaiset-välit}. Taulukolle tulee oletuksena sama +sisennys kuin tekstikappaleiden ensimmäisellä rivillä on eli mitta +\mitta{parindent} (luku \ref{luku/ensimmäisen-rivin-sisennys}). Jos +sisennyksen haluaa pois, täytyy käyttää komentoa \komento{noindent}. + +Toinen tyypillinen vaihtoehto on sijoittaa taulukko vaakasuunnassa sivun +keskelle, jolloin se erottuu muusta tekstistä vielä selvemmin. Tämän voi +toteuttaa kirjoittamalla taulukkoympäristö \ymparisto{center}\-/ +ympäristön sisään (\ref{luku/kappaleen-tasaus}). + +Kolmas vaihtoehto on tehdä taulukosta leijuva eli antaa Latexin +sijoittaa se sopivaan paikkaan. Samalla taulukolle annetaan kuvateksti +ja yksilöllinen tunniste, niin että siihen voi viitata tekstistä. +Leijuvia osia ja ristiviitteitä käsitellään luvuissa +\ref{luku/leijuosat} ja \ref{luku/ristiviitteet}. + +Taulukkojen ulkoasua ja helppolukuisuutta käsittelevät ohjeet yleensä +neuvovat, että pystyviivoja ei pitäisi juuri käyttää. Ne häiritsevät +vasemmalta oikealle lukemista ja vaikeuttavat katseen tarkentamista +solujen sisältöön. Tavallinen sarakkeiden välinen tyhjä tila on yleensä +riittävä erottamaan solut toisistaan. + +Se on hyvä yleisohje, mutta sitä tuskin kannattaa pitää ihan ehdottomana +sääntönä. Joskus on tarpeen jakaa sarakkeet mielekkäisiin ryhmiin ja +nimenomaan ohjata katsetta pystysuunnassa tiettyjä sarakkeita pitkin. +Katseen ei välttämättä haluta lipsuvan tietyn kohdan yli, ja pystyviiva +sopii hyvin siihen tarkoitukseen. Tämän luvun esimerkeissä käytetään +paljon vaaka- ja pystyviivoja, jotta lukija hahmottaa helposti, miten +esimerkkikoodin solut ovat yhteydessä ladottuun taulukkoon. Käytännössä +viivoja ei kannata käyttää niin paljon, vaan pari vaakaviivaa yleensä +riittää. + +\subsection{Perustoiminnot} + +Taulukoiden perusympäristö on \ymparisto{tabular}, jonka rakenne on +seuraava: + +\komentoi{\keno} +\ymparistoi{tabular} +\begin{koodilohkosis} +\begin{tabular}[sijainti]{sarakkeet} + solu 1 & solu 2 \\ + solu 3 & solu 4 \\ +\end{tabular} +\end{koodilohkosis} + +\noindent +Ympäristön valinnainen argumentti \koodi{sijainti} määrittelee +taulukkoympäristön sijainnin pystysuunnassa, jos se on samassa +kappaleessa muun tekstin kanssa. Oletusarvo on \koodi{c} +(\englanti{center}), joka tarkoittaa, että pystysuunnassa taulukon +peruslinja on sen keskellä. Muut vaihtoehdot ovat \koodi{t} +(\englanti{top}), eli taulukon peruslinja on yläreunassa, ja \koodi{b} +(\englanti{bottom}), eli taulukon peruslinja on sen alareunassa. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Tyyppi} & \ots{Merkitys} \\ + \midrule + \rivi{l}{vasemmalle tasattu sarake (\englanti{left})} + \rivi{c}{keskitetty sarake (\englanti{center})} + \rivi{r}{oikealle tasattu sarake (\englanti{right})} + \rivi{p\{m\}}{sarake, jonka leveys on mitta \koodi{m}} + \midrule + \rivi{|}{sarakkeiden välissä pystyviiva} + \rivi{@\{…\}}{sarakkeiden välissä olevaa tekstiä tai komentoja} + \rivi{*\{n\}\{s\}}{toistetaan \koodi{n} kertaa sarakkeet \koodi{s}} + \bottomrule + \end{tabular} +}{ + \caption{Taulukoiden saraketyyppien ja sarakkeiden välien määrittely} + \label{tlk/taulukko-sarakemerkit} +} + +Ensimmäinen pakollinen argumentti \koodi{sarakkeet} määrittelee +taulukon sarakkeiden määrän ja tyypin. Ne ilmaistaan tietyillä +kirjaimilla tai muilla merkeillä, jotka on koottu taulukkoon +\ref{tlk/taulukko-sarakemerkit}. Taulukon neljä ensimmäistä tyyppiä +\koodi{lcrp} määrittelevät, millaisesta sarakkeesta on kyse. Syntyvässä +taulukossa tulee olemaan niin monta saraketta kuin näitä on ympäristön +\koodi{sarakkeet}\-/ argumentissa. Kolme ensin mainittua luovat +sarakkeen, jonka leveys määräytyy sarakkeen leveimmän solun perusteella. +Neljäs eli saraketyyppi \koodi{p} tarvitsee aaltosulkeissa argumentiksi +mitan (luku \ref{luku/mitat}), ja sillä ilmaistaan sarakkeen kiinteä +leveys. Tässä saraketyypissä teksti tasataan solun molemmista reunoista +eli sanavälit voivat venyä. + +Merkit \koodi{|} ja \koodi{@} voi sijoittaa edellä mainittujen +saraketyyppien väliin tai ennen ensimmäistä saraketta tai viimeisen +sarakkeen jälkeen. Ensin mainittu tekee sarakkeiden väliin pystyviivan. +Viiva yltää taulukon kaikille riveille, mutta komennolla +\komento{multicolumn} voi tehdä rivikohtaisia poikkeuksia. Tätä komentoa +käsitellään myöhemmin. Merkki \koodi{@} tarvitsee argumentin +aaltosulkeissa. Se voi olla mitä hyvänsä tekstiä tai komentoja, jotka +halutaan suorittaa joka rivillä sarakkeiden välissä. + +Sarakemerkki \koodi{*} on vain keino toistaa tiettyjä sarakemäärityksiä +useamman kerran. Se tarvitsee aaltosulkeissa kaksi argumenttia: +ensimmäinen on luku, ja toinen sisältää mitä hyvänsä edellä mainittuja +saraketyyppejä. Nämä sarakkeet toistuvat luvun ilmaiseman määrän. +Esimerkiksi \koodi{*\{3\}\{rl|\}} tarkoittaa samaa kuin +\koodi{rl|rl|rl|}. + +\begin{esimerkki*} + \komentoi{\keno} + \komentoi{arraystretch} + \komentoi{cline} + \komentoi{hline} + \komentoi{hspace} + \komentoi{renewcommand} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{tabular}{|l@{\hspace{4em}}r|c|} + \hline + Vasen & Oikea & Keskitetty \\[.5ex] + \hline + 16 & 32 & 11732 \\ + \cline{1-2} + 71 & 87235 & 2 \\ + \cline{3-3} + 1235 & 238 & 982 \\ + \hline +\end{tabular} +\end{koodilohko} + + \begin{tulos} + \versaalinum + \renewcommand{\arraystretch}{1.3} + \begin{tabular}{|l@{\hspace{4em}}r|c|} + \hline + Vasen & Oikea & Keskitetty \\[.5ex] + \hline + 16 & 32 & 11732 \\ + \cline{1-2} + 71 & 87235 & 2 \\ + \cline{3-3} + 1235 & 238 & 982 \\ + \hline + \end{tabular} + \end{tulos} + + \caption{Taulukoiden erilaisia saraketyyppejä ja viivoja} + \label{esim/taulukkomäärityksiä} +\end{esimerkki*} + +Esimerkki \ref{esim/taulukkomäärityksiä} havainnollistaa taulukon +ominaisuuksia ja eri saraketyyppejä. Sitä tuskin kannattaa pitää +typografisena esimerkkinä, mutta tarkoituksena on osoittaa eri +saraketyyppien toiminta käytännössä. Sarakkeiden välissä on yleensä +pystyviiva, mutta yhdessä välissä on \koodi{@\{\dots\}}\=/ merkeillä +määritelty komento \komento{hspace}, jolla tehdään poikkeuksellisen +leveä (4\,em) tyhjä tila sarakkeiden väliin. + +Rivillä olevat peräkkäiset solut erotetaan toisistaan \koodi{\&}\=/ +merkillä, ja taulukon rivi täytyy päättää aina \komento{\keno}\=/ +komentoon. Tälle rivinvaihtokomennolle voi antaa hakasulkeissa yhden +argumentin. Se on mitta ja tarkoittaa, kuinka paljon ylimääräistä +pystysuuntaista tyhjää tilaa halutaan rivin jälkeen, esimerkiksi +\komento{\keno}\komentoargv{.5ex}. + +Vaakasuuntainen, koko taulukon levyinen viiva tehdään komennolla +\komento{hline} ja määrämittaisia viivoja komennolla \komento{cline}. +Tälle komennolle täytyy antaa yksi argumentti, joka sisältää kaksi +yhdysmerkillä erotettua lukua. Luvuilla ilmaistaan, mistä sarakkeesta +mihin sarakkeeseen viiva yltää. + +\subsection{Asetuksia} + +Taulukon rivit saatetaan latoa oletuksena vähän liian lähelle toisiaan +-- varsinkin jos käytetään vaakaviivoja. Sen korjaamiseksi on +taulukoille olemassa oma rivivälikerroin, joka on komennossa +\komentom{arraystretch}. Kerroin on desimaaliluku, jolla normaali +rivikorkeus kerrotaan taulukoiden sisällä. Sopiva kerroin lienee yleensä +1\==1,3. Oletusarvo on~1. Kerroinkomennon voi määritellä milloin hyvänsä +uudelleen, ja se tehdään seuraavan esimerkin mukaisesti: + +\komentoi{renewcommand} +\komentoi{arraystretch} +\begin{koodilohkosis} +\renewcommand{\arraystretch}{1.3} +\end{koodilohkosis} + +\noindent +Sarakkeiden määrittelyssä voi kirjoittaa useita pystyviivoja eli +\koodi{|}\=/ merkkejä peräkkäin. Silloin pystyviivoja ladotaan +taulukkoon useita vierekkäin. Viivojen väliseen etäisyyteen voi +vaikuttaa mitan \mittam{doublerulesep} avulla. Sen oletusarvo on 2\,pt. +Kaikkien viivoja paksuus puolestaan on mitassa \mittam{arrayrulewidth}, +jonka oletusarvo on 0,4\,pt. + +Jos sarakkeiden välissä ei ole \koodi{@}\=/ merkillä tehtyjä +poikkeuksia, ladotaan joka solun vasempaan ja oikeaan reunaan väli, joka +on määritelty mitassa \mittam{tabcolsep}. Tämän mitan suuruinen väli +siis ladotaan kerran taulukon vasempaan ja oikeaan reunaan ja kaksi +kertaa jokaisen sarakkeen väliin. Oletusarvo on 6\,pt. Seuraavassa on +koonti edellä mainittujen mittojen asettamisesta ja niiden oletusarvot. + +\komentoi{setlength} +\mittai{doublerulesep} +\mittai{arrayrulewidth} +\mittai{tabcolsep} +\begin{koodilohkosis} +\setlength{\doublerulesep}{2pt} +\setlength{\arrayrulewidth}{.4pt} +\setlength{\tabcolsep}{6pt} +\end{koodilohkosis} + +\noindent +Sarakemääritelmässä voi \koodi{@}\=/ merkillä säätää sarakkeiden välit +täysin haluamansa laiseksi. Esimerkiksi merkeillä \koodi{@\{\}} +sarakeväli poistetaan kokonaan. Jos \koodi{@\{\dots\}}\=/ määrittelyyn +halutaan mukaan normaali sarakkeiden pystyviiva, täytyy käyttää komentoa +\komento{vline}, esimerkiksi seuraavasti: + +\komentoi{\keno} +\komentoi{hspace} +\komentoi{vline} +\ymparistoi{tabular} +\begin{koodilohkosis} +\begin{tabular}{|l@{\hspace{1em}\vline\hspace{1em}}l|} + ensimmäinen & toinen \\ +\end{tabular} +\end{koodilohkosis} + +\subsection{Poikkeuksellisia sarakkeita ja rivejä} + +Taulukkoympäristön argumenteissa määritellään taulukon sarakkeiden määrä +tyypit, mutta siihen on mahdollista tehdä yksittäisiä poikkeuksia +taulukon sisällä. Sarakekohtaiset poikkeukset tehdään komennolla +\komentom{multicolumn} ja rivikohtaiset poikkeukset komennolla +\komentom{multirow}, joka kuuluu pakettiin \pakettictan{multirow}. + +\begin{esimerkki*} + \komentoi{\keno} + \komentoi{multicolumn} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{tabular}{|r@{}l|} + \multicolumn{2}{l}{Tulokset} \\ + \hline + 425 & ,34 \\ + 4 & ,021 \\ + 32 & \\ + 0 & ,75 \\ + \hline +\end{tabular} +\end{koodilohko} + + \begin{tulos} + \renewcommand{\arraystretch}{1.2} + \versaalinum + \begin{tabular}{|r@{}l|} + \multicolumn{2}{l}{Tulokset} \\ + \hline + 425 & ,34 \\ + 4 & ,021 \\ + 32 & \\ + 0 & ,75 \\ + \hline + \end{tabular} + \end{tulos} + + \caption{Desimaalilukujen tasaaminen pilkun kohdalta, ja + poikkeuksellisten sarakkeiden tekeminen \komento{multicolumn}\-/ + komennolla} + \label{esim/taulukko-desimaalipilkku} +\end{esimerkki*} + +Esimerkissä \ref{esim/taulukko-desimaalipilkku} on taulukoitu lukuja, +jotka halutaan latoa samaan linjaan desimaalipilkun kohdalta. +Tasaamisessa hyödynnetään kahden sarakkeen rajakohtaa: luvun +kokonaislukuosa ja desimaaliosa tasataan tätä rajakohtaa vasten -- +toinen oikealle~(\koodi{r}), toinen vasemmalle~(\koodi{l}). Sarakeväli +on poistettu tästä kohdasta kokonaan \koodi{@\{\}}\=/ merkeillä. + +Esimerkkitaulukon otsikko ''Tulokset'' halutaan kuitenkin sijoittaa +desimaalilukujen koko leveydelle eli kahden sarakkeen päälle. Lisäksi +otsikkoriviltä halutaan poistaa pystyviivat, jotka muutoin ladotaan +taulukon reunoille. Näihin asioihin tarvitaan komentoa +\komento{multicolumn}, joka on tarkoitettu poikkeuksellisten +sarakemääritysten tekemiseen. Komentoa käytetään seuraavasti: + +\komentoi{multicolumn} +\begin{koodilohkosis} +\multicolumn{n}{sarakkeet}{teksti} +\end{koodilohkosis} + +\noindent +Komennon \komento{multicolumn} voi sijoittaa mihin hyvänsä taulukon +soluun. Komennon ensimmäinen argumentti \koodi{n} on luku ja ilmaisee, +kuinka monen sarakkeen alueeseen vaikutetaan. Toinen argumentti +\koodi{sarak\-keet} sisältää uuden sarakemäärittelyn tälle alueelle, ja +se tehdään taulukon \ref{tlk/taulukko-sarakemerkit} merkkien avulla. +Kolmas argumentti on teksti, joka ladotaan tähän uudella tavalla +määriteltyyn alueeseen. + +Edellä on käsitelty vain soluja, joissa on yksirivinen teksti, mutta +tietyissä tilanteissa yhteen soluun voidaan latoa useampia rivejä. +Saraketyyppi~\koodi{p} (taulukko \ref{tlk/taulukko-sarakemerkit}) on +leveydeltään kiinteä, ja jos solun sisältö ei mahdu kyseiseen tilaan, se +pyritään jakamaan useammalle riville. Sanoja mahdollisesti katkaistaan +tavurajojen kohdalta. Myös \komentom{newline}\-/ komennolla voi vaihtaa +riviä yksittäisen solun sisällä. Sekin toimii vain kiinteäleveyksisillä +\koodi{p}\-/ tyypin sarakkeilla. + +Seuraavassa on esimerkki, kuinka yhden solun sisältö voi jakautua +kahdelle riville. Teknisessä mielessä taulukkorivien määrä ei kuitenkaan +kasva, vaan muihin saman taulukkorivin soluihin tulee tyhjää tilaa. + +\komentoi{\keno} +\komentoi{hline} +\ymparistoi{tabular} +\begin{koodilohkosis} +\begin{tabular}{|l|p{6.5em}|l|} + \hline solu & Tämä ei mahdu yhdelle riville. & solu \\ \hline +\end{tabular} +\end{koodilohkosis} + +\begin{tulossis} + \renewcommand{\arraystretch}{1.2} + \begin{tabular}{|l|p{6.5em}|l|} + \hline solu & Tämä ei mahdu yhdelle riville. & solu \\ \hline + \end{tabular} +\end{tulossis} + +\noindent +Joskus puolestaan halutaan, että yksi solu levittäytyy useamman rivin +alueelle verrattuna taulukon muihin riveihin. Tämän toteutukseen +tarvitaan \pakettim{multirow}\-/ pakettia ja sen \komentom{multirow}\-/ +komentoa. Komennon pakolliset argumentit ovat seuraavat: + +\komentoi{multirow} +\begin{koodilohkosis} +\multirow{n}{leveys}{teksti} +\end{koodilohkosis} + +\noindent +Ensimmäinen argumentti \koodi{n} on luku, joka ilmaisee, kuinka monen +rivin alueelle solu levitetään. Toinen argumentti \koodi{leveys} on +tekstin leveyttä ilmaiseva mitta. Argumentiksi voi kirjoittaa pelkän +tähden (\koodi{*}), jolloin käytetään tekstin luonnollista leveyttä. +Kolmas argumentti on teksti, joka ladotaan tähän pystysuunnassa +laajennettuun soluun. + +Komennolla on myös valinnaisia argumentteja, jotka ilmaistaan +hakasulkeiden avulla. Tässä niistä tärkeimmät: + +\komentoi{multirow} +\begin{koodilohkosis} +\multirow[sijainti]{n}{leveys}[pysty]{teksti} +\end{koodilohkosis} + +\noindent +Edellisen esimerkin valinnainen argumentti \koodi{sijainti} on kirjain, +jolla ilmaistaan solun sisällön pystysuuntainen asemointi ylös, keskelle +tai alas: \koodi{t} (\englanti{top}), \koodi{c} (\englanti{center}, +oletus) tai \koodi{b} (\englanti{bottom}). Valinnainen argumentti +\koodi{pysty} on mitta, jolla hienosäädetään solun sisällön sijaintia +pystysuunnassa. Positiivinen mitta siirtää sisältöä ylöspäin, +negatiivinen alaspäin. + +Komennon muista mahdollisuuksista kannattaa lukea \paketti{multirow}\-/ +paketin ohjekirjasta. Esimerkki \ref{esim/taulukko-multirow} +havainnollistaa komennon peruskäyttöä. \komento{multirow}\-/ komento +kirjoitetaan siihen soluun, josta monirivinen solu alkaa. Sen +alapuolelta täytyy jättää riittävä määrä soluja tyhjäksi. + +\begin{esimerkki*} + \komentoi{\keno} + \komentoi{cline} + \komentoi{hline} + \komentoi{multirow} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{tabular}{|l|l|l|} + \hline + \multirow{2}{*}{kaksirivinen solu} & tavallisia & soluja \\ + \cline{2-3} + & kahdella & rivillä \\ + \hline +\end{tabular} +\end{koodilohko} + + \begin{tulos} + \renewcommand{\arraystretch}{1.3} + \begin{tabular}{|l|l|l|} + \hline + \multirow{2}{*}[-1bp]{kaksirivinen solu} & tavallisia & soluja \\ + \cline{2-3} + & kahdella & rivillä \\ + \hline + \end{tabular} + \end{tulos} + + \caption{\paketti{multirow}\-/ paketin \komento{multirow}\-/ + komennolla voi levittää yhden solun useamman rivin alueelle} + \label{esim/taulukko-multirow} +\end{esimerkki*} + +\subsection{Kiinteälevyiset taulukot} + +Latexin toinen taulukkoympäristö \ymparistom{tabular*} toimii muuten +samalla tavalla kuin \ymparisto{tabular}, mutta se tarvitsee yhden +argumentin lisää, taulukon leveysmitan: + +\ymparistoi{tabular*} +\begin{koodilohkosis} +\begin{tabular*}{leveys}[sijainti]{sarakkeet} + ... +\end{tabular*} +\end{koodilohkosis} + +\noindent +Valitettavasti taulukon leveysmittaa voi hyödyntää vain rajallisesti. Se +vaikuttaa taulukon leveyteen silloin, kun sarakkeiden välit on +määritelty venyviksi käyttämällä seuraavaa sarakevälin määritystä: + +\komentoi{extracolsep} +\mittai{fill} +\begin{koodilohkosis} +@{\extracolsep{\fill}} +\end{koodilohkosis} + +\noindent +Edellisestä on tärkeää huomata, että sarakkeiden leveydet eivät veny +vaan ainoastaan niiden välissä oleva tyhjä tila. Usein olisi kuitenkin +hyödyllisempää, että joidenkin sarakkeiden leveys olisi venyvä ja ne +mukautuisivat koko taulukon leveyteen. Tämä ominaisuus saadaan +\pakettictan{tabularx}\-/ paketin avulla. Se määrittelee uuden +taulukkoympäristön \ymparistom{tabularx}, joka on käytännössä parempi +versio \ymparisto{tabular*}\-/ ympäristöstä. Sen käyttö on samanlaista: + +\ymparistoi{tabularx} +\begin{koodilohkosis} +\begin{tabularx}{leveys}[sijainti]{sarakkeet} + ... +\end{tabularx} +\end{koodilohkosis} + +\noindent +Ympäristö \ymparisto{tabularx} sisältää yhden uuden +saraketyypin:~\koodi{X} (vrt. taulukko +\ref{tlk/taulukko-sarakemerkit}). Tämä saraketyyppi toimii kuten +tyyppi~\koodi{p}, mutta sille ei anneta argumentiksi mittaa, vaan sen +leveys on äärettömästi venyvä. Tämäntyyppiset sarakkeet täyttävät siis +kaiken vapaana olevan tilan, ja jos niitä on useita, ne ovat oletuksena +keskenään yhtä leveitä. Tämä ilmenee seuraavasta esimerkistä: + +\komentoi{hline} +\mittai{linewidth} +\ymparistoi{tabularx} +\begin{koodilohkosis} +\begin{tabularx}{\linewidth}{|l|X|X|} + \hline luonnollinen & venyvä & venyvä \\ \hline +\end{tabularx} +\end{koodilohkosis} + +\begin{tulossis} + \renewcommand{\arraystretch}{1.2} + \begin{tabularx}{\linewidth}{|l|X|X|} + \hline luonnollinen & venyvä & venyvä \\ \hline + \end{tabularx} +\end{tulossis} + +\noindent +Saraketyypissä \koodi{X} teksti tasataan oletuksena solujen +molemmista reunoista, mutta siihen on mahdollista vaikuttaa +sijoittamalla sarakemäärittelyssä \koodi{>}\=/ merkki ja sen +aaltosulkeissa olevat argumentit ennen \koodi{X}\=/ merkkiä. +Argumentiksi kirjoitetaan sopivia asetuskomentoja. Seuraava +sarakemäärittely tekee vasemmalle tasatun \koodi{X}\=/ sarakkeen: + +\komentoi{raggedright} +\komentoi{arraybackslash} +\begin{koodilohkosis} +>{\raggedright\arraybackslash}X +\end{koodilohkosis} + +\noindent +Sarakkeen solujen tasaaminen vasemmalle tulee komennon +\komento{raggedright} vaikutuksesta (luku \ref{luku/kappaleen-tasaus}). +Sen perään tarvitaan myös komento \komento{arraybackslash}, koska +\komento{raggedright} määrittelee \komento{\keno}\=/ rivinvaihtokomennon +uudelleen tavalla, joka on ristiriidassa taulukon rivien lopussa +tarvittavan vastaavan komennon kanssa. \komento{arraybackslash} +palauttaa määritelmän sellaiseksi, että se toimii taulukossa. + +\paketti{tabularx}\-/ paketin myötä voi määritellä omiakin +saraketyyppejä. Hyödyllisiä tyyppejä voisivat olla esimerkiksi +\koodi{LCR}, jotka toimisivat lähes samoin kuin perus Latexin +saraketyypit \koodi{lcr} (taulukko \ref{tlk/taulukko-sarakemerkit}) +mutta olisivat kuitenkin leveydeltään venyviä. Omia saraketyyppejä +tehdään komennolla \komentom{newcolumntype}, ja edellä mainitut tyypit +voisi määritellä seuraavasti: + +\komentoi{arraybackslash} +\komentoi{centering} +\komentoi{newcolumntype} +\komentoi{raggedleft} +\komentoi{raggedright} +\begin{koodilohkosis} +\newcolumntype{L}{>{\raggedright\arraybackslash}X} +\newcolumntype{C}{>{\centering\arraybackslash}X} +\newcolumntype{R}{>{\raggedleft\arraybackslash}X} +\end{koodilohkosis} + +\noindent +Mitä hyvänsä saraketyyppejä voi tehdä vastaavalla tavalla. Esimerkiksi +taulukon ensimmäiseen, otsikoita ilmaisevaan saraketyyppiin \koodi{O} +voitaisiin laittaa fonttikomento, jotta koko sarake ladotaan +automaattisesti eri kirjainleikkauksella kuin muu taulukko. + +\komentoi{newcolumntype} +\komentoi{bfseries} +\begin{koodilohkosis} +\newcolumntype{O}{>{\bfseries}l} % lihavoitu otsikkosarake +\end{koodilohkosis} + +\noindent +Ympäristön \ymparisto{tabularx} käyttöön liittyy tiettyjä rajoituksia: +sitä ei voi käyttää normaalisti omien ympäristöjen määrittelyssä (luku +\ref{luku/ympäristöt}). Esimerkiksi seuraava ympäristön määrittely ei +käytännössä toimi: + +\komentoi{newenvironment} +\ymparistoi{tabularx} +\mittai{linewidth} +\begin{koodilohkosis} +\newenvironment{omataulukko}[1] +{\begin{tabularx}{\linewidth}{#1}} +{\end{tabularx}} +\end{koodilohkosis} + +\noindent +Edellä mainitun puutteen saa korjattua käyttämällä oman ympäristön +määrittelyssä \ymparisto{tabularx}\-/ ympäristön aloitukseen komentoa +\komentom{tabularx} ja lopetukseen komentoa \komentom{endtabularx}. Ei +siis käytetä normaaleja aloitus\-/\ ja lopetuskomentoja \komento{begin} +ja \komento{end}. + +\komentoi{newenvironment} +\komentoi{tabularx} +\komentoi{endtabularx} +\mittai{linewidth} +\begin{koodilohkosis} +\newenvironment{omataulukko}[1] +{\tabularx{\linewidth}{#1}} +{\endtabularx} +\end{koodilohkosis} + +\subsection{Muita paketteja} + +\paketti{tabularx}\-/ paketin kanssa samankaltainen on paketti +\pakettictan{tabulary}, jossa on joitakin erilaisia ominaisuuksia. Se +muun muassa sisältää valmiiksi uudet saraketyypit \koodi{LCRJ}. + +Edellä esitellyt taulukkoympäristöt ladotaan aina kokonaisena eli vain +yhden sivun alueelle. Useammalle sivulle jakautuvia taulukoita voi tehdä +\pakettictan{longtable}\-/ paketin taulukkoympäristön +\ymparistom{longtable} avulla. Sitä voi käyttää kuten +\ymparisto{tabular}\-/ ympäristöä, mutta lisäksi se sisältää komentoja, +joiden avulla saa joka sivulla toistumaan automaattisesti tietyt +otsikkorivit tai yhteenvetorivit. Toinen mahdollisuus yli sivurajan +yltävien taulukon kaltaisten rakenteiden tekemiseen ovat sarkaimet, +joita käsitellään luvussa \ref{luku/sarkaimet}. + +Hyödyllinen taulukoiden apupaketti on \pakettictan{booktabs}, jonka +avulla saa tyylikkäämpiä ja erilaisia vaakaviivoja. Paketin komennot +\komento{toprule}, \komento{midrule}, \komento{bottomrule} ja +\komento{cmidrule} piirtävät rivien väliin erilaisia viivoja ja +huolehtivat myös niiden ylä- ja alapuolisesta välistä paremmin kuin +Latexin omat viivakomennot. + +Taulukon rivien taustan voi värittää \pakettictan{xcolor}\-/ paketin +(luku \ref{luku/korostus-värit}) komentojen avulla. Varsinkin leveiden +taulukoiden lukemista voi helpottaa, jos rivien eri taustavärit +vuorottelevat. Tarkemmat tiedot selviävät paketin ohjekirjasta, mutta +seuraavan esimerkin avulla ominaisuutta pääsee kokeilemaan: + +\komentoi{rowcolors} +\komentoi{usepackage} +\pakettii{xcolor} +\begin{koodilohkosis} +\usepackage[table]{xcolor} % lähdedokumentin esittelyosaan +\rowcolors{1}{blue!10}{red!10} % ennen taulukkoympäristöjä +\end{koodilohkosis} + +\section{Sarkaimet} +\label{luku/sarkaimet} + +Sarkaimet ovat ennalta määritettyjä vaakasuuntaisia sisennys\-/\ tai +tasauskohtia. Niitä voi hyödyntää tekstin tasaamisessa tiettyihin +kohtiin rivillä. Suomenkielisissä asiakirjoissa sarkainkohdat ovat 23 +millimetrin välein, mutta jos ei ole kirjoittamassa virallista +asiakirjaa, voi kirjoittaja määrittää sarkainkohdat niin kuin haluaa. + +Ajatus sarkaimista on vanha, sillä mekaanisissa kirjoituskoneissakin oli +sarkainnäppäin (\englanti{tab, tabular}), joka siirsi telaa eteenpäin +seuraavaan sarkainkohtaan. Se helpotti tekstirivien tasaamista tiettyyn +kohtaan ja sen myötä taulukoiden kirjoittamista. + +Latexissa on taulukoita varten omatkin ympäristönsä (luku +\ref{luku/taulukot}), mutta jos ei tarvitse varsinaista taulukkoa vaan +ainoastaan yksittäisiä tasauskohtia, voi olla kätevämpää käyttää +\ymparisto{tabbing}\-/ sarkainympäristöä tai rakentaa sisennykset +näkymättömien laatikoiden avulla. Näitä käsitellään seuraavissa +alaluvuissa. + +\subsection{Sarkainympäristö} + +Sarkaimet voi toteuttaa niitä varten tehdyn ympäristön eli +\ymparisto{tabbing}\-/ ympäristön avulla. Esimerkki +\ref{esim/tabbing-perus} havainnollistaa ympäristön peruskäyttöä. +Rivillä~2 asetetaan kaikki sarkainkohdat eli tehdään vaakasuuntaisia +välejä \komento{hspace}\-/ komennolla ja merkitään sarkainkohdat +\komento{=}\=/ komennoilla. Tämän rivin lopussa on komento +\komento{kill}, joka hylkää rivin eli jättää sen latomatta. Seuraavien +rivien lopussa on aina \komento{\keno}\-/ komento -- paitsi viimeisellä +rivillä ennen ympäristön lopetuskomentoa. Rivin sisällä seuraavaan +sarkainkohtaan hypätään \komento{>}\-/ komennolla. + +\begin{esimerkki*} + \ymparistoi{tabbing} + \komentoi{hspace} + \komentoi{kill} + \komentoi{=} + \komentoi{>} + +\begin{koodilohko} +\begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + Tässä \> on \\ + \> eri \> tavoin \\ + \>\> sisennettyä \\ + \>\>\> tekstiä. +\end{tabbing} +\end{koodilohko} + + \begin{tulos} + \begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + Tässä \> on \\ + \> eri \> tavoin \\ + \>\> sisennettyä \\ + \>\>\> tekstiä. + \end{tabbing} + \end{tulos} + \caption{Sarkainkohtien määrittely ja käyttö \ymparisto{tabbing}\-/ + ympäristössä} + \label{esim/tabbing-perus} +\end{esimerkki*} + +\ymparisto{tabbing}\-/ ympäristön sisällä on käytettävissä muutama +muukin erikoiskomento, joilla vaikutetaan sarkainten käsittelyyn. +Seuraavassa kerrotaan ympäristön kaikkien erityiskomentojen merkitys, ja +esimerkissä \ref{esim/tabbing-erikois} havainnollistetaan joidenkin +komentojen käyttöä. + +\begin{maaritelma}{\komento{#1}} +\item [\keno] Rivinvaihto, joka täytyy kirjoittaa jokaisen rivin + loppuun, lukuun ottamatta viimeistä riviä ennen ympäristön + lopetuskomentoa (\komento{end}). +\item [kill] Rivinvaihto, joka hylkää kyseisen rivin. Tämä on + käyttökelpoinen sarkainkohtien määrittelyrivillä, jota itsessään ei + ehkä haluta latoa näkyviin. +\item [=] Sarkainkohdan määrittäminen komennon kohdalle. +\item [>] Hyppää seuraavaan sarkainkohtaan nykyisellä rivillä. +\item [+] Siirtää seuraavan rivin aloituskohtaa yhden sarkaimen verran + oikealle siitä, missä se oli ennestään. +\item [-] Siirtää seuraavan rivin aloituskohtaa yhden sarkaimen verran + vasemmalle siitä, missä se oli ennestään. +\item [<] Siirtää nykyisen rivin aloituskohdan yhden sarkaimen verran + vasemmalla. Tätä komentoa voi käyttää vain rivin alussa ja vain + silloin, kun rivin aloituskohtaa on sisennetty aiemmin \komento{+}\-/ + komennolla. Tämä komento ei muuta pysyvästi rivin aloituskohdan + asetusta, joka on tehty komennolla \komento{+} tai \komento{-}. +\item ['] Latoo komentoa edeltävän tekstin nykyisen sarkainkohdan + vasemmalle puolelle ja tasaa tekstin oikeasta reunasta. Tekstin oikean + reunan ja sarkainkohdan väliin tulee mitan \mitta{tabbingsep} + suuruinen väli. +\item [`] Tasaa komennon jälkeisen tekstin sivun oikeaan reunaan. +\item [pushtabs] Tallentaa nykyiset sarkainkohdat muistiin. Tämän + jälkeen sarkainasetuksia voi muuttaa ja alkuperäiset asetukset + palauttaa \komento{poptabs}\-/ komennolla. +\item [poptabs] Palauttaa aiemmin \komento{pushtabs}\-/ komennolla + tallennetut sarkainkohdat käyttöön. +\item [a'] Latoo akuuttiaksentin (\'a) seuraavaan kirjaimeen. Vastaa + \komento{'}\-/ komentoa \ymparisto{tabbing}\-/ ympäristön ulkopuolella + (taulukko \ref{tlk/tarkkeet}, s.~\pageref{tlk/tarkkeet}). +\item [a`] Latoo gravisaksentin (\`a) seuraavaan kirjaimeen. Vastaa + \komento{`}\-/ komentoa \ymparisto{tabbing}\-/ ympäristön + ulkopuolella. +\item [a=] Latoo pituusmerkin (\=a) seuraavaan kirjaimeen. Vastaa + \komento{=}\-/ komentoa \ymparisto{tabbing}\-/ ympäristön + ulkopuolella. +\end{maaritelma} + +\begin{esimerkki*} + \komentoi{'} + \komentoi{+} + \komentoi{-} + \komentoi{<} + \komentoi{=} + \komentoi{>} + \komentoi{`} + \komentoi{a'} + \komentoi{a`} + \komentoi{a=} + \komentoi{hspace} + \komentoi{kill} + \komentoi{setlength} + \mittai{tabbingsep} + \ymparistoi{tabbing} + +\begin{koodilohko} +\setlength{\tabbingsep}{0mm} +\begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + tässäpä \> kaikki \> eri \> sarkainkohdat \+ \\ + valmiiksi sisennetty \+ \\ + vielä enemmän sisennetty \- \\ + vähemmän sisennetty \>\> oikealle\' \\ + \< poikkeuksellisesti sisennetty vähemmän \` täysin oikealla \\ + paluu aiempaan sisennystasoon ja tarkkeita: \a'{a}\a`{a}\a={a} +\end{tabbing} +\end{koodilohko} + + \begin{tulos} + \setlength{\tabbingsep}{0mm} + \begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + tässäpä \> kaikki \> eri \> sarkainkohdat \+ \\ + valmiiksi sisennetty \+ \\ + vielä enemmän sisennetty \- \\ + vähemmän sisennetty \>\> oikealle\' \\ + \< poikkeuksellisesti sisennetty vähemmän \` täysin oikealla \\ + paluu aiempaan sisennystasoon ja tarkkeita: \a'{a}\a`{a}\a={a} + \end{tabbing} + \end{tulos} + + \caption{Erikoisempia sarkaintoimintoja \ymparisto{tabbing}\-/ + ympäristössä} + \label{esim/tabbing-erikois} +\end{esimerkki*} + +\subsection{Laatikkototeutus} + +Sarkainkohtia sisältävän rivin voi varsin helposti toteuttaa laatikoiden +(luku \ref{luku/laatikot}) avulla. Varsinkin \komento{makebox}\-/ +komento soveltuu hyvin, koska laatikolla ei ole reunaviivoja ja laatikon +leveyden ja sisällön tasauksen voi asettaa. Seuraavassa esimerkissä +määritetään sarkainten leveysmitta \mittax{sarkainleveys} ja komento +\komentox{sarkain}, jolla tekstiä voi kirjoittaa tietyn levyiseen +laatikkoon. + +\komentoi{newlength} +\komentoi{setlength} +\komentoi{newcommand} +\komentoi{makebox} +\komentoi{ignorespaces} +\begin{koodilohkosis} + \newlength{\sarkainleveys} + \setlength{\sarkainleveys}{23mm} + \newcommand{\sarkain}[3][l]{% + \makebox[#2\sarkainleveys][#1]{#3}\ignorespaces} +\end{koodilohkosis} + +\noindent +Näin määritelty \komentox{sarkain}\-/ komento tarvitsee ainakin kaksi +argumenttia: ensimmäinen argumentti on kerroin, kuinka monen sarkaimen +levyinen laatikko tehdään; toinen argumentti on teksti, joka ladotaan +tähän laatikkoon. Ennen pakollisia argumentteja voi antaa myös +valinnaisen argumentin hakasulkeissa: se on laatikon sisällön tasaus, ja +oletus on vasempaan reunaan. Katso lisätietoa \komento{makebox}\-/ +komennon argumenteista luvusta \ref{luku/laatikot-pienet}. Esimerkki +\ref{esim/sarkain-laatikot} havainnollistaa sarkainten toteuttamista +laatikoiden avulla. + +\begin{esimerkki*} + \komentoi{newlength} + \komentoi{setlength} + \komentoi{newcommand} + \komentoi{makebox} + \komentoi{ignorespaces} + \komentoi{noindent} + +\begin{koodilohko} +\newlength{\sarkainleveys} +\setlength{\sarkainleveys}{23mm} +\newcommand{\sarkain}[3][l]{% + \makebox[#2\sarkainleveys][#1]{#3}\ignorespaces} + +\noindent +\sarkain{1}{ensin} \sarkain{1}{kaikki} \sarkain{1}{eri} sarkainkohdat \\ +\sarkain{1}{} sarkaimen verran sisennetty rivi \\ +\sarkain{2}{jotain tekstiä} \sarkain[r]{1}{oikealle} \\ +\sarkain{1}{} \sarkain[c]{2}{keskitetty} +\end{koodilohko} + + \begin{tulos} + \newlength{\sarkainleveys} + \setlength{\sarkainleveys}{23mm} + \newcommand{\sarkain}[3][l]{% + \makebox[#2\sarkainleveys][#1]{#3}\ignorespaces} + + \noindent + \sarkain{1}{ensin} \sarkain{1}{kaikki} \sarkain{1}{eri} sarkainkohdat \\ + \sarkain{1}{} sarkaimen verran sisennetty rivi \\ + \sarkain{2}{jotain tekstiä} \sarkain[r]{1}{oikealle} \\ + \sarkain{1}{} \sarkain[c]{2}{keskitetty} + \end{tulos} + + \caption{Sarkainten toteutus laatikoiden avulla} + \label{esim/sarkain-laatikot} +\end{esimerkki*} + +\section{Leijuvat osat} +\label{luku/leijuosat} + +Leijuvat osat ovat sellaisia dokumentin osia -- käytännössä +ympäristöjä~--, joita ei ladota normaalin leipätekstin sekaan tiettyyn +kohtaan. Ne ''leijuvat'' irrallaan muusta tekstivirrasta, ja Latex +huolehtii niiden sijoittelusta. Leijuvilla osilla on yleensä kuvateksti, +jonka alussa on sen tyyppi ja numero, esimerkiksi ''\figurename~1'' tai +''\tablename\ 4.2''. Näiden perässä on varsinainen kuvateksti, joka +kertoo kyseisen leijuvan osan sisällöstä tai merkityksestä. +Leipätekstistä usein viitataan leijuviin osiin käyttämällä ilmauksia +kuten ''kuvassa~1''. Näissä hyödynnetään Latexin ristiviittaustoimintoja +(luku \ref{luku/ristiviitteet}). + +Perus Latex sisältää kaksi erityyppistä leijuvaa osaa, kuvat ja taulukot +(luku \ref{luku/leijuosat-latex}), mutta \pakettim{floatrow}\-/ paketin +avulla niitä voi tehdä muitakin (luku \ref{luku/leijuosat-omat}). +Esimerkiksi tässä oppaassa on käytössä myös tyyppi ''Esimerkki'', jota +käytetään leijuvien Latex\-/ koodiesimerkkien toteuttamiseen. + +Koska Latex huolehtii leijuvien osien sijoittamisesta, niiden lopullinen +järjestyskin voi hieman poiketa siitä, miten ne ovat Latex\-/ +lähdedokumentissa. Tosin samantyyppiset leijuvat osat, esimerkiksi +kuvat, ladotaan aina siinä järjestyksessä kuin ne ovat +lähdedokumentissa. Sen sijaan erityyppiset leijuvat osat saatetaan latoa +eri järjestyksessä: esimerkiksi jokin taulukko saatetaan latoa ennen +tiettyä kuvaa, vaikka ne olisivat lähdedokumentissa päinvastaisessa +järjestyksessä. Latex pyrkii latomaan hyvännäköisiä sivuja, ja leijuvien +osien sijoittelulla se voi vaikuttaa asiaan. + +\subsection{Leijuvat taulukot ja kuvat} +\label{luku/leijuosat-latex} + +Käytännössä leijuvat osat ovat ympäristöjä, joiden sijoittelusta vastaa +Latex eikä kirjoittaja. Tosin kirjoittajakin voi hieman vaikuttaa +asiaan, ja tätä käsitellään luvussa \ref{luku/leijuosat-sijoittelu}. +Ympäristö \ymparistom{table} on tarkoitettu taulukoille, ja ympäristö +\ymparistom{figure} on kuville. Esimerkistä \ref{esim/leijuosat-perus} +ilmenee leijuvan taulukon toteuttamisen perusasiat. Muuntyyppiset +leijuvat osat tehdään samalla tavalla, ympäristö on vain eri. + +\begin{esimerkki*} + \komentoi{arraystretch} + \komentoi{caption} + \komentoi{hline} + \komentoi{renewcommand} + \ymparistoi{center} + \ymparistoi{table} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{table} + \begin{center} + \renewcommand{\arraystretch}{1.3} + \begin{tabular}{ll} + Upeita & Lukuja \\ + \hline + 324 & 33 \\ + 2 & 49 \\ + \hline + \end{tabular} + \end{center} + \caption{Upea kuvateksti.} +\end{table} +\end{koodilohko} + + \caption{Leijuvan taulukon toteuttaminen \ymparisto{table}\-/ + ympäristön avulla. Varsinainen taulukko syntyy ympäristön + \ymparisto{tabular} avulla} + \label{esim/leijuosat-perus} +\end{esimerkki*} + +Latex sinänsä ei ota kantaa siihen, mitä leijuva ympäristö sisältää, eli +\ymparisto{table}\-/ ympäristön sisällä ei tarvitse olla +taulukkoympäristöä (luku \ref{luku/taulukot}), eikä +\ymparisto{figure}\-/ ympäristön sisällä ole pakko olla kuvaa (luku +\ref{luku/grafiikka}). Valitut ympäristöt vaikuttavat kuitenkin +kuvatekstiin: \ymparisto{table}\-/ ympäristön kuvatekstiin tulee suomen +kieliasetuksilla sana ''\tablename'', ja \ymparisto{figure}\-/ +ympäristössä se on ''\figurename''. Nimet tulevat komennoista +\komento{tablename} ja \komento{figurename}, jotka kirjoittaja voi +määrittää uudelleen. Se kannattaa tehdä dokumentin esittelyosassa +seuraavalla tavalla: + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{figurename} +\komentoi{tablename} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\tablename}{Taulukko} + \renewcommand{\figurename}{Kuva} +} +\end{koodilohkosis} + +\noindent +Edellä käytettiin \komento{addto}\-/ komentoa, joka kuuluu +kielipaketteihin \paketti{polyglossia} ja \paketti{babel}. Sillä +lisätään omia komentoja tietyn kielen asetuksiin, tässä suomen +kieliasetuksiin (\komento{captionsfinnish}). Kieliasetuksia käsitellään +tarkemmin luvussa \ref{luku/kieliasetukset}. + +Kuvatekstit tehdään komennolla \komentom{caption}, joka sijoitetaan +leijuvan ympäristön sisälle, kuten esimerkissä +\ref{esim/leijuosat-perus} on tehty. Komennolle annetaan yksi argumentti +eli haluttu kuvateksti. Siihen ei pidä kirjoittaa leijuvan osan tyyppiä +eikä numeroa (esim. ''\tablename~3''), sillä nämä Latex tekee +automaattisesti. \komento{caption}\-/ komennolle voi antaa myös +valinnaisen argumentin, jolla ilmaistaan kuvatekstistä lyhempi versio: + +\komentoi{caption} +\begin{koodilohkosis} +\caption[lyhyt kuvateksti]{varsinainen pitkä kuvateksti} +\end{koodilohkosis} + +\noindent +Varsinainen (pitkä) kuvateksti ladotaan aina leijuvan osan yhteyteen ja +lyhempää versiota käytetään mahdollisesti luettelossa (luku +\ref{luku/leijuosat-luettelot}) ja ristiviitteissä. Kuvatekstin eli +\komento{caption}\-/ komennon jälkeen leijuvaan ympäristöön lisätään +usein yksilöllinen tunniste ristiviittausta varten. Se tehdään +\komento{label}\-/ komennolla, jota käsitellään ristiviitteiden +yhteydessä luvussa \ref{luku/ristiviitteet}. + +Leijuvista ympäristöistä on olemassa myös tähdelliset versiot, +\ymparistom{table*} ja \ymparistom{figure*}. Ympäristöjen eri versioilla +on merkitystä vain kaksipalstaisessa tilassa (luku \ref{luku/palstat}), +jossa normaaliversio (esim. \ymparisto{table}) ladotaan yhden palstan +sisään ja tähdellinen versio (esim. \ymparisto{table*}) sijoitetaan +palstojen ulkopuolelle, koko sivun tilaan. + +\subsection{Muut leijuvat osat} +\label{luku/leijuosat-omat} + +Omia, itse nimettyjä leijuvia osia tehdään \pakettictan{floatrow}\-/ +paketin avustuksella. Se sisältää komennon on +\komentom{DeclareNewFloatType}, jonka argumentit ovat seuraavanlaiset: + +\komentoi{DeclareNewFloatType} +\begin{koodilohkosis} +\DeclareNewFloatType{tyyppi}{valitsimet} +\end{koodilohkosis} + +\noindent +Komennon ensimmäinen argumentti \koodi{tyyppi} on leijuvan osan tyyppi +ja käytännössä myös ympäristön nimi. Jos tyypiksi antaa sanan +\koodi{esimerkki}, syntyy leijuvat ympäristöt \ymparistox{esimerkki} ja +\ymparistox{esimerkki*}. Argumentin \koodi{valitsimet} avulla voi +vaikuttaa tarkemmin leijuvan osan ominaisuuksiin. Mahdolliset valitsimet +on koottu taulukkoon \ref{tlk/declarenewfloat}. Eri valitsimet erotetaan +toisistaan pilkulla, eli komentoa käytetään esimerkin +\ref{esim/declarenewfloat} tavoin. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{\englanti{#1}} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{name}{kuvateksteissä näkyvä tyyppi} + \rivi{placement}{sijoitteluasetukset} + \rivi{fileext}{väliaikaistiedoston pääte} + \rivi{within}{ylemmäntasoinen laskuri} + % \rivi{relatedcapstyle}{??} + \bottomrule + \end{tabular} +}{ + \caption{\komento{DeclareNewFloatType}\-/ komennon valitsimia, joilla + vaikutetaan leijuvan osan ominaisuuksiin. Komento kuuluu + \paketti{floatrow}\-/ pakettiin} + \label{tlk/declarenewfloat} +} + +\begin{esimerkki*} +\komentoi{DeclareNewFloatType} + +\begin{koodilohko} +\DeclareNewFloatType{esimerkki}{ + name=Esimerkki, + placement=tbp, + fileext=loesim, + within=chapter +} +\end{koodilohko} + +\caption{\komento{DeclareNewFloatType}\-/ komennon käyttö. Komento + kuuluu \paketti{floatrow}\-/ pakettiin} +\label{esim/declarenewfloat} +\end{esimerkki*} + +Valitsimen \koodi{name} arvo näkyy kuvateksteissä leijuvan osan +tyyppinä. Valitsimella \koodi{placement} tehdään sijoitteluasetuksia, +joita käsitellään luvussa \ref{luku/leijuosat-sijoittelu}. Käytännössä +ne ovat tiettyjä kirjaimia, joilla vaikutetaan leijuvan osan +sijoitteluun. Oletusarvo on \koodi{tbp}. + +Valitsin \koodi{file\-ext} on tiedoston pääte. Leijuvien osien +luetteloita tehtäessä Latex käyttää väliaikaistiedostoa, ja sen päätteen +voi valita tällä valitsimella. Luetteloissa on tapana käyttää +tiedostopäätettä, joka alkaa kirjaimilla \koodi{lo} (\englanti{list + of}). Latexin omissa leijuvissa osissa päätteet ovat \koodi{lot} +(\englanti{list of tables}) ja \koodi{lof} (\englanti{list of figures}). +Oletuksena omille leijuville osille tulee päätteeksi \koodi{lo}, jonka +perässä on osan tyyppi. + +Valitsimen \koodi{within} avulla vaikutetaan leijuvien osien numeroinnin +riippuvuuteen muista laskureista. Oletuksena leijuvan osan laskuri ei +ole riippuvainen muista laskureista eli osat numeroidaan dokumentin +alusta saakka yhdellä luvulla. Arvoksi voi antaa myös Latexin laskurin +nimen: mielekkäitä arvoja ovat esimerkiksi \laskuri{chapter} ja +\laskuri{section}. Vaikutus on se, että leijuvan osan laskuri on +riippuvainen näistä laskureista ja nollautuu aina, kun toisen laskurin +arvo kasvaa. Lisäksi kuvateksteissä näkyy kaksiosainen numerointi (4.1, +4.2, 4.3 jne.), jossa ensimmäinen luku on ylemmäntasoisen laskurin arvo +-- esimerkiksi kirjan pääluvun numero -- ja toinen on leijuvan osan +laskurin arvo. Tällaisia hierarkkisia laskureita käsitellään tarkemmin +luvussa \ref{luku/hierarkkiset-laskurit}. Leijuvan osan numeroinnin +ulkoasun muokkaamista käsitellään luvussa \ref{luku/leijuosat-ulkoasu}. + +\subsection{Leijuvien osien luettelot} +\label{luku/leijuosat-luettelot} + +Dokumentin leijuvista osista voi latoa automaattisesti luetteloita: +komennolla \komentom{listoftables} syntyy taulukkoluettelo ja komennolla +\komentom{listoffigures} kuvaluettelo. Omien leijuvien osien (luku +\ref{luku/leijuosat-omat}) luettelo tehdään \paketti{floatrow}\-/ +paketin komennolla \komento{listof}, jolle annetaan argumentiksi +leijuvan osan tyyppi sekä luettelon otsikko. + +\komentoi{listoftables} +\komentoi{listoffigures} +\komentoi{listof} +\begin{koodilohkosis} +\listoftables % taulukkoluettelo (table) +\listoffigures % kuvaluettelo (figure) +\listof{esimerkki}{Esimerkit} % luettelo esimerkki-tyyppisistä osista +\end{koodilohkosis} + +\noindent +Leijuvien osien luettelot muistuttavat sisällysluetteloita (luku +\ref{luku/sisällysluettelo}), eli niille tulee automaattisesti otsikko +kuten ''\listtablename'' tai ''\listfigurename'' ja automaattisesti +sisältö eli kaikki \komento{caption}\-/ komennolla ilmaistut (lyhyet) +kuvatekstit sekä tietysti sivunumerot. + +\begin{esimerkki*} + \komentoi{addvspace} + \komentoi{contentslabel} + \komentoi{contentspage} + \komentoi{rmfamily} + \komentoi{small} + \komentoi{titlecontents} + \komentoi{titlerule*} + +\begin{koodilohko} +\titlecontents{table} % tyyppi: table +[8mm] % vasen sisennys (mitta) +{\addvspace{3bp}\rmfamily\small} % yläpuolinen koodi +{\contentslabel{8mm}} % numeroitu kohta +{} % numeroimaton kohta +{~\small\titlerule*[3mm]{.}\contentspage} % pisteviiva ja sivunumero +[] % alapuolinen koodi +\end{koodilohko} + \caption{Leijuvien osien ulkoasua muokataan \komento{titlecontents}\-/ + komennolla, joka on peräisin \paketti{titletoc}\-/ paketista} + \label{esim/leijuosat-titlecontents} +\end{esimerkki*} + +Leijuvien osien luettelojen ulkoasua voi muokata samalla tavalla kuin +sisällysluetteloidenkin: käytetään pakettia \pakettictan{titletoc} ja +määritellään sen \komento{titlecontents}\-/ komennolla luettelokohtien +ulkoasu. Esimerkistä \ref{esim/leijuosat-titlecontents} selvinnee +perusajatus, ja lisätietoa on sisällysluetteloita käsittelevässä luvussa +\ref{luku/sisällysluettelo} sekä tietysti paketin ohjekirjassa. + +Latexin omien leijuvien osien luetteloiden otsikot tulevat +kieliasetuksista ja komennoista \komento{listtablename} ja +\komento{listfigurename}, jotka kirjoittaja voi määritellä uudestaan. +Järkevää on tehdä se lähdedokumentin esittelyosassa ja käyttää +\komento{addto}\-/ komentoa, jolla asetukset lisätään tietyn kielen +asetuksiin. + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{listfigurename} +\komentoi{listtablename} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\listtablename}{Omat taulukot} + \renewcommand{\listfigurename}{Omat kuvat} +} +\end{koodilohkosis} + +\noindent +Luetteloihin saa lisättyä omia rivejä samoilla keinoilla kuin +sisällysluetteloihinkin eli komennolla \komento{addcontentsline}. +Komennon ensimmäinen argumentti on luettelon tyyppiä vastaavan tiedoston +pääte. Tyyppi \koodi{lot} (\englanti{list of tables}) on taulukoille ja +tyyppi \koodi{lof} (\englanti{list of figures}) on kuville. Omilla +leijuvilla osilla (luku \ref{luku/leijuosat-omat}) se on jotakin muuta +ja valitaan osan määrittelyn yhteydessä. + +\komentoi{addcontentsline} +\begin{koodilohkosis} +\addcontentsline{lot}{table}{Ylimääräinen taulukko} +\addcontentsline{lof}{figure}{Ylimääräinen kuva} +\end{koodilohkosis} + +\noindent +Komennon toinen argumentti tarkoittaa luettelomerkinnän tasoa (vrt. +otsikkotasot). Leijuvien osien luetteloissa on vain yksi taso, ja siihen +kirjoitetaan kyseisen leijuvan osan tyyppi eli ympäristön nimi, +esimerkiksi \ymparisto{table} tai \ymparisto{figure}. Komennon kolmas +argumentti on luetteloon lisättävä merkintä. + +\subsection{Sijoittelu sivulle} +\label{luku/leijuosat-sijoittelu} + +Latex sijoittaa leijuvat osat yleensä sivun yläosaan, joskus alaosaan +tai omalle sivulleen, jossa ei ole leipätekstiä lainkaan. Yksittäisen +ympäristön sijoitteluun voi vaikuttaa valinnaisen argumentin avulla: + +\ymparistoi{figure} +\begin{koodilohkosis} +\begin{figure}[sijainti] + ... +\end{figure} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{cl} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{t}{sivun yläosaan (\englanti{top})} + \rivi{b}{sivun alaosaan (\englanti{bottom})} + \rivi{p}{leijuvien osien sivulle (\englanti{page})} + \rivi{h}{mieluiten tähän kohtaan (\englanti{here})} + \rivi{H}{ehdottomasti tähän kohtaan (\englanti{here}, + \paketti{floatrow})} + \rivi{!}{ei huomioida tiettyjä sijoittelurajoituksia} + \bottomrule + \end{tabular} +}{ + \caption{Leijuvien osien sijoitteluun voi vaikuttaa ympäristön + valinnaisen argumentin avulla. Valitsin \koodi{H} on + \paketti{floatrow}\-/ paketin ominaisuus} + \label{tlk/leijuosat-sijoittelukirjaimet} +} + +\noindent +Valinnainen argumentti \koodi{sijainti} on tietty merkki tai merkkien +yhdistelmä, jolla vaikutetaan leijuvan osan sijoitteluun. Taulukossa +\ref{tlk/leijuosat-sijoittelukirjaimet} ovat mahdolliset vaihtoehdot. +Oletusarvo on \koodi{tbp}, eli sen mukaan leijuva osa pyritään +sijoittamaan ensisijaisesti sivun yläosaan (\koodi{t}) mutta +mahdollisesti myös alaosaan (\koodi{b}) tai omalle sivulleen (\koodi{p}) +muiden leijuvien osien kanssa. + +Vaihtoehto \koodi{h} pyrkii latomaan leijuvan osan siihen kohtaan kuin +se on lähdetiedostossa. Se on kuitenkin vain ehdotus eikä useinkaan +toteudu: Latex lisää automaattisesti aina \koodi{h}\=/ valitsimen perään +\koodi{t}:n eli sivun yläosaan sijoittamisen. Latex käyttää sitä, jos se +saa sillä tavoin omasta mielestään paremman lopputuloksen. Lataamalla +paketin \pakettictan{floatrow} voi käyttää myös myös valitsinta +\koodi{H}. Se tarkoittaa ehdotonta vaatimusta, että juuri tähän kohtaan +leijuva osa pitää sijoittaa. Tätä valitsinta ei voi yhdistää muiden +valitsimien kanssa. + +Valitsinta \koodi{!} käytetään yhdessä edellä mainittujen valitsimien +\koodi{tbp} kanssa. Se poistaa tietyt sijoitteluun vaikuttavat säännöt +tai rajoitukset. Niitä käsitellään seuraavaksi. + +Leijuvien osien automaattisessa sijoittelussa vaikuttaa kymmenen +erilaista parametria, joihin kirjoittaja voi vaikuttaa: kolme laskuria, +kolme mittaa ja neljä komentoa. Joillekin asetuksille on olemassa +rinnakkainen versio, jota käytetään kahden palstan tilassa (luku +\ref{luku/palstat}). Ne koskevat leijuvien ympäristöjen tähdellisiä +versiota, kuten \ymparisto{table*} ja \ymparisto{figure*}, eli +tilannetta, jossa leijuva osa ei ole palstojen sisällä, vaan koko sivun +leveys on käytettävissä. + +Seuraavat kolme laskuria vaikuttavat sivulle ladottavien leijuvien osien +enimmäismäärään. Ne koskevat tilannetta, jossa sivulla on myös +tavallista leipätekstiä tai muuta sisältöä. Laskureille asetetaan uusi +arvo komennolla \komento{setcounter} (luku \ref{luku/laskurit}). Näiden +laskurien vaikutuksen voi poistaa kokonaan käyttämällä leijuvan +ympäristön valitsinta \koodi{!} (taulukko +\ref{tlk/leijuosat-sijoittelukirjaimet}). + +\begin{maaritelma}{\laskuri{#1}} +\item [topnumber] Sivun yläosaan sijoitettavien leijuvien osien + enimmäismäärä. Oletusarvo on~2. Kahden palstan tilassa käytetään + laskuria \laskuri{dbltopnumber}. +\item [bottomnumber] Sivun alaosaan sijoitettavien leijuvien osien + enimmäismäärä. Oletusarvo on~1. Kahden palstan tilassa leijuvia osia + ei sijoiteta sivun alaosaan täysilevyisenä. +\item [totalnumber] Samalla sivulla olevien leijuvien osien + enimmäismäärä, kun sivulla on myös tavallista leipätekstiä. Oletusarvo + on~3. +\end{maaritelma} + +\noindent +Seuraavat kolme mittaa vaikuttavat leijuvien osien pystysuuntaisiin +väleihin. Mitat asetetaan komennolla \komento{setlength} (luku +\ref{luku/mitat}). + +\begin{maaritelma}{\mitta{#1}} +\item [floatsep] Samalla sivulla kahden peräkkäisen leijuvan osan + pystysuuntainen väli. Oletusarvo on venyvä mitta \koodi{12pt plus 2pt + minus 2pt}. Kahden palstan tilassa käytetään mittaa + \mitta{dblfloatsep}. +\item [textfloatsep] Leijuvan osan ja leipätekstin välinen + pystysuuntainen väli. Oletusarvo on venyvä mitta \koodi{20pt plus 2pt + minus 4pt}. Kahden palstan tilassa käytetään mittaa + \mitta{dbltextfloatsep}. +\item [intextsep] Pystysuuntainen väli leipätekstin ja leijuvan osan + välissä silloin, kun leijuva osa sijoitetaan tekstivirran sekaan. Tämä + koskee sijoitteluasetuksia \koodi{h} ja \koodi{H} (taulukko + \ref{tlk/leijuosat-sijoittelukirjaimet}). Oletusarvo vaihtelee + dokumenttiluokan fonttikokoasetusten (luku + \ref{luku/perusdokumenttiluokat-asetukset}) perusteella. Jos + dokumenttiluokan valitsin on \koodi{10pt} (oletus) tai \koodi{11pt}, + oletusmitta on \koodi{12pt plus 2pt minus 2pt}. Dokumenttiluokan + valitsimella \koodi{12pt} oletus on \koodi{14pt plus 4pt minus 4pt}. +\end{maaritelma} + +\noindent +Seuraavat neljä komentoa sisältävät pelkän desimaaliluvun 0\==1. Luku +kertoo leijuvien osien tai leipätekstin viemän suhteellisen tilan +samalla sivulla. Komennot määritellään uudelleen komennolla +\komento{renewcommand} (luku \ref{luku/komennot-määrittely}). Näiden +vaikutuksen voi poistaa kokonaan leijuvan ympäristön valitsimella +\koodi{!} (taulukko \ref{tlk/leijuosat-sijoittelukirjaimet}). + +\begin{maaritelma}{\komento{#1}} +\item [topfraction] Sivun yläosaan sijoitettavien leijuvien osien viemä + enimmäistila suhteessa sivun tekstialueen korkeuteen. Oletusarvo + on~\koodi{0.7}, mikä tarkoittaa, että leijuvat osat voivat viedä + korkeintaan 0,7\=/ kertaisesti (70\,\%) sivulla olevan pystysuuntaisen + tilan. Kahden palstan tilassa käytetään komentoa + \komento{dbltopfraction}. +\item [bottomfraction] Sivun alaosaan sijoitettavien leijuvien osien + viemä enimmäistila suhteessa sivun tekstialueen korkeuteen. Oletusarvo + on~\koodi{0.3} (30\,\%). Kahden palstan tilassa leijuvia osia ei + koskaan sijoiteta sivun alaosaan. +\item [textfraction] Leipätekstin vähimmäistila sivulla, kun samalla + sivulla on myös leijuvia osia. Oletusarvo on \koodi{0.2} (20\,\%). +\item [floatpagefraction] Omalle sivulleen sijoitettavien leijuvien + osien vähimmäistila sivun tekstialueen korkeudesta. Toisin sanoen + leijuvien osien täytyy viedä vähintään tämän verran tilaa sivulta, + ennen kuin ne sijoitetaan omalle sivulleen, jossa ei ole leipätekstiä + lainkaan. Oletusarvo on~\koodi{0.5} (50\,\%). Kahden palstan tilassa + käytetään komentoa \komento{dblfloatpagefraction}. +\end{maaritelma} + +\noindent +Sivunvaihtokomennot \komento{clearpage} ja \komento{cleardoublepage} +(luku \ref{luku/sivunvaihdot}) pakottavat kaikki aiemmin +lähdetiedostossa olleet leijuvat osat ladottavaksi. Osanvaihtokomento +\komento{part} ja otsikkokomento \komento{chapter} (luku +\ref{luku/otsikot}) tekevät saman automaattisesti joissakin +dokumenttiluokissa. + +Paketin \pakettictan{placeins} avulla voi tehdä omiakin rajakohtia, +jonka yli leijuvat osat eivät voi siirtyä. Paketin komennolla +\komento{FloatBarrier} tehdään raja kyseiseen kohtaan lähdedokumentissa. +Jos paketin lataamisessa antaa argumentin \koodi{section}, asetetaan +tällainen raja automaattisesti \komento{section}\-/ tasoisille +otsikoille. + +\komentoi{usepackage} +\pakettii{placeins} +\begin{koodilohkosis} +\usepackage[section]{placeins} +\end{koodilohkosis} + +\subsection{Ulkoasu} +\label{luku/leijuosat-ulkoasu} + +Leijuvan osan sisäisen asettelun, ulkoasun ja muun typografian +hallintaan ja muokkaamiseen tarvitaan yleensä paketteja +\pakettictan{floatrow} ja \pakettictan{caption}. Jälkimmäisen avulla +muokataan kuvatekstin fonttia ja rivitystä, ja sitä käsitellään +myöhemmin tässä alaluvussa. + +Paketti \paketti{floatrow} tarjoaa runsaasti mahdollisuuksia leijuvien +osien sijoitteluun: osat voi kehystää laatikolla, kuvatekstin voi +sijoittaa ylös, alas tai sivulle, useita leijuvia osia voi sijoittaa +vierekkäin ym. Tässä oppaassa käsitellään ainoastaan peruskäyttöä. + +Jotta \paketti{floatrow}\-/ paketin ominaisuudet saisi käyttöönsä, +täytyy leijuvat osat toteuttaa sen oman \komento{floatbox}\-/ komennon +avulla. Komento sijoitetaan leijuvan ympäristön sisään. Sen +argumenteiksi annetaan ainakin leijuvan osan tyyppi, kuvatekstikomento +ja varsinainen leijuva sisältö. Seuraavassa esimerkissä käytetään +\ymparisto{table}\-/ ympäristöä, mutta muut tyypit toimivat samalla +tavalla. + +\komentoi{floatbox} +\ymparistoi{table} +\begin{koodilohkosis} +\begin{table} + \floatbox{table}[leveys]{kuvatekstit}{sisältö} +\end{table} +\end{koodilohkosis} + +\begin{esimerkki*} + \komentoi{caption} + \komentoi{floatbox} + \komentoi{label} + \mittai{FBwidth} + \ymparistoi{table} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{table} + \floatbox{table}[\FBwidth]{ + \caption{Upea taulukko} % kuvateksti + \label{tlk/upea-taulukko} % tunniste ristiviittausta varten + }{ + \begin{tabular}{ll} + jotain & soluja \\ + esimerkin & vuoksi \\ + \end{tabular} + } +\end{table} +\end{koodilohko} + \caption{\komento{floatbox}\-/ komennon peruskäyttö} + \label{esim/floatbox-perus} +\end{esimerkki*} + +\noindent +Valinnaisen argumentin \koodi{leveys} voi jättää poiskin, jolloin +leijuva osa varaa itselleen sivun leveyden verran tilaan. Argumentiksi +on joskus hyödyllistä antaa mitta \mitta{FBwidth}, joka on leijuvan osan +sisällön levyinen. Käyttämällä tätä mittaa kuvatekstit rivitetään vain +sisällön levyiseksi. Esimerkki \ref{esim/floatbox-perus} selventää, +miten \komento{floatbox}\-/ komento toimii käytännössä. + +Yksi leijuva ympäristö voi sisältää rinnakkain useampia taulukoita, +kuvia tms., joilla jokaisella on oma kuvatekstinstä. Se tehdään +ympäristöllä \ymparisto{floatrow}, jonka valinnainen argumentti +ilmaisee, kuinka monta kuvaa tms. ladotaan rinnakkain. Oletusarvo on~2. +Ympäristön sisällä täytyy olla yhtä monta \komento{floatbox}\-/ +komentoa. Seuraavasta esimerkistä selviää perusajatus kahden taulukon +latomiseksi rinnakkain: + +\komentoi{caption} +\komentoi{floatbox} +\mittai{FBwidth} +\ymparistoi{floatrow} +\ymparistoi{table} +\begin{koodilohkosis} +\begin{table} + \begin{floatrow}[2] % kaksi rinnakkain + \floatbox{table}[\FBwidth]{\caption{Vasen}}{…} + \floatbox{table}[\FBwidth]{\caption{Oikea}}{…} + \end{floatrow} +\end{table} +\end{koodilohkosis} + +\noindent +Kun leijuvat osat on toteutettu \komento{floatbox}\-/ komennon avulla, +voi niiden ulkoasuun vaikuttaa komennolla \komento{floatsetup}. Sille +annetaan ainakin yksi argumentti, joka voi sisältää useita pilkulla +toisistaan erotettuja valitsimia ja niiden arvoja. + +\komentoi{floatsetup} +\begin{koodilohkosis} +\floatsetup[tyyppi]{valitsimet} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys ja vaihtoehtoja} \\ + \midrule + + \rivi{style}{tyyli: \koodi{plain}, \koodi{ruled}, \koodi{boxed} ym.} + + \rivi{capposition}{kuvatekstin sijainti: \koodi{top}, \koodi{bottom} + ym.} + + \rivi{captionskip}{kuvatekstin etäisyys sisällöstä (mitta)} + + \rivi{font}{fonttiasetukset: \koodi{rm}, \koodi{sf}, \koodi{tt}, + \koodi{md}, \koodi{bf}, \koodi{up}, \koodi{it}, \koodi{sl}, + \koodi{sc}, \koodi{scriptsize}, \koodi{footnotesize}, + \koodi{small}, \koodi{normalsize}, \koodi{large}, \koodi{Large}} + + \rivi{margins}{leijuvan osan sijainti: \koodi{centering}, + \koodi{raggedright}, \koodi{raggedleft} ym.} + + \rivi{justification}{sisällön tasaus: \koodi{justified}, + \koodi{centering}, \koodi{raggedright}, \koodi{raggedleft}, + \koodi{RaggedRight} (\paketti{ragged2e}), \koodi{RaggedLeft} + (\paketti{ragged2e})} + + \bottomrule + \end{tabularx} +}{ + \caption{Muutama \komento{floatsetup}\-/ komennon valitsin, joilla + vaikutetaan leijuvien osien ulkoasuun. Osa tarvitsee paketin + \paketti{ragged2e}} + \label{tlk/floatsetup-valitsimia} +} + +\noindent +Valinnainen argumentti \koodi{tyyppi} on leijuvan osan tyyppi, +esimerkiksi \ymparisto{table} tai \ymparisto{figure}. Jos se on annettu, +asetukset vaikuttavat vain kyseiseen tyyppiin; muuten asetukset koskevat +kaikentyyppisiä leijuvia osia. Asetukset tehdään erilaisten valitsimien +avulla, joista muutama on koottu taulukkoon +\ref{tlk/floatsetup-valitsimia}. + +Valitsin \koodi{font} asettaa leijuvan ympäristön fontin mutta ei +vaikuta kuvatekstiin. Fonttiasetukset ovat käytännössä avainsanoja, +jotka vastaavat lähes samannimisiä fonttikomentoja. Niitä käsitellään +luvussa \ref{luku/fontit-korkea}. Omiakin fonttien avainsanoja voi luoda +komennolla \komento{DeclareFloatFont}. Valitsimen \koodi{justification} +arvoksi annetaan myös tietty sana, joka vastaava samannimisiä palstan +tasauskomentoja (luku \ref{luku/kappaleen-tasaus}). Käytännössä leijuvan +osan asetukset voisivat näyttää vaikka seuraavanlaiselta: + +\komentoi{floatsetup} +\begin{koodilohkosis} +\floatsetup{ style=plain, capposition=bottom, font={sf, small}, + justification=centering, captionskip=2ex } +\floatsetup[figure]{ style=boxed } +\end{koodilohkosis} + +\noindent +Kuvatekstien fonttia ja rivittämistä hallitaan \pakettictan{caption}\-/ +paketin avulla. Tärkein komento on \komento{captionsetup}, joka yleensä +sijoitetaan dokumentin esittelyosaan tai muuten alkuun, koska silloin se +vaikuttaa koko dokumentissa. Komennon voi sijoittaa myös esimerkiksi +yksittäisen leijuvan ympäristön sisään, jolloin se vaikuttaa vain +kyseisessä ympäristössä. + +\komentoi{captionsetup} +\begin{koodilohkosis} +\captionsetup[tyyppi]{valitsimet} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys ja vaihtoehtoja} \\ + \midrule + + \rivi{font}{kuvatekstin fontti: \koodi{normalfont}, \koodi{rm}, + \koodi{sf}, \koodi{tt}, \koodi{md}, \koodi{bf}, \koodi{up}, + \koodi{it}, \koodi{sl}, \koodi{sc}, \koodi{scriptsize}, + \koodi{footnotesize}, \koodi{small}, \koodi{normalsize}, + \koodi{large}, \koodi{Large}} + + \rivi{labelfont}{leijuvan osan tyypin ja numeroinnin fontti} + + \rivi{textfont}{varsinaisen kuvatekstin fontti} + + \rivi{format}{kappaleen tyyppi, tavallinen \koodi{plain} vai + riippuva \koodi{hang}} + + \rivi{indentation}{sisennysmitta kuvatekstin toisesta rivistä + alkaen} + + \rivi{labelformat}{leijuvan osan tyypin muoto: \koodi{default}, + \koodi{empty}, \koodi{simple}, \koodi{brace}, \koodi{parens}} + + \rivi{labelsep}{leijuvan osan tyypin erotinmerkki: \koodi{none}, + \koodi{colon}, \koodi{period}, \koodi{space}, \koodi{quad}, + \koodi{newline}, \koodi{endash}} + + \rivi{textformat}{kuvatekstin lopetusmerkki: \koodi{simple}, + \koodi{period}} + + \rivi{justification}{kuvatekstin tasaus: \koodi{justified}, + \koodi{centering}, \koodi{centerlast}, \koodi{centerfirst}, + \koodi{raggedright}, \koodi{RaggedRight} (\paketti{ragged2e}), + \koodi{raggedleft}} + + \rivi{singlelinecheck}{yksirivisten kuvatekstien poikkeuksellinen + tasaus: \koodi{true} (oletus), \koodi{false}} + + \rivi{margin}{kuvatekstin marginaalit: yksi mitta tai kaksi pilkulla + erotettua mittaa (vasen ja oikea marginaali)} + + \rivi{width}{kuvatekstikappaleen leveys (mitta)} + + \bottomrule + \end{tabularx} +}{ + \caption{Tärkeimpiä \komento{captionsetup}\-/ komennon valitsimia} + \label{tlk/captionsetup-valitsimia} +} + +\noindent +Komennon valinnainen argumentti \koodi{tyyppi} on leijuvan osan tyyppi, +esimerkiksi \ymparisto{table} tai \ymparisto{figure}, johon halutaan +vaikuttaa. Jos sen jättää pois, asetukset vaikuttavat kaikkien leijuvien +osien kuvateksteihin. Pakollinen argumentti on \koodi{valitsimet}, +johon kirjoitetaan valitsimia eli avainsanoja ja niiden arvoja. +Tärkeimpiä valitsimia on koottu taulukkoon +\ref{tlk/captionsetup-valitsimia}. Käytännössä komento voisi näyttää +esimerkiksi seuraavanlaiselta: + +\komentoi{captionsetup} +\begin{koodilohkosis} +\captionsetup{ font={small, sf}, labelfont={bf}, textfont={}, + textformat=period, margin={.5em,0em}, justification=raggedright, + singlelinecheck=false } +\end{koodilohkosis} + +\noindent +Oletuksena Latex käsittelee yksiriviset kuvatekstit poikkeuksellisella +tavalla eli keskittää ne. Sen vuoksi tasausvalitsin +\koodi{justification} ei vaikuta yksirivisiin kuvateksteihin. Tämän +poikkeuksen saa pois päältä käyttämällä asetusta +\koodi{singlelinecheck=\katk false}, jolloin sama +\koodi{justification} pätee yhtä lailla niin yksi- kuin monirivisiinkin +kuvateksteihin. + +\begin{esimerkki*} + \ymparistoi{table} + \komentoi{caption} + \komentoi{ContinuedFloat} + +\begin{koodilohko} +\begin{table} % kokonaisuuden 1. leijuva ympäristö + \caption{Hieno taulukko} + ... +\end{table} +... +\begin{table} % kokonaisuuden 2. leijuva ympäristö + \ContinuedFloat % sama numerointi kuin edelliselle + \caption{Hieno taulukko (jatkuu)} + ... +\end{table} +\end{koodilohko} + + \caption{Usealle leijuvalle osalle saa saman numeroinin käyttämällä + komentoa \komento{ContinuedFloat}} + \label{esim/continuedfloat} +\end{esimerkki*} + +Joskus halutaan, että useampi taulukko, kuva tai muu leijuva osa +muodostavat kokonaisuuden, jolla on sama numero, esimerkiksi +''\tablename~3''. Ajatuksena on, että sama sisältö on jakautunut +useampaan osaan. Se onnistuu sijoittamalla \paketti{caption}\-/ paketin +komento \komento{ContinuedFloat} ensimmäisen jälkeisiin leijuviin +ympäristöihin. Komento pitäisi sijoittaa heti ympäristön alkuun. +Esimerkki \ref{esim/continuedfloat} havainnollistaa sen käyttöä. + +Kuvatekstissä oleva leijuvan osan numero tulee laskurista, ja +erityyppisellä osilla on oma laskurinsa. Laskurin nimi on sama kuin +vastaavan leijuvan ympäristön nimi, eli esimerkiksi \ymparisto{table}\-/ +ympäristöt numeroidaan laskurin \laskuri{table} avulla. + +Käytännössä laskurien arvo ladotaan \komentox{the}\-/ alkuisella +komennolla, jonka perässä on laskurin nimi, esimerkiksi +\komento{thetable}. Oletuksena nämä komennot latovat laskurin +arabialaisilla numeroilla. Jos laskuri on riippuvainen teoksen +pääluvuista (\komento{chapter}), ladotaan ensin pääluvun numero, +erotinpiste ja leijuvan osan numero: 2.1, 2.2, 2.3 jne. + +Kirjoittaja voi määritellä laskurien latomiskomennon haluamallaan +tavalla. Seuraavassa esimerkissä leijuville kuville (\ymparisto{figure}) +määritellään numerointitapa, jossa on pääluvun numero, ajatusviiva (\==) +ja leijuvan kuvan numero: + +\komentoi{arabic} +\komentoi{renewcommand} +\komentoi{thechapter} +\komentoi{thefigure} +\laskurii{figure} +\begin{koodilohkosis} +\renewcommand{\thefigure}{\thechapter--\arabic{figure}} +\end{koodilohkosis} + +\section{Ristiviittaukset} +\label{luku/ristiviitteet} + +Ristiviittaukset tarkoittavat dokumentin sisäisiä viittauksia eli +viittauksia toisiin kohtiin samassa dokumentissa. Lukijalle ne ilmenevät +ilmauksina kuten ''luvussa 4.2'' tai ''kuvassa~5''. Kirjoittajan ei +kuitenkaan kannata naputella luvun numeroa (esim. ''4.2'') käsin +lähdedokumenttiin, koska lukujen järjestys ja numerointi voi muuttua +kirjoittamisen edetessä. Joutuisi korjaamaan muuttuneet numerot +mahdollisesti useitakin kertoja ennen kuin työ on valmis. + +Latex osaa numeroida dokumentin otsikot (luvut) ja leijuvat osat +automaattisesti, eli se tietää, minkä numeron mikäkin dokumentin osa +saa. Niinpä Latex osaa myös -- kirjoittajan pienellä avustuksella -- +ylläpitää ajantasaisia ristiviittauksia dokumentin eri osiin. Teknisesti +tämä toteutetaan siten, että otsikoille ja leijuville osille annetaan +yksilöllinen tunniste ja viittaamisessa käytetään samoja tunnisteita. +Tunnisteet annetaan \komento{label}\-/ komennolla, joka sijoitetaan heti +otsikkokomennon (\komento{section}, \komento{subsection} ym.) tai +leijuvan osan kuvatekstikomennon (\komento{caption}) jälkeen: + +\komentoi{section} +\komentoi{label} +\begin{koodilohkosis} +\section{Jokin otsikko} +\label{tunniste} +\end{koodilohkosis} + +\noindent +\komento{label}\-/ komennon argumentti \koodi{tunniste} voi olla +suunnilleen mitä tahansa tekstiä. Sen täytyy olla yksilöllinen, eli sama +tunniste ei saa olla käytössä missään toisessa \komento{label}\-/ +komennossa. Jos sama tunniste sattuu olemaan useassa paikassa, vain +viimeinen jää käytännössä voimaan. + +Järkevää on kirjoittaa tunnisteeseen sana tai sanoja, jotka kertovat +jotakin kyseisen osan sisällöstä. Hyödyllistä voi olla myös kirjoittaa +tunnisteen tieto, onko kyse luvusta, taulukosta, kuvasta vai muusta +leijuvasta osasta, koska erityyppiset osat voivat käsitellä samaa +aihetta. Seuraavassa on esimerkkejä \komento{label}\-/ komennoista: + +\komentoi{label} +\begin{koodilohkosis} +\label{luku/fonttien-valinta} % otsikkokomennon jälkeen +\label{taulukko/fonttikomentoja} % taulukon \caption-komennon jälkeen +\label{kuva/kirjainleikkauksia} % kuvan \caption-komennon jälkeen +\end{koodilohkosis} + +\noindent +Ristiviittauksissa vähimmällä vaivalla selviää, kun muistaa kaksi asiaa: +1)~kirjoittaa \komento{label}\-/ komentoja vain niihin kohtiin, joihin +täytyy viitata muualta, 2)~valitsee tunnisteet siten, ettei niitä +tarvitse muuttaa enää sen jälkeen, kun ne on kerran valinnut. + +Tavallisimmat ristiviittaukset tehdään \komento{ref}\-/ komennolla, +jonka argumentiksi annetaan sama tunniste kuin jossakin dokumentin +\komento{label}\-/ komennossa. Latex latoo \komento{ref}\-/ komentojen +kohdalle kyseisen luvun tai leijuvan osan numeron. Toinen tarpeellinen +ristiviittauskomento on \komento{pageref}, joka kääntämisvaiheessa +korvautuu kyseisen kohteen sivunumerolla. Näitä voi hyödyntää +lähdedokumentissa esimerkiksi seuraavasti: + +\komentoi{ref} +\komentoi{pageref} +\begin{koodilohkosis} +Katso taulukko \ref{taulukko/fonttimallikomennot} sivulla +\pageref{taulukko/fonttimallikomennot}. +\end{koodilohkosis} + +\begin{tulossis} + Katso taulukko \ref{tlk/fonttimallikomennot} sivulla + \pageref{tlk/fonttimallikomennot}. +\end{tulossis} + +\noindent +Jos ladattuna on paketti \paketti{hyperref} (luku +\ref{luku/pdf-asetukset}), on ristiviittauksiin käytettävissä myös +komento \komento{nameref}. Sillekin annetaan argumentiksi jokin +\komento{label}\-/ komennolla määritetty tunniste, ja kääntämisvaiheessa +komennon tilalle ladotaan kyseisen kohteen teksti eli otsikko tai +kuvateksti. Ristiviittauksissa ladotaan otsikon tai kuvatekstin lyhempi +versio, jos sellainen on annettu. Otsikkokomentojen ja +kuvatekstikomennon argumentteja käsitellään luvuissa \ref{luku/otsikot} +(\nameref{luku/otsikot}) ja \ref{luku/leijuosat-latex} +(\nameref{luku/leijuosat-latex}). + +Ristiviittaukset vaativat, että Latex\-/ lähdedokumentti käännetään +kahdesti. Ensimmäisellä kääntämiskerralla \komento{label}\-/ komennolla +mainittujen kohteiden tiedot kirjoitetaan muistiin väliaikaistiedostoon. +Toisella kääntämiskerralla hyödynnetään väliaikaistiedostoa ja +\komento{ref}-, \komento{pageref}\-/\ ja \komento{nameref}\-/ komentojen +tilalle ladotaan viittauskohteen oikeat tiedot. + +\section{Alaviitteet} +\label{luku/alaviitteet} + +Alaviitteet ovat sivun alareunassa olevia numeroituja tai muulla tavalla +merkittyjä huomautuksia. Niihin viitataan sanojen tai virkkeiden perässä +olevalla yläindeksinumerolla, \=/kirjaimella tai +\=/symbolilla.\footnote{Tässä on esimerkki alaviitteestä.} Alaviitteiden +tarkoituksena on lisätä tekstiin lähes huomaamaton lisätieto, joka ei +häiritse lukemista. Se sopii esimerkiksi lisätietoihin, joilla ei ole +kovin suurta merkitystä tai jotka sopivat huonosti ladottavaksi +leipätekstiin. Joskus myös tiedonlähteet ilmaistaan alaviitteiden +avulla.\footcites[162]{kt_oik}[127--128]{typokk} + +Alaviite tehdään komennolla \komento{footnote}, jonka argumentiksi +kirjoitetaan alaviitteeseen tuleva teksti. Oletuksena Latex latoo +komennon paikalle yläindeksinumeron, joka tulee automaattisesti +kasvavasta laskurista \laskuri{footnote}. Komennolle voi antaa myös +valinnaisen argumentin, joka on kyseisen alaviitteen numero. Tässä +tapauksessa komento ei kasvata \laskuri{footnote}\-/ laskuria. + +\komentoi{footnote} +\begin{koodilohkosis} +\footnote{Alaviitteen teksti.} +\footnote[numero]{Alaviitteen teksti.} +\end{koodilohkosis} + +\noindent +Itse alaviite ladotaan samalla kirjaintyypillä kuin leipätekstikin mutta +pienempänä: sen koko tulee komennosta \komento{footnotesize} (luku +\ref{luku/fontit-korkea}). Samalle sivulle voi sattua useampikin +alaviite, ja ne erotetaan leipätekstistä pienellä pystysuuntaisella +välillä sekä oletuksena myös lyhyellä vaakaviivalla. Jos alaviitteen +tekee leijuvaan osaan (luku \ref{luku/leijuosat}) tai +\ymparisto{minipage}\-/ ympäristöön (luku \ref{luku/laatikot-isot}), se +merkitään oletuksena kirjaimen avulla, ja alaviitteen teksti ladotaan +kyseisen osan alapuolelle. + +\komento{footnote}\-/ komennon toiminnan voi jakaa kahteen erilliseen +osaan komentojen \komento{footnotemark} ja \komento{footnotetext} +avulla. Ensin mainittu komento latoo pelkän yläindeksinumeron, joka +tulee alaviitelaskurista. Komento ei lado varsinaista alaviitettä. +Jälkimmäinen komento puolestaan latoo pelkän alaviitteen. Kummallekin +komennolle voi antaa valinnaisen argumentin, jolla ilmaistaan kyseisen +alaviitteen numero. + +\komentoi{footnotemark} +\komentoi{footnotetext} +\begin{koodilohkosis} +\footnotemark[numero] % yläindeksinumero +\footnotetext[numero]{Alaviitteen teksti.} % alaviite +\end{koodilohkosis} + +\noindent +Alaviitteiden numerointi on laskurissa \laskuri{footnote}, mutta sen +arvo ladotaan komennon \komento{thefootnote} avulla. Tämän komennon +määritelmässä on oletuksena komento +\komento{arabic}\komentoarg{footnote}, eli laskuri ladotaan +arabialaisilla numeroilla. Kirjoittaja voi kuitenkin määritellä komennon +uudestaan. Seuraavassa esimerkissä määritellään komento siten, että +alaviitteet ilmaistaan symbolien avulla: + +\komentoi{renewcommand} +\komentoi{thefootnote} +\komentoi{fnsymbol} +\laskurii{footnote} +\begin{koodilohkosis} +\renewcommand{\thefootnote}{\fnsymbol{footnote}} +\end{koodilohkosis} + +\noindent +Laskurien symboliesitys toimii vain lukualueella 1\==9, joten samaan +dokumenttiin ei mahdu kovin monta alaviitettä, ellei laskuria nollaa +välillä. Laskurin voi määritellä riippuvaiseksi toisesta laskurista, +jolloin se nollautuu itsestään, kun toisen laskurin arvo kasvaa. +Esimerkiksi dokumenttiluokassa \luokka{book} alaviitteiden laskuri +nollautuu oletuksena aina päälukujen (\komento{chapter}) vaihtuessa. +Joskus voi olla tarpeen tehdä alaviitteiden laskuri sivukohtaiseksi eli +riippuvaiseksi \laskuri{page}\-/ laskurista. Sen voi toteuttaa +\paketti{chngcntr}\-/ paketin ja \komento{counterwithin*}\-/ komennon +(luku \ref{luku/hierarkkiset-laskurit}) avulla seuraavan esimerkin +mukaisesti. Toinen vaihtoehto on paketti \paketti{footmisc} ja valitsin +\koodi{perpage}, jota käsitellään myöhemmin tässä luvussa. + +\komentoi{counterwithin} +\laskurii{footnote} +\laskurii{page} +\begin{koodilohkosis} +\counterwithin*{footnote}{page} +\end{koodilohkosis} + +\noindent +Edellisissä esimerkeissä on käsitelty koko dokumentin alaviitelaskuria +\laskuri{footnote}, mutta leijuvissa osissa ja \ymparisto{minipage}\-/ +ympäristöissä (luku \ref{luku/laatikot-isot}) alaviitteet numeroidaan +laskurin \laskuri{mpfootnote} avulla. Tämän laskurin arvo ladotaan +käytännössä komennolla \komento{thempfootnote}, jonka kirjoittaja voi +määritellä uudelleen tarpeen mukaan. Laskureihin liittyvää tekniikkaa +käsitellään tarkemmin luvussa \ref{luku/laskurit}. + +Leipäteksti ja alaviitteet erotetaan pystysuuntaisella välillä, jonka +voi asettaa sivun asetusten yhteydessä (luku \ref{luku/sivuasetukset}). +Asetus on \paketti{geometry}\-/ paketin valitsin \koodi{footnotesep}, +jota käytetään esimerkiksi \komento{geometry}\-/ komennon kanssa: + +\komentoi{geometry} +\begin{koodilohkosis} +\geometry{ footnotesep=14bp } +\end{koodilohkosis} + +\noindent +Välin täytyy olla ainakin niin suuri, ettei lukija sekoita alaviitteitä +leipätekstin kappaleeseen. Ehkä riittävä väli on noin yhden +rivikorkeuden verran tai vähän enemmän. Sopivan välin suuruus voi +riippua siitäkin, erotetaanko leipäteksti ja alaviitteet toisistaan myös +vaakaviivalla. + +Muunlaiset alaviitteisiin vaikuttavat asetukset täytyy tehdä paketin +\pakettictan{footmisc} avustuksella. Sen avulla voi esimerkiksi poistaa +alaviitteiden erotinviivan ja muotoilla alaviitekappaleita. Paketin +lataamisen yhteydessä voi antaa useita pilkulla erotettuja valitsimia, +joita on koottu taulukkoon \ref{tlk/footmisc-valitsimet}. Erotinviiva +poistetaan paketin valitsimella \koodi{norule}. Samalla pystysuuntainen +väli hieman kasvaa. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{norule}{vaakasuuntainen erotinviiva pois} + \rivi{perpage}{numerointi sivukohtaiseksi} + \rivi{bottom}{alaviite aina sivun alareunaan} + \rivi{hang}{luetelmatyyppiset alaviitteet, riippuva sisennys} + \rivi{multiple}{useat peräkkäiset yläindeksinumerot} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{footmisc}\-/ paketin asetusten avulla muotoillaan + alaviitteitä} + \label{tlk/footmisc-valitsimet} +} + +\pakettii{footmisc} +\komentoi{usepackage} +\begin{koodilohkosis} +\usepackage[norule]{footmisc} +\end{koodilohkosis} + +\noindent +Valitsin \koodi{perpage} numeroi alaviitteet sivukohtaisesti, eli niiden +laskuri nollautuu aina sivun vaihtuessa. Valitsin \koodi{bottom} +pakottaa alaviitteen aina sivun alareunaan. Oletusasetuksilla alaviite +voi sijoittua joskus ylemmäksi, jos sivun alaosaan ladotaan leijuva osa +tai jos sivun alareunan tasaaminen on pois päältä +(\komento{raggedbottom}, luku \ref{luku/sivunvaihdot}). + +Oletuksena alaviitekappaleet ladotaan samalla tavalla kuin +tekstikappaleet oletuksena muutenkin: alaviitteen ensimmäinen rivi on +sisennetty ja sen alussa on alaviitteen numero. Seuraavia rivejä ei +sisennetä. Tällainen asetus sopii hyvin pitkien alaviitetekstien +latomiseen. Usein ne ovat kuitenkin lyhyitä, ja silloin voi sopia +paremmin luetelmatyyppiset alaviitekappaleet (riippuva sisennys), joissa +alaviitteen numero on omalla alueellaan ja varsinainen alaviiteteksti on +sisennetty. Tällainen asetus tehdään \paketti{footmisc}\-/ paketin +valitsimella \koodi{hang}. Sisennyksen suuruuteen voi vaikuttaa mitan +\mitta{footnotemargin} avulla: + +\komentoi{setlength} +\komentoi{usepackage} +\mittai{footnotemargin} +\pakettii{footmisc} +\begin{koodilohkosis} +\usepackage[hang]{footmisc} +\setlength{\footnotemargin}{1.5em} +\end{koodilohkosis} + +\noindent +Valitsin \koodi{multiple} mahdollistaa peräkkäisten +\komento{footnote}\-/ komentojen kirjoittamisen helposti. Peräkkäin +olevien yläindeksinumeroiden väliin ladotaan automaattisesti pilkku, +kuten seuraava esimerkki osoittaa: + +\komentoi{footnote} +\begin{koodilohkosis} +sana\footnote{…}\footnote{…} +\end{koodilohkosis} + +\begin{tulossis} + sana\textsuperscript{7}% + \textsuperscript*{,}% + \textsuperscript{8} +\end{tulossis} + +\noindent +Toisaalta yläindeksiin voi sijoittaa pilkun tai muuta tekstiä käsinkin +komennolla \komento{textsuperscript} (luku \ref{luku/ylä-alaindeksit}). +\koodi{multiple}\-/ valitsin vaatii toimiakseen tietyn +\paketti{hyperref}\-/ paketin valitsimen, joka käsitellään seuraavaksi. + +Jos ladattuna on \paketti{hyperref}\-/ paketti (luku +\ref{luku/pdf-asetukset}), alaviitteisiin liittyvistä +yläindeksinumeroista tulee myös hiirellä napsautettavia linkkejä. Tästä +ominaisuudesta on harvoin mitään hyötyä, koska alaviite on melkein aina +samalla sivulla. Linkkitoiminto myös häiritsee \paketti{footmisc}\-/ +paketin \koodi{multiple}\-/ valitsimen toimintaa. Alaviitteiden linkit +voi kytkeä pois \paketti{hyperref}\-/ paketin lataamisen yhteydessä +seuraavalla asetuksella: + +\komentoi{usepackage} +\pakettii{hyperref} +\begin{koodilohkosis} +\usepackage[hyperfootnotes=false]{hyperref} +\end{koodilohkosis} + +\noindent +\paketti{footmisc}\-/ paketti sisältää muitakin toimintoja alaviitteiden +ulkoasun säätämiseen. Lisätietoa saa paketin ohjekirjasta. + +\section{Palstat} +\label{luku/palstat} + +Latexissa on perustoiminnot usean palstan käsittelyyn, mutta mihinkään +sanoma- tai aikakauslehden kaltaiseen monipuoliseen tekstin, kuvien ja +muiden osien sommitteluun se ei kykene. Verrattain yksinkertaiset +monipalstaiset tekstit kuitenkin onnistuvat Latexissakin varsin +mukavasti. + +Perus Latexissa on kaksi palstoihin liittyvää tilaa: normaali eli yhden +palstan tila sekä kahden palstan tila, joka täytyy erikseen kytkeä +päälle. Tätä tilaa käsitellään luvussa \ref{luku/kahden-palstan-tila}. +Toinen palstojen toteuttamisen vaihtoehto on paketti +\paketti{multicol}. Sen kanssa käytetään Latexin yhden palstan tilaa ja +erityistä palstaympäristöä \ymparisto{multicols}. Ympäristön sisällä +teksti rivitetään kahdelle tai useammalle palstalle. Tätä vaihtoehtoa +käsitellään luvussa \ref{luku/multicol}. + +\subsection{Kahden palstan tila} +\label{luku/kahden-palstan-tila} + +Perus Latexin yhden tai kahden palstan tilan voi valita jo +dokumenttiluokan (luku \ref{luku/perusdokumenttiluokat-asetukset}) +lataamisen yhteydessä tai sivun asetuksissa (luku +\ref{luku/sivuasetukset}) käyttämällä valitsinta \koodi{onecolumn} +(oletus) tai \koodi{twocolumn}. Dokumentin keskellä tilaa voi vaihtaa +komennoilla \komento{onecolumn} ja \komento{twocolumn}. Kumpikin komento +aloittaa uuden sivun, jossa valittu tila on voimassa. Komennolle +\komento{twocolumn} voi antaa hakasulkeissa valinnaisen argumentin, +jolla ilmaistaan sivun alkuun ladottava koko sivun levyinen sisältö: + +\komentoi{twocolumn} +\begin{koodilohkosis} +\twocolumn[yksipalstaista sisältöä] +\end{koodilohkosis} + +\noindent +\komento{twocolumn}\-/ komennon valinnainen argumentti mahdollistaa sen, +että sivun alkuun voi sijoittaa esimerkiksi koko sivun levyisen otsikon, +kuvan tai muun osan. Sen jälkeen lähes kaikki sisältö on ladotaan +kahdelle palstalle, eli teksti täyttää ensin vasemmanpuoleisen palstan +ja sen jälkeen oikeanpuoleisen. + +Leijuvat osat (luku \ref{luku/leijuosat}) ja ympäristöt kuten +\ymparisto{table} ja \ymparisto{figure} sijoitetaan palstan sisään, eli +niiden sisältö täytyy suunnitella yhden palstan levyiseksi. Ympäristöjen +tähdelliset versiot kuten \ymparisto{table*} ja \ymparisto{figure*} +ladotaan koko sivun levyisenä sivun yläosaan tai kokonaan omalle +sivulleen, jossa on vain leijuvia osia. Leijuvien osien sijoitteluun +kahden palstan tilassa voi vaikuttaa tiettyjen laskurien, mittojen ja +komentojen avulla. Näitä käsitellään luvussa +\ref{luku/leijuosat-sijoittelu}. + +Palstojen välissä olevan tyhjän tilan leveys on mitassa +\mitta{columnsep}, ja sen voi asettaa haluamakseen +\komento{setlength}\-/ komennolla tai \paketti{geometry}\-/ paketin +asetuksista (luku \ref{luku/sivun-mitat}). Oletusasetus on 35\,pt. +Palstojen väliin saa myös pystyviivan, jonka leveys on mitassa +\mitta{columnseprule}. Sen oletusarvo on nolla, eli pystyviivaa ei +ladota. + +\komentoi{setlength} +\mittai{columnsep} +\mittai{columnseprule} +\begin{koodilohkosis} +\setlength{\columnsep}{6mm} % palstojen väli +\setlength{\columnseprule}{.2mm} % pystyviivan leveys +\end{koodilohkosis} + +\noindent +Latex laskee automaattisesti palstan leveyden ja asettaa sen mittaan +\mitta{columnwidth}. Tätä mittaa ei siis tarvitse eikä pidä itse +asettaa, mutta sitä voi hyödyntää esimerkiksi taulukoiden tai kuvien +sovittamisessa koko palstan levyiseksi. Käytännössä kahden palstan +tilassa palstan leveys on mittojen \mitta{textwidth} ja +\mitta{columnsep} erotus jaettuna kahdella. Tilannekohtainen rivin +pituus on mitassa \mitta{linewidth}. + +\subsection{Palstaympäristö} +\label{luku/multicol} + +Perus Latex osaa vain yhden ja kahden palstan tilan, ja ne ovat voimassa +koko sivulla. Paketti \pakettictan{multicol} tuo käyttöön myös +ympäristön \ymparisto{multicols}, jonka sisällä tietty palstamäärä on +voimassa. Ympäristön avulla samallakin sivulla voi olla eri tavoin +palstoitettua sisältöä. Esimerkki \ref{esim/multicols} havainnollistaa +ympäristön käyttöä ja ladottua lopputulosta. Oleelliset tiedot ovat +seuraavat: + +\ymparistoi{multicols} +\begin{koodilohkosis} +\begin{multicols}{palstamäärä} + ... +\end{multicols} +\end{koodilohkosis} + +\noindent +Argumentti \koodi{palstamäärä} on kokonaisluku, joka ilmaisee, kuinka +monelle palstalle ympäristön sisältö ladotaan. Palstojen korkeus +pyritään tasaamaan automaattisesti, niin että kaikki palstat ovat yhtä +korkeita. Käytännössä palstaympäristön viimeisen sivun viimeinen palsta +jää hieman vajaaksi, mutta se on normaalia muutenkin. Jos käyttää +ympäristön tähtiversiota \ymparisto{multicols*}, ei viimeisen sivun +palstojen korkeuksia tasata, vaan ensin täytetään vasemmanpuoleinen +palsta kokonaan, sitten seuraava jne. + +\begin{esimerkki*} + \ymparistoi{multicols} + \komentoi{noindent} + +\begin{koodilohko} +\begin{multicols}{3} % kolme palstaa + \noindent Jukolan talo, eteläisessä Hämeessä, seisoo erään mäen + pohjoisella rinteellä, liki Toukolan kylää. Sen läheisin ympäristö on + kivinen tanner, mutta alempana alkaa pellot, joissa, ennenkuin talo + oli häviöön mennyt, aaltoili teräinen vilja. Peltojen alla on niittu, + apilaäyräinen, halkileikkaama monipolvisen ojan; ja runsaasti antoi se + heiniä, ennenkuin joutui laitumeksi kylän karjalle. Muutoin on talolla + avaria metsiä, soita ja erämaita, jotka, tämän tilustan ensimmäisen + perustajan oivallisen toiminnan kautta, olivat langenneet sille osaksi + jo ison jaon käydessä entisinä aikoina. +\end{multicols} +\end{koodilohko} + \begin{tulos} + \footnotesize + \setlength{\columnsep}{1em} + \setlength{\multicolsep}{0bp} + \begin{multicols}{3} + \noindent Jukolan talo, eteläisessä Hämeessä, seisoo erään mäen + pohjoisella rinteellä, liki Toukolan kylää. Sen läheisin ympäristö + on kivinen tanner, mutta alempana alkaa pellot, joissa, ennenkuin + talo oli häviöön mennyt, aaltoili teräinen vilja. Peltojen alla on + niittu, api\-la\-äyräi\-nen, halkileikkaama monipolvisen ojan; ja + runsaasti antoi se heiniä, ennenkuin joutui laitumeksi kylän + karjalle. Muutoin on talolla avaria metsiä, soita ja erämaita, + jotka, tämän tilustan ensimmäisen perustajan oivallisen toiminnan + kautta, olivat langenneet sille osaksi jo ison jaon käydessä + entisinä aikoina. + \end{multicols} + \end{tulos} + + \caption{Palstojen toteutus \paketti{multicol}\-/ paketin + \ymparisto{multicols}\-/ ympäristön avulla. Teksti on Aleksis Kiven + \emph{Seitsemän veljestä} \=/romaanin alusta} + \label{esim/multicols} +\end{esimerkki*} + +Ympäristölle voi antaa hakasulkeissa valinnaisen argumentin, joka voi +sisältää mitä tahansa tekstiä tai koodia. Se on tarkoitettu otsikolle +(\komento{section} ym.) tai muulle sisällölle, joka ladotaan ennen +palstoja ja jonka täytyy päätyä samalle sivulle kuin palstasisällön +alku. + +\ymparistoi{multicols} +\begin{koodilohkosis} +\begin{multicols}{palstamäärä} + [tekstiä tai koodia ennen palstoja] + ... +\end{multicols} +\end{koodilohkosis} + +\noindent +Ennen palstaympäristöä ja sen jälkeen ladotaan mitan \mitta{multicolsep} +suuruinen pystysuuntainen väli. Väliä ei kuitenkaan ladota, jos se +sattuu sivunvaihdon kohdalle. Palstojen välissä oleva tyhjä tila +asetetaan mitan \mitta{columnsep} avulla, ja väliin mahdollisesti +ladottavan pystyviivan leveys on mitassa \mitta{columnseprule}. Tämän +mitan oletusarvo on nolla, eli pystyviivaa ei ladota. + +\komentoi{setlength} +\mittai{multicolsep} +\mittai{columnsep} +\mittai{columnseprule} +\begin{koodilohkosis} +\setlength{\multicolsep}{.5ex plus .2ex} % väli ennen ja jälkeen +\setlength{\columnsep}{6mm} % palstojen väli +\setlength{\columnseprule}{.2mm} % pystyviivan leveys +\end{koodilohkosis} + +\noindent +Oletuksena palstojen alareuna pyritään joka sivulla pitämään tarkasti +samalla tasolla. Tämä toteutuu siten, että palstoilla olevia +pystysuuntaisia välejä voidaan venyttää, jotta niiden viimeiset rivit +saataisiin samalle tasolle. Tämä on yhdenmukainen sivujen +tasaamiskäytännön kanssa, jota käsitellään luvussa +\ref{luku/sivunvaihdot}. Palstojen alareunan tasaamisen ja +pystysuuntaisten välien venyttämisen saa pois komennolla +\komento{raggedcolumns}. Oletustilaan palataan komennolla +\komento{flushcolumns}. Palstanvaihdon voi pakottaa tiettyyn kohtaan +komennolla \komento{columnbreak}. Jos komento sijaitsee tekstikappaleen +sisällä, palsta vaihtuu nykyisen rivin lopussa. + +Leijuvat osat (luku \ref{luku/leijuosat}) toimivat +\ymparisto{multicols}\-/ ympäristössä hieman toisin kuin muualla. +Leijuvien ympäristöjen tähdellisiä versioita kuten \ymparisto{table*} ja +\ymparisto{figure*} ei koskaan ladota samalle sivulle kuin missä ne +esiintyvät. Ensimmäinen mahdollinen paikka on seuraavan sivun yläosassa. + +Leijuvien osien sijoitteluun vaikuttavat tavalliset yhden palstan tilan +asetukset kuten laskuri \laskuri{topnumber}, mitta \mitta{floatsep} ja +komento \komento{topfraction}. \ymparisto{multicols}\-/ ympäristössä ei +käytetä \koodi{dbl}\-/ alkuisia kahden palstan tilan laskureita, mittoja +eikä komentoja, kuten \laskuri{dbltopnumber}, \mitta{dblfloatsep} ja +\komento{dbltopfraction}. Lisätietoa leijuvien osien sijoittelusta on +luvussa \ref{luku/leijuosat-sijoittelu}. + +\section{Lähdeluettelo ja lähdeviitteet} +\label{luku/lähteet} + +Lähdeluettelossa mainittuihin teoksiin on tapana viitata muualta +tekstistä, ja Latex osaa auttaa viittausten hallinnassa. Ajatus on se, +että lähdeluettelo laaditaan tiettyjen komentojen avulla niin, että +jokainen lähdeteos saa yksilöllisen tunnisteen. Muualta tekstistä +viitataan lähdeteoksiin käyttämällä samoja tunnisteita, ja Latex osaa +automaattisesti poimia lähdeluettelosta esimerkiksi teoksen tekijöiden +nimet ja vuosiluvun. + +Lähdeviittauksiin ja lähdemerkintöihin on useita käytäntöjä, jotka +vaihtelevat eri ammatti\-/\ ja tieteenaloilla, oppilaitoksilla tai +julkaisijoilla. Tässä yhteydessä käsitellään melko vakiintuneita +suomalaisia käytäntöjä, jotka kuvataan \emph{Kielitoimiston + oikeinkirjoitusoppaassa} \parencite{kt_oik}. Samalla käsitellään +joitakin asetuksia, joilla kukin voi muokata viittausten ulkoasua omiin +tarpeisiin sopivaksi. + +Latex sisältää lähdeluetteloiden ja \=/viittausten perustoiminnot, mutta +niiden avulla ei saa yleisen suomalaisen käytännön mukaisia +lähdeviittauksia. Siksi usein tarvitaan avuksi paketti, jolla +viittausten ja lähdeluettelon ulkoasuun voi vaikuttaa. Ensin käsiteltävä +paketti \paketti{natbib} (luku \ref{luku/natbib}) soveltuu +perustarpeisiin ja lienee sopivin valinta useimmille kirjoittajille. +Laajoja tieteellisiä teoksia kirjoittavan kannattanee opetella +käyttämään monipuolista \paketti{biblatex}\-/pakettia (luku +\ref{luku/biblatex}) ja ylläpitää yhteistä lähdeteosten tietokantaa, +josta tarvittavat teokset poimitaan kunkin dokumentin lähdeluetteloon +automaattisesti. + +\subsection{Peruskäyttöön (natbib)} +\label{luku/natbib} + +Paketti \pakettictan{natbib} laajentaa Latexin lähdeviittausten +perustoimintoja sen verran, että lähteisiin voidaan viitata teoksen +tekijöiden nimen ja vuosiluvun avulla. Seuraava esimerkki +havainnollistaa paketin käyttöönottoa ja asetuksia. + +\komentoi{usepackage} +\pakettii{natbib} +\komentoi{setcitestyle} +\begin{koodilohkosis} +\usepackage{natbib} +\setcitestyle{authoryear,aysep={},notesep={: }} +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä viittaustyyli valitaan \komento{setcitestyle}\-/ +komennon argumentissa valitsimella \koodi{author\-year} +(tekijä\--vuosi). Valitsimella \koodi{aysep} määritetään, mikä +välimerkki ladotaan tekijän nimen ja vuosiluvun väliin. Tässä se +jätetään tyhjäksi \koodi{\{\}}. \koodi{note\-sep}\-/ valitsimella +asetetaan merkit, jotka ladotaan vuosiluvun ja sitä seuraavan +huomautuksen kuten sivunumeroiden väliin; tässä tapauksessa määritettiin +kaksoispiste ja väli \koodi{\{:~\}}, mutta pilkkukin on yleinen +käytäntö. \komento{setcitestyle}\-/ komennon valitsimet erotetaan +toisistaan pilkulla, eikä erotinpilkkujen ympärillä saa olla +välilyöntejä. Lopputuloksena lähdemerkinnät näyttävät esimerkiksi +seuraavanlaisilta: + +\komentoi{citet*} +\begin{koodilohkosis} +\citet*[27--29]{johdatus} % Viittaus teokseen ”johdatus”. +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen \& Teikäläinen (2020: 27--29) +\end{tulossis} + +\noindent +Lähdeluettelo kirjoitetaan \ymparistom{thebibliography}\-/ ympäristön ja +\komentom{bibitem}\-/ komentojen avulla esimerkin +\ref{esim/thebibliography} tavoin. Ympäristön aloittavan komennon +(rivi~1) yhteydessä on argumentti \koodi{00}, jolla ei ole tässä +yhteydessä merkitystä. Jos lähdeviittauksen tyylinä olisi +\koodi{numbers} (eikä \koodi{author\-year}), lähdeluettelon teokset +numeroitaisiin, ja silloin \ymparisto{thebibliography}\-/ ympäristön +argumentti ilmaisee, kuinka leveän sisennyksen numeroidut teokset +tarvitsevat. Argumentiksi voi kirjoittaa mitä tahansa merkkejä, ja Latex +mittaa niiden leveyden. Kannattaa kirjoittaa leveitä numeroita kuten +nollia (\koodi{0}) niin monta kappaletta kuin on numeroita suurimmassa +lähdemerkinnän luvussa. Yksi nolla riittää, jos lähteitä on 1\==9 +kappaletta, kaksi jos lähteitä on kaksinumeroinen määrä eli 10\==99 +kappaletta jne. + +\begin{esimerkki*} + \ymparistoi{thebibliography} + \komentoi{bibitem} + +\begin{koodilohko} +\begin{thebibliography}{00} + +\bibitem[Meikäläinen ym.(2020)Meikäläinen \& Teikäläinen]{johdatus} + Meikäläinen, Matti \& Teikäläinen, Teija (2020): Johdatus alkeiden + perusteisiin. Toinen painos. Kustantaja Oy. + +\bibitem[Itkonen(2019)]{typografia} Itkonen, Markus (2019): Typografian + käsikirja. Viides, tarkistettu painos. Typoteekki. Graafinen + suunnittelu Markus Itkonen Oy. + +\end{thebibliography} +\end{koodilohko} + \caption{Lähdeluettelon kirjoittaminen \ymparisto{thebibliography}\-/ + ympäristön ja \komento{bibitem}\-/ komentojen avulla.} + \label{esim/thebibliography} +\end{esimerkki*} + +Komennolla \komento{bibitem} tehdään varsinaiset teosmerkinnät. Samalla +määritetään teoksen yksilöllinen tunniste ja mitä tietoja +lähdeviittauksissa näytetään. Yleinen muoto on seuraavanlainen: + +\komentoi{bibitem} +\begin{koodilohkosis} +\bibitem[lyhyt(vuosi)pitkä]{tunniste} Lähdeluettelon tekstit. +\end{koodilohkosis} + +\noindent +Valinnaisen argumentin aluksi kirjoitetaan lähdeviittauksen lyhyt +merkintä, joka tulisi näkymään lähdeviittauksissa esimerkiksi muodossa +''Meikäläinen ym.''. Heti sen perään kirjoitetaan sulkeissa teoksen +vuosiluku ja sen perään vapaavalintainen lähdeviittauksen pitkä +merkintä, joka näkyisi esimerkiksi tekstinä ''Meikäläinen \& +Teikäläinen''. Vuosiluvun sulkeiden ympärillä ei saa olla välilyöntejä. + +Komennon pakollinen argumentti on kyseisen lähdeteoksen yksilöllinen +tunniste, jonka avulla kyseiseen teokseen viitataan. Komennon +argumenttien jälkeen kirjoitetaan samaan tekstikappaleeseen teksti, joka +tulee näkymään lähdeluettelossa. + +Lähdeteoksiin viittaamiseen on useita eri komentoja, jotka eroavat +toisistaan siinä, mitä tietoa lähdeviittauksessa näytetään ja onko +lähdeviittaus tai sen osa sulkeissa vai ei. Taulukossa +\ref{tlk/natbib-cite} on joitakin \paketti{natbib}\-/paketin +viittauskomentoja sekä esimerkki viittauksen ulkoasusta. Kuviteltu +esimerkkiteos on peräisin esimerkistä \ref{esim/thebibliography}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\komento{#1}\komentoarg{\dots} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Komento} & \ots{Esimerkki} \\ + \midrule + \rivi{citet}{Meikäläinen ym. (2020)} + \rivi{citet*}{Meikäläinen \& Teikäläinen (2020)} + \rivi{citep}{(Meikäläinen ym. 2020)} + \rivi{citep*}{(Meikäläinen \& Teikäläinen 2020)} + \rivi{citealt}{Meikäläinen ym. 2020} + \rivi{citealt*}{Meikäläinen \& Teikäläinen 2020} + \rivi{citeauthor}{Meikäläinen ym.} + \rivi{citeauthor*}{Meikäläinen \& Teikäläinen} + \rivi{citeyear}{2020} + \rivi{citeyearpar}{(2020)} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{natbib}\-/paketin lähdeviittauskomentoja} + \label{tlk/natbib-cite} +} + +Lähdeluettelon ulkoasuun voi vaikuttaa mittojen \mittam{bibhang} ja +\mittam{bibsep} avulla. Ensin mainittu on lähdemerkinnän vaakasuuntaisen +riippuvan sisennyksen suuruus, ja jälkimmäinen on lähdemerkintöjen +välinen pystysuuntainen tila. Mitat asetetaan \komento{setlength}\-/ +komennolla (luku \ref{luku/mitat}): + +\komentoi{setlength} +\mittai{parindent} +\mittai{bibhang} +\mittai{bibsep} +\begin{koodilohkosis} +\setlength{\parindent}{1.1em} % tekstikappaleiden 1. rivin sisennys +\setlength{\bibhang}{\parindent} +\setlength{\bibsep}{.5ex plus .1ex minus .1ex} +\end{koodilohkosis} + +\noindent +Lähdemerkintöjen fonttiin voi vaikuttaa määrittelemällä uudelleen +komennon \komentom{bibfont} ja sijoittamalla halutut fontti- tai muut +komennot kyseisen komennon määritelmään. + +\komentoi{renewcommand} +\komentoi{bibfont} +\begin{koodilohkosis} +\renewcommand{\bibfont}{\sffamily\small} +\end{koodilohkosis} + +\noindent +Oletuksena \ymparisto{thebibliography}\-/ ympäristö latoo +lähdeluettelolle otsikon, ja otsikon teksti määräytyy kieliasetusten +(luku \ref{luku/kieliasetukset}) ja dokumenttiluokan perusteella (luku +\ref{luku/dokumenttiluokat}). Suomenkielisen lähdeluettelon otsikon voi +määrittää dokumentin esittelyosassa seuraavan esimerkin tavoin. +Esimerkissä hyödynnetään \komento{addto}\-/ komentoa, joka sisältyy +\paketti{polyglossia}\-/{} ja \paketti{babel}\-/ paketteihin. + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{refname} +\komentoi{bibname} +\luokkai{article} +\luokkai{book} +\luokkai{report} +\begin{koodilohkosis} +\addto{\captionsfinnish}{% + \renewcommand{\refname}{Lähteet} % article-dokumenttiluokka + \renewcommand{\bibname}{Lähteet} % report- ja book-luokat +} +\end{koodilohkosis} + +\noindent +On myös mahdollista määritellä koko komentosarja, joka suoritetaan +lähdeluettelon otsikoinnin yhteydessä. Se tehdään määrittelemällä +uudelleen komento \komentom{bibsection}. + +\komentoi{renewcommand} +\komentoi{bibsection} +\komentoi{setcounter} +\laskurii{secnumdepth} +\komentoi{section} +\begin{koodilohkosis} +\renewcommand{\bibsection}{% + \setcounter{secnumdepth}{-1} + \section{Lähteet} +} +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä komennolla \komento{setcounter} määritetään, +mille otsikkotasolle dokumentin otsikoiden eli lukujen numerointi yltää. +Pieni arvo \mbox{(\koodi{-1})} käytännössä tarkoittaa, että seuraaviin +otsikoihin ei tule numerointia; lähdeluettelon otsikkoon ei numerointia +välttämättä haluta. Komento \komento{section} tekee itse otsikon. + +Jos ei halua, että \ymparisto{thebibliography}\-/ ympäristö tekee +otsikon automaattisesti, voi \komento{bibsection}\-/ komennon määrittää +tyhjäksi. + +\komentoi{renewcommand} +\komentoi{bibsection} +\begin{koodilohkosis} +\renewcommand{\bibsection}{} +\end{koodilohkosis} + +\noindent +Tässä alaluvussa on käsitelty lähdeluettelon ja lähdeviitteiden +tekemistä \paketti{natbib}\-/paketin toimintojen avulla. Paketti +sisältää muitakin ominaisuuksia, joihin kannattaa tutustua paketin +ohjekirjan avulla. On muun muassa mahdollista tehdä lähdeteoksista +tietokanta Bibtex\-/järjestelmän avulla. Jos kuitenkin siihen suuntaan +haluaa edetä, ei kannata käyttää \paketti{natbib}\-/pakettia eikä +Bibtexiä vaan monipuolisempaa pakettia \paketti{biblatex}, jota +käsitellään seuraavassa alaluvussa. + +\subsection{Vaativaan käyttöön (biblatex)} +\label{luku/biblatex} + +Suurten lähde- ja kirjallisuusluetteloiden ylläpito voi olla aika +työlästä: pitää jatkuvasti varmistaa, että kaikki viitatut teokset ovat +luettelossa ja että luettelo on pilkulleen yhdenmukainen. Paketti +\pakettictan{biblatex} on vastaus sellaisiin tarpeisiin. + +Ajatuksena on, että kaikki tiedonlähteet ja kirjallisuus kirjoitetaan +tietokantaan, josta \paketti{biblatex}\-/paketin komennot hakevat tiedot +automaattisesti. Kirjoittaja tai työryhmä voi ylläpitää yhtä +kirjallisuustietokantaa, joka voi olla saatavilla oman laitoksen +verkkopalvelimella tai julkisella verkkosivullakin. Dokumentin tekstissä +viitataan teoksiin yksilöllisen tunnisteen avulla, ja pelkän viittauksen +perusteella oikeat teokset ilmestyvät lähdeluetteloon automaattisesti +aakkosjärjestyksessä ja yhdenmukaisessa muodossa. Yhtään tiedonlähdettä +ei tarvitse kirjoittaa lopulliseen lähdeluetteloon käsin. + +\paketti{biblatex}\-/paketin käyttö vaatii hieman opettelua -- varsinkin +jos on tarve muokata lähdeluettelon ja lähdeviittausten ulkoasua. +Muutaman tiedonlähteen ylläpito on todennäköisesti paljon helpompaa ja +nopeampaa niillä keinoilla, jotka on kuvattu luvussa \ref{luku/natbib} +(\paketti{natbib}). Sen sijaan laajoja tieteellisiä artikkeleita +kirjoittaville \paketti{biblatex} voi olla suuri apu, koska +artikkeleissa on yleensä paljon lähteitä ja useissakin artikkeleissa +viitataan yleensä samoihin lähteisiin. + +\subsubsection{Teostietokanta} + +Lähdeteosten tietokanta on erillinen tekstitiedosto, joka tavallisesti +nimetään \koodi{bib}\-/päätteiseksi, esimerkiksi \koodi{teokset.bib}. +Tiedosto koostuu \koodi{@}\=/merkillä ja teostyypin nimellä alkavista +tietueista, joiden yleinen muoto on seuraavanlainen: + +\begin{koodilohkosis} +@teostyyppi{tunniste, + author = {...}, + title = "..." +} +\end{koodilohkosis} + +\noindent +Teostyypin nimen jälkeen aaltosulkeiden sisään kirjoitetaan teoksen +kaikki tiedot. Ne alkavat teoksen yksilöllisellä tunnisteella, jota +käytetään lähdeviittauksissa. Tunnisteen jälkeen tulevat muut kentät. +Eri kentät kuten \koodi{author} ja \koodi{title} erotetaan toisistaan +pilkulla. Kentän nimi ja sen sisältö erotetaan toisistaan +yhtäsuuruusmerkillä (\koodi{=}), ja kentän sisältö kirjoitetaan +aaltosulkeiden tai lainausmerkkien sisään, kuten edellinen esimerkki +näyttää. + +\begin{esimerkki*} +\begin{koodilohko} +@book{itkonen_typogr, + author = {Itkonen, Markus}, + title = {Typografian käsikirja}, + date = {2019}, + edition = {5}, + publisher = {Typoteekki. Graafinen suunnittelu Markus Itkonen Oy} +} + +@incollection{likonen_teams, + author = {Likonen, Teemu and Riskilä, Kaisa}, + title = {Verkkoyhteistyö Teams-ympäristössä}, + editor = {Tammi, Tuomo and Horila, Mikko}, + booktitle = {Oppimis- ja toimintaympäristöjen kehittäminen + harjoittelukouluissa II}, + booksubtitle = {Tilat ja tekniikka pedagogisen kehittämisen tukena}, + publisher = {E-norssi. Opettajankouluttajien yhteistyöverkosto}, + date = {2020}, + pages = {85-92}, + url = {http://www.enorssi.fi/oppimisymparistojulkaisu2020/} +} + +@article{likonen_tietokanta, + author = {Likonen, Teemu}, + title = {Tietoa kantaan ja takaisin}, + journaltitle = {Skrolli}, + journalsubtitle = {Tietokonekulttuurin erikoislehti}, + date = {2015}, + volume = {2015}, + number = {4}, + pages = {52-55}, + url = {https://skrolli.fi/numerot/2015-4/} +} + +@online{ctan, + title = {Comprehensive TeX Archive Network}, + shorttitle = {CTAN}, + date = {1992/}, + url = {https://www.ctan.org/} +} +\end{koodilohko} + \caption{Lähdeteosten tietokantatiedosto} + \label{esim/bib-tiedosto} +\end{esimerkki*} + +Todellista käyttöä vastaava tietokanta tai sen osa on esimerkissä +\ref{esim/bib-tiedosto}, jossa on neljä erityyppistä teostietuetta: +\koodim{book}, \koodi{incollection}, \koodi{article} ja \koodi{online}. +Ensin mainittu teostyyppi \koodi{book} sopii tavallisille kirjoille, +joissa tietyt tekijät (\koodi{author}) vastaavat suunnilleen koko +teoksen sisällöstä ja teoksella on jokin julkaisijataho +(\koodi{publisher}). + +Teostyyppi \koodim{incollection} tarkoittaa esimerkiksi +artikkelikokoelmaa, jonka yksittäiseen artikkeliin (\koodi{title}) ja +sen kirjoittajaan (\koodi{author}) on tarkoitus viitata. Voidaan mainita +myös artikkelin alku- ja loppusivut (\koodi{pages}). Kokoelmalla on +toimittaja (\koodi{editor}) ja yhteinen nimi (\koodi{book\-title}). + +Tyyppi \koodim{article} sopii säännöllisesti julkaistavan aikakaus- tai +muun lehden artikkeleihin. Viittauskohteena on yksittäinen artikkeli ja +sen kirjoittaja. Julkaisutiedoissa mainitaan lehden nimi +(\koodi{jour\-nal\-title}), julkaisukausi (\koodi{vol\-ume}), kauteen +kuuluvan julkaisun järjestysnumero (\koodi{num\-ber}) sekä mahdollisesti +artikkelin sivut (\koodi{pages}). + +Verkkolähteiden merkitsemiseen sopii \koodim{online}\-/ teostyyppi, +joissa on tavanomaisten kenttien lisäksi ainakin verkko\-/osoite eli +\koodi{url}\-/kenttä ja mahdollisesti viittauspäivä (\koodi{url\-date}) +osoittamassa, milloin viitatut tiedot olivat saatavilla. + +Teostyyppejä ja teoksiin liittyviä tietokenttiä on olemassa paljon +muitakin. Niiden merkitystä ja käyttöä neuvotaan tarkemmin +\paketti{biblatex}\-/paketin ohjeissa. Seuraavassa on kuitenkin pari +huomiota tietokannan ja kenttien kieliopillisista asioista. + +Tietueissa joidenkin kenttien sisältö voi koostua useasta osasta kuten +saman teoksen eri tekijöistä. Eri tekijöiden nimet erotetaan +\koodi{author}- ja \koodi{editor}\-/kentissä toisistaan +\koodi{and}\-/sanalla. Oletuksena \paketti{biblatex} katsoo, että +tekijät ovat henkilöitä, ja käsittelee esimerkiksi etu- ja sukunimet +tietyllä tavalla: jos mukana on pilkku, sitä ennen on sukunimi, ja +etunimet tulevat pilkun jälkeen; jos pilkkua ei ole, etunimet ovat +ensin, ja sukunimi on lopussa. + +Jos kuitenkin teoksen tekijänä on yritys tai yhteisö, täytyy sen nimi +kirjoittaa kokonaan aaltosulkeisiin, jottei sitä tulkittaisi +henkilönnimeksi. Tällaisten aaltosulkeiden sisällä voi käyttää +\koodi{and}\-/ sanaa normaalisti, eikä sitä tulkita eri tekijöiden +erottimeksi. Seuraavassa on näistä esimerkit: + +\begin{koodilohkosis} +author = {Meikäläinen, Matti and Teikäläinen, Teija} +author = {{Org. of Latex and Typography} and Meikäläinen, Matti} +\end{koodilohkosis} + +\noindent +Muunkinlaisia useasta osasta koostuvia kenttiä on olemassa. +Asiasanakentän (\koodi{keywords}) eri sanat erotetaan toisistaan +pilkulla, ja sivunumeroissa (\koodi{pages}) voi olla myös lukualueita, +jotka ilmaistaan yhdysmerkillä~\mbox{(\koodi{-})}. + +\begin{koodilohkosis} +keywords = {eri, sanoja, peräkkäin} +pages = {15-19} +\end{koodilohkosis} + +\noindent +Teostietokantaan voi määrittää vakiosisältöisiä muuttujia käyttämällä +\koodi{@string}\-/ rakennetta. Vakioihin voi sitten viitata +teostietueiden kentistä esimerkin \ref{esim/bib-muuttujat} tavoin. +Vakiot ovat hyödyllisiä silloin, kun sama kentän sisältö toistuu useissa +teoksissa, kuten tässä esimerkissä sama tekijä (\koodi{author}) ja +aikakauslehden nimi (\koodi{jour\-nal\-title}). Vakioita voi yhdistää +saman kentän muuhun sisältöön käyttämällä \koodi{\#}\=/merkkiä, kuten +esimerkin rivillä 13 on tehty. + +\begin{esimerkki*} +\begin{koodilohko} +@string{ + oma = {Meikäläinen, Matti}, + lehti = {Hienon hieno aikakauslehti} +} + +@article{hieno_artikkeli, + author = oma, + journaltitle = lehti, + ... +} + +@article{toinen_artikkeli, + author = oma # { and Teikäläinen, Teija}, + journaltitle = lehti, + ... +} +\end{koodilohko} + \caption{Muuttujien käyttö ja \koodi{@string}\-/rakenne} + \label{esim/bib-muuttujat} +\end{esimerkki*} + +\subsubsection{Käyttöönotto} + +\paketti{biblatex}\-/paketti otetaan käyttöön esimerkin +\ref{esim/biblatex-käyttöönotto} rivien avulla. Mukana ovat myös paketit +\paketti{polyglossia} ja \paketti{csquotes}. Jälkimmäinen sisältää +lainausmerkkien käyttöön liittyvää logiikkaa (luku +\ref{luku/lainausmerkit}), jota ilman \paketti{biblatex} ei saa eri +kielten erilaisia lainausmerkkejä oikein vaan käyttää pelkästään +amerikkalaisia (``~''). + +\begin{esimerkki*} + \komentoi{usepackage} + \pakettii{polyglossia} + \pakettii{csquotes} + \pakettii{biblatex} + +\begin{koodilohko} +% Polyglossia tai babel on ladattava ennen biblatexia. +\usepackage{polyglossia} + +% Kielikohtaiset lainausmerkit oikein csquoten avulla. +\usepackage{csquotes} + +\usepackage[style=authoryear]{biblatex} +\end{koodilohko} + \caption{\paketti{biblatex}\-/ paketin käyttöönotto ja asetuksia} + \label{esim/biblatex-käyttöönotto} +\end{esimerkki*} + +Paketin asetuksissa käytetään valitsinta \koodi{style} ja sen asetusta +\koodi{author\-year}, joka asettaa lähdeviittausten ja lähdeluettelon +tyyliksi tekijän ja vuosiluvun. Se on yleinen käytäntö suomenkielisissä +teksteissä. Vastaavia tyylejä ovat myös \koodi{author\-year-comp}, +\koodi{author\-year-ibid} ja \koodi{author\-year-icomp}, jotka lisäksi +tiivistävät peräkkäisiä lähdeviittauksia, jos teoksen tekijä on sama. + +Numerointiin tai kirjainlyhenteisiin perustuvat lähdeluettelo\-/{} ja +viittaustyylit ovat nimeltään \koodi{nu\-mer\-ic} ja +\koodi{al\-pha\-bet\-ic}. Muitakin tyylejä on olemassa, mutta tämän +oppaan esimerkeissä käsitellään tekijä--vuosi-tyyliä. + +Paketin omien lähdeluettelo\-/{} ja viittaustyylien lisäksi +Latex\-/jakelupaketissa on todennäköisesti mukana myös ulkopuolisten +tahojen tekemiä tyylejä. Tyylikokonaisuus nimeltä +\pakettictan{biblatex-ext} laajentaa \paketti{biblatex}\-/ paketin +tavallisten tyylien ominaisuuksia. Laajennettujen tyylien käyttäminen ei +vaadi erillisen paketin lataamista, vaan tyylin saa käyttöön +yksinkertaisesti vain kirjoittamalla sen nimen +\paketti{biblatex}\-/paketin lataamisen yhteydessä. Laajennetut tyylit +alkavat kirjaimilla \mbox{\koodi{ext-},} esimerkiksi +\koodi{ext-author\-year} tai \koodi{ext-author\-year-comp}. + +Esimerkin \ref{esim/biblatex-käyttöönotto} komentojen lisäksi täytyy +komennolla \komento{addbibresource} nimetä kaikki käyttöön otettavat +teostietokantatiedostot. Komentoja ja tiedostoja voi olla useampiakin, +ja tietokanta voi olla myös verkko\-/osoitteen takana oleva tiedosto. +\komento{addbibresource}\-/ komennot täytyy kirjoittaa Latex\-/ +dokumentin esittelyosaan. + +\komentoi{addbibresource} +\begin{koodilohkosis} +\addbibresource{teokset.bib} +\addbibresource{~/texmf/omat_kirjoitukset.bib} +\addbibresource[location=remote]{http://osoite.netissä/yhteiset.bib} +\end{koodilohkosis} + +\noindent +Lähdeluettelo ladotaan dokumenttiin komennolla +\komento{printbibliography}. Komennolle voi antaa valinnaisen +argumentin, jonka valitsimilla vaikutetaan esimerkiksi lähdeluettelon +otsikon tekstiin tai poistetaan automaattinen otsikointi kokonaan. On +myös olemassa erilaisia lähdeteosten rajaamisvalitsimia, joiden avulla +voi määrittää, mitä teoksia kyseiseen luetteloon halutaan. Näin voidaan +esimerkiksi rajata painetut lähteet yhteen luetteloon, julkaisemattomat +toiseen ja verkkolähteet kolmanteen. + +\komentoi{printbibliography} +\begin{koodilohkosis} +\printbibliography +\printbibliography[title={Lähteet}] +\printbibliography[heading=none, % Ei automaattista otsikkoa, + type=online] % ja rajataan vain online-tyyppisiin. +\end{koodilohkosis} + +\noindent +Lähdeluetteloon tulevat mukaan vain ne teokset, joihin on viitattu. +Mitään ei siis näy, jos ei ole lähdeviittauksia. Seuraavassa alaluvussa +käsitellään lähdeviittauskomentoja ja myös ''näkymätöntä'' +viittauskomentoa, jolla teoksia saadaan mukaan luetteloon ilman näkyvää +viittausta. + +\subsubsection{Lähdeviittaukset} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\komento{#1}\komentoarg{\dots} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Komento} & \ots{Esimerkki} \\ + \midrule + \rivi{cite}{Meikäläinen 2020} + \rivi{textcite}{Meikäläinen (2020)} + \rivi{parencite}{(Meikäläinen 2020)} + \rivi{citeauthor}{Meikäläinen} + \rivi{citeyear}{2020} + \rivi{citetitle}{[teoksen nimi]} + \rivi{footcite}{Meikäläinen 2020 [alaviitteessä]} + \rivi{nocite}{[näkymätön viittaus]} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{biblatex}\-/paketin lähdeviittauskomentoja} + \label{tlk/biblatex-cite} +} + +Taulukkoon \ref{tlk/biblatex-cite} on koottu tavallisimpia +\paketti{biblatex}\-/paketin viittauskomentoja. Komennoille voi antaa +valinnaisen argumentin, jolla kerrotaan täsmentävää tietoa +lähdeviittauksesta. Yleensä se on viitattavan teoksen sivunumero. +Viittaus näkyy dokumentissa esimerkiksi seuraavalla tavalla: + +\komentoi{textcite} +\begin{koodilohkosis} +\textcite[27--29]{johdatus} % Viittaus teokseen ”johdatus”. +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen ja Teikäläinen (2020, s. 27--29) +\end{tulossis} + +\noindent +Jos halutaan sisällyttää lähdeluetteloon teoksia, joihin ei ole +välttämättä viitattu, käytetään dokumentissa kerran ''näkymätöntä'' +viittauskomentoa \komento{nocite}. Sille annetaan argumentiksi +tunnisteet niistä teoksista, jotka halutaan mukaan luetteloon. +Argumentti~\koodi{*} (tähti) valitsee kaikki teokset. + +\komentoi{nocite} +\begin{koodilohkosis} +\nocite{meikäläinen, teikäläinen} % Nämä teokset mukaan. +\nocite{*} % Kaikki mukaan. +\end{koodilohkosis} + +\subsubsection{Lähdetiedostojen kääntäminen} + +Latexin kääntäjäohjelmat Lualatex tai Xelatex eivät yksinään riitä, +sillä teostietokanta ei ole tavallinen Latex\-/muotoinen tiedosto. +Tarvitaan myös Latex\-/jakelun mukana tulevaa komentoa \koodi{biber}, +joka käsittelee teostietokantaan liittyviä tiedostoja. Lopulta +Latex\-/kääntäjääkin täytyy kutsua kaksi kolme kertaa, jotta kaikki +ristiviitteet saadaan kuntoon. Komentojen suoritusjärjestys on +seuraavanlainen: + +\begin{koodilohkosis} +lualatex teksti.tex +biber teksti.bcf +lualatex teksti.tex +lualatex teksti.tex +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komennoissa voi tiedoston nimistä jättää päätteet +pois (\koodi{.tex}, \koodi{.bcf}). \koodi{lualatex}\-/ ohjelman paikalla +voi olla myös \koodi{xelatex}. Kääntäminen on vielä helpompaa, kun +käyttää \koodi{latexmk}\-/ ohjelmaa (luku \ref{luku/latexmk}), joka osaa +automaattisesti suorittaa myös \koodi{biber}\-/ ohjelman ja tarvittavat +uudelleen kääntämiset. Yksi komento riittää: + +\begin{koodilohkosis} +latexmk -lualatex teksti.tex % tai: -xelatex +\end{koodilohkosis} + +\subsubsection{Lähdeluettelon mittoja} + +Lähdeluettelon ulkoasuun voi vaikuttaa muutaman eri mitan avulla, joista +esitellään tässä yhteydessä vain osa. Lähdemerkinnän riippuvan +sisennyksen suuruus määräytyy mitan \mittam{bibhang} avulla. Yleensä +lienee sopivaa asettaa se samaksi kuin tekstikappaleiden ensimmäisen +rivin sisennys \mitta{parindent}. + +\komentoi{setlength} +\mittai{parindent} +\mittai{bibhang} +\begin{koodilohkosis} +\setlength{\parindent}{1.1em} % tekstikappaleiden 1. rivin sisennys +\setlength{\bibhang}{\parindent} +\end{koodilohkosis} + +\noindent +Mitta \mitta{bibitemsep} on lähdemerkintöjen välinen pystysuuntainen +tila. \mittamargin{bibitemsep} Sen avulla voi harventaa lähdeluetteloa, +jolloin lähdemerkinnät erottuvat paremmin toisistaan. Mitan +\mittam{bibnamesep} avulla voi tehdä suuremman pystysuuntaisen välin +lähdemerkintöjen väliin silloin, kun teoksen tekijä vaihtuu +(\koodi{author} tai \koodi{editor}). Toisin sanoen tämän mitan avulla +voi ryhmitellä saman tekijän teokset tiiviimmin yhteen ja jättää väliä +seuraavan tekijän teoksiin. Vastaavanlainen mitta on +\mittam{bibinitsep}, jota käytetään silloin, kun lähdemerkinnän +aloittava kirjain vaihtuu. Tämän avulla voi ryhmitellä lähdemerkinnät +aakkosittain eli tehdä suuremman välin aina lähdemerkinnän alkukirjaimen +vaihtuessa. + +\komentoi{setlength} +\mittai{bibitemsep} +\mittai{bibnamesep} +\mittai{bibinitsep} +\begin{koodilohkosis} +\setlength{\bibitemsep}{.5ex plus .1ex minus .1ex} +\setlength{\bibnamesep}{1em plus .2ex minus .1ex} +\setlength{\bibinitsep}{2em plus .2ex minus .1ex} +\end{koodilohkosis} + +\subsubsection{Muita asetuksia} + +Lähdemerkintöjen fonttiin voi vaikuttaa määrittelemällä uudelleen +komennon \komentom{bibfont} ja sijoittamalla halutut fontti- tai muut +komennot kyseisen komennon määritelmään. + +\komentoi{renewcommand} +\komentoi{bibfont} +\begin{koodilohkosis} +\renewcommand{\bibfont}{\sffamily\small} +\end{koodilohkosis} + +\noindent +Lähdemerkinnät itsessään muodostetaan automaattisesti tiettyjen +tyyliasetusten perusteella. Omiakin tyylejä voi tehdä, mutta yleensä +riittää vain yksittäisen asetusten muuttaminen. Niistä käsitellään tässä +yhteydessä muutama. Asetusten muuttamiseen tarvitaan yleensä +\paketti{biblatex}\-/ paketin omia asetuskomentoja. + +Lähdeluettelon nimet näkyvät oletusasetuksilla siten, että teoksen +ensimmäisen tekijän sukunimi mainitaan ensin (luettelon +aakkosjärjestyksen vuoksi) mutta saman teoksen muiden tekijöiden etunimi +mainitaan ensin. Tekijöiden nimet näkyvät siis seuraavalla tavalla: +''Meikäläinen, Matti ja Teija Teikäläinen''. Suomessa on kuitenkin +tapana kirjoittaa kaikki nimet samalla tavalla ja mainita sukunimi aina +ensin. Tämä saadaan toteutettua seuraavilla komennolla: + +\komentoi{DeclareNameAlias} +\begin{koodilohkosis} +\DeclareNameAlias{default} {family-given} +\DeclareNameAlias{sortname}{family-given} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti ja Teikäläinen, Teija (2020). --~-- +\end{tulossis} + +\noindent +Saman teoksen eri tekijöiden nimet erotetaan oletuksena toisistaan +pilkuilla paitsi kahden viimeisen nimen välissä on \textit{ja}-sana. +Usein on kuitenkin tapana käyttää \&\=/merkkiä ainakin lähdeluettelossa. +Seuraavat esimerkkikomennot asettavat lähdeluettelon kaikkien nimien +erottimeksi \&\=/merkin. + +\komentoi{DeclareDelimFormat} +\begin{koodilohkosis} +\DeclareDelimFormat[bib]{multinamedelim}{\space\&\space} +\DeclareDelimFormat[bib]{finalnamedelim}{\space\&\space} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti \& Teikäläinen, Teija \& Tutkija, Tuija (2020). + --~-- +\end{tulossis} + +\noindent +Erotinmerkkiasetuksen nimi \koodi{multi\-name\-delim} tarkoittaa muiden +kuin kahden viimeisen tekijän nimen välissä olevaa erotinta. Kahden +viimeisen nimen erotin määritellään asetuksella +\koodi{final\-name\-delim}. + +Edellisten esimerkkikomentojen valinnainen argumentti \koodi{bib} +tarkoittaa, että vaikutetaan vain lähdeluetteloon. Argumentti voi olla +myös esimerkiksi \koodi{cite}, \koodi{textcite} tai \koodi{parencite}, +jolloin vaikutetaan samannimisillä komennoilla tehtyihin +lähdeviittauksiin: \komento{cite}, \komento{textcite} ja +\komento{parencite}. Katso lähdeviittauskomennot taulukosta +\ref{tlk/biblatex-cite}. Seuraava esimerkki vaihtaa +\komento{parencite}\-/ komentoon asetuksen, niin että kahden viimeisen +henkilön nimen väliin ladotaan \&\=/merkki. Oletuksena viittauksissa +käytetään \textit{ja}\-/sanaa. + +\komentoi{DeclareDelimFormat} +\begin{koodilohkosis} +\DeclareDelimFormat[parencite]{finalnamedelim}{\space\&\space} +\end{koodilohkosis} + +\begin{tulossis} + (Meikäläinen, Teikäläinen \& Tutkija 2020) +\end{tulossis} + +\noindent +Useiden saman teoksen tekijöiden luettelot lyhennetään automaattisesti +esimerkiksi muotoon ''Meikäläinen et~al.'', ja lyhentämisen säännöt +määritellään tiettyjen \koodi{max}- ja \koodi{min}\-/alkuisten paketin +valitsimien avulla. Lähdeluettelossa teoksen tekijäluetteloon +vaikutetaan valitsimilla \koodi{max\-bib\-names} ja +\koodi{min\-bib\-names}, kun taas lähdeviittausten tekijäluetteloon +vaikutetaan valitsimilla \koodi{max\-cite\-names} ja +\koodi{min\-cite\-names}. Asetukset toimivat siten, että jos +enimmäismäärä (max) ylittyy, typistetään tekijäluettelo vähimmäismäärään +(min) ja lisätään ilmaus ''et al.'' tms. + +Tekijäluetteloa ei kuitenkaan välttämättä lyhennetä, jos luettelosta +tulisi täsmälleen samanlainen kuin jollakin toisella teoksella. Tähän +asiaan puolestaan vaikutetaan valitsimella \koodi{unique\-list}, joka on +oletuksena päällä viittaustyylissä \koodi{author\-year}. + +\komentoi{usepackage} +\pakettii{biblatex} +\begin{koodilohkosis} +\usepackage[style=authoryear, maxbibnames=99, minbibnames=3, + maxcitenames=3, mincitenames=1, uniquelist=true]{biblatex} +\end{koodilohkosis} + +\noindent +Kun halutaan näyttää lähdeluettelossa vain tekijän etunimen alkukirjain +eikä koko etunimeä, käytetään paketin valitsinta \koodi{given\-inits}. + +\komentoi{usepackage} +\pakettii{biblatex} +\begin{koodilohkosis} +\usepackage[…, giveninits]{biblatex} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, M. (2020). -- -- +\end{tulossis} + +\noindent +Lähdeluettelossa näytetään teoksen tekijän nimen kohdalla ajatusviiva, +jos tekijä on sama kuin luettelon edelliselläkin teoksella. Mikäli tätä +(sinänsä yleistä) käytäntöä ei haluta, täytyy käyttää paketin asetusta +\koodi{dash\-ed=\katk false}. + +\komentoi{usepackage} +\pakettii{biblatex} +\begin{koodilohkosis} +\usepackage[…, dashed=false]{biblatex} +\end{koodilohkosis} + +\noindent +Joskus on tapana latoa lähdeluettelossa tekijöiden nimet esimerkiksi +pienversaalilla, jotta ne erottuvat luettelosta paremmin. Tällainen +muutos vaatii, että lähdeluettelon latomisen yhteydessä määritellään +uudelleen henkilön nimiin liittyvät latomiskomennot +\komento{mkbibnamefamily}, \komento{mkbibnamegiven}, +\komento{mkbibnameprefix} ja \komento{mkbibnamesuffix}. Se saadaan +automaattiseksi seuraavilla komennoilla: + +\komentoi{AtBeginBibliography} +\komentoi{mkbibnamefamily} +\komentoi{mkbibnamegiven} +\komentoi{mkbibnameprefix} +\komentoi{mkbibnamesuffix} +\begin{koodilohkosis} +\AtBeginBibliography{% + \renewcommand{\mkbibnamefamily}[1]{\textsc{#1}} + \renewcommand{\mkbibnamegiven} [1]{\textsc{#1}} + \renewcommand{\mkbibnameprefix}[1]{\textsc{#1}} + \renewcommand{\mkbibnamesuffix}[1]{\textsc{#1}} +} +\end{koodilohkosis} + +\begin{tulossis} + \textsc{Meikäläinen}, \textsc{Matti} \& \textsc{Teikäläinen}, + \textsc{Teija} (2020). -- -- +\end{tulossis} + +\noindent +Lähdeluettelon eri osien erottimena on yleensä piste. Joskus kuitenkin +tekijöiden nimien ja vuosiluvun jälkeen halutaan kaksoispiste. Se +saadaan toteutettua seuraavalla komennolla: + +\komentoi{DeclareDelimFormat} +\begin{koodilohkosis} +\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti (2020): -- -- +\end{tulossis} + +\noindent +Oletuksena \paketti{biblatex} kursivoi \koodi{book}\-/ tyyppisten +teosten nimen (\koodi{title}). Sen sijaan artikkelikokoelmissa +(\koodi{incollection}) ja aikakauslehdissä (\koodi{article}) +kursivoidaan julkaistun kokoelman nimi (\koodi{book\-title}) ja +aikakauslehden nimi (\koodi{jour\-nal\-title}). Näissä teostyypeissä +viitatun artikkelin nimi (\koodi{title}) kirjoitetaan lainausmerkkeihin. +Käytäntö tuntuu järkevältä, sillä kursivoituna on aina julkaistu +kokonainen teos eikä sen osa. Käytännössähän tiedonlähde joudutaan +hakemaan teoksen nimen perusteella. Joku voi silti haluta muuttaa näiden +ulkoasua ja esimerkiksi kursivoida aina viittauksen kohteena olevan +artikkelin. Seuraavassa on esimerkkikomennot edellä mainittujen +lähdeluettelon kenttien muuttamiseen. + +\komentoi{DeclareFieldFormat} +\begin{koodilohkosis} +\DeclareFieldFormat[article,incollection]{title}{\emph{#1}} +\DeclareFieldFormat[article]{journaltitle}{#1} +\DeclareFieldFormat[incollection]{booktitle}{#1} +\end{koodilohkosis} + +\noindent +Edellä olevissa esimerkkikomennoissa on valinnaisena argumenttina ne +teostyypit, joihin halutaan vaikuttaa. Jos valinnaisen argumentin jättää +pois, vaikutetaan kaikkiin teostyyppeihin, ellei tarkempaa +teostyyppikohtaista määritelmää ole olemassa. Ensimmäinen pakollinen +argumentti on kentän nimi teostietokannassa, ja toinen pakollinen +argumentti on sisältö, joka ladotaan lähdemerkintään kyseisen tiedon +kohdalle. Teostietokannasta tulevan kentän sisältö on parametrissa +\koodi{\#1}. + +Mikäli haluaa jonkin teoksen tiedon lainausmerkkeihin tai sulkeisiin, +kannattaa käyttää komentoa \komento{mkbibquote} tai +\komento{mkbibparens}. Ne ymmärtävät ottaa huomioon eri kielten +lainausmerkkikäytännöt ja mahdolliset sisäkkäiset sulkeet. + +\komentoi{DeclareFieldFormat} +\komentoi{mkbibquote} +\begin{koodilohkosis} +\DeclareFieldFormat[incollection]{booktitle}{\mkbibquote{#1}} +\end{koodilohkosis} + +\noindent +Oletuksena teoksen vuosiluku tai muu päiväys ladotaan lähdeluetteloon +sulkeissa. Joissakin lähdeluettelokäytännöissä sulkeita ei kuitenkaan +ole, joten seuraavaksi käsitellään keino sulkeiden poistamiseen. +Tavallisessa \paketti{biblatex}\-/paketin lähdeluettelotyylissä +\koodi{author\-year} ei ole omaa asetusta teoksen päiväyksen ulkoasun +muuttamiseen, mutta jos käyttää tyyliä \koodi{ext-author\-year} (tms.), +sekin puute korjaantuu, ja voi käyttää \koodi{bib\-label\-date}\-/ +asetusta. + +\komentoi{usepackage} +\pakettii{biblatex} +\komentoi{DeclareFieldFormat} +\begin{koodilohkosis} +\usepackage[style=ext-authoryear]{biblatex} + +\DeclareFieldFormat{biblabeldate}{#1} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti 2020. -- -- +\end{tulossis} + +\noindent +Artikkelikokoelmissa (teostyyppi \koodi{incollection}) mainitaan +oletuksena kokoelman nimi ja toimittajat seuraavassa muodossa: +''Teoksessa: \textit{Hieno artikkelikokoelma.} Toim. Kirjailija, +Kaisa''. Ensin siis mainitaan julkaisun nimi ja sen jälkeen toimittajien +nimet. Suomessa on tapana kirjoittaa nämä tiedot toisinpäin ja laittaa +toimittajarooli sulkeisiin. Tällaiset asetukset saa käyttämällä tyyliä +\koodi{ext-author\-year} (tms.), paketin asetusta +\koodi{in\-name\-before\-title=\katk true} ja seuraavia komentoja: + +\komentoi{usepackage} +\pakettii{biblatex} +\komentoi{DeclareFieldFormat} +\komentoi{DeclareDelimFormat} +\komentoi{mkbibparens} +\begin{koodilohkosis} +\usepackage[style=ext-authoryear, innamebeforetitle=true]{biblatex} + +\DeclareFieldFormat{editortype}{\mkbibparens{#1}} +\DeclareDelimFormat{editortypedelim}{\addspace} +\end{koodilohkosis} + +\begin{tulossis} + -- -- Teoksessa: Kirjailija, Kaisa (toim.). \textit{Hieno + artikkelikokoelma}. -- -- +\end{tulossis} + +\noindent +Lähdeviittauksissa vuosiluvun ja sivunumeroiden välissä käytetään +toisinaan pilkkua ja toisinaan kaksoispistettä. Sivunumeroiden +yhteydessä voi olla lyhenne ''s.'' tai se voidaan jättää pois. +Seuraavilla komennoilla vaikutetaan näihin asetuksiin: + +\komentoi{DeclareFieldFormat} +\komentoi{DeclareDelimFormat} +\komentoi{textcite} +\begin{koodilohkosis} +\DeclareFieldFormat{postnote}{#1} % Lyhenne ”s.” pois. +\DeclareDelimFormat{postnotedelim}{\addcolon\space} % Kaksoispiste. + +\textcite[15--16]{tunniste} toteaa artikkelissaan -- -- +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen (2020: 15--16) toteaa artikkelissaan -- -- +\end{tulossis} + +\noindent +Kun saman teoksen usean tekijän luettelo lyhennetään, käytetään +oletuksena latinankielistä ilmausta pois jäävien nimien tilalla: +''Meikäläinen et al.''. Ilmauksen voi muuttaa suomenkieliseksi +seuraavalla komennolla: + +\komentoi{DefineBibliographyStrings} +\begin{koodilohkosis} +\DefineBibliographyStrings{finnish}{ + andothers = {ym.}, +} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen ym. (2020) +\end{tulossis} + +\noindent +\pakettictan{biblatex}\-/ paketti sisältää valtavan paljon asetuksia ja +mahdollisuuksia lähdeluettelon ja \=/viitteiden ulkoasun säätämiseen. +Esimerkiksi komennolla \komento{DeclareBibliographyDriver} voi ottaa +täysin haltuun, miten tietty teostyyppi ladotaan lähdeluetteloon. +Komennolla \komento{DeclareSortingTemplate} voi määritellä omia +aakkostustapoja. Lisätietoa saa paketin ohjekirjasta. + +\section{Asiahakemistot} +\label{luku/asiasanat} + +Asiahakemistot ovat asiasanojen eli tärkeiden käsitteiden tai +henkilöiden luetteloita, ja ne ovat yleensä tietokirjan viimeisillä +sivuilla. Kunkin hakemiston asiasanat ovat aakkosjärjestyksessä, ja +jokaisen sanan perässä luetellaan sivunumerot, joilla kyseistä asiaa +käsitellään. Asiahakemistojen tarkoituksena on helpottaa tiedon +löytämistä. Tämän oppaan luku \enquote{\nameref{luku/asiahakemisto}} +alkaa sivulta \pageref{luku/asiahakemisto}. + +Latex tarvitsee asiahakemistojen tekemiseen paketin. Niitä tehty +useampia, mutta parhaita taitavat olla \pakettictan{indextools} ja +\pakettictan{imakeidx}. Ne ovat käytännössä lähes sama paketti: +\paketti{indextools} perustuu \paketti{imakeidx}\-/ pakettiin ja korjaa +joitakin sen puutteita. + +\begin{esimerkki*} + \komentoi{documentclass} + \komentoi{index} + \komentoi{makeindex} + \komentoi{printindex} + \komentoi{usepackage} + \luokkai{article} + \pakettii{indextools} + \ymparistoi{document} + +\begin{koodilohko} +\documentclass{article} +\usepackage{indextools} +\makeindex + +\begin{document} + +\index{erilaisia} \index{asiasanoja} + +... + +\printindex + +\end{document} +\end{koodilohko} + \caption{Asiahakemistojen toteutuksen perusteet} + \label{esim/asiasanat-perus} +\end{esimerkki*} + +Asiahakemiston toteutuksen perusajatus on yksinkertainen: Lähdetiedoston +alussa komennolla \komento{makeindex} määritellään asiahakemistot. +Dokumentin sisältösivuilla \komento{index}\-/ komennolla lisätään +haluttuja asiasanoja hakemistoihin. Dokumentin lopussa komennolla +\komento{printindex} ladotaan varsinaiset hakemistot. Näitä komentoja +käsitellään tarkemmin erillisissä alaluvuissa, mutta esimerkissä +\ref{esim/asiasanat-perus} ovat perusasiat tiiviisti. + +\subsection{Asiahakemistojen määrittely} +\label{luku/asiasanat-määrittely} + +Ennen asiasanojen ja \=/hakemistojen käyttöä täytyy hakemistot +määritellä. Yksinkertaisimmillaan määrittelyksi riittää pelkkä yksi +\komento{makeindex}\-/ komento lähdedokumentin esittelyosassa, kuten +esimerkissä \ref{esim/asiasanat-perus} on tehty. Jos haluaa vaikuttaa +asetuksiin tai jos dokumenttiin tarvitaan useampia asiahakemistoja, +täytyy tietää \komento{makeindex}\-/ komennosta enemmän. Tässä luvussa +käsitellään \komento{makeindex}\-/ komennon muita ominaisuuksia +pakettien \paketti{indextools} ja \paketti{imakeidx} näkökulmasta. +Komennolla vaikutetaan yksittäisen hakemiston ominaisuuksiin. Yleisiä, +kaikkien hakemistojen latomiseen liittyviä asetuksia käsitellään luvussa +\ref{luku/asiasanat-asetukset}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{name}{asiahakemiston tekninen nimi} + \rivi{title}{asiahakemistolle ladottava otsikko} + \rivi{intoc}{sisällysluetteloon lisääminen} + \rivi{columns}{asiahakemiston sarakkeiden lukumäärä} + \rivi{columnsep}{asiahakemiston sarakkeiden väli (mitta)} + \rivi{columnseprule}{pystyviiva sarakkeiden väliin} + \rivi{program}{asiahakemiston tekemisestä vastaava ohjelma: + \koodi{makeindex} (oletus), \koodi{xindy} ym.} + \rivi{options}{ohjelman komentorivin valitsimia} + \bottomrule + \end{tabularx} +}{ + \caption{\komento{makeindex}\-/ komennon valitsimia} + \label{tlk/makeindex-valitsimia} +} + +\komento{makeindex}\-/ komennolle voi antaa yhden valinnaisen +argumentin, joka voi sisältää useita pilkulla toisistaan erotettuja +valitsimia ja niiden arvoja. Valitsimia on koottu taulukkoon +\ref{tlk/makeindex-valitsimia}. + +Valitsin \koodi{name} on asiahakemiston tekninen nimi, jota käytetään +Latexissa sisäisesti. Valitsinta ei tarvitse käyttää, jos tarvitaan vain +yksi asiahakemisto. Tällöin nimeksi tulee sama kuin Latex\-/ +lähdedokumentin eli tiedoston nimi. Jos asiahakemistoja tarvitaan +useita, on järkevää nimetä jokainen erikseen \koodi{name}\-/ valitsimen +avulla. Seuraavassa esimerkissä määritellään kolme eri hakemistoa, jotka +voisivat olla Latexin komennoille, mitoille ja laskureille: + +\komentoi{makeindex} +\begin{koodilohkosis} +\makeindex[name=komennot, title=Komennot, columns=2, intoc] +\makeindex[name=mitat, title=Mitat, columns=2, intoc] +\makeindex[name=laskurit, title=Laskurit, columns=2, intoc] +\end{koodilohkosis} + +\noindent +\komento{makeindex}\-/ komennon valitsin \koodi{title} antaa otsikon +hakemistolle, joka ladotaan \komento{printindex}\-/ komennolla (luku +\ref{luku/asiasanat-asetukset}). Jos \koodi{title}\-/ valitsinta ei ole +annettu, otsikko tulee komennosta \komento{indexname}, joka puolestaan +määräytyy kieliasetusten perusteella (luku \ref{luku/kieliasetukset}). +Se on \paketti{polyglossia}\-/ kielipaketissa suomen kieliasetuksilla +''\indexname''. + +Jos valitsin \koodi{intoc} on mukana, kyseinen asiahakemisto eli sen +otsikko lisätään myös sisällysluetteloon. Valitsimella \koodi{columns} +asetetaan hakemiston sarakkeiden lukumäärää ja valitsimella +\koodi{columnsep} mitta, joka on sarakkeiden välinen tyhjä tila. +Sarakkeiden väliin saa pystyviivan antamalla valitsimen +\koodi{columnseprule}. Teknisesti sarakkeet toteutetaan +\paketti{multicol}\-/ paketin avulla, joten sen paketin mitat ovat +käytettävissä myös asiahakemistojen latomisessa. Katso lisätietoa +sarakkeista ja \paketti{multicol}\-/ paketista luvusta +\ref{luku/multicol}. + +Asiahakemiston järjestelystä vastaa erillinen tietokoneohjelma, joka +suoritetaan automaattisesti lähdedokumentin kääntämisen yhteydessä. +Ohjelmalle on olemassa pari vaihtoehtoa, ja sen voi valita valitsimella +\koodi{program}. Tärkeimmät vaihtoehdot ovat +\koodi{makeindex}\footnote{\koodi{program=\katk makeindex} on + oletusasetus, mutta yleisen oletusasetuksen voi vaihtaa paketin + lataamisen yhteydessä. Katso luku \ref{luku/asiasanat-asetukset}.} ja +\koodi{xindy}, joka käytännössä suorittaa \koodi{texindy}\-/ nimisen +ohjelman. Näillä ohjelmilla on omat ohjekirjansa, joita pääsee lukemaan +GNU/\katk Linux\-/ järjestelmissä \koodi{man}\-/ komennolla. Jos käyttää +vaihtoehtoa \koodi{program=\katk xindy}, täytyy Latexin kääntäjälle +(\koodi{lualatex} tai \koodi{xelatex}) antaa komentorivivalitsin +\koodi{\=/shell-escape}, joka kytkee päälle erään +lisäominaisuuden.\footnote{Lisätietoa \koodi{tex}\-/ komennon + ohjekirjasta, komennolla \koodi{man tex}.} + +Valitsimella \koodi{options} annetaan edellä mainitulle ohjelmalle +komentorivivalitsimet. Tätä tarvitaan lähinnä silloin, kun kirjoittaja +on tehnyt oman tyylitiedoston tai muita erikoisempia asetuksia +asiahakemistolle. Varsinkin \koodi{xindy} on monipuolinen ohjelma, jonka +toimintaan voi vaikuttaa monella tavalla. Lisätietoa saa +\koodi{makeindex}\-/{} ja \koodi{xindy}\-/ ohjelmien ohjekirjoista. + +\subsection{Asiasanojen lisääminen} +\label{luku/asiasanat-lisääminen} + +Asiasanat lisätään komennolla \komento{index}, joka sijoitetaan +lähdedokumentissa juuri siihen kohtaan, jossa kyseistä asiaa +käsitellään. Komento itsessään ei lado mitään; se vain kirjaa asiasanan +ja sivunumeron muistiin. Komentoa käytetään esimerkiksi seuraavalla +tavalla: + +\komentoi{index} +\begin{koodilohkosis} +Yhteen \index{kirjainperhe} kirjainperheeseen kuuluu tavallisesti +useita \index{kirjainleikkaus} leikkauksia. +\end{koodilohkosis} + +\noindent +\komento{index}\-/ komennolle voi antaa yhden valinnaisen argumentin. +Sitä tarvitaan silloin, kun asiasana halutaan lisätä tiettyyn, +määrittelyn yhteydessä \koodi{name}\-/ valitsimella nimettyyn +hakemistoon (luku \ref{luku/asiasanat-määrittely}). Jos esimerkiksi +dokumentissa on määritelty asiahakemisto +\komento{makeindex}\komentoargv{name=\katk henkilöt}, lisättäisiin +asiasana kyseiseen hakemistoon seuraavasti: + +\begin{koodilohkosis} +\index[henkilöt]{Waltari, Mika} +\end{koodilohkosis} + +\noindent +Tämän luvun muissa esimerkeissä ei yleensä käytetä \komento{index}\-/ +komennon valinnaista argumenttia. Argumentti on kuitenkin tarpeen aina, +kun halutaan lisätä asiasanoja tiettyyn, määrittelyn yhteydessä +nimettyyn hakemistoon. + +Asiahakemistot aakkostetaan automaattisesti, mutta yksittäisten sanojen +aakkostustapaan voi vaikuttaa käyttämällä \koodi{@}\=/ merkkiä +\komento{index}\-/ komennon argumentissa. Ennen \koodi{@}\=/ merkkiä on +asiasana siinä muodossa kuin se aakkostetaan; \koodi{@}\=/ merkin +jälkeen annetaan asiasana siinä muodossa kuin se ladotaan +asiahakemistoon. + +Seuraavassa esimerkissä asiahakemistoon lisätään kolme eri henkilöä, +joiden sukunimet ovat joko Vuori tai Wuori. Kaikki nimet aakkostetaan +nimen Vuori mukaisesti, eli \emph{v} ja \emph{w} katsotaan aakkostuksen +kannalta samaksi kirjaimeksi. Tämä on tavallinen käytäntö suomalaisten +sanojen ja nimien aakkostuksessa. + +\komentoi{index} +\begin{koodilohkosis} +\index{Vuori, Lauri} +\index{Vuori, Anita@Wuori, Anita} +\index{Vuori, Yrjö@Wuori, Yrjö} +\end{koodilohkosis} + +\begin{tulossis} + Wuori, Anita, \arabic{page} \\* + Vuori, Lauri, \arabic{page} \\* + Wuori, Yrjö, \arabic{page} +\end{tulossis} + +\noindent +Edellä mainittua aakkostustoimintoa tarvitaan myös silloin, kun +hakemiston sanojen latomisessa käytetään Latex\-/ komentoja eli asiasana +ei ole pelkkää tekstiä. Seuraavassa esimerkissä asiahakemistoon lisätään +Latex\-/ komento \komento{textbullet}. Se aakkostetaan sanan +''\englanti{textbullet}'' mukaan mutta hakemistoon se ladotaan +tasalevyisellä fontilla (\komento{texttt}) ja alkuun lisätään kenoviiva +(\komento{textbackslash}). + +\komentoi{index} +\komentoi{texttt} +\komentoi{textbackslash} +\begin{koodilohkosis} +\index{textbullet@\texttt{\textbackslash textbullet}} +\end{koodilohkosis} + +\noindent +Käytännössä \komento{index}\-/ komentoja ei kannata aina kirjoittaa +lähdedokumenttiin sellaisenaan, vaan komennon voi sisällyttää jonkin +toisen komennon määritelmään. Tästä on esimerkki luvussa +\ref{luku/komennot-abst}. + +Asiasanat voi järjestää hakemistoon hierarkkisesti eli aihepiirien +mukaisesti. Se toteutetaan \komento{index}\-/ komennon argumentissa +\koodi{!}\=/ merkin avulla, jolla erotetaan ylemmäntasoiset käsitteet +alemmantasoisista. Seuraava esimerkki lisää asiahakemistoon sanan +''fontit'' ja sen alle kaksi asiasanaa sivunumeroineen: + +\komentoi{index} +\begin{koodilohkosis} +\index{fontit!kirjainperhe} +\index{fontit!kirjainleikkaus} +\end{koodilohkosis} + +\begin{tulossis} + fontit \\* + \makebox[\sisennys]{}kirjainleikkaus, \arabic{page} \\* + \makebox[\sisennys]{}kirjainperhe, \arabic{page} +\end{tulossis} + +\noindent +Asiasanahierarkiassa voi olla korkeintaan kolme tasoa, ja tasot +erotetaan toisistaan \koodi{!}\=/ merkillä. Jokainen \koodi{!}\=/ +merkillä erotettu osa voi sisältää \koodi{@}\=/ merkin, jolla voi +vaikuttaa sanan aakkostamiseen: ensin mainitaan hakusanasta +aakkostamisessa käytetty versio ja \koodi{@}\=/ merkin jälkeen annetaan +hakemistoon ladottava versio. + +Kirjoittaja voi vaikuttaa asiasanojen sivunumeroiden latomiseen +käyttämällä \komento{index}\-/ komennon argumentissa asiasanan perässä +\koodi{|}\=/ merkkiä ja antamalla sen jälkeen komennon nimen. +Seuraavassa esimerkissä asiasanan sivunumero ladotaan kursiivilla: + +\komentoi{index} +\begin{koodilohkosis} +\index{asiasana|textit} +\end{koodilohkosis} + +\begin{tulossis} + asiasana, \textit{\arabic{page}} +\end{tulossis} + +\noindent +\komento{index}\-/ komennon argumenttiin ei kirjoiteta varsinaista +komentoa (\komento{textit}) vaan ainoastaan komennon nimi \koodi{|}\=/ +merkin jälkeen. Komento voi olla mikä hyvänsä ja sen pitäisi hyväksyä +ainakin yksi argumentti: sivunumero. Asiahakemistoissa on joskus tapana +merkitä asiasanan pääasiallinen käsittelysivu eri tavalla, esimerkiksi +kursiivilla tai lihavoinnilla, ja tämä \koodi{|}\=/ ominaisuus sopii +siihen. + +Yksi hyödyllinen käyttökohde \koodi{|}\=/ ominaisuudelle on viittaus +toiseen asiasanaan. On määritelty jo valmiiksi komennot \komento{see} ja +\komento{seealso}, joita voi käyttää \komento{index}\-/ komennossa +seuraavasti: + +\komentoi{index} +\begin{koodilohkosis} +\index{fontit} +\index{kirjainleikkaus|see{fontit}} +\index{kirjainperhe|seealso{fontit}} +\end{koodilohkosis} + +\begin{tulossis} + fontit, \arabic{page} \\* + kirjainleikkaus, \textit{\seename} fontit \\* + kirjainperhe, \textit{\alsoname} fontit +\end{tulossis} + +\noindent +Molemmat komennot hyväksyvät kaksi argumenttia, mutta edellisessä +esimerkissä annettiin vain yksi: \koodi{fontit}. Viimeiseksi +argumentiksi tulee automaattisesti aina sivunumero, mutta nämä komennot +jättävät sen huomioimatta. Sivunumeroa ei haluta näkyviin, koska +tarkoitus on vain lisätä asiahakemistoon viittaus toiseen +asiasanaan. + +Suomen kieliasetuksilla edellä mainitut komennot latovat kursivoidun +ilmauksen \textit{\seename} tai \textit{\alsoname}. Kielikohtaisen +määritelmän voi muuttaa kielipaketteihin \paketti{polyglossia} ja +\paketti{babel} kuuluvan \komento{addto}\-/ komennon avulla. Seuraavassa +esimerkissä vaikutetaan suomen kieliasetuksiin +(\komento{captionsfinnish}). Komennot täytyy sijoittaa dokumentin +esittelyosaan: + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{seename} +\komentoi{alsoname} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\seename}{katso} + \renewcommand{\alsoname}{katso myös} +} +\end{koodilohkosis} + +\noindent +Toisaalta kirjoittaja voi määritellä ihan oman komentonsa +asiasanaviittausten tekemiseen. Oman komennon avulla lopputulokseen voi +vaikuttaa enemmän. Esimerkissä \ref{esim/see-katso-komento} määritellään +komento \komentox{katso}, jolla voi toteuttaa viittauksia toisiin +asiasanoihin. Komento hyväksyy kaksi argumenttia mutta jälkimmäinen eli +sivunumero jätetään käsittelemättä. + +\begin{esimerkki*} + \komentoi{newcommand} + \komentoi{textrightarrow} + \komentoi{index} + +\begin{koodilohko} +\newcommand{\katso}[2]{\textrightarrow{} #1} + +% Seuraavat komennot tarvitaan vain kerran dokumentissa, koska ne vain +% viittaavat toisiin asiasanoihin. +\index{kirjainleikkaus|katso{fontit}} +\index{kirjainperhe|katso{fontit}} + +% Seuraavassa on esimerkki varsinaisista asiasanoista. Komennot +% sijoitetaan paikkoihin, joissa aihetta käsitellään. +\index{fontit!kirjainleikkaus} +\index{fontit!kirjainperhe} +\end{koodilohko} + +\begin{tulos} + fontit \\* + \makebox[\sisennys]{}kirjainleikkaus, \arabic{page} \\* + \makebox[\sisennys]{}kirjainperhe, \arabic{page} \\* + kirjainleikkaus, \textrightarrow{} fontit \\* + kirjainperhe, \textrightarrow{} fontit +\end{tulos} + +\caption{Oman \komentox{katso}\-/ komennon määrittely. Komennon nimeä + käytetään \komento{index}\-/ komennon argumentissa ja sillä viitataan + toisiin asiasanoihin} +\label{esim/see-katso-komento} +\end{esimerkki*} + +Tavallisesti \komento{index} kirjaa muistiin vain sen sivun, jolla +komento esiintyy. Jos komento esiintyy usealla peräkkäisellä sivulla, +hakemistoon ladotaan automaattisesti sivualue, esimerkiksi 53--55. + +Aina ei kuitenkaan ole mielekästä ilmaista aiheen käsittelyä +yksittäisten \komento{index}\-/ komentojen avulla. Toisinaan voi olla +sopivampaa määrittää aiheen käsittelyn alku- ja loppukohta. Alkukohta +ilmaistaan \komento{index}\-/ komennon argumentissa merkkien \koodi{|(} +avulla ja loppukohta merkkien \koodi{|)} avulla. Jos aloitus ja lopetus +sattuvat samalle sivulle, hakemistoon ladotaan vain yksi sivunumero. +Muussa tapauksessa ladotaan sivualue. Seuraavassa on esimerkki aiheen +käsittelyn alun ja lopun merkitsemiseen: + +\komentoi{index} +\begin{koodilohkosis} +\index{asiasana|(} % aiheen käsittely alkaa +... +\index{asiasana|)} % aiheen käsittely loppuu +\end{koodilohkosis} + +\begin{tulossis} + asiasana, 53--55 +\end{tulossis} + +\noindent +Edellä mainittujen aloitusmerkkien \koodi{|(} perään voi kirjoittaa +komennon nimen, jos haluaa vaikuttaa sivunumeroiden latomiseen. Tätä +käsiteltiin jo edellä, mutta seuraavassa on käytännön esimerkki: + +\komentoi{index} +\begin{koodilohkosis} +\index{asiasana|(textit} % aiheen käsittely alkaa +... +\index{asiasana|)} % aiheen käsittely loppuu +\end{koodilohkosis} + +\begin{tulossis} + asiasana, \textit{53--55} +\end{tulossis} + +\noindent +Jos itse asiasanaan täytyy sisällyttää edellä mainittuja +\komento{index}\-/ komennon erikoismerkkejä (\koodi{@!|}), pitää niiden +eteen kirjoittaa yleislainausmerkki (\koodi{\textquotedbl}). Se estää +seuraavan merkin tulkitsemisen \komento{index}\-/ komennon +erikoismerkiksi. + +\subsection{Hakemiston latominen ja asetukset} +\label{luku/asiasanat-asetukset} + +Hakemistot ladotaan komennolla \komento{printindex}. Tyypillisesti +komento sijaitsee dokumentin lopussa eli lähinnä artikkelin tai +tietokirjan viimeisillä sivuilla. Jos komennon suorittaa ilman +argumentteja, se latoo oletushakemiston eli sen, jolle ei ole annettu +teknistä nimeä \komento{makeindex}\-/ komennon \koodi{name}\-/ +valitsimella (luku \ref{luku/asiasanat-määrittely}). Komennolle voi +antaa hakasulkeissa yhden valinnaisen argumentin, joka ilmaisee +ladottavan hakemiston teknisen nimen, esimerkiksi: + +\komentoi{printindex} +\begin{koodilohkosis} +\printindex % Latoo nimeämättömän hakemiston. +\printindex[henkilöt] % Latoo hakemiston nimeltä ”henkilöt”. +\end{koodilohkosis} + +\noindent +Luvussa luku \ref{luku/asiasanat-määrittely} käsitellään yksittäisten +hakemistojen asetuksia, mutta \komento{indexsetup}\-/ komennolla voi +määrittää kaikkia hakemistoja koskevia yleisempiä asetuksia. Komennolle +annetaan yksi argumentti, joka voi sisältää useita pilkuilla erotettuja +valitsimia ja niiden arvoja. Valitsimia on koottu taulukkoon +\ref{tlk/indexsetup-valitsimia}, ja seuraavassa on käytännön esimerkki: + +\begin{koodilohkosis} +\indexsetup{level=\section*, noclearpage} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys ja vaihtoehtoja} \\ + \midrule + \rivi{level}{Hakemistojen otsikkokomento: \komento{chapter*}, + \komento{chapter}, \komento{section*}, \komento{section} ym.} + \rivi{toclevel}{Hakemiston taso sisällysluettelossa: + \koodi{chapter}, \koodi{section} ym.} + \rivi{noclearpage}{Ei automaattista sivunvaihtoa hakemistojen + alussa.} + \rivi{firstpagestyle}{Hakemiston ensimmäisen sivun sivutyyli: + \koodi{plain}, \koodi{empty} ym.} + \bottomrule + \end{tabularx} +}{ + \caption{\komento{indexsetup}\-/ komennon valitsimia, joilla + vaikutetaan kaikkien asiahakemistojen latomiseen} + \label{tlk/indexsetup-valitsimia} +} + +\noindent +Valitsimen \koodi{level} arvoksi annetaan tyypillisesti otsikkokomento, +joka suoritetaan kunkin hakemiston alussa. Itse otsikon tekstin voi +määritellä \komento{makeindex}\-/ komennon \koodi{title}\-/ valitsimella +kullekin hakemistolle erikseen. \koodi{level}\-/ valitsimelle oletusarvo +on dokumenttiluokkakohtainen korkein otsikkotaso eli \komento{chapter*} +tai \komento{section*}. Jos arvoksi antaa tähdettömän otsikkokomennon +kuten \komento{chapter}, se luo automaattisesti merkinnän +sisällysluetteloon. Silloin ei kannata käyttää \komento{makeindex}\-/ +komennon \koodi{intoc}\-/ valitsinta. + +Käytännössä \koodi{level}\-/ valitsimen arvoksi voi antaa minkä hyvänsä +komennon, joka hyväksyy yhden argumentin eli kyseisen hakemiston +otsikkotekstin. Kirjoittaja voi siis asettaa tähän oman komentonsa, +jonka määritelmässä mahdollisesti suoritetaan muutakin kuin pelkkä +otsikkokomento. \koodi{toclevel}\-/ valitsimella ilmaistaan hakemistojen +taso sisällysluettelossa. Valitsimen arvoksi annetaan otsikkokomentojen +nimi kuten \koodi{section} tai \koodi{subsection}. + +Oletuksena jokaisen asiahakemiston alussa suoritetaan sivunvaihtokomento +\komento{clearpage}. Käyttämällä valitsinta \koodi{noclearpage} estetään +automaattinen sivunvaihto. Valitsimella \koodi{firstpagestyle} asetetaan +kunkin asiahakemiston ensimmäisen sivun sivutyyli (luku +\ref{luku/ylä-ala-tunnisteet}). Oletusarvo on \koodi{plain} eli +tavallinen, oletuksena pelkän sivunumeron sisältävä sivutyyli. Tämä +valitsin ei ole käytössä, jos ladattuna on paketti \paketti{fancyhdr}. + +Ennen \komento{printindex}\-/ komentoa voi käyttää komentoa +\komento{indexprologue}, jolla määritetään johdantoteksti asiahakemiston +alkuun. Komento vaikuttaa seuraavaksi ladottavaan asiahakemistoon, eli +se kannattaa sijoittaa juuri ennen \komento{printindex}\-/ komentoa. +Komentoa käytetään seuraavasti: + +\komentoi{indexprologue} +\begin{koodilohkosis} +\indexprologue[väli]{teksti} +\end{koodilohkosis} + +\noindent +Pakollinen argumentti \koodi{teksti} on hakemiston johdannoksi +tarkoitettu teksti. Valinnainen argumentti \koodi{väli} on tarkoitettu +komennolle, joka latoo pystysuuntaisen välin johdantotekstin jälkeen, +ennen asiasanojen luetteloa. Oletuksena väliksi tulee komennon +\komento{bigskip} latoma väli, mutta muunlaisen välin saa kirjoittamalla +valinnaiseen argumenttiin esimerkiksi \komento{vspace}\-/ komennon ja +sen argumentiksi halutun mitan. + +Asiahakemistopaketin -- \paketti{indextools} tai \paketti{imakeidx} -- +lataamisen yhteydessä voi määrittää asetuksia tiettyjen valitsimien +avulla. \komento{usepackage}\-/ komennon valinnaiseen argumenttiin +kirjoittaa useita valitsimia, ja ne erotetaan toisistaan pilkulla. +Mahdollisia valitsimia on useita, mutta tässä oppaassa käsitellään vain +pari tärkeintä. + +Esimerkiksi valitsin \koodi{xindy}, aiheuttaa sen, että +\komento{makeindex}\-/ komennoilla määritetyille asiahakemistoille tulee +oletuksena asetus \koodi{program=\katk xindy}. Muutoin oletus on +\koodi{program=\katk makeindex} (luku \ref{luku/asiasanat-määrittely}). + +\komentoi{usepackage} +\pakettii{indextools} +\begin{koodilohkosis} +\usepackage[xindy]{indextools} +\end{koodilohkosis} + +\noindent +Jos omassa dokumentissa tarvitaan useita asiahakemistoja, saatetaan +joskus tarvita valitsinta \koodi{splitindex}. Se kiertää erästä Latexin +tiedostojen käsittelyn puutetta. Nimittäin Latex ei voi kääntämisen +yhteydessä kirjoittaa kovin moneen tiedostoon, ja jokainen asiahakemisto +tarvitsisi omansa. Rajoitukset saattavat tulla vastaan useiden +asiahakemistojen käsittelyssä. + +Käyttämällä valitsinta \koodi{splitindex} kierretään edellä mainittua +rajoitusta siten, että ensin kaikki asiahakemistot kirjoitetaan yhteen +väliaikaistiedostoon ja myöhemmin ne erotetaan automaattisesti +toisistaan suorittamalla \koodi{splitindex}\-/ niminen ohjelma. Tämän +valitsimen käyttö vaatii, että Latexin kääntäjäohjelmalle +(\koodi{lualatex} tai \koodi{xelatex}) annetaan komentorivivalitsin +\koodi{\=/shell-escape}. + +\section{Kuvat} +\label{luku/grafiikka} + +Perus Latex ei pysty juuri minkäänlaiseen kuvien eli tietokonegrafiikan +käsittelyyn, mutta avuksi on tehty monipuolisia paketteja. Niiden +voidaan esimerkiksi ladata ja latoa kuvatiedostoja sekä piirtää +vektorigrafiikkakuvia Latex\-/ komentojen avulla. + +\subsection{Kuvatiedostot} + +Paketti \pakettictan{graphicx} sisältää toiminnot kuvatiedostojen +käsittelyyn sekä tekstin tai muun sisällön kääntelyyn ja skaalaamisen. +Kuvatiedostojen peruskäyttö sujuu komennolla \komento{includegraphics} +seuraavasti: + +\komentoi{includegraphics} +\begin{koodilohkosis} +\includegraphics[width=6cm]{kuvatiedosto.jpg} +\end{koodilohkosis} + +\noindent +Tällä tavoin lisätty kuvatiedosto käyttäytyy tekstikappaleessa kuin mikä +tahansa kirjain. Edellisen esimerkin pakollisessa argumentissa oleva +\koodi{kuvatiedosto.\katk jpg} on tiedoston nimi. Se voi sisältää myös +hakemistopolun, jos tiedosto ei sijaitse samassa hakemistossa Latex\-/ +lähdetiedostojen kanssa. Kaikki käyttöjärjestelmän hyväksymät +tiedostonnimet eivät Latexissa toimi, vaan kannattaa jättää välilyönnit +pois ja pitäytyä suppeassa latinalaisessa merkkivalikoimassa. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{width}{leveysmitta} + \rivi{height}{korkeusmitta} + \rivi{angle}{kääntökulma asteina} + \rivi{origin}{kääntämisen keskipiste: + \koodi{c} (keskikohta), + \koodi{l} (vasen), + \koodi{r} (oikea), + \koodi{t} (ylä), + \koodi{b} (ala), + \koodi{B} (rivin peruslinja) + } + + \rivi{trim}{reunojen siirto: vasen, ala, oikea, ylä} + \rivi{clip}{leikkaminen reunojen ulkopuolelta} + \bottomrule + \end{tabularx} +}{ + \caption{\komento{includegraphics}\-/ komennon valinnaiseen + argumenttiin sopivia valitsimia} + \label{tlk/includegraphics-valitsimia} +} + +\komento{includegraphics}\-/ komennon valinnaiseen argumenttiin voi +kirjoittaa monenlaisia pilkulla toisistaan erotettuja valitsimia ja +niiden arvoja. Joitakin valitsimia on koottu taulukkoon +\ref{tlk/includegraphics-valitsimia}. Tavallisimpia ovat varmaankin +\koodi{width} ja \koodi{height}, joilla määritetään, minkä levyisenä tai +korkuisena kuva halutaan latoa. Näistä voi asettaa vain jommankumman, ja +toinen mitta määräytyy alkuperäiskuvan mittasuhteiden perusteella. +Asettamalla sekä leveyden että korkeuden kuva skaalataan juuri kyseisiin +mittoihin. + +Kuvan kääntämisessä käytetään \koodi{angle}\-/ valitsinta ja astelukua. +Kuva kääntyy \koodi{origin}\-/ valitsimella määritetyn pisteen kautta, +ja valitsimen arvoksi annetaan taulukossa +\ref{tlk/includegraphics-valitsimia} mainittuja kirjaimia tai niiden +yhdistelmiä. Esimerkiksi \koodi{origin=\katk lt} tarkoittaa vasenta +(\koodi{l}) ylänurkkaa (\koodi{t}). + +Kuvaa voi rajata sivuilta käyttämällä yhdessä valitsimia \koodi{trim} ja +\koodi{clip}. \koodi{trim}\-/ valitsimen arvoksi annetaan neljä +välilyönnillä erotettua mittaa, joiden järjestys on seuraava: vasen, +ala, oikea, ylä. Tämä valitsin vain siirtää kuvan reunojen sijaintia, +mutta kun mukaan ottaa valitsimen \koodi{clip}, kuvasta myös leikataan +reunojen ulkopuolinen alue pois. Seuraavassa esimerkissä kuvaa leikataan +vasemmalta 1\,mm, alhaalta 2\,mm, oikealta 3\,mm ja ylhäältä 4\,mm. +Kuvan lopulliseksi leveydeksi tulee 40\,mm. + +\komentoi{includegraphics} +\begin{koodilohkosis} +\includegraphics[width=40mm, + clip, trim={1mm 2mm 3mm 4mm}]{kuvatiedosto.jpg} +\end{koodilohkosis} + +\subsection{Vektorigrafiikka} + +Paketti \pakettictan{tikz} tuo Latexiin monipuolisen apukielen, jolla +kirjoittaja voi piirtää vektorigrafiikkaa. Paketin taustalla toimii +toinen paketti ja grafiikkajärjestelmä \paketti{pgf} eli +\englantik{portable graphics format}, mutta kirjoittajan ei yleensä +tarvitse välittää taustalla olevasta matalan tason tekniikasta. + +Tässä oppaassa käsitellään vain joitakin \paketti{tikz}\-/ paketin +perustoimintoja. Paketin omassa ohjekirjassa on yli 1\,300 sivua, eli +valtavan paljon hienoja ominaisuuksia jää lukijan itse selvitettäväksi. +Runsasta sivumäärää ei kannata säikähtää: ei opasta tarvitse kokonaan +lukea, ja alkupuolella teksti johdattelee lukijaa eteenpäin helppojen ja +käytännöllisten esimerkkien avulla. + +Vektorigrafiikkaan erikoistunut kieli ja komennot toimivat ympäristön +\ymparisto{tikzpicture} sisällä. Se ei ole mikä tahansa Latexin tekstiä +ja merkintätapoja sisältävä ympäristö, vaan se on tarkoitettu vain +piirtokomennoille, joilla on oma, muusta Latexista hieman poikkeava +kielioppinsa. Seuraavassa on pieni esimerkki: + +\ymparistoi{tikzpicture} +\komentoi{draw} +\begin{koodilohkosis} +\begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- (25,5) -- (50,0) -- cycle; + \draw (25,0) -- (25,5); +\end{tikzpicture} +\end{koodilohkosis} + +\begin{tulossis} + \begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- (25,5) -- (50,0) -- cycle; + \draw (25,0) -- (25,5); + \end{tikzpicture} +\end{tulossis} + +\noindent +Edellisessä esimerkissä ympäristön alussa määritellään hakasulkeissa +perusasetuksia. Tässä asetetaan x- ja y\=/ akselien suuntaiset +yksikkömitat 1\,mm:n pituiseksi. Piirtokomentojen koordinaatit käyttävät +sen jälkeen näitä yksiköitä. Jos yksiköitä ei määritellä, käytetään +oletusyksikköä, joka on 10\,mm. On myös mahdollista antaa +piirtokomentojen koordinaateissa suoraan Latexin mittayksiköt, +esimerkiksi \koodi{(25mm,5mm)} tai \koodi{(10bp,20bp)}, jolloin +koordinaatit tulevat juuri näiden mittojen mukaiseksi. Piirustusalustan +origo eli koordinaatti (0,~0) sijaitsee vasemmassa alanurkassa, ja +koordinaatisto kasvaa ylös ja oikealle. + +Edellä olleessa esimerkissä piirretään komennolla \komento{draw} +viivakuvio, jonka välipisteiden kordinaatit ilmaistaan sulkeissa. +Lopussa oleva \koodi{cycle} piirtää viivan takaisin saman +\komento{draw}\-/ komennon alkupisteeseen. Tätä kokonaisuutta kutsutaan +poluksi, ja sen lopussa täytyy olla puolipiste +(\koodi{;}).\footnote{Polkujen luomisen peruskomento on \komento{path}, + joka ei piirrä mitään, ellei sille anna valinnaista argumenttia + \koodi{draw}. Komento \komento{draw} on itse asiassa sama kuin + \komento{path}\komentoargv{draw}.} Esimerkissä on toinenkin polku eli +toinen \komento{draw}\-/ komento piirtää pystyviivan suuren kolmion +keskelle ja jakaa sen kahdeksi pienemmäksi kolmioksi. + +Koordinaatit voi ilmaista suhteessa polun edelliseen pisteeseen +lisäämällä koordinaatin eteen kaksi plusmerkkiä. Seuraavassa esimerkissä +havainnollistetaan sitä. Kuvion (polun) neljä ensimmäistä pistettä +ilmaistaan x- ja y\=/ koordinaateilla mutta viimeinen piste ilmaistaan +kulman (25°) ja pituuden (8) avulla. + +\ymparistoi{tikzpicture} +\komentoi{draw} +\begin{koodilohkosis} +\begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- ++(0,5) -- ++(10,0) -- ++(0,-5) -- ++(25:8); +\end{tikzpicture} +\end{koodilohkosis} + +\begin{tulossis} + \begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- ++(0,5) -- ++(10,0) -- ++(0,-5) -- ++(25:8); + \end{tikzpicture} +\end{tulossis} + +\noindent +Viivojen lisäksi on olemassa komentoja muillekin geometrisille +peruskuvioille. Esimerkissä \ref{esim/tikz-kuvioita} piirretään +suorakulmio, ympyrä, ellipsi, sektorin kaari (0--90°) ja taivutettu +viiva. Viimeksi mainittu (rivi~6) sisältää alkupisteen, kaksi +näkymätöntä ohjauspistettä (\koodi{controls}, \koodi{and}), joiden +suuntaan viivaa taivutetaan, sekä loppupisteen. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{draw} + +\begin{koodilohko} +\begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) rectangle (10,5); + \draw (20,2.5) circle [radius=2.5]; + \draw (35,2.5) ellipse [x radius=4, y radius=2, rotate=30]; + \draw (55,0) arc [start angle=0, end angle=90, radius=5]; + \draw (65,0) .. controls (75,7) and (80,7) .. (80,0); +\end{tikzpicture} +\end{koodilohko} + + \begin{tulos} + \begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) rectangle (10,5); + \draw (20,2.5) circle [radius=2.5]; + \draw (35,2.5) ellipse [x radius=4, y radius=2, rotate=30]; + \draw (55,0) arc [start angle=0, end angle=90, radius=5]; + \draw (65,0) .. controls (75,7) and (80,7) .. (80,0); + \end{tikzpicture} + \end{tulos} + + \caption{Erilaisia geometrisia kuvioita: suorakulmio, ympyrä, ellipsi, + ympyrän kaari ja taivutettu viiva} + \label{esim/tikz-kuvioita} +\end{esimerkki*} + +Kuten esimerkki \ref{esim/tikz-kuvioita} osoittaa, piirtokomennoille voi +antaa hakasulkeissa lisätietoja. Mahdollisuuksia on valtavan paljon: +esimerkiksi värit, viivojen paksuus, nuolenkärjet ja kulmien pyöristys +ilmaistaan tällaisten listätietojen avulla. Esimerkki +\ref{esim/tikz-asetuksia} havainnollistaa tavallisimpia valinnaisia +argumentteja. Värivalitsimien \koodi{draw} ja \koodi{fill} arvoksi voi +antaa mitä hyvänsä nimettyjä värejä, joita käsitellään tarkemmin luvussa +\ref{luku/korostus-värit}. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{draw} + +\begin{koodilohko} +\begin{tikzpicture}[x=1mm, y=1mm, + nuoli/.style={line width=1bp, draw=red}] + + % Nuolia + \draw [nuoli, ->] (0,0) -- (10,5); + \draw [nuoli, <<-, draw=blue] (10,0) -- (20,5); + \draw [nuoli, <->] (20,0) -- (30,5); + + % Täytetty nelikulmio, viivan paksuus ja kulmien pyöristys + \draw [draw=black, fill=yellow, line width=1.5bp, rounded + corners=3bp] (40,0) -- ++(3,5) -- ++(20,0) -- ++(3,-5) -- cycle; +\end{tikzpicture} +\end{koodilohko} + + \begin{tulos} + \begin{tikzpicture}[x=1mm, y=1mm, + nuoli/.style={line width=1bp, draw=red}] + + % Nuolia + \draw [nuoli, ->] (0,0) -- (10,5); + \draw [nuoli, <<-, draw=blue] (10,0) -- (20,5); + \draw [nuoli, <->] (20,0) -- (30,5); + + % Täytetty nelikulmio, viivan paksuus ja kulmien pyöristys + \draw [draw=black, fill=yellow, line width=1.5bp, rounded + corners=3bp] (40,0) -- ++(3,5) -- ++(20,0) -- ++(3,-5) -- cycle; + \end{tikzpicture} + \end{tulos} + +\caption{Erilaisia piirtokomentojen argumentteja: nuolenkärjet, värit, + viivan paksuus ja kulmien pyöristys} +\label{esim/tikz-asetuksia} +\end{esimerkki*} + +Esimerkissä \ref{esim/tikz-asetuksia} olevan \ymparisto{tikzpicture}\-/ +ympäristön valinnaisessa argumentissa määritellään rivillä~2 oma +tyyliasetus nimeltä \koodi{nuoli}. Asetukseen kuuluu viivan leveys +(\koodi{line width}) ja väri (\koodi{draw}). Näin määriteltyä +\koodi{nuoli}\-/ tyyliä käytetään rivien 5\==7 \komento{draw}\-/ +komennoissa. Tällä tavoin omia tyylejä määrittelemällä säästää +todennäköisesti aikaa ja vaivaa, koska tyyliasetuksia voi sen jälkeen +muuttaa yhdestä paikasta. + +Usein tarvittavat \komento{draw}\-/ polut ja komentosarjat kannattanee +piilottaa omien komentojen sisään. Kirjoittaja voi siis tehdä +\komento{newcommand}\-/komennolla (luku \ref{luku/komennot}) ja muilla +vastaavilla omia, mahdollisesti kokeamman tason piirtokomentoja, jotka +piirtävät usein tarvittavia kuvan osia. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{node} + +\begin{koodilohko} +\begin{tikzpicture}[x=1mm, y=1mm] + \node at (0,0) [draw=red, rectangle, rounded corners=3bp] {vasen}; + \node [color=blue] at (20,0) {keski}; + \node at (40,0) [draw, circle, inner sep=0bp, fill=yellow] {oikea}; +\end{tikzpicture} +\end{koodilohko} + + \begin{tulos} + \begin{tikzpicture}[x=1mm, y=1mm] + \node at (0,0) [draw=red, rectangle, rounded corners=3bp] {vasen}; + \node [color=blue] at (20,0) {keski}; + \node at (40,0) [draw, circle, inner sep=0bp, fill=yellow] {oikea}; + \end{tikzpicture} + \end{tulos} + + \caption{Tekstiä tai muuta sisältäviä solmuja tehdään + \komento{node}\-/ komennolla} + \label{esim/tikz-solmut} +\end{esimerkki*} + +Kuvaan voi sisällyttää myös tekstiä tai muuta Latexin sisältöä. Se +tapahtuu helpoimmin komennolla \komento{node}, joka tekee niin sanottuja +solmuja. Komento tarvitsee ainakin solmun sijaintikoordinaatit ja +ladottavan sisällön. Esimerkissä \ref{esim/tikz-solmut} on kolme +erityyppistä solmua. + +Kuten esimerkistä näkyy, laatikolle voi määrittää kehykset ja niiden +värin, (\koodi{draw}), täyttövärin (\koodi{fill}), sisällön värin +(\koodi{color}), kehyksen kulmien pyöristyksen (\koodi{\englanti{rounded + corners}}) ja sisäisen tyhjän tilan suuruuden (\koodi{inner sep}). +Kaikenlaista muutakin voi tehdä valinnaiseen argumenttiin +sisällytettävien valitsimien avulla, mutta niistä täytyy lukea lisää +paketin omasta ohjekirjasta. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{node} + \komentoi{draw} + +\begin{koodilohkosis} +\begin{tikzpicture}[x=1mm, y=1mm] + \node (ympyrä) at (0,0) [draw, circle] {vasen}; + \node (suorakulmio) at (20,0) [draw, rectangle] {oikea}; + \draw [->, shorten >=1mm] (ympyrä) to [out=45, in=135] (suorakulmio); +\end{tikzpicture} +\end{koodilohkosis} + + \begin{tulossis} + \begin{tikzpicture}[x=1mm, y=1mm] + \node (ympyrä) at (0,0) [draw, circle] {vasen}; + \node (suorakulmio) at (20,0) [draw, rectangle] {oikea}; + \draw [->, shorten >=1mm] (ympyrä) to [out=45, in=135] (suorakulmio); + \end{tikzpicture} + \end{tulossis} + + \caption{Solmujen nimeäminen ja kytkeminen viivan avulla} + \label{esim/tikz-solmujen-yhdistäminen} +\end{esimerkki*} + +Solmulle voi määrittää yksilöllisen nimen, jota voi sitten käyttää +esimerkiksi viivojen piirtämiseen solmujen välille. Viivojen +piirtämisessä \komento{draw}\-/ komennon koordinaattien sijasta +käytetäänkin solmulle annettua nimeä. Tätä havainnollistetaan +esimerkissä \ref{esim/tikz-solmujen-yhdistäminen}, jossa esitellään myös +\komento{draw}\-/ komennon \koodi{to}\-/ operaatio. Se mahdollistaa +solmujen välisen viivan lähtö- ja tulokulman valinnan valitsimilla +\koodi{out} ja \koodi{in}. Esimerkissä myös lyhennetään nuolta +loppupäästä käyttämällä valitsinta \koodil{shorten~>}. + +Tämän alaluvun ohjeiden avulla pääsee aika mukavasti alkuun +\paketti{tikz}\-/ paketin käytössä ja saa toteutettua tavallisimmat +vektorigrafiikkakuviot. Paketin omaan ohjekirjaan kannattaa silti +tutustua, sillä \ymparisto{tikzpicture}\-/ ympäristön mahdollisuudet +ovat valtavat. + +\section{Matematiikka} +\label{luku/matematiikka} + +Latexin matematiikkatila on suunniteltu matemaattisten kaavojen +latomiseen eli matematiikan syntaksia varten. Matematiikkatila on aivan +oma todellisuutensa, joka ei pintapuolisesti tarkastellessa tunnu +noudattavan samoja sääntöjä kuin tekstitila. + +Matematiikkatilassa ovat voimassa eri komennot, eri fontit, erilainen +merkkien käyttäytyminen ja erilaiset välistykset. Tässä luvussa +käsitellään matematiikkatilan käyttöä ja matemaattisen syntaksin +kirjoittamista. Fonttiasetuksia käsitellään luvussa +\ref{luku/matematiikka-fontit}. + +\subsection{Matematiikkatilan käyttö} +\label{luku/matematiikka-käyttö} + +Matematiikkatila voidaan kytkeä päälle joko tavallisen tekstitilassa +toimivan rivin sisällä tai omassa tekstikappaleessaan. Tekstirivillä +matemaattinen teksti lisätään komentojen \komento{(} ja \komento{)} +väliin, kahden \koodi{\$}\-/ merkin väliin tai ympäristön +\ymparisto{math} sisälle. Seuraavassa on esimerkki kaikista kolmesta: + +\begin{koodilohkosis} +Kaava \( y = 2x + 3 \) on suoran yhtälö. +Kaava $ y = 2x + 3 $ on suoran yhtälö. +Kaava \begin{math} y = 2x + 3 \end{math} on suoran yhtälö. +\end{koodilohkosis} + +\begin{tulossis} +Kaava \( y = 2x + 3 \) on suoran yhtälö. +Kaava $ y = 2x + 3 $ on suoran yhtälö. +Kaava \begin{math} y = 2x + 3 \end{math} on suoran yhtälö. +\end{tulossis} + +\noindent +Kuten edellä olevasta esimerkistä näkyy, matematiikkatilassa kirjaimet +ladotaan kursiivilla. Tavalliset lähdetiedostoon kirjoitetut kirjaimet +on tarkoitettu muuttujiksi kuten tässä esimerkissä $x$ ja $y$. + +Jos matemaattiset kaavat ovat pitkiä tai vievät pystysuuntaista tilaa +enemmän kuin tavallisen rivikorkeuden verran, on parasta latoa ne omaksi +kappaleekseen. Se toteutetaan esimerkiksi kirjoittamalla kaavat +ympäristön \ymparisto{displaymath} sisään tai komentojen \komento{[} ja +\komento{]} väliin. Molemmat toimivat samalla tavalla. + +\komentoi{[} +\komentoi{]} +\mkomentoi{left} +\mkomentoi{right} +\mkomentoi{frac} +\begin{koodilohkosis} +\[ \left(\frac{1}{x}\right)^2 = \frac{1}{x^2} \] +\end{koodilohkosis} +\[ \left(\frac{1}{x}\right)^2 = \frac{1}{x^2} \] + +\noindent +Ympäristö \ymparisto{equation} toimii muuten samalla tavalla, mutta se +latoo kaavan viereen myös järjestysnumeron ristiviittauksia varten. +Ympäristön sisälle voi kirjoittaa \komento{label}\-/ komennon, jonka +argumentissa annetaan kaavalle yksilöllinen tunniste. Tekstistä voi +viitata kaavaan \komento{ref}\-/ komennolla, jonka argumenttina on +kaavan tunniste. Ristiviittauksista on tarkempaa tietoa luvussa +\ref{luku/ristiviitteet}. + +Kaavojen numerot tulevat laskurista \laskuri{equation}, ja numeron +latomiseen voi vaikuttaa määrittelemällä uudelleen komennon +\komento{theequation}. Seuraavassa esimerkissä kaavan numeroon asetetaan +ensiksi \komento{section}\-/ tasoisen otsikon numero, piste erottimeksi +ja lopuksi kyseisen kaavan numero. + +\komentoi{renewcommand} +\komentoi{theequation} +\komentoi{thesection} +\komentoi{arabic} +\laskurii{equation} +\begin{koodilohkosis} +\renewcommand{\theequation}{\thesection.\arabic{equation}} +\end{koodilohkosis} + +\noindent +Latexin lähdedokumentissa matematiikkatilassa kaiken täytyy sisältyä +yhteen kappaleeseen eli tyhjiä rivejä ei sallita. Matemaattiset kaavat +ladotaan oletuksena sivun keskelle, mutta jos asettaa Latexin +dokumenttiluokalle (luku \ref{luku/perusdokumenttiluokat}) valitsimen +\koodi{fleqn}, ne ladotaan sivun vasempaan reunaan. Kaavojen numerot +ladotaan oletuksena sivun oikeaan reunaan, mutta vasemmalle ne saa +käyttämällä dokumenttiluokan valitsinta \koodi{leqno}. + +Matematiikkaympäristössä on käytettävissä taulukkoympäristö +\mymparisto{array}, joka toimii pitkälti samalla tavalla kuin +tekstitilan taulukotkin (luku \ref{luku/taulukot}). Pelkästään +matematiikkatilassa toimiva \mymparisto{array}\-/ ympäristö mahdollistaa +useiden kaavarivien latomisen ja kohdistamisen vaakasuunnassa tietylle +kohdalle. Esimerkiksi yhtälöt on mielekästä sijoittaa samalle tasalle +yhtäsuuruusmerkin kohdalta. + +\mymparistoi{array} +\begin{koodilohkosis} +\[ \begin{array}{r@{~}l} + 4x - 2 &= 6 \\ + x &= 2 \\ + \end{array} \] +\end{koodilohkosis} +\[ \begin{array}{r@{~}l} + 4x - 2 &= 6 \\ + x &= 2 \\ + \end{array} \] + +\noindent +Pidemmälle kehitettyjä matematiikkaympäristöjä on paketissa +\pakettictan{amsmath}. Esimerkiksi \mymparisto{align}\-/\ ja +\mymparisto{align*}\-/ ympäristöt pystyvät tasaamaan allekkaiset kaavat +tietystä kohdasta, eikä taulukon sarakkeita tarvitse erikseen +määritellä. Tasauskohta ilmaistaan lähdedokumentissa \koodi{\&}\-/ +merkillä normaalien taulukoiden tavoin. Ympäristön tähtiversio +\mymparisto{align*} ei lado kaavan numeroa mukaan. Edellä olleen +yhtälöesimerkin voi toteuttaa yksinkertaisemmin seuraavasti: + +\mymparistoi{align*} +\begin{koodilohkosis} +\begin{align*} + 4x - 2 &= 6 \\ + x &= 2 +\end{align*} +\end{koodilohkosis} + +\noindent +Paketti \paketti{amsmath} sisältää paljon muitakin hyödyllisiä +ympäristöjä ja komentoja matematiikan latomiseen. Paketin ohjekirjaan on +erittäin suositeltavaa tutustua. + +\subsection{Matematiikkatilan kielioppia} + +Matematiikan kirjoittaminen Latexissa on tehty varsin luonnolliseksi. +Esimerkiksi tavalliset operaattorit ja kokonaisluvut kirjoitetaan +näppäimistöltä sellaisenaan, ja jos desimaalierottimena on piste, sekin +syötetään näppäimistöltä suoraan. Suomessa käytetään desimaalierottimena +kuitenkin pilkkua, joka toimii Latexin matematiikkatilassa välimerkkinä: +sen jälkeen ladotaan pieni väli. Suomalaisen desimaalierottimen saa +kirjoittamalla pilkun ympärille aaltosulkeet. + +\mkomentoi{pi} +\mkomentoi{approx} +\begin{koodilohkosis} +\[ \pi \approx 3{,}142 \] +\end{koodilohkosis} +\[ \pi \approx 3{,}142 \] + +\noindent +Toinen vaihtoehto pilkun käyttämiseen desimaalierottimana on ladata +paketti \pakettictan{icomma}. Paketti määrittelee matematiikkatilan +pilkun toimimaan jokseenkin älykkäästi: jos lähdetiedostossa on pilkun +jälkeen väli, pilkku ladotaan välimerkkinä; jos väliä ei ole, pilkku +katsotaan desimaalierottimeksi. + +Plus-, jako- ja yhtäsuuruusmerkki sekä pienempi kuin ja suurempi kuin +\=/merkit ($+ : / = \; < \; >$) kirjoitetaan näppäimistöltä +sellaisenaan. Miinusmerkki ($-$) kirjoitetaan yhdysmerkin (\koodi{-}) +avulla, eli se ladotaan dokumenttiin Unicode\-/ merkistön miinusmerkkinä +\uctunnus{u+2212 minus sign}. Kertomerkit voi kirjoittaa +lähdedokumenttiin sellaisenaan mutta myös komennolla \mkomento{cdot} +($\cdot$) tai \mkomento{times} ($\times$). + +Pienet sulkeetkin voi kirjoittaa näppäimistöltä suoraan, mutta +matematiikassa tarvitaan usein erikokoisia, tilanteeseen mukautuvia +sulkeita. Ne tehdään komentojen \mkomento{left} (vasen) ja +\mkomento{right} (oikea) avulla. Komentojen jälkeen kirjoitetaan haluttu +suljemerkki, esimerkiksi \mkomento{left}\mkomentojatko{(} ja +\mkomento{right}\mkomentojatko{)}. Itseisarvoa merkitsevät pystyviivat +tehdään samoilla komennoilla, mutta suljemerkkien tilalle kirjoitetaan +pystyviiva~(\koodi{|}). + +\mkomentoi{left} +\mkomentoi{right} +\mkomentoi{frac} +\begin{koodilohkosis} +\[ \left| a + \left( \frac{b}{c \left( d-1 \right)} \right) \right| \] +\end{koodilohkosis} +\[ \left| a + \left( \frac{b}{c \left( d-1 \right)} \right) \right| \] + +\noindent +Komentoja \mkomento{left} ja \mkomento{right} täytyy käyttää pareittain, +jotta Latex osaa latoa oikeankokoiset sulkeet. Jos ei halua +suljemerkille paria, kirjoitetaan toisen suljekomennon ''sulkeeksi'' +piste. Seuraavassa esimerkissä ladotaan vasemmalle aaltosulje +(\mkomento{left}\mkomentojatko{\keno\{}) mutta oikealle ei mitään +(\mkomento{right}\mkomentojatko{.}). + +\mkomentoi{left} +\mkomentoi{right} +\mymparistoi{array} +\begin{koodilohkosis} +\[ \left\{ \begin{array}{r@{~}l} + x &= 4 \\ + y &= -2 \\ + \end{array} \right. \] +\end{koodilohkosis} +\[ \left\{ \begin{array}{l@{~}l} + x &= 4 \\ + y &= -2 \\ + \end{array} \right. \] + +\noindent +Matematiikkatilan ylä- ja alaindeksit toteutetaan sirkumfleksin +(\koodi{\^{}}) ja alaviivan (\koodi{\_}) avulla. Välittömästä merkin +jälkeen oleva merkki ladotaan ylä- tai alaindeksiksi, ja jos indeksi +sisältää enemmän kuin yhden merkin, kirjoitetaan kokonaisuus +aaltosulkeisiin. Joidenkin matemaattisten operaattorikomentojen +yhteydessä indeksit ladotaan poikkeuksellisella tavalla, esimerkiksi +kokonaan operaattorin ylä- tai alapuolelle. + +\mkomentoi{sum} +\mkomentoi{int} +\mkomentoi{lim} +\mkomentoi{to} +\mkomentoi{infty} +\mkomentoi{qquad} +\begin{koodilohkosis} +\[ x^{n-1} \qquad x_i \qquad \sum_{i=1}^n \qquad + \int_0^\infty \qquad \lim_{n \to \infty} \] +\end{koodilohkosis} +\[ x^{n-1} \qquad x_i \qquad \sum_{i=1}^n \qquad + \int_0^\infty \qquad \lim_{n \to \infty} \] + +\noindent +Lausekkeen osia voi ryhmitellä ylä- tai alapuolisella aaltosulkeella, +jotka tehdään komennoilla \mkomento{overbrace} ja \mkomento{underbrace}. +Jos näiden komentojen jälkeen käyttää ylä- tai alaindeksiä, se ladotaan +sulkeen keskelle. Seuraavassa on esimerkki: + +\mkomentoi{overbrace} +\mkomentoi{underbrace} +\begin{koodilohkosis} +\[ \overbrace{3x + x}^{4x} - \underbrace{5y - 2y}_{3y} = 4x - 3y \] +\end{koodilohkosis} +\[ \overbrace{3x + x}^{4x} - \underbrace{5y - 2y}_{3y} = 4x - 3y \] + +\noindent +Muuttujien, funktion nimien tai muiden symbolien jäljessä oleva +$'$\=/merkki tehdään yleisheittomerkin (\koodi{'}) avulla. +Matematiikassa se voi tarkoittaa esimerkiksi funktion +derivaattafunktiota, ja Unicode\-/ merkistössä merkin tunnus +\uctunnus{u+2032 prime}. + +\mkomentoi{quad} +\begin{koodilohkosis} +\[ f(x) = 3x^2 - 2x \quad f'(x) = 6x - 2 \] +\end{koodilohkosis} +\[ f(x) = 3x^2 - 2x \quad f'(x) = 6x - 2 \] + +\noindent +Murtoluvuille ja murtoviivan latomiseen on komento \mkomento{frac}, +jolle annetaan kaksi argumenttia: osoittaja ja nimittäjä. Neliö- ja muut +juuret tehdään \mkomento{sqrt}\-/ komennolla, jolle annetaan ainakin +yksi argumentti. Komennolle voi antaa hakasulkeissa toisenkin +argumentin, joka ilmaisee juuriluvun. Seuraavassa on esimerkki +murtoluvun, neliöjuuren ja kuutiojuuren toteuttamisesta: + +\mkomentoi{frac} +\mkomentoi{sqrt} +\mkomentoi{quad} +\begin{koodilohkosis} +\[ \frac{1}{3x + 1} \quad \sqrt{9} = \sqrt[3]{27} \] +\end{koodilohkosis} +\[ \frac{1}{3x + 1} \quad \sqrt{9} = \sqrt[3]{27} \] + +\noindent +Vektorien nimien latomiseen eli merkkien yläpuoliselle nuolelle on oma +komento \mkomento{vec}, joka toimii yhden kirjaimen kanssa. Kahden +merkin mittaiseen nuoleen tarvitaan komentoa \mkomento{overrightarrow} +(tai \mkomento{overleftarrow}). + +\mkomentoi{vec} +\mkomentoi{overrightarrow} +\mkomentoi{quad} +\begin{koodilohkosis} +\[ \vec{a} \quad \overrightarrow{AB} \] +\end{koodilohkosis} +\[ \vec{a} \quad \overrightarrow{AB} \] + +\noindent +Matriisit voi toteuttaa luvussa \ref{luku/matematiikka-käyttö} esitellyn +\mymparisto{array}\-/ ympäristön avulla, mutta kätevämpää on käyttää +\paketti{amsmath}\-/ paketin ympäristöjä. Kullekin erilaiselle +suljetyypille on oma ympäristönsä: \mymparisto{matrix}, +\mymparisto{pmatrix}~$(\,)$, \mymparisto{bmatrix}~$[\,]$, +\mymparisto{Bmatrix}~$\{\,\}$, \mymparisto{vmatrix}~$|$ ja +\mymparisto{Vmatrix}~$\|$. Ympäristön sisällä matriisin rivin solut +erotetaan toisistaan samoin kuin taulukoissakin eli \koodi{\&}\=/ +merkillä ja rivinvaihto tehdään \mkomento{\keno}\=/ komennolla. +Seuraavassa on esimerkki kahdesta eri ympäristöstä: + +\mymparistoi{matrix} +\mymparistoi{bmatrix} +\mkomentoi{qquad} +\begin{koodilohkosis} +\[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ \end{matrix} \qquad + \begin{bmatrix} + 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ + \end{bmatrix} \] +\end{koodilohkosis} +\[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ \end{matrix} \qquad + \begin{bmatrix} + 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ + \end{bmatrix} \] + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\mkomento{#1} & $#2$ & #3 \\} + + \begin{tabular}{lll} + \toprule + \ots{Komento} + & \ots{Esimerkki} + & \ots{Merkitys} \\ + \midrule + \rivi{mathrm}{\mathrm{ABC~abc}}{antiikva, serif, roman} + \rivi{mathsf}{\mathsf{ABC~abc}}{groteski, sans serif, gothic} + \rivi{mathtt}{\mathtt{ABC~abc}}{tasalevyinen, typewriter} + \rivi{mathcal}{\mathcal{ABC}}{kalligrafinen} + \midrule + \rivi{mathbf}{\mathbf{ABC~abc}}{lihavoitu, bold} + \rivi{mathit}{\mathit{ABC~abc}}{kursiivi, italic} + \bottomrule + \end{tabular} +}{ + \caption{Tekstin latominen matematiikkatilassa vaatii erityisen + komennon} + \label{tlk/matem-teksti} +} + +\noindent +Kuten on jo todettu, tavalliset kirjaimet on matematiikkatilassa +tarkoitettu muuttujien nimiksi. Kun täytyy latoa varsinaista tekstiä -- +tekstitilan tavoin -- täytyy käyttää erityisiä komentoja. Taulukkoon +\ref{tlk/matem-teksti} on koottu matematiikkatilan +tekstinlatomiskomentoja. Komentojen argumenttina oleva teksti ladotaan +kuin tekstitilassa. + +Vaakasuuntaisten välien tekemiseen on matematiikkatilassa muutama +komento. Komento \mkomento{quad} latoo typografisen neliön (1\,em) +levyisen välin. Se on sama kuin nykyisen fontin koko. Komento +\mkomento{qquad} latoo 2\,em:n levyisen välin. Pienempiä välejä saa +komennoilla \mkomento{,} (\murtoluku{3}{18}\,em), \mkomento{:} +(\murtoluku{4}{18}\,em) ja \mkomento{;} (\murtoluku{5}{18}\,em). Komento +\mkomento{!} puolestaan tuottaa negatiivisen välin, jonka mitta on +−\murtoluku{3}{18}\,em. Negatiivista väliä voi käyttää liian suuren +välin pienentämiseen. + +\subsection{Erikoismerkkejä} + +Matematiikkatilassa voi käyttää Unicode\-/ merkistöä, eli monet +matemaattiset symbolit voi kirjoittaa lähdedokumenttiin sellaisenaan. +Voi silti olla helpompaa käyttää erityisiä komentoja sellaisten +kirjainten ja symbolien kirjoittamiseen, joita ei ihan helposti pysty +tuottamaan näppäimistöltä tai tekstieditorin toimintojen avulla. +Matematiikkatilan erikoismerkkejä on koottu oheisiin taulukoihin +(\ref{tlk/matem-kreikk}--). Lisää symboleja on paketeissa +\pakettictan{latexsym} ja \pakettictan{amsmath}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{4}{cl}} + \toprule + + \rivi{\alpha}{alpha} + & \rivi{\Alpha}{Alpha} + & \rivi{\beta}{beta} + & \rivi{\Beta}{Beta} \\ + + \rivi{\gamma}{gamma} + & \rivi{\Gamma}{Gamma} + & \rivi{\delta}{delta} + & \rivi{\Delta}{Delta} \\ + + \rivi{\epsilon}{epsilon} + & \rivi{\varepsilon}{varepsilon} + & \rivi{\Epsilon}{Epsilon} + & \rivi{\zeta}{zeta} \\ + + \rivi{\Zeta}{Zeta} + & \rivi{\eta}{eta} + & \rivi{\Eta}{Eta} + & \rivi{\theta}{theta} \\ + + \rivi{\vartheta}{vartheta} + & \rivi{\Theta}{Theta} + & \rivi{\iota}{iota} + & \rivi{\Iota}{Iota} \\ + + \rivi{\kappa}{kappa} + & \rivi{\Kappa}{Kappa} + & \rivi{\lambda}{lambda} + & \rivi{\Lambda}{Lambda} \\ + + \rivi{\mu}{mu} + & \rivi{\Mu}{Mu} + & \rivi{\nu}{nu} + & \rivi{\Nu}{Nu} \\ + + \rivi{\xi}{xi} + & \rivi{\Xi}{Xi} + & \rivi{\pi}{pi} + & \rivi{\varpi}{varpi} \\ + + \rivi{\Pi}{Pi} + & \rivi{\rho}{rho} + & \rivi{\varrho}{varrho} + & \rivi{\Rho}{Rho} \\ + + \rivi{\sigma}{sigma} + & \rivi{\varsigma}{varsigma} + & \rivi{\Sigma}{Sigma} + & \rivi{\tau}{tau} \\ + + \rivi{\Tau}{Tau} + & \rivi{\upsilon}{upsilon} + & \rivi{\Upsilon}{Upsilon} + & \rivi{\phi}{phi} \\ + + \rivi{\varphi}{varphi} + & \rivi{\Phi}{Phi} + & \rivi{\chi}{chi} + & \rivi{\Chi}{Chi} \\ + + \rivi{\psi}{psi} + & \rivi{\Psi}{Psi} + & \rivi{\omega}{omega} + & \rivi{\Omega}{Omega} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Kreikkalaisten kirjainten latominen matematiikkatilassa} + \label{tlk/matem-kreikk} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3][a]{$#2{#1}$ & \mkomento{#3}\mkomentoarg{#1}} + + \begin{tabular}{*{3}{cl}} + \toprule + + \rivi{\grave}{grave} + & \rivi{\ddot}{ddot} + & \rivi{\hat}{hat} \\ + + \rivi{\acute}{acute} + & \rivi{\check}{check} + & \rivi[aaa]{\widehat}{widehat} \\ + + \rivi{\breve}{breve} + & \rivi{\dot}{dot} + & \rivi{\tilde}{tilde} \\ + + \rivi{\bar}{bar} + & \rivi{\mathring}{mathring} + & \rivi[aaa]{\widetilde}{widetilde} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Matematiikkatilan tarkekomentoja} + \label{tlk/matem-tarkkeita} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3][AB]{$#2{#1}$ & \mkomento{#3}\mkomentoarg{#1}} + \renewcommand{\arraystretch}{1.5} + + \begin{tabular}{*{2}{cl}} + \toprule + + \rivi{\overrightarrow}{overrightarrow} + & \rivi{\overleftarrow}{overleftarrow} \\ + + \rivi{\underrightarrow}{underrightarrow} + & \rivi{\underleftarrow}{underleftarrow} \\ + + \rivi{\overleftrightarrow}{overleftrightarrow} + & \rivi{\underleftrightarrow}{underleftrightarrow} \\ + + \rivi{\overline}{overline} + & \rivi{\underline}{underline} \\ + + \rivi[abc]{\overbrace}{overbrace} + & \rivi[abc]{\underbrace}{underbrace} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Ylä- ja alamerkintöjä} + \label{tlk/matem-yla-ala-merk} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{4}{cl}} + \toprule + + $<$ + & \koodi{<} + & $>$ + & \koodi{>} + & $=$ + & \koodi{=} + & $:$ + & \koodi{:} \\ + + $\leq$ + & \mkomento{leq} \mkomento{le} + & $\geq$ + & \mkomento{geq} \mkomento{ge} + & \rivi{\ll}{ll} + & \rivi{\gg}{gg} \\ + + \rivi{\equiv}{equiv} + & \rivi{\doteq}{doteq} + & \rivi{\prec}{prec} + & \rivi{\preceq}{preceq} \\ + + \rivi{\succ}{succ} + & \rivi{\succeq}{succeq} + & \rivi{\sim}{sim} + & \rivi{\simeq}{simeq} \\ + + \rivi{\subset}{subset} + & \rivi{\subseteq}{subseteq} + & \rivi{\supset}{supset} + & \rivi{\supseteq}{supseteq} \\ + + \rivi{\approx}{approx} + & \rivi{\cong}{cong} + & \rivi{\sqsubset}{sqsubset} + & \rivi{\sqsubseteq}{sqsubseteq} \\ + + \rivi{\sqsupset}{sqsupset} + & \rivi{\sqsupseteq}{sqsupseteq} + & \rivi{\bowtie}{bowtie} + & \rivi{\in}{in} \\ + + \rivi{\ni}{ni} + & \rivi{\propto}{propto} + & \rivi{\vdash}{vdash} + & \rivi{\dashv}{dashv} \\ + + \rivi{\models}{models} + & \rivi{\mid}{mid} + & \rivi{\parallel}{parallel} + & \rivi{\perp}{perp} \\ + + \rivi{\smile}{smile} + & \rivi{\frown}{frown} + & \rivi{\asymp}{asymp} + & \rivi{\notin}{notin} \\ + + $\neq$ + & \mkomento{neq} \mkomento{ne} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Relaatioita. Negaation saa kirjoittamalla komennon eteen + \mkomento{not}} + \label{tlk/matem-relaatioita} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + \renewcommand{\arraystretch}{1.1} + + \begin{tabular}{*{4}{cl}} + \toprule + + $+$ + & \koodi{+} + & $-$ + & \koodi{-} + & \rivi{\pm}{pm} + & \rivi{\mp}{mp} \\ + + \rivi{\cdot}{cdot} + & \rivi{\div}{div} + & \rivi{\times}{times} + & \rivi{\setminus}{setminus} \\ + + \rivi{\cup}{cup} + & \rivi{\cap}{cap} + & \rivi{\sqcup}{sqcup} + & \rivi{\sqcap}{sqcap} \\ + + \rivi{\vee}{vee} + & \rivi{\wedge}{wedge} + & \rivi{\oplus}{oplus} + & \rivi{\ominus}{ominus} \\ + + \rivi{\odot}{odot} + & \rivi{\oslash}{oslash} + & \rivi{\uplus}{uplus} + & \rivi{\otimes}{otimes} \\ + + \rivi{\sum}{sum} + & \rivi{\prod}{prod} + & \rivi{\coprod}{coprod} + & \rivi{\int}{int} \\ + + \rivi{\oint}{oint} + & \rivi{\bigoplus}{bigoplus} + & \rivi{\bigotimes}{bigotimes} + & \rivi{\bigodot}{bigodot} \\ + + \rivi{\bigvee}{bigvee} + & \rivi{\bigwedge}{bigwedge} + & \rivi{\bigcup}{bigcup} + & \rivi{\bigcap}{bigcap} \\ + + \rivi{\biguplus}{biguplus} + & \rivi{\bigsqcup}{bigsqcup} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Operaattoreita} + \label{tlk/matem-operaattoreita} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{2}{cl}} + \toprule + + \rivi{\leftarrow}{leftarrow} + & \rivi{\rightarrow}{rightarrow} \\ + + \rivi{\longleftarrow}{longleftarrow} + & \rivi{\longrightarrow}{longrightarrow} \\ + + \rivi{\leftrightarrow}{leftrightarrow} + & \rivi{\longleftrightarrow}{longleftrightarrow} \\ + + \rivi{\Leftarrow}{Leftarrow} + & \rivi{\Rightarrow}{Rightarrow} \\ + + \rivi{\Longleftarrow}{Longleftarrow} + & \rivi{\Longrightarrow}{Longrightarrow} \\ + + \rivi{\Leftrightarrow}{Leftrightarrow} + & \rivi{\Longleftrightarrow}{Longleftrightarrow} \\ + + \rivi{\mapsto}{mapsto} + & \rivi{\longmapsto}{longmapsto} \\ + + \rivi{\hookleftarrow}{hookleftarrow} + & \rivi{\hookrightarrow}{hookrightarrow} \\ + + \rivi{\leftharpoonup}{leftharpoonup} + & \rivi{\rightharpoonup}{rightharpoonup} \\ + + \rivi{\leftharpoondown}{leftharpoondown} + & \rivi{\rightharpoondown}{rightharpoondown} \\ + + \rivi{\rightleftharpoons}{rightleftharpoons} + & \rivi{\iff}{iff} \\ + + \rivi{\uparrow}{uparrow} + & \rivi{\downarrow}{downarrow} \\ + + \rivi{\updownarrow}{updownarrow} + & \rivi{\Updownarrow}{Updownarrow} \\ + + \rivi{\Uparrow}{Uparrow} + & \rivi{\Downarrow}{Downarrow} \\ + + \rivi{\nearrow}{nearrow} + & \rivi{\searrow}{searrow} \\ + + \rivi{\swarrow}{swarrow} + & \rivi{\nwarrow}{nwarrow} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Nuolia} + \label{tlk/matem-nuolia} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{4}{cl}} + \toprule + + \rivi{\langle}{langle} + & \rivi{\rangle}{rangle} + & \rivi{\lfloor}{lfloor} + & \rivi{\rfloor}{rfloor} \\ + + \rivi{\rceil}{rceil} + & \rivi{\lceil}{lceil} + & $|$ + & \koodi{|} \mkomento{vert} + & $\|$ + & \mkomentox{|} \mkomento{Vert} \\ + + \rivi{\lgroup}{lgroup} + & \rivi{\rgroup}{rgroup} + & \rivi{\lmoustache}{lmoustache} + & \rivi{\rmoustache}{rmoustache} \\ + + $/$ + & \koodi{/} + & \rivi{\backslash}{backslash} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Sulkeita ja erotinmerkkejä} + \label{tlk/matem-erottimia} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{3}{cl}} + \toprule + + $\neg$ + & \mkomento{neg} \mkomento{lnot} + & \rivi{\angle}{angle} + & \rivi{\emptyset}{emptyset} \\ + + \rivi{\infty}{infty} + & $'$ + & \koodi{'} + & \rivi{\prime}{prime} \\ + + \rivi{\forall}{forall} + & \rivi{\exists}{exists} + & \rivi{\wr}{wr} \\ + + \rivi{\bot}{bot} + & \rivi{\top}{top} + & \rivi{\surd}{surd} \\ + + \rivi{\dots}{dots} + & \rivi{\cdots}{cdots} + & \rivi{\vdots}{vdots} \\ + + \rivi{\ddots}{ddots} + & \rivi{\triangle}{triangle} + & \rivi{\triangleleft}{triangleleft} \\ + + \rivi{\triangleright}{triangleright} + & \rivi{\nabla}{nabla} + & \rivi{\star}{star} \\ + + \rivi{\ast}{ast} + & \rivi{\circ}{circ} + & \rivi{\bigcirc}{bigcirc} \\ + + \rivi{\bullet}{bullet} + & \begin{tikzpicture} % \diamond puuttuu fontista + \draw [rotate=45] (0,0) rectangle (.5ex,.5ex); + \end{tikzpicture} + & \mkomento{diamond} + & \rivi{\amalg}{amalg} \\ + + \rivi{\bigtriangleup}{bigtriangleup} + & \rivi{\bigtriangledown}{bigtriangledown} + & \rivi{\dagger}{dagger} \\ + + \rivi{\ddagger}{ddagger} + & \rivi{\diamondsuit}{diamondsuit} + & \rivi{\heartsuit}{heartsuit} \\ + + \rivi{\clubsuit}{clubsuit} + & \rivi{\spadesuit}{spadesuit} + & \rivi{\flat}{flat} \\ + + \rivi{\natural}{natural} + & \rivi{\sharp}{sharp} + & \rivi{\hbar}{hbar} \\ + + \rivi{\imath}{imath} + & \rivi{\jmath}{jmath} + & \rivi{\ell}{ell} \\ + + \rivi{\Re}{Re} + & \rivi{\Im}{Im} + & \rivi{\aleph}{aleph} \\ + + \rivi{\wp}{wp} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Sekalaisia symboleja} + \label{tlk/matem-sekalaisia} +} |