MVnet logo

Blogi » Johdatus Latexiin

  • Julkaistu 12. Joulukuuta 2008
  • Kirjoittanut: Mikko Vestola
  • 7 kommenttia

Mikä on Latex?

Oletko joskus tuskastellut Microsoft Wordin tai OpenOffice Writer kanssa? Kuvat pomppivat minne sattuu, otsikkotyylit ovat vinksallaan, vaakasivua ei saa mistään jne. Ratkaisu tähän tuskasteluun voi olla Latex. Latex (äännetään "Latech") on dokumentin kuvauskieli, joka kehitettiin jo 1980-luvulla, joten se ei ole mikään uusi juttu. Latexia käytetään paljon erityisesti yliopistoissa mm. matemaatikkojen, tutkijoiden ja muiden ammattilaisten piirissä. Suurin ero Latexin ja Wordin välillä on se, että Latexissa kirjoittaja ei ota kantaa dokumentin visuaaliseen ulkoasuun vaan sen sisältöön.

Jos tunnet HTML-kielen, voi Latexia verrata hyvin siihen. Niin Latex kuin HTML-kieli ovat kehitetty dokumentin rakenteen esittämiseen. HTML-dokumentissa ei ole syytä ottaa kantaa dokumentin visuaaliseen ulkoasuun vaan sen pitäisi pelkästään kuvata dokumentin looginen rakenne. Tämä tapahtuu HTML-kielessä lisäämällä tekstin joukkoon ns. tageja kertomaan esim. että tässä on otsikko (h1), tässä alaotsikko (h2), tässä kuva (img), tämä teksti on kursivoitua (em) jne. HTML-dokumentin ulkoasu taas kuvataan CSS-kielellä, jolla voidaan määrittää dokumentille useita ulkoasuja (esim. eriväriset otsikot, fontit jne.). Toki HTML-kielellä voi myös kuvata visuaalista ulkoasua, mutta tähän se ei ole tarkoitettu.

Latexissa käytetään hyvin samaa periaatetta. Normaalin tekstin sekaan laitetaan tagien sijasta erilaisia komentoja kertomaan, missä on otsikkoja (\section{otsikko}), alaotsikkoja (\subsection{alaotsikko}), kuvia (\begin{figure}) tai kursivointia (\textit{kursiivi}) jne. LaTeXiin löytyy hyvin laaja joukko erilaisia valmiita dokumenttityyppejä, minkä ansiosta kirjoittajan ei yleensä tarvitse itse huolehtia dokumentin muotoilusta. LaTeX huolehtii automaattisesti esimerkiksi rivin- ja sivunjaosta, kuvien asettelusta, kuvatekstien sijoittelusta, dokumentin sisäisistä viittauksista ja sisällysluettelosta. Halutessaan Latexilla voi myös määrittää koko dokumentille haluamansa ulkoasun, jos valmiit dokumenttipohjat eivät miellytä.

Ohjelmointia tuntemattomat eivät välttämättä heti näe mitään hyötyjä siitä, että ulkoasu ja sisältö erotetaan toisistaan. Mutta mikäli olet joskus tutustunut HTML-kieleen ja CSS:ään, ymmärrät varmasti tämän edun. Kun ulkoasu on erotettu sisällöstä, voidaan dokumentin visuaalista esitysasua muuttaa helposti. Jos mieli muuttuu esim. ensimmäisen tason otsikon fontin värin ja koon suhteen, on sen muuttaminen yksinkertaista, kun jokaista otsikkoa ei tarvitse muuttaa yksistään.

Miten Latex eroaa Wordistä?

Microsoft Word ja OpenOffice Writer ovat ns. WYSIWYG-editoreja (What You See Is What You Get). Eli kirjoittaessaan dokumenttia käyttäjä näkee koko ajan, millainen dokumentin visuaalinen ulkoasu on (mm. otsikkojen muotoilut, fontit, kuvien tarkat paikat jne.). Tämä on yleensä tavallisille käyttäjille helpompaa, koska käyttäjä näkee lopullisen dokumentin visuaalisen asun heti eikä käyttäjän tarvitse tietää mitään esimerkiksi Latex-komennoista.

Aina WYSIWYG-editointi ei kuitenkaan ole eduksi. Liian usein itse kukin on varmasti törmännyt siihen, että kuvat häviävät jonnekin tai ne ovat aivan väärässä paikkaa, otsikoiden numerointi ei toimi tai pahimmillaan dokumentin koko ulkoasu menee niin sekaisin, että tähän ei auta muu kuin luoda uusi dokumentti. Hyvin laajan dokumentin muokkaus on yleensä myös hieman takkuista, jos siinä on esim. paljon kuvia ja aina näiden kuvien sijoittelu ei toimi oikein. Joskus näiden asioiden parissa saattaa tapella tunnin jos toisenkin. Nämä vievät käyttäjän huomioin siitä, mitä yleensä on oleellista: dokumentin sisältö ja rakenne.

Latex taas on siis ns. WYSIWYM-editointia (What You See Is What You Mean). Kirjoittajan ei tarvitse murehtia visuaalisesta ulkoasusta, koska Latex hoitaa sen. Kirjoittaja vain kertoo Latexille, mitä hän haluaa mihinkäkin paikkaa dokumenttia. Esimerkiksi sisällysluettelon voi määrätä sivulle komennolla \tableofcontents. Latex hoitaa sisällysluettelon muotoilun. Tällainen tapa muokata dokumenttia johtaa yleensä siihen, että kirjoittaja keskittyy enemmän itse sisältöön ja dokumentin rakenteeseen. Muotoseikoista, kuten marginaaleista, rivinvälistä, kuvatekstin paikasta tms. ei tarvitse yleensä välittää, koska Latex hoitaa ne. Se osaa yleensä fiksusti sijoitella mm. taulukot ja kuvat oikeille paikoilleen ilman että käyttäjän tarvitsee tarkasti sijoitella kuvaa tekstin sekaan.

Vaikka Wordissäkin voi käyttää tyylejä esim. luomaan otsikoille yhtenäiset muotoilut, eivät ihmiset yleensä ole tietoisia tästä, koska tyylien käyttö on vapaaehtoista. Usein näkeekin Wordillä tehtyjä dokumentteja, joissa on pahimmillaan eri fonttikoot ja rivinvälit eri kappaleissa sekä epäyhtenäiset otsikot. Tässä mielessä on hyvä, että Latex pakottaa erottamaan ulkoasun ja sisällön, ja johtaa näin hyvin yhtenäiseen ulkoasuun.

Latexilla ei ole myöskään yhtään ongelmallista muokata useiden satojen sivujen mittaisia dokumentteja. Dokumentti voidaan helposti jakaa pienempiin palasiin (esim. yksi luku aina yhteen dokumenttiin) ja silti helposti yhdistää nämä palaset yhdeksi yhtenäiseksi dokumentiksi. Latex on myös aivan omiaan matemaattisten kaavojen kanssa.

Pitää kuitenkin muistaa, että Latex ei välttämättä sovi kaikkien dokumenttien kirjoittamiseen. Jos tarkoituksena on kirjoittaa esim. muutaman sivun mittainen essee, ei tähän ole välttämättä järkeä käyttää Latexia, vaan lyhyet dokumentit kirjoittaa usein nopeammin Wordillä tai OpenOfficella (varsinkin, jos Latexin käyttöä ei ole aikaisemmin opetellut). Sen sijaan pidempään työhön, kuten tutkimusraporttiin, kandidaatintyöhön, diplomityöhön tai muuhun lopputyöhön Latex voi olla hyvä valinta. Usein yliopistot tarjoavat valmiin Latex-pohjan lopputöille. Tällöin opiskelijan ei siis tarvitse itse juuri huolehtia muotoseikoista, kuten oikeista marginaaleista, kansilehdestä, tiivistelmästä, sisällysluettelosta ja lähdeluettelosta. Opiskelijan tehtäväksi jääkin oikeastaan vain kirjoittaa tekstiä ja Latex huolehtii siitä, että työ näyttää silti, miltä pitääkin.

Mitä ohjelmia Latexin käyttö vaatii?

Minimivaatimukset dokumenttien kirjoittamiseen Latexilla ovat seuraavat:

  • Tekstieditori. Käytännössä esim. Windowsin muistiokin riittää, mutta paljon järkevämpää on käyttää Latex-dokumenttien kirjoittamiseen suunniteltuja editoreja, joiden avulla komentojen lisääminen ja dokumentin kääntäminen on helppoa. Texmaker on hyvä ja selkeä editori, joka on saatavilla niin Windowsille, Linuxille kuin Mac OS X:lle. Windowsilla suosittu editori on myös TeXnicCenter, joka sopii ehkä hieman kokeneemmille Latex-käyttäjille.
  • Latex-ympäristö (distribution). Latex-ympäristö on Latexin ydin ja sisältää varsinaisen Latex-ohjelmiston, joka tuottaa editorilla kirjoitetusta tekstistä ja komennoista lopullisen dokumentin (esim. PDF-dokumentti). Editori on siis vain oikeastaan käyttöliittymä Latex-ympäristön helppoon käyttöön. Windowsille kannattaa ladata Latex-ympäristöksi MiKTeX, Linuxille taas TeX Live ja Mac OS X:lle MacTeX.

Ensin on syytä asentaa Latex-ympäristö ja vasta sitten tekstieditori. Tämän jälkeen dokumentteja voi alkaa kirjoittaa editorilla. Latex-ympäristön perusasennusta voi laajentaa ilmaisilla lisäpaketeilla, jotka tekevät Latexin käytöstä monipuolisempaa. Esimerkiksi lisäpaketilla hyperref saa Latexin tuottamiin PDF-tiedostoihin kirjanmerkit ja viittauksiin linkit. Lisäpakettien asentaminen on ainakin Windowsin MikTexissä helppoa. Asentaminen hoituu Windowsin Käynnistä-valikosta MikTex...Browse Packages.

Huom! Jotta tavutus toimisi oikein suomenkielisillä teksteillä, pitää suomenkielen tuki laittaa yleensä päälle. Tämä tapahtuu MikTexiä käytettäessä Windowsin Käynnistä-valikosta MikTex...Settings...Languages ja rastittamalla sen, missä lukee Finnish. Jos tätä ei tee, toimii tavutus englannin kielen mukaan, jolloin suomenkielisten sanojen tavutus menee miten sattuu.

Yksinkertainen dokumentti Latexilla

Alla on esitetty esimerkki Latexilla tehdystä dokumentista:

\documentclass[12pt,a4paper,finnish,oneside]{book}
\usepackage[english,finnish]{babel}

\title{Esimerkki}
\date{12.12.2008}

\begin{document}
\selectlanguage{finnish}
\maketitle

\chapter{Johdanto}
    
\section{Otsikko1}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Sed rhoncus, ligula vestibulum rutrum rhoncus, turpis leo 
molestie tellus, ut condimentum ligula justo a lorem. 
Fusce risus. Aenean in neque. Vivamus risus mi, vestibulum in, 
sagittis non, scelerisque eget, ipsum. Donec egestas.

\subsection{Alaotsikko1}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.

\subsection{Alaotsikko2}
Fusce risus. Aenean in neque.  
  
\end{document}

Pakollisia määritelmiä (mm. documentclass) lukuun ottamatta lyhyt dokumentti näyttää siis melko yksinkertaista. Tekstiä vain tekstin perään ja Latex huolehtii lopusta.

Latex-dokumentin tuottaminen koostuu käytännössä kahdesta vaiheesta:

  1. Dokumentin kirjoittaminen editorilla Latex-kielellä
  2. Dokumentin kääntäminen lopulliseen muotoon (yleensä PDF-tiedostoksi)

Käännettäessä Latex tuottaa editorilla kirjoitetusta tekstistä DVI-, PDF- tai PostScript-tiedoston. Tavallisesti itse käännän latex-dokumentin suoraan PDF-tiedostoksi (PDFLaTeX), joka onnistuu helposti esim. Texmaker-editorissa yhtä nappia painamalla. Kun yllä esitetty dokumentti käännettään Latexilla PDF-muotoon, näyttää se tältä. Loppujen lopuksi siis melko yksinkertaisella tekstillä editorissa saadaan aikaan näyttävä dokumentti.

Viitteiden hallinta Latexilla

Edellä esitettyjen etujen lisäksi Latex tuo helpotusta myös viitteiden hallintaa. Latexin kanssa voi käyttää Bibtex-työkalua, joka tekee viitteiden hallinnasta suorastaan naurettavan helppoa. Bibtexiä käytettäessä artikkelien viitetiedot tallennetaan tekstitiedostoon tietyssä muodossa. Artikkeleille annetaan jokin tunniste (esim. artikkelin tekijä, vuosi), jolloin tähän artikkeliin voi helposti viitata tekstistä. Latex huolehtii tällöin viitteen merkitsemisestä tekstiin ja sen lisäämisestä lähdeluetteloon. Kirjoittajan ei tarvitse huolehtia lähdeluettelon muotoilusta (mm. Harvardin järjestelmässä ja numeroviitejärjestelmässä on tiettyjä muotoseikkoja, kuten missä paikkaa vuosiluku ilmoitetaan), vaan Latex hoitaa tämänkin. Hyvin monesta tieteellisestä tietokannasta saa artikkelien viitetiedot Bibtex-muodossa (esim. IEEE Explorer ja ACM Digital Library). Tiedot tarvitsee siis vain kopioida ja liittää tiedostoon, jolloin viittaaminen on helppoa.

Esimerkiksi alla on esitetty esimerkki Bibtex-tiedostosta, jossa on kahden artikkelin viitetiedot. Tiedot on kopioitu suoraan tieteellisistä tietokannoista, joista itse artikkelien kokotekstitkin on haettu.

@inproceedings{Maximilien2003,
  author={E. M. Maximilien and L. Williams},
  year={2003},
  title="{Assessing test-driven development at IBM}",
  booktitle={25th International Conference on Software Engineering},
  location={Portland, OR},
  pages={564-569},
  isbn={0-7695-1877-X},
  language={English}
}

@book{Astels2003,
  author = {D. Astels},
  title = {Test Driven development: A Practical Guide},
  year = {2003},
  isbn = {0-13-101649-0},
  publisher = {Prentice Hall Professional Technical Reference},
}

Näihin artikkeleihin voi viitata tekstistä helposti seuraavasti:

Testivetoinen ohjelmointi saattaa parantaa koodin ulkoista laatua \citep{Maximilien2003}. Niin ikään \citet{Astels2003} on väittänyt TDD:n parantavan järjestelmien testikattavuutta.

Kun dokumentin kääntää, näyttää teksti seuraavalta (käyttäen Harvardin järjestelmää):

Testivetoinen ohjelmointi saattaa parantaa koodin ulkoista laatua (Maximilien ja Williams, 2003). Niin ikään Astels (2003) on väittänyt TDD:n parantavan järjestelmien testikattavuutta.

Käyttämällä Bibtexiä ei siis tarvitse kirjoittaa artikkelin kirjoittajien nimiä tai vuosilukuja. Mikäli artikkelien kirjoittajia on useampia kuin kaksi, huolehtii Latex myös siitä, että viittaukseen tulee "Tekijä et al". Samoin mikäli joltain kirjoittajalta on useampi kuin yksi artikkeli samalta vuodelta, huolehtii Latex näiden oikeaoppisesta esittämisestä (esim. Janzen ja Saiedian, 2008a; Janzen ja Saiedian, 2008b).

Bibtex tosin hieman monimutkaistaa Latex-dokumentin kääntämistä. Pelkkä kääntäminen esim. PDFLaTeXilla ei riitä, vaan kääntäminen pitää suorittaa seuraavassa järjestyksessä: Latex, Bibtex, Latex, PDFLatex. Kuulostaa monimutkaiselta soutamiselta ja huopaamiselta, mutta esim. Texmakerin avulla tämä vaatii vain parin napin painalluksen eikä tätä tarvitse tehdä joka kerta, kun tekstiä muuttaa (vain uusia lähteitä lisättäessä). Jos käännöksessä tulee virheitä, kannattaa aluksi poistaa kaikki käännetyt tiedostot (Clean-komento Texmakerissä) ja kääntää sitten dokumentti em. järjestyksessä. Virheiden sattuessa kannattaa muutoinkin aina aloittaa kääntäminen puhtaalta pöydältä Clean-komennolla.

Kandidaatintyö Latexilla

Itse tein oman Kandidaatintyöni Latexilla (ks. PDF-tiedosto: TDD:n edut - tarua vai totta?). En aikaisemmin ollut juuri Latexiin tutustunut, mutta luettuani mainion Latex-wikin läpi dokumentin rakentaminen Latexilla oli loppujen lopuksi helpompaa kuin osasin arvatakaan. Ärräpäitä kyllä pääsi silloin tällöin etenkin taulukoiden kanssa, mutta aivan yhtä paljon olen saanut tapella Wordin ja OpenOfficen kanssa laajempia dokumentteja kirjoittaessani. Ja nyt kun olen oppinut käyttämään Latexia, on seuraavien dokumenttien kirjoittaminen helpompaa. Wordin ja OpenOfficen kanssa saa taas tapella uudestaan ja uudestaan... Kandidaatintyön tekoa helpotti erityisesti se, että TKK tarjoaa opiskelijoille kandidaatintyöhön Latex-pohjaa, joten käytännössä opiskelijan ei tarvitse kuin kirjoittaa tekstiä ja lisäillä kuvia ja taulukoita - ei siis tarvitse lähteä itse rakentelemaan esim. tiivistelmä-sivua ja arpomaan rivinväliä sekä marginaalia.

Jatkossa kirjoitan varmasti kaikki opiskelutyöt Latexilla, jotka sisältävät muutamaa sivua enemmän tekstiä. Näillä töillä tarkoitan lähinnä itsenäisesti tehtäviä töitä - useiden ihmisten kesken tehtävään dokumenttiin taas soveltuu paremmin esim. Google Docs. Oppimiskynnys Latexin käyttöön on hieman korkea, mutta en voi muuta kuin suositella kokeilemaan sitä.

Latex-pohjia

Alla on listattu pari TKK:lla käytettyä Latex-pohjaa, josta on hyvä lähteä tekemään lopputyötä, kuten kandidaatintyötä tai diplomityötä. Kannattaa aina kysyä, jos oma oppilaitos tarjoaa valmiin Latex-pohjan, jossa on yleensä muotoseikat kunnossa. Jos valmista pohjaa ei löydä, parempi on käyttää jotain näistä valmiista pohjista kuin kasata kaikki itse alusta asti.

Lisää tietoa Latexista

Tämä kirjoitus oli hyvin suppea katsaus Latexiin. Tämän ei ole tarkoituskaan olla kuin lyhyt johdanto aiheeseen, koska netistä löytyy erittäin hyviä oppaita Latexin käyttöön, joita on listattu alla.