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-merkintakieli.tex | |
parent | 790995b7e79697514364450bf9c04f1b8d500838 (diff) |
CTAN sync 202112280300
Diffstat (limited to 'info/kaytannollista-latexia/luku-merkintakieli.tex')
-rw-r--r-- | info/kaytannollista-latexia/luku-merkintakieli.tex | 2235 |
1 files changed, 2235 insertions, 0 deletions
diff --git a/info/kaytannollista-latexia/luku-merkintakieli.tex b/info/kaytannollista-latexia/luku-merkintakieli.tex new file mode 100644 index 0000000000..faebb7087b --- /dev/null +++ b/info/kaytannollista-latexia/luku-merkintakieli.tex @@ -0,0 +1,2235 @@ +% 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{Merkintäkieli ja perustekniikka} + +Latex on merkintäkieli, mikä tarkoittaa, että se sisältää omat tapansa +dokumentin rakenteen ja sisällön kuvaamiseen. Kaikkea ei kirjoiteta +lähdedokumenttiin sellaisenaan, vaan täytyy käyttää tiettyjä kielen +sääntöjen mukaisia merkintätapoja tai komentoja. Tässä luvussa +käsitellään merkintäkielen perusasioita, joita on tarpeen ymmärtää ennen +kuin tehokkaasti toimia Latexin parissa. Kaikkea ei tarvitse päntätä +kerralla muistiin, mutta tänne on hyvä palata välillä kertaamaan +perustekniikkaa. + +\section{Merkistö} + +Latex\-/dokumenttiin voi kirjoittaa tekstiä Unicode\-/merkistöllä ja sen +\textsc{utf}\=/8\-/koodauksella, jos kääntäjänä on Unicoden osaava +ohjelma kuten Lualatex tai Xelatex. Pääasiassa siis merkit kirjoitetaan +sellaisenaan lähdedokumenttiin, mutta on kuitenkin kaikenlaisia +poikkeuksia, ja niitä käsitellään tässä alaluvussa. + +\subsection{Varatut erikoismerkit} + +Muutamalla merkillä on perus Latexissa erikoismerkitys, eikä niitä voi +käyttää normaalilla tavalla. Merkit ovat seuraavat: + +\begin{koodilohkosis} +% $ ^ _ # & { } ~ \ +\end{koodilohkosis} + +\noindent +Useimmat näistä merkeistä voi suojata erikoismerkitykseltään +kirjoittamalla niiden eteen kenoviivan (\koodi{\keno}). Tildeä +(\textasciitilde), sirkumfleksia (\textasciicircum) eikä kenoviivaa +itseään ei voi suojata pelkän kenoviivan avulla, koska kenoviivan kanssa +ne muodostavat eräitä muita komentoja. Taulukossa +\ref{tlk/merkkien-suojaus} on koottuna, kuinka edellä mainitut +erikoismerkit suojataan eli saadaan ladottua dokumenttiin sellaisenaan. + +\leijutlk{ + \begin{tabular}{cll} + \toprule + \ots{Merkki} & \multicolumn{2}{l}{\ots{Kirjoittaminen}} \\ + \midrule + \koodi{\%} & \komento{\%} \\ + \koodi{\$} & \komento{\$} & \komento{textdollar} \\ + \koodi{\^{}} & \komento{\^{}}\komentoarg{} & \komento{textasciicircum} \\ + \koodi{\_} & \komento{\_} & \komento{textunderscore} \\ + \koodi{\#} & \komento{\#} \\ + \koodi{\&} & \komento{\&} \\ + \koodi{\{} & \komento{\{} & \komento{textbraceleft} \\ + \koodi{\}} & \komento{\}} & \komento{textbraceright} \\ + \koodi{\~{}} & \komento{\~{}}\komentoarg{} & \komento{textasciitilde} \\ + \koodi{\keno} && \komento{textbackslash} \\ + \bottomrule + \end{tabular} +}{ + \caption{Varattujen erikoismerkkien kirjoittaminen} + \label{tlk/merkkien-suojaus} +} + +Jotkin paketit määrittelevät muitakin erikoismerkkejä. Esimerkiksi +kieliasetuksiin (luku \ref{luku/kieliasetukset}) liittyvät +\paketti{polyglossia}\-/{} ja \paketti{babel}\-/paketit voivat +määritellä pari lainausmerkillä (\koodi{\textquotedbl}) alkavaa, +tavutuksen hallintaan liittyvää komentoa tai erikoismerkkiä. + +\subsection{Sanaväli} +\label{luku/sanaväli} + +Välilyönti, sarkainmerkki ja yksi rivinvaihto ovat kaikki tavallisia +sanavälejä Latex\-/dokumentissa, ja näillä kolmella on sama merkitys. +Esimerkiksi rivin lopussa oleva rivinvaihto tarkoittaa samaa kuin +sanojen välissä oleva välilyönti. Välilyöntejä ja sarkainmerkkejä voi +kirjoittaa useita peräkkäin, mutta ne ovat sama asia kuin yksi väli. + +\begin{koodilohkosis} +Nämä kaikki + ovat vain +sanoja peräkkäin ja kuuluvat + samaan kappaleeseen. +\end{koodilohkosis} + +\begin{tulossis} + Nämä kaikki ovat vain sanoja peräkkäin ja kuuluvat samaan + kappaleeseen. +\end{tulossis} + +\noindent +Sanavälien leveys ei ole vakio. Silloin kun tekstipalsta tasataan +molemmista reunoista -- kuten tämänkin oppaan leipätekstissä \==, +rivillä olevia sanavälejä venytetään sopivasti, jotta tekstipalstan +molemmat reunat saadaan tasaiseksi. + +Sanavälit eivät kuitenkaan veny loputtomasti, ainakaan +oletusasetuksilla, koska kovin suuret sanavälit olisivat +tekstikappaleessa rumia. Jos sanaväleille haluaa antaa +''hätätilanteissa'' lisää venymisvaraa, täytyy käyttää mittaa +\mittam{emergencystretch}, jota käsitellään tarkemmin tekstikappaleiden +yhteydessä luvussa \ref{luku/kappale}. Mittoihin liittyvää tekniikkaa +käsitellään puolestaan luvussa \ref{luku/mitat}. + +Matalatasoinen sanavälejä ja niiden venymistä säätelevä mitta on +\mittam{spaceskip}, johon voi asettaa haluamansa leveyden ja mahdolliset +venymisen rajat. Tätä mittaa ei ole suositeltavaa käyttää tavallisen +tekstin kanssa, mutta se sopii tilanteisiin, joihin tarvitaan hyvin +poikkeukselliset sanavälit. + +\komentoi{setlength} +\mittai{spaceskip} +\begin{koodilohkosis} +\setlength{\spaceskip}{0.8em plus 0.3em minus 0.2em} +\end{koodilohkosis} + +\noindent +Myös kirjainperheelle voi asettaa oman sanavälikertoimensa fontin +asetusten \koodi{Word\-Space}\-/valitsimella. Tätä asetusta käsitellään +fonttien yhteydessä luvussa \ref{luku/fontit-välistys}. + +\subsection{Rivinvaihto lähdedokumentissa} +\label{luku/rivinvaihtomerkit} + +Kuten edellä todettiin, lähdedokumentissa olevat rivinvaihdot tulkitaan +vain sanaväleiksi eivätkä ne vaihda riviä lopullisessa dokumentissa. Jos +ladottuun dokumenttiin tarvitaan rivinvaihto, kirjoitetaan +lähdedokumenttiin kaksi kenoviivaa (\komentom{\keno}). Tätä komentoa +käsitellään tarkemmin tekstikappaleiden yhteydessä luvussa +\ref{luku/rivinvaihtokomennot}. + +On kuitenkin mahdollista saada myös lähdedokumentin rivinvaihdot +toteutumaan automaattisesti ladotussa tekstissä. Sellainen tila +kytketään päälle komennolla \komentom{obeycr}; normaaliin tilaan +palataan taas komennolla \komentom{restorecr}. Näistä komennoista voi +olla hyötyä väliaikaisesti ja erityistilanteissa, mutta pysyväksi koko +dokumentin tilaksi \komento{obeycr} ei yleensä sovi. + +\subsection{Kappaleen vaihtuminen} +\label{luku/kappaleen-vaihtuminen} + +Tyhjä rivi tarkoittaa kappaleen vaihtumista. Rivi on tyhjä silloin, kun +se ei sisällä mitään muuta kuin rivinvaihdon tai kun se sisältää vain +välilyöntejä tai sarkainmerkkejä ja lopuksi rivinvaihdon. Tyhjiä rivejä +voi olla useita peräkkäin, mutta ne tarkoittavat samaa kuin yksi tyhjä +rivi. Uuden tekstikappaleen voi aloittaa myös komennolla \komento{par}. + +\begin{koodilohkosis} +Nämä rivit kuuluvat +samaan kappaleeseen. + +Tässä on toinen tekstikappale. +Nyt ei oteta kantaa siihen, miten +rivit ja kappaleet muotoillaan. +\end{koodilohkosis} + +\noindent +Ladotuissa teksteissä uuden tekstikappaleen alkaminen ilmaistaan usein +sisennetyllä rivillä, mutta sisennyksiä eikä muitakaan muotoiluja ei +tehdä tekstieditorissa välien avulla. Kappaleiden muotoiluun on omat +keinonsa, ja niistä käsitellään luvussa \ref{luku/kappale}. + +\subsection{Kommentit ja muistiinpanot} + +Latex\-/dokumentissa prosentin merkki (\koodi{\%}) on kommenttimerkki, +jonka jälkeisen rivinosan kääntäjä jättää huomioimatta. Merkki on +tarkoitettu kirjoittajan omien kommenttien ja muistiinpanojen +kirjoittamiseen. + +\begin{koodilohkosis} +% Nyt ei tosin ole +% mitään kommentoitavaa. +\end{koodilohkosis} + +\noindent +Kommenttimerkki vaikuttaa kääntäjään myös siten, että se syö kaikki +välilyönnit ja sarkainmerkit, jotka tulevat kyseisen kommentin jälkeen. +Tämän vuoksi kommenttimerkin avulla voi yhdistää eri riveillä olevan +tekstin. Seuraava esimerkki tuottaa ladottuna ehjän sanan \emph{Latex}: + +\begin{koodilohkosis} +La% Nämä rivit + t% yhdistyvät. + ex +\end{koodilohkosis} + +\begin{tulossis} + La% Nämä rivit + t% yhdistyvät. + ex +\end{tulossis} + +\subsection{Aaltosulkeet} +\label{luku/aaltosulkeet} + +Aaltosulkeet \mbox{\koodi{\{\}}} muodostavat eräänlaisen näkymättömän +ympäristön, jonka sisällä voi olla väliaikaisesti voimassa erilaiset +asetukset kuin ulkopuolella. Aaltosulkeiden sisällä suoritetut komennot, +uusien komentojen määrittelyt (luku \ref{luku/komennot}) tai asetetut +mittojen arvot (luku \ref{luku/mitat}) ovat voimassa vain kyseisen +ympäristön sisäpuolella. Seuraavassa esimerkissä aaltosulkeilla rajataan +kursivointikomennon \komento{itshape} vaikutusaluetta. + +\begin{koodilohkosis} +tavallinen {\itshape kursiivi} tavallinen +\end{koodilohkosis} + +\begin{tulossis} + tavallinen {\itshape kursiivi} tavallinen +\end{tulossis} + +\subsection{Sitova välilyönti} + +Sitova välilyönti on samanlainen tyhjä merkki kuin tavallinenkin +välilyönti, mutta rivinvaihtoa ei sallita sen kohdalta. Sitovalla +välilyönnillä kannattaa estää esimerkiksi pienistä osista koostuvan +ilmauksen hajoaminen eri riveille (esimerkki: \emph{osa~5}). Latexissa +sitova välilyönti saadaan joko tildemerkillä (\koodi{\textasciitilde}) +tai nimenomaan siihen tarkoitetulla merkillä, jonka Unicode\-/tunnus on +\uctunnus{u+00a0 no-break space}. + +Nämä kaksi eri merkkiä, tilde ja \uctunnus{u+00a0}, toimivat hieman eri +tavoin. Molemmat estävät rivinvaihdon, mutta tildemerkki sallii välin +venymisen samalla tavalla kuin tavallinenkin sanaväli sallii (luku +\ref{luku/sanaväli}). Sen sijaan merkki \uctunnus{u+00a0} on +vakiolevyinen eikä siis veny muiden sanavälien tapaan. Merkkiä +\uctunnus{u+00a0} täytyy käyttää ainakin vuorosanaviivan (\==) ja sitä +seuraavan sanan välissä, koska se väli ei saa venyä. + +\subsection{Ohuke} +\label{luku/ohuke} + +Ohuke on tavallista sanaväliä kapeampi väli, ja se tehdään +komennolla~\komentom{,} (kenoviiva ja pilkku). Ohukkeen leveys Latexissa +on \murtoluku{1}{6} typografisen neliön leveydestä eli em-mitasta (luku +\ref{luku/mitat}). Ohuke on tasalevyinen ja sitova, eli se ei veny +muiden sanavälien tapaan, ja se estää rivinvaihdon. Siksi ohuke sopii +esimerkiksi pitkien lukujen ja puhelinnumeroiden ryhmittelyyn paremmin +kun sanaväli. + +\komentoi{,} +\begin{koodilohkosis} +12\,750\,000 +J.\,R.\,R. Tolkien +\end{koodilohkosis} + +\noindent +Myös henkilön etunimen alkukirjainten välissä voi käyttää ohuketta, jos +tavallinen sanaväli vie kirjaimet turhan kauas toisistaan. Sukunimi +erotetaan kuitenkin aina sanavälillä. Joskus myös päiväyksissä käytetään +ohuketta järjestysluvun pisteiden jälkeen. Taulukossa \ref{tlk/ohuke} +vertaillaan sanaväliä, ohuketta ja yhteen kirjoittamista. + +\leijutlk{ + \komentoi{,} + \begin{tabular}{lrll} + \toprule + & \ots{Luku} & \ots{Päiväys} & \ots{Nimi} \\ + \midrule + \otsrivi{Sanaväli} & 12 750 000 & \sout{9. 5. 2020} & J. R. R. Tolkien \\ + \otsrivi{Ohuke} & 12\,750\,000 & 9.\,5.\,2020 & J.\,R.\,R. Tolkien \\ + \otsrivi{Yhteen} & 12750000 & 9.5.2020 & \sout{J.R.R. Tolkien} \\ + \bottomrule + \end{tabular} +}{ + \caption{Sanavälin, ohukkeen ja yhteen kirjoittamisen vertailu. Suomen + kielen vastaiset kirjoitusasut on viivattu yli} + \label{tlk/ohuke} +} + +\subsection{Lainausmerkit ja heittomerkki} +\label{luku/lainausmerkit} + +Suomalaisessa näppäinasettelussa \textsc{shift} eli vaihtonäppäin ja 2 +tuottaa yleislainausmerkin eli niin sanotun \textsc{ascii}\-/ +lainausmerkin (\textquotedbl), mutta se ei taida olla minkään kielen +varsinainen lainausmerkki. On siis syytä käyttää oikeita +lainausmerkkejä, ja se käy Latexissa varsin helposti. + +Eri kielissä lainausmerkkikäytännöt ovat erilaiset. Suomen kielessä +käytetään ''tällaisia'' lainausmerkkejä ja joskus >>tällaisia>> +kulmalainausmerkkejä. Jos lainauksen sisään tarvitaan lainaus, täytyy +sisempi lainaus kirjoittaa 'tällaisten' puolilainausmerkkien avulla. +Yksittäin käytettynä se on nimeltään heittomerkki. Englannin kielessä +lainauksen alussa ja lopussa on erilainen merkki, ja ``tässä'' siitä +esimerkki. Samoin on puolilainausmerkin kohdalla: `näin'. + +Latexissa voi käyttää Unicode\-/merkistöä ja lähdedokumenttiin voi +kirjoittaa suoraan ne lainausmerkit, jotka halutaan ladottavaksi, mutta +edellä mainituille merkeille on myös omat merkintätapansa. +Näppäimistöltä kirjoitettava yleisheittomerkki (\koodim{'}) tuottaa +ladottuna automaattisesti oikean kaarevan heittomerkin ('). Kun +kirjoittaa kaksi heittomerkkiä peräkkäin (\koodim{''}), on +lopputuloksena yksi kaareva lainausmerkki (''). Kahdella suurempi kuin +\=/merkillä (\koodim{>>}) saadaan kulmalainausmerkki~(>>). + +\begin{koodilohkosis} +''Lainaus, jonka 'sisällä' on lainaus.'' \\ +>>Lainaus, jonka 'sisällä' on lainaus.>> +\end{koodilohkosis} + +\begin{tulossis} + ''Lainaus, jonka 'sisällä' on lainaus.'' \\ + >>Lainaus, jonka 'sisällä' on lainaus.>> +\end{tulossis} + +\noindent +Yllä mainitut riittävät suomen kieleen, mutta englantia ja muita kieliä +varten tarvitaan myös toisinpäin oleva merkki (``), joka tehdään +kahdella gravisaksentilla (\koodim{``}). Vastaava puolilainausmerkki (`) +tehdään yhdellä aksentilla (\koodim{`}). Joissakin kielissä käytetään +erilaisia kulmalainausmerkkejä lainauksen alussa ja lopussa. Vasemmalle +osoittava merkki (<<) tehdään kahdella pienempi kuin \=/merkillä +(\koodim{<<}). + +Joskus todella halutaan latoa yleislainausmerkki (\textquotedbl) tai +yleisheittomerkki (\textquotesingle). Ne saadaan komennoilla +\komentom{textquotedbl} ja \komentom{textquotesingle}. Yksittäinen +gravisaksentti (\`{}) tehdään komennolla \komento{`}\komentoarg{}. +Lainausmerkkien merkintätapoja ja komentoja on koottu taulukkoon +\ref{tlk/erikoismerkit-lainaus} +(s.~\pageref{tlk/erikoismerkit-lainaus}). Toisaalta kielikohtaiset +asetukset (luku \ref{luku/kieliasetukset}) voivat tuoda mukanaan myös +kielikohtaisia keinoja lainausmerkkien kirjoittamiseen. + +Edellä kuvatut Latexin omat lainausmerkkien merkintätavat (\koodi{''}, +\koodi{>>} ym.) eli niin sanotut Tex\-/ligatuurit voi kytkeä päälle ja +pois päältä \paketti{fontspec}\-/pakettiin kuuluvien asetusten avulla. +Fonteissa on yleensä oletuksena päällä Tex\-/ligatuurit eli asetus +\koodi{Liga\-tures=\katk TeX}, mutta sen saa poistettua asetuksella +\koodi{Liga\-tures=\katk TeX\-Reset}. Asetusta muutetaan kirjainperheen +määrittelyn yhteydessä tai väliaikaisesti komennolla +\komento{addfontfeatures}. + +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\addfontfeatures{Ligatures=TeXReset} `` '' >> '} +\end{koodilohkosis} + +\begin{tulossis} + {\addfontfeatures{Ligatures=TeXReset} `` '' >> '} +\end{tulossis} + +\noindent +Tasalevyisessä fontissa Tex\-/ligatuurit eivät ole päällä oletuksena, +joten yksittäisissä sanoissa tai lyhyissä ilmauksissa voi estää +Tex\-/ligatuurit esimerkiksi komennolla \komento{texttt}. Samalla +tietysti fonttikin vaihtuu. Fontteja käsitellään tarkemmin luvussa +\ref{luku/kirjaintyypit}. + +\komentoi{texttt} +\begin{koodilohkosis} +\texttt{`` '' >> '} +\end{koodilohkosis} + +\begin{tulossis} + \texttt{`` '' >> '} +\end{tulossis} + +\noindent +Paketti \pakettictan{csquotes} sisältää lainausmerkkeihin liittyviä +komentoja ja kielikohtaista logiikkaa. Paketissa olevan +\komentom{enquote}\-/ komennon avulla voi jättää paketin huoleksi, miten +aloittava ja lopettava lainausmerkki tai ulommat ja sisemmät +lainausmerkit kirjoitetaan missäkin kielessä. Kielipaketti +\paketti{polyglossia} tai \paketti{babel} täytyy olla ladattuna. + +\komentoi{usepackage} +\pakettii{polyglossia} +\pakettii{csquotes} +\komentoi{setdefaultlanguage} +\komentoi{enquote} +\begin{koodilohkosis} +\usepackage{polyglossia} \setdefaultlanguage{finnish} +\usepackage[autostyle=true]{csquotes} +% ... +\enquote{Lainauksen \enquote{sisällä} lainaus.} +\end{koodilohkosis} + +\begin{tulossis} + \enquote{Lainauksen \enquote{sisällä} lainaus.} +\end{tulossis} + +\subsection{Yhdysmerkki, ajatusviiva ja miinusmerkki} +\label{luku/yhdys-ajatus-miinus} + +Yhdyssanan osien välissä käytettävä yhdysmerkki on Latexissa tavallinen +näppäimistöltä saatava yleisyhdysmerkki (\=/). Merkillä on vaikutusta +myös sanan tavutukseen, josta on tarkempaa tietoa luvussa +\ref{luku/tavutus}. + +Ajatusviivaa tarvitaan esimerkiksi äärikohtien (27--29, +Oulu--Rova\-niemi), luetelmien, vuorosanojen ja virkkeen irrallisen +lisäysten merkitseminen. Suomen kielessä käytetään yleensä vain lyhyttä +ajatusviivaa \mbox{(--)}, joka tehdään Latexissa kahdella peräkkäisellä +yhdysmerkillä (\koodim{--}). Pitkä ajatusviiva \mbox{(---)} tehdään +kolmella yhdysmerkillä (\koodim{---}). Ajatusviivat vaikuttavat sanan +tavutukseen samoin kuin yhdysmerkki. + +\begin{koodilohkosis} +Oulu--Rovaniemi-yhteys +\end{koodilohkosis} + +\begin{tulossis} + Oulu--Rovaniemi-yhteys +\end{tulossis} + +\noindent +Myös Unicoden ajatusviivamerkit \uctunnus{u+2013 en dash} ja +\uctunnus{u+2014 em dash} toimivat, mutta tavutuksen kannalta ne +käyttäytyvät eri tavoin Lualatex\-/\ ja Xelatex\-/kääntäjillä. +Yhteensopivuussyistä on parasta tehdä ajatusviivat Latexin omilla +merkintätavoilla eikä Unicode\-/merkeillä. + +Silloin kun todella täytyy latoa kaksi tai kolme peräkkäistä +yhdysmerkkiä, voi käyttää tasalevyistä fonttia +(\komento{texttt}\komentoarg{--}), joka oletuksena kytkee pois Latexin +ajatusviivatoiminnon. Saman asetuksen saa kyllä mihin tahansa fonttiin, +kun poistaa fontista niin sanotut Tex\-/ligatuurit asetuksella +\koodi{Liga\-tures=\katk TeX\-Reset}. Väliaikaisesti asetus tehdään +seuraavasti: + +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\addfontfeatures{Ligatures=TeXReset} -- ---} +\end{koodilohkosis} + +\begin{tulossis} + {\addfontfeatures{Ligatures=TeXReset} -- ---} +\end{tulossis} + +\noindent +Miinusmerkille (−) ei Latexissa ole erityistä merkintätapaa muuten kuin +matematiikkatilassa (luku \ref{luku/matematiikka}). Tavallisessa +tekstitilassa lyhyttä ajatusviivaa voi ja saa käyttää myös +miinusmerkkinä, mutta vielä parempi olisi käyttää varsinaista Unicoden +miinusmerkkiä \uctunnus{u+2212 minus sign}, koska se on fonteissa +suunniteltu typografisesti yhteensopivaksi muiden matemaattisten +merkkien kanssa. + +\subsection{Kolme pistettä eli ellipsi} + +Ajatuksen katkeamista ja muuta sellaista ilmaisevalle kolmelle pisteelle +eli ellipsille (\ldots) on oma merkkinsä, ja fontissa se saattaa näyttää +hieman erilaiselta kuin kolme peräkkäistä pistemerkkiä. Tyypillisesti +ellipsimerkissä pisteet ovat hieman harvemmassa ja erottuvat toisistaan +paremmin kuin kolmena erillisenä merkkinä ladotut pisteet. Ellipsi +tehdään Latexissa komennoilla \komentom{dots}, \komento{ldots}, +\komento{textellipsis} tai Unicode\-/merkillä \uctunnus{u+2026 + horizontal ellipsis}. + +\subsection{Ylä- ja alaindeksi} +\label{luku/ylä-alaindeksit} + +Yläindeksit (a\textsuperscript{2}) tehdään komennolla +\komentom{textsuperscript} ja alaindeksit (a\textsubscript{2}) +komennolla \komentom{textsubscript}. Oletusasetuksilla Latex toteuttaa +indeksit mekaanisesti pienentämällä fonttia ja sijoittamalla pienennetyn +tekstin alas peruslinjan tuntumaan tai ylös gemenalinjan yläpuolelle.% +\footnote{Katso typografinen viivasto, kuva \ref{kuva/kirjainmitat} + sivulla \pageref{kuva/kirjainmitat}.} Lopputulos ei ole typografisesti +välttämättä kovin hyvä, koska fontin pienentäminen ohentaa samalla +merkkien viivoja ja ohuimmat hiusviivat voivat lähes kadota. + +\englanti{Open Type} \=/fontit sisältävät usein tuen oikeille ylä- ja +alaindekseille, jotka fontin suunnittelija on toteuttanut. Niitä +kannattaa käyttää, koska suunnittelija tuntee oman fonttinsa ja saa +todennäköisesti parempaa jälkeä kuin Latex mekaanisesti. \englanti{Open + Type} \=/fonttien indeksit on kätevintä ottaa käyttöön +\pakettictan{realscripts}\-/ paketin avulla. + +Paketti \paketti{realscripts} määrittelee uudelleen Latexin ylä- ja +alaindeksikomennot, niin että ne ensisijaisesti pyrkivät käyttämään +\englanti{Open Type} \=/fontin ominaisuutta. Jos käytössä oleva fontti +ei sisällä haluttujen merkkien ylä- tai alaindeksiä, +\paketti{realscripts}\-/ paketin komennot käyttävät automaattisesti +Latexin mekaanista keinoa. Paketti määrittelee pari muutakin hyödyllistä +komentoa, muun muassa tähdelliset versiot edellä mainituista: +\komento{textsuperscript*} ja \komento{textsubscript*}. Nämä komennot +toteuttavat aina mekaanisen ylä- tai alaindeksin eli toimivat kuten +Latexin alkuperäiset komennot. + +\leijutlk{ + \gemenanum + \begin{tabular}{lll} + \toprule + \ots{Komento} + & \ots{\englanti{Open Type}} + & \ots{Mekaaninen} \\ + \midrule + \komento{textsuperscript} + & \Large x\textsuperscript{ab36} + & \Large x\textsuperscript*{ab36} \\ + \midrule + \komento{textsubscript} + & \Large H\textsubscript{2}SO\textsubscript{4} + & \Large H\textsubscript*{2}SO\textsubscript*{4} \\ + \bottomrule + \end{tabular} +}{ + \caption{Ylä- ja alaindeksien vertailua. Oikeat Open Type \=/fonttien + indeksit saadaan \paketti{realscripts}\-/ paketin avulla. Mekaaninen + toteutus perustuu fontin pienentämiseen} + \label{tlk/indeksien-vertailu} +} + +Taulukossa \ref{tlk/indeksien-vertailu} vertaillaan oikeita ja +mekaanisia ylä- ja alaindeksejä. Taulukon esimerkit paljastavat, että +lopputuloksessa on eroa. Mekaaninen ylä- ja alaindeksitoiminto jättää +merkit turhan suurikoisiksi mutta saattaa silti ohentaa merkkien viivoja +liian paljon. Se ei myöskään ymmärrä poistaa gemenanumeroita (3624) +käytöstä vaan latoo ne sellaisenaan suunnilleen oikeaan paikkaan. + +Ylä- ja alaindeksejä käytettäessä on siis syytä ladata +\paketti{realscripts}\-/ paketti ja käyttää indeksit hallitsevaa +\englanti{Open Type} \=/fonttia. Fonttien ominaisuuksia voi tutkia +käyttöjärjestelmän komentotulkissa komennolla \koodi{otfinfo}. Toisaalta +fonttiin sisältyviä ylä- ja alaindeksejä voi myös kirjoittaa +Unicode\-/merkistön avulla sellaisenaan. Lopputulos on sama. + +\subsection{Tavutusvihje} + +Komento \komentom{-} on tavutusvihje, joka neuvoo tavutusalgoritmia +katkaisemaan sanan tästä kohdasta. Samalla se voi estää sanan +katkaisemisen muista kohdista. + +\begin{koodilohkosis} +tavutus\-algo\-ritmi +\end{koodilohkosis} + +\noindent +Myös sanassa olevat yhdysmerkit ja ajatusviivat vaikuttavat sanan +tavuttamiseen. Perusteellisemmin tavutusta ja sen asetuksia käsitellään +luvussa \ref{luku/tavutus}. + +\subsection{Tarkkeet ja erikoismerkit} +\label{luku/tarkkeet} + +Latexissa on useita komentoja tarkkeellisten kirjainten +(\'a\,\v{s}\,\c{c}\,\~o) kirjoittamiseen sekä muille merkeille, joita ei +ehkä ihan helposti saa suoraan näppäimistöltä. Komentoja on koottu +taulukoihin \ref{tlk/tarkkeet}, \ref{tlk/erikoismerkit-lainaus} ja +\ref{tlk/erikoismerkit-muut}. Taulukon tarkekomennoissa on käytetty +a\=/kirjainta esimerkkinä, mutta tarke voi liittyä muihinkin kirjaimiin. +Merkit voi kirjoittaa Latex\-/lähdedokumenttiin myös sellaisenaan, eli +näiden komentojen käyttö ei ole välttämätöntä. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4][]{{\erikoisfontti #3} + & \komento{#2}\komentojatko{#1} & #4} + \begin{tabular}{*{2}{cll}} + \toprule + \multicolumn{2}{l}{\ots{Merkki}} + & \ots{Merkitys} + & \multicolumn{2}{l}{\ots{Merkki}} + & \ots{Merkitys} \\ + \cmidrule(r){1-3} + \cmidrule(l){4-6} + \rivi[a]{`}{\`a}{gravis} + & \rivi{O}{\O}{poikkiviiva-O} \\ + \rivi[a]{'}{\'a}{akuutti} + & \rivi{o}{\o}{poikkiviiva-o} \\ + \rivi[a]{\^{}}{\^a}{sirkumfleksi} + & \rivi{DJ}{\DJ}{poikkiviiva-D} \\ + \rivi[a]{\~{}}{\~a}{tilde} + & \rivi{dj}{\dj}{poikkiviiva-d} \\ + \rivi[a]{\textquotedbl}{\"a}{treema} + & \rivi{DH}{\DH}{versaali-eth} \\ + \rivi[ a]{H}{\H a}{kaksoisakuutti} + & \rivi{dh}{\dh}{gemena-eth} \\ + \rivi[ a]{r}{\r a}{yläympyrä} + & \rivi{NG}{\NG}{versaali-äng} \\ + \rivi[ a]{v}{\v a}{hattu} + & \rivi{ng}{\ng}{gemena-äng} \\ + \rivi[ a]{u}{\u a}{lyhyysmerkki} + & \rivi{SS}{\SS}{versaali kaksois-s} \\ + \rivi[a]{=}{\=a}{pituusmerkki} + & \rivi{ss}{\ss}{gemena kaksois-s} \\ + \rivi[ a]{b}{\b a}{alaviiva} + & \rivi{TH}{\TH}{versaali thorn} \\ + \rivi[ a]{c}{\c a}{sedilji} + & \rivi{th}{\th}{gemena thorn} \\ + \rivi[a]{.}{\.a}{yläpiste} + & \rivi{i}{\i}{pisteetön i} \\ + \rivi[ a]{d}{\d a}{alapiste} + & \rivi{j}{\j}{pisteetön j} \\ + \rivi[ a]{k}{\k a}{ogonek} + & \rivi{AE}{\AE}{AE-ligatuuri} \\ + % \rivi{t\{ae\}}{\t{ae}}{sidontakaari} + &&& \rivi{ae}{\ae}{ae-ligatuuri} \\ + \rivi{L}{\L}{poikkiviiva-L} + & \rivi{OE}{\OE}{OE-ligatuuri} \\ + \rivi{l}{\l}{poikkiviiva-l} + & \rivi{oe}{\oe}{oe-ligatuuri} \\ + \bottomrule + \end{tabular} +}{ + \caption{Komentoja tarkkeellisten ja muiden kirjainten + kirjoittamiseen} + \label{tlk/tarkkeet} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4][]{{\erikoisfontti #2} & \komento{#3} #1 & #4 \\} + \begin{tabular}{cll} + \toprule + \multicolumn{2}{l}{\ots{Merkki ja komennot}} & \ots{Merkitys} \\ + \midrule + \rivi[\koodi{`{}`}]{\textquotedblleft}{textquotedblleft} + {vasen lainausmerkki} + \rivi[\koodi{'{}'}]{\textquotedblright}{textquotedblright} + {oikea lainausmerkki} + \rivi{\textquotedbl}{textquotedbl}{yleislainausmerkki (\textsc{ascii})} + \rivi[\komento{lq} \koodi{`}]{\textquoteleft}{textquoteleft} + {vasen puolilainausmerkki} + \rivi[\komento{rq} \koodi{'}]{\textquoteright}{textquoteright} + {oikea puolilainausmerkki, heittomerkki} + \rivi{\textquotesingle}{textquotesingle} + {yleispuolilainausmerkki ja -heittomerkki (\textsc{ascii})} + \rivi[\koodi{<{}<}]{\guillemotleft}{guillemotleft} + {vasen kulmalainausmerkki} + \rivi[\koodi{>{}>}]{\guillemotright}{guillemotright} + {oikea kulmalainausmerkki} + \rivi{\guilsinglleft}{guilsinglleft}{vasen kulmapuolilainausmerkki} + \rivi{\guilsinglright}{guilsinglright} + {oikea kulmapuolilainausmerkki} + \rivi{\quotedblbase}{quotedblbase}{rivinalinen lainausmerkki} + \rivi{\quotesinglbase}{quotesinglbase}{rivinalinen puolilainausmerkki} + \bottomrule + \end{tabular} +}{ + \caption{Komentoja lainausmerkkien kirjoittamiseen} + \label{tlk/erikoismerkit-lainaus} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4][]{{\erikoisfontti #2} & \komento{#3} #1 & #4 \\} + \providecommand{\textbigcirclekorvike}{} + \renewcommand{\textbigcirclekorvike}{% + \begin{tikzpicture} + \draw (0,0) circle [radius=.65ex]; + \end{tikzpicture}} + + \begin{tabular}{cll} + \toprule + \multicolumn{2}{l}{\ots{Merkki ja komennot}} & \ots{Merkitys} \\ + \midrule + \rivi[\koodi{--}]{\textendash}{textendash}{lyhyt ajatusviiva} + \rivi[\koodi{---}]{\textemdash}{textemdash}{pitkä ajatusviiva} + \rivi[\koodi{!`}]{\textexclamdown}{textexclamdown}{yläsalainen huutomerkki} + \rivi[\koodi{?`}]{\textquestiondown}{textquestiondown} + {ylösalainen kysymysmerkki} + \rivi{\textgreater}{textgreater}{suurempi kuin -merkki} + \rivi{\textless}{textless}{pienempi kuin -merkki} + \rivi[\komento{ldots} \komento{dots}]{\ldots}{textellipsis} + {kolme pistettä, ellipsi} + \rivi{\texteuro}{texteuro}{euron merkki} + \rivi[\komento{pounds}]{\pounds}{textsterling}{punnan merkki} + \rivi[\komento{\$}]{\textdollar}{textdollar}{dollarin merkki} + \rivi[\komento{S}]{\S}{textsection}{pykälän merkki} + \rivi[\komento{P}]{\P}{textparagraph}{kappaleen merkki} + \rivi[\komento{copyright}]{\copyright}{textcopyright}{tekijänoikeusmerkki} + \rivi{\textregistered}{textregistered}{rekisteröity tavaramerkki} + \rivi{\texttrademark}{texttrademark}{tavaramerkki} + \rivi[\komento{dag}]{\dag}{textdagger}{risti} + \rivi[\komento{ddag}]{\ddag}{textdaggerdbl}{kaksoisristi} + \rivi[\komento{\^{}}\komentoarg{}] + {\textasciicircum}{textasciicircum}{sirkumfleksi} + \rivi[\komento{\~{}}\komentoarg{}] + {\textasciitilde}{textasciitilde}{tilde} + \rivi{\textasteriskcentered}{textasteriskcentered} + {rivinkeskinen asteriski, tähti} + \rivi{\textbackslash}{textbackslash}{kenoviiva} + \rivi{\textbar}{textbar}{pystyviiva} + \rivi{\textbardbl}{textbardbl}{kaksoispystyviiva} + \rivi[\komento{\{}]{\textbraceleft}{textbraceleft}{vasen aaltosulje} + \rivi[\komento{\}}]{\textbraceright}{textbraceright}{oikea aaltosulje} + \rivi{\textbullet}{textbullet}{luetelmaympyrä} + \rivi{\textbigcirclekorvike}{textbigcircle}{suuri ympyrä} + % \rivi{\textcircled{a}}{textcircled\{\ldots\}}{ympyröity merkki} + \rivi{\textleftarrow}{textleftarrow}{nuoli vasemmalle} + \rivi{\textrightarrow}{textrightarrow}{nuoli oikealle} + \rivi{\textordfeminine}{textordfeminine} + {feminiininen järjestysluvun merkki} + \rivi{\textordmasculine}{textordmasculine} + {maskuliininen järjestysluvun merkki} + \rivi{\textperiodcentered}{textperiodcentered}{rivinkeskinen piste} + \rivi[\komento{\_}]{\textunderscore}{textunderscore}{alaviiva} + \rivi{\textvisiblespace}{textvisiblespace}{näkyvä välilyönti} + \bottomrule + \end{tabular} +}{ + \caption{Komentoja erikoismerkkien kirjoittamiseen} + \label{tlk/erikoismerkit-muut} +} + +Tarke- ja erikoismerkkikomentojen lisäksi on olemassa sekalaisia muita +komentoja erikoisempien asioiden latomiseen. \marginaali{\TeX} +\marginaali{\LaTeX} Ladontajärjestelmän logojen kirjoittamiseen on +komennot \komento{TeX} ja \komento{LaTeX}. Suorakulmioita voi tehdä +\komento{rule}\-/ komennolla, jolle annetaan argumenteiksi ainakin kaksi +mittaa: leveys ja korkeus. Myös yksi hakasulkeissa annettu valinnainen +argumentti on mahdollinen. Sekin on mitta ja ilmaisee, kuinka paljon +suorakulmiota nostetaan tekstin peruslinjasta. Negatiivinen mitta laskee +suorakulmiota alaspäin. Latexin mittoja ja mittayksiköitä käsitellään +luvussa \ref{luku/mitat}. + +\komentoi{rule} +\begin{koodilohkosis} +\rule{1ex}{1ex} abc \rule{3em}{.5bp} abc \rule[1ex]{3em}{.5bp} +\end{koodilohkosis} + +\begin{tulossis} + \rule{1ex}{1ex} abc \rule{3em}{.5bp} abc \rule[1ex]{3em}{.5bp} +\end{tulossis} + +\noindent +Komento \komento{strut} latoo näkymättömän, leveydettömän merkin, jonka +korkeus on rivikorkeuden eli mitan \mitta{baselineskip} mukainen. +Komentoa voi tarvita joskus esimerkiksi laatikoiden sisällä (luku +\ref{luku/laatikot}). + +Käytännössä \komento{strut}\-/ komento hyödyntää sisäisesti +\komento{rule}\-/ komentoa ja latoo sen avulla leveydettömän +suorakulmion. Tarkemmin sanottuna korkeus eli tekstin peruslinjan +yläpuolinen osa on 0,7 kertaa \mitta{baselineskip}\-/ mitta ja syvyys +eli peruslinjan alapuolinen osa on 0,3 kertaa \mitta{baselineskip}. + +\komentoi{rule} +\mittai{baselineskip} +\begin{koodilohkosis} +\rule[-0.3\baselineskip]{0bp}{\baselineskip} +\end{koodilohkosis} + +\section{Komennot} +\label{luku/komennot} + +Latexin komennot alkavat kenoviivalla (\koodi{\textbackslash}), jonka +jälkeen tulee komennon nimi. Nimi koostuu yleensä pienistä tai isoista +kirjaimista, mutta komento voi koostua myös muista merkeistä. + +Komennot voivat ottaa vastaan argumentteja eli lisätietoa, jota komento +käsittelee ja tarvitsee toimintaansa. Jotkin argumentit voivat olla +pakollisia ja jotkin valinnaisia. Pakolliset kirjoitetaan +aaltosulkeisiin \koodi{\{}\ldots\koodi{\}} ja valinnaiset hakasulkeisiin +\koodi{[}\ldots\koodi{]}. + +\begin{koodilohkosis} +\komento +\komento{argu}{mentteja} +\komento[valinnainen]{argu}{mentteja} +\end{koodilohkosis} + +\noindent +Jos pakolliseen argumenttiin haluaa sisällyttää aaltosulkeen, täytyy sen +eteen kirjoittaa kenoviiva \komento{\{}~\komento{\}}, tai voi myös +käyttää taulukossa \ref{tlk/erikoismerkit-muut} mainittuja komentoja +aaltosulkeiden tuottamiseen. Sama pätee aaltosulkeiden latomiseen +muutenkin. + +Hakasulkeet sen sijaan ladotaan tekstiin normaalisti, eikä niiden kanssa +käytetä kenoviivaa. Poikkeustilanne on komennon valinnaisen argumentin +sisällä, koska valinnainen argumentti jo sinänsä kirjoitetaan +hakasulkeiden sisään. Hakasulkeita ei voi suojata kenoviivalla, koska +\komento{[} ja \komento{]} ovat jo muuhun tarkoitettuja komentoja: +niillä luodaan matematiikkatilassa (luku \ref{luku/matematiikka}) oleva +tekstilohko. Valinnaisen argumentin sisään saa hakasulkeen, kun sen +kirjoittaa aaltosulkeiden sisään. Esimerkiksi komennon +\komentox{komento}\komentoargv{\{]\}} valinnaiseksi argumentiksi tulee +lopulta yksi \koodi{]}-merkki. + +Komennon yhteydessä sanavälejä käsitellään hieman poikkeuksellisesti. +Esimerkiksi komennon nimen perässä olevat sanavälit syödään pois, jos +komennolle ei anneta yhtään argumenttia. Seuraavassa esimerkissä sana +\emph{Latex} ladotaan ehjänä, jos vain \komentox{komento} itsessään ei +kirjoita mitään eikä vaikuta tekstin latomiseen. + +\begin{koodilohkosis} +La\komento tex +\end{koodilohkosis} + +\begin{tulossis} + Latex +\end{tulossis} + +\noindent +Jos täytyy saada komennon nimen jälkeinen sanaväli näkyviin, täytyy +kirjoittaa komennon nimen perään aaltosulkeet +(\komentox{komento}\komentoarg{}) tai kenoviiva +(\komentox{komento}\komentojatko{\keno}). + +Komennon nimen ja argumenttien välissä voi olla sanavälejä, ja ne kaikki +syödään pois. Komennon ja sen argumentit voi siis kirjoittaa vaikka +seuraavalla tavalla: + +\begin{koodilohkosis} +\komento [valinnainen] + {argu-} {mentteja} +\end{koodilohkosis} + +\subsection{Omat komennot ja abstrahointi} +\label{luku/komennot-abst} + +Omien komentojen tärkein tarkoitus on merkintätapojen abstrahointi eli +teknisen toteutuksen ja yksityiskohtien piilottaminen. Sopiva +abstrahointi helpottaa lähdedokumentin käsittelemistä. + +Esimerkiksi jos kirjoittaa Latexia käsittelevää kirjaa, kannattaa heti +aluksi luoda komento, jolla merkitään kaikki Latexin komennot. Komennon +nimi voisi olla vaikka \komentox{komento}, ja sen voisi määritellä +siten, että se lisää automaattisesti komennon nimen alkuun kenoviivan +(\keno) ja latoo koko ilmauksen tasalevyisellä kirjainperheellä. +Seuraavassa on esimerkki tällaisen komennon määrittelemisestä ja +käytöstä: + +\komentoi{newcommand} +\komentoi{texttt} +\komentoi{textbackslash} +\begin{koodilohkosis} +\newcommand{\komento}[1]{\texttt{\textbackslash #1}} + +Komennolla \komento{section} tehdään otsikoita. +\end{koodilohkosis} + +\begin{tulossis} + Komennolla \texttt{\textbackslash section} tehdään otsikoita. +\end{tulossis} + +\noindent +Edellä mainitun komennon määritelmään voi olla tarpeen lisätä myöhemmin +muitakin asioita. Latexin komentojen nimet ovat suunnilleen englantia, +ja jos nimen tavuttaa, täytyisi se tehdä englannin sääntöjen mukaisesti. +Esimerkkinä olleen \komentox{komento}\-/ komennon määritelmässä voisi +siis vaihtaa myös kielen komennolla \komento{textenglish}.% +\footnote{Lisätietoa kieliasetuksista voi lukea luvusta + \ref{luku/kieliasetukset}.} + +Jos ollaan kirjoittamassa laajaa tietoteosta, Latex\-/ komennot halutaan +ehkä lisätä automaattisesti kirjan lopussa olevaan asiahakemistoon (ks. +s.~\pageref{luku/asiahakemisto}). Niinpä komennon määritelmään lisätään +vielä sitäkin varten komento \komento{index}.% +\footnote{Asiahakemistoja käsitellään luvussa \ref{luku/asiasanat}.} +Lopulta Latex\-/ komentojen merkitsemiseen tarkoitettu +\komentox{komento} määriteltäisiin seuraavalla tavalla: + +\komentoi{newcommand} +\komentoi{textbackslash} +\komentoi{texttt} +\komentoi{textenglish} +\komentoi{index} +\begin{koodilohkosis} +\newcommand{\komento}[1]{% + \texttt{\textbackslash\textenglish{#1}}% + \index[komennot]{#1@\texttt{\textbackslash #1}}} +\end{koodilohkosis} + +% Asiahakemistot-luvussa on viittaus tähän lukuun ja maininta +% \index-komennon sisällyttämisestä toisen komennon määritelmään. + +\noindent +Näin oma \komentox{komento} ilmaisee tiiviisti ja havainnollisesti +tarkoituksen eli sen, että kyseessä on Latex\-/ komento. Se piilottaa +monimutkaisen teknisen toteutuksen eli fontin ja kielen vaihtamiseen +sekä asiahakemistoon liittyvät toiminnot. Lisäksi komennon teknistä +toteutusta on helppoa muuttaa myöhemmin, koska komennon määrittely on +vain yhdessä paikassa lähdedokumentin alussa. + +\subsection{Komentojen määrittely} +\label{luku/komennot-määrittely} + +Komentojen määrittelyyn on kolme erilaista komentoa, ja niille kaikille +annetaan samanlaiset argumentit. Komennot ovat seuraavat: + +\komentoi{newcommand} +\komentoi{renewcommand} +\komentoi{providecommand} +\begin{koodilohkosis} +\newcommand {\nimi}[n][oletus]{määritelmä} +\renewcommand {\nimi}[n][oletus]{määritelmä} +\providecommand {\nimi}[n][oletus]{määritelmä} +\end{koodilohkosis} + +\noindent +Ensimmäinen pakollinen argumentti on komennon nimi (\komentox{nimi}), ja +se voi koostua vain kirjaimista. Komento \komentom{newcommand} +määrittelee uuden komennon. Mikäli komento on jo olemassa, annetaan +virheilmoitus. Toinen komento \komentom{renewcommand} määrittelee +olemassa olevan komennon uudelleen. Se antaa virheilmoituksen, jos +komentoa ei ollut olemassa. Kolmas komento \komentom{providecommand} +puolestaan määrittelee uuden komennon vain siinä tapauksessa, että +sellaista ei ollut ennen olemassa. Se ei anna virheilmoitusta. + +Komentojen toinen pakollinen argumentti \koodi{määritelmä} sisältää +komennon määritelmän eli mitä tahansa tekstiä tai komentoja. +Suoritusvaiheessa komento ikään kuin vaihdetaan sen määritelmäksi. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\komento}{Minua komennettiin!} +\komento +\end{koodilohkosis} + +\begin{tulossis} + Minua komennettiin! +\end{tulossis} + +\noindent +Komentojen ensimmäinen valinnainen argumentti \koodi{n} on luku, joka +kertoo, kuinka monta argumenttia määriteltävä komento käsittelee. +Määritelmässä voi käyttää parametreja \koodi{\#1}, \koodi{\#2}, +\koodi{\#3} jne., ja ne korvautuvat komennon suoritusvaiheessa +ensimmäisellä, toisella, kolmannella jne. argumentilla. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\komento}[2]{Sanoit #1 ja #2!} +\komento{hip}{hei} +\end{koodilohkosis} + +\begin{tulossis} + Sanoit hip ja hei! +\end{tulossis} + +\noindent +Toinen valinnainen argumentti \koodi{oletus} -- jos se on mukana -- +kertoo, että määriteltävän komennon ensimmäinen argumentti on +valinnainen ja että tämä on sen oletusarvo. Oletusarvoa käytetään +silloin, kun valinnaista argumenttia ei ole annettu. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\komento}[3][tyyppi]{Hei #1, sanoit #2 ja #3!} +\komento{hip}{hei} \\ +\komento[Leslie]{hip}{hei} +\end{koodilohkosis} + +\begin{tulossis} + Hei tyyppi, sanoit hip ja hei! \\ + Hei Leslie, sanoit hip ja hei! +\end{tulossis} + +\noindent +Joskus yhden komennon määritelmä sisältää komennon +\komento{renewcommand}, joka sitten määrittelee uudelleen jonkin toisen +komennon. Silloin parametrit \koodi{\#1}, \koodi{\#2} jne. on +tarkoitettu ensimmäisen eli uloimman kerroksen käsiteltäväksi. Sisempi +kerros käyttää parametreja \koodi{\#\#1}, \koodi{\#\#2} jne. + +Kaikista kolmesta komentojen määrittelykomennosta on olemassa +tähdellinen versio eli sellainen, jonka komennon nimen lopussa on tähti +(\koodi{*}). Latexin komennoissa on tapana, että tähdellinen versio -- +jos sellainen on olemassa -- tarjoaa samaan asiaan jonkin toisenlaisen +näkökulman. + +\komentoi{newcommand*} +\komentoi{renewcommand*} +\komentoi{providecommand*} +\begin{koodilohkosis} +\newcommand* {\nimi}[n][oletus]{määritelmä} +\renewcommand* {\nimi}[n][oletus]{määritelmä} +\providecommand* {\nimi}[n][oletus]{määritelmä} +\end{koodilohkosis} + +\noindent +Komentojen määrittelyssä tähdelliset versiot toimivat muuten samalla +tavalla, mutta ne antavat virheilmoituksen, jos komennolle annetut +argumentit sisältävät enemmän kuin yhden tekstikappaleen. Niinpä +esimerkin \ref{esim/newcommand} koodi tuottaa käännettäessä virheen. + +\begin{esimerkki*} + \komentoi{newcommand*} +\begin{koodilohko} +\newcommand*{\komento}[1]{Teksti: #1} + +\komento{ + Ensimmäinen tekstikappale. + + Toinen tekstikappale. +} +\end{koodilohko} + \caption{\komento{newcommand*}\-/ komennolla määritelty komento ei + salli argumentteja, joissa on useita tekstikappaleita. Tämä + esimerkki tuottaa käännettäessä virheilmoituksen} + \label{esim/newcommand} +\end{esimerkki*} + +\komento{newcommand*}\-/komennolla määritelty \komentox{komento} ei siis +suostu ottamaan vastaan argumentteja, jotka sisältävät kappaleen +vaihtumisen eli enemmän kuin yhden tekstikappaleen. Tämä voi olla +hyödyllinen suojausominaisuus. + +\subsection{Kestävät ja hauraat komennot} +\label{luku/komennot-hauraat} + +Kaikki Latex\-/ komennot ovat joko kestäviä (\englanti{robust}) tai +hauraita (\englanti{fragile}). Tällä ei ole yleensä käytännön +merkitystä, mutta hauraat komennot eivät välttämättä toimi toisen +komennon argumentissa. + +Hauraita komentoja ovat sellaiset, jotka sisältävät tietoa, jota Latex +kirjoittaa väliaikaistiedostoon ja lukee sieltä takaisin. Kyse on +esimerkiksi sisällysluetteloon tai muihin automaattisiin luetteloihin +kirjoitettavasta tiedosta. Hauraita ovat myös rivinvaihdot ja +valinnaisia argumentteja eli hakasulkeissa annettavia argumentteja +sisältävät komennot. + +Käytännössä ongelmia aiheuttavat esimerkiksi otsikkokomennot +(\komento{section} ym.) sekä kuvatekstikomento \komento{caption}. Näiden +argumenttina oleva teksti (ja mahdolliset komennot) kirjoitetaan +tiedostoon ja ladataan sieltä myöhemmin takaisin. Hauraat komennot eivät +toimi edellä mainittujen komentojen argumentissa, ja lähdetiedoston +kääntäminen johtaa virheilmoitukseen. Ongelman voi ainakin joskus +korjata kirjoittamalla hauraan komennon eteen komennon +\komento{protect}. + +\subsection{Muita vinkkejä} + +Komennon viimeistä argumenttia ei välttämättä tarvitse kirjoittaa +aaltosulkeisiin, jos argumentiksi halutaan vain yksi merkki. Tällaisessa +tilanteessa komento poimii argumentiksi seuraavan merkin, joka ei ole +sanaväli. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\x}[1]{Argumentti: <#1>} +\x abc \\ +\x.abc +\end{koodilohkosis} + +\begin{tulossis} + Argumentti: <a>bc \\ + Argumentti: <.>abc +\end{tulossis} + +\noindent +Mikäli argumenttina on kenoviivalla alkava komento, sitäkään ei tarvitse +kirjoittaa aaltosulkeisiin. Latex\-/koodin lukemisen kannalta tällainen +ei välttämättä ole hyvä käytäntö, koska joskus voi hämärtyä, onko kyse +kahdesta peräkkäisestä komennosta vai onko toinen komento vain +argumenttina toiselle. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\x}[1]{Argumentti: <#1>} +\newcommand{\yyy}{abc} +\x\yyy +\end{koodilohkosis} + +\begin{tulossis} + Argumentti: <abc> +\end{tulossis} + +\noindent +Tätä merkintätapaa esiintyy jokin verran komentojen määrittelyssä, niin +että jätetään \komento{newcommand}\-/komennon ensimmäisenä argumenttina +oleva komennon nimi ilman aaltosulkeita. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand\yyy{abc} +\end{koodilohkosis} + +\noindent +Komennon määrittelyssä on välillä hyötyä \komentom{ignorespaces}\-/ +komennosta, joka jättää sanavälit huomioimatta komennon jälkeen. Ilman +tätä komentoa tulisi seuraavassa esimerkissä sanojen väliin yksi +välilyönti. + +\komentoi{newcommand} +\komentoi{ignorespaces} +\begin{koodilohkosis} +\newcommand{\komento}[1]{#1\ignorespaces} +\komento{yhdys} sana +\end{koodilohkosis} + +\begin{tulossis} + yhdyssana +\end{tulossis} + +\begin{esimerkki*} + \komentoi{newcommand} + \komentoi{renewcommand} +\begin{koodilohko} +\newcommand{\komento}{alkuperäinen} +\komento +{% + \renewcommand{\komento}{\textit{muutettu}} + \komento +} +\komento +\end{koodilohko} +\begin{tulos} + alkuperäinen \textit{muutettu} alkuperäinen +\end{tulos} +\caption{Aaltosulkeilla voi rajata komennon määrittelyn + vaikutusaluetta} +\label{esim/aaltosulkeet-rajaaminen} +\end{esimerkki*} + +\noindent +Aaltosulkeilla (luku \ref{luku/aaltosulkeet}) voi rajata +komentomäärittelyn vaikutusaluetta. Esimerkin +\ref{esim/aaltosulkeet-rajaaminen} alussa asetetaan \komentox{komento} +tiettyyn alkuperäismääritelmään. Aaltosulkeiden sisällä se määritellään +väliaikaisesti uudestaan. Aaltosulkeilla rajatun ympäristön jälkeen +komennon uusi määritelmä lakkaa ja komento palautuu alkuperäiseksi. + +Monimutkaisiin komentoihin voidaan tarvita ehtorakenteita. Ne saa +toteutettua \pakettictan{ifthen}\-/ paketin tarjoaman +\komentom{ifthenelse}\-/ komennon avulla. Se on ohjelmointikielistä +tuttu ehtorakenne: jos annettu ehtolauseke on tosi, käsitellään +then\-/haara; muussa tapauksessa käsitellään else-haara. + +\section{Ympäristöt} +\label{luku/ympäristöt} + +Ympäristöt ovat rakenteita, joilla on aloittava \komentom{begin}\-/ +komento ja lopettava \komentom{end}\-/ komento sekä nimi. Ympäristöjen +ajatuksena on, että jokin ominaisuus tai jotkin toiminnot ovat voimassa +vain ympäristön sisällä ja asiat palautuvat ennalleen ympäristön +jälkeen. Tässä mielessä ne toimivat samalla tavalla kuin aaltosulkeet +(luku \ref{luku/aaltosulkeet}). Jos esimerkiksi fonttiasetusta (luku +\ref{luku/kirjaintyypit}) muuttaa ympäristön sisäpuolella, asetus +palautuu ympäristön jälkeen samaksi kuin se oli ennen ympäristön alkua. +Samoin ympäristön sisällä määritellyt komennot ovat voimassa vain +kyseisessä ympäristössä. + +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\begin{nimi} + % ympäristön + % vaikutusalue +\end{nimi} +\end{koodilohkosis} + +\noindent +Yleisin ympäristö on nimeltään \ymparistom{document}, jonka sisään koko +dokumentin sisältö kirjoitetaan. Muita ympäristöjä käytetään +tavallisesta leipätekstistä poikkeavien rakenteiden ilmaisemiseen, +esimerkiksi luetelmiin ja taulukoihin (luvut \ref{luku/luetelmat} ja +\ref{luku/taulukot}). Ympäristöjä voi tehdä itsekin mihin hyvänsä +tarkoitukseen. Niitä määritellään seuraavilla komennoilla: + +\komentoi{newenvironment} +\komentoi{renewenvironment} +\begin{koodilohkosis} +\newenvironment {nimi}[n][oletus]{aloitus}{lopetus} +\renewenvironment {nimi}[n][oletus]{aloitus}{lopetus} +\end{koodilohkosis} + +\noindent +Komento \komentom{newenvironment} määrittelee uuden ympäristön. Se antaa +virheilmoituksen, jos samanniminen ympäristö on jo olemassa. Komento +\komentom{renewenvironment} puolestaan määrittelee uudelleen ympäristön, +joka on jo olemassa. Se antaa virheilmoituksen, jos ympäristöä ei +ollutkaan olemassa. + +Argumentit ovat lähes samanlaiset kuin komentojen määrittelyssä (luku +\ref{luku/komennot-määrittely}). Ympäristöjen määrittelykomennoilla on +kolme pakollista argumenttia: ensimmäinen on ympäristön nimi, toinen on +ympäristön aloitusmääritelmä (\koodi{aloitus}) ja kolmas on +lopetusmääritelmä (\koodi{lopetus}). + +\komentoi{newenvironment} +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\newenvironment{ymp}{Tästä se alkaa.}{Tähän se päättyy.} + +\begin{ymp} + Ympäristön sisältöä. +\end{ymp} +\end{koodilohkosis} + +\begin{tulossis} + Tästä se alkaa. Ympäristön sisältöä. Tähän se päättyy. +\end{tulossis} + +\noindent +Tavallisesti ympäristön aloitusmääritelmään kirjoitetaan jonkin toisen +ympäristön aloituskomento sekä mahdollisesti suoritetaan joitakin +asetuskomentoja. Vastaavasti lopetusmääritelmässä lopetetaan ympäristö +eli palataan normaaliin tilaan. Tarkoituksena on abstrahoida jokin +monimutkaisempi kokonaisuus eli tehdä uusi helppokäyttöinen ympäristö, joka +piilottaa teknisen toteutuksen. + +\komentoi{newenvironment} +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\newenvironment{ymp} +{\begin{mahtavuus} + \omia\hienoja\asetuksia} + {\end{mahtavuus}} +\end{koodilohkosis} + +\noindent +Omille ympäristölle voi määritellä argumentteja samalla tavalla kuin +komennoillekin. Ensimmäinen valinnainen argumentti \koodi{n} on luku +joka kertoo, kuinka monta argumenttia määriteltävä ympäristö käsittelee. +Ympäristön aloitusmääritelmässä voi argumentteihin viitata parametreilla +\koodi{\#1}, \koodi{\#2}, \koodi{\#3} jne. + +Jos toinen valinnainen argumentti \koodi{oletus} on mukana, se +ilmaisee, että määriteltävän ympäristön ensimmäinen argumentti on +valinnainen ja että tämä on sen oletusarvo. Oletusta käytetään silloin, +kun valinnaista argumenttia ei ole annettu. Argumentit annetaan +ympäristön aloittavan \komento{begin}\-/ komennon yhteydessä. + +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\begin{ymp}[valinnainen]{argu}{mentteja} + % ympäristön + % vaikutusalue +\end{ymp} +\end{koodilohkosis} + +\noindent +Ympäristön määrittelykomennoille on myös tähdelliset versiot +\komentom{newenvironment*} ja \komentom{renewenvironment*}. Ne toimivat +samoin kuin edellä kuvatut tavallisetkin komentoversiot, mutta ne eivät +salli, että määritellylle ympäristölle annetut argumentit sisältävät +enemmän kuin yhden tekstikappaleen. Toiminta on siis sama kuin +komentojenkin määrittelyn tähdellisissä versioissa (luku +\ref{luku/komennot-määrittely}). + +\komentoi{newenvironment*} +\komentoi{renewenvironment*} +\begin{koodilohkosis} +\newenvironment* {nimi}[n][oletus]{aloitus}{lopetus} +\renewenvironment* {nimi}[n][oletus]{aloitus}{lopetus} +\end{koodilohkosis} + +\begin{esimerkki*} + \komentoi{newenvironment} + \komentoi{ignorespaces} + \komentoi{ignorespacesafterend} + \komentoi{begin} + \komentoi{end} + +\begin{koodilohko} +\newenvironment{ymp} +{Yhdys\ignorespaces} +{esi\ignorespacesafterend} + +\begin{ymp} + sana% Kommentti poistaa seuraavan sanavälin. +\end{ymp} merkki. +\end{koodilohko} +\begin{tulos} + Yhdyssanaesimerkki. +\end{tulos} +\caption{Sanavälien käyttäytyminen ympäristöjen yhteydessä. Komennoilla + \komento{ignorespaces} ja \komento{ignorespacesafterend} voi poistaa + seuraavat sanavälit} +\label{esim/ignorespacesafterend} +\end{esimerkki*} + +\noindent +Joskus ympäristöjen määrittelyyn on hyödyllistä sisällyttää komento +\komentom{ignorespaces}, joka jättää huomioimatta tämän komennon +jälkeiset sanavälit. Toinen hyödyllinen on +\komentom{ignorespacesafterend}, joka jättää huomioimatta ympäristön +lopettavan \komento{end}\-/ komennon jälkeiset sanavälit. Esimerkki +\ref{esim/ignorespacesafterend} selventää näiden toimintaa. + +\section{Mitat} +\label{luku/mitat} + +\subsection{Mittayksiköt} + +Koska typografia on pitkälti teksti- ja muiden elementtien sijoittelua, +tarvitaan sitä varten mittavälineitä. Niinpä Texissäkin on pituusmittoja +(engl. \emph{length}) ja useita pituuden mittayksiköitä. Taulukkoon +\ref{tlk/mittayksiköt} on koottu mittayksiköiden lyhenteet ja +merkitykset. Teknisesti on samantekevää, mitä yksiköitä käyttää, sillä +ne ovat vain välineitä pituuden ilmaisemiseen. Sisäisesti Tex käyttää +sp-yksikköä, joka ilmaisee samalla mittojen tarkkuuden: pienin jakamaton +mitta on 1\,sp (5,36\,nm). + +\leijutlk{ + \begin{tabular}{ll} + \toprule + \ots{Lyh.} & \ots{Merkitys} \\ + \midrule + bp & piste uudessa pica-järjestelmässä, 1/72 tuumaa, 0,3528 mm \\ + pt & piste vanhassa pica-järjestelmässä, 1/72,27 tuumaa, 0,3515 mm \\ + pc & pica eli 12 pt-pistettä \\ + sp & 1/65536 pt-pistettä (5,36\,nm), Texin sisäisesti käyttämä yksikkö \\ + dd & piste Didot-järjestelmässä, 0,376 mm \\ + cc & cicero eli 12 dd-pistettä \\ + mm & millimetri \\ + cm & senttimetri \\ + in & tuuma, 25,4 mm \\ + ex & nykyisen fontin x-korkeus, perus- ja gemenalinjan etäisyys \\ + em & typografisen neliön sivun pituus, sama kuin fontin koko \\ + \bottomrule + \end{tabular} +}{ + \caption{Texin mittayksiköiden lyhenteet ja merkitykset} + \label{tlk/mittayksiköt} +} + +Usein tietyt yksiköt ovat vakiintuneet tiettyihin tilanteisiin. +Esimerkiksi fonttien kokoja ja rivikorkeuksia on tapana mitata +pistemittojen avulla. Nykyään käytetään lähinnä bp\-/yksikön mukaista +pistettä, joka tuli käyttöön Post Script \=/standardin myötä vuonna 1984 +ja jota käytetään julkaisuohjelmissa. Sivun mittoja kuten leveyttä, +korkeutta ja marginaaleja ilmaistaan tavallisesti metrijärjestelmän +avulla eli senttimetreissä tai millimetreissä. + +Latexin mittojen mittaluvuissa desimaalierottimena on piste, ja +mittayksikön lyhenne kirjoitetaan kiinni mittalukuun. Seuraavassa +esimerkissä tehdään vaakasuuntaisia ja pystysuuntaisia välejä +komennoilla \komentom{hspace} ja \komentom{vspace}: + +\komentoi{hspace} +\komentoi{vspace} +\begin{koodilohkosis} +Sanat\hspace{1.2cm}hassusti +\vspace{2mm} + +\hspace{1.75em}erillään. +\end{koodilohkosis} + +\begin{tulossis} + Sanat\hspace{1.2cm}hassusti \nopagebreak + \vspace{2mm} + + \hspace{1.75em}erillään. +\end{tulossis} + +\subsection{Mittakomennot ja typografinen viivasto} + +Mittoja tallennetaan eräänlaisiin muuttujiin, jotka näyttävät päällepäin +komennoilta eli niiden alussa on kenoviiva (\koodi{\keno}) ja sitten +kirjaimista koostuva nimi. Esimerkiksi mitta \mitta{textwidth} on +tekstialueen leveys nykyisellä sivulla. Komentomaisesta ulkoasustaan +huolimatta mittoja ei voi suorittaa komentoina; ne sopivat vain komennon +argumentiksi, silloin kun tarvitaan mitta. + +Uusia mittoja luodaan komennolla \komentom{newlength} ja olemassa olevia +mittoja asetetaan esimerkiksi komennoilla \komentom{setlength} ja +\komentom{addtolength}. Omien mittoja on tarpeen luoda silloin, kun +halutaan määritellä tietynsuuruinen mitta, jota käytetään Latex\-/ +koodissa useita kertoja. + +\komentoi{newlength} +\komentoi{setlength} +\komentoi{addtolength} +\begin{koodilohkosis} +\newlength{\omamitta} % Luodaan mitta. +\setlength{\omamitta}{2.3em} % Asetetaan mitta. +\addtolength{\omamitta}{1em} % Lisätään mittaan. +\addtolength{\omamitta}{-1em} % Vähennetään mitasta. +\end{koodilohkosis} + +\noindent +Näin luotuja mittoja voi käyttää mittayksiköiden tavoin, eli niille voi +asettaa eteen kertoimen. Esimerkiksi seuraava \komento{hspace}\-/ +komento luo vaakasuuntaisen välin, jonka pituus on 0,7 kertaa +\mittax{omamitta}: + +\komentoi{hspace} +\begin{koodilohkosis} +\hspace{0.7\omamitta} +\end{koodilohkosis} + +\noindent +Koska vaakasuuntaisten välien tekeminen on typografiassa varsin +tavallista, on niitä varten olemassa omia komentoja. Typografisen neliön +levyisen (1\,em) välin voi tehdä komennolla \komentom{quad}. Sen +puolikkaan (\murtoluku{1}{2}\,em) saa komennolla \komentom{enspace}. +Ohuke eli \murtoluku{1}{6}\,em-väli tehdään \komentom{,}\-/ komennolla, +josta on tarkempaa tietoa luvussa \ref{luku/ohuke}. + +\leijukuva{ + \begin{tikzpicture} + [viiva/.style={line width=.7bp, densely dotted, color=apuviiva}, + nuoli/.style={<->, line width=1bp, color=mittanuoli}, xscale=1.1, + yscale=1.9, baseline=0pt] + + \node at (.04,.25) {\fontsize{120bp}{120bp}\viivastofontti p}; + + \draw [viiva] (-1,.98) rectangle (1,-.5); + \draw [viiva] (1,.98) -- (2.25,.98); + \draw [viiva] (-1,.02) -- (2.25,.02); + \draw [viiva] (1,-.5) -- (2.25,-.5); + + \draw [nuoli] (1.2,.02) -- (1.2,.98); + \node at (1.9,.5) [color=mittanuoli] {korkeus}; + + \draw [nuoli] (1.2,.02) -- (1.2,-.5); + \node at (1.9,-.25) [color=mittanuoli] {syvyys}; + + \draw [nuoli] (-1,1.1) -- (1,1.1); + \node at (0,1.25) [color=mittanuoli] {leveys}; + + \node at (3.13,1.64) {ylälinja}; + \node at (3.13,1.44) {versaalilinja}; + \node at (3.13,.98) {gemenalinja}; + \node at (3.13,.02) {peruslinja}; + \node at (3.13,-.5) {alalinja}; + + \node at (6.52,.74) {\fontsize{120bp}{120bp}\viivastofontti H}; + + \draw [viiva] (5.05,1.47) rectangle (7.95,.02); + \draw [viiva] (5.05,.02) -- (4,.02); + \draw [viiva] (5.05,1.47) -- (4,1.47); + \draw [viiva] (7.95,1.62) -- (4,1.62); + \draw [viiva] (7.95,.98) -- (4,.98); + + \draw [nuoli] (4.86,.02) -- (4.86,1.47); + \node at (4.1,.5) [color=mittanuoli] {korkeus}; + + \draw [nuoli] (5.05,-.1) -- (7.95,-.1); + \node at (6.5,-.3) [color=mittanuoli] {leveys}; + \end{tikzpicture} +}{ + \caption{Kirjainten mitat ja typografinen viivasto} + \label{kuva/kirjainmitat} +} + +Latex sisältää myös komennot mittojen poimimiseen kirjaimista tai muista +merkeistä. Mittoja on kolme: leveys (\englanti{width}), korkeus +(\englanti{height}) ja syvyys (\englanti{depth}). Leveys on merkin +viemä tila leveyssuunnassa. Korkeus tarkoittaa merkin korkeutta +peruslinjan yläpuolella, ja syvyys on merkin korkeus peruslinjan +alapuolella. Kuva \ref{kuva/kirjainmitat} havainnollistaa näitä kolmea +mittaa sekä typografista viivastoa. + +Gemenalinja sijaitsee gemenakirjainten eli pienaakkosten korkeudella. +Peruslinjan ja gemenalinjan etäisyys on fontin x\=/korkeus (1\,ex). +Optisen vaikutelman vuoksi gemenalinja ei tarkoita ehdotonta +gemenakirjainten ylintä kohtaa. Esimerkiksi p\=/kirjaimen yläpääte ja +silmukan yläkaari voivat yltää hieman gemenalinjan yläpuolelle ja +silmukan alakaari peruslinjan alapuolelle. Fonttien suunnittelijat +tekevät tällaisia optisia korjauksia, jotta kirjainten hahmot näyttävät +yhtä korkeilta ja tasapainoisilta yhdessä. + +Versaalilinja sijaitsee versaalikirjainten eli suuraakkosten +korkeudella. Jotkin kirjaimet voivat yltää hieman versaalilinjan +yläpuolellekin. Esimerkiksi joidenkin fonttien Hk\=/kirjaimia +vertailemalla näkee, että k\=/kirjaimen yläpääte yltää H\=/kirjaimen eli +versaalilinjan yläpuolelle, ylälinjan tuntumaan. Myös tarkemerkit (luku +\ref{luku/tarkkeet}) voivat sijaita versaalilinjan yläpuolella. + +Merkkien leveyden, korkeuden ja syvyyden voi mitata seuraavan esimerkin +komennoilla. Esimerkin ensimmäisellä rivillä luodaan uudet mitat +\mittax{leveys}, \mittax{korkeus} ja \mittax{syvyys}, joihin sitten +tallennetaan merkkien mitat. + +\komentoi{newlength} +\komentoi{settowidth} +\komentoi{settoheight} +\komentoi{settodepth} +\begin{koodilohkosis} +\newlength{\leveys} \newlength{\korkeus} \newlength{\syvyys} +\settowidth{\leveys}{abc} % merkkien ”abc” leveys +\settoheight{\korkeus}{H} % merkin ”H” korkeus +\settodepth{\syvyys}{p} % merkin ”p” syvyys +\end{koodilohkosis} + +\noindent +Mitat saa näkyviin kirjoittamalla mitan eteen komennon \komentom{the}. +Näin mitan pituus ladotaan dokumenttiin. Yksikkönä on typografinen piste +(pt). + +\komentoi{the} +\begin{koodilohkosis} +Leveys: \the\leveys, korkeus: \the\korkeus, syvyys: \the\syvyys. +\end{koodilohkosis} + +\begin{tulossis} + Leveys: 14.62865pt, korkeus: 6.81897pt, syvyys: 2.4662pt. +\end{tulossis} + +\noindent +Aiemmin mainituista optisista korjauksista johtuu, että gemenakirjaimet +eivät ole välttämättä täsmälleen samankorkuisia. Gemena\=/x asettuu +perus- ja gemenalinjojen väliin, mutta gemena\=/o voi yltää aavistuksen +verran linjojen ylä- ja alapuolelle. Ihmisen silmään ne näyttävät yhtä +korkeilta. + +\subsection{Venyvät mitat ja välit} +\label{luku/venyvät-mitat} + +Edellä on puhuttu vain kiinteistä mitoista, mutta Latex tuntee myös +venyvät mitat. Niiden ajatuksena on, että Latexille voi antaa luvan +kutistaa tai venyttää mittaa tietyissä rajoissa. Venyviä mittoja +käytettään usein pystysuuntaisissa väleissä, esimerkiksi väliotsikon +edellä ja jälkeen tai tekstikappaleiden välissä. Latex pystyy latomaan +sivut yleensä paremman näköiseksi, kun sille antaa venyvien mittojen +avulla hieman säätövaraa. Alla on esimerkki venyvän kappalevälin +(\mitta{parskip}) määrittämisestä. Samalla asetetaan kappaleen +ensimmäisen rivin sisennys (\mitta{parindent}) nollaan (\koodi{0em}). + +\komentoi{setlength} +\mittai{parskip} +\mittai{parindent} +\begin{koodilohkosis} +\setlength{\parskip}{2ex plus 0.2ex minus 0.1ex} +\setlength{\parindent}{0em} +\end{koodilohkosis} + +\noindent +Venyvissä mitoissa mainitaan ensin normaali pituus ja sitten sanoilla +\koodi{plus} ja \koodi{minus} ilmaistaan, kuinka paljon mitta voi venyä +tai kutistua. Molempia ei välttämättä tarvitse antaa. + +Venyvät mitat voivat sisältää ''äärettömän'' mittayksikön \koodi{fill}, +joka antaa luvan venyttää mittaa niin, että kaikki käytettävissä oleva +tila täyttyy. Äärettömän mittayksikön kanssa mittaluku ilmaisee +suhdeluvun muihin äärettömiin mittoihin. Seuraava esimerkki +havainnollistaa asiaa: + +\komentoi{hspace} +\begin{koodilohkosis} +x\hspace{0mm plus 1fill}x\hspace{0mm plus 2fill}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{0mm plus 1fill}x\hspace{0mm plus 2fill}x +\end{tulossis} + +\noindent +Edellisen esimerkin mittojen luonnollinen pituus on nolla (\koodi{0mm}), +mutta \koodi{plus} ja \koodi{fill} \=/mitan vuoksi ne voivat venyä ja +täyttää koko käytettävissä olevan tilan. Ensin mainitulla on suhdeluku 1 +(\koodi{1fill}) ja jälkimmäisellä suhdeluku 2 (\koodi{2fill}), joten +jälkimmäinen väli on kaksinkertainen ensimmäiseen verrattuna. Saman +äärettömästi venyvän mitan ja suhdeluvut voi ilmaista myös +\komento{stretch}\-/ mittakomennon avulla seuraavasti: + +\komentoi{hspace} +\komentoi{stretch} +\begin{koodilohkosis} +x\hspace{\stretch{1}}x\hspace{\stretch{2}}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{\stretch{1}}x\hspace{\stretch{2}}x +\end{tulossis} + +\noindent +Äärettömästi venyvälle, koko tilan täyttävälle mittayksikölle on itse +asiassa kolme eri versiota: \koodi{fil}, \koodi{fill} ja \koodi{filll}. +Niiden erona on tärkeysjärjestys. Ensin mainittu \koodi{fil} on vähiten +tärkeä, ja viimeinen eli \koodi{filll} on tärkein. Jos samassa +yhteydessä käytetään eri tärkeysasteisia yksiköitä, ylemmäntasoiset +mitätöivät alemmantasoiset. + +\komentoi{hspace} +\begin{koodilohkosis} +x\hspace{0mm plus 1filll}x\hspace{0mm plus 1fill}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{0mm plus 1filll}x\hspace{0mm plus 1fill}x +\end{tulossis} + +\noindent +Edellisessä esimerkissä ensimmäinen venyvä mitta \koodi{1filll} mitätöi +jälkimmäisen \koodi{1fill} kokonaan. Yleensä lienee parasta käyttää +keskimmäistä (\koodi{fill}), mutta eri tärkeysasteille voi olla käyttöä +esimerkiksi paketin koodissa: \koodi{fil} sallii, että kirjoittaja +tai muu koodi syrjäyttää asetuksen; \koodi{filll} on ehdoton sääntö, +joka syrjäyttää muut. + +Käytännöllisyyssyistä äärettömästi venyvä pituus \koodi{0mm plus 1fill} +on jo valmiiksi asetettu mittaan \mittam{fill}. Sitä on kätevää käyttää +esimerkiksi vaaka- ja pystysuuntaisia välejä latovien komentojen +\komento{hspace} ja \komento{vspace} kanssa: + +\komentoi{hspace} +\komentoi{vspace} +\mittai{fill} +\begin{koodilohkosis} +\hspace{\fill} % ääretön vaakasuuntainen väli +\vspace{\fill} % ääretön pystysuuntainen väli +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komennoista on olemassa vieläkin lyhemmät versiot. +Vaakasuuntainen ääretön väli syntyy myös komennolla \komento{hfill} ja +pystysuuntainen väli komennolla \komento{vfill}. Seuraavassa toistetaan +eräs aiempi esimerkki yksinkertaisemmalla tavalla: + +\komentoi{hfill} +\begin{koodilohkosis} +x\hfill x\hfill\hfill x +\end{koodilohkosis} + +\begin{tulossis} + x\hfill x\hfill\hfill x +\end{tulossis} + +\section{Laskurit} +\label{luku/laskurit} + +Laskureiden avulla Latex pitää kirjaa esimerkiksi sivunumeroista, +lukujen ja alalukujen sekä kuvien ja muiden elementtien numeroinnista. +Esimerkiksi nyt olemme pääluvun~\arabic{chapter} +alaluvussa~\arabic{section}, ja mainitut luvut tulevat Latexin +laskureista automaattisesti. + +\leijutlk{ + \laskurii{part} + \laskurii{paragraph} + \laskurii{figure} + \laskurii{enumi} + \laskurii{chapter} + \laskurii{subparagraph} + \laskurii{table} + \laskurii{enumii} + \laskurii{section} + \laskurii{page} + \laskurii{footnote} + \laskurii{enumiii} + \laskurii{subsection} + \laskurii{equation} + \laskurii{mpfootnote} + \laskurii{enumiv} + \laskurii{subsubsection} + + \begin{tabular}{llll} + \toprule + \laskuri{part} & \laskuri{paragraph} + & \laskuri{figure} & \laskuri{enumi} \\ + \laskuri{chapter} & \laskuri{subparagraph} + & \laskuri{table} & \laskuri{enumii} \\ + \laskuri{section} & \laskuri{page} + & \laskuri{footnote} & \laskuri{enumiii} \\ + \laskuri{subsection} & \laskuri{equation} + & \laskuri{mpfootnote} & \laskuri{enumiv} \\ + \laskuri{subsubsection} \\ + \bottomrule + \end{tabular} +}{ + \caption{Latexin laskurit} + \label{tlk/latexin-laskurit} +} + +Taulukossa \ref{tlk/latexin-laskurit} ovat Latexin perus laskurit. Monet +niistä ovat otsikoiden numerointia varten (\englanti{\laskuri{part}, + \laskuri{chapter}, \laskuri{section}, \laskuri{paragraph}}). +Sivunumeroita varten on \laskuri{page}\-/laskuri ja matemaattisten +kaavojen numerointiin \laskuri{equation}\-/laskuri. Leijuvista kuvista +ja taulukoista (luku \ref{luku/leijuosat}) pidetään kirjaa laskureissa +\laskuri{figure} ja \laskuri{table}, ja alaviitteiden (luku +\ref{luku/alaviitteet}) numerointi on laskureissa \laskuri{footnote} ja +\laskuri{mpfootnote}. Numeroidut luetelmat (luku \ref{luku/luetelmat}) +käsitellään \laskurix{enum}\-/alkuisten laskureiden avulla siten, että +perustasolla käytetään laskuria \laskuri{enumi}, ja jos sen +luetelmakohta sisältää toisen numeroidun luetelman, käytetään siinä +laskuria \laskuri{enumii}, sen sisällä laskuria \laskuri{enumiii} jne. + +Edellä mainituista laskureista ei tarvitse yleensä itse huolehtia, sillä +ne ovat vain tekniikkaa, joka toimii korkeamman tason toimintojen +taustalla. Joskus on kuitenkin käyttöä myös omille laskureille. Seuraava +esimerkki esittelee laskureiden käsittelyn peruskomennot. Niissä +käytetään laskuria nimeltä \laskurix{oma}. Laskurien nimet koostuvat +pelkistä kirjaimista, eikä niiden alussa ole kenoviivaa niin kuin +komentojen ja mittojen alussa. + +\komentoi{newcounter} +\komentoi{setcounter} +\komentoi{addtocounter} +\begin{koodilohkosis} +\newcounter{oma} % Luodaan uusi laskuri ”oma”. +\setcounter{oma}{3} % Asetetaan laskurin arvoksi 3. +\addtocounter{oma}{1} % Lisätään laskurin arvoon 1. +\addtocounter{oma}{-1} % Vähennetään laskurin arvosta 1. +\end{koodilohkosis} + +\noindent +Laskuri on sisäisesti kokonaisluku, mutta sen arvon voi latoa eri +muodoissa: arabialaisena tai roomalaisena lukuna, kirjaimena tai +symbolien sarjana. Taulukossa \ref{tlk/laskurien-latominen} ovat komennot +laskurin arvon latomiseen. Komennon argumentiksi annetaan laskurin nimi. +Laskurin voi latoa kirjainmuodossa, jos sen arvo on 1--26; symbolit +toimivat vain lukualueella 1--9. + +\leijutlk{ + \begin{tabular}{ll} + \toprule + \ots{Komento} & \ots{Merkitys} \\ + \midrule + \komento{arabic} & arabialainen luku: 1, 2, 3\ldots \\ + \komento{roman} & roomalainen luku: i, ii, iii\ldots \\ + \komento{Roman} & roomalainen luku: I, II, III\ldots \\ + \komento{alph} & kirjain: a, b, c\ldots\ (vain 1--26) \\ + \komento{Alph} & kirjain: A, B, C\ldots\ (vain 1--26) \\ + \komento{fnsymbol} & symboli: + \textasteriskcentered + \textdagger + \textdaggerdbl\S\P\ldots\ (vain 1--9) \\ + \bottomrule + \end{tabular} +}{ + \caption{Komennot laskurien arvon latomiseen} + \label{tlk/laskurien-latominen} +} + +Taulukon \ref{tlk/laskurien-latominen} komentojen lisäksi laskuriin +liittyvän arvon voi latoa komennolla, joka alkaa kirjaimilla +\komentox{the} ja jatkuu laskurin nimellä. Esimerkiksi komento +\komento{thepage} latoo sivunumeron eli tekee käytännössä saman asian +kuin komento \komento{arabic}\komentoarg{page}. Aina nämä eivät +kuitenkaan ole sama asia, ja \komentox{the}\-/alkuinen komento voi olla +määritelty toisellakin tavalla. Esimerkiksi tämän oppaan leijuvat +taulukot numeroidaan laskurilla \laskuri{table}, mutta komento +\komento{thetable} latoo ensin pääluvun ja sen perään pisteen ja +taulukon numeron. Viimeisin taulukko on numeroltaan \thetable{} eli +pääluvun~\arabic{chapter} taulukko~\arabic{table}. + +Jos laskurin arvoa tarvitaan Latexin teknisessä tilanteessa eikä +tarkoituksena ole latoa sitä näkyviin itse dokumenttiin, täytyy käyttää +komentoa \komento{value}. Seuraava esimerkki luo laskurin nimeltä +\laskurix{mitta}, jonka arvoa (3) käytetään \komento{hspace}\-/ komennon +argumenttina mitan ilmaisemiseen (3\,em). + +\komentoi{newcounter} +\komentoi{setcounter} +\komentoi{hspace} +\komentoi{value} +\begin{koodilohkosis} +\newcounter{mitta} +\setcounter{mitta}{3} +x\hspace{\value{mitta}em}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{3em}x +\end{tulossis} + +\subsection{Hierarkkiset laskurit} +\label{luku/hierarkkiset-laskurit} + +Laskurit voivat olla hierarkkisia ja riippuvaisia toisista laskureista: +kun yhden laskurin arvo kasvaa, nollautuu jokin toinen laskuri +automaattisesti. Tällaista toimintoa käytetään dokumentin lukujen eli +otsikoiden numeroinnissa. Kirjan pääluvun~1 alaluvut ovat esimerkiksi +1.1, 1.2, 1.3 jne. Kun alkaa seuraava pääluku~2, nollautuu alaluvun +laskuri, jotta saadaan oikein numeroidut alaluvut 2.1, 2.2, 2.3 jne. +Latex huolehtii lukujen numeroinnista automaattisesti, mutta omille +laskureille täytyy määritellä riippuvuussuhteet itse. Seuraavassa +esimerkissä luodaan oma laskuri, joka nollautuu automaattisesti aina, +kun sivu vaihtuu eli laskurin \laskuri{page} arvo kasvaa. + +\komentoi{newcounter} +\begin{koodilohkosis} +\newcounter{oma}[page] +\end{koodilohkosis} + +\noindent +Ylemmän tason laskureita ei kannata kasvattaa komennolla +\komento{addtocounter}, koska se vain muuttaa laskurin arvoa mutta ei +huolehdi alemman tason laskurien nollaamisesta. Hierarkkisten laskurien +kasvattamiseen on seuraavat kaksi komentoa: + +\komentoi{stepcounter} +\komentoi{refstepcounter} +\begin{koodilohkosis} +\stepcounter{laskuri} +\refstepcounter{laskuri} +\end{koodilohkosis} + +\noindent +Edellä mainitut komennot kasvattavat argumenttina annetun laskurin arvoa +yhdellä ja nollaavat siitä riippuvaiset alemman tason laskurit. +Jälkimmäinen komento \komento{refstepcounter} asettaa lisäksi +ristiviitteen numeron, joten tämän komennon jälkeen mahdollisesti tuleva +\komento{label}\-/ komento luo ristiviitekohteen. Kun tähän kohtaan +viitataan muualta käyttämällä \komento{ref}\-/ komentoa, viitteessä +näkyy laskurin numero tai oikeastaan \komentox{thelaskuri}\-/ komennon +latoma teksti. Ristiviitteitä käsitellään tarkemmin luvussa +\ref{luku/ristiviitteet}. + +Paketti \pakettictan{chngcntr} helpottaa hierarkkisten laskurien +muuttamista jälkikäteen. Paketin komentojen avulla voi jälkikäteen +asettaa jonkin laskurin riippuvaiseksi toisesta laskurista tai poistaa +riippuvuuden. + +\komentoi{newcounter} +\komentoi{counterwithin} +\komentoi{counterwithout} +\begin{koodilohkosis} +\newcounter{oma} % Luodaan laskuri ”oma”. +\counterwithin {oma}{page} % Asetetaan riippuvuus page-laskurista. +\counterwithout{oma}{page} % Poistetaan riippuvuus. +\end{koodilohkosis} + +\noindent +Edellä mainitut \paketti{chngcntr}\-/paketin komennot määrittelevät +uudelleen myös \komentox{the\-oma}\-/ komennon, jolla \laskurix{oma}\-/ +laskurin arvon voi latoa. Se latoo mukaan myös ylemmäntasoisen laskurin +arvon. Jos tätä \komentox{the}\-/ alkuista komentoa ei halua määritellä +uudelleen, täytyy käyttää tähdellisiä komennon versioita: +\komento{counterwithin*} ja \komento{counterwithout*}. Laskuriin +liittyvän \komentox{the}\-/ komennon voi aina itsekin määritellä +haluamansa laiseksi komennolla \komento{renewcommand} (luku +\ref{luku/komennot-määrittely}), esimerkiksi seuraavalla tavalla: + +\komentoi{renewcommand} +\komentoi{arabic} +\komentoi{alph} +\laskurii{page} +\begin{koodilohkosis} +\renewcommand{\theoma}{\arabic{page}/\alph{oma}} +\end{koodilohkosis} + +\subsection{Kokonaislaskurit} + +Latex ei tiedä etukäteen, mihin arvoon laskurit lopulta yltävät. Se vain +latoo sivuja peräkkäin eikä tiedä mitään tulevasta. Sen vuoksi +esimerkiksi dokumentin sivumäärää ei voi ihan yksinkertaisella +komennolla latoa dokumentin alkusivuille. + +Tekninen vastaus tämäntyyppisiin ongelmiin löytyy ristiviitteistä (luku +\ref{luku/ristiviitteet}). Ne toimivat sisäisesti niin, että dokumentin +ensimmäisellä kääntökerralla kirjoitetaan väliaikaistiedostoon muistiin +tarpeellisia asioita ja seuraavalla kääntökerralla hyödynnetään +väliaikaistiedostoa. Dokumentin sivumäärän ja viimeisen sivunumeron +tallentamiseen on olemassa paketti \pakettictan{totpages}, joka lisää +viimeiselle sivulle automaattisesti ristiviitteen nimeltä +\koodi{Tot\-Pages}. Sivumäärän ja viimeisen sivun numeron voi latoa +komennoilla \komento{ref} ja \komento{pageref}. Esimerkki +\ref{esim/totpages} havainnollistaa niiden käyttöä. + +\begin{esimerkki*} + \luokkai{article} + \komentoi{documentclass} + \komentoi{usepackage} + \pakettii{totpages} + \komentoi{ref} + \komentoi{pageref} + \komentoi{addtocounter} + \laskurii{page} + \komentoi{newpage} + +\begin{koodilohko} +\documentclass{article} +\usepackage{totpages} + +\begin{document} +Sivumäärä: \ref{TotPages}. Viimeinen sivu: \pageref{TotPages}. + +\addtocounter{page}{10} % Sivunumerot 11, 12, 13... +\newpage Jotain... \newpage ...sisältöä. +\end{document} +\end{koodilohko} + \caption{Dokumentin sivumäärän ja viimeisen sivun numeron latominen} + \label{esim/totpages} +\end{esimerkki*} + +Muunlaisten kokonaislaskurien toteuttamiseen voi käyttää +\pakettictan{totcount}\-/ pakettia. Se tarjoaa komennon, jolla +rekisteröidään olemassa oleva laskuri kokonaislaskuriksi. Lisäksi on +komento, jolla ladotaan tai palautetaan laskurin lopullinen arvo. + +\komentoi{newcounter} +\komentoi{regtotcounter} +\komentoi{addtocounter} +\komentoi{total} +\komentoi{totvalue} +\begin{koodilohkosis} +\newcounter{oma} % Luodaan laskuri ”oma”. +\regtotcounter{oma} % Rekisteröidään ”oma” kokonaislaskuriksi. +\addtocounter{oma}{1} % Kasvatetaan laskurin arvoa. +\total{oma} % Ladotaan laskurin lopullinen arvo. +\totvalue{oma} % Palautetaan laskurin lopullinen arvo. +\end{koodilohkosis} + +\noindent +Edellä olevan esimerkin viimeistä komentoa \komento{totvalue} ei käytetä +laskurin arvon latomiseen itse dokumenttiin vaan sitä käytetään +teknisissä yhteyksissä kuten toisen Latex\-/komennon argumenttina. + +Myös Latexin valmiita laskureita voi rekisteröidä kokonaislaskureiksi. +Tässä oppaassa on yhteensä \total{chapter} numeroitua päälukua, ja +mainittu lukumäärä saatiin laskettua seuraavasti: + +\komentoi{regtotcounter} +\komentoi{total} +\laskurii{chapter} +\begin{koodilohkosis} +\regtotcounter{chapter} % Sijoitetaan dokumentin esittelyosaan. +\total{chapter} % Latoo päälukujen (chapter) lukumäärän. +\end{koodilohkosis} + +\section{Laatikot} +\label{luku/laatikot} + +Tex ajattelee ladottavan tekstin ja muun sisällön laatikoina eli +suorakulmioina, joilla on leveys ja korkeus. Esimerkiksi kirjaimet ovat +teknisesti laatikoita, joita ladotaan peräkkäin. Samoin monet valmiit +ympäristöt luovat laatikon, joka sisältää jotakin ja vie tietyn verran +tilaa sivulta. + +Dokumentin kirjoittajalle on välillä hyötyä luoda omia laatikoita, koska +laatikko toimii yhtenä kokonaisuutena, jonka reunoja muut elementit ja +latomiskoneisto kunnioittavat. + +\subsection{Pienet laatikot} +\label{luku/laatikot-pienet} + +Yksinkertainen peruslaatikko tehdään \komento{mbox}\-/ komennolla, joka +latoo argumenttina annetun tekstin näkymättömän laatikon sisään. Näin +luotu laatikko pysyy koossa, eli sen sisältämiä sanoja ei esimerkiksi +tavuteta. Komento sopiikin hyvin tavutuksen estämiseen yksittäisessä +tilanteessa. + +Toinen laatikkokomento \komento{makebox} toimii samalla tavalla kuin +\komento{mbox} mutta hyväksyy yhden tai kaksi valinnaista argumenttia. +Komentojen muoto on seuraava: + +\komentoi{makebox} +\begin{koodilohkosis} +\makebox[leveys]{teksti} +\makebox[leveys][sijainti]{teksti} +\end{koodilohkosis} + +\noindent +Argumentti \koodi{leveys} on laatikon leveysmitta ja \koodi{sijainti} on +kirjainkoodi, joka ilmaisee laatikon sisällön vaakasuuntaisen +sijoittelun. Kirjain \koodi{c} (\englanti{center}) keskittää sisällön, +\koodi{l} (\englanti{left}) tasaa sisällön vasemmalle, \koodi{r} +(\englanti{right}) tasaa sisällön oikealle ja \koodi{s} +(\englanti{stretch}) tasaa sisällön molemmista reunoista eli venyttää +laatikon sisäisiä sanavälejä sopivasti. + +\komentoi{makebox} +\begin{koodilohkosis} +\makebox[12em][s]{Laatikossa on tilaa.} +\end{koodilohkosis} + +\begin{tulossis} + \makebox[12em][s]{Laatikossa on tilaa.} +\end{tulossis} + +\noindent +\komento{makebox}\-/ komennon \koodi{leveys}\-/ argumentissa voi käyttää +apuna mittoja \mitta{width} (leveys), \mitta{height} (korkeus), +\mitta{depth} (syvyys) ja \mitta{totalheight} (kokonaiskorkeus: +\mitta{height} + \mitta{depth}), jotka määräytyvät laatikon sisällön +luontaisten mittojen perusteella. Kuvassa \ref{kuva/kirjainmitat} +(s.~\pageref{kuva/kirjainmitat}) oleva typografinen viivasto +havainnollistaa näitä mittoja. + +Seuraava esimerkki latoo laatikon, jonka leveys on 1,5\-/ kertainen +sisällön luontaiseen leveyteen nähden, ja keskittää tekstin. Pystyviivat +ovat mukana rajojen hahmottamisen vuoksi. + +\komentoi{makebox} +\mittai{width} +\begin{koodilohkosis} +|\makebox[1.5\width][c]{Keskitetty}| +\end{koodilohkosis} + +\begin{tulossis} + |\makebox[1.5\width][c]{Keskitetty}| +\end{tulossis} + +\noindent +Laatikkokomento \komento{fbox} toimii kuten \komento{mbox} mutta piirtää +laatikolle myös näkyvät kehykset. Komento \komento{framebox} on +puolestaan kehyksellinen versio \komento{makebox}\-/ komennosta. +Kehysviivan leveyden voi asettaa mitan \mitta{fboxrule} avulla, ja +kehysviivan etäisyys sisällöstä määritellään mitassa \mitta{fboxsep}. + +\komentoi{fbox} +\komentoi{framebox} +\komentoi{setlength} +\mittai{fboxrule} +\mittai{fboxsep} +\mittai{width} +\begin{koodilohkosis} +\setlength{\fboxsep}{3bp} +\setlength{\fboxrule}{.5bp} +\framebox[1.2\width][c]{Laatikossa \fbox{laatikko}} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\fboxsep}{3bp} + \setlength{\fboxrule}{.5bp} + \framebox[1.2\width][c]{Laatikossa \fbox{laatikko}} +\end{tulossis} + +\noindent +Värillisten laatikoiden ja kehysten tekemistä neuvotaan luvussa +\ref{luku/korostus-värit}, joka käsittelee väriasioita muutenkin. + +Tekstiä sisältävien laatikoiden korkeus vaihtelee kirjainten ja muiden +merkkien muodon mukaan. Esimerkiksi kirjainten ala- ja yläpidennykset +kasvattavat laatikon kokoa gemenalinjan yläpuolelle tai peruslinjan +alapuolelle. Seuraavasta esimerkistä voi vertailla tekstilaatikoiden +muodostumista: + +\komentoi{setlength} +\komentoi{fbox} +\mittai{fboxsep} +\begin{koodilohkosis} +\setlength{\fboxsep}{0bp} +\fbox{sana} \fbox{kirja} \fbox{×} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\fboxsep}{0bp} + \fbox{sana} \fbox{kirja} \fbox{×} +\end{tulossis} + +\noindent +Edellisen esimerkin kaltaisissa tilanteissa voi olla tarpeen käyttää +laatikon sisällä komentoa \komento{strut}. Se latoo näkymättömän, +leveydettömän merkin, jonka korkeus on rivikorkeuden mukainen (mitta +\mitta{baselineskip}). + +\komentoi{setlength} +\komentoi{fbox} +\komentoi{strut} +\mittai{fboxsep} +\begin{koodilohkosis} +\setlength{\fboxsep}{0bp} +\fbox{\strut sana} \fbox{\strut kirja} \fbox{\strut ×} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\fboxsep}{0bp} + \fbox{\strut sana} \fbox{\strut kirja} \fbox{\strut ×} +\end{tulossis} + +\subsection{Suuret laatikot} +\label{luku/laatikot-isot} + +Jos laatikon täytyy sisältää useita tekstikappaleita tai muuta +pystysuuntaista sisältöä, tarvitaan esimerkiksi \komento{parbox}\-/ +komentoa. Se tarvitsee ainakin kaksi argumenttia: laatikon leveyden ja +sisällön. + +\komentoi{parbox} +\begin{koodilohkosis} +\parbox{leveys}{sisältö} +\end{koodilohkosis} + +\noindent +\komento{parbox}\-/ laatikon sisällä teksti ladotaan samoin kuin teksti +normaalistikin eli rivit katkaistaan sanavälien kohdalta ja +mahdollisesti tavutuskohdista. Muutkin tekstikappaleen asetukset +pätevät, ja asetukset voi määrittää haluamikseen laatikon sisällä. +Lisätietoa tekstikappaleista on luvussa \ref{luku/kappale}. + +Komento \komento{parbox} hyväksyy myös yhden, kaksi tai kolme +valinnaista argumenttia. Niillä määritellään laatikon pystysuuntainen +sijoittelu ympäristöönsä nähden, laatikon korkeus ja laatikon sisällön +pystysuuntainen sijoittelu. Valinnaiset argumentit toimivat seuraavasti: + +\komentoi{parbox} +\begin{koodilohkosis} +\parbox[sijainti]{leveys}{sisältö} +\parbox[sijainti][korkeus]{leveys}{sisältö} +\parbox[sijainti][korkeus][sisäsijainti]{leveys}{sisältö} +\end{koodilohkosis} + +\noindent +Argumentti \koodi{sijainti} on kirjain \koodi{c} (\englanti{center}, +keskilinja), \koodi{t} (\englanti{top}, ylälinja) tai \koodi{b} +(\englanti{bottom}, alalinja). Näillä määritetään, miten laatikko +sijoitetaan pystysuunnassa suhteessa tekstiin. Seuraava esimerkki +havainnollistaa ensimmäisen valinnaisen argumentin toimintaa. Laatikon +sisällä on rivinvaihtokomentoja (\komento{\keno}) ja kolme tekstiriviä. + +\komentoi{parbox} +\begin{koodilohkosis} +abc \parbox[c]{1em}{1 \\ 2 \\ 3} +abc \parbox[t]{1em}{1 \\ 2 \\ 3} +abc \parbox[b]{1em}{1 \\ 2 \\ 3} abc +\end{koodilohkosis} + +\begin{tulossis} + abc \parbox[c]{1em}{1 \\ 2 \\ 3} + abc \parbox[t]{1em}{1 \\ 2 \\ 3} + abc \parbox[b]{1em}{1 \\ 2 \\ 3} abc +\end{tulossis} + +\noindent +Komennon toinen valinnainen argumentti \koodi{korkeus} määrittää +laatikon korkeuden. Oletuksena korkeus määräytyy sisällön korkeuden +mukaan, mutta tällä argumentilla korkeus asetetaan kiinteästi. Se voi +olla hyödyllistä varsinkin silloin, kun sisältö halutaan tasata laatikon +sisällä ylös, keskelle tai alas. + +Kolmas valinnainen argumentti \koodi{sisäsijainti} nimittäin asettaa +laatikon sisällön pystysuuntaisen tasauksen. Argumentiksi annetaan +kirjain \koodi{c} (\englanti{center}, keskelle), \koodi{t} +(\englanti{top}, ylös), \koodi{b} (\englanti{bottom}, alas) tai +\koodi{s} (\englanti{stretch}, ylös ja alas). Viimeksi mainittu eli ylös +ja alas tasaaminen vaatii, että laatikon sisällä on venyviä +pystysuuntaisia välejä. Niitä käsitellään luvussa +\ref{luku/venyvät-mitat}. + +Ympäristö \ymparisto{minipage} vastaa toiminnallisesti +\komento{parbox}\-/ komentoa. Se hyväksyy täsmälleen samat argumentit. +Erona on se, että \ymparisto{minipage}\-/ ympäristön sisällä voi käyttää +laatikon omia alaviitteitä (luku \ref{luku/alaviitteet}), jotka ladotaan +laatikon alaosaan. + +\ymparistoi{minipage} +\begin{koodilohkosis} +\begin{minipage}[sijainti][korkeus][sisäsijainti]{leveys} + ... +\end{minipage} +\end{koodilohkosis} + +\subsection{Laatikoiden siirtely} + +Komennolla \komento{raisebox} voi latoa laatikon tekstin ylemmäs tai +alemmas kuin se normaalisti sijoittuisi. Komennon ensimmäinen argumentti +on etäisyysmitta, kuinka paljon ylemmäs teksti ladotaan. Negatiivinen +mitta vie tekstin alemmas. Toinen argumentti on laatikon teksti. + +\komentoi{raisebox} +\begin{koodilohkosis} +\raisebox{etäisyysmitta}{teksti} +\end{koodilohkosis} + +\noindent +Argumentissa \koodi{etäisyysmitta} voi käyttää apuna mittoja +\mitta{width}, \mitta{height}, \mitta{depth} ja \mitta{totalheight}, +joiden merkitys on sama kuin \komento{makebox}\-/ komennolla (luku +\ref{luku/laatikot-pienet}). \komento{raisebox}\-/ komennolle voi antaa +yhden tai kaksi valinnaista argumenttia, joilla määritellään laatikolle +uusi korkeus ja syvyys. Molemmat ovat mittoja, ja ne korvaavat siirretyn +laatikon tekstin luonnollisen korkeuden ja syvyyden. Komennon argumentit +annetaan seuraavasti: + +\komentoi{raisebox} +\begin{koodilohkosis} +\raisebox{etäisyysmitta}[korkeus]{teksti} +\raisebox{etäisyysmitta}[korkeus][syvyys]{teksti} +\end{koodilohkosis} + +\noindent +Grafiikkaan kuten kuviin ja väreihin erikoistunut paketti +\paketti{graphicx} sisältää hyödyllisiä laatikkokomentoja: +\komento{scalebox}, \komento{resizebox} ja \komento{rotatebox}. Komento +\komento{scalebox} skaalaa tekstin eri kokoiseksi vaaka- tai +pystysuunnassa. + +\komentoi{scalebox} +\begin{koodilohkosis} +\scalebox{vaakaskaalaus}[pystyskaalaus]{teksti} +\end{koodilohkosis} + +\noindent +Argumentit \koodi{vaakaskaalaus} ja \koodi{pystyskaalaus} ovat +kertoimia. Pystysuuntainen skaalausargumentti on valinnainen: jos sen +jättää pois, pystysuuntainen skaalaus on samansuuruinen kuin +vaakasuuntainen. Negatiivisella kertoimella voi kääntää tekstin +toisinpäin. + +\komentoi{scalebox} +\begin{koodilohkosis} +\scalebox{2}[1]{leveä} \scalebox{-1}[1]{käännetty} +\end{koodilohkosis} + +\begin{tulossis} + \scalebox{2}[1]{leveä} \scalebox{-1}[1]{käännetty} +\end{tulossis} + +\noindent +Samantapainen skaalaustoiminto saadaan myös komennolla +\komento{resizebox}. Sen argumentiksi ei anneta kertoimia vaan mittoja, +eli teksti skaalataan annettuihin mittoihin. + +\komentoi{resizebox} +\komentoi{resizebox*} +\begin{koodilohkosis} +\resizebox {vaakamitta}{pystymitta}{teksti} +\resizebox*{vaakamitta}{pystymitta}{teksti} +\end{koodilohkosis} + +\noindent +Komennon \komentoi{resizebox} normaali versio käsittelee +\koodi{pystymitta}\-/ argumentin siten, että se tulee olemaan tekstin +korkeus eli kirjainten peruslinjan yläpuolinen osa. Komennon +\komentoi{resizebox*} tähdellinen versio puolestaan toimii siten, että +pystymitta on tekstin kokonaiskorkeus eli peruslinjan yläpuolinen osa +(korkeus) ja alapuolinen osa (syvyys) yhdessä. Kuva +\ref{kuva/kirjainmitat} (s.~\pageref{kuva/kirjainmitat}) havainnollistaa +asiaa. \komento{resizebox}\-/ komennon argumenteissa voi käyttää apuna +mittoja \mitta{width}, \mitta{height}, \mitta{depth} ja +\mitta{totalheight} samoin kuin \komento{makebox}\-/ komennossa (luku +\ref{luku/laatikot-pienet}). + +Laatikoiden pyörittely käy \komento{rotatebox}\-/ komennolla. Sen +argumentiksi täytyy antaa ainakin kääntökulma asteina ja käännettävä +teksti. + +\komentoi{rotatebox} +\begin{koodilohkosis} +\rotatebox[asetuksia]{kääntökulma}{teksti} +\end{koodilohkosis} + +\noindent +Valinnainen argumentti \koodi{asetuksia} voi sisältää asetusvalitsimia +ja niiden arvoja. Tärkein valitsin on \koodi{origin}, jolla määritetään +käännettävän tekstin kääntöpiste. Valitsimen arvoksi annetaan yksi tai +kaksi seuraavista kirjaimista: \koodi{c} (\englanti{center}, keski), +\koodi{l} (\englanti{left}, vasen), \koodi{r} (\englanti{right}, oikea), +\koodi{t} (\englanti{top}, ylä), \koodi{b} (\englanti{bottom}, ala) tai +\koodi{B} (\englanti{baseline}, peruslinja). + +\komentoi{rotatebox} +\begin{koodilohkosis} +\rotatebox[origin=l] {25}{ylämäki} +\rotatebox[origin=r]{-25}{alamäki} +\end{koodilohkosis} + +\begin{tulossis} + \rotatebox[origin=l] {25}{ylämäki} + \rotatebox[origin=r]{-25}{alamäki} +\end{tulossis} + +\noindent +\komento{rotatebox}\-/ komennon valinnaisen argumentin valitsin +\koodi{units} määrittelee käytetyn kulmayksikön. Valitsimelle annetaan +arvoksi täysympyrän yksikkömäärä, ja oletusasetus on \koodi{units=\katk + 360}. Jos haluaa käyttää radiaaneja, sopiva asetus on +\koodi{units=\katk 6.283185} (2π\,rad). |