% Tekijä: Teemu Likonen % 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{Asetukset} Dokumentin yleiset asetukset koostuvat Latexissa dokumenttiluokan valinnasta, sivun koon ja marginaalien määrittelystä, fonttien määrittelystä sekä kieliasetuksista. Näitä kaikkia käsitellään tässä luvussa. Kirjoittajan ei tarvitse tehdä kaikkia dokumentin asetuksia kerralla. On ehkä jopa suotavaakin keskittyä aluksi lähinnä dokumentin sisällön ja rakenteen suunnitteluun ja tuottamiseen. Ulkoasuun kyllä ehtii tulla kirjoittamisen aikana monenlaisia ajatuksia, joita ei olisi välttämättä alussa osannut huomioida. Kirjoittamaan pääsee hyvinkin yksinkertaisen dokumenttirungon avulla (esimerkki \ref{esim/ensimmäinen}, s.~\pageref{esim/ensimmäinen}), mutta tässä luvussa käsitellään asetusten määrittelyä ja mahdollisuuksia melko perusteellisesti. \section{Dokumenttiluokat} \label{luku/dokumenttiluokat} Latexin lähdedokumenttien alussa on aina samankaltainen rivi, joka määrittelee käytettävän dokumenttiluokan ja mahdollisesti dokumentin perusasetuksia. Dokumenttiluokka määritellään komennolla \komento{documentclass} ja sen argumentiksi annetaan dokumenttiluokan nimi. Valinnaisilla argumenteilla vaikutetaan asetuksiin. \komentoi{documentclass} \luokkai{article} \begin{koodilohkosis} \documentclass[a4paper, 12pt]{article} \end{koodilohkosis} \noindent Dokumenttiluokka on eräänlainen pohjadokumentti eli ominaisuuksien ja asetusten kokoelma, jonka varaan oma dokumentti kirjoitetaan. Eri dokumenttiluokat sisältävät erilaisia ominaisuuksia ja erilaiset oletusasetukset. Edellä olevassa esimerkissä käytettiin \luokka{article}\-/ luokkaa, joka on yleiskäyttöinen luokka monenlaisten dokumenttien kirjoittamiseen. Seuraavissa alaluvuissa käsitellään tavallisimpia dokumenttiluokkia ja niiden asetuksia. % Dokumenttiluokkia voi tehdä itsekin, ja sitä aihetta käsitellään % luvussa \ref{luku/xxxx}. \subsection{Perusdokumenttiluokat} \label{luku/perusdokumenttiluokat} Muutama dokumenttiluokka kuuluu Latexin perusvalikoimaan, eli ne ovat aina saatavilla ja asennettuna. Niitä kutsutaan välillä standardeiksi dokumenttiluokiksi, ja ne ovat ikään kuin muuttumattomia perusluokkia, joiden varaan on turvallista rakentaa omia dokumentteja tai muita dokumenttiluokkia. Muita dokumenttiluokkia kehitetään Latexin perusosien ulkopuolella, ja niiden ominaisuudet voivat muuttua ja kehittyä nopeammin ajan myötä. Normaalit paperisivuihin perustuvat dokumentit tehdään luokkien \luokka{article}, \luokka{report} tai \luokka{book} avulla. Ne ovat keskenään hyvin samanlaisia, mutta niiden oletusasetukset poikkeavat toisistaan. Karkeasti jaoteltuna \luokka{article}\-/ luokka on tarkoitettu lyhyehköille artikkeleille ja yleiseksi perustaksi monenlaisille dokumenteille. Sen sijaan \luokka{report} ja \luokka{book} on tarkoitettu laajoihin dokumentteihin, ja niissä on kirjatypografian piirteitä. Suurin edellä mainittujen perusluokkien ero on otsikoinnissa ja dokumentin jäsentämisessä: \luokka{report} ja \luokka{book} sisältävät suuret pääluvut (\komento{chapter}) eli otsikot, jotka alkavat uudelta sivulta; \luokka{article} ei sisällä samanlaisia päälukuja vaan ainoastaan tavalliset leipätekstin mukana kulkevat väliotsikot (\komento{section}, \komento{subsection} jne.). Tekstin jäsentämistä käsitellään luvussa \ref{luku/jäsennys} ja otsikointia tarkemmin luvussa \ref{luku/otsikot}. Toinen ero perusluokkien välillä on se, että vain \luokka{book}\-/ luokka sisältää komennot \komento{frontmatter}, \komento{mainmatter} ja \komento{backmatter}, joita voi käyttää ilmaisemaan tietokirjan erityyppiset osat: esittely\-/, sisältö\-/{} ja liitesivut. Näitä käsitellään luvussa \ref{luku/frontmainbackmatter}. Lisäksi \luokka{report}\-/ luokka sisältää ympäristön \ymparisto{abstract}, joka on tarkoitettu tutkimusraportin tai vastaavan dokumentin tiivistelmäosan tekemiseen; \luokka{book}\-/ luokassa sitä ei ole. Muut erot koskevat lähinnä oletusasetuksia, mutta asetukset ovat tietenkin muutettavissa, eivätkä ne siten ole määräävä tekijä valittaessa luokkien \luokka{article}, \luokka{report} ja \luokka{book} välillä. Dokumenttiluokkien asetuksia käsitellään luvussa \ref{luku/perusdokumenttiluokat-asetukset}. Muita perusdokumenttiluokkia ovat \luokka{letter} ja \luokka{slides}. Nimensä mukaisesti \luokka{letter} on kirjeiden kirjoittamista varten. Se sisältää kirjeen tyypilliseen rakenteeseen liittyviä komentoja ja soveltuu varsinkin tarpeisiin, joissa täytyy automaattisesti tuottaa samanmuotoisia kirjeitä usealle vastaanottajalle. Sama Latex\-/dokumentti voi sisältää useita kirjeitä, ja sivunumerointi ja alaviitteiden numerointi alkaa joka kirjeessä alusta -- kuten on tietysti toivottavaa. \luokka{letter}\-/ luokkaa käsitellään tarkemmin luvussa \ref{luku/kirjeet}. Piirtoheittimien läpinäkyvien kalvojen ja sen kaltaisten dokumenttien tekemiseen on dokumenttiluokka \luokka{slides}. Piirtoheittimet ovat jääneet menneisyyteen, ja nykyään jokseenkin vastaavanlainen rooli on esitysgrafiikkaohjelmilla, joilla tehdään diaesityksiä esimerkiksi esitelmien havaintomateriaaliksi. \luokka{slides}\-/ luokkaa ei varmaan tarvita enää mihinkään, mutta esitysgrafiikkaan on olemassa erittäin monipuolinen luokka \luokka{beamer}, jonka perusasioita käsitellään luvussa \ref{luku/esitysgrafiikka}. \subsection{Perusdokumenttiluokkien asetukset} \label{luku/perusdokumenttiluokat-asetukset} Taulukkoon \ref{tlk/luokkavalitsimet} on koottu perusdokumenttiluokkien asetusten valitsimet. Sivun koko asetetaan valitsimilla \koodi{a4\-paper} (210 × 297\,mm), \koodi{a5\-paper} (148 × 210\,mm), \koodi{b5\-paper} (176 × 250\,mm), \koodi{execu\-tive\-paper} (7,25 × 10,5 tuumaa), \koodi{legal\-paper} (8,5 × 14 tuumaa) tai \koodi{letter\-paper} (8,5 × 11 tuumaa). Latexin oletuksena on \koodi{letterpaper}, mutta oletusta voi olla muutettu Latexin jakelupaketissa. Varminta on aina itse kirjoittaa haluttu sivukoko dokumentin asetuksiin. \leijutlk{ \ttfamily \begin{tabular}{llll} \toprule a4paper & landscape & openright & 10pt \\ a5paper & final & openany & 11pt \\ b5paper & draft & onecolumn & 12pt \\ executivepaper & oneside & twocolumn & titlepage \\ legalpaper & twoside & fleqn & notitlepage \\ letterpaper & openbib & leqno & clock \\ \bottomrule \end{tabular} }{ \caption{Perusdokumenttiluokkien valitsimet} \label{tlk/luokkavalitsimet} } Sivu on oletuksena pystyasennossa, mutta valitsin \koodi{landscape} asettaa sen vaaka\-/asentoon. Tämä asetus koskee dokumentin kaikkia sivuja, mutta jos haluaa asettaa vain yksittäisiä sivuja vaaka\-/asentoon, täytyy käyttää \pakettictan{pdflscape}\-/ pakettia ja sen tarjoamaa ympäristöä. Sivun koon ja muitakin mittoja voi määritellä monipuolisemmin \paketti{geometry}\-/paketin toimintojen avulla (luku \ref{luku/sivuasetukset}). Jos sitä pakettia käyttää, ei näitä dokumenttiluokan sivukokoasetuksia tarvita välttämättä lainkaan. Leipätekstin fontin koon voi määrittää valitsimilla \koodi{10pt}, \koodi{11pt} ja \koodi{12pt}, joista ensin mainittu on oletus. Lyhenne pt tarkoittaa typografista pistemittaa, joita käsitellään luvussa \ref{luku/mitat}. Nämä asetukset vaikuttavat myös sivun marginaaleihin, koska fontin koko vaikuttaa tekstiriville mahtuvien merkkien määrään ja Latex pyrkii pitämään rivit sopivan mittaisina lukemisen kannalta. Vain kolme eri fonttikokoa leipätekstille on kovin vähän ja peräisin ajalta, jolloin Latexin fontit olivat pikseligrafiikkaa eli muodostuivat erillisistä kuvapisteistä. Nykyaikana fontit ovat vektorigrafiikkaa eli matemaattisten kaavojen avulla muodostettavia kuvia, ja ne voi venyttää mihin kokoon tahansa. Sen vuoksi nämä dokumenttiluokkien fonttikokovalitsimet eivät ole kovin tarpeellisia eivätkä riitä kaikkiin tarpeisiin nykyaikana. Voi niitä silti käyttää, jos niiden avulla saa halutun lopputuloksen. Fontteja käsitellään tarkemmin luvussa \ref{luku/kirjaintyypit}. Dokumentista voi latoa luonnosversion käyttämällä dokumenttiluokan valitsinta \koodi{draft}. Luonnoksena ladottuun dokumenttiin tulevat merkityksi (musta suorakulmio) ainakin tekstipalstan yli pursuavat rivit, mikä voi auttaa tekstikappaleiden ulkoasun korjailussa (luku \ref{luku/kappale}). Eri paketit voivat hyödyntää \koodi{draft}\-/ valitsinta omalla tavallaan eli muuttaa toimintaansa sen perusteella. Esimerkiksi grafiikkaan liittyvä paketti \paketti{graphicx} (luku \ref{luku/grafiikka}) jättää luonnosversiosta kuvat pois, ja niiden paikalla on vain suorakulmio. Pdf\-/tiedoston ristiviitteistä huolehtiva \paketti{hyperref}\-/paketti jättää pdf:n sisäiset ristiviitteet ja sisällysluettelon tekemättä (luku \ref{luku/ristiviitteet}). Latominen voi nopeutua huomattavasti. Lopullinen ladontatila on \koodi{final}, joka tarkoittaa, että dokumenttiin ladotaan kaikki sisältö ja ominaisuudet niin kuin se on tarkoitettu julkaistavaksi. Tätä valitsinta ei tarvitse käyttää, koska se on oletustila. Sivujen yksipuolisuus (\koodi{oneside}) ja kaksipuolisuus (\koodi{twoside}) ovat asetuksia, jotka vaikuttavat sivun marginaalien asetuksiin ja mahdollisesti uuden pääluvun (\komento{chapter}) aloitukseen. Oletus on yksipuolinen dokumentti kaikissa muissa perusdokumenttiluokissa paitsi \luokka{book}\-/ luokassa, jonka oletus on kaksipuolinen. Yksipuolisessa dokumentissa kaikkien sivujen marginaalit ovat lähtökohtaisesti samanlaisia ja asetuksissa puhutaan esimerkiksi vasemmasta (\englanti{left}) ja oikeasta (\englanti{right}) marginaalista. Kaksipuolisessa dokumentissa sivut ajatellaan pareittain: kaksi sivua muodostaa kirjan aukeaman, jonka vasemmalla puolella on parillinen sivunumero ja oikealla pariton. Marginaalien asetuksissa puhutaan sisämarginaaleista (\englanti{inner}) ja ulkomarginaaleista (\englanti{outer}). Sisämarginaalit ovat oletuksena pienemmät, koska niitä on aukeamalla aina kaksi vierekkäin. Ulkomarginaaleissa on tilaa marginaalihuomautuksille (luku \ref{luku/marginaalihuomautukset}). Marginaaleja ja muita sivun asetuksia käsitellään tarkemmin luvussa \ref{luku/sivuasetukset}. Jos dokumentti on määritetty kaksipuoliseksi (\koodi{twoside}), voidaan \koodi{open\-right}\-/ valitsimella määrittää pääluvut (\komento{chapter}) alkamaan aina oikeanpuoleiselta sivulta. Se onkin oletus dokumenttiluokassa \luokka{book}. Valitsin \koodi{open\-any} asettaa pääluvut alkamaan miltä tahansa seuraavalta sivulta. Valitsin \koodi{open\-bib} liittyy automaattiseen lähdeluettelon muotoiluun. Jos tämä valitsin on mukana, automaattisessa lähdeluettelon muotoilussa lisätään rivinvaihtoja lähdemerkinnän eri osien kuten teoksen tekijöiden ja teoksen nimen jälkeen. Lähdemerkintöjä ja lähdeluettelon laatimista käsitellään luvussa \ref{luku/lähteet}. Matemaattisten kaavojen ladontaan liittyvässä \ymparisto{equation}\-/ ympäristössä kaavat ladotaan normaalisti vaakasuunnassa sivun keskelle. Dokumenttiluokan valitsinta \koodi{fleqn} käyttämällä kaavat ladotaan kuitenkin sivun vasempaan reunaan. Kaavojen numerot sijoitetaan oletuksena sivun oikeaan reunaan, mutta valitsimella \koodi{leqno} ne saa ladottua sivun vasempaan reunaan. Matematiikkatilaa käsitellään luvussa \ref{luku/matematiikka}. Nimiösivun tai dokumentin perustietojen esitystapaan vaikutetaan valitsimilla \koodi{title\-page} ja \koodi{no\-title\-page}. Latexissa on yksinkertaiset komennot dokumentin perustietojen eli pääotsikon, tekijöiden nimien ja päiväyksen latomiseen (luku \ref{luku/dokumentin-perustiedot}), ja näillä valitsimilla vaikutetaan siihen, ladotaanko perustiedot omalle sivulleen (\koodi{title\-page}) vaiko ensimmäisen sisältösivun alkuun (\koodi{no\-title\-page}). Oletus\-asetus vaihtelee eri dokumenttiluokissa. Oletuksena sivun tekstit ladotaan yhdelle palstalle (\koodi{onecolumn}), mutta valitsimella \koodi{twocolumn} teksti ladotaan kahdelle palstalle. Nämä valitsimet vaikuttavat myös sivun marginaaleihin. Latexin perusosat eivät hallitse useampaa kuin kaksi palstaa, mutta \paketti{multicol}\-/paketin avulla saa enemmänkin. Palstoja käsitellään luvussa \ref{luku/palstat}. Dokumenttiluokassa \luokka{slides} toimii \koodi{clock}\-/ valitsin, joka latoo kellonajan piirtoheitinkalvon loppuun \komento{note}\-/ komennon yhteydessä. Tämä valitsin kuulunee samaan paikkaan kuin piirtoheittimet ja \luokka{slides}\-/luokkakin: kierrätykseen tai museoon. \subsection{Kehittyneempi dokumentti: memoir} Luokka \luokkactan{memoir} on Latexin \luokka{book}\-/ luokkaan perustuva, ominaisuuksiltaan laajennettu luokka, joka sopii varsinkin laajoihin dokumentteihin. Tähän luokkaan on sisällytetty monia dokumentin rakenteeseen ja ulkoasuun liittyviä toimintoja, joihin muutoin tarvitaan erillisiä paketteja tai lisäkoodia. Saattaa siis olla helpompaa käyttää lähes pelkästään \luokka{memoir}\-/ luokkaa ja opiskella sen ohjekirjaa, kuin että ratkoisi dokumentin rakenteen ja asettelun kysymyksiä erillisten pakettien avulla. Jos päädyt käyttämään \luokka{memoir}\-/ luokkaa, kannattaa aina ensin tutkia sen ohjekirjasta, saako tarvittavat asiat toteutettua luokan omien ominaisuuksien avulla. Vasta sen jälkeen voi hakea neuvoa tästä tai muista oppaista. \section{Sivu} \label{luku/sivuasetukset} Latex\-/dokumentit muodostuvat aina peräkkäisistä sivuista, eli taustalla kummittelee paperiarkkeihin perustuva julkaisumuoto, vaikka dokumenttia ei varsinaisesti tulostettaisi tai painettaisi paperille. Tämän vuoksi melkein aina täytyy määrittää sivun asetukset kuten paperikoko ja marginaalit. Ne tehdään \paketti{geometry}\-/ paketin avulla, jota käsitellään luvussa \ref{luku/sivun-mitat}. Joskus halutaan muokata sivun ylä- tai alatunnistetta eli verrattain pysyviä tunnistetietoja, jotka toistuvat joka sivulla ylä- tai alareunassa. Niiden muokkaamiseen käytetään \paketti{fancyhdr}\-/ pakettia, jonka ohjeita on luvussa \ref{luku/ylä-ala-tunnisteet}. Sivun taustavärin asettamista käsitellään luvussa \ref{luku/korostus-värit}. \subsection{Sivun koko ja marginaalit} \label{luku/sivun-mitat} Paperin eli sivun kokoon ja marginaaleihin pääsee vaikuttamaan \pakettictan{geometry}\-/ paketin avulla. Halutut asetukset voi kertoa paketin lataamisen yhteydessä. Seuraavassa esimerkissä asetetaan paperikoko (\koodi{a4\-paper} eli \textsc{a4}-koko), ylä- ja alamarginaalin pituus (\koodi{top}, \koodi{bottom}) sekä vasemman ja oikean marginaalin pituus (\koodi{left}, \koodi{right}). \komentoi{usepackage} \begin{koodilohkosis} \usepackage[a4paper, top=20mm, bottom=30mm, left=20mm, right=20mm]{geometry} \end{koodilohkosis} \noindent Vaihtoehtoisesti asetukset voi ilmaista paketin lataamisen jälkeen \komento{geometry}\-/ komennon avulla: \komentoi{geometry} \begin{koodilohkosis} \geometry{a4paper, top=20mm, bottom=30mm, left=20mm, right=20mm} \end{koodilohkosis} \noindent Mikäli myöhemmin dokumentissa täytyy vaihtaa sivun asettelua, käytetään komentoa \komento{newgeometry}. Alkuperäiset asetukset palautetaan komennolla \komento{restoregeometry}. \komentoi{newgeometry} \komentoi{restoregeometry} \begin{koodilohkosis} \newgeometry{top=…, bottom=…, …} % Uudet asetukset. \restoregeometry % Palautetaan alkuperäiset asetukset. \end{koodilohkosis} \noindent Valmiiksi määriteltyjä standardipaperikokoja on useita. \textsc{iso}\-/standardin mukaiset koot \textsc{a0}--\textsc{a6} valitaan valitsimilla kuten \koodi{a3paper}, \koodi{a4paper} tai \koodi{a5paper}. Samoin käytetään myös kokoja \textsc{b0}--\textsc{b6} ja \textsc{c0}--\textsc{c6}, esimerkiksi \koodi{b2paper} tai \koodi{c6paper}. Lisäksi on valittavissa useita japanilaisia ja yhdysvaltalaisia standardeja käyttämällä valitsimia kuten \koodi{b0j}--\koodi{b6j}, \koodi{ansi\-a\-paper} tai \koodi{letter\-paper}. Mikäli standardit koot eivät riitä, voi sivun mitat määrittää vapaasti \koodi{paper\-size}\-/ valitsimella, jolle annetaan arvoksi leveys- ja korkeusmitta. \komentoi{geometry} \begin{koodilohkosis} \geometry{papersize={10cm, 16cm}} \end{koodilohkosis} \noindent Sivu on oletuksena pystyasennossa (\koodi{portrait}), mutta sen voi asettaa vaaka\-/asentoon valitsimella \koodi{landscape}. Tämä asetus on voimassa koko dokumentin ajan. Jos sen sijaan haluaa asettaa vain yksittäisiä sivuja vaaka\-/asentoon, täytyy käyttää \pakettictan{pdflscape}\-/ pakettia ja sen tarjoamaa \ymparisto{landscape}\-/ ympäristöä. Ympäristön sisältö ladotaan vaakasuuntaisille sivuille. \ymparistoi{landscape} \begin{koodilohkosis} \begin{landscape} ... \end{landscape} \end{koodilohkosis} \noindent Sivun asetusten suunnittelussa voi olla avuksi valitsin \koodi{show\-frame}, joka piirtää viivat marginaalien kohdalle ja merkitsee myös ylä- ja alatunnisteiden sekä marginaalihuomautusten rajoja. Taulukkoon \ref{tlk/sivun-marginaalit} on koottu tärkeimpiä valitsimia marginaalien mittojen asettamiseksi. Valitsimille annetaan arvoksi Texin mittayksikkö, jotka ovat taulukossa \ref{tlk/mittayksiköt} (s.~\pageref{tlk/mittayksiköt}). Kaksipuolisessa asettelussa (\koodi{twoside=\katk true}) sivut muodostavat aukeaman eli on erikseen vasemmanpuoleinen ja oikeanpuoleinen sivu. Tällöin vasen ja oikea marginaali vuorottelevat, ja niitä on havainnollisempaa kutsua sisä- ja ulkomarginaaliksi. Marginaalien määrittelyssä voi käyttää valitsimen \koodi{left} sijasta valitsinta \koodi{inner}, ja vastaavasti \koodi{right}\-/ valitsin voidaan korvata \koodi{outer}\-/ valitsimella. Teknisesti näillä ei ole mitään eroa. \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[3]{\koodi{#1} & \koodi{#2} & #3 \\} \begin{tabular}{lll} \toprule \multicolumn{2}{l}{\ots{Valitsin}} & \ots{Merkitys} \\ \midrule \rivi{left}{inner}{vasen marginaali tai sisämarginaali} \rivi{right}{outer}{oikea marginaali tai ulkomarginaali} \rivi{top}{}{ylämarginaali} \rivi{bottom}{}{alamarginaali} \bottomrule \end{tabular} }{ \caption{\paketti{geometry}\-/paketin valitsimia sivun marginaalien määrittelemiseen} \label{tlk/sivun-marginaalit} } Sivun tekstialueen koon ja marginaalit voi määrittää myös suhteellisesti. Voisi esimerkiksi määrittää, että leveyssuunnassa tekstialue täyttää 0,7\=/kertaisesti (70\,\%) sivun leveyden ja loput jää marginaaleille. Marginaalien keskinäiset suhteetkin voi ilmaista suhdelukuna: esimerkiksi vasemman (sisä) ja oikean (ulko) marginaalin suhde voisi olla 2:3. Suhteellisessa tavassa ei tarvitse ottaa kantaa sivun kokoon eikä muihinkaan varsinaisiin mittoihin, vaan samat tekstialueen ja marginaalien suhteet säilyvät, vaikka sivukokoa muuttaisikin. Suhteellisia mittoja koskevia valitsimia on koottu taulukkoon \ref{tlk/sivun-marginaalit-suhd}. \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} \begin{tabular}{ll} \toprule \ots{Valitsin} & \ots{Merkitys} \\ \midrule \rivi{hscale}{tekstialueen osuus sivun leveydestä} \rivi{vscale}{tekstialueen osuus sivun korkeudesta} \rivi{hmarginratio}{vasemman (sisä) ja oikean (ulko) marginaalin suhde} \rivi{vmarginratio}{ylä- ja alamarginaalin suhde} \bottomrule \end{tabular} }{ \caption{\paketti{geometry}\-/paketin valitsimia sivun tekstitilan ja marginaalien suhteiden määrittämiseen. Osuudet (\koodi{*scale}) ilmaistaan prosenttikertoimella (esim. \koodi{0.7}). Suhteet (\koodi{*marginratio}) ilmaistaan suhdelukuna (esim. \koodi{2:3})} \label{tlk/sivun-marginaalit-suhd} } Klassisessa kirjatypografiassa, jossa teksti ladotaan yhdelle palstalle, marginaalien suuruusjärjestys on suurimmasta pienimpään seuraavanlainen: ala-, ulko-, ylä- ja sisämarginaali. Marginaalien suhdeluvut ovat samassa järjestyksessä: 32, 28, 20, 17. \paketti{geometry}\-/paketin valitsimilla tämä ilmaistaan seuraavasti: \komentoi{geometry} \begin{koodilohkosis} \geometry{hmarginratio=17:28, vmarginratio=20:32} \end{koodilohkosis} \noindent Klassisia suhteita ei nykyaikana yleensä noudateta kovin tarkasti, mutta niistä kannattaa ymmärtää yleinen ajatus. Alamarginaalin pitäisi olla hieman suurempi kuin ylämarginaali, koska muuten tekstialue tuntuu pudonneen sivulla alas. Alamarginaalissa (alatunnisteessa) on yleensä sivunumero. Kirjan sivuja katsotaan pareittain eli aukeamina, joten sisämarginaaleja on kaksi vierekkäin. Siksi sisämarginaalit yksittäin ajateltuna ovat pienemmät kuin ulkomarginaalit. Lisäksi ulkomarginaaleja voidaan käyttää huomautusten kirjoittamiseen, mikä on melko yleinen käytäntö tietokirjoissa. Marginaalihuomautukset (luku \ref{luku/marginaalihuomautukset}) sijaitsevat oletuksena sivujen ulkomarginaalissa tai oikeanpuoleisessa marginaalissa. Huomautuspalstan leveys asetetaan valitsimella \koodi{marginparwidth}, ja palstan etäisyys sivun varsinaisesta tekstialueesta määritellään valitsimella \koodi{marginparsep}. Kumpikin valitsin tarvitsee argumentiksi mitan. Jos haluaa vaihtaa huomautukset sivun vastakkaiseen marginaaliin, lisätään mukaan valitsin \koodi{reversemarginpar}. Perus Latex osaa latoa tekstin yhdelle tai kahdelle palstalle, ja \paketti{geometry}\-/ paketin valitsimella \koodi{onecolumn} tai \koodi{twocolumn} asetetaan, kumpi tila on oletuksena päällä. Useampikin palsta on mahdollista laajennuspaketin avulla. Valitsimen \koodi{columnsep} avulla asetetaan palstojen välinen etäisyys. Käytännössä tämä valitsin on asettaa mitan \mitta{columnsep}, jota voi muokata myös komennolla \komento{setlength}, kuten muitakin mittoja (luku \ref{luku/mitat}). Tarkempaa tietoa palstoista on luvussa \ref{luku/palstat}. \subsection{Sivun mittoja} \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[2]{\mitta{#1} & #2 \\} \begin{tabular}{ll} \toprule \ots{Mitta} & \ots {Merkitys} \\ \midrule \rivi{paperwidth}{paperin eli sivun leveys} \rivi{paperheight}{paperin eli sivun korkeus} \rivi{textwidth}{tekstialueen leveys} \rivi{columnwidth}{nykyisen palstan leveys} \rivi{linewidth}{nykyisen rivin leveys} \rivi{textheight}{tekstialueen korkeus} \bottomrule \end{tabular} }{ \caption{Sivun mittoja} \label{tlk/sivun-mittoja} } Sivun kokoasetusten määrittämisen jälkeenkin voi dokumentissa olla tarpeen hyödyntää joitakin sivun mittoja. Usein esimerkiksi halutaan piirtää taulukko tai kuva, joka on sivun tekstialueen levyinen tai siihen suhteutettu. Silloin on kätevää käyttää mittaa, jonka arvona on juuri tekstialueen leveys. Tärkeimmät sivun mitat on koottu taulukkoon \ref{tlk/sivun-mittoja}, mutta perusteellisemmin niitä käsitellään \pakettictan{geometry}\-/ paketin ohjekirjassa. Taulukossa \ref{tlk/sivun-mittoja} mainittu mitta \mitta{linewidth} eroaa tekstialueen (\mitta{textwidth}) tai palstan (\mitta{columnwidth}) leveysmitasta esimerkiksi silloin, kun tekstikappaletta on sisennetty. Kappaleiden ensimmäinen rivi voi olla sisennetty, ja sen vuoksi rivi ei ole täysilevyinen. Muutkin sisennykset kuten lohkolainaukset tai luetelmat vaikuttavat rivin leveysmittaan. Sisennysasiat liittyvät tekstikappaleiden muotoiluun, jota käsitellään luvussa~\ref{luku/kappale}. Luetelmia puolestaan käsitellään luvussa~\ref{luku/luetelmat}. \subsection{Leikkuuvarat} Sivu voi olla ulkoisesti erikokoinen kuin sisäisesti. On siis mahdollista asettaa sivu esimerkiksi \textsc{a4}\-/kokoiseksi ja käsitellä marginaalit ja muut sivun mitat \textsc{a4}-koon mukaan, mutta ulkoisesti tai fyysisesti sivu onkin osana suurempaa sivua tai paperiarkkia. Tällaista tarvitaan ainakin silloin, kun halutaan merkitä leikkuuvarat dokumentin painamista varten. Painokoneen paperiarkkien leikkauskohta ei välttämättä osu täsmälleen samaan kohtaan pdf\-/tiedoston sivun reunan kanssa, ja siksi dokumentissa reunaan saakka yltävät kuvat asetetaan varmuuden vuoksi hieman ylikokoiseksi. Sivun reunaan saakka aiotut kuvat siis yltävät lähde-pdf:ssä pari millimetriä varsinaisen sivualueen ulkopuolelle eli leikkuuvaran puolelle. Tällä varmistetaan, että painamisen jälkeen leikatuissa paperiarkeissa kuva varmasti yltää reunaan saakka. Jos dokumenttiin tarvitaan sivun ulkopuoliset leikkuuvarat, määritellään dokumentin ulommaiset mitat edelleen samalla tavalla kuin tavallisestikin eli esimerkiksi valitsimella \koodi{paper\-size} (luku \ref{luku/sivun-mitat}). Sen sijaan sivun sisäiset mitat täytyy määritellä toisella tavalla, käyttämällä valitsinta \koodi{lay\-out} tai \koodi{layout\-size}. \begin{esimerkki*} \komentoi{geometry} \begin{koodilohko} \geometry{ papersize={220mm, 307mm}, layout=a4paper, % tai: layoutsize={210mm, 297mm} layoutoffset={5mm, 5mm}, showcrop } \end{koodilohko} \caption{Sivun ulkoisten ja sisäisten mittojen sekä leikkuvaarojen määrittäminen} \label{esim/leikkuuvarat} \end{esimerkki*} Esimerkissä \ref{esim/leikkuuvarat} käytetään sisäisesti \textsc{a4}\-/ kokoista (210 × 297\,mm) sivua, mutta sivulle on määritetty joka puolelle 5\,mm:n leikkuuvarat. Niinpä ulkoisesti sivu on 10\,mm leveämpi ja korkeampi, eli ulkoiset mitat ovat 220 × 307\,mm. Valitsimella \koodi{layout\-offset} asetetaan sisäisen sivun etäisyys ulkoisen sivun vasemmasta ylänurkasta. Esimerkissä on mukana myös valitsin \koodi{show\-crop}, joka merkitsee sisäisen ja ulkoisen sivun rajakohdan eli leikkuuvaran rajan. Merkinnät näkyvät vain sivun nurkissa leikkuuvaran puolella, joten ne eivät päädy lopulliseen painotuotteeseen. \subsection{Ylä- ja alatunnisteet} \label{luku/ylä-ala-tunnisteet} \paketti{geometry}\-/paketin asetuksiin kuuluu pari valitsinta, joilla vaikutetaan ylä- ja alatunnisteiden mittoihin. Valitsimella \koodi{head} ilmaistaan ylätunnisteen korkeus ja valitsimella \koodi{headsep} sen etäisyys sivun tekstipalstasta. Alatunnisteen peruslinjan etäisyys tekstipalstasta säädetään valitsimella \koodi{footskip}. Taulukkoon \ref{tlk/ylä-ala-tunnistemitat} on koottu näiden valitsimien merkitys, ja seuraavassa on niiden käyttämisestä esimerkki. Mukana on myös valitsin \koodi{show\-frame}, joka piirtää sivulle apuviivoja. Se auttaa sivun mittojen suunnittelussa. \komentoi{geometry} \begin{koodilohkosis} \geometry{head=24bp, headsep=8bp, footskip=12mm, showframe} \end{koodilohkosis} \leijutlk{ \begin{tabular}{ll} \toprule \ots{Valitsin} & \ots{Merkitys} \\ \midrule \koodi{head} & ylätunnisteen korkeusmitta \\ \koodi{headsep} & ylätunnisteen etäisyys tekstipalstasta \\ \koodi{footskip} & alatunnisteen peruslinjan etäisyys tekstipalstasta \\ \bottomrule \end{tabular} }{ \caption{\paketti{geometry}\-/paketin valitsimet ylä- ja alatunnisteiden mittojen asettamiseen} \label{tlk/ylä-ala-tunnistemitat} } \noindent Latexin perusosat eivät sisällä kovin kummoista keinovalikoimaa ylä- ja alatunnisteiden muokkaamiseen, mutta pari hyödyllistä sivutyyliä on kuitenkin mukana. Ylä- ja alatunnisteet määräytyvät sivutyylin perusteella, ja haluttu tyyli asetetaan voimaan komennolla \komento{pagestyle}: \komentoi{pagestyle} \begin{koodilohkosis} \pagestyle{plain} \end{koodilohkosis} \noindent Edellä mainittu sivutyyli \koodi{plain} latoo alatunnisteeseen sivunumeron. Se on yleensä oletustyyli. Sivunumero on peräisin laskurista \laskuri{page} ja sen arvon tulostavasta komennosta \komento{thepage} (luku \ref{luku/laskurit}). Toinen hyödyllinen tyyli on \koodi{empty}, joka tarkoittaa tyhjää, eli ylä- eikä alatunnisteeseen ei ladota mitään. Yksittäiselle sivulle voi asettaa muusta dokumentista poikkeavan sivutyylin komennolla \komento{thispagestyle}. Komento siis vaikuttaa vain sillä hetkellä ladottavan sivun tyyliin, ja sen jälkeen palataan taas voimassa olevaan tyyliin, joka on aiemmin määritelty komennolla \komento{pagestyle}. \komentoi{thispagestyle} \begin{koodilohkosis} \thispagestyle{empty} \end{koodilohkosis} \noindent Sivutyyli \koodi{headings} latoo ylätunnisteeseen aukeaman vasemmanpuoleisille sivuille esimerkiksi kirjan pääluvun nimen ja oikeanpuoleisille sivuille meneillään olevan alaluvun nimen. Mainitut lukujen nimet tulevat sivun sisäreunaan; ulkoreunaan ladotaan sivunumero. Teknisesti ja sisäisesti tämä on toteutettu siten, että pääluvun aloittava otsikkokomento (esim. \komento{chapter}) automaattisesti määrittelee joka kerta uudelleen komennon \komento{leftmark}, niin että se sisältää pääluvun nimen. Sivuja ladottaessa Latex sitten latoo ylätunnisteeseen sen, mitä \komento{leftmark}\-/komento sattuu tulostamaan. Vastaavasti alaluvun otsikkokomento (esim. \komento{section}) määrittelee uudelleen komennon \komento{rightmark}, niin että se sisältää alaluvun nimen. Tämän komennon tulostama teksti ladotaan aukeaman oikeanpuoleisille sivuille. Jos haluaa itse vaikuttaa ylätunnisteen tekstiin, voi käyttää sivutyyliä \koodi{myheadings} sekä komentoa \komento{markboth}, jolla määritellään aukeaman vasemmanpuoleisen ja oikeanpuoleisen sivun ylätunnisteen teksti. Tämä komento on tarkoitettu suoritettavaksi päälukujen yhteydessä. Komennolla \komento{markright} määritellään pelkästään oikeanpuoleisen sivun teksti, ja komento on tarkoitettu suoritettavaksi aina alalukujen yhteydessä. \komentoi{markboth} \komentoi{markright} \begin{koodilohkosis} \markboth{vasen}{oikea} % määrittelee: \leftmark ja \rightmark \markright{oikea} % määrittelee: \rightmark \end{koodilohkosis} \noindent Sivunumeroinnin tyyliin voi vaikuttaa esimerkiksi komennolla \komento{pagenumbering}, jonka argumentiksi annetaan numerointityylin nimi. Ne on koottu taulukkoon \ref{tlk/sivu-numerointityylit}. \komentoi{pagenumbering} \begin{koodilohkosis} \pagenumbering{roman} \end{koodilohkosis} \noindent Edellä mainittu komento määrittelee käytännössä uudelleen komennon \komento{thepage}, joka on tarkoitettu juuri sivunumerolaskurin latomiseen. Lisätietoa sivunumeroista ja muista laskureista on luvussa \ref{luku/laskurit}. \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} \begin{tabular}{ll} \toprule \ots{Tyyli} & \ots{Merkitys} \\ \midrule \rivi{arabic}{arabialaiset luvut: 1, 2, 3\dots} \rivi{roman}{roomalaiset luvut: i, ii, iii\dots} \rivi{Roman}{roomalaiset luvut: I, II, III\dots} \rivi{alph}{kirjaimet: a, b, c\dots\ (vain 1--26)} \rivi{Alph}{kirjaimet: A, B, C\dots\ (vain 1--26)} \bottomrule \end{tabular} }{ \caption{Sivunumerointityylit \komento{pagenumbering}\-/ komennon argumentiksi} \label{tlk/sivu-numerointityylit} } Monipuolisemmin ylä- ja alatunnisteita voi muokata paketin \pakettictan{fancyhdr} toimintojen avulla. Silloin sivutyylinä voi olla myös \koodi{fancy}: \komentoi{usepackage} \komentoi{pagestyle} \begin{koodilohkosis} \usepackage{fancyhdr} \pagestyle{fancy} \end{koodilohkosis} \noindent Kun käytössä on sivutyyli \koodi{fancy}, voi ylä- ja alatunnisteiden sisällön asettaa vapaasti komennolla \komento{fancyhf}. Komennon argumenttien merkitys on seuraavanlainen: \komentoi{fancyhf} \begin{koodilohkosis} \fancyhf[paikka]{sisältö} \end{koodilohkosis} \noindent Valinnainen argumentti \koodi{paikka} kertoo, mihin paikkaan tai paikkoihin \koodi{sisältö} sijoitetaan. Vaihtoehtoina on ylä- tai alatunniste, pariton tai parillinen sivu, sivun vasen reuna, keskiosa tai oikea reuna. Nämä vaihtoehdot ja niitä vastaavat valitsimet on koottu taulukkoon \ref{tlk/fancyhf-paikat}. Saman komennon avulla voi määrittää useitakin paikkoja, kun ne erottaa pilkulla, esimerkiksi seuraavalla tavalla: \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} \begin{tabular}{cl} \toprule \ots{Valitsin} & \ots{Merkitys} \\ \midrule \rivi{H}{ylätunniste (header)} \rivi{F}{alatunniste (footer)} \rivi{E}{parillinen sivu, vasen (even)} \rivi{O}{pariton sivu, oikea (odd)} \rivi{L}{sivun vasen reuna (left)} \rivi{C}{sivun keskelle (center)} \rivi{R}{sivun oikea reuna (right)} \bottomrule \end{tabular} }{ \caption{\komento{fancyhf}\-/ komennon valitsimia ylä- tai alatunnisteen paikan määrittämiseen} \label{tlk/fancyhf-paikat} } \komentoi{fancyhf} \begin{koodilohkosis} \fancyhf{} % Tyhjennetään ylä- ja alatunnisteet. \fancyhf[HEL,HOR]{\thepage} \end{koodilohkosis} \noindent Edellä mainittu komento sijoittaa sivunumeron (\komento{thepage}) ylätunnisteeseen (\koodi{H}) parillisten sivujen (\koodi{E}) vasempaan reunaan (\koodi{L}) ja parittomien sivujen (\koodi{O}) oikeaan reunaan (\koodi{R}). Käytännössä siis aukeaman ulkoreunoihin ladotaan sivunumerot. Seuraava esimerkki sijoittaa ajatusviivoilla (\==) reunustetun sivunumeron kaikille sivuille alatunnisteeseen (\koodi{F}) sivun keskelle (\koodi{C}): \komentoi{fancyhf} \komentoi{thepage} \begin{koodilohkosis} \fancyhf[FC]{-- \thepage\ --} \end{koodilohkosis} \noindent Paketin \paketti{fancyhdr} avulla voi myös määritellä Latexin sivutyylejä toisenlaiseksi tai luoda kokonaan omia sivutyylejä. Nämä tehdään komennolla \komento{fancypagestyle}, jonka ensimmäinen argumentti on sivutyylin nimi ja toinen argumentti on sivutyylin määritelmä. Määritelmä sisältää tarvittavat \komento{fancyhf}\-/ komennot, joilla ylä- ja alatunnisteet määritellään. Seuraava esimerkki tekee Latexin \koodi{plain}\-/ sivutyylistä saman kuin \koodi{fancy}\-/tyylin, eli sekin noudattaa \komento{fancyhf}\-/ komennolla määriteltyjä ylä- ja alatunnisteita: \komentoi{fancypagestyle} \begin{koodilohkosis} \fancypagestyle{plain}{} \end{koodilohkosis} \noindent Seuraava esimerkki määrittelee kokonaan oman sivutyylin: \komentoi{fancypagestyle} \komentoi{fancyhf} \begin{koodilohkosis} \fancypagestyle{omatyyli}{ \fancyhf{} \fancyhf[FEL,FOR]{\thepage} } \end{koodilohkosis} \noindent Ylä- ja alatunniste voidaan erottaa tekstipalstasta vaakasuuntaisella viivalla, jonka leveyttä on mahdollista muuttaa määrittelemällä uudelleen komennot \komento{headrulewidth} ja \komento{footrulewidth}. Komennon määritelmäksi kirjoitetaan Texin mitta. Seuraavassa esimerkissä asetetaan yhden typografisen pisteen (1\,bp) levyiset viivat. Mitan voisi asettaa myös nollaksi (0\,bp), jolloin erotinviiva katoaa kokonaan näkyvistä. \komentoi{renewcommand} \komentoi{headrulewidth} \komentoi{footrulewidth} \begin{koodilohkosis} \renewcommand{\headrulewidth}{1bp} % ylätunnisteen erotinviiva \renewcommand{\footrulewidth}{1bp} % alatunnisteen erotinviiva \end{koodilohkosis} \noindent Mikäli haluaa omiin ylätunnisteisiin esimerkiksi päälukujen ja alalukujen nimiä, täytyy tunnisteisiin sisällyttää aiemmin kuvatut \komento{leftmark}- ja \komento{rightmark}\-/komennot. Ensin mainittu sisältää pääluvun nimen ja jälkimmäinen alaluvun nimen. \komentoi{fancyhf} \komentoi{leftmark} \komentoi{rightmark} \begin{koodilohkosis} \fancyhf[HEL]{\leftmark} \fancyhf[HOR]{\rightmark} \end{koodilohkosis} \noindent Latex latoo pää- ja alalukujen nimet oletuksena versaalikirjaimilla eli isoilla kirjaimilla. Jos ne haluaa johonkin toiseen muotoon, täytyy itse määritellä uudelleen komennot \komento{chaptermark}, \komento{sectionmark} tai \komento{subsectionmark} (vain kaksi näistä) ja käyttää määritelmässä komentoja \komento{markboth} ja \komento{markright}. Esimerkkiin \ref{esim/fancyhdr-koko} on koottu varsin kokonaisvaltainen koodi omien ylä- ja alatunnisteiden toteutukseen. \begin{esimerkki*} \komentoi{documentclass} \luokkai{book} \komentoi{usepackage} \pakettii{fancyhdr} \komentoi{fancypagestyle} \komentoi{fancyhf} \komentoi{renewcommand} \komentoi{headrulewidth} \komentoi{footrulewidth} \komentoi{leftmark} \komentoi{rightmark} \komentoi{thepage} \komentoi{pagestyle} \komentoi{chaptermark} \komentoi{markboth} \komentoi{chaptername} \komentoi{thechapter} \komentoi{sectionmark} \komentoi{thesection} \begin{koodilohko} \documentclass{book} \usepackage{fancyhdr} % Päälukujen (\chapter) aloitussivu käyttää plain-sivutyyliä. % Tässä määritellään se uudestaan. \fancypagestyle{plain}{ \fancyhf{} \fancyhf[FC]{-- \thepage\ --} \renewcommand{\headrulewidth}{0bp} \renewcommand{\footrulewidth}{0bp} } % fancy-sivutyylin asetukset: \fancyhf{} \fancyhf[HEL]{\leftmark} \fancyhf[HOR]{\rightmark} \fancyhf[FC]{-- \thepage\ --} \renewcommand{\headrulewidth}{1bp} \renewcommand{\footrulewidth}{0bp} \begin{document} \pagestyle{fancy} % Päälukujen (\chapter) yhteydessä komento \markboth{…}{…} määrittää % sekä \leftmark- että \rightmark-komennot. Tässä jälkimmäinen % määritellään tyhjäksi. \renewcommand{\chaptermark}[1]{% \markboth{\chaptername\ \thechapter: #1}{}} % Alalukujen (\section) yhteydessä komento \markright{…} määrittää % vain \rightmark-komennon. \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} \end{koodilohko} \caption{Omien ylä- ja alatunnisteiden toteuttaminen} \label{esim/fancyhdr-koko} \end{esimerkki*} \section{Pdf-tiedosto} \label{luku/pdf-asetukset} Pdf-tiedostot voivat sisältää metatietoja kuten dokumentin nimen, aiheen, tekijän ja päiväyksen. Tiedostoille voi määrittää myös erilaisia asetuksia kuten ristiviitteiden ja linkkien ulkoasun tai sisäisen sisällysluettelon ominaisuuksia. Pdf\-/tiedoston asetukset toteutetaan \pakettictan{hyperref}\-/ paketin avulla. Paketti neuvotaan lataamaan muiden pakettien jälkeen, koska se lisää ominaisuuksia muihin komentoihin. Paketin voisi ladata esimerkiksi seuraavalla tavalla: \komentoi{usepackage} \pakettii{hyperref} \begin{koodilohkosis} % Muiden \usepackage-komentojen jälkeen. \usepackage[unicode]{hyperref} \end{koodilohkosis} \noindent Esimerkissä käytetty valitsin \koodi{unicode} aiheuttaa sen, että pdf\-/ tiedoston sisäisissä merkkijonoissa käytetään Unicode\-/ merkistöä ja sen \textsc{utf\=/8}\-/ koodausta. Ilman tätä valitsinta pdf\-/ tiedoston sisäisen sisällysluettelon merkistö ei välttämättä näy oikein. \paketti{hyperref}\-/ paketin asetuksia voi määritellä valitsimien avulla \komento{usepackage}\-/ komennon yhteydessä mutta myös erillisellä \komento{hypersetup}\-/ komennolla. Komennolle annetaan yksi argumentti, joka sisältää pilkuilla erotettuna erilaisia valitsimia ja niiden arvoja. \begin{esimerkki*} \komentoi{hypersetup} \begin{koodilohko} \hypersetup{ hidelinks, bookmarksopen, bookmarksnumbered, pdfinfo={ Title={Laatikollinen lateksia}, Subject={Opas lateksiin ja liisteriin}, Author={Lauri Liisteri} } } \end{koodilohko} \caption{\komento{hypersetup}\-/ komennolla asetetaan \paketti{hyperref}\-/ paketin asetuksia, esimerkiksi pdf:n metatietoja} \label{esim/hypersetup} \end{esimerkki*} Esimerkki \ref{esim/hypersetup} havainnollistaa \komento{hypersetup}\-/ komennon käyttöä. Komennon argumentissa valitsin \koodi{hidelinks} saa aikaan sen, että pdf:ssä olevia linkkejä ja ristiviitteitä ei merkitä millään tavalla. Oletuksena linkit kehystetään eri väreillä riippuen linkin tyypistä. Valitsin \koodi{bookmarksopen} näyttää pdf:n sisällysluettelon kokonaan avattuna. Oletuksena alaluvut on piilotettuna, ja ne joutuu avaamaan napsauttamalla hiirellä ylemmäntasoisen otsikon avauspainiketta. Valitsin \koodi{bookmarksnumbered} näyttää pdf:n sisällysluettelossa lukujen numeroinnin (kuten 1.1, 1.2, 2.1 tms.). Valitsimella \koodi{pdfinfo} määritellään pdf:n metatietoja kuten otsikko, aihe ja tekijä mutta omiakin metatietoja voi lisätä. Paljon muitakin asetuksia on olemassa, ja niistä voi lukea lisää \paketti{hyperref}\-/ paketin ohjekirjasta. Pdf\-/ tiedoston sisäiseen sisällysluetteloon tulevat automaattisesti mukaan samat otsikot (luku \ref{luku/otsikot}) kuin ladottavaan sisällysluetteloonkin (luku \ref{luku/sisällysluettelo}). Pdf\-/ tiedoston luetteloon voi kuitenkin itse lisäillä omia otsikoita, jotka eivät näy missään muualla. Se tehdään \paketti{hyperref}\-/ paketin komennolla \komento{pdfbookmark}: \komentoi{pdfbookmark} \begin{koodilohkosis} \pdfbookmark[taso]{Teksti}{tunniste} \end{koodilohkosis} \noindent Komennon valinnainen argumentti \koodi{taso} on kokonaisluku, joka tarkoittaa otsikon tasoa. Se on samankaltainen tasonumero kuin otsikkotasojen taulukossa \ref{tlk/otsikkotasot} (s.~\pageref{tlk/otsikkotasot}). Argumentti \koodi{Teksti} on pdf:n sisällysluettelomerkinnän teksti, ja \koodi{tunniste} on mikä tahansa yksilöllinen tekstimuotoinen tunniste kyseiselle luettelomerkinnälle. Tunniste ei näy missään, mutta pdf tarvitsee sisäiseen toimintaansa jonkin yksilöllisen tunnisteen. \section{Fontit} \label{luku/kirjaintyypit} Fontit ja niiden asettaminen on Latexissa melko monimutkainen kokonaisuus, koska fonteilla on paljon ominaisuuksia ja niihin vaikutetaan monilla eri asetuksilla ja abstraktiotasoilla. Aika monta asiaa pitää ymmärtää, jotta voi tehokkaasti työskennellä Latexin fonttien kanssa. Fontti jo itsessään on moniselitteinen käsite, joka vaatii typografiassa usein täsmentäviä ilmauksia. Sana \emph{fontti} voi tarkoittaa kokonaista kirjainperhettä eli yhteensopivien kirjainleikkausten muodostamaa kokonaisuutta. Samaan kirjainperheeseen kuuluu yleensä ainakin neljä eri leikkausta: tavallinen, \textit{kursiivi}, \textbf{lihavoitu} ja \textbf{\textit{lihavoitu kursiivi}}. Joihinkin perheisiin kuuluu leikkauksia paljon enemmänkin, kuten useita eri vahvuuksia. Joissakin puheissa sana \emph{fontti} tarkoittaa vain yhtä kirjainleikkausta, ja silloin koko perheeseen viitataan ehkä sanalla fonttiperhe. Tässä oppaassa käytetään \emph{fontti}\-/sanaa yleisnimityksenä Latexin kirjaintyyppeihin liittyville asetuksille. Se tarkoittaa kirjainperhettä tai siihen kuuluvaa yksittäistä leikkausta sekä asetuksia, jotka liittyvät niihin. Silloin kun merkitystä pitää täsmentää, käytetään suomenkielisiä nimiä kirjainperhe ja kirjainleikkaus. Sen sijaan sana \emph{kirjasin} on jätetty kokonaan pois. Se tarkoittaa vanhassa metalliladonnassa ja mekaanisissa kirjoituskoneissa metallisen ladontakappaleen eli kirjakkeen päähän valettua kirjaimen tai muun merkin kohokuviota, joka painaa mustejäljen paperille. Kuten Latexissa yleensäkin myös fonttien kanssa kannattaa käyttää korkean abstraktiotason komentoja, jotka piilottavat yksityiskohdat ja teknisen toteutuksen. Latexin fonttitoiminnot on suunniteltu juuri siihen: matalan tason fonttiasetukset määritellään mieluiten vain kerran dokumentin esittelyosassa, ja sen jälkeen käytetään pelkästään korkean tason komentoja. Latexin fonttitekniikka rakentuu eri\-/ikäisistä kerroksista ja tekniikoista. Fontteja on aikoinaan tehty \englanti{Metafont}\avctan{metafont}\-/ nimisellä kielellä, jolla kuvataan merkkien muodot. \englanti{Metafont} on myös tietokoneohjelma, joka tuottaa kuvauskielen perusteella bittikarttafontteja eli pikseleistä koostuvia fontteja. On käytetty myös kehittyneempää \englanti{Metapost}\avctan{metapost}\-/ kuvauskieltä ja \=/ohjelmaa, joilla on tuotettu vektorigrafiikkafontteja \textsc{eps}- eli \englanti{Encapsulated Post Script} \=/muodossa ja muutettu niitä edelleen \englanti{Post Script Type~1} \=/fonteiksi. Myöhemmin mukaan ovat tulleet nykyaikaiset \englanti{True Type}- ja \englanti{Open Type} \=/fontit, ja niihin tämä opas keskittyy. \subsection{Fonttien määrittäminen} \label{luku/fontin-valinta} Latexin fonttien perustoiminnot rakentuvat kolmen erityyppisen kirjainperheen varaan: \begin{nluetelma} \item peruskirjainperhe eli dokumentin pääasiallinen kirjainperhe, joka on kirjatypografiassa usein antiikva eli pääteviivallinen (\englanti{serif, roman})% \footnote{Antiikva (lat. \emph{antiquus} 'vanha') perustuu antiikin Roomassa käytettyihin kirjainmuotoihin. Niissä on pääteviivat, ja viivojen vahvuus vaihtelee.} \item groteski eli pääteviivaton (\englanti{sans serif, gothic})% \footnote{Groteskiin (ransk. \emph{grotesque} 'kummallinen') kuuluu pääteviivojen puuttumisen lisäksi lähes tasavahvuiset kirjainten viivat. Tämän oppaan groteskifontissa on kuitenkin selvästi antiikvamaiset kaksivahvuiset viivat, joten se on eräänlainen antiikvan ja groteskin välimuoto.} \item tasalevyinen kirjoituskoneen kaltainen perhe (\englanti{type\-writer, mono\-spaced, tele\-type}). \end{nluetelma} \noindent Kuvassa \ref{kuva/kirjainperhetyypit} ovat tässä oppaassa käytetyt kolme eri kirjainperhettä. Leipätekstissä käytetään antiikvaa, otsikoissa ja kuvateksteissä groteskia ja koodiesimerkeissä tasalevyistä. Kirjoituskoneen kaltainen tasalevyinen kirjainperhe on tässä tapauksessa tyypiltään antiikva eli pääteviivallinen, mutta se voisi olla muutakin. Tasalevyisyys on sen kirjainperheen tärkein määrittävä tekijä Latexin asetusten näkökulmasta. \leijukuva{ {\rmfamily\addfontfeatures{ScaleAgain=5}Amf} \hfill {\sffamily\addfontfeatures{Scale=5}Amf} \hfill {\ttfamily\addfontfeatures{FakeStretch=1, Scale=4.5}Amf} }{ \caption{Vasemmalla pääteviivallinen \englanti{Libertinus Serif} (antiikva), keskellä pääteviivaton \englanti{Libertinus Sans} (groteski) ja oikealla tasalevyinen \englanti{Libertinus Mono}} \label{kuva/kirjainperhetyypit} } Joidenkin fonttien käyttöönottoon on tehty oma pakettinsa, joten sellaiset fontit voi ladata dokumentin esittelyosassa komennolla \komento{usepackage}. Fonttikohtaisia paketteja on olemassa varsinkin vanhalle fonttitekniikalle (\englanti{Metafont, Post Script Type~1}) mutta myös matematiikkatilan fonttiasetuksille (luku \ref{luku/matematiikka-fontit}) ja joillekin kir\-jain\-perhe\-koko\-nai\-suuk\-sille. Latexissa pisimmälle ''tuotteistettu'' kokonaisuus taitaa olla Libertinus\-/ kirjainperhe, joka sisältää antiikvan, groteskin ja tasalevyisen kirjainperheen sekä matematiikkatilan symboleita. Libertinus\-/ kirjainperheet saa käyttöön lataamalla paketin \pakettictan{libertinus}: \komentoi{usepackage} \pakettii{libertinus} \begin{koodilohkosis} \usepackage{libertinus} \end{koodilohkosis} \noindent Valmiita paketteja on kuitenkin vain harvoille fonteille, ja käytännössä lähes aina \englanti{True Type}- ja \englanti{Open Type} \=/muodossa olevat fontit otetaan käyttöön \pakettictan{fontspec}\-/ paketin komennoilla\footnote{Vaihtoehtoisesti fontit voi asettaa \paketti{babel}\-/ paketin \komento{babelfont}\-/ komennolla (luku \ref{luku/babel}).} seuraavan esimerkin mukaisesti: \komentoi{setmainfont} \komentoi{setsansfont} \komentoi{setmonofont} \begin{koodilohkosis} \setmainfont{TeX Gyre Termes}[Scale=1] \setsansfont{TeX Gyre Heros} [Scale=MatchLowercase] \setmonofont{TeX Gyre Cursor}[Scale=MatchLowercase] \end{koodilohkosis} \leijutlk{ \begin{tabular}{ll} \toprule \ots{Kirjainperhe} & \ots{Tyyli} \\ \midrule Garamond Libre & antiikva, renessanssi, ranskalainen \\ TeX Gyre Pagella & antiikva, renessanssi, ranskalainen \\ TeX Gyre Termes & antiikva, renessanssi, alankomainen \\ Libertinus Serif & antiikva, renessanssi, alankomainen \\ Latin Modern Roman & antiikva, uusantiikva \\ TeX Gyre Schola & antiikva, vahvapäätteinen \\ TeX Gyre Bonum & antiikva, vahvapäätteinen \\ DejaVu Serif & antiikva, vahvapäätteinen \\ TeX Gyre Chorus & kalligrafinen \\ \midrule Libertinus Sans & groteski, humanistinen, kaksivahvuinen \\ TeX Gyre Heros & groteski, uusgroteski \\ DejaVu Sans & groteski, uusgroteski \\ TeX Gyre Adventor & groteski, geometrinen \\ \midrule Libertinus Mono & tasalevyinen \\ TeX Gyre Cursor & tasalevyinen \\ DejaVu Sans Mono & tasalevyinen \\ \bottomrule \end{tabular} }{ \caption{Vapaita fontteja ja kirjainperheitä, jotka toimitetaan Tex Live \=/jakelun tai käyttöjärjestelmän mukana. Tyylit viittaavat kirjainmuotoon tai historialliseen kirjaintyyliin} \label{tlk/vapaita-fontteja} } \noindent Edellisessä esimerkissä \englanti{TeX Gyre Termes, Heros} ja \englanti{Cursor} ovat kirjainperheiden nimiä. Fonttitiedostojen tulee olla asennettuna käyttöjärjestelmän normaalien käytäntöjen mukaisesti tai Latex\-/jakelun käytäntöjen mukaisesti. Taulukkoon \ref{tlk/vapaita-fontteja} on koottu erityylisiä, vapaasti käytettävissä olevia kirjainperheitä. Kirjainperheiden käyttöönoton yhteydessä voi määritellä lukuisia asetuksia kuten ligatuureja, gemenanumeroita, optisia kokoja ja muita fontin ominaisuuksia. Edellisessä esimerkissä käytetään vain \koodi{Scale}\-/ valitsinta, jolla fontin voi skaalata haluttuun kokoon. Peruskirjainperheen (\komento{setmainfont}) skaalaukseksi asetetaan esimerkissä \koodi{Scale=1}, eli sille ei tehdä mitään, ja koko valitsimen voisi jättää pois. Sen sijaan kahdella muulla kirjainperheellä (\komento{setsansfont}, \komento{setmonofont}) käytetään kerroinasetusta \koodi{MatchLowercase}, joka skaalaa fontin siten, että gemenakirjaimet eli pienet kirjaimet ovat yhtä korkeita kuin peruskirjainperheessä. Mikäli skaalausasetus \koodi{MatchLowercase} ei tuota ihan toivottua tulosta, voi kirjainperheen skaalausta hienosäätää vielä \koodi{Scale\-Again}\-/ valitsimella seuraavalla tavalla: \komentoi{setmonofont} \begin{koodilohkosis} \setmonofont{TeX Gyre Cursor}[ Scale=MatchLowercase, ScaleAgain=.97] \end{koodilohkosis} \noindent Kirjainperheen määrittelyn yhteydessä ei yleensä tarvitse antaa kuin kirjainperheen nimi, sillä \paketti{fontspec}\-/paketti ja kääntäjät osaavat automaattisesti ladata perheeseen sisältyviä eri fonttitiedostoja kuten pystyasentoisen leikkauksen, kursiivin ja lihavoinnin. On kuitenkin mahdollista määritellä kirjainperheeseen kuuluvia leikkausten nimiä tai fonttitiedostoja erikseen. Tällainen on tarpeen esimerkiksi silloin, kun kirjainperhe sisältää useita eri vahvuuksia ja halutaan itse määritellä, mikä niistä tulee perusvahvuudeksi ja mikä lihavaksi. Esimerkki \ref{esim/fontit-leik-omin} selventää, kuinka kirjainperheen eri leikkausten nimet tai fonttitiedostot määritellään. Kullekin leikkaukselle voi määrittää myös omat asetuksensa \koodi{Fea\-tures}\-/ sanaan päättyvällä valitsimella. Samaa asiaa havainnollistetaan konkreettisemmin esimerkissä \ref{esim/fontit-leik-libertinus}. Leikkauksen nimessä voi käyttää tähteä (\koodi{*}), joka korvautuu kirjainperheen nimellä (esim. \englanti{Libertinus Serif}). Fonttien nimeämisestä on lisätietoa luvussa \ref{luku/luatex-xetex-fonttitekn}, ja fonttien asetuksia käsitellään tämän luvun \ref{luku/kirjaintyypit} loppupuolella. \begin{esimerkki*} \komentoi{setmainfont} \begin{koodilohko} \setmainfont{…}[ UprightFont={…}, UprightFeatures={…}, ItalicFont={…}, ItalicFeatures={…}, BoldFont={…}, BoldFeatures={…}, BoldItalicFont={…}, BoldItalicFeatures={…}, SlantedFont={…}, SlantedFeatures={…}, BoldSlantedFont={…}, BoldSlantedFeatures={…}, SmallCapsFont={…}, SmallCapsFeatures={…}, SwashFont={…}, SwashFeatures={…}, BoldSwashFont={…}, BoldSwashFeatures={…}] \end{koodilohko} \caption{Kirjainperheeseen sisältyvien leikkausten nimien ja kirjainleikkauskohtaisten ominaisuuksien määrittely} \label{esim/fontit-leik-omin} \end{esimerkki*} \begin{esimerkki*} \komentoi{setmainfont} \komentoi{setsansfont} \komentoi{setmonofont} \begin{koodilohko} \setmainfont{Libertinus Serif}[ Numbers=Lowercase, BoldFont = {* Semibold}, BoldItalicFont = {* Semibold Italic}, SlantedFont = {* Regular}, SlantedFeatures={FakeSlant=0.2}, BoldSlantedFont = {* Semibold}, BoldSlantedFeatures={FakeSlant=0.2}, SmallCapsFont = {* Regular}, SmallCapsFeatures={Language=Default, Letters=SmallCaps}] \setsansfont{Libertinus Sans}[ Scale=MatchLowercase, Numbers=Lowercase, SlantedFont = {* Regular}, SlantedFeatures={FakeSlant=0.2}, BoldSlantedFont = {* Bold}, BoldSlantedFeatures={FakeSlant=0.2}, SmallCapsFont = {* Regular}, SmallCapsFeatures={Language=Default, Letters=SmallCaps}] \setmonofont{Libertinus Mono}[ Scale=MatchLowercase, FakeStretch=0.8, Ligatures=NoCommon] \end{koodilohko} \caption{Libertinus\-/ kirjainperheiden asettaminen. Tässä \englanti{Libertinus Serif} \=/perheen lihavoinniksi on valittu \englanti{Semibold}, mutta myös vahvempi \englanti{Bold}\-/ leikkaus on saatavilla. Pienversaali saattaa näissä perheissä vaatia erityiset asetukset \koodi{Small\-Caps\-Font} ja \koodi{Small\-Caps\-Features}} \label{esim/fontit-leik-libertinus} \end{esimerkki*} Jos edellä kuvatut kolme kirjainperhettä (\komento{setmainfont}, \komento{setsansfont} ja \komento{setmonofont}) eivät riitä, on \paketti{fontspec}\-/paketissa komennot lisäperheiden ja \=/leikkausten määrittämiseen. Uusi perhe määritellään seu\-raa\-vasti: \komentoi{newfontfamily} \begin{koodilohkosis} \newfontfamily{\hienoperhe}{TeX Gyre Schola}[…] \end{koodilohkosis} \noindent Komento \komento{newfontfamily} toimii samalla tavalla kuin aiemmin esitellyt \komento{setmainfont} ym. komennot, mutta lisäksi ensimmäisellä argumentilla nimetään komento, jolla kirjainperhe otetaan käyttöön. Edellisessä esimerkissä luodaan komento \komentox{hieno\-perhe}, joka kytkee päälle \englanti{TeX Gyre Schola} \=/nimisen kirjainperheen. Jos ei tarvita kokonaista perhettä vaan yksi leikkaus riittää, käytetään komentoa \komento{newfontface}. Seuraavassa esimerkissä määriteltävä komento \komentox{hieno\-leikkaus} ottaa käyttöön lihavoidun (bold) kirjainleikkauksen perheestä \englanti{TeX Gyre Schola}. \komentoi{newfontface} \begin{koodilohkosis} \newfontface{\hienoleikkaus}{TeX Gyre Schola Bold}[…] \end{koodilohkosis} \subsection{Fontin koko ja rivikorkeus} Fonttien koot on tapana valita ja ilmaista typografisen pistemitan avulla. Esimerkiksi 10--12 pistettä on tyypillinen leipätekstin oletuskoko tekstinkäsittelyohjelmissa. Piste on typografiassa mittayksikkö, jonka pituus on määritelty eri tavoin eri aikoina ja eri kulttuureissa. Myös Latexissa fonttien koot voi määritellä pistemittojen avulla. Niitä ja muitakin Latexin mittayksiköitä käsitellään tarkemmin luvussa \ref{luku/mitat}. Fonteissa oletusmittayksikkönä on vanha pica\-/ järjestelmän piste, jonka pituus on noin 0,3515 millimetriä. Sen lyhenne Latexissa on~pt. Tämän oppaan esimerkeissä käytetään kuitenkin \englanti{Post Script} \=/standardin mukaista, julkaisuohjelmiin vakiintunutta uudempaa pica\-/ pistettä, joka on hieman edellistä pidempi: noin 0,3528 millimetriä. Latexissa sen lyhenne on~bp. Ero näiden kahden pistemitan välillä on hyvin pieni, tavallisilla fonttiko'oilla käytännössä merkityksetön. Kirjainleikkauksen koko mitataan merkistön ylimmän ja alimman kohdan välillä, esimerkiksi k\=/kirjaimen ylimmän pisteen ja y\=/kirjaimen alimman pisteen välillä. Lisäksi mittaan luetaan mukaan merkistön ylä- ja alapuolella oleva pieni tyhjä tila, jonka fontin suunnittelija on määritellyt. Matalalla tasolla fonttien kokoon vaikuttaa Latexissa eräs yllättävä asia. Nimittäin dokumenttiluokalle (luku \ref{luku/dokumenttiluokat}) voi antaa valitsimen, jolla fontin koko asetetaan. Vaihtoehtoja on Latexin normaaleissa dokumenttiluokissa vain kolme: \koodi{10pt} (oletus), \koodi{11pt} ja \koodi{12pt}. Dokumenttiluokan kokoasetus vaikuttaa myös sivun marginaaleihin, koska Latex pyrkii pitämään rivin merkkimäärän lukijalle sopivana: yhdelle riville ei kannata latoa ihan mahdottomasti merkkejä, koska kovin pitkän rivin seuraaminen vaatii enemmän keskittymistä ja rasittaa lukijaa. Fontin koon määrittäminen dokumenttiluokan valitsimella ehkä kuuluu jo menneisyyteen, mutta voi sitä edelleen käyttää, jos se riittää ja sillä saa halutun lopputuloksen. Yleensä lienee järkevää jättää dokumenttiluokan fonttiasetus oletukseksi (\koodi{10pt}) ja käyttää koon asettamiseen luvuissa \ref{luku/fontti-suhteellinen} ja \ref{luku/fontti-absoluuttinen} kerrottuja tapoja. Sivun marginaalien ja muiden mittojen määrittämiseen on ohjeita luvussa \ref{luku/sivuasetukset}. Fonttiasetuksiin kuuluu fontin koon lisäksi toinenkin mitta: rivikorkeus (\mitta{baselineskip}). Se on peräkkäisten rivien peruslinjojen välinen etäisyys. Fontin koko ja rivikorkeus määritellään samanaikaisesti, koska ne ovat saman \komento{fontsize}\-/ komennon argumentteja. Esimerkki: \komentoi{fontsize} \komentoi{selectfont} \begin{koodilohkosis} \fontsize{10bp}{12bp} \selectfont \end{koodilohkosis} \noindent Ensimmäinen argumentti on fontin kokomitta ja toinen on rivikorkeus. Mittayksiköt voivat olla mitä tahansa Texin mittoja, ja oletuksena käytetään pt\-/pistemittaa, jos yksikköä ei ole mainittu. Komento \komento{selectfont} on mukana, koska vasta sen myötä matalan tason fonttikomennot tulevat voimaan. Korkean tason fonttikomennot (luku \ref{luku/fontit-korkea}) suorittavat sen automaattisesti. Rivikorkeus on vähintään sama kuin fontin koko, mutta yleensä se asetetaan pari pistettä suuremmaksi, jotta rivit eivät olisi liian lähellä toisiaan. Esimerkissä \ref{esim/rivikorkeus} on kaksi erilaista \komento{fontsize}\-/komentoa ja ladottu lopputulos. \begin{esimerkki*} \komentoi{fontsize} \komentoi{selectfont} \begin{koodilohko} \fontsize{8bp}{11bp}\selectfont Tässä on pienehkö leipätekstin fonttikoko ja suhteellisen suuri rivikorkeus. Pitkät rivit vaativat suuremman rivikorkeuden kuin lyhyet rivit. \fontsize{16bp}{17bp}\selectfont Tässä on melko suuri fontti ja suhteellisen pieni rivikorkeus. Suuri fontti ja lyhyet rivit eivät tarvitse kovin suurta rivikorkeutta. \end{koodilohko} \begin{tulos} \fontsize{8bp}{11bp}\selectfont Tässä on pienehkö leipätekstin fonttikoko ja suhteellisen suuri rivikorkeus. Pitkät rivit vaativat suuremman rivikorkeuden kuin lyhyet rivit. \fontsize{16bp}{17bp}\selectfont Tässä on melko suuri fontti ja suhteellisen pieni rivikorkeus. Suuri fontti ja lyhyet rivit eivät tarvitse kovin suurta rivikorkeutta. \end{tulos} \caption{Fontin koon ja rivikorkeuden asettaminen ja vaikutus} \label{esim/rivikorkeus} \end{esimerkki*} Toinen tekstirivien peruslinjojen väliseen etäisyyteen vaikuttava asetus on \komento{baselinestretch}. Se on desimaalilukukerroin, jolla nykyinen rivikorkeus kerrotaan. Kerroin asetetaan helpoimmin komennolla \komento{linespread}.\footnote{Toinen tapa: \koodi{\keno renewcommand\{\keno baselinestretch\}\{kerroin\}}} \komentoi{fontsize} \komentoi{linespread} \komentoi{selectfont} \begin{koodilohkosis} \fontsize{10bp}{12bp} \linespread{1.3} \selectfont \end{koodilohkosis} \noindent Edellä oleva esimerkki asettaa fontin kooksi 10 pistettä ja rivikorkeudeksi 12 pistettä. \komento{linespread}\-/ komennolla asetetun kertoimen vuoksi rivien peruslinjojen väliseksi etäisyydeksi tulee lopulta 1,3 kertaa 12 pistettä eli 15,6 pistettä. Ei ole väliä, kummassa järjestyksessä \komento{fontsize}- ja \komento{linespread}\-/ komennot annetaan. Asetukset tulevat voimaan vasta \komento{selectfont}\-/ komennon jälkeen. Käytännössä \komento{linespread} sopii rivikorkeuden yleistason hienosäätöön esimerkiksi dokumentin esittelyosassa. Tilannekohtainen rivikorkeus on parasta asettaa \komento{fontsize}\-/komennolla. \subsection{Kirjainperheen ja -leikkauksen valitseminen} \label{luku/fontit-korkea} Latexissa on joukko korkean tason fonttikomentoja, jotka on tarkoitettu käytettäväksi sen jälkeen, kun matalan tason asetukset on kerran määritetty. Taulukoissa \ref{tlk/komennot-kirjainperhe} ja \ref{tlk/komennot-kirjainleikk} ovat komennot kirjainperheen ja kirjainleikkauksen valintaan. Joka rivillä ensin mainittu komento (esim. \komento{rmfamily}) vaikuttaa tekstiin, joka tulee komennon jälkeen. Vaikutusalue rajoittuu nykyisen ympäristön (luku \ref{luku/ympäristöt}) sisään tai aaltosulkeilla (luku \ref{luku/aaltosulkeet}) rajatun alueen sisään. Rivillä toisena olevalle komennolle (esim. \komentox{textrm}) annetaan yksi argumentti, ja komennon vaikutus koskee vain argumenttina olevaa tekstiä. \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[3]{% \komento{#1} & \komento{#2}\komentoarg{\dots} & #3 \\} \begin{tabular}{lll} \toprule \multicolumn{2}{l}{\ots{Komennot}} & \ots{Kirjainperhe} \\ \midrule \rivi {rmfamily} {textrm} {\textrm{perus, yleensä antiikva, serif, roman}} \rivi {sffamily} {textsf} {\textsf{groteski, sans serif, gothic}} \rivi {ttfamily} {texttt} {\texttt{tasalevyinen, typewriter}} \bottomrule \end{tabular} }{ \caption{Komennot kirjainperheen valintaan. Perustila on \komento{rmfamily}} \label{tlk/komennot-kirjainperhe} } \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[3]{% \komento{#1} & \komento{#2}\komentoarg{\dots} & #3 \\} \begin{tabular}{lll} \toprule \multicolumn{2}{l}{\ots{Komennot}} & \ots{Kirjainleikkaus} \\ \midrule \rivi {mdseries} {textmd} {\textmd{tavallinen vahvuus, medium}} \rivi {bfseries} {textbf} {\textbf{lihavoitu, bold}} \midrule \rivi {upshape} {textup} {\textup{pystyasento, tavallinen}} \rivi {itshape} {textit} {\textit{kursiivi, italic}} \rivi {slshape} {textsl} {\textsl{kalteva, slanted, oblique}} \rivi {scshape} {textsc} {\textsc{pienversaali, kapiteeli, small caps}} \rivi {swshape} {textsw} {\textsw{Koristeellinen, swash}} \bottomrule \end{tabular} }{ \caption{Komennot kirjainleikkauksen valintaan saman kirjainperheen sisällä. Perustila on \komento{mdseries} ja \komento{upshape}} \label{tlk/komennot-kirjainleikk} } Taulukossa \ref{tlk/komennot-kirjainperhe} ovat kirjainperhekomennot, jotka vaihtavat koko perheen kaikkine leikkauksineen. Taulukon \ref{tlk/komennot-kirjainleikk} komennot puolestaan valitsevat toisen leikkauksen samasta perheestä. Kirjainleikkauksen asetukset jaetaan kahteen ryhmään: \englantik{series} 'sarja' ja \englantik{shape} 'muoto'. Kummastakin ryhmästä on valittuna aina yksi ominaisuus, eli samanaikaisesti voi olla voimassa esimerkiksi \komento{bfseries} (\textbf{lihavoitu}) ja \komento{itshape} (\textit{kursiivi}), ja tuloksena on \textbf{\itshape lihavoitua kursiivia}. Useimmissa fonteissa kursiivileikkaus (\komento{itshape}) ja kalteva leikkaus (\komento{slshape}) tuottavat saman lopputuloksen, mutta käsitteellisesti ne ovat eri asia. Kursiivi on aina muodoltaan erilainen leikkaus, joka hieman mukailee käsialakirjoitusta, joskaan kirjaimia ei ole sidottu toisiinsa. Sen sijaan kalteva leikkaus on tavallisen eli pystyasentoisen leikkauksen kallistettu versio. Jos kallistus on kirjainmuotoilijan piirtämä, kursiivista poikkeava leikkaus eli ihan oma fonttitiedostonsa, kallistettu leikkaus täytynee erikseen määrittää osaksi kirjainperhettä \koodi{Slanted\-Font}\-/ asetuksella (esimerkki \ref{esim/fontit-leik-omin}). Kallistuksen voi tehdä myös keinotekoisesti Latexissa. Katso lisätietoa luvusta \ref{luku/fontit-venytys}. Jotkut \englanti{Open Type} \=/fontit sisältävät erillisen koristeellisen tyylin (\komento{swshape}), joka voi sisältyä esimerkiksi kursiivileikkaukseen ja erityisesti versaalikirjaimiin mutta joka täytyy kytkeä erikseen päälle. Sellaisen saa määritettyä osaksi kirjainperhettä käyttämällä valitsimia \koodi{Swash\-Font} ja \koodi{Swash\-Fea\-tures} (esimerkki \ref{esim/fontit-leik-omin}) seuraavalla tavalla: \komentoi{setmainfont} \begin{koodilohkosis} \setmainfont{Garamond Libre}[ SwashFont={* Italic}, % kursiivileikkaus SwashFeatures={Style=Swash}] % koristeellinen swash-tyyli \end{koodilohkosis} \noindent Komennot fontin koon valintaan ovat taulukossa \ref{tlk/fonttikokokomennot}. Taulukko kertoo myös, mitä fontin pistekokoa (pt) mikäkin komento tarkoittaa oletuksena. Oletus riippuu Latexin dokumenttiluokkien (luku \ref{luku/perusdokumenttiluokat}) fonttikokovalitsimista \koodi{10pt}, \koodi{11pt} ja \koodi{12pt}. \leijutlk{ \begin{tabular}{lr@{}lr@{}lr@{}l} \toprule \ots{Komento} & \multicolumn{2}{c}{\ots{10pt}} & \multicolumn{2}{c}{\ots{11pt}} & \multicolumn{2}{c}{\ots{12pt}} \\ \midrule \komento{tiny} & 5 && 6 && 6 \\ \komento{scriptsize} & 7 && 8 && 8 \\ \komento{footnotesize} & 8 && 9 && 10 \\ \komento{small} & 9 && 10 && 10&,95 \\ \komento{normalsize} & 10 && 10&,95 & 12 \\ \komento{large} & 12 && 12 && 14&,4 \\ \komento{Large} & 14&,4 & 14&,4 & 17&,28 \\ \komento{LARGE} & 17&,28 & 17&,28 & 20&,74 \\ \komento{huge} & 20&,74 & 20&,74 & 24&,88 \\ \komento{Huge} & 24&,88 & 24&,88 & 24&,88 \\ \bottomrule \end{tabular} }{ \caption{Fonttien oletuspistekoot dokumenttiluokkien valitsimilla \koodi{10pt}, \koodi{11pt} ja \koodi{12pt}} \label{tlk/fonttikokokomennot} } \ymparistoi{rmfamily} \ymparistoi{sffamily} \ymparistoi{ttfamily} \ymparistoi{mdseries} \ymparistoi{bfseries} \ymparistoi{upshape} \ymparistoi{itshape} \ymparistoi{slshape} \ymparistoi{swshape} \ymparistoi{scshape} \ymparistoi{tiny} \ymparistoi{scriptsize} \ymparistoi{footnotesize} \ymparistoi{small} \ymparistoi{normalsize} \ymparistoi{large} \ymparistoi{Large} \ymparistoi{LARGE} \ymparistoi{huge} \ymparistoi{Huge}% Kaikille korkean tason fonttikomennoille on olemassa myös samanniminen ympäristönsä, esimerkiksi \ymparisto{rmfamily}, \ymparisto{bfseries}, \ymparisto{itshape} tai \ymparisto{small}. Seuraavassa esimerkissä on kaksi fontteihin vaikuttavaa ympäristöä sisäkkäin. \ymparistoi{footnotesize} \ymparistoi{scshape} \begin{koodilohkosis} \begin{footnotesize} \begin{scshape} Tämä teksti on pientä pienversaalia. \end{scshape} \end{footnotesize} \end{koodilohkosis} \begin{tulossis} \begin{footnotesize} \begin{scshape} Tämä teksti on pientä pienversaalia. \end{scshape} \end{footnotesize} \end{tulossis} \subsection{Fonttikoon määrittely suhteellisesti} \label{luku/fontti-suhteellinen} Dokumentin fonttien koot on helpointa määrittää siten, että asettaa ensin peruskirjainperheen koon ja antaa muiden fonttien määräytyä suhteessa siihen. Esimerkki \ref{esim/fontti-suhteellinen} selventää, kuinka se tapahtuu. Alussa otetaan käyttöön dokumenttiluokka \luokka{article} ja annetaan sille valitsin \koodi{10pt}, joka määrittää fonttikooksi 10 pistettä. Se on dokumenttiluokan oletusasetus, jota ei tarvitsisi edes kirjoittaa näkyviin. Esimerkin toisella rivillä ladataan \paketti{fontspec}\-/ paketti. Peruskirjainperheen (rivi~4) koko skaalataan 1,4\-/kertaiseksi, eli pistekooksi tulee 1,4 kertaa 10 pistettä eli 14 pistettä (pt). Normaalikokoinen peruskirjainperhe on ainoa, jonka pistekoko tiedetään. Kaikkien muiden koot määräytyvät suhteessa tähän. Groteski eli pääteviivaton kirjainperhe (rivi~5) ja tasalevyinen perhe (rivi~6) skaalataan samankorkuiseksi kuin perusperhe. Vertailukohtana ovat gemenat eli pienaakkoset (\koodi{MatchLowercase}). Näiden kahden kirjainperheen pistekokoa ei tiedetä. Se ei välttämättä ole sama kuin perusfontissa, koska fonttien pistekoko mitataan ylimmän ja alimman kohdan välillä ja koska fonttien mittasuhteet ovat erilaisia. \begin{esimerkki*} \komentoi{documentclass} \komentoi{usepackage} \pakettii{fontspec} \komentoi{setmainfont} \komentoi{setsansfont} \komentoi{setmonofont} \komentoi{linespread} \luokkai{article} \begin{koodilohko} \documentclass[10pt]{article} % 10pt on oletus \usepackage{fontspec} \setmainfont{TeX Gyre Termes}[Scale=1.4] \setsansfont{TeX Gyre Heros} [Scale=MatchLowercase] \setmonofont{TeX Gyre Cursor}[Scale=MatchLowercase] \linespread{1.45} \end{koodilohko} \caption{Fonttikokojen määrittäminen suhteessa peruskirjainperheeseen} \label{esim/fontti-suhteellinen} \end{esimerkki*} Viimeisellä rivillä oleva \komento{linespread}\-/ komento on tärkeä. Se asettaa rivikorkeuden kertoimeksi 1,45. Kertoimen täytyy olla vähintään yhtä suuri kuin peruskirjainperheen skaalauskerroin (1,4), jotta rivivälit ovat riittävän suuret. Näiden asetusten jälkeen dokumentissa käytetään korkeamman tason komentoja fonttien valintaan, esimerkiksi fonttikoon valintakomentoja \komento{small}, \komento{normalsize}, \komento{large} (taulukko \ref{tlk/fonttikokokomennot}). Edellä kuvatussa suhteellisessa kirjainperheiden koon määrittelyssä on sellainen ongelma tai kummallisuus, että Latex koko ajan luulee, että peruskirjainperhe on normaalikokoisena 10 pistettä (pt). Latexin matalan tason fonttikomennot eivät tiedä kirjainperheen skaalauskertoimesta, ja siksi esimerkiksi komentojen \komentoi{fontsize} \komentoi{selectfont} \begin{koodilohkosis} \fontsize{10bp}{12bp} \selectfont \end{koodilohkosis} \noindent tuloksena ei todellisuudessa ole 10 pisteen (bp) fontti, vaan mukaan lasketaan myös kirjainperheen skaalauskerroin. Tämän vuoksi \komento{fontsize}\-/ komennon käyttö menee aika oudoksi. Argumenttina annettu kokomitta ei pidä paikkaansa. Jos korkean tason fonttikokokomentojen (taulukko \ref{tlk/fonttikokokomennot}) lisäksi tarvitaan jotakin muuta kokoa, voisi mahdollisesti \komento{fontsize}\-/ komennon sijasta käyttää \paketti{fontspec}\-/paketin tarjoamaa komentoa ja tilanteeseen sopivaa skaalauskerrointa esimerkiksi seuraavalla tavalla: \komentoi{addfontfeatures} \begin{koodilohkosis} {\addfontfeatures{Scale=3.2} Poikkeuksellisen isoa tekstiä} \end{koodilohkosis} \noindent Jos edellä mainitut kummallisuudet eivät häiritse eikä ole tarvetta määritellä fontteja tarkasti tietyn pistekoon mukaiseksi, on suhteellinen määrittelytapa todella helppo. Kaikki dokumentin fontit määräytyvät perusfontin skaalauskertoimen kautta. Tämä tapa sopii hyvin varsinkin dokumentin sisällön kirjoittamisvaiheeseen, jossa ehkä halutaan vain nopeasti asettaa dokumentti suurin piirtein järkevän näköiseksi. Myöhemmin voi määrittää koot tarkemmin niin sanotun absoluuttisen menetelmän avulla, jota käsitellään seuraavassa alaluvussa. \subsection{Fonttikoon määrittely absoluuttisesti} \label{luku/fontti-absoluuttinen} Absoluuttinen fonttien koonmääritystapa tarkoittaa sitä, että koot asetetaan tietyn kokoiseksi käyttämällä esimerkiksi pistemittoja ja että kirjaimet myös päätyvät lopulliseen dokumenttiin juuri sen kokoisena. Tämä tapa on myös teknisesti eheä, eli Latexin eri osat ovat samaa mieltä siitä, minkäkokoisesta fontista on kyse. Näin ei ollut suhteellisen tavan kanssa (luku \ref{luku/fontti-suhteellinen}). Joskus oppilaitoksen, yhtiön tai muun julkaisijan ohjeissa määritellään tarkasti, mitä fontteja käytetään ja mikä on leipätekstin ja otsikoiden fonttikoko. Silloin tarvitaan tässä luvussa kuvattua tapaa fonttien asettamiseen. \begin{esimerkki*} \komentoi{documentclass} \komentoi{usepackage} \pakettii{fontspec} \komentoi{setmainfont} \komentoi{setsansfont} \komentoi{setmonofont} \komentoi{newfontfamily} \komentoi{linespread} \komentoi{renewcommand} \komentoi{footnotesize} \komentoi{small} \komentoi{normalsize} \komentoi{large} \komentoi{Large} \begin{koodilohko} \documentclass{article} \usepackage{fontspec} % Leipätekstiin samankokoiset fontit \setmainfont{TeX Gyre Termes} \setsansfont{TeX Gyre Heros} [Scale=MatchLowercase] \setmonofont{TeX Gyre Cursor}[Scale=MatchLowercase] % Muualle sans ja mono ilman skaalausta \newfontfamily{\sffamilyabs}{TeX Gyre Heros} \newfontfamily{\ttfamilyabs}{TeX Gyre Cursor} \linespread{1} % ei välttämättä tarvita % Kaikki tarvittavat fonttikoot ja komennot \renewcommand{\footnotesize}{\fontsize{10bp}{12bp}\selectfont} \renewcommand{\small} {\fontsize{12bp}{14bp}\selectfont} \renewcommand{\normalsize} {\fontsize{14bp}{17bp}\selectfont} \renewcommand{\large} {\fontsize{17bp}{19bp}\selectfont} \renewcommand{\Large} {\fontsize{20bp}{22bp}\selectfont} \normalsize % jotta tulee heti voimaan eikä vasta tekstiosassa \end{koodilohko} \caption{Fonttikokojen määrittäminen pistekoon avulla} \label{esim/fontti-absoluuttinen} \end{esimerkki*} Esimerkistä \ref{esim/fontti-absoluuttinen} selviää perusajatus. Peruskirjainperhe (rivi~5) otetaan käyttöön ilman skaalausta (\koodi{Scale=1}), minkä vuoksi koon voi jatkossa asettaa täsmälleen kohdalleen \komento{fontsize}\-/komennolla. Samaa ei tehdä groteskin eikä tasalevyisen fontin kanssa (rivit 6--7), vaan käytetään skaalausta \koodi{MatchLowercase}, jotta tekstikappaleessa kaikki kirjainperheet näyttävät samankokoisilta. Tässä menetetään mahdollisuus määrittää näiden kirjainperheiden koko täsmällisesti pistemitan avulla. Jos siihen on tarvetta esimerkiksi otsikoissa, voidaan käyttää rivien 10--11 komentoja. Niillä luodaan uudet kirjainperheet, jotka ovat käytännössä samoja mutta ilman skaalausta. Uusien skaalaamattomien kirjainperheiden komentojen nimiksi on valittu \komentox{sf\-fam\-i\-ly\-abs} ja \komentox{tt\-fam\-i\-ly\-abs} (vrt. \komento{sffamily} ja \komento{ttfamily}, taulukko \ref{tlk/komennot-kirjainperhe}), ja näillä komennoilla kirjainperheet kytketään päälle. Jos esimerkiksi jonkin julkaisun vaatimuksiin kuuluu, että otsikossa täytyy olla 20 pisteen lihavoitu TeX Gyre Heros \=/kirjainleikkaus, voi esimerkissä \ref{esim/fontti-absoluuttinen} olevien asetusten pohjalta antaa otsikon ulkoasun (luku \ref{luku/otsikot-ulkoasu}) määrittelyn yhteydessä seuraavat komennot: \komentoi{Large} \komentoi{bfseries} \begin{koodilohkosis} \sffamilyabs\Large\bfseries \end{koodilohkosis} \noindent Esimerkin \ref{esim/fontti-absoluuttinen} riveillä 16--20 määritellään uudelleen Latexin korkean tason komentoja, joilla fonttikoot asetetaan. Oletusarvot tulevat dokumenttiluokasta (luku \ref{luku/dokumenttiluokat}), mutta jos ne eivät ole sopivia, täytyy vähintäänkin määritellä komento \komento{normalsize} mutta sen lisäksi kaikki ne koot, joita omassa dokumentissa tarvitaan. Tässä esimerkissä normaali koko asetetaan 14 pisteen kokoiseksi. Jokaiselle fonttikoolle määritetään riveillä 16--20 myös oma rivikorkeus, ja se on tarkoitus asettaa sopivaksi juuri kyseiselle koolle. Rivikorkeuteen vaikuttaa myös kerroin \komento{baselinestretch}, joka asetetaan komennolla \komento{linespread}. Sitä ei välttämättä tarvitse käyttää, koska kirjainperheitä ei ole skaalattu ja koska rivikorkeus asetetaan aina \komento{fontsize}\-/komennolla. \komento{linespread} on kuitenkin kätevä komento rivikorkeuden säätämiseen yleisesti kaikkialla. Fonttikokojen määrittelyn lopuksi rivillä 22 suoritetaan komento \komento{normalsize}, jotta se tulee heti voimaan. Dokumentin esittelyosassa voidaan käyttää fonttikokoon viittaavia mittayksiköitä em ja ex, ja ne viittaavat nyt tähän kokoon. \komento{normalsize}\-/ komento suoritetaan kyllä myöhemmin automaattisesti dokumentin tekstiosan eli \ymparistox{document}\-/ ympäristön alussa. Edellä kuvatun absoluuttisen koonmääritystavan etuna on se, että kirjoittaja hallitsee fonttien kokoa ja rivikorkeuksia tarkasti ja että julkaisuun saadaan juuri ne mitat, jotka halutaan tai vaaditaan. Tapa on myös teknisesti eheä eli toimii Latexin sisäisen logiikan näkökulmasta oikein. Haittana voi pitää sitä, että kaikki koot täytyy määritellä erikseen. \subsection{Lualatex, Xelatex ja fonttitekniikka} \label{luku/luatex-xetex-fonttitekn} Kääntäjät Lualatex ja Xelatex (Luatex ja Xetex) käsittelevät fontteja sisäisesti eri tavalla. Ne esimerkiksi hyväksyvät kirjainperheiden tai \=/leikkausten nimet hieman toisistaan poikkeavalla tavalla, ja kääntäjää vaihtaessa saattaa joskus huomata, ettei jotakin kirjainperhettä tai yksittäistä leikkausta enää löydykään. Ongelma korjaantuu nimeämällä kirjainperheen tai \=/leikkauksen eri tavalla. Yleispätevää ohjetta nimeämiseen on vaikeaa antaa, mutta jos tulee ongelmia, kannattaa fonttitiedostoista tutkia kirjainperheelle tai \=/leikkaukselle annettuja nimiä. Se onnistuu käyttöjärjestelmän komentotulkissa \koodi{otfinfo}\-/ komennolla, joka tulostaa jotakin esimerkin \ref{esim/otfinfo-fonttinimiä} kaltaista. Kokeilemalla tulosteessa olevia nimiä saa kyllä fontit toimimaan. \begin{esimerkki*} \begin{koodilohko} Family: TeX Gyre Pagella Subfamily: Regular Full name: TeXGyrePagella-Regular PostScript name: TeXGyrePagella-Regular Preferred family: TeX Gyre Pagella Preferred subfamily: Regular \end{koodilohko} \caption{\koodi{otfinfo}\-/ komennon tuloste kertoo fontista muun muassa kirjainperheen ja \=/leikkauksen nimiä} \label{esim/otfinfo-fonttinimiä} \end{esimerkki*} \begin{koodilohkosis} otfinfo -i texgyrepagella-regular.otf \end{koodilohkosis} \noindent Lualatex (Luatex) käyttää ulkoisia tekniikoita fonttien latomiseen eli ''renderöimiseen'', ja näitä tekniikoita voi vaihtaa fontin määrittelemisen yhteydessä. Eri vaihtoehtojen kokeilu voi olla tarpeen, jos oletusasetuksilla ei synny toivottua jälkeä. Asetuksia muutetaan käyttämällä valitsinta \koodi{Renderer} seuraavan esimerkin tavoin: \komentoi{setmainfont} \begin{koodilohkosis} \setmainfont{…}[Renderer=Node] \end{koodilohkosis} \noindent Tavallisimpia \koodi{Renderer}\-/ valitsimen arvoja ovat \koodi{\mbox{Node}}, \koodi{Harf\-Buzz} ja \koodi{Open\-Type}. Lisätietoa voi lukea \paketti{fontspec}\-/ paketin ohjekirjan luvusta, joka käsittelee Luatexin erityispiirteitä. Myös Xelatexissa (Xetex) on fontteihin liittyviä ominaisuuksia, joita ei muissa kääntäjissä ole. Niistäkin kerrotaan \paketti{fontspec}\-/ paketin ohjekirjassa. \subsection{Fonttien oletusasetuksia} \label{luku/fontit-oletusasetukset} Oletuksena Latex\-/dokumentin peruskirjainperheessä (\komento{setmainfont}) ja pääteviivattomassa kirjainperheessä (\komento{setsansfont}) ovat päällä muun muassa seuraavat asetukset:% \begin{koodilohkosis} Ligatures={TeX, Common} HyphenChar=- \end{koodilohkosis} \noindent \koodi{TeX}\-/ligatuurit tarkoittavat lainausmerkkien ja ajatusviivojen tuottamiseen tarkoitettuja Texin merkintätapoja kuten \koodi{''} ja \koodi{\==}, joita käsitellään luvuissa \ref{luku/lainausmerkit} ja \ref{luku/yhdys-ajatus-miinus}. Ne eivät ole varsinaisia luonnollisen kielen eivätkä typografisia ligatuureja vaan kuuluvat ainoastaan Tex\-/kielen merkintätapoihin. \koodi{Common}\-/ ligatuurit sen sijaan ovat oikeita typografisia ligatuureja kuten fi, ff ja fl, ja niitä käsitellään tarkemmin luvussa \ref{luku/typo-liga}. Molemmat edellä mainitut ligatuurityypit saa pois päältä seuraavalla asetuksella: \begin{koodilohkosis} Ligatures={TeXReset, NoCommon} \end{koodilohkosis} \noindent Valitsin \koodi{Hyphen\-Char} asettaa tavutusmerkin kyseiselle kirjainperheelle. Oletuksena se on yhdysmerkki (\=/), mutta merkin vaihtaminen toimii vain Xelatex\-/kääntäjän kanssa, ei esimerkiksi Lualatexilla. Sen sijaan kaikilla kääntäjillä tavutuksen voi kytkeä kirjainperheeltä pois, kun antaa arvoksi \koodi{None}. Tavutusta käsitellään perusteellisemmin luvussa \ref{luku/tavutus}. Tasalevyinen kirjainperhe (\komento{setmonofont}) toimii oletuksena hieman eri tavalla. Niissä muun muassa ei ole lainausmerkkien ja ajatusviivojen kirjoittamiseen tarkoitetut Tex\-/ligatuurit päällä. Oletusasetuksia ovat muun muassa seuraavat: \begin{koodilohkosis} Ligatures=Common HyphenChar=None \end{koodilohkosis} \noindent Yleensä tasalevyisestä kirjainperheestä kannattaa kytkeä typografiset ligatuurit pois päältä asetuksella \koodi{Liga\-tures=\katk No\-Common}. Tasalevyisen fontin ajatukseen nimenomaan kuuluu, että merkit ovat samanlevyisiä eikä yhden merkin tilaan sovi sulloa useampaa kirjainta. Kaikki tasalevyiset kirjainperheet eivät edes sisällä ligatuurimerkkejä, joten ominaisuus näyttää olevan automaattisesti pois päältä. Varmuuden vuoksi on kuitenkin hyvä lisätä asetus \koodi{Liga\-tures=\katk No\-Common} tasalevyiselle perheelle. Oletuksena tavutus on kytketty pois päältä tasalevyiseltä kirjainperheeltä, koska sitä käytetään tavallisesti tietokoneisiin liittyvien koodien tai vastaavien ilmausten latomiseen, eikä niitä haluta yleensä tavuttaa. Tavutuksen saa kuitenkin päälle Xelatexissa määrittämällä tavutusmerkiksi esimerkiksi yhdysmerkin (\koodi{Hyphen\-Char=-}) tai kaikilla kääntäjillä poistamalla tasalevyisen kirjainperheen oletusasetukset ennen sen määrittelyä seuraavasti: \komentoi{defaultfontfeatures} \komentoi{ttfamily} \komentoi{setmonofont} \begin{koodilohkosis} \defaultfontfeatures[\ttfamily]{} \setmonofont{…}[…] \end{koodilohkosis} \noindent Komennolla \komento{defaultfontfeatures} voi asettaa (joidenkin) kirjainperheiden oletusasetukset, kun komennon suorittaa ennen kirjainperheiden määrittelyä. \komentoi{defaultfontfeatures} \komentoi{rmfamily} \komentoi{sffamily} \begin{koodilohkosis} \defaultfontfeatures[\rmfamily,\sffamily]{Ligatures={TeX, Common}, Numbers=Lowercase} \end{koodilohkosis} \noindent Komennon valinnaisella argumentilla voi rajata, mitä kirjainperheitä oletusasetukset koskevat. Valinnaiseen argumenttiin kirjoitetaan yksi tai useampia pilkulla erotettuja komentoja, joilla kirjainperheet kytketään päälle: \komento{rmfamily}, \komento{sffamily}, \komento{ttfamily} (taulukko \ref{tlk/komennot-kirjainperhe}, s.~\pageref{tlk/komennot-kirjainperhe}) tai komennolla \komento{newfontfamily} määritelty fonttikomento (luku \ref{luku/fontin-valinta}). \subsection{Typografiset ligatuurit} \label{luku/typo-liga} Typografiset ligatuurit ovat fontissa olevia yhdistelmämerkkejä, joissa on typografisista syistä yhdistetty kaksi tai useampia kirjaimia yhteen merkkiin.\footnote{Typografisten ligatuurien lisäksi on olemassa myös luonnollisten kielten ligatuureja, jotka muodostavat kieleen kuuluvan kirjaimen, kuten æ norjan kielessä. Niillä on jokin luonnolliseen kieleen liittyvä merkitys, eikä eri merkkejä ei ole yhdistetty typografisista syistä.} Tällaisia ligatuureja käytettiin jo metalliladonnassa, eli samassa metallikirjakkeessa saattoi olla enemmän kuin yksi kirjain. Typografisten ligatuurien tarkoituksena on tuottaa tyylikkäämpi lopputulos kuin saataisiin erillisten kirjainten avulla. Syynä on esimerkiksi se, että erilliset peräkkäiset kirjaimet eivät ole aina keskenään yhteensopivia. Kirjainten välistys voi olla ongelmallista: sopivalle etäisyydelle asetettaessa kirjainten osat voivat mennä rumannäköisesti päällekkäin. Riippuu fontista, mitkä ligatuurit ovat tarpeellisia ja mitkä ligatuurimerkit on ylipäätään toteutettu fontin merkistöön. Tavallisia antiikvojen ligatuureja ovat fi, ff, ffi, fl, ffl, fj ja ffj, mutta jotkin fontit sisältävät muitakin. Kuvaan \ref{kuva/ligatuurit} on koottu esimerkkejä. \leijukuva{ \rmfamily \addfontfeatures{Scale=3.4, Ligatures={Common, Historic, Discretionary}} fi ff ffi fl ffl fj ffj Th st ct }{ \caption{Tavalliset f\=/alkuiset typografiset ligatuurit, vähän harvinaisempi Th sekä historialliset ligatuurit st ja ct} \label{kuva/ligatuurit} } Latex hoitaa tavallisten typografisten ligatuurien latomisen automaattisesti, eli lähdedokumenttiin ei kannata kirjoittaa Unicode\-/merkistön typografisia ligatuurimerkkejä (esimerkiksi \uctunnus{u+fb01 latin small ligature fi}) vaan ihan tavallisia erillisiä kirjaimia. \englanti{Open Type} \=/fontin suunnittelija on päättänyt meidän puolestamme, mitkä kirjainyhdistelmät on parasta latoa ligatuurin avulla, ja oletusasetuksilla Latex noudattaa niitä ohjeita. Jos kuitenkin yksittäisen ligatuurin muodostumisen haluaa estää, voi kirjainten väliin kirjoittaa komennon \komento{textcompwordmark}, joka tekee näkymättömän, juuri tähän tarkoitukseen olevan merkin \uctunnus{u+200c zero width non-joiner}. \komentoi{textcompwordmark} \begin{koodilohkosis} fi f\textcompwordmark i \end{koodilohkosis} \begin{tulossis} fi f\textcompwordmark i \end{tulossis} \noindent Mikäli tavallisia ligatuureja ei halua käyttöön lainkaan, on parasta valita jo kirjainperheen tai \=/leikkauksen käyttöönotossa asetus \koodi{Liga\-tures=\katk No\-Com\-mon}. Väliaikaisesti fontin asetuksiin voi vaikuttaa komennolla \komento{addfontfeatures}, joka sekin on \paketti{fontspec}\-/pakettiin sisältyvä komento. \komentoi{addfontfeatures} \begin{koodilohkosis} {\addfontfeatures{Ligatures=NoCommon} fi fl} \end{koodilohkosis} \noindent Tavallisten ligatuurien lisäksi \englanti{Open Type} \=/fontit voivat sisältää myös harvinaisempia ligatuureja, jotka täytyy erikseen kytkeä päälle. Niiden tarkoituksena on esimerkiksi erityinen koristeellisuus tai historiallisen kirjainleikkauksen jäljittely. Harvinaisia ligatuureja ei ole tarkoitus käyttää joka tilanteessa vaan ainoastaan erityisestä syystä. Kuvassa \ref{kuva/ligatuurit} ja tässäkin tekstikappaleessa olevat {% \newcommand{\hlig}[1]{{\addfontfeatures{Ligatures=Historic}#1}}% \hlig{st}- ja \hlig{ct}\-/ligatuurit% } on saatu fontin asetuksella \koodi{Liga\-tures=\katk His\-toric}. Joissakin fonteissa sama tehdään asetuksella \koodi{Liga\-tures=\katk Discretionary}. Nämä ligatuurit sopivat niin sanotun humanistisen antiikvaperheen (mm. \englanti{Adobe Jenson}) ja renessanssityylisen sisällön kanssa käytettäväksi. Teknisesti on mahdollista kytkeä päälle useitakin ligatuurityyppejä samanaikaisesti: \begin{koodilohkosis} Ligatures={TeX, Required, Common, Historic, Discretionary, Contextual} \end{koodilohkosis} \noindent Tuskin mikään fontti sisältää kaikkia ligatuurityyppejä, eikä se ole tarkoituskaan. Jotkin ligatuurit kuuluvat vain tiettyyn typografian aikakauteen tai kirjaintyyliin. Open Type \=/fontin ominaisuuksia voi selvittää käyttöjärjestelmän komentotulkissa komennolla \koodi{otfinfo}. Komennon argumentiksi annetaan muun muassa fonttitiedoston nimi. \begin{koodilohkosis} $ otfinfo -f LibertinusSerif-Regular.otf | grep Ligatures dlig Discretionary Ligatures hlig Historical Ligatures liga Standard Ligatures \end{koodilohkosis} \subsection{Numeroiden muoto} \label{luku/fontit-numerot} Varsinkin kirjatypografiassa on tavallista käyttää pääasiassa gemenanumeroita ({\gemenanum 1967}) eikä versaalinumeroita ({\versaalinum 1967}), koska gemenanumerot sopivat leipätekstin gemenakirjainten kanssa paremmin yhteen. Versaalinumerot puolestaan erottuvat paremmin ja sopivat esimerkiksi taulukoihin, joissa on paljon lukuja. Näihin asetuksiin vaikutetaan fontin asetuksella \koodi{Numbers}. Tosin kaikissa fonteissa ei gemenanumeroita edes ole. \begin{koodilohkosis} Numbers=Lowercase % gemenanumerot Numbers=Uppercase % versaalinumerot (oletus) \end{koodilohkosis} \noindent Jotkin koodi\-/ilmaukset sisältävät versaalikirjaimia ja numeroita sekaisin. Gemenanumerot eivät kuitenkaan sovi yhteen versaalikirjainten kanssa, koska merkkien kokoero on häiritsevän suuri. Ei siis näin: RJ45, R2D2. Gemenanumeroiden kanssa täytyy käyttää pienversaalia eli kapiteelia: \textsc{rj45}, \textsc{r2d2}. Toinen vaihtoehto on käyttää pelkästään versaaleja: {\versaalinum RJ45, R2D2}. Silloin kun käytetään numeroita teknisten koodien ilmaisemiseen, voi olla tarpeen merkitä numero nolla poikkiviivalla ({\addfontfeatures{Numbers={Uppercase, SlashedZero}} 0}), jottei se sekoitu O\=/kirjaimeen. Nollaan saadaan poikkiviiva seuraavalla asetuksella, jos vain fontissa on tämä ominaisuus: \begin{koodilohkosis} Numbers=SlashedZero \end{koodilohkosis} \noindent Kun numeroita ladotaan taulukkoon, voidaan haluta käyttää tasalevyisiä numeroita, jotta ne sijoittuvat allekkain samalle linjalle. Joissakin fonteissa on tarjolla tavallisten vaihtelevan levyisten numeroiden lisäksi myös tasalevyiset. Numeroiden leveyteen vaikutetaan seuraavilla asetuksilla: \begin{koodilohkosis} Numbers=Monospaced % tasalevyiset numerot Numbers=Proportional % vaihtelevan levyiset numerot (oletus) \end{koodilohkosis} \subsection{Välistykset: harvennus ja tiivistys} \label{luku/fontit-välistys} Fontin kanssa käytettäviä sanavälejä voi säätää \koodi{Word\-Space}\-/ valitsimella, jonka arvoksi annetaan desimaalilukukerroin eli suhdeluku normaaliin verrattuna. Arvona voi olla myös kolme eri kerrointa, jolloin mukana on lisäksi sanavälin venymisen rajat. Tämä asetus on tehtävä kirjainperheen tai \=/leikkauksen määrittelyn yhteydessä, eli se ei toimi esimerkiksi \komento{addfontfeatures}\-/ komennon kanssa. Katso tietoa sanaväleistä myös luvusta \ref{luku/sanaväli} tai tekstikappaleiden latomista käsittelevästä luvusta \ref{luku/kappale}. \noclub[2] Fonttiasetusten valitsimella \koodi{Letter\-Space} säädetään merkkien välistystä eli niiden välistä tyhjää tilaa. Arvoksi annetaan positiivinen tai negatiivinen prosenttiluku, joka ilmaisee alkuperäiseen lisättävän osuuden. Asetus \koodi{Letter\-Space=\katk 6} tuottaa siis kuusi prosenttia leveämmät merkkien välit. Välistyksen tiivistäminen ja harvennuksen typografiaa käsitellään luvussa \ref{luku/korostus-harvennus}, mutta seuraavassa on esimerkki, kuinka ne teknisesti toteutetaan: \komentoi{scshape} \komentoi{addfontfeatures} \begin{koodilohkosis} \scshape {\addfontfeatures{LetterSpace=-2} tiivistys} \\ normaali \\ {\addfontfeatures{LetterSpace=6} harvennus} \end{koodilohkosis} \begin{tulossis} \scshape {\addfontfeatures{LetterSpace=-2} tiivistys} \\ normaali \\ {\addfontfeatures{LetterSpace=6} harvennus} \end{tulossis} \noindent Jos esimerkiksi harvennuksen haluaa automaattisesti mukaan kirjainperheeseen kuuluvaan pienversaaliin, käytetään valitsinta \koodi{Small\-Caps\-Features}: \komentoi{setmainfont} \begin{koodilohkosis} \setmainfont{…}[SmallCapsFeatures={LetterSpace=6}] \end{koodilohkosis} \noindent \koodi{Letter\-Space}\-/ ominaisuus ei ole aina toiminut kunnolla kaikilla Lualatexin fontinladontatekniikoilla. Jos merkkien välistys toimii epätasaisesti, kannattaa kokeilla vaihtaa tekniikkaa \koodi{Renderer}\-/ valitsimella. Lisätietoa on luvussa \ref{luku/luatex-xetex-fonttitekn}. \subsection{Keinotekoinen venytys, lihavointi ja kallistus} \label{luku/fontit-venytys} Valitsimella \koodi{Fake\-Stretch} voi venyttää tai kutistaa merkkejä leveyssuunnassa. Arvoksi annetaan desimaalilukukerroin, joka on suhdeluku alkuperäiseen leveyteen nähden. Seuraavassa havainnollistava esimerkki: \komentoi{addfontfeatures} \begin{koodilohkosis} esimerkki \\ {\addfontfeatures{FakeStretch=1.3} esimerkki} \end{koodilohkosis} \begin{tulossis} esimerkki \\ {\addfontfeatures{FakeStretch=1.3} esimerkki} \end{tulossis} \noindent Kirjainleikkauksen leventäminen tekee tekstistä samalla lihavampaa, koska kirjainten viivat tulevat vahvemmiksi leveyssuunnassa. Korkeussuunnassa vahvuus säilyy ennallaan, joten kirjainten viivakontrasti muuttuu. Kirjainleikkauksen kutistaminen vaikuttaa lihavuuteen päinvastaisesti. Tällainen keinotekoinen fontin korjaileminen ei välttämättä tuota typografisesti kovin hyvää jälkeä mutta voi sopia lievästi käytettynä esimerkiksi otsikoihin. Tämän oppaan tasalevyistä kirjainperhettä (\englanti{Libertinus Mono}) on hieman kutistettu, koska alkuperäinen on kohtuuttoman leveä ({\ttfamily\addfontfeatures{FakeStretch=1} esimerkki}) verrattuna muiden kirjainperheiden leveyteen. Jos kirjainperheeseen ei sisälly sopivaa lihavoitua tai kaltevaa leikkausta, voi sellaiset koettaa tehdä myös keinotekoisesti \koodi{Fake\-Bold}- ja \koodi{Fake\-Slant}\-/ valitsimien avulla. Niille annetaan arvoksi desimaalilukukerroin. Valitettavasti \koodi{Fake\-Bold} toimii vain Xelatex\-/kääntäjän kanssa. \komentoi{addfontfeatures} \begin{koodilohkosis} pysty {\addfontfeatures{FakeSlant=.2} kalteva} \end{koodilohkosis} \begin{tulossis} pysty {\addfontfeatures{FakeSlant=.2} kalteva} \end{tulossis} \noindent Keinotekoisen lihavoinnin tai kallistuksen saa osaksi kirjainperhettä, kun asettaa kirjainperheen määrittelyn yhteydessä halutun kirjainleikkauksen valitsimella \koodi{Bold\-Font} tai \koodi{Slanted\-Font} ja määrittää niille erityisiä ominaisuuksia valitsimella \koodi{Bold\-Fea\-tures} tai \koodi{Slanted\-Fea\-tures}. Seuraava esimerkki asettaa dokumentin perusfontille kaltevan leikkauksen. Tämän jälkeen komennot \komento{slshape} ja \komento{textsl} valitsevat \textsl{kaltevan} leikkauksen, joka on siis eri asia kuin \textit{kursiivi} (\komento{itshape}, \komento{textit}). \komentoi{setmainfont} \begin{koodilohkosis} \setmainfont{TeX Gyre Termes}[ % kirjainperhe SlantedFont={TeX Gyre Termes Regular}, % pystyasentoinen leikkaus SlantedFeatures={FakeSlant=.2}] % keinotekoinen kallistus \end{koodilohkosis} \subsection{Keinotekoinen pienversaali} \label{luku/fontit-keinopienversaali} Moniin fontteihin ei sisälly lainkaan pienversaalia. Jos sellaisen silti haluaa omaan korostusvalikoimaan, voi yrittää pienentää versaalikirjaimet sopivaan kokoon. Seuraavassa esimerkissä versaaleja ensin pienennetään ja sitten venytetään hieman leveyssuunnassa. Lisäksi merkkivälejä harvennetaan lievästi. Käytännössä versaaleja pienentämällä ei saada tyylikästä pienversaalia aikaan, koska merkkien viivoista tulee liian ohuita. \komentoi{textsc} \komentoi{addfontfeatures} \begin{koodilohkosis} \textsc{pienversaali} oikea \\ {\addfontfeatures{ScaleAgain=.68, FakeStretch=1.17, LetterSpace=4} PIENVERSAALI} keinotekoinen \end{koodilohkosis} \begin{tulossis} \textsc{pienversaali} oikea \\ {\addfontfeatures{ScaleAgain=.68, FakeStretch=1.17, LetterSpace=4} PIENVERSAALI} keinotekoinen \end{tulossis} \subsection{Matematiikkatilan fontti} \label{luku/matematiikka-fontit} Latexin matematiikkatilan (luku \ref{luku/matematiikka}) fontti asetetaan eri tavalla kuin normaalin tilan eli tekstitilan fontit. Matematiikkatilaa varten tarvitaan paketti \pakettictan{unicode-math}, joka täytyy ladata muiden matematiikkaan tai fontteihin liittyvien pakettien jälkeen. Paketti tuo komennon \komento{setmathfont}, joka on matematiikkatilan vastine luvussa \ref{luku/fontin-valinta} esitellyille fontinmäärittelykomennoille \komento{setmainfont}, \komento{setsansfont} ja \komento{setmonofont}. Lähes aina on järkevää käyttää matematiikkatilan fontille asetusta \koodi{Scale=\katk MatchLowercase}. Se asettaa fontin samankokoiseksi kuin vastaava peruskirjainperhe. \pakettii{fontspec} \pakettii{unicode-math} \komentoi{setmainfont} \komentoi{setmathfont} \begin{koodilohkosis} \usepackage{fontspec} \usepackage{unicode-math} \setmainfont{TeX Gyre Pagella} % tekstitilan perusfontti \setmathfont{TeX Gyre Pagella Math}[Scale=MatchLowercase] \end{koodilohkosis} \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[3]{\koodi{#1} & \koodi{#2} & \koodi{#3} \\} \begin{tabular}{lll} \toprule \ots{Yleistyyli} & \ots{Lihavointi} & \ots{Pääteviivaton} \\ \midrule \rivi{math-style=ISO} {bold-style=ISO} {sans-style=upright} \rivi{math-style=TeX} {bold-style=TeX} {sans-style=italic} \rivi{math-style=french} {bold-style=upright}{sans-style=literal} \rivi{math-style=upright}{}{} \rivi{math-style=literal}{}{} \bottomrule \end{tabular} }{ \caption{Matematiikkatilan tyyliasetuksia (\paketti{unicode-math}\-/ paketti)} \label{tlk/unicode-math-style} } \noindent Paketin \paketti{unicode-math} lataamisen yhteydessä voi \komento{usepackage}\-/ komennon valinnaisen argumentin avulla vaikuttaa matematiikkatilassa käytettyihin kirjainleikkauksiin. Argumenttiin sopivia valitsimia ovat \koodi{math-style}, \koodi{bold-style} ja \koodi{sans-style}, ja niille sopivia arvoja on koottu taulukkoon \ref{tlk/unicode-math-style}. Asetukset vaikuttavat esimerkiksi siihen, mitä kirjainleikkausta käytetään, kun ladotaan matematiikkatilan latinalaisia tai kreikkalaisia kirjaimia. \begin{koodilohkosis} \usepackage[math-style=ISO]{unicode-math} \end{koodilohkosis} \noindent Matematiikkatilan fontiksi ei kelpaa mikä tahansa, koska tarvittavien matemaattisten symbolien täytyy sisältyä \englanti{Open Type} \=/fontin merkkivalikoimaan. Matematiikkatukea ei todennäköisesti ole, jos sitä ei fontin ominaisuuksien yhteydessä mainita. Fonttitiedoston ominaisuuksia voi tutkia esimerkiksi käyttöjärjestelmän komentotulkissa \koodi{otfinfo}\-/ komennolla: \begin{koodilohkosis} $ otfinfo -s texgyrepagella-math.otf | grep math math Mathematical Alphanumeric Symbols \end{koodilohkosis} \leijutlk{ \providecommand{\rivi}{} \renewcommand{\rivi}[2]{#1 & $\longleftrightarrow$ & #2 \\} \begin{tabular}{r@{\enspace}c@{\enspace}l} \toprule \ots{Leipäteksti} && \ots{Matematiikkatila} \\ \midrule \rivi{Libertinus Serif}{Libertinus Math} \rivi{TeX Gyre Bonum}{TeX Gyre Bonum Math} \rivi{TeX Gyre Pagella}{TeX Gyre Pagella Math} \rivi{TeX Gyre Schola}{TeX Gyre Schola Math} \rivi{TeX Gyre Termes}{TeX Gyre Termes Math} \rivi{DejaVu Serif}{TeX Gyre Dejavu Math} \rivi{Garamond Libre}{Garamond Math} \rivi{Latin Modern Roman}{Latin Modern Math} \bottomrule \end{tabular} }{ \caption{Ulkoasultaan yhteensopivia leipätekstin ja matematiikkatilan fontteja} \label{tlk/matematiikka-fontteja} } \noindent Taulukkoon \ref{tlk/matematiikka-fontteja} on koottu \englanti{Open Type} \=/fontteja, joissa on yhteensopiva leipätekstin ja matematiikkatilan kirjainperhe. Teknisesti kaikkia voi käyttää kaikkien kanssa, mutta on tietenkin toivottavaa, että kirjainleikkaukset sopivat ulkoasultaan yhteen. Kaikki fontit ovat vapaita ja toimitetaan Tex Live \=/jakelun tai käyttöjärjestelmän mukana. \section{Kieli} \label{luku/kieliasetukset} Melkein aina Latex\-/dokumenttiin täytyy ladata kielipaketti ja sen mukana asetukset tiettyjä kieliä varten. Kieliasetukset sisältävät ainakin tavutussäännöt (luku \ref{luku/tavutus}) sekä kielelle mukautettuja nimiä dokumentin eri osille. Esimerkiksi sisällysluettelon ja kirjallisuusluettelon otsikot tulevat kieliasetuksista, samoin leijuvien taulukoiden ja kuvien nimet ''\tablename'' ja ''\figurename''. Myös muita asetuksia tai komentoja saattaa tulla kieliasetusten mukana, mutta ne vaihtelevat eri kielissä. Kielipaketteja on kaksi -- \paketti{babel} ja \paketti{polyglossia} \==, ja kirjoittajan täytyy valita niistä jompikumpi. Pakettien historia ja kehitys on suunnilleen seuraavanlainen: \paketti{babel} on paljon vanhempi, ja monet vanhat oppaat ja esimerkit käsittelevät pelkästään sitä. Kun Latex siirtyi Unicode\-/aikaan Xelatex\-/kääntäjän ja \paketti{fontspec}\-/paketin myötä, \paketti{babel} ei pysynyt kehityksessä mukana. Syntyi \paketti{polyglossia}, joka hallitsi Unicoden sekä muitakin kuin latinalaiseen kirjaimistoon perustuvia kieliä ja kirjoitusjärjestelmiä. \paketti{babel}\-/paketin kehitys ei kuitenkaan pysähtynyt, ja sittemmin myös se on kehittynyt Unicode\-/ aikakaudelle. Suomen kielen kannalta ei ole merkitystä, kumpaa kielipakettia käyttää, mutta meidän näkökulmastamme ''erikoisemmat'' kielet ja kirjoitusjärjestelmät voivat vaatia selvittämistä, kumpi kielipaketti soveltuu paremmin. \paketti{babel} sisältää enemmän ominaisuuksia, esimerkiksi omien komentojen ja muiden viritysten tekemiseen; \paketti{polyglossia} on yksinkertaisempi paketti, jonka kehitys tuntuisi keskittyvän vain ydintehtävään. Seuraavissa alaluvuissa käsitellään kummankin kielipaketin tärkeimmät toiminnot eli kielen valintaan liittyvät asiat. Yleinen ajatus on se, että Latex\-/dokumentin esittelyosassa ladataan kielipaketti ja määritellään dokumentin pääasiallinen kieli ja mahdolliset muut kielet. Jos dokumentin tekstiosa sisältää muita kuin pääasiallista kieltä, täytyy käyttää erityisiä komentoja tai ympäristöjä, joilla kerrotaan Latexille, mistä kielestä on kyse. Tavutusta käsitellään kummankin kielipaketin osalta luvussa \ref{luku/tavutus}. \subsection{Polyglossia} \label{luku/polyglossia} Kielipaketti \pakettictan{polyglossia} vaatii toimiakseen Lualatex\-/\ tai Xelatex\-/ kääntäjän. Se ei siis toimi perinteisillä Latexin kääntäjillä. Kielipaketin käyttöönotto dokumentin esittelyosassa näyttää esimerkiksi seuraavanlaiselta: \komentoi{usepackage} \komentoi{setdefaultlanguage} \komentoi{setotherlanguage} \pakettii{polyglossia} \begin{koodilohkosis} \usepackage{polyglossia} \setdefaultlanguage{finnish} \setotherlanguage{english} \setotherlanguage{greek} \end{koodilohkosis} \noindent Eri kielillä on erilaisia valinnaisia asetuksia, jotka täytyy selvittää \paketti{polyglossia}\-/paketin ohjekirjasta. Asetukset liittyvät esimerkiksi kielen kirjoitusjärjestelmän alueelliseen tai historialliseen vaihteluun. Dokumentin tekstiosa käyttää kieltä, joka määriteltiin komennolla \komento{setdefaultlanguage}. Muita dokumentin esittelyosassa määriteltyjä kieliä voi käyttää väliaikaisesti komennolla, joka alkaa kirjaimilla \komentox{text} ja jatkuu kielen nimellä, esimerkiksi \komento{textenglish} tai \komento{textgreek}. \komentoi{textenglish} \begin{koodilohkosis} Englannin sana \textenglish{shorthand} tarkoittaa 'pikakirjoitusta'. \end{koodilohkosis} \noindent Toinen vaihtoehto on käyttää kielen nimen mukaista ympäristöä: \begin{koodilohkosis} \begin{greek} ... \end{greek} \end{koodilohkosis} \noindent Tietynkieliseksi merkitty teksti voi näyttää ladotussa dokumentissa ihan samalta kuin muukin teksti. Tavutuksessa kuitenkin käytetään eri kielissä eri asetuksia, ja joissakin kielissä voi olla myös pieniä typografisia yksityiskohtia eri tavalla. Oletuksena kaikilla kielillä käytetään samoja fontteja, mutta kirjoittaja voi määritellä fontin myös kielikohtaisesti, niin että kielen vaihtuessa fonttikin vaihtuu automaattisesti. Tietyn kielen fontti pitää määrittää komentoon, jonka nimessä on ensin kielen nimi ja lopuksi sana \koodi{font} (peruskirjainperhe), \koodi{fontsf} (pääteviivaton) tai \koodi{fonttt} (tasalevyinen). Esimerkiksi fonttikomennot englannin kielelle ja kolmelle eri kirjainperheelle ovat \komento{englishfont}, \komento{englishfontsf} ja \komento{englishfonttt}. Näiden fonttikomentojen ja kirjainperheiden määrittämiseen kannattaa käyttää \paketti{fontspec}\-/ paketin komentoa \komento{newfontfamily} (luku \ref{luku/fontin-valinta}). Seuraavassa esimerkissä asetetaan kaikki kolme kirjainperhettä kreikan kielelle: \komentoi{newfontfamily} \komentoi{greekfont} \komentoi{greekfontsf} \komentoi{greekfonttt} \begin{koodilohkosis} \newfontfamily{\greekfont} {GFS Artemisia} [Scale=MatchLowercase] \newfontfamily{\greekfontsf}{GFS Neohellenic}[Scale=MatchLowercase] \newfontfamily{\greekfonttt}{TeX Gyre Cursor}[Scale=MatchLowercase] \end{koodilohkosis} \noindent Kirjoittajan ei tarvitse itse käyttää edellä mainittuja komentoja kuten \komento{englishfont}, \komento{greekfont} jne. Kirjoittaja käyttää vain kielenvaihtokomentoja, ja fonttikin vaihtuu samalla itsestään, jos vain kohdekielelle ja \=/kirjainperheelle on määritelty sopiva fonttikomento. \subsection{Babel} \label{luku/babel} Vanha kunnon \pakettictan{babel}\yipilkku\avctan{babel-finnish} toimii useiden eri Latex\-/ kääntäjien kanssa. Ennen dokumentit kirjoitettiin rajallisilla merkistöillä (kuten \textsc{iso-8859\=/1}), jotka sisältävät vain reilut kaksisataa ihmiskielten kirjoitusmerkkiä. \paketti{babel} kuitenkin toimii myös Lualatex\-/\ ja Xelatex\-/ kääntäjillä eli Unicode\-/ merkistön kanssa. Kieliasetukset otetaan käyttöön \paketti{babel}\-/paketissa seuraavan esimerkin tavoin. Paketin lataamisessa valinnaiseen argumenttiin kirjoitetaan ladattavien kielten nimet ja viimeisenä mainitaan se kieli, joka halutaan pääasialliseksi kieleksi. Toisaalta pääasiallisen kielen voi valita myös \koodi{main}\-/ valitsimella. Seuraavassa on esimerkki kummastakin kieltenvalintatavasta: \komentoi{usepackage} \pakettii{babel} \begin{koodilohkosis} \usepackage[english,greek,finnish]{babel} \usepackage[main=finnish,english,greek]{babel} \end{koodilohkosis} \noindent Dokumentin tekstissä yksittäiset vieraskieliset sanat tai ilmaukset merkitään komennolla \komento{foreignlanguage}. Komennon ensimmäinen argumentti on kielen nimi ja toinen on sillä kielellä ladottava teksti. \komentoi{foreignlanguage} \begin{koodilohkosis} Englannin sana \foreignlanguage{english}{shorthand} tarkoittaa 'pikakirjoitusta'. \end{koodilohkosis} \noindent Komennon sijasta voi käyttää ympäristöä \ymparisto{otherlanguage}, joka vaihtaa kieltä ympäristön ajaksi. \ymparistoi{otherlanguage} \begin{koodilohkosis} \begin{otherlanguage}{greek} ... \end{otherlanguage} \end{koodilohkosis} \noindent Kielen vaihtamista voi helpottaa \komento{babeltags}\-/ komennolla, joka määrittelee lyhempiä komentoja ja ympäristöjä kielen vaihtamiseen. Komentoa käytetään seuraavan esimerkin tavoin. Sen jälkeen voi käyttää englanninkielisen tekstin merkitsemiseen komentoa \komentox{text\-eng} tai ympäristöä \ymparistox{eng}. \komentoi{babeltags} \begin{koodilohkosis} \babeltags{eng = english} \end{koodilohkosis} \noindent Oletuskieli voidaan vaihtaa kesken dokumentin komennolla \komento{selectlanguage}. Komennon argumentiksi annetaan kielen nimi, esimerkiksi seuraavalla tavalla: \komentoi{selectlanguage} \begin{koodilohkosis} \selectlanguage{english} \end{koodilohkosis} \noindent Eri kielille on mahdollista asettaa eri kirjainperheet \komento{babelfont}\-/ komennolla. Tämä komento korvaa \paketti{fontspec}\-/ paketin fontinvalintakomennot (luku \ref{luku/fontin-valinta}) ja muodostaa uuden korkeamman tason komennon, joka sisältää myös kielen. Jos siis käyttää komentoa \komento{babelfont}, ei saa samanaikaisesti käyttää komentoja \komento{setmainfont}, \komento{setsansfont} eikä \komento{setmonofont}. Oman dokumentin kirjainperheet voitaisiin määrittää \komento{babelfont}\-/ komennolla esimerkin \ref{esim/babelfont} tavoin. Ensin esimerkissä määritellään peruskirjainperhe (\koodi{rm}), pääteviivaton perhe (\koodi{sf}) ja tasalevyinen perhe (\koodi{tt}). Sen jälkeen määritellään kreikan kielessä (\koodi{greek}) käytettävä peruskirjainperhe ja pääteviivaton perhe. \begin{esimerkki*} \komentoi{babelfont} \begin{koodilohko} \babelfont{rm}{TeX Gyre Termes} \babelfont{sf}[Scale=MatchLowercase]{TeX Gyre Heros} \babelfont{tt}[Scale=MatchLowercase]{TeX Gyre Cursor} \babelfont[greek]{rm}[Scale=MatchLowercase]{GFS Artemisia} \babelfont[greek]{sf}[Scale=MatchLowercase]{GFS Neohellenic} \end{koodilohko} \caption{\komento{babelfont}\-/ komennon käyttö yleisten kirjainperheiden sekä kielikohtaisten kirjainperheiden asettamiseen} \label{esim/babelfont} \end{esimerkki*} Esimerkissä ennen fontin nimeä (esim. TeX Gyre Heros) oleva valinnainen argumentti on sama kuin \paketti{fontspec}\-/paketin fontinvalintakomennoissa. Sen avulla määritellään kyseisen kirjainperheen asetuksia. Lisätietoa voi lukea fontteja käsittelevästä luvusta \ref{luku/kirjaintyypit} ja \pakettictan{fontspec}\-/ paketin ohjekirjasta. \section{Tavutus} \label{luku/tavutus} Sanojen tavutus eli katkaiseminen rivin lopussa tavurajan kohdalta kytkeytyy läheisesti kieliasetuksiin (luku \ref{luku/kieliasetukset}), joihin on syytä perehtyä ennen tämän luvun lukemista. Tex tavuttaa eli katkaisee sanat automaattisesti rivien lopussa, jotta se saisi tekstikappaleet näyttämään tasapainoisilta. Tavutus perustuu yksinkertaisiin kirjainpohjaisiin sääntöihin: millaisia kirjainten yhdistelmiä tavuissa voi olla. Tavutussäännöt määräytyvät valitun kielen perusteella ja joskus kieleen liittyvien muiden asetusten perusteella. Automaattinen tavutus auttaa paljon, mutta se ei yksinään riitä. Se tavuttaa välillä kielen kannalta väärin tai tuottaa muuten suositusten vastaista jälkeä. Niinpä kirjoittajan täytyy auttaa välillä eli kirjoittaa tavutusvihjeitä. Texissä itsessään on tavutukseen vaikuttavia erikoismerkkejä ja toimintoja, mutta myös kielipaketeissa \paketti{polyglossia} ja \paketti{babel} on omia tavutukseen vaikuttavia erikoisuuksiaan, jotka voivat olla eri kielissä erilaisia. Kielipakettien ominaisuuksia käsitellään luvuissa \ref{luku/tavutus-polyglossia} ja \ref{luku/tavutus-babel}. \subsection{Yleiset tavutusvihjeet} \label{luku/hyphenation-komento} Yksi tapa tavutusvihjeiden kirjoittamiseen on \komento{hyphenation}\-/ komento, jolla määritellään yksittäisten sanojen tavutuskohdat kaikkialla dokumentissa. Seuraava esimerkki selventää komennon käyttöä: \komentoi{hyphenation} \begin{koodilohkosis} \hyphenation{ ala-indek-si alku-osa nimen-omaan typo-gra-fi-nen Latex } \end{koodilohkosis} \noindent Komennon argumentiksi eli aaltosulkeiden sisään kirjoitetaan sanoja, jotka erotetaan toisistaan sanaväleillä. Sanoihin kirjoitetaan yhdysmerkki niihin kohtiin, joista sanan katkaiseminen on sallittua. Jos yhdysmerkkiä ei ole, sanaa ei tavuteta mistään kohdasta. Jos taas sana on yhdyssana ja sen osien väliin kuuluu on yhdysmerkki, ei sen tavutusta voi käsitellä tällä komennolla. Luvussa \ref{luku/tavutuksen-merkit} kerrotaan muita tapoja. \komento{hyphenation}\-/komennon voi sijoittaa dokumentin esittelyosaan tai tekstiosaan, mutta sijainti vaikuttaa sen toimintaan. Jos komennon sijoittaa dokumentin esittelyosaan ennen kuin mitään kieltä on ladattu tai valittu, se vaikuttaa kaikkien sanojen tavutukseen kielestä riippumatta. Jos komennon sijoittaa dokumentin tekstiosaan eli kielen valitsemisen jälkeen, se vaikuttaa vain kyseisen kielen eli yleensä dokumentin pääasiallisen kielen tavutukseen. Kielipaketit \paketti{polyglossia} (luku \ref{luku/tavutus-polyglossia}) ja \paketti{babel} (luku \ref{luku/tavutus-babel}) sisältävät komennon, joilla voi asettaa yleisiä kielikohtaisia tavutusvihjeitä. \subsection{Yksittäisten sanojen tavutus} \label{luku/tavutuksen-merkit} Tietyt sanassa mukana olevat merkit kytkevät tavalliset tavutussäännöt pois päältä. Jos sanassa on mukana yksikin yhdysmerkki (\koodi{\=/}), lyhyt ajatusviiva (\mbox{\koodi{--}}) tai pitkä ajatusviiva (\mbox{\koodi{---}}), sana katkaistaan vain näiden merkkien jälkeen, eli muut tavutuskohdat kytketään pois käytöstä. Unicode\-/ merkistön ajastusviivat \uctunnus{u+2013 en dash} ja \uctunnus{u+2014 em dash} ovat toimineet tavutuksessa eri tavalla Lualatex\-/{} ja Xelatex\-/ kääntäjissä ja mahdollisesti eri tavalla kuin edellä mainitut Texin omat merkintätavat. Yhteensopivuussyistä on parasta kirjoittaa ajatusviivat Texin merkintätavoilla. Myös tavutusvihje (\komento{-}) vaikuttaa sanan tavutuskohtiin: jos sanassa on mukana yksikin tavutusvihje, tavalliset tavutuskohdat kytkeytyvät pois käytöstä, ja sana katkaistaan vain tavutusvihjeiden kohdalta sekä edellä mainittujen viivavälimerkkien jälkeen. Kielipaketti \paketti{babel} (luku \ref{luku/tavutus-babel}) käyttäytyy kuitenkin suomen kielessä eri tavoin. Se määrittelee ainakin suomen kielessä tavutusvihjeen siten, että se sallii sanan tavutuksen muistakin kohdista kuin tavutusvihjeen kohdalta. \subsection{Tavutus sanan reunasta} \label{luku/tavutus-reunasta} Asetukset \komento{lefthyphenmin}\komentojatko{=N} ja \komento{righthyphenmin}\komentojatko{=N} vaikuttavat tavutukseen sanan reunoissa. Argumentti \koodi{N} on positiivinen kokonaisluku, joka määrittelee, kuinka monta merkkiä vähintään sanan vasemmasta tai oikeasta reunasta pidetään yhdessä. Oletusarvot ovat kielikohtaisia ja ne on määritelty \paketti{polyglossia}\-/{} ja \paketti{babel}\-/ paketeissa. Suomen kielessä kumpikin asetus on kaksi (2) merkkiä. Nämä asetukset alustetaan automaattisesti kielikohtaisiin oletusarvoihin aina, kun kieliasetukset tulevat voimaan. Näin on esimerkiksi dokumentin aloittavan \ymparistox{document}\-/ ympäristön alussa ja aina kielen vaihtuessa. Jos kirjoittaja haluaa muuttaa asetuksia, täytyy omat muutokset tehdä joka kerta edellä mainittujen asioiden jälkeen. Toisaalta kätevämpää on sisällyttää omat asetukset kielikohtaisiin alustuskomentoihin. Sillä tavoin omat asetukset tulevat voimaan automaattisesti kielen vaihtuessa. \komentoi{addto} \komentoi{captionsfinnish} \komentoi{lefthyphenmin} \komentoi{righthyphenmin} \begin{koodilohkosis} \addto{\captionsfinnish}{ \lefthyphenmin=3 \righthyphenmin=2 } \end{koodilohkosis} \noindent Edellisessä esimerkissä oleva komento \komento{addto} on \paketti{polyglossia}\-/{} ja \paketti{babel}\-/ paketin ominaisuus, jolla lisätään omia komentoja kielikohtaisiin asetuksiin. Tässä esimerkissä käsitellään suomen kielen asetuksia (\komento{captionsfinnish}). Komento täytyy suorittaa lähdedokumentin esittelyosassa. \subsection{Polyglossia ja tavutus} \label{luku/tavutus-polyglossia} Kielipaketti \pakettictan{polyglossia} (myös luku \ref{luku/polyglossia}) sisältää tavutukseen vaikuttavia asetuksia, jotka ovat eri kielissä erilaisia. Suomen kielessä on hyödyllistä ottaa käyttöön asetus \koodi{babelshorthands}, joka tuo mukaan muutaman tavutukseen vaikuttavan erikoismerkin. \komentoi{setdefaultlanguage} \begin{koodilohkosis} \setdefaultlanguage[babelshorthands]{finnish} \end{koodilohkosis} \noindent Asetus \koodi{babelshorthands} lisää erikoismerkkivalikoimaan seuraavat tavutukseen vaikuttavat merkit. Taulukossa \ref{tlk/polyglossia-tavutus} on esimerkkejä tavutusvihjeiden, yhdysmerkin ja ajatusviivan sekä \paketti{polyglossia}\-/ paketin erikoismerkkien vaikutuksesta. \newcommand{\shorthandsyhdysmerkki}{% \item [\textquotedbl-] Sitova yhdysmerkki (\=/), joka sitoo merkin seuraavaan sanaan eli estää katkaisemisen yhdysmerkin jälkeen. Tämä merkki sallii sanan tavuttamisen muista kohdista. Tämän sijasta voi käyttää Unicode\-/ merkistön sitovaa yhdysmerkkiä \uctunnus{u+2011 non\-/ breaking hyphen}.} \newcommand{\shorthandspystyviiva}{% \item [\textquotedbl|] Estää typografisten ligatuurien (luku \ref{luku/typo-liga}) muodostumisen tähän kohtaan. Esimerkiksi fi\-/ ligatuurin muodostumisen voi estää kirjoittamalla \koodi{f"|i}, ja tuloksena on kaksi erillistä merkkiä: f\textcompwordmark i.} \newcommand{\shorthandslainausmerkki}{% \item [\textquotedbl\textquotedbl] Tavutusvihje, joka ei lisää tavutuskohtaan yhdysmerkkiä. Tämä on hyödyllinen esimerkiksi teknisissä ilmauksissa, joissa sanaan tarvitaan mahdollinen katkaisukohta mutta ei haluta lisätä ylimääräistä yhdysmerkkiä sotkemaan ilmausta.} \begin{maaritelma}{\koodi{#1}} \shorthandsyhdysmerkki % Polyglossian tulevassa versiossa (jälkeen 30.12.2023). % \item [\textquotedbl=] Sama kuin edellinen (\koodi{\textquotedbl-}). \shorthandspystyviiva \shorthandslainausmerkki \item [\textquotedbl/] Vinoviiva (/), jonka jälkeen on tavutusvihje. Tavutuskohtaan ei lisätä yhdysmerkkiä. Tavutus sallitaan sanan muista kohdista. \end{maaritelma} \leijutlk{ \begin{tabular}{lll} \toprule \ots{Lähde} & \ots{Tavutus} & \ots{Merkitys} \\ \midrule \koodi{erikoisalalla} & eri\tavukohta koi\tavukohta sa\tavukohta lal\tavukohta la & tavutus kaikista kohdista (väärin) \\ \koodi{erikois\komento{-}alalla} & erikois\tavukohta alalla & vain tavutusvihjeen kohdalta \\ \koodi{matka-aika} & matka-\tavukohta aika & vain yhdysmerkin jälkeen \\ \koodi{matka-ai\komento{-}ka} & matka-\tavukohta ai\tavukohta ka & vain yhdysmerkki ja tavutusvihje \\ \koodi{Oulu--Rovaniemi} & Oulu--\tavukohta Rovaniemi & vain ajatusviivan jälkeen \\ \koodi{Oulu--Rova\komento{-}niemi} & Oulu--\tavukohta Rova\tavukohta niemi & vain ajatusviiva ja tavutusvihje \\ \koodi{matka-} & matka- & ei tavutuskohtia \\ \koodi{-aika} & -\tavukohta aika & vain yhdysmerkin jälkeen (väärin) \\ \koodi{\textquotedbl-aika} & -ai\tavukohta ka & ei sitovan yhdysmerkin jälkeen \\ \bottomrule \end{tabular} }{ \caption{Kielipaketti \paketti{polyglossia} ja tavutusvihjeen, yhdysmerkin ja ajatusviivan sekä kielipaketin omien erikoismerkkien (\koodi{babelshorthands}) vaikutus tavutukseen} \label{tlk/polyglossia-tavutus} } \noindent Yleisiä koko kieleen vaikuttavia tavutusvihjeitä voi määritellä komennolla \komento{pghyphenation}. Se vastaa Texin \komento{hyphenation}\-/ komentoa (luku \ref{luku/hyphenation-komento}), mutta tavutusvihjeet määritellään kielikohtaisesti. Komennon ensimmäinen argumentti on kielen nimi, ja toiseen argumenttiin luetellaan sanat ja niiden sallitut tavutuskohdat yhdysmerkin avulla. \komentoi{pghyphenation} \begin{koodilohkosis} \pghyphenation{finnish}{ ala-indek-si alku-osa nimen-omaan typo-gra-fi-nen Latex } \end{koodilohkosis} \noindent Kielikohtaisesti voi määrittää myös sen, kuinka monta kirjainta sanan reunasta jätetään tavuttamatta. \paketti{polyglossia}\-/ paketissa on komento \komento{setlanghyphenmins}, jonka ensimmäinen argumentti on kielen nimi. Toinen ja kolmas argumentti ovat kokonaislukuja, joilla asetetaan sanan vasemman ja oikean reunan tavuttamaton merkkimäärä. \komentoi{setlanghyphenmins} \begin{koodilohkosis} \setlanghyphenmins{finnish}{3}{2} \end{koodilohkosis} \noindent Suomen kielellä vaihtoehtoisen tavutussäännöstön voi kytkeä päälle käyttämällä kielen asettamisen yhteydessä valitsinta \koodi{schoolhyphens}. Tämä sallii tavutuksen kaikista mahdollisista kohdista. Lisätietoa suomen tavutuksen erityispiirteistä on luvussa \ref{luku/suomi-tavutus}. \komentoi{setdefaultlanguage} \begin{koodilohkosis} \setdefaultlanguage[schoolhyphens]{finnish} \end{koodilohkosis} \subsection{Babel ja tavutus} \label{luku/tavutus-babel} Kielipaketti \pakettictan{babel}\yipilkku\avctan{babel-finnish} (myös luku \ref{luku/babel}) lisää automaattisesti moniin kieliin -- myös suomen kieleen -- muutaman erikoismerkin, joilla voi vaikuttaa tavutukseen. Erikoismerkit saa pois päältä käyttämällä paketin lataamisen yhteydessä valitsinta \koodi{shorthands=\katk off}. Seuraavassa on selitetty suomen kielen erikoismerkkejä. \begin{maaritelma}{\koodi{#1}} \item [\komento{-}] Tämä on Texin normaali tavutusvihje (luku \ref{luku/tavutuksen-merkit}), mutta \paketti{babel} määrittelee sen suomen kielessä uudelleen siten, että tavutus sallitaan sanassa myös muista kohdista tavutussääntöjen mukaan. \shorthandsyhdysmerkki \item [\textquotedbl=] Sama kuin edellinen (\koodi{\textquotedbl-}). \shorthandspystyviiva \shorthandslainausmerkki \end{maaritelma} \leijutlk{ \begin{tabular}{lll} \toprule \ots{Lähde} & \ots{Tavutus} & \ots{Merkitys} \\ \midrule \koodi{erikoisalalla} & eri\tavukohta koi\tavukohta sa\tavukohta lal\tavukohta la & tavutus kaikista kohdista (väärin) \\ \koodi{erikois\komento{-}alalla} & eri\tavukohta kois\tavukohta alal\tavukohta la & tavutusvihjeen kohdalta ja muualta \\ \koodi{matka-aika} & matka-\tavukohta aika & vain yhdysmerkin jälkeen \\ \koodi{matka-ai\komento{-}ka} & matka-\tavukohta ai\tavukohta ka & vain yhdysmerkki ja tavutusvihje \\ \koodi{Oulu--Rovaniemi} & Oulu--\tavukohta Rovaniemi & vain ajatusviivan jälkeen \\ \koodi{Oulu--Rova\komento{-}niemi} & Oulu--\tavukohta Rova\tavukohta nie\tavukohta mi & tavutusvihjeen kohdalta ja muualta \\ \koodi{matka-} & matka- & ei tavutuskohtia \\ \koodi{-aika} & -\tavukohta aika & vain yhdysmerkin jälkeen (väärin) \\ \koodi{\textquotedbl-aika} & -ai\tavukohta ka & ei sitovan yhdysmerkin jälkeen \\ \bottomrule \end{tabular} }{ \caption{Kielipaketti \paketti{babel} ja suomen kielellä tavutusvihjeen, yhdysmerkin ja ajatusviivan sekä kielipaketin omien erikoismerkkien vaikutus tavutukseen} \label{tlk/babel-tavutus} } \noindent Taulukossa \ref{tlk/babel-tavutus} on esimerkkejä suomen kielen tavutuksesta, kun sanassa on tavutusvihjeitä, yhdysmerkkejä, ajatusviivoja tai \paketti{babel}\-/ paketin erikoismerkkejä. Taulukon viimeinen rivi soittaa, että kun sanan alussa on yhdysmerkki, täytyy suomen kielessä käyttää sitovaa yhdysmerkkiä, joka estää tavutuksen heti yhdysmerkin jälkeen. Toisaalta \paketti{babel}\-/ paketissa on suomen kielelle asetus, joka käsittelee sanan alussa olevan yhdysmerkin automaattisesti oikein. Ominaisuus kytketään päälle kielipaketin lataamisen jälkeen \komento{babelprovide}\-/ komennolla seuraavasti: \komentoi{usepackage} \pakettii{babel} \komentoi{babelprovide} \begin{koodilohkosis} \babelprovide[transforms=prehyphen.nobreak]{finnish} \end{koodilohkosis} \noindent Kun edellä mainittu asetus on päällä, voi lähdetiedostoon kirjoittaa huoletta esimerkiksi \koodi{matkasuunnitelma ja \=/aika} (ilman sitovaa yhdysmerkkiä), ja silti sanaan \emph{\mbox{-aika}} sisältyvä yhdysmerkki pysyy kiinni sanassa eikä jää koskaan yksin rivin loppuun. Yleisiä kaikkiin kieliin tai tiettyyn kieleen vaikuttavia tavutusvihjeitä voi asettaa komennolla \komento{babelhyphenation}. Komento vastaa Texin \komento{hyphenation}\-/ komentoa (luku \ref{luku/hyphenation-komento}), mutta sille voi antaa valinnaisen argumentin, joka rajaa vaikutuksen vain tiettyyn kieleen. Seuraavassa esimerkissä asetetaan tavutusvihjeitä vain suomen kielen sanoille: \komentoi{babelhyphenation} \begin{koodilohkosis} \babelhyphenation[finnish]{ ala-indek-si alku-osa nimen-omaan typo-gra-fi-nen Latex } \end{koodilohkosis} \noindent Vaihtoehtoisen suomen kielen tavutussäännöstön voi kytkeä päälle komennolla \komento{babelprovide}, seuraavan esimerkin mukaisesti. Tämä vaihtoehto sallii sanan katkaisemisen kaikista mahdollisista suomen kielen tavutuskohdista. Lisätietoa suomen tavutuksen erityispiirteistä on luvussa \ref{luku/suomi-tavutus}. \komentoi{babelprovide} \begin{koodilohkosis} \babelprovide[hyphenrules=schoolfinnish]{finnish} \end{koodilohkosis} \subsection{Viivojen erikoispaketti extdash} \label{luku/tavutus-extdash} Jos Texin ja kielipakettien välimerkit ja tavutusvihjeet eivät riitä, mahdollisuuksia saa lisää \pakettictan{extdash}\-/ paketin avulla. Se tuo mukanaan uusia komentoja viivavälimerkeille ja samalla lisää vaihtoehtoja tavutuksen hallintaan. Komennot ovat sellaisia kuin \komento{Hyphdash} ja \komento{Endash}, mutta niille on saatavilla myös lyhyemmät vastineet, jos paketin lataa käyttämällä \koodi{short\-cuts}\-/ valitsinta. \komentoi{usepackage} \pakettii{extdash} \begin{koodilohkosis} \usepackage[shortcuts]{extdash} \end{koodilohkosis} \noindent Paketti sisältää kaksi lisävaihtoehtoa kolmelle viivavälimerkille eli yhdysmerkille, lyhyelle ajatusviivalle ja pitkälle ajatusviivalle. Kun Texin viivavälimerkit (luku \ref{luku/tavutuksen-merkit}) aina estävät tavutuksen muualta kuin välimerkin jälkeen, \paketti{extdash}\-/ paketin perusvaihtoehdot sallivat tavutuksen muualtakin. Lisäksi kaikille kolmelle viivavälimerkille on sitova versio, joka estää tavutuksen välimerkin jälkeen mutta sallii muualta. Taulukossa \ref{tlk/extdash} ovat \paketti{extdash}\-/paketin tärkeimmät komennot ja niiden merkitykset. Taulukossa \ref{tlk/extdash-vertailu} vertaillaan \paketti{extdash}\-/paketin komentoja Texin vastaaviin. \leijutlk{ \begin{tabular}{ll} \toprule \ots{Komento} & \ots{Merkitys} \\ \midrule \komento{-/} & tavutuksen salliva yhdysmerkki \\ \komento{=/} & sitova, tavutuksen salliva yhdysmerkki \\ \komento{--} & tavutuksen salliva lyhyt ajatusviiva \\ \komento{==} & sitova, tavutuksen salliva lyhyt ajatusviiva \\ \komento{---} & tavutuksen salliva pitkä ajatusviiva \\ \komento{===} & sitova, tavutuksen salliva pitkä ajatusviiva \\ \bottomrule \end{tabular} }{ \caption{\paketti{extdash}-paketin komentoja, kun paketti on ladattu käyttämällä asetusta \koodi{short\-cuts}} \label{tlk/extdash} } \leijutlk{ \begin{tabular}{llll} \toprule \ots{Lähde} & \ots{Tavutus} & \ots{Lähde} & \ots{Tavutus} \\ \cmidrule(r){1-2} \cmidrule(l){3-4} \koodi{matka-aika} & matka-\tavukohta aika & \koodi{Oulu--Rovaniemi} & Oulu--\tavukohta Rovaniemi \\ \koodi{matka\komento{-/}aika} & mat\tavukohta ka-\tavukohta ai\tavukohta ka & \koodi{Oulu\komento{--}Rovaniemi} & Ou\tavukohta lu--\tavukohta Ro\tavukohta va\tavukohta nie\tavukohta mi \\ \koodi{matka\komento{=/}aika} & mat\tavukohta ka-ai\tavukohta ka & \koodi{Oulu\komento{==}Rovaniemi} & Ou\tavukohta lu--Ro\tavukohta va\tavukohta nie\tavukohta mi \\ \koodi{matka-} & matka- & \koodi{-aika} & -\tavukohta aika (väärin) \\ \koodi{matka\komento{-/}} & mat\tavukohta ka- & \koodi{\komento{=/}aika} & -ai\tavukohta ka \\ \bottomrule \end{tabular} }{ \caption{Texin ja \paketti{extdash}-paketin viivamerkkien vertailua} \label{tlk/extdash-vertailu} } On tärkeää huomioida, että \paketti{extdash}\-/paketin komennot ovat todellakin normaaleja komentoja. Se tarkoittaa, että komennon jälkeiset sanavälit syödään pois. Tämä asia saattaa unohtua seuraavanlaisessa tilanteessa, jossa käytetään tavutuksen sallivaa yhdysmerkkikomentoa: \komentoi{-/} \begin{koodilohkosis} matka\-/ ja aika\-/arvio \end{koodilohkosis} \begin{tulossis} matka\-/ ja aika\-/arvio \end{tulossis} \noindent Ensimmäisen yhdysmerkkikomennon jälkeinen sanaväli hävisi, ja syntyi virheellinen sana \emph{matka-ja}. Sanavälin saa säilymään, kun kirjoittaa komennon perään aaltosuljeparin tai kenoviivan sekä sanavälin. \komentoi{-/} \begin{koodilohkosis} matka\-/{} ja aika\-/arvio \\ matka\-/\ ja aika\-/arvio \end{koodilohkosis} \begin{tulossis} matka\-/{} ja aika\-/arvio \\ matka\-/\ ja aika\-/arvio \end{tulossis} \subsection{Muita tavutusasetuksia} \label{luku/tavutus-muut} Varsinainen tavutuksen peruskomento on \komento{discretionary}, joka mahdollistaa omanlaisten tavutuskohtien määrittelyn. Komento kirjoitetaan sanassa juuri siihen kohtaan, johon tavutuskohta halutaan, ja komennon argumenttien rakenne on seuraavanlainen: \komentoi{discretionary} \begin{koodilohkosis} \discretionary{loppu}{alku}{katkaisematon} \end{koodilohkosis} \noindent Komennon ensimmäinen argumentti \koodi{loppu} ilmaisee katkaisutilanteessa rivin loppuun ladottavat merkit. Toinen argumentti \koodi{alku} ilmaisee katkaisutilanteessa seuraavan rivin alkuun ladottavat merkit, ja kolmas argumentti tarkoittaa katkaisemattomaan sanaan ladottavia merkkejä. Normaali tavutuskohta sanaan \emph{tavu} määriteltäisiin seuraavan esimerkin tavoin: \komentoi{discretionary} \begin{koodilohkosis} ta\discretionary{-}{}{}vu \end{koodilohkosis} \noindent Edellisessä esimerkissä komennon ensimmäinen argumentti on yhdysmerkki, koska rivin loppuun tietenkin halutaan yhdysmerkki silloin, kun sana katkaistaan tästä kohdasta. Toinen argumentti on tyhjä, koska seuraavan rivin alkuun ei kirjoiteta suomen kielessä mitään ylimääräistä. Myös kolmas argumentti on tyhjä, koska katkaisemattomaan sanaan ei haluta mitään merkkiä tavujen väliin. \komento{discretionary}\-/komennolla voi luoda myös tavutuskohtia, joihin ei ilmesty yhdysmerkkiä eikä mitään muutakaan merkkiä katkaisutilanteessa. Tämä vastaa kielipakettien tavutusvihjettä \koodi{\textquotedbl\textquotedbl}. \komento{discretionary}\-/ komennolla sama toteutetaan jättämällä kaikki argumentit tyhjäksi: \komentoi{discretionary} \begin{koodilohkosis} \discretionary{}{}{} \end{koodilohkosis} \noindent Joissakin kielissä sanan katkaiseminen yhdysmerkin kohdalta vaatii, että rivin loppuun kirjoitetaan yksi yhdysmerkki ja seuraavan rivin alkuun toinen. Näin ilmaistaan, että sanassa on pysyvä yhdysmerkki eikä vain väliaikaisesti katkaisun merkkinä. Tällaisia kieliä varten saattaa kielipaketissa olla omat yhdysmerkkitoiminnot tai oikeanlainen tavutuslogiikka voi jo sisältyä kieliasetuksiin, mutta tällaisen tavutuskohdan saa myös seuraavalla tavalla: \komentoi{discretionary} \begin{koodilohkosis} \discretionary{-}{-}{-} \end{koodilohkosis} \noindent Tavutuksen suunnittelussa ja tutkimisessa voi auttaa \pakettictan{showhyphenation}\-/ paketti. Kun paketti on ladattuna, kaikkien sanojen mahdollisiin tavutuskohtiin ladotaan pieni merkki. Paketti hyödyntää Lualatex\-/ kääntäjän ominaisuuksia, eikä se siis toimi muiden kääntäjien kanssa. \subsection{Suomen kielen tavutus} \label{luku/suomi-tavutus} Suomen kielelle on olemassa Latexissa kaksi erilaista tavutussäännöstöä. Oletuksena toimivat säännöt kuvaavat tavallisimmat tavujen rakenteet mutta pyrkivät huomioimaan myös typografisia suosituksia. Esimerkiksi sanaa ei välttämättä katkaista vokaalien välistä, koska se ei ole suositeltavaa. Myös jotkin yleiset vierasperäisten sanojen konsonanttiyhdistelmät pidetään yhdessä, vaikka ne suomen tavurakenteen mukaan kuuluisivat joskus eri tavuihin. Toinen, vaihtoehtoinen tavutussäännöstö kuvaa pelkästään suomen tavujen rakenteen, eli se tavuttaa sanat kaikista mahdollisista kohdista eikä huomioi typografisia suosituksia mitenkään.% \footnote{Lisätietoa: \url{https://github.com/hyphenation/basic-finnish}} Asetus sanan reunasta tavuttamisesta on kuitenkin voimassa (luku \ref{luku/tavutus-reunasta}). Tämä vaihtoehtoinen tavutustapa täytyy kytkeä erikseen päälle kielipaketin asetuksista. Sen nimi on Latexissa \emph{\englanti{school}}, koska se on ''peruskoulutavuttamista'' eikä typografian mukaista tavuttamista. Katso kielipakettikohtaiset ohjeet luvuista \ref{luku/tavutus-polyglossia} ja \ref{luku/tavutus-babel}. Texin kirjainyhdistelmiin perustuvat tavutussäännöt eivät yksinään ole tarpeeksi älykkäitä suomen kieleen, ja esimerkiksi yhdyssanojen rajakohdat tuottavat usein ongelmia. Sana \emph{alku\-osa} katkaistaan Latexissa kohdista \emph{al-kuo-sa}. Se on kyllä oikein tavurakenteen kannalta mutta käytännössä ongelmallinen. Tässä ei ole kyse \emph{uo}\-/ diftongista eli samaan tavuun kuuluvista vokaaleista, vaan yhdyssanan rajalla on myös tavutuskohta (\emph{al-ku-o\=/sa}). Lisäksi sanaa ei saisi katkaista siten, että siitä jää yksittäinen kirjain eri riville (ei: \emph{o\=/sa}). Parasta olisi katkaista suomen kielen yhdyssanat vain yhdysosien välistä (\emph{alku-osa}). Muualtakin voi katkaista (\emph{al-ku-osa}), kunhan sanasta eikä sen yhdysosasta ei jää yksittäinen kirjain eri riville. Mielellään ei katkaista myöskään kahden vokaalin välistä, jos ne kuuluvat samaan sanaan (ei: \emph{kau-emmin}). Joskus halutaan välttää myös niin sanottuja orpotavuja eli sitä, että tekstikappaleen viimeiselle riville jää vain yksi tavu. Käytännössä siis suomenkielinen teksti ja hyvä typografia vaativat välillä tavutusvihjeiden kirjoittamista. Yhdyssanojen osien väliin tarvitaan tavutusvihje silloin, kun jälkimmäinen osa alkaa vokaalilla tai useammalla kuin yhdellä konsonantilla. Joitakin tällaisia tapauksia Tex osaa tavuttaa oikein ilman tavutusvihjeitäkin. \komentoi{-} \begin{koodilohkosis} alku\-osa pusku\-traktori \end{koodilohkosis} \noindent Sitova yhdysmerkki on suomen kielessä tarpeellinen, kun sana alkaa yhdysmerkillä eli ennen yhdysmerkkiä on sanaväli. Esimerkiksi ilmauksessa \emph{matkasuunnitelma ja \mbox{-aika}} ei riviä saa katkaista sanassa \emph{\mbox{-aika}} olevan yhdysmerkin jälkeen. Täytyy siis käyttää sitovaa yhdysmerkkiä eli merkkiä, joka sitoo yhdysmerkin kiinni seuraavaan sanaan. Sitovan yhdysmerkin käyttöä neuvotaan luvuissa \ref{luku/tavutus-polyglossia}, \ref{luku/tavutus-babel} ja \ref{luku/tavutus-extdash}. Yhdysmerkin tai ajatusviivan sisältävät pitkät yhdyssanat voivat vaatia tavutuskohtien lisäämistä, koska yhdysmerkki ja ajatusviivat estävät tavutuksen muualta kuin näiden merkkien jälkeen. Ilman tavutuskohtien lisäämistä Texillä ei ehkä ole riittävästi vaihtoehtoja tekstikappaleen rivittämiseen. Voi syntyä liian suuria sanavälejä, tai joistakin riveistä tulee ylipitkiä, eli ne yltävät marginaalin puolelle. Tavutuskohtia voi lisätä sopiviin kohtiin tavutusvihjeillä. Vaihtoehtoisesti voi käyttää \paketti{extdash}\-/ paketin välimerkkikomentoja (taulukko \ref{tlk/extdash}), jotka sallivat tavutuksen kaikista kielen tavutussääntöjen mukaisista kohdista. Seuraavassa esimerkissä on tavutuksen hallintaa sanalle \emph{Molo\-tov--Ribben\-trop-sopi\-mus}: \komentoi{-} \komentoi{--} \komentoi{-/} \begin{koodilohkosis} Molo\-tov--Ribben\-trop-sopi\-mus % tavutusvihjeet Molotov\--Ribben\-trop\-/sopimus % tavutuksen sallivat välimerkit \end{koodilohkosis} \noindent \komento{discretionary}\-/komentoa (luku \ref{luku/tavutus-muut}) voi hyödyntää suomen kielen sanoissa silloin, kun niissä on heittomerkki erottamassa kahta tavurajan molemmin puolin olevaa samaa vokaalia, esimerkiksi sanoissa \emph{vaa'an} ja \emph{liu'uttaa}. Normaalisti Tex ei katkaise heittomerkin kohdalta lainkaan, eikä se olisi suomen kielessä suositeltavaakaan, koska vokaalien välistä ei mielellään katkaista sanaa. Jos tavutuksen kuitenkin haluaa myös heittomerkin kohdalle, täytyy huolehtia, että tavutustilanteessa heittomerkki poistuu ja sen paikalle tulee yhdysmerkki rivin loppuun. Sanan \emph{vaa'an} voisi siis kirjoittaa seuraavalla tavalla: \komentoi{discretionary} \begin{koodilohkosis} vaa\discretionary{-}{}{'}an \end{koodilohkosis} \noindent Komennon kolmas argumentti on heittomerkki, koska se pitää latoa tavurajalle silloin, kun sanaa ei katkaista tästä kohdasta. Mikäli tällaisia tarvitsee paljon, on järkevää määritellä sitä varten yksinkertaisempi komento, jota sitten käytetään sanoissa heittomerkin sijasta. \komentoi{discretionary} \begin{koodilohkosis} \newcommand{\hm}{\discretionary{-}{}{'}} vaa\hm an, liu\hm uttaa \end{koodilohkosis} \noindent Suomen kielessä käytetään heittomerkkiä myös taivutuspäätteen, liitteen tai johtimen edellä silloin, kun sanavartalon kirjoitusasu päättyy konsonanttiin mutta ääntöasu vokaaliin, esimerkiksi \emph{show'ssa}. Näissä tilanteissa ei ole kyse tavurajasta vaan morfeemirajasta eli merkityksellisten osien rajakohdasta. Tavurajakin voi sattua samaan paikkaan, mutta tavutettaessa heittomerkki säilyy: \emph{show'-hun}.% \footnote{Asiaa ei yleensä mainita kielenhuolto\-/oppaissa. Tieto perustuu Kielikello\-/lehden 2/2006 artikkeliin: \kulmaurl{https://www.kielikello.fi/-/lainausmerkit-}. Viittauspäivä 6.7.2020.} Mikäli tällainen tavutuskohta halutaan mukaan, käytetään sanassa tavallista tavutusvihjettä: \koodi{show'}\komento{-}\koodi{hun}. Mieluummin ei kuitenkaan katkaista sanoja heittomerkin kohdalta. \subsection{Tavutus pois päältä} Tavutuksen voi kytkeä kokonaan pois päältä \paketti{polyglossia}\-/ kielipaketin komennolla \komento{disablehyphenation}. Tavutuksen saa takaisin päälle komennolla \komento{enablehyphenation}. Toinen vaihtoehto on käyttää fontin asetusta \koodi{Hyphen\-Char=\katk None} kirjainperheen määrittelyn yhteydessä. Oletuksena tavutus on pois päältä tasalevyisestä fontista, eli esimerkiksi \komento{texttt}\-/ komennon argumenttina olevaa tekstiä ei tavuteta. Fontteja ja niiden asetuksia käsitellään luvussa \ref{luku/kirjaintyypit}. Käytännössä tavutus menee pois päältä myös silloin, kun tekstikappaleet tasaa vain vasempaan reunaan eli tekee oikealle liehureunan komennolla \komento{raggedright}. Tekstikappaleiden tasaamista ja palstan muotoa käsitellään luvussa \ref{luku/kappaleen-tasaus}.