LaTeX-kirjasinkirjoitus ohjelmointikielenä

LaTeX on asiakirjojen kirjasinkirjoitusjärjestelmä, joka korvaa What-You-See-Is-Is-What-You-Get-käsitteen tavanomaisten ohjelmointikielten vakioideoilla. Mark Harman havainnollistaa tämän perinnöllisyyden voimaa.

Kuka tahansa, joka on käyttänyt What-You-See-Is-What-You-Get (WYSIWYG) -editoria, tekstinkäsittelyohjelmaa tai DTP-pakettia, on luultavasti ollut turhautunut kahteen asiaan:-

WYSIWYG tuntuu aina olevan valetta Se, mitä näet, on melko lailla samanlainen kuin se, mitä saat, tai se, mitä näet, on melkein aina sitä, mitä saat, tai se, mitä näet, olisi sitä, mitä saisitkin, jos tulostimessasi olisi ollut oikeat kirjasintyypit; mutta se, mitä näet, on vain harvoin sitä, mitä saat.

WYSIWYG on rajoittava Oletetaan, että et saa nähdä mitä haluat? What you see is what you get sisältää lisäksi sen hiljaisen implikaation, että mitä et onnistu näkemään, et myöskään saa. Kuinka usein oletkaan halunnut jonkin asian näyttävän hieman erilaiselta (tai ehkä hyvin erilaiselta), mutta editorisi ei salli sitä?

LaTeX (lausutaan Lateck) on kirjoitusjärjestelmä, joka ei noudata WYSIWYG-lähestymistapaa. Sen sijaan se on saanut vaikutteita ohjelmointikielistä. Se perii kaikki ohjelmointikielten edut ja osan niiden haitoista. Sen sijaan, että asiakirja laadittaisiin näytöllä (WYSIWYG-lähestymistapa), LaTeX-asiakirja on ohjelma, joka kertoo LaTeX-järjestelmälle, miten asiakirja luodaan. Ohjelma käännetään LaTeX-kääntäjän avulla tulostettavaksi tai katseltavaksi asiakirjaksi.

Tämä saattaa kuulostaa hieman oudolta WYSIWYG-lähestymistapaan perehtyneelle, mutta jokainen, joka nauttii (tai arvostaa) korkean tason ohjelmointikielen tehosta ja joustavuudesta, huomaa pian, että LaTeX on yksinkertaisesti parempi tapa suunnitella asiakirjoja.

Tässä artikkelissa selitän hieman LaTeX-kieltä, sen verran, että voit ladata ilmaisen LaTeX-järjestelmän ja kirjoittaa joitakin tavallisia dokumentteja. Aikaa ei ole käsitellä kaikkia LaTeXin ominaisuuksia (siihen tarvittaisiin kokonainen kirja), mutta toivon jättäväni sinulle vahvan käsityksen siitä, millä tavoin asiakirjan kirjoittaminen voisi LaTeXin avulla olla samanlaista toimintaa kuin ohjelman kirjoittaminen.

Yksinkertainen LaTeX-lähdetiedosto

Kuvassa 1 on yksinkertainen LaTeX-lähdetiedosto. Ensimmäinen rivi on ennalta määritelty LaTeX-komento. Kaikki komennot alkavat backslash-merkillä. Ensimmäisellä rivillä oleva komento määrittää laadittavan asiakirjan yleiset ominaisuudet. Asiakirjan tyyli article on lyhyen artikkelin tyyli. Muita tyylejä ovat esimerkiksi kirja, raportti, tutkielma ja niin edelleen. Jokainen asiakirjatyyli muuttaa globaaleja parametreja, jotka kuvaavat asiakirjan ulkoasua. Esimerkiksi kirja-ympäristössä tuotetaan juoksevat otsikot, joissa annetaan luvun otsikko ja kirjoittaja vuorotellen eri sivuilla.

Kuten kaikki hyvät ohjelmointikielet, kaikki tämä on tietenkin täysin konfiguroitavissa. Kuitenkin, kuten useimmissa ohjelmointikielissä, mitä enemmän joustavuutta haluat, sitä enemmän sinun täytyy tietää taustalla olevasta ohjelmointikielestä. Onneksi kaikkien LaTeX-ympäristöjen oletusasetukset antavat erittäin miellyttäviä tuloksia, joten on mahdollista päästä pitkälle ilman, että tarvitsee tietää liikaa taustalla olevasta kielestä. Se, mitä saat, on todennäköisesti sitä, mitä haluat, ja jos se ei ole sitä, voit ainakin muuttaa sitä.

Itse asiakirjan teksti sisältyy komentoihin \begin{document} … \end{document}, \begin{} ja \end{} ovat komentoja, jotka avaavat ja sulkevat ympäristön. Kaikki asiakirjat (ja asiakirjojen osat) kirjoitetaan ympäristössä. Voimme myös sijoittaa ympäristöjä toisiinsa, kuten näemme myöhemmin.

Välimerkit ovat LaTeXille merkityksettömiä; yksi välimerkki on yhtä hyvä kuin sata. Uusia rivejä voidaan myös lisätä mihin tahansa, mutta kahta tai useampaa uutta riviä käytetään merkitsemään kohtaa, jossa yksi kappale päättyy ja toinen alkaa. Kun tulostat lopullisen asiakirjan, LaTeX tasaa tekstin vasemmalle ja oikealle (lisäämällä väliviivoja, kun pelkkä tasaus johtaisi epämiellyttävään tulosteeseen).

Laaja asiakirja koostuu yleensä useista osioista, jotka voivat sisältää alajaksoja. Uusi jakso tuodaan LaTeXiin \section-komennolla ja uusi alajakso \subsection-komennolla. Kuvan 2 LaTeX-lähdekoodi kuvaa asiakirjaa, jossa on kaksi jaksoa, joiden otsikot ovat johdanto ja perustelut. Huomaa, että lähdekoodissa meidän ei tarvitse antaa jaksoille jaksonumeroa. LaTeX tekee tämän puolestamme, kun se kääntää asiakirjan. Johdanto on siis osio numero 1 ja perustelut osio numero 2. Jos vaihdamme näiden kahden jakson esiintymisjärjestystä (leikkaamalla ja liittämällä lähdekoodin), perusteluista tulee jakso 1, kun taas johdannosta tulee automaattisesti jakso 2.

Nyt herää tärkeä kysymys: Miten tekisin ristiviittauksen osiosta toiseen? Oletetaan esimerkiksi, että haluan viitata osioon johdanto osiossa perustelut. Se, miten tämä onnistuu, havainnollistaa ensimmäisen edun, jonka saamme LaTeXin toimintatavasta.

Symboliviittaukset

Koska LaTeX-lähdetiedosto on ohjelma, voit käyttää symbolisia nimiä asiakirjan osiin viittaamiseen. Tämä tekee ristiviittauksista miellyttäviä, koska ristiviittaus on looginen kokonaisuus, joka viittaa johonkin nimettyyn dokumentin osaan. Jos tämä nimetty asiakirjan osa pitäisi siirtää, meidän tarvitsee vain kääntää se uudelleen.

Symboliviittauksen käyttöönottoon käytämme komentoa \label{} ja siihen viittaamiseen komentoa \ref{}. Kuva 3 havainnollistaa tätä. \label{intro} esittelee symbolisen nimen, label, jonka arvo riippuu kontekstista, jossa \label-komento esiintyy. Tässä tapauksessa, koska \label-komentoa käytetään asiakirjan ensimmäisessä osassa, intro-komennolle annetaan arvo 1. Komento \ref{} yksinkertaisesti tuottaa labelin arvon. Jos nyt siirrän johdannon uuteen paikkaan, esimerkiksi perusteluosion jälkeen, intro:n arvo muuttuu 2:ksi, ja ristiviittaus perusteluosassa osoittaa näin ollen osion johdannon uuteen paikkaan.

Tämä kirjoitustyyli pakottaa meidät ajattelemaan asiakirjaa loogisella tasolla eikä fyysisellä tasolla. Olisi typerää kirjoittaa, kuten näimme aiemmin esimerkiksi jaksossa \ref{intro}, koska saatamme siirtää etiketin intro viittauksen jälkeiseen kohtaan. Sen sijaan, että ajattelisimme asiakirjaa monoliittisena, tietyssä järjestyksessä esiintyvänä tekstinä, ajattelemme sitä korkeammalla abstraktiotasolla, kokoelmana osioita, joita voimme vapaasti liikutella. Voimme jopa käyttää yhden asiakirjan osioita uudelleen toisessa asiakirjassa, ja edellyttäen, että symboliset nimemme ovat yksilöllisiä, huomaamme, että kaikki ristiinviittaukset toimivat oikein.

Joitakin muita ympäristöjä

LaTeXissä on paljon hyödyllisiä esiasetettuja ympäristöjä. Oletetaan, että haluamme tuottaa pisteiden sarjan käyttäen bulletteja. Voimme tehdä tämän itemize-ympäristön avulla, kuvan 4 lähdekoodi tuottaa asiakirjan, jossa luetellaan kolme aineen pääasiallista olomuotoa, yksi per rivi ja jokaista edeltää bullet point -merkki. Monessa suhteessa LaTeXin tapa suunnitella dokumentti on samanlainen kuin HTML:n tapa tehdä asioita. Esimerkiksi itemize-ympäristö muistuttaa melko paljon HTML:n lajittelematonta listaympäristöä.

Joskus haluamme laittaa kohteita lajiteltuun, numeroituun listaan. Tämä onnistuu enumerate-ympäristöllä. Kuvassa 5 on lueteltujen kohteiden sisäkkäinen sarja, joka kuvaa geologisen ajan neljää aikakautta ja niiden sisällä olevia ajanjaksoja. LaTeX käyttää eri numerointijärjestelmiä kutakin sisäkkäistasoa varten (arabialaiset numerot tasolle yksi, aakkoset tasolle kaksi ja roomalaiset numerot tasolle kolme). Tätä, kuten kaikkea muutakin, voi halutessaan muuttaa.

Tekstin osan korostamiseksi se suljetaan em (korostus) -ympäristöön, joten kirjoitetaan yksinkertaisesti \begin{em} help! \end{em} she cried. korostaaksemme sanaa help (ja sitä seuraavaa huutomerkkiä).

Proseduurit

Tavanomaisessa ohjelmointikielessä mahdollisuus määritellä proseduureja antaa ohjelmoijalle huomattavaa joustavuutta. Myös LaTeXissä voidaan määritellä proseduureja tekstin asettelua varten. Yksinkertaisin proseduurin muoto on parametriton proseduuri. Sen avulla voimme nimetä jonkin lähdekoodin osan ja sitten kutsua sitä. Oletetaan, että kirjoitan asiakirjaa, jossa haluan viitata johonkin hedelmään, mutta en ole vielä päättänyt, onko se omena, appelsiini vai päärynä. Voisin ottaa käyttöön proseduurin nimeltä hedelmä ja laittaa sen runkoon mielivaltaisen hedelmän nimen. Kun olen vihdoin päättänyt, mihin hedelmään haluan viitata, minun tarvitsee vain muuttaa proseduurin runkoa; kaikki kohdat, joissa proseduuria kutsutaan, ottavat silloin automaattisesti huomioon sen rungon muutoksen.

LaTeXissä proseduuria kutsutaan komennoksi, ja uusi proseduuri luodaan komennolla \newcommand. Komentoja kutsutaan usein makroiksi, koska LaTeX laajentaa kutsut niihin, kun se kohtaa ne asiakirjan rungossa. Kuva 6 havainnollistaa yksinkertaisen parametrittoman makron käyttöä. Kun kuvan LaTeX-lähde käännetään, se tuottaa tekstin The first apple to appear will be the first apple I shall eat.

Täysin reilusti sanottuna tämä voitaisiin saavuttaa, ehkä yksinkertaisemmin, WYSIWYG-tekstinkäsittelyohjelmalla, yksinkertaisesti suorittamalla haku ja korvaaminen. (Tämä ei tietenkään olisi toiminut, jos lause olisi ollut ensimmäinen \fruit to appear is the apple of my eye!). Tämä on kuitenkin vain yksinkertainen esimerkki siitä, mitä voimme tehdä LaTeX-makroilla. Ne pääsevät kunnolla oikeuksiinsa, kun annamme niille parametreja.

Parametrit

Asettakaamme, että kirjoitan dokumenttia arrayjen käsittelystä. Saatan haluta kuvata algoritmin, jolla löydetään joukon suurin alkio. Tehdäkseni dokumentista yleisluontoisemman ja säästyäkseni suurten osien uudelleenkirjoittamiselta voisin laatia kaksi versiota, joista kumpikin on tarkoitettu tietylle ohjelmointikielelle, esimerkiksi Basicille ja C:lle. Käskyjä käyttämällä voin välttää käyttämästä tietyntyyppistä matriisien syntaksia, tai ainakin pystyn vangitsemaan syntaktiset erot yhteen ainoaan käskyyn, mikä tekee dokumenttini mukauttamisesta eri ohjelmointikielille paljon helpompaa.

Kuvio 7 havainnollistaa tätä. Komennon \lookup määrittelyssä kerrotaan LaTeX-kääntäjälle, että komento ottaa kaksi parametria, joista ensimmäiseen viitataan nimellä #1 ja toiseen #2. Komennon kutsussa parametrit annetaan peräkkäin sulkeissa. Kutsu \lookup{S}{2} tuottaa siis tekstin S(2). Tämä on Basic-versio \lookup-komennosta. Jos korvaamme sen kuvassa 8 esitetyllä versiolla, saamme saman asiakirjan, mutta joukko-viittaukset ovat hakasulkeissa. Tämä on asiakirjan C-versio. Huomatkaa, että näiden kahden LaTeX-lähdedokumentin ero on täsmälleen kaksi merkkiä, nimittäin ne kaksi merkkiä, jotka muodostavat Basicin ja C:n array-viittausten välisen eron.

Kuten ohjelmointikielen proseduurien kohdalla, on mahdollista kutsua yhtä proseduuria toisen proseduurin rungosta ja käyttää proseduurikutsun tulosta toisen proseduurin varsinaisena parametrina. Voimme siis esimerkiksi kirjoittaa \lookup{A}{\lookup{B}{1}}}, joka tuottaa joko tekstin A(B(1)) tai A] riippuen siitä, käytämmekö Basic- vai C-versiota \lookup-komennosta.

Muuttujat

LaTeX:ssä on omat muuttujat, joilla voimme suorittaa yksinkertaista aritmeettista laskentaa (edistyneemmät aritmeettisen laskennan muodotkin ovat mahdollisia, mutta yhteenlasku riittää tavallisesti vain puhtaaksikirjoituksessa). Tarkastelen kahta yksinkertaista esimerkkiä siitä, miten voimme käyttää muuttujia, jotka molemmat ovat tuttuja ohjelmoijille; laskurimuuttuja ja lippumuuttuja.

Esitettäköön, että haluamme sisällyttää dokumenttiin numeroitujen pisteiden sarjan. Voimme käyttää laskurimuuttujaa numeroidaksemme jokaisen pisteen ja kirjoittaa muutaman yksinkertaisen komennon numeroinnin ohjaamiseksi. Kuva 9 havainnollistaa tätä. Laskuri ilmoitetaan komennolla \newcounter. Se asetetaan tiettyyn arvoon komennolla \setcounter. Komennolla \point tulostetaan nykyinen pisteen numero ja askelletaan laskuri (lisätään yksi sen arvoon). Komento \the<name>, jollekin laskurille <name>, aiheuttaa muuttujan arvon tulostamisen. Tätä komentoa voidaan käyttää minkä tahansa muuttujan kanssa, ei vain käyttäjän asettamien muuttujien kanssa, joten esimerkiksi \thesection tulostaa section-muuttujan nykyisen arvon. Kuvassa 9 käytämme komentoa \point tulostaaksemme kolme pistettä. Tämän lähestymistavan hieno ominaisuus on, että voimme vaihdella pisteiden järjestystä, jolloin numerointi muuttuu sen mukaisesti.

Katsotaan nyt, miten voimme käyttää muuttujia lipuina, joiden avulla voimme valita, mitä tekstiä asiakirjassa tuotetaan. Kuten tulemme näkemään, lippujen ja makrojen yhdistelmän avulla voimme kirjoittaa hyvin yleisiä asiakirjoja, jotka voidaan toteuttaa yksinkertaisesti valitsemalla sopiva arvo lipulle. Mietitään taas ongelmaa, joka koskee taulukoita käsittelevän asiakirjan kirjoittamista, jossa haluaisimme komennosta \lookup kaksi muotoa, toisen Basicille ja toisen C:lle. Olisi parempi, jos voisimme käyttää LaTeX-lähteessämme lippua, jolla voisimme ilmoittaa, oliko kielenä C vai Basic. Silloin meidän ei tarvitsisi kuin antaa lipulle oikea arvo ennen asiakirjan kääntämistä. Kuva 10 havainnollistaa tätä.

Ensin täytyy sisällyttää documentstyle-julistukseen vaihtoehto ifthen. Näin voimme myöhemmin käyttää komentoa \ifthenelse. Seuraavaksi ilmoitamme laskurimuuttujan language, joka asetetaan arvoon 1, jos kielenä on Basic, ja arvoon 0, jos kielenä on C. LaTeX käyttää %-symbolia kommentteja varten; LaTeX-kääntäjä jättää huomiotta kaiken tekstin, joka esiintyy %-symbolin jälkeen (ja ennen rivin loppua). Seuraavaksi asetamme laskurin arvoon 1 komennolla \setcounter{language}{1}, joten tuottamamme teksti on tässä tapauksessa erikoistunut Basic-kielelle. Erikoistaminen tapahtuu \lookup-komennon muutetulla versiolla. Uusi versio \lookupista käyttää sisäänrakennettua komentoa \ifthenesle kielimuuttujan arvon testaamiseen. \ifthenelse-komennon muoto on \ifthenelse{<test>}{<then_branch>}{<else_branch>}. Se käyttäytyy aivan kuten if-lause tavallisessa ohjelmointikielessä. Jos <test> evaluoituu todeksi, tuotetaan <then_branch>:n teksti, jos taas false, tuotetaan <else_branch>:n teksti.

Tämän lipun avulla voimme kirjoittaa paljon komentoja, joista jokainen tuottaa tietynlaisen lausekkeen tekstin, kieli riippuu lipun laskurimuuttujan arvosta. Tällä tavoin voisimme kirjoittaa yleisen asiakirjan ohjelmoinnista ja yksinkertaisesti asettaa lipun asianmukaisesti, jotta saisimme haluamamme erikoisversion asiakirjasta.

Kuvassa 10 näytetään, miten voisimme tehdä näin. Määrittelemme komennot, jotka tuottavat Basic- tai C-syntaksia joukkojen etsimistä varten (käyttäen \lookup-makroa, kuten edellä on kuvattu), joukkojen päivittämistä varten ja, vielä tarkemmin, komennon, joka tuottaa for-silmukalle sopivan syntaksin. Jälkimmäinen näistä vaatii hieman lisäselvitystä.

Ero for-silmukan välillä C:ssä ja Basicissa on pitkälti syntaktinen, ja voimme käyttää LaTeXin joustavuutta näiden syntaktisten yksityiskohtien välttämiseksi. Komento \forloop käytti lippulaskurikieltä päättämään, asetetaanko silmukan neljä elementtiä Basic- vai C-tyyliin. Näin voimme kirjoittaa jonkin verran tekstiä joukkojen alustamisesta ja silmukoista ilman, että meidän tarvitsee päättää, kumpaan kieleen kohdedokumentti viittaa.

Huomaa, että for-silmukan syntaksin C-versiossa silmukan rungon lausekkeita ympäröivät sulkeet kirjoitetaan muodossa \{ … \}, eikä { … }. Tämä johtuu siitä, että kihara sulkujen symboleilla on jo jokin merkitys LaTeXille, joten saadaksemme sen tulostamaan kiharat sulut asetamme niiden eteen backslash-merkin.

Kuviossa 10 asetamme laskurikieleksi 1, joten tuotettu tuloste on for Basic. Kuvan 10 lähdekoodista LaTeX tuottaa kuvan 11 mukaisen tulosteen. Jos haluamme tuottaa asiakirjan, joka kertoo saman asian C-matriiseista, meidän on vain muutettava rivi \setcounter{language}{1} muotoon \setcounter{language}{0}. Se on niin helppoa.

Matematiikka

LaTeXiä kehutaan usein (ja oikeutetusti) tavasta, jolla se mahdollistaa monimutkaisen matematiikan kirjoittamisen. Monet nykyaikaiset matematiikan, tietojenkäsittelyn ja muiden luonnontieteiden ja tekniikan alojen tekstit on kirjoitettu LaTeXillä.

Matemaattinen teksti voidaan asettaa joko riviin, jolloin se näkyy siinä lauseessa, johon se on kirjoitettu, tai näyttötilassa, jolloin se näkyy keskitetysti omalla rivillään ikään kuin näytettynä. Kaikki tavanomaiset matemaattiset symbolit ja tekstimuodot ovat käytettävissä komentojen avulla. Koska LaTeX on ollut käytössä jo niin kauan, ja monet matemaatikot ympäri maailmaa ovat kehittäneet ja parantaneet sitä, on erittäin epätodennäköistä, että on olemassa sellaista matemaattista tulostusmuotoa, jota joku ei olisi huomioinut. Pikainen kirjahyllysi läpikäynti paljastaa luultavasti LaTeXiä koskevia mainintoja useissa tietojenkäsittelyn ja matematiikan oppikirjoissa, sillä sitä käytetään usein teknisten kirjojen laatimiseen, jolloin kirjoittaja(t) voi(vat) toimittaa kameravalmiita kopioita kustantajilleen.

LaTeX-käyttäjäyhteisö, joka huolehtii siitä, että kaikki nämä arvokkaat tiedot kerätään talteen, niitä ylläpidetään ja päivitetään, kukoistaa. Kaikki LaTeX-kehitykset ovat täysin taaksepäin yhteensopivia, joten ei tarvitse pelätä, että dokumenttisi jotenkin vanhenevat.

Käytä uudelleen

Arvioin, että LaTeXin käyttämiseen tarvitaan kahdesta päivästä yhteen viikkoon. Moni lukija saattaa pitää tätä sietämättömänä, kun sitä verrataan WYSIWYG-editorien käyttöönottoaikaan. Varmasti, jos sinun täytyy vain laatia asiakirjoja, kuten kirjeitä ja muistioita, LaTeXiä ei luultavasti kannata harkita. Jos kuitenkin on kyse suuren tekstimäärän tuottamisesta ja olet valmis investoimaan järjestelmään, joka voi lopulta säästää kuukausien työmäärän, LaTeX voi olla ratkaisu.

Yksi LaTeXin käyttäjien kokemista aineettomimmista mutta houkuttelevimmista eduista on se, että LaTeX tukee hyvän ohjelmointikielen tapaan uudelleenkäyttöä. Hyvin nopeasti huomaat rakentavasi itsellesi joukon henkilökohtaisia makroja, joiden avulla voit räätälöidä asiakirjojasi oman makusi mukaan. Asiakirjan osien uudelleenkäyttö toisessa asiakirjassa onnistuu vaivattomasti ja saumattomasti. Saumattomuus johtuu LaTeXin lähestymistavan kahdesta näkökohdasta. Asiakirjan osien symbolinen nimeäminen mahdollistaa sen, että ristiviittaukset päivittyvät automaattisesti, kun asiakirjaa muokataan. Ympäristön käsite tarkoittaa, että sama lähdeteksti voi näyttää erilaiselta, kun se sisällytetään eri yhteyksiin. Tämä on tietenkin suoraan ristiriidassa WYSIWYG-periaatteen kanssa, mutta tämä on LaTeXin keskeinen vahvuus. Monet tietotekniikan lehdet , konferenssit ja kustantajat tarjoavat omia LaTeX-tyylitiedostojaan, jotka LaTeX-lähdetiedostoon liitettynä asettavat asiakirjan automaattisesti julkaisua varten tarvittavaan muotoon.

Missä mennään seuraavaksi

Jos olet kiinnostunut kokeilemaan LaTeXiä itse, MS-Windows-version saa (ilmaiseksi) osoitteesta http://www.eece.ksu.edu/~khc/tex.html. LaTeX on vakiona useimmilla UNIX-alustoilla ja useimmissa Linux-jakeluissa, joten jos käytät jotakin näistä, yritä kirjoittaa man latex. FTP-sivusto, joka sisältää monia hyödyllisiä LaTeX-työkaluja, makroja ja niihin liittyviä asiakirjoja, on osoitteessa ftp.tex.ac.uk.

LaTeX-asiakirjojen kirjoittamisesta on kaksi korvaamatonta kirjaa. Molemmat ovat erittäin luettavia ja informatiivisia. Leslie Lamportin LaTeX A Document Preparation System (ISBN 0-201-15790-X) kuvaa perusjärjestelmän ja on erittäin hyvä kirja alkuun. Se sisältää riittävästi tietoa, jotta voi kirjoittaa heti useimmat tavalliset dokumentit. Mike Goossensin, Frank Mittelbachin ja Alexander Samarinin kirjoittama LaTeX Companion (ISBN 0-201-54199-8) on yksityiskohtaisempi ja kattaa kaikki LaTeX2e-projektin LaTeXiin lisäämät uudet ominaisuudet. Tämä kirja on hyödyllinen, jos haluat kirjoittaa paljon asiakirjoja LaTeXillä ja muokata kieltä omaan makuusi. Siinä kerrotaan, miten saadaan aikaan kaikenlaisia eksoottisia efektejä, kuten tekstin asettaminen sydämen muotoon (ehkä hyödyllistä tietyissä asiakirjoissa, jotka on kirjoitettu juuri ennen helmikuun 14. päivää). Molemmat kirjat on julkaissut Addison-Wesley.

Logiikka on parempi

LaTeX-dokumenttien laadintajärjestelmä on kehittynyt ja parantunut vuosien varrella. Se on erittäin vankka ja tarjoaa ominaisuuksia, joiden avulla voidaan kirjoittaa julkaisukelpoisia dokumentteja, jotka sisältävät tekstiä ja matematiikkaa. LaTeX-dokumentti kuvataan ohjelmointikielellä, joka antaa LaTeXin käyttäjälle kaikki perinteisen ohjelmointikielen tehot ja joustavuuden. Kirjoitustyyli pakottaa käyttäjän tarkastelemaan asiakirjoja pikemminkin niiden loogisen organisoinnin tasolla kuin niiden fyysisen ulkoasun tasolla. Tämä on aluksi hieman turhauttavaa, mutta loppujen lopuksi sillä on monia etuja, kuten uudelleenkäytön tukeminen ja sellaisten yleisten asiakirjojen luominen, joilla voi olla useita fyysisiä instansseja.

Mark Harman on Pohjois-Lontoon yliopiston tietotekniikan ja multimediateknologian laitoksen tutkimusjohtaja ja vt. johtaja (http://www.unl.ac.uk/~mark/welcome.html). Häneen voi ottaa yhteyttä sähköpostitse osoitteeseen [email protected] tai postitse osoitteeseen Mark Harman, Project Project, School of Informatics and Multimedia Technology, University of North London, Holloway Road, London N7 8DB.


Kuva 1 Yksinkertainen LaTeX-dokumentti.

\documentstyle{article}

\begin{document}

hello world

\end{document}


Kuva 2. Osiot

\documentstyle{article}

\begin{document}

\section{Introduction}

Tämä on melko lyhyt dokumentti ja tämä on sen johdanto.

\section{Rationale}

Dokumentti on niin lyhyt, koska se on yksinkertaisesti ja esimerkki.

\end{dokumentti}


Kuva 3 Symboliset viittaukset

\documentstyle{artikkeli}

\begin{document}

\section{Introduction}

\label{intro}

Tämä on melko lyhyt dokumentti ja tämä on sen johdanto.

\section{Rationale}

Lyhyt johdanto tähän dokumenttiin löytyy kohdasta \ref{intro}.

\end{document}


Kuvio 4 Itemize-ympäristö.

\begin{itemize}

\item Solid

\item Liquid

\item Gas

\end{itemize}


Kuvio 5 Luettelo ympäristö.

\begin{enumerate}

\item Cenozoic

\begin{enumerate}

\item Quaternary

\item Tertiary

\end{enumerate}

\item Mesotsooinen

\begin{enumerate}

\item Liitu

\item Jurakausi

\item Triaskausi

\end{enumerate}

\item Paleotsooinen

\item Paleotsooinen

\begin{enumerate}

\item Perm

\item Carboniferous

\item Devonian

\item Silurian

\item Ordovician

\item Ordovician

\item Cambrian

\end{enumerate}

\item Precambrian

\end{enumerate}


Kuvio 6 Parametrittomat komennot.

\documentstyle{article}

\newcommand{\fruit} { apple }

\begin{document}

Ensimmäisenä ilmestyvä \fruit on ensimmäinen \fruit, jonka syön.

\end{document}


Luku 7 Parametrit: Perusversio.

\documentstyle{article}

\newcommand{\lookup} { #1(#2) }

\begin{document}

Muuttujan A suurimman alkion löytämiseksi tallennetaan ensimmäinen alkio, \lookup{A}{0}, muuttujaan b. Seuraavaksi mennään muuttujan i ohjaamaan silmukkaan, jossa aloitetaan 1:stä ja jatketaan matriisin loppuun asti. Vertaa silmukan jokaisessa kohdassa elementtiä i, \lookup{A}{i}, b:ssä olevaan arvoon. Jos \lookup{A}{i} on suurempi kuin b, siirrä \lookup{A}{i} b:hen.

\end{document}


Luku 8 Parametrit: C-versio.

\documentstyle{article}

\newcommand{\lookup} { #1 }

\begin{document}

Muuttujan A suurimman alkion löytämiseksi tallennetaan ensimmäinen alkio, \lookup{A}{0}, muuttujaan b. Seuraavaksi syötetään muuttujan i ohjaama silmukka, joka alkaa 1:stä ja jatketaan matriisin loppuun. Vertaa silmukan jokaisessa kohdassa elementtiä i, \lookup{A}{i}, b:n arvoon. Jos \lookup{A}{i} on suurempi kuin b, siirrä \lookup{A}{i} b:hen.

\end{document}


Luku 9 Laskurimuuttujat.

\newcounter{pointnumber}

\setcounter{pointnumber}{1}

\newcommand{\point} { Point \thepointnumber \stepcounter{pointnumber} }

\piste

Jotain toiseen pisteeseen liittyvää tekstiä

\piste

Jotain toiseen pisteeseen liittyvää tekstiä

\piste

jälleen toinen piste


Kuvio 10 Merkkimuuttujat.

\documentstyle{article}

\newcounter{language} % asetettu 1 Basicille ja 0 C:lle

\setcounter{language}{1}

\newcommand{\lookup}

{

\ifthenelse{\value{language} = 1} {#1(#2)} {#1}

}

\newcommand{\update}

{

\ifthenelse{\value{language} = 1} {LET #1(#2) = #3} {#1 = #3}

}

% Komento forloop ottaa neljä parametria

% 1. Silmukan alaraja – kokonaisluku tai kokonaislukulauseke.

% 2. Silmukan alaraja. Silmukan yläraja – kokonaisluku tai kokonaislukulauseke.

% 3. Silmukan ohjausmuuttuja – kokonaislukumuuttuja.

% 4. Silmukan runko – lausekkeiden sarja.

% Lippulaskurin kieli, käytetään määrittämään kieli, jolla

% silmukan syntaksi kirjoitetaan.

\newcommand{\forloop}

{

{

\ifthenelse{\value{language} = 1}

{

FOR #3 = #1 TO #2

NEXT #3

}

{

for(#3=#1;#3 != #2;#3++)

\{

\}

}

\begin{document}

Tallentaaksemme arvon 10 matriisin A elementtiin numero 3 kirjoitamme \update{A}{3}{10}.

Voidaksemme alustaa joukon A elementit 0-10 alkuarvolla 0, voimme käyttää for-silmukkaa, joka alkaa arvosta 0 ja jatkuu arvoon 10 asti. Tämä kirjoitettaisiin näin

\forloop{0}{10}{i}{\update{A}{i}{0}}

\end{document}


Kuvio 11 Kuvassa 10 esitetyn LaTeX-lähdekoodin kääntämisen tulos.

Tallentaaksemme arvon 10 array A:n elementtiin numero 3 kirjoitetaan LET A(3) = 10.

Voidaksemme alustaa array A:n elementit 0-10 alkuarvolla 0, voimme käyttää for-silmukkaa, joka alkaa arvosta 0 ja jatkuu arvoon 10 asti. Tämä kirjoitettaisiin näin

FOR i = 0 TO 10

LET A(i) = 0

NEXT i

(P)1997, Centaur Communications Ltd. EXE Magazine on Centaur Communications Ltd:n julkaisu. Mitään osaa tästä teoksesta ei saa julkaista kokonaan tai osittain millään tavalla, myös sähköisesti, ilman Centaur Communicationsin ja tekijänoikeuden haltijan nimenomaista lupaa, jos tämä on eri taho.

EXE Magazine, St Giles House, 50 Poland Street, London W1V 4AX, sähköposti [email protected]

Vastaa

Sähköpostiosoitettasi ei julkaista.