TEX

1. Inleiding

TEX automatiseert het werk van de zetter in een drukkerij. TEX software draait op vrijwel iedere computer. TEX kan simpel en goedkoop gebruikt worden. Wie zin heeft kan met de ca. 900 commando’s ook programmatische hoogstandjes te maken. Dit artikel is een inleiding tot het gebruik van TEX. We beginnen zo eenvoudig mogelijk om een basis te leggen voor ingewikkelder dingen.

Wat doet TEX?

In een ouderwetse drukkerij nam een zetter letterblokjes uit een bak en plaatste die op regels. Hij zette sommige letters in groepen (ligaturen) dicht tegen elkaar, b.v. ff fl fi. Sommige zetterijen hadden een schier eindeloze verzameling letters uit vele schriftsoorten en (wiskundige) tekens in vele formaten. De zetter verdeelde het ‘wit’ tussen de woorden zodat de regels even lang werden en een gelijkmatige verdeling van ‘wit’ in de alinea ontstond. Alleen als het niet anders kon, brak hij woorden af aan het eind van een regel. Het pure handwerk bestaat nauwelijks meer. In alle commerciële drukkerijen is dit overgenomen door de computer. Bovendien gebeurt het zetten vaak helemaal niet meer op de drukkerij.

En dat is te merken. Sinds de meeste gebruikers hun materiaal ‘camera ready’ bij een drukker afleveren, is de kwaliteit van het zetwerk achteruit gegaan. Gewone tekstverwerkers leveren een zetsel op dat door de ouderwetse drukker afgekeurd zou worden: onjuiste woord- en letter afstand, incomplete fonts. Vooral voor wiskundige formules laat de tekstverwerker het afweten. Zelfs als de nodige tekens beschikbaar zijn, is het intikken moeizaam en het resultaat op papier abominabel.

TEX automatiseert het zetwerk met een resultaat dat vakkundig zetwerk benadert. Werken met TEX is moeilijker dan met een een gewone tekstverwerker, maar het loont de moeite als je er oog voor hebt (gekregen). TEX is vooral geschikt om tekst met wiskundige formules mooi op papier te krijgen, maar met TEX kunnen ook teksten in b.v. Grieks, Hebreeuws of Russisch gezet worden.

TEX is géén direkt WYSIWYG (What You See Is What You Get) systeem. Je maakt een TEX-bestand, waarbij je op het scherm nog niet de opmaak in alinea’s, de vreemde tekens, de verschillende schriften enz. ziet. TEX maakt daar een DVI-bestand van. ‘DVI’ staat voor ‘device independent’, oftewel uitvoerapparaat onafhankelijk. Deze uitvoer kan nu m.b.v. een DVI-programma bekeken of geprint worden. Dan zie je het resultaat pas. Je kunt een DVI-file ook van de ene computer naar de andere meenemen. Er is geen verschil tussen een Atari-, Mac-, UNIXof DOS-DVI file.

TEX bestaat al sinds 1982. Slechts éénmaal, in 1991 is er een echt nieuwe versie uitgebracht. De schrijver van het programma, Don. E. Knuth, hoogleraar informatica aan de Stanford Universiteit (USA), heeft het programma nu ‘bevroren’.

TEX installeren

TEX werkt op elke TOS computer met minstens 1 Mbyte RAM, zelfs zonder harde schijf. Deze wordt in het volgende wel aanwezig verondersteld. Een zwart-wit monitor is voldoende. Op een 9-naalds printer zijn al goede afdrukken te maken, maar de TEX kwaliteit komt beter tot zijn recht op een inkjet- of laser-printer.

En natuurlijk TEX software. We gebruiken de TEX voor TOS van Christoph Strunk die op PD disks B98-105 staat van de stichting ST. Christoph heeft TEX-programma’s (bv. TEX.TTP dat DVI-files maakt) en DVI-programma’s (bv. DVI VIEW.TTP voor het scherm) gecompileerd. Deze programma’s zijn voor TOS anders dan voor bv. DOS, de DVI-files zijn gelijk. Voor Nederlandse tekst zijn nog afbreekpatronen nodig die op B119 staan. Tenslotte heb je een editor nodig, bv. Everest op A605.

Op B98-105 staan LZH-bestanden (die ontstaan bij het comprimeren van files volgens methodes van Lempel, Ziv en Huffman, verder ontwikkeld in Japan tot een archiveringsprogramma). Het installatie programma pakt de files uit en zet ze op hun plaats in een TEX folder; het wijst zichzelf. Klik op Yes achter Ask for each archive. Voorlopig zijn alleen nodig de LZH-archieven INITEX, INPUTS, TEX31 van B98, TFM ORI van B99, PREVIEW van B100 en FONTS van B104. Gebruik niet het TFM archief op B98, want dat is een Duitse versie zonder ligaturen.

Van B119 moet NEHYPH2.TEX in de folder TEX\INITEX gezet worden om Nederlandse woorden goed af te breken.

IniTEX

Het programma TEX.TTP heeft een format nodig, dat bestaat uit een gecomprimeerde reeks commando’s, font-structuren, parameterwaarden en een lijst van afbreekpatronen. IniTEX genereert formats aan de hand van een INI-file. Laad PLAING.INI uit de folder INITEX in de editor, verander dat in

    \input plain.tex
    \input nehyph2.tex
    \tracingstats=1
    \def\fmtname{plaind}
    \dump

en zet het als PLAIND.INI terug (D=Dutch). Start nu CTEX.PRG en klik op Erzeugen in het menu Arbeiten. Selecteer PLAIND.INI – na enkele ogenblikken staat het format in de betreffende folder.

Ga naar Editor in het menu Finden en selecteer je editor. TeX, IniTeX en Bildschirm staan waarschijnlijk al goed. Kies Format-Vorgabe in het menu Parameter en vul PLAIND in. Als je nu nog op Speichern onder Parameter klikt staat alles bij de volgende start van Ctex al goed. De installatie is klaar voor de eerste stappen.

Eerste stap

Kies HauptDatei in het menu Finden, of tik H, en maak een lege file STAP1.TEX aan ergens op de harddisk. Tik E (of kies Edieren onder Arbeiten), de editor wordt gestart, en tik een paar woorden. Elke tekst die alleen de 26 letters van het alfabet (groot en klein), de cijfers en de gewone leestekens bevat, is goed voor een TEX-bestand. Breek de woorden niet af en gebruik een lege regel om alinea’s te scheiden. Tik aan het eind van de tekst de 4 tekens \bye om TEX te laten weten dat er niets meer komt, save het bestand en verlaat de editor.

Tik T (of kies TeX onder Arbeiten), TEX.TTP wordt gestart. Zoals gezegd vertaalt TEX het bestand in een ‘device independent’ bestand en zet dit onder dezelfde naam met de extensie .DVI op schijf. (Als TEX dit niet automatisch doet, stopt en met onbegrijpelijke vragen komt, kijk dan onder het kopje ‘TEX vraagt hulp’.)

Tik V (of kies Ansehen), DVI VIEW.TTP start. Probeer [Help], en tik [Esc] of [Undo] om de ‘preview’ op het scherm te beëindigen.

TEX vraagt hulp

TEX zet tijdens het werk altijd wat op het scherm. Als het goed gaat verdwijnt dat vanzelf weer; je kunt het nalezen in een bestand met de extensie .LOG. Als er iets mis gaat, stopt TEX en vraagt hulp. Een vreemd teken in het bestand, b.v. een $, doet TEX stoppen. Je kunt TEX afschepen met [Return], vaak werkt TEX dan door. Je kunt ook TEX antwoorden met e (edit) of quit; dat werkt als TEX een bestand niet kan vinden (I can’t find file ⋯) dank zij een bestandje QUIT.TEX in INPUTS.

TEX meldt ‘Overfull \hbox ⋯’ als een regel te lang wordt, omdat het laatste woord niet afgebroken kon worden. Vaak kan je TEX helpen door \- in te lassen op een geschikte plaats, b.v.

    com\-mando

TEX kent nl. veel afbreekplaatsen, maar niet alle.

Fonts

Het font (tekenverzameling) dat TEX bij de eerste stap gebruikt heeft heet cmr10, afkorting voor ‘computer modern roman 10 point’. Dit is het ‘default’ font dat TEX neemt als de gebruiker ‘verzuimt’ een font te specificeren. Dit font staat in de folder FONT0096.

10 punts fonts zijn geschikt voor boeken en tijdschriften. Ze zijn eigenlijk te klein voor brieven en rapporten. Daarom zullen we verder 20% grotere fonts gebruiken. (TEX maakt onderscheid tussen een 20% vergroot 10-punts font en een 12-punts font. Het laatste is iets dunner.) De volgende stap leert een paar commando’s om TEX een grotere versie van het zelfde font of een ander font te laten nemen.

Een TEX commando bestaat uit een backslash \ en één of meer letters, of een \ en één teken dat geen letter is.

Stap 2

Start de editor en tik aan het begin van STAP1.TEX

    \magnification 1200

om TEX te vertellen dat de tekens 1.2 maal groter moeten worden. Voor de preview neemt TEX dan cmr10 uit FONT0115. Kies een woord in de tekst om schuin te drukken. Verander dit tekstdeel als volgt:

    {\it woord}

\it betekent italic. De werking van dit commando wordt door de accolades begrensd. (Als je de {} weglaat, wordt àlle tekst na \it cursief gezet.) Op de zelfde manier kan een tekstdeel vet gezet worden met het commando \bf voor boldface. TEX neemt dan voor de betreffende tekstdelen cmti10 (computer modern text italic) of cmbx10 (bold extended) ipv. cmr10 uit FONT0115. De tabel geeft nog een paar mogelijkheden.

roman  \rm  cmr10
italic  \it  cmti10
boldface  \bf  cmbx10
slanted  \sl  cmsl10

typewriter type  \tt  cmtt10

Bekijk het resultaat.

Vreemde tekens

De volgende tabel toont enkele vreemde tekens die TEX kan maken, met de bijbehorende commando’s. Let op de spatie tussen de 2 c’s voor de cédille. Na een commando dat eindigt met een letter mag geen letter staan, want dan denkt TEX dat die letter ook nog tot het commando behoort.

trema, umlaut  ö  \"o
accent grave  ò  \`o
accent aigu  ó  \'o
circonflexe  ô  \^o
cédille  ç  \c c
eszet  ß  \ss
hekje  #  \#
dollar  $  \$
procent  %  \%
ampersand  &  \&

Voor ‘großartig’ wordt gro\ss artig getikt met een ‘loze’ spatie. Maar om ‘groß und großartig’ te krijgen kan je

    gro\ss\ und gro\ss artig

tikken; de backslash voor de spatie maakt er een ‘echte’ spatie van. Het kan ook met

    gro{\ss} und gro{\ss}artig

ook niet echt handig. In stap 3 leren we TEX dat \3 een ß is, zodat je dan kan volstaan met

    gro\3 und gro\3artig

zonder echte of loze spaties (omdat \3 niet op een letter eindigt).

De reden dat sommige tekens niet rechtstreeks ingetikt kunnen worden is dat TEX de tekens \#$%& ^{} reserveert voor speciale doeleinden. De volgende stap leert het gebruik van % voor commentaar en & voor een tabel, en we maken een ‘macro’ om een reeks toetsaanslagen te verkorten.

Stap 3

Kies nu STAP3.TEX (dat op de TeX pagina van ST staat) als HauptDatei. De regels die met een % beginnen zijn commentaar; TEX slaat ze over. Er staan wat voorbeelden van woorden met accenten en een tabel gemaakt met \settabs. Bekijk dit met T en V.

Nu de macro voor ß. Zet ergens in het begin van STAP3.TEX

    \def\3{\ss}

en tik na deze definitie ergens gro\3 und gro\3artig of iets anders met ß om te zien of het werkt. Probeer ook de macro

    \def\mvg{Met vriendelijke groeten,}

die \mvg definiëert. Na

    \def\\{$\backslash$}

kan je met \\ een backslash maken.

Wiskunde en Grieks

Veel tekens, Griekse letters en wiskundige symbolen, maakt TEX niet in ‘text mode’ maar in ‘math mode’, dwz. tussen dollartekens. Wiskundige formules kunnen in de tekstregel staan, b.v. a^{2} + b^{2} = c_{o}^{2}. Deze formule wordt met

    $ a^2+b^2=c o^2 $

gemaakt. Met ^en zet je super- en subscripts. Een formule tussen dubbele dollars wordt apart en gecentreerd gezet:

    $$ y = {a/b \over \sqrt{1+c}} \int 0^x {p \over 1+z^2} dz $$

levert

y = \frac{a/b}{\sqrt{1 + c}} ∫_{0}^{x} \frac{p}{1 + z^{2}} dz

Let op het gebruik van accolades en de automatische aanpassing van de hoogte van het integraalteken aan de integrand! Ook het wortelteken past automatisch bij hoogte en breedte van het argument.

Voor gewone letters in formules gebruikt TEX font cmmi10 (math italic), voor cijfers cmr10. Sub- en superscript worden in cmmi7 of cmr7 gezet en subsubscript enz. in cmmi5 of cmr5. De speciale wiskundige symbolen komen uit de drie cmsy fonts en cmex10.

In stap 3 zagen we dat { en } gemaakt worden met $\{$ en $\}$. De tekens < en > krijg je met $<$ en $>$. De Griekse letters αβγΓ … zijn te maken met $\alpha\beta\gamma\Gamma$, enz. $\cal ABC$ levert calligrafische hoofdletters ABC.

Opmaak

De regellengte zet TEX op 6.5 inch en de teksthoogte op 8.9 inch, tenzij je iets anders voorschrijft. (De drukker rekent graag met inches en punten; 1 inch = 72 punt = 25.4 mm.) De commando’s voor b.v. 160 mm regellengte en 250 mm teksthoogte (voor A4 papier) luiden

    \hsize 160 true mm \vsize 250 true mm

Een magnification moet in het TEX-bestand vooraf gaan aan de size-comman-do’s. Bovendien zijn dan de woordjes true nodig in maataanduidingen om te voorkomen dat die mee vergroot wordt.

TEX bepaalt zelf de afstand tussen woorden op een regel. Al zet je 10 spaties tussen twee woorden in het TEX-bestand, het effekt is gelijk aan 1 spatie. Een afstand van bv. 5 mm tussen twee woorden bereik je met \hskip 5 mm

Ook van de vertikale afstand tussen regels in het TEX-bestand trekt TEX zich niets aan. Al maak je met 10 Return-aanslagen een flinke ruimte, het effekt is gelijk aan 1 lege regel. Een lege ruimte van b.v. 50 mm hoog wordt gemaakt met

    \vskip 50 mm

Op de instelling van de regelafstand komen we nog terug.

Een alinea kan je laten inspringen met b.v. 10 mm extra kantlijnruimte met:

    {\leftskip 10 mm
    .... alineatekst ....
    \par}

Wat nu?

In deze inleiding heb je kennis gemaakt met TEX. In vervolgartikelen zal dieper ingegaan worden op dit zetsysteem.

De volgende keer komt het afdrukken aan de orde waarvoor een printerdriver moet worden geïnstalleerd. Ook gaan we tekstblokken zetten.

Daarna wordt METAFONT besproken. Bij TEX wordt een selectie van fonts meegeleverd in vergrotingen die in stappen van 20% oplopen, dus voor magnification 1000, 1200, 1440, 1728, enz. Met METAFONT zijn fonts te maken in iedere gewenste grootte voor scherm en printer.

Literatuur

Het standaardwerk is van de maker van TEX: Donald E. Knuth, The TEXbook (Addison Wesley), een goudmijn voor gevorderde TEXers. Ruim voldoende voor gewoon gebruik en meer geschikt om iets op te zoeken is: Norbert Schwarz, Inleiding TEX (Addison Wesley), omdat dit boek een lijst van TEX-commando’s bevat.

Dank aan Erik-Jan Vens. Robert Best