LaTeX zetwerk als een programmeertaal

LaTeX is een systeem voor het zetwerk van documenten dat de notie van What-You-See-Is-What-You-Get vervangt door standaardideeën uit conventionele programmeertalen. Mark Harman demonstreert de kracht van deze overerving.

Iedereen die wel eens een What-You-See-Is-What-You-Get (WYSIWYG) editor, tekstverwerker of DTP pakket heeft gebruikt, zal waarschijnlijk twee frustraties hebben gehad:-

WYSIWYG lijkt altijd een leugen te zijn Wat je ziet lijkt nogal op wat je krijgt, of wat je ziet is bijna altijd wat je krijgt, of wat je ziet zou zijn wat je kreeg als je printer de juiste fonts had gehad, maar wat je ziet is zelden precies wat je krijgt.

WYIWYG is beperkend Stel dat je niet krijgt te zien wat je wilt? Wat je ziet is wat je krijgt heeft als bijkomende en stilzwijgende implicatie dat wat je niet kunt zien, je ook niet kunt krijgen. Hoe vaak heb je iets er niet net iets anders uit willen laten zien (of misschien wel heel anders) maar je editor staat dat niet toe?

LaTeX (spreek uit als Lateck) is een typesetting systeem dat niet de WYSIWYG benadering volgt. In plaats daarvan is het geïnspireerd door programmeertalen. Het erft alle voordelen van programmeertalen en enkele van hun nadelen. In plaats van een document op het scherm samen te stellen (de WYSIWYG-benadering), is een LaTeX-document een programma dat het LaTeX-systeem vertelt hoe het document moet worden gemaakt. Het programma wordt gecompileerd met behulp van een LaTeX compiler om een document te produceren dat kan worden afgedrukt of bekeken.

Dit klinkt misschien een beetje vreemd voor iemand die bekend is met de WYSIWYG benadering, maar iedereen die geniet van (of waarde hecht aan) de kracht en flexibiliteit van een programmeertaal op hoog niveau, zal al snel merken dat LaTeX gewoon een betere manier is om documenten te ontwerpen.

In dit artikel zal ik een beetje van de LaTeX taal uitleggen, genoeg om je in staat te stellen een gratis LaTeX systeem te downloaden en een paar normale documenten te schrijven. Er zal geen tijd zijn om alle mogelijkheden van LaTeX te behandelen (dit zou een heel boek vergen), maar ik hoop je achter te laten met een sterk gevoel voor manieren waarop het schrijven van een document, met gebruik van LaTeX, een vergelijkbare activiteit zou kunnen zijn als het schrijven van een programma.

Een eenvoudig LaTeX bronbestand

Figuur 1 bevat een eenvoudig LaTeX bronbestand. De eerste regel is een voorgedefinieerd LaTeX-commando. Alle commando’s beginnen met een backslash karakter. De opdracht in de eerste regel bepaalt de globale eigenschappen van het te zetten document. De documentstijl article is de stijl die gebruikt wordt voor een kort artikel. Andere stijlen zijn boek, verslag, proefschrift enzovoort. Elke documentstijl wijzigt globale parameters die de opmaak van uw document beschrijven. Bijvoorbeeld, in de boekomgeving worden lopende kopteksten geproduceerd die de hoofdstuktitel en auteur op afwisselende pagina’s geven.

Zoals alle goede programmeertalen, is dit alles natuurlijk volledig configureerbaar. Echter, zoals bij de meeste programmeertalen, hoe meer flexibiliteit je wilt, hoe meer je zult moeten weten van de onderliggende programmeertaal. Gelukkig geven de standaardinstellingen voor alle LaTeX-omgevingen zeer bevredigende resultaten, zodat het mogelijk is een heel eind te komen zonder al te veel van de onderliggende taal te hoeven weten. Wat je krijgt is waarschijnlijk wat je wilt, en als het dat niet is, dan kun je het in ieder geval veranderen.

De tekst van het document zelf is vervat in de commando’s begin{document} … \end{document}, \begin{} en \end{} zijn commando’s die een omgeving openen en sluiten. Alle documenten (en fragmenten van documenten) worden binnen een omgeving getypt. We kunnen ook omgevingen nesten, zoals we later zullen zien.

Spaties zijn voor LaTeX onbelangrijk; één spatie is net zo goed als honderd. Nieuwe regels kunnen ook overal worden ingevoegd, maar twee of meer nieuwe regels worden gebruikt om het punt aan te geven waar een paragraaf eindigt en een andere begint. Wanneer je het uiteindelijke document afdrukt, zal LaTeX de tekst links en rechts justeren (door koppeltekens in te voegen, waar pure justificatie tot onaantrekkelijke uitvoer zou leiden).

Een groot document bestaat meestal uit een aantal secties, die subsecties kunnen bevatten. Een nieuwe sectie wordt in LaTeX geïntroduceerd met het commando \section, en een nieuwe subsectie met het commando \subsection. De LaTeX broncode in figuur 2 beschrijft een document met twee secties, waarvan de titels “introduction” en “rationale” zullen zijn. Merk op dat we in de broncode de secties geen sectienummer hoeven te geven. LaTeX zal dit voor ons doen wanneer het het document compileert. Dus, inleiding zal sectie nummer 1 zijn en beweegreden zal sectie nummer 2 zijn. Als we de volgorde waarin de twee secties voorkomen omwisselen (door de broncode te knippen en te plakken), dan wordt rationale automatisch sectie 1, terwijl inleiding automatisch sectie 2 wordt.

Een belangrijke vraag rijst nu: Hoe zou ik van de ene sectie naar de andere kunnen verwijzen? Bijvoorbeeld, stel dat ik wil verwijzen naar de sectie inleiding in de sectie rationale. De manier waarop dit wordt bereikt illustreert het eerste voordeel dat we hebben van de LaTeX manier om dingen te doen.

Symbolische verwijzingen

Omdat een LaTeX bronbestand een programma is, kun je symbolische namen gebruiken om naar delen van het document te verwijzen. Dit maakt kruisverwijzingen een plezier, omdat de kruisverwijzing een logische entiteit is, die verwijst naar een benoemd deel van het document. Als dit benoemde deel van het document moet worden verplaatst, dan hoeven we alleen maar opnieuw te compileren.

Om een symbolische verwijzing in te voeren, gebruiken we het commando \label{}, en om ernaar te verwijzen gebruiken we het commando \ref{}. Figuur 3 illustreert dit. \label{intro} introduceert een symbolische naam, label, waarvan de waarde afhangt van de context waarin het commando \label{} verschijnt. In dit geval, omdat het \label commando in de eerste sectie van het document wordt gebruikt, zal de waarde die aan intro wordt toegekend 1 zijn. Het commando \ref{} geeft gewoon de waarde van het label. Als ik nu de inleiding verplaats naar een nieuwe plaats, bijvoorbeeld na de inleiding, dan verandert de waarde van intro in 2, en de verwijzing in de inleiding wijst dan naar de nieuwe plaats van de inleiding.

Deze manier van schrijven dwingt ons om het document op een logisch niveau te bekijken in plaats van op een fysiek niveau. Het zou dwaas zijn om bijvoorbeeld te schrijven zoals we eerder zagen in sectie \ref{intro}, omdat we het label intro kunnen verplaatsen naar een punt na de verwijzing. In plaats van ons document te zien als een monoliet van tekst die in een bepaalde volgorde staat, zien we het op een hoger abstractieniveau, als een verzameling secties die we vrijelijk kunnen verplaatsen. We kunnen zelfs secties uit een document hergebruiken in een ander document, en als onze symbolische namen uniek zijn, zullen we merken dat alle kruisverwijzingen correct werken.

Enkele meer omgevingen

LaTeX heeft veel nuttige voorgedefinieerde omgevingen. Stel dat we een opeenvolging van punten willen produceren met behulp van opsommingstekens. We kunnen dit doen met de itemize omgeving, de broncode in figuur 4 zal een document produceren dat de drie belangrijkste toestanden van materie opsomt, een per regel en elk voorafgegaan door een opsommingsteken. In veel opzichten is de LaTeX manier om een document te ontwerpen vergelijkbaar met de HTML manier om dingen te doen. Bijvoorbeeld, de itemize omgeving lijkt veel op de ongesorteerde lijst omgeving in HTML.

Soms willen we items in een gesorteerde, genummerde lijst zetten. Dit wordt bereikt met de omgeving opsommen. Figuur 5 toont een geneste opeenvolging van genummerde items, die de vier tijdperken van de geologische tijd en de perioden daarbinnen beschrijven. LaTeX gebruikt verschillende nummeringsystemen voor elk niveau van nesting (Arabische cijfers voor niveau één, alfabetische tekens voor niveau twee, Romeinse cijfers voor niveau drie). Dit kan, net als al het andere, worden veranderd als we dat willen.

Om een deel van de tekst te benadrukken, wordt het omsloten door de em (benadrukking) omgeving, dus we schrijven gewoon \begin{em} help! \om het woord help (en het uitroepteken dat er op volgt) te benadrukken.

Procedures

In een conventionele programmeertaal geeft de mogelijkheid om procedures te definiëren de programmeur een grote flexibiliteit. Ook in LaTeX kunnen we procedures definiëren voor het opmaken van tekst. De eenvoudigste vorm van een procedure is een parameterloze procedure. Het stelt ons in staat om een deel van de broncode een naam te geven en het dan op te roepen. Stel dat ik een document aan het schrijven ben waarin ik wil verwijzen naar een stuk fruit, maar ik heb nog niet besloten of het een appel, sinaasappel of peer moet zijn. Ik zou een procedure kunnen invoeren die fruit heet, en een willekeurige fruitnaam in de body ervan kunnen zetten. Als ik uiteindelijk heb besloten naar welke vrucht ik wil verwijzen, dan hoef ik alleen de body van de procedure te veranderen; alle punten waarop de procedure wordt aangeroepen zullen dan automatisch rekening houden met de verandering in de body.

In LaTeX wordt een procedure een commando genoemd, en een nieuwe wordt gemaakt met het commando \newcommand. Commando’s worden vaak macro’s genoemd omdat LaTeX deze aanroepen uitbreidt als het ze tegenkomt in de body van het document. Figuur 6 illustreert het gebruik van een eenvoudige parameterloze macro. Na compilatie produceert de LaTeX broncode in deze figuur de tekst The first apple to appear will be the first apple I shall eat.

Om heel eerlijk te zijn, zou dit, misschien eenvoudiger, bereikt kunnen worden met een WYSIWYG tekstverwerker, door simpelweg een zoek- en vervangopdracht uit te voeren. (Dit zou natuurlijk niet hebben gewerkt als de zin de eerste was geweest die verscheen is mijn oogappel)! Dit is echter slechts een eenvoudig voorbeeld van wat we kunnen doen met LaTeX macro’s. Ze komen pas echt tot hun recht als we ze van parameters voorzien.

Parameters

Voorstel dat ik een document schrijf over het hanteren van matrices. Ik wil misschien een algoritme beschrijven om het grootste element van een array te vinden. Om het document meer algemeen te maken en om grote delen ervan niet te hoeven overtypen, zou ik twee versies kunnen maken, elk specifiek voor een bepaalde programmeertaal, bijvoorbeeld Basic en C. Door gebruik te maken van commando’s kan ik het gebruik van de specifieke syntaxis van arrays vermijden, of in ieder geval kan ik de syntactische verschillen in een enkel commando vangen, waardoor het veel gemakkelijker wordt om mijn document aan verschillende programmeertalen aan te passen.

Figuur 7 illustreert dit. In de commando definitie voor \lookup, vertelt het de LaTeX compiler dat het commando twee parameters neemt, de eerste wordt aangeduid als #1 en de tweede als #2. In een aanroep van een commando worden de parameters achter elkaar tussen gekrulde haken gezet. Dus de aanroep \lookup{S}{2}, zal de tekst S(2) opleveren. Dit is de Basic versie van het commando \lookup. Als we het vervangen door de versie in figuur 8, dan krijgen we hetzelfde document, maar met arrayverwijzingen tussen vierkante haken. Dit is de C-versie van het document. Merk op dat het verschil tussen de twee LaTeX brondocumenten precies twee karakters is, namelijk de twee karakters die het verschil vormen tussen array verwijzingen in Basic en C.

Zoals met programmeertaal procedures, is het mogelijk om een procedure aan te roepen vanuit de body van een andere en om het resultaat van een procedure aanroep te gebruiken als de eigenlijke parameter voor een andere. Zo kunnen we bijvoorbeeld \lookup{A}{B}{1}} schrijven, wat ofwel de tekst A(B(1)) of A] oplevert, afhankelijk van of we de Basic of de C versie van het \lookup commando gebruiken.

Variabelen

LaTeX heeft zijn eigen variabelen, waarop we eenvoudige rekenkundige bewerkingen kunnen uitvoeren (meer geavanceerde vormen van rekenkundige bewerkingen zijn mogelijk, maar optellen is meestal alles wat nodig is voor zetwerk). Ik zal kijken naar twee eenvoudige voorbeelden van de manier waarop we variabelen kunnen gebruiken, die beide bekend zullen zijn bij programmeurs; de teller variabele en de vlag variabele.

Voorstel dat we een reeks genummerde punten willen opnemen in een document. We kunnen een tellervariabele gebruiken om elk punt te nummeren, en een paar eenvoudige commando’s schrijven om de nummering te regelen. Figuur 9 illustreert dit. De teller wordt gedeclareerd met het commando \newcounter. Hij wordt op een specifieke waarde gezet met het commando \setcounter. Het commando \point wordt gebruikt om het huidige puntnummer af te drukken en om de teller in een stap te zetten (om één bij zijn waarde op te tellen). Het commando de<naam>, voor een bepaalde teller <naam>, zorgt ervoor dat de waarde van de variabele wordt afgedrukt. Dit commando kan worden gebruikt voor elke variabele, niet alleen die welke de gebruiker heeft ingevoerd, dus bijvoorbeeld \thesection drukt de huidige waarde van de sectie-variabele af. In figuur 9 gebruiken we het commando \point om drie punten af te drukken. Een leuke eigenschap van deze aanpak is dat we de volgorde waarin de punten voorkomen kunnen variëren en dat de nummering overeenkomstig zal veranderen.

Laten we nu eens zien hoe we variabelen als vlaggen kunnen gebruiken om te kiezen welke tekst in een document wordt geproduceerd. Zoals we zullen zien, stelt de combinatie van vlaggen en macro’s ons in staat zeer generieke documenten te schrijven, die kunnen worden geconcretiseerd door eenvoudig een geschikte waarde voor de vlag te kiezen. Beschouw opnieuw het probleem van het schrijven van een document over matrices, waar we twee vormen van het commando “lookup” willen, een voor Basic en een voor C. Het zou beter zijn als we een vlag in onze LaTeX broncode konden gebruiken om aan te geven of de taal C of Basic moet zijn. Alles wat we dan hoeven te doen is de vlag de juiste waarde te geven voordat we het document compileren. Figuur 10 illustreert dit.

Het eerste wat we moeten doen is de optie ifthen opnemen in de documentstijl verklaring. Dit stelt ons in staat om later het commando ifthenelse te gebruiken. Vervolgens declareren we een tellervariabele, language, die op 1 wordt gezet als de taal Basic moet zijn en op 0 als het C moet zijn. Het symbool % wordt door LaTeX gebruikt voor commentaar; alle tekst die na een symbool % staat (en voor het einde van de regel) wordt door de LaTeX compiler genegeerd. Vervolgens zetten we de teller op 1 met het commando \setcounter{language}{1}, zodat de tekst die we zullen produceren in dit geval zal zijn gespecialiseerd voor Basic. Deze specialisatie wordt bereikt met de gewijzigde versie van het commando \lookup. De nieuwe versie van \lookup gebruikt het ingebouwde commando \ifthenesle om de waarde van de taalvariabele te testen. Het formaat van een ifthenelse commando is ifthenelse{<test>}{<then_branch>}{<else_branch>}. Het gedraagt zich net als een if statement in een conventionele programmeertaal. Als <test> evalueert als waar, wordt de tekst in de <then_branch> geproduceerd, als onwaar, wordt de tekst in de <else_branch> geproduceerd.

Met behulp van deze vlag zouden we een heleboel commando’s kunnen schrijven, die elk de tekst voor een bepaald soort verklaring produceren, waarbij de taal afhankelijk is van de waarde van de vlag-teller-variabele. Op deze manier kunnen wij een algemeen document over programmeren schrijven en eenvoudig de vlag op de juiste manier zetten om de gespecialiseerde versie van het document te produceren dat wij willen.

Figuur 10 laat zien hoe we dit zouden kunnen doen. We definiëren commando’s die de Basic of C syntaxis produceren voor het opzoeken van een array (met behulp van de \lookup macro, zoals hierboven beschreven), het bijwerken van een array en, nog uitgebreider, een commando dat de juiste syntaxis produceert voor een for-lus. Het verschil tussen een for-lus in C en in Basic is grotendeels syntactisch, en we kunnen de flexibiliteit van LaTeX gebruiken om aan deze syntactische details te ontsnappen. Het commando for-lus gebruikt de taal van de vlaggenteller om te beslissen of de vier elementen van de lus in Basic of C stijl moeten worden opgemaakt. Hierdoor kunnen we wat tekst schrijven over array initialisatie en lussen, zonder te hoeven beslissen naar welke taal het doeldocument zal verwijzen.

Merk op dat in de C versie van de for-lus syntax de accolades die de uitspraken van de body van de lus omsluiten worden geschreven als { … \}, in plaats van { … }. Dit komt omdat de accoladesymbolen al een betekenis hebben voor LaTeX, dus om ze af te drukken worden ze voorafgegaan door een backslash.

In Figuur 10 hebben we de tellertaal op 1 gezet, zodat de uitvoer voor Basic zal zijn. Van de broncode in Figuur 10 zal LaTeX de uitvoer in Figuur 11 produceren. Als we een document willen produceren dat hetzelfde zegt over C-arrays, hoeven we alleen maar de regel \setcounter{taal}{1} te veranderen in \setcounter{taal}{0}. Zo eenvoudig is het.

Wiskunde

LaTeX wordt vaak (en terecht) geprezen voor de manier waarop het de zetterij van complexe wiskunde mogelijk maakt. Veel moderne wiskunde, informatica en andere natuurwetenschappelijke en technische teksten worden gezet met LaTeX.

Wiskundige tekst kan ofwel in-line worden gezet, in welk geval het verschijnt in de zin waarin het is getypt, of in display mode, in welk geval het als het ware gecentreerd op een eigen regel wordt weergegeven. Alle standaard wiskundige symbolen en tekstvormen zijn voorzien voor het gebruik van commando’s. Omdat LaTeX al zo lang bestaat en door zo veel wiskundigen over de hele wereld is gebruikt, is het zeer onwaarschijnlijk dat er een vorm van wiskundige uitvoer bestaat die niet door iemand is voorzien. Een snelle speurtocht door uw boekenkast zal waarschijnlijk erkenningen voor LaTeX in verschillende computer- en wiskunde handboeken onthullen, omdat het vaak wordt gebruikt om technische boeken voor te bereiden, waardoor de auteur(s) camera-klare kopieën voor hun uitgevers kunnen leveren.

Er is ook een bloeiende LaTeX gebruikersgemeenschap die ervoor zorgt dat al deze waardevolle informatie wordt verzameld, onderhouden en bijgewerkt. Alle LaTeX-ontwikkelingen zijn volledig achterwaarts compatibel, dus u hoeft zich geen zorgen te maken dat uw documenten op de een of andere manier verouderd raken.

Hergebruik

Ik schat dat het tussen de twee dagen en een week duurt om productief te worden met LaTeX. Veel lezers zullen dit onaanvaardbaar vinden in vergelijking met de aanlooptijd voor WYSIWYG editors. Zeker, als je alleen documenten zoals brieven en memo’s moet voorbereiden dan is LaTeX waarschijnlijk niet het overwegen waard. Als je echter een grote hoeveelheid tekst moet produceren en bereid bent te investeren in een systeem dat je uiteindelijk maanden werk kan besparen, dan kan LaTeX het antwoord zijn.

Een van de meest ongrijpbare, maar toch meest aantrekkelijke voordelen die LaTeX gebruikers ervaren, komt van de manier waarop, net als een goede programmeertaal, LaTeX hergebruik ondersteunt. Al snel zul je merken dat je een set van je eigen persoonlijke macro’s opbouwt, die je in staat stellen je documenten aan te passen aan je eigen smaak. Hergebruik van delen van een document in een ander document wordt moeiteloos en naadloos bereikt. De naadloosheid komt voort uit twee aspecten van de LaTeX aanpak. De symbolische naamgeving van delen van een document maakt het mogelijk dat verwijzingen automatisch worden bijgewerkt als het document wordt bewerkt. Het concept van een omgeving betekent dat hetzelfde stuk brontekst er anders uit kan zien wanneer het in verschillende contexten wordt opgenomen. Dit is natuurlijk in directe tegenspraak met het WYSIWYG principe, maar dit is de essentiële kracht van LaTeX. Veel computertijdschriften , conferenties en uitgevers leveren hun eigen LaTeX-stijlbestanden, die, wanneer ze in een LaTeX-bronbestand worden opgenomen, het document automatisch opmaken in de voor publicatie vereiste vorm.

Waarheen nu

Als u geïnteresseerd bent in het zelf uitproberen van LaTeX, kan een MS-Windows versie (gratis) worden verkregen bij http://www.eece.ksu.edu/~khc/tex.html. LaTeX wordt standaard geleverd op de meeste UNIX-platforms, en met de meeste Linux-distributies, dus als je een van deze gebruikt, probeer dan man latex in te typen. Er is een FTP site met veel nuttige LaTeX tools, macro’s en gerelateerde documenten op ftp.tex.ac.uk.

Er zijn twee onmisbare boeken over het onderwerp van het schrijven van LaTeX documenten. Beide zijn zeer leesbaar en informatief. LaTeX A Document Preparation System van Leslie Lamport (ISBN 0-201-15790-X), beschrijft het basissysteem en is een zeer goed boek om mee te beginnen. Het bevat genoeg informatie om meteen de meeste normale documenten te schrijven. The LaTeX Companion door Mike Goossens, Frank Mittelbach en Alexander Samarin (ISBN 0-201-54199-8), is gedetailleerder, en behandelt alle nieuwe mogelijkheden die door het LaTeX2e project aan LaTeX zijn toegevoegd. Dit boek is nuttig als je een groot aantal documenten met LaTeX wilt schrijven en de taal aan je eigen smaak wilt aanpassen. Het legt uit hoe je allerlei exotische effecten kunt bereiken, zoals het leggen van tekst in de vorm van een hart (misschien handig voor bepaalde documenten die net voor 14 februari zijn geschreven). Beide boeken zijn gepubliceerd door Addison-Wesley.

Logisch is beter

Het LaTeX document voorbereidingssysteem is in de loop der jaren geëvolueerd en verbeterd. Het is uiterst robuust en biedt functies voor het schrijven van documenten volgens publiceerbare normen die tekst en wiskunde bevatten. Een LaTeX-document wordt beschreven met behulp van een programmeertaal, waardoor de LaTeX-gebruiker alle kracht en flexibiliteit van een conventionele programmeertaal heeft. De schrijfstijl dwingt de gebruiker documenten te bekijken op het niveau van hun logische organisatie, in plaats van hun fysieke verschijningsvorm. Dit is in het begin een beetje frustrerend, maar uiteindelijk heeft het veel voordelen, zoals de ondersteuning van hergebruik en het maken van generieke documenten die meerdere fysieke instantiaties kunnen hebben.

Mark Harman is directeur onderzoek en waarnemend hoofd van de School of Informatics and Multimedia Technology van de Universiteit van Noord-Londen (http://www.unl.ac.uk/~mark/welcome.html). Hij kan worden gecontacteerd via e-mail op [email protected] of per post op Mark Harman, Project Project, School of Informatics and Multimedia Technology, University of North London, Holloway Road, London N7 8DB.


Figuur 1 Een eenvoudig LaTeX-document.

documentstijl{artikel}

begin{document}

hello wereld

einde{document}


Figuur 2 Secties

Documentstijl{artikel}

begin{document}

sectie{Inleiding}

Dit is een vrij kort document en dit is de inleiding.

Onderdeel{Redenering}

Het document is zo kort omdat het gewoon en voorbeeld is.

einde{document}


Figuur 3 Symbolische verwijzingen

documentstijl{artikel}

begin{document}

sectie{Inleiding}

label{intro}

Dit is een vrij kort document en dit is de inleiding ervan.

sectie{Rationale}

Een korte inleiding op dit document kunt u vinden in sectie \ref{intro}.

einde{document}


Figuur 4 De Itemize-omgeving.

begin{itemize}

item Solid

item Liquid

item Gas

eind{itemize}


Figuur 5 De enumerate omgeving.

begin{opsomming}

item Cenozoïcum

begin{opsomming}

item Kwartair

item Tertiair

einde{opsomming}

item Mesozoïcum

begin{enumerate}

item Krijt

item Jura

item Trias

einde{enumerate}

item Paleozoïcum

begin{enumerate}

item Perm

item Carboon

item Devoon

item Siluur

item Ordovicium

item Cambrium

em Precambrium

>em Ordovicium


Figuur 6 Parameterloze commando’s.

Documentstijl{artikel}

Nieuweopdracht{fruit} { appel }

Begin{document}

De eerste vrucht die verschijnt, zal de eerste vrucht zijn die ik zal eten.

einde{document}


Figuur 7 Parameters: Basisversie.

Documentstijl{artikel}

Nieuwcommando{Overzicht} { #1(#2) }

begin{document}

Om het grootste element van de matrix A te vinden, slaat u het eerste element, \lookup{A}{0}, op in de variabele b. Voer vervolgens een lus in, gestuurd door de variabele i, beginnend bij 1 en lopend naar het einde van de matrix. Op elk punt in de lus vergelijkt u element i, \lookup{A}{i}, met de waarde in b. Als \lookup{A}{i} groter is dan b, wijs dan \lookup{A}{i} toe aan b.


Figuur 8 Parameters: C version.

Documentstyle{article}

Newcommand{\lookup} { #1 }

\begin{document}

Om het grootste element van de matrix A te vinden, slaat u het eerste element, \lookup{A}{0}, op in de variabele b. Voer vervolgens een lus in, gestuurd door de variabele i, beginnend bij 1 en lopend naar het einde van de matrix. Op elk punt in de lus vergelijkt u element i, \lookup{A}{i}, met de waarde in b. Als \lookup{A}{i} groter is dan b, wijs dan \lookup{A}{i} toe aan b.

einde{document}


Figuur 9 Tellervariabelen.

nieuwcounter{puntnummer}

setcounter{puntnummer}{1}

nieuwcommando{punt} {punt \puntnummer \stapcounter{puntnummer}}

punt

Enige tekst geassocieerd met een van de punten

punt

Enige tekst geassocieerd met een ander punt

punt

Een ander punt


Figuur 10 Vlagvariabelen.

\documentstyle{article}

\newcounter{language} % ingesteld op 1 voor Basic en 0 voor C

\setcounter{language}{1}

\newcommand{\lookup}

{

\enelse{{waarde{taal} = 1} {#1(#2)} {#1}

}

newcommand{\update}

{

\ifthenelse{\waarde{taal} = 1} {{#1(#2) = #3} {#1 = #3}

}

% Het forloop-commando neemt vier parameters

% 1. De ondergrens van de lus – een geheel getal of een integraale uitdrukking.

% 2. 2. De bovengrens van de lus – een geheel getal of een integraal getal.

% 3. De regelvariabele van de lus – een integraal getal of een integraal getal.

De controlevariabele van de lus – een integrale variabele.

% 4. De body van de lus – een opeenvolging van statements.

% De flag counter language, wordt gebruikt om de taal te bepalen waarin

% de syntaxis van de lus wordt geschreven.

Newcommand{{language}

{

{

FOR #3 = #1 TO #2

NEXT #3

}

{

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

{

}

}

{document}

Om de waarde 10 in element nummer 3 in de array A op te slaan, schrijven we \update{A}{3}{10}.

Om de elementen 0 tot en met 10 in de matrix A te initialiseren met de beginwaarde 0, kunnen we een for-lus gebruiken, beginnend bij 0 en oplopend tot 10. Dit zou als volgt worden geschreven

Voorloop{0}{10}{i}{update{A}{i}{0}}

Eind{document}


Figuur 11 Het resultaat van het compileren van de LaTeX broncode in Figuur 10.

Om de waarde 10 op te slaan in element nummer 3 in de matrix A, schrijven we LET A(3) = 10.

Om de elementen 0 tot en met 10 in de matrix A te initialiseren met de beginwaarde 0, kunnen we een for-lus gebruiken, beginnend bij 0 en oplopend tot 10. Dit zou als volgt worden geschreven

FOR i = 0 TO 10

LET A(i) = 0

NEXT i

(P)1997, Centaur Communications Ltd. EXE Magazine is een publicatie van Centaur Communications Ltd. Geen enkel deel van dit werk mag worden gepubliceerd, geheel of gedeeltelijk, op welke wijze dan ook, inclusief elektronisch, zonder de uitdrukkelijke toestemming van Centaur Communications en de houder van het auteursrecht indien dit een andere partij is.

EXE Magazine, St Giles House, 50 Poland Street, London W1V 4AX, e-mail [email protected]

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.