Seuraavassa esitettävien TeX- ja LaTeX-pätkien tulostukset pitäisi lisätä tähän kuvina, mutta enpä ole ehtinyt. Luentokalvot ovat kuitenkin katseltavissa myös PDF-versiona, josta näkee, miltä tulosteiden pitäisi näyttää.
Tässä luvussa tutustutaan lyhyesti ohjelmiin, jotka on tarkoitettu nimenomaan luonnontieteellisen kaavoja sisältävän tekstin tulostamiseen. TeX ja LaTex ovat oikeastaan ainoita järjestelmiä, joilla saadaan helposti aikaan julkaisuilta vaadittavaa typografiaa. Esimerkiksi Wordin kaavaeditorin tuotteet ovat yleensä järkyttävän kammottavia.
Kirjoittaessaan tietojenkäsittelyn oppikirjasarjaa alan guru Donald E. Knuth tuskastui näihin ongelmiin niin paljon, että kehitti oman ohjelman matemaattisen tekstin tuottamiseen. Tämä ohjelma, TeX, ei ole nykyisten tekstinkäsittelyohjelmien kaltainen ns. wysiwyg-ohjelma (what you see is what you get). Kyseessä on pikemminkin jonkinlainen ohjelmointikieli. Tekstin joukkoon sijoitetaan muotoilukomentoja, joiden perusteella ohjelma tuottaa siitä tulostettavan tai katseltavan version.
LaTeX on alkuperäisen TeXin päälle rakennettu aliohjelmakirjaston (tai oikeammin makrokirjaston) tapainen järjestelmä. Sen käyttö on usein vaivattomampaa, koska monet asiat on määritelty valmiiksi. Toisaalta joidenkin oletusarvojen muuttaminen voi olla työlästä.
TeX in ja LaTeXin syöttötiedostot ovat aivan tavallista tekstiä, joka voidaan kirjoittaa millä tahansa tekstieditorilla. Tiedostossa ei ole mitään tulostumattomia erikoismerkkejä. Niinpä tiedostoja voidaan siirtää helposti erilaisten laitteistojen välillä. Tiedostot sisältävät vain itse tekstin ja muotoilukomentoja (nekin tekstiä), joiden osuus on suhteellisen pieni varsinkin suorasanaisessa tekstissä. Tiedostot ovat siten hyvin paljon pienempi kuin esimerkiksi vastaavan asian sisältävät Wordin doc-tiedostot.
TeX ja LaTeX ovat saatavina useimpiin järjestelmiin. Ne sisältyvät Linuxin asennuspaketteihin. Käyttöjärjestelmää asennettaessa tarvitsee vain valita ne mukaan otettaviksi.
Näillä ohjelmilla matemaattisten kaavojen tuottaminen on erittäin helppoa. Ne huolehtivat oikeasta typografiasta lähes automaattisesti. Ne on kuitenkin laadittu ennen kuin matemaattisia merkintätapoja koskeva ISO-standardi oli kehitetty, joten joitakin yksityiskohtia on koodattava käsin, jos haluaa todella oikeaoppista jälkeä.
Monet tieteelliset lehdet ja kirjasarjat käyttävät tekstiensä ladontaan LaTeXia. Niiden verkkosivujen kautta voi ladata valmiita paketteja, joiden avulla artikkelin tai kirjan saa juuri kustantamon haluamaan muotoon. Nykyisin monet lehdet ottavatkin vastaan vain omien ohjeittensa mukaisesti laadittuja LaTeX-tiedostoja, joten ohjelman käytön opiskelu on oikeastaan välttämätöntä, jos aikoo julkaista tieteellisiä artikkeleita.
Tässä käsitellään näiden ohjelmien käyttöä vain äärimmäisen lyhyesti esimerkkien avulla. Molemmat ovat laajoja järjestelmiä, joista on runsaasti oppikirjoja.
Fermat'n suuren lauseen mukaan yht\"al\"oll\"a $$ x^n + y^n = z^n $$ ei ole ratkaisuja, joissa $x$, $y$ ja $z$ ovat kokonaislukuja, jos $n > 2$. Fermat'n pieni lause puolestaan sanoo, ett\"a jos $p$ on alkuluku ja $a$ jokin kokonaisluku, jakolaskusta $a^p/p$ j\"a\"a jakoj\"a\"ann\"okseksi $a$. \bye
Kenoviiva \ kertoo, että sitä seuraava sana on jokin TeX in toimintaa ohjaava komento. Sitä käytetään myös joidenkin poikkeuksellisesti käsiteltävien merkkien kuten aksenttien yhteydessä.
Syötetään tämä \TeX-ohjelmalle:
tex koe
Jos tiedosto oli oikein kirjoitettu, tuloksena on tiedosto koe.dvi. Nimen loppuosa tulee sanoista device independent. Kyseessä on laiteriippumaton kuvaus, joka sisältää tiedon tulostettavista merkeistä ja niiden paikoista.
Tiedostoa koe.dvi ei voi sellaisenaan katsella eikä tulostaa. Sen avulla voidaan kuitenkin tuottaa monille erilaisille laitteille sopivia tiedostoja. Nykyisin tarvitaan yleensä PostScript-tiedostoja. Esimerkin tapauksessa se voidaan tehdä sanomalla
dvips koe
Tämä tekee vastaavan PS-tiedoston ja lähettää sen saman tien oletustulostimelle. Yleensä tätä ei haluta, vaan mieluummin katsotaan ensin kuvaruudulla, onko lopputulos halutunlainen. Siksi talletetaankin tulos tiedostoon esimerkiksi komennolla
dvips -o koe.ps koe
Nyt uurastuksemme tulos on tiedostossa koe.ps, jota voidaan tarkastella X-ikkunointiympäristössä ghostview-ohjelmalla:
gv koe.ps
Dvi-tiedostosta voidaan myös tehdä PDF-tiedosto:
dvipdf koe
Jos mukana on kuvia, PDF-muotoinen tiedosto voi olla huomattavasti pienempi kuin PS-tiedosto. Syntyvää tiedostoa voidaan katsella ohjelmalla xpdf
xpdf koe.pdf
Jos tulos on sellainen, kuin halusimme, se voidaan lähettää tulostimelle:
lpr koe.ps
Tulostus voidaan tehdä myös ohjelman xpdf ikkunassa näkyvän tulostimen ikonin avulla. Tällä tavoin kuvia sisältävät tiedostot tulostuvat yleensä paljon nopeammin.
Paperille pitäisi nyt ilmaantua seuraavanlainen tulostus:
ei esitettävissä hötlimötli-kielellä, mutta saattaa aikanaan ilmestyä tähän kuvana
Kun tulostetta vertaa alkuperäiseen tiedostoon, tiedoston merkintöjen pitäisi olla jokseenkin selviä:
x^{2n}
$\lbrace$ $\rbrace$ \^ \_ \& \# \% \$
Jokainen kappale muotoillaan kokonaisuutena niin, että sanavälit ovat suunnilleen yhtä pitkiä. Pisteen jälkeen tulee automaattisesti pitempi väli.
Kirjainten välistykset ovat kiinteät; sanan kirjaimia ei harvenneta, kuten joissakin muissa ohjelmissa on oletuksena.
Tavutusta pyritään välttämään. Oletuksena englanninkielen mukainen tavutus. Tavutusvihjeen voi merkitä: kaivos\-aukko.
Tämän kirjoittaja tuskastui aikoinaan skandi- ja tavutusjuttuihin niin paljon, että kirjoitti C-ohjelman, joka muuntaa ISOLatin1-skandit TeXin mukaisiksi ja lisää suomenkielen mukaiset tavutusohjeet. Ohjelma on kuitenkin äärimmäisen triviaali, eikä osaa käsitellä edellisen tapaisia yhdyssanoja. Se löytyy täältä. Ohjelmaa saa vapaasti käyttää, mutta omalla vastuulla; se on tehty täysin omia hieman erikoisia tarkoituksia varten, joten siinä on joitakin rajoituksia. Hyvä harjoitustehtävä on tutkia, mitä se oikein tekee ja korjata sen puutteet.
Murtolausekkeet
{1\over x} {a + bx\over 1 + cx + dx^2}
Integraalimerkki on \int. Integroimisrajat voidaan ilmoittaa samalla tavoin kuin ala- ja yläindeksit.
Esimerkiksi
u = \int f(x)\,dx, \int_0^\infty e^{-x}\, dx = 1.
Summamerkkiä \sum käytetään vastaavalla tavalla
\zeta(x) = \sum_{i=1}^\infty {1 \over x^i}.
Alkeisfunktiot
\sqrt{1+x} \sin x \tan x \ln x
Näistä voi rakentaa mutkikkaampia lausekkeita:
\sqrt{ {1+x \over 1- \sqrt{1-x}} }
Sekalaista
\lim_{x \rightarrow 0} = \infty \vert \pm 1 \vert = 1
Lausekkeiden ympärillä pitäisi olla oikean kokoiset sulut. Sulkumerkkien koon voi valita itse, mutta se käy myös automaattisesti makroilla \left ja \right. Esimerkiksi
\left( {a \over \sqrt{1+x}} \right)^2
Ohjelmointikielten terminologian mukaan TeXissä määriteltävät oliot eivät ole aliohjelmia vaan makroja.
Yksinkertaisimmillaan makro voi vain korvata tietyn pätkän tekstiä.
\def\name{What is the name of this book?}
Tässä name on makron nimi. Kun tekstissä esiintyy makrokutsu \name, se korvautuu tekstillä What is the name of this book?
Makrolla voi olla myös parametreja. Parametrien merkkeinä TeXissä ovat #1, #2 jne.
Ajatellaanpa, että tekstimme vilisee funktion $f$ osittaisderivaattoja eri muuttujien suhteen. Määritellään seuraavanlainen makro:
\def\pd#1{{\partial f\over\partial #1}}
Nyt voimme kirjoittaa tiedostoon
\pd{x}
Makrojen avulla mutkikkaatkin rakenteet voidaan korvata yksinkertaisella kutsulla, jolle voidaan antaa aiheeseen sopiva havainnollinen nimi.
Edellä ollut esimerkki LaTeXilla olisi:
\documentclass[a4]{article} \begin{document} \usepackage{amsmath} Fermat'n suuren lauseen mukaan yht\"al\"oll\"a \begin{equation*} x^n + y^n = z^n \end{equation*} ei ole ratkaisuja, joissa $x$, $y$ ja $z$ ovat kokonaislukuja, jos $n > 2$. Fermat'n pieni lause puolestaan sanoo, ett\"a jos $p$ on alkuluku ja $a$ jokin kokonaisluku, jakolaskusta $a^p/p$ j\"a\"a jakoj\"a\"ann\"okseksi $a$. \end{document}
Tässä määritellään, että käytetään A4-kokoisia sivuja ja artikkelille määriteltyä ulkoasua.
Jos esimerkki on taaskin tiedostossa koe.tex, siitä saadaan dvi-tiedosto komennolla
latex koe.tex
Tästä eteenpäin toimintaa jatketaan samalla tavoin kuin TeX-tiedoston tapauksessa.
LaTeXissa on valmiina työkalut sisällysluettelon ja aakkosellisen hakemiston tuottamiseen. Tiedot tulostuvat omiin tiedostoihinsa, joista ne poimitaan tekstin joukkoon LaTeXin komennoilla.
Kaavoille, kuville ja taulukoille voidaan antaa nimet, jolloin niihin voidaan viitata näiden nimien avulla. Tämä on kätevää, koska kaavojen ja kuvien numerot tuppaavat muuttumaan tekstiä muokattaessa. Koska viittaukset voivat osoittaa myös olioihin, jotka esiintyvät tekstissä vasta myöhemmin, niitä ei voida käsitellä saman tien. Nimet talletetaankin tiedostoon, josta ne luetaan seuraavalla kerralla.
Jos tekstiä muutetaan, hakemiston sivunumerot ja muut viittaukset voivat muuttua, jolloin aputiedostot eivät ole ajan tasalla. Kun teksti on ajettu LaTeXin läpi ilman virheilmoituksia, LaTeX on suoritettava vielä uudestaan, jotta kaikki viittaukset olisivat oikein.
LaTeXin käyttö on aloittelijallekin suhteellisen helppoa, varsinkin jos voi käyttää jotakin valmiiksi määriteltyä muotoilutapaa. Jos sen sijaan haluaa luoda aivan oman tyylinsä, homma voi käydä aika työlääksi, koska jotkin asiat on haudattu syvälle makrokirjastoon, josta niiden löytäminen ja muuttaminen voi olla erittäin hankalaa. Siksi esimerkiksi tämän kirjoittaja käyttää alkuperäistä TeX-ohjelmaa, jossa määrittelyjen muuttaminen on helpompaa. Siinäkin oman tyylin määritteleminen on melko mutkikasta, mutta kun sen on kerran tehnyt, sitä on helppo muokata. Tämän tekstin määrittelyt ovat erillisessä tiedostossa, johon ei yleensä tarvitse kajota, ja sopivien makrojen ansiosta itse tekstitiedoston muoto ei juuri poikkea LaTeXin tiedostoista.
Virhediagnostiikka on toinen pieni mutta harmittava ongelma. LaTeXin tapauksessa virhe saatetaan havaita jossakin syvällä sisäkkäisten makrokutsujen uumenissa, jolloin seurauksena voi joskus olla suuri joukko virheilmoituksia, jotka eivät ole mitenkään havainnollisia. TeXin ilmoitukset osoittavat selvemmin virheen todellisen paikan ja syyn.
AMS-LaTeXissa on matematiikkaan liittyviä laajennuksia. Ne saadaan käyttöön komennolla
\usepackage{amsmath}
Seuraavassa käsiteltävistä piirteistä jotkin ovat peräisin juuri tästä pakkauksesta.
Jollakin erikoistavalla käsiteltäviä ympäristöjä rajataan begin--end pareilla; esimerkiksi omalle rivilleen tuleva kaava on muotoa:
\begin{equation} ... \end{equation}
Näin kirjoitetulle kaavalle annetaan myös automaattisesti numero. Jos kaavaa ei haluta numeroida, kuten aikaisemmassa esimerkissä, sanan equation loppuun kirjoitetaan *.
Usealle riville tuleva kaava kohdistetaan aligned-ympäristössä. Kohdistuspaikka ilmoitetaan merkillä \&. Taulukkoja varten on tabular-ympäristö. \page
\documentclass{article} \usepackage{amsmath} \begin{document} \title{Test file} \author{H. Karttunen} \maketitle \section{Formula} Using {\em Kepler's third law} we get \begin{equation*} \begin{aligned} P^2 &= \frac{4\pi^2 a^3}{G(m_1+m_2)} \\ &= \frac{4\pi^2\times 1}{6.67\times10^{-11}(5+5)} \\ &= 5.9 \times 10^{10}\ {\rm s}^2. \end{aligned} \end{equation*} \section{Table} \begin{tabular}{|l|crr|} % preamble \hline name &type&magnitude&distance \\ \hline M31 &Sb & 3.2 & 760 \\ M33 &Sc & 5.6 & 790 \\ \hline \end{tabular} \end{document}
EPS-tiedostot ovat itse asiassa ohjelmia ja sisältävät aivan tavallista tekstiä. Alussa on tavallisesti seuraavanlainen rivi:
%!PS-Adobe-2.0 EPSF-3.0
Numerot voivat poiketa tästä; ne ilmoittavat vain käytetyn kielen version. Varsinkin Windows-ympäristöstä peräisin olevissa tiedostoissa saattaa tämän edellä olla koodia, joka ei ole selväkielistä tekstiä. Tämä osa on poistettava ennen kuin kuvaa voi käyttää. Samoin tiedoston lopussa voi olla ylimääräistä roskaa. Tiedoston voi korjata millä tahansa editorilla.
Tiedoston alussa on joukko %-merkeillä alkavia kommenttirivejä, joilla on tietoa kuvasta. Niiden joukossa pitäisi olla seuraavantapainen rivi, joka määrittelee, minkä kokoisen tilan kuva tarvitsee. Yksikkönä on piste, joka on 1/72 tuumaa. Tätä tietoa tarvitaan kuvan sijoittelussa.
%%BoundingBox: 0 0 200 500
Jotta kuvia voitaisiin liittää LaTeX-dokumenttiin, tarvitaan joitakin apuvälineitä. Kuvien käsittelyyn tarvitaan jokin makropaketti, kuten epsfig.sty; muitakin on, mutta tämä lienee tavallisin. Paketti otetaan käyttöön usepackage-kutsulla:
\documentclass[a4]{article} \usepackage{epsfig} \begin{document} ...
Jos EPS-kuva on tiedostossa kuva.eps, se voidaan liittä dokumenttiin seuraavasti:
\begin{figure} \epsfig{file=kuva.eps} \caption{Tämä on kuvateksti.} \end{figure}
Kuvan BoundingBoxin perusteella sille varataan sopiva tila. Kuvan kokoa tai asentoa voi myös muuttaa:
\epsfig{file=kuva.eps, scale=0.5} % pienennys puoleen kokoon \epsfig{file=kuva.eps, width=10cm} % maksimileveys 10 cm \epsfig{file=kuva.eps, height=10cm} % maksimikorkeus 10 cm \epsfig{file=kuva.eps, angle=90} % kierto 90 astetta
Kuvaa ei sijoiteta siihen kohtaan tekstiä, jossa nämä kutsut esiintyvät, vaan seuraavan sivun alkuun. Jos samalle sivulle tulisi useita kuvia, ne eivät välttämättä mahdu sivulle, jolloin ne voivat siirtyä myöhemmille sivuille. Mikäli kuvia on paljon, viimeiset kuvat saattavat tulostua vasta koko tekstin jälkeen.
Kuva voidaan myös pakottaa tulostumaan juuri tähän parametrilla H (here):
\begin{figure}[H] ... \end{figure}
Kuvan sijoitteluun liittyy muitakin parametreja. Ne löytyvät epsfigin mukana tulevasta dokumentista.
\define\e{{\rm e}}
\int f(x)\,{\rm d}x
Pikselifontti kuvaa merkit tällaisina matriiseina. Jos merkkiä suurennetaan, se alkaa näyttää kasalta nelikulmaisia laatikoita. Jos merkit on määritelty vain pikselien avulla, niiden kokoa ei voi muuttaa ilman, että tulos alkaa näyttää rumalta. Siksi pikselifontit on määriteltävä erikseen jokaista tarvittavaa kirjainkokoa varten.
Outline-fonteissa merkit kuvataan matemaattisten käyrien avulla. Tällainen fontti on vapaassti skaalattavissa mihin kokoon tahansa, sillä määrittelytapa on erotuskyvystä riippumaton. Tulostuslaitteen tehtäväksi jää merkkien rasterointi tulostimen erotuskykyä vastaavaksi. Tällaista menetelmää käytetään mm. Adoben kehittämässä PostScript-kielessä.
Valitettavasti TeX syntyi ennen PostScriptiä. Sen alkuperäiset kirjasintyypit ovat pikselifontteja, jotka on luotava kullekin tulostimelle ja kirjasinkoolle. Kirjasintyyppien käsittelyä varten Knuth kehitti sitten toisen ohjelman Metafontin. Siinä merkit määritellään PostScriptin tapaan matemaattisten käyrien rajaamina alueina, ja näiden määritelmien avulla tuotetaan vastaavat pikselitiedostot. Jos järjestelmä olisi syntynyt hieman myöhemmin, tämä välivaihe olisi voitu jättää pois ja käyttää pelkästään erotuskyvystä ja tulostuslaitteesta riippumattomia kirjasintyyppejä.
Linuxin TeX-järjestelmä on rakennettu semmoiseksi, että se generoi tarvittavat pikselitiedostot Metafont-ohjelmalla. Käyttäjän ei tarvitse huolehtia siitä, onko sopivankokoisia merkkejä määritelty. Tämä on tosin turhaa painolastia, sillä sama asia voitaisiin hoitaa yhdellä erotuskyvystä riippumattomalla fonttisarjalla.
Kun dvips tai jokin muu laiteriippuvaa koodia tuottava ohjelma suoritetaan, se tarkistaa, ovatko tarvittavat fontit jo olemassa. Ellei, se tuottaa ne Metafontilla. Tästä aiheutuu suuri määrä tulostusta, mutta siitä ei tarvitse huolestua.
Oletuksena käytetään cm-sarjan (computer modern) fontteja. Ne ovat varsin luettavia, vaikkakin vaikuttavat ehkä hieman vanhanaikaisilta. Ne sopivat kuitenkin yhteen kaavoissa käytettävien fonttien kanssa. Mikäli haluaa vaihtaa johonkin kovin toisenlaiseen kirjaimistoon, voi joutua melkoiseen suohon symbolifonttien kanssa.
Leslie Lamport: LaTeX, Addison-Wesley 1986. LaTeXin kehittäjän alkuperäinen käsikirja. LaTeXia on myöhemmin kehitetty edelleen, ja tämä teos ei sisällä näitä uudempia piirteitä.
Goossens, Mittelbach, Samarin: The LaTeX companion, Addison-Wesley 1994. Suhteellisen hyvä perusteos, joka käsittelee uudempaa standardia LaTeX2epsilon. Tämä tai seuraava kirja ovat hyödyllisiä (milteipä välttämättömiä) hankintoja LaTeXin käyttäjille.
Lipkin: LaTeX for Linux, Springer 1999. Samantapainen kuin edellinen. Keskittyy Linux-käyttöjärjestelmään, mutta TeX ja LaTeX ovat hyvin samanlaisia kaikissa järjestelmissä.