previous up next
Foregående: Litteratur Op: FAMØS maj 1997 Næste: Litteratur

Om at skrive matematik

Henrik Christian Grove


Rasmus Borup Hansen


Jette Randløv


Det har aldrig været nemt at skrive matematik. For det første skal man forstå matematikken, og for det andet skal man vide, hvordan man skal formulere den, så andre også kan forstå den. Endelig skal man også kunne skrive alle de mange symboler, så det bliver tilgængeligt for andre. I denne artikel skal vi kigge lidt nærmere på den sidste ting og studere nogle computerprogrammer, der måske kan være nyttige.

Vi vil især koncentrere os om følgende tre spørgsmål:

WYSIWYG - for og imod

En væsentlig ting for et tekstbehandlingsprogram er, om det er et WYSIWYG-program eller ej. WYSIWYG er en forkortelse for what you see is what you get, hvilket betyder, at det, man ser på skærmen, er magen til det, der kommer til at stå på papiret i sidste ende (på nær opløsning og størrelse). Microsoft Word er et eksempel på et WYSIWYG-program, mens TeX-familien er ikke-WYSIWYG-programmer. WYSIWYG-systemer er ofte nemmere at bruge og det er langt nemmere at producere noget, der er rimeligt læseligt. Den formentlig største ulempe er, at brugeren, mens han skriver, koncentrerer sig for meget om udseendet af teksten i stedet for strukturen. Men tekstens udseende er sjældent altafgørende for, hvor nem den er at læse. WYSIWYG-systemer hjælper sjældent brugeren med at strukturere teksten og for eksempel bruge samme størrelse til overskrifter, der skal have lige stor betydning. Mange ikke-WYSIWYG-systemer tvinger derimod brugeren til at skrive struktureret - brugeren skal meget aktivt stride imod, for at den færdige tekst bliver uden struktur overhovedet.

En generel fordel ved ikke-WYSIWYG-systemer er, at de er mindre ressourcekrævende (hukommelse og regnekraft) end WYSIWYG-systemer, eftersom ikke-WYSIWYG-systemer kun bruger meget regnekraft, når teksten faktisk processeres, mens WYSIWYG systemer hele tiden må arbejde med en processering for at opdatere skærmen.

En væsentlig ulempe ved WYSIWYG-systemer er, at what you see is all you get. Med mindre man har en meget god skærm, kan det være svært at se forskel på f.eks. tex2html_wrap_inline1783 , tex2html_wrap_inline1785 og tex2html_wrap_inline1787 . Eller hvad med tex2html_wrap_inline1789 , tex2html_wrap_inline1791 og tex2html_wrap_inline1793 ? Det er stor forskel på, hvordan ting ser ud på en skærm med måske 45 punkter pr. cm og på en typisk laserprinter med 240 punkter pr. cm.

I nogle WYSIWYG-systemer skriver man de mere ualmindelige tegn ved at trykke med musen på den rigtige knap i en stor oversigt. Det sætter umiddelbart nogle grænser for, hvad der kan lade sig gøre og hvilke tegn, man kan skrive, og ofte er det meget vanskeligt eller umuligt at skrive matematik, som går ud over gymnasieniveau.

Den største ulempe ved ikke-WYSIWYG-systemer (dvs. i praksis TeX og beslægtede programmer) er, at det er en ret kryptisk affære at trylle de rigtige ting frem på papiret.

TeX-familien

TeX (udtales tæk) blev udviklet i slutningen af 70'erne af Stanford-professoren Donald E. Knuth. Knuth havde oprindeligt tænkt sig, at TeX skulle være et personligt værktøj til at skrive hans livsværk, The Art of Computer Programming, og det var således ud fra hans personlige kriterier, TeX blev designet. Knuth tog nogle sider fra The Art of Computer Programming (de tre første bind var allerede udkommet) og tænkte over, hvilken inddata han gerne ville give en computer for at uddata skulle blive som de sider, han havde udvalgt. Da han havde fastlagt ind- og uddata skrev han programmet imellem dem - således blev TeX til.

Da indholdet af The Art of Computer Programming er meget matematisk, havde Knuth gjort det nemt at skrive matematik i TeX, og snart begyndte programmet at blive brugt af andre. For at gøre en lang historie kort er programmerne i TeX-familien i dag blevet de facto standarden for, hvad man bruger når man skriver matematik i forskerverdenen.

Det er vigtigt at slå fast, at TeX er et programmeringssprog. Teoretisk set er TeX lige så stærkt som Pascal eller C, og der findes også eksempler på egentlige programmer, der er skrevet i TeX. For at bruge TeX behøver man ikke kende alle sprogets raffinementer, mindre kan gøre det. Hvad, der er væsentligt, er, at forstå, hvordan TeX er opbygget vha. makroer defineret ud fra en række primitiver.

Makroer gør nemlig programmerne i TeX-familien til stærke værktøjer. Hvis man ofte skal skrive tex2html_wrap_inline1795 , kan man i stedet for at skrive \cos\theta+i\sin\theta hver gang, definere en makro, vha.

\def\arctheta{\cos\theta+i\sin\theta}
Nu skal man blot skrive \arctheta for at få tex2html_wrap_inline1795 . Det er sådanne ting, der gør, at programmerne i TeX-familien faktisk kan være ret hurtige at bruge, når man først lært dem at kende.

Man anvender stort set altid programmet TeX sammen med nogle færdiglavede makroer, der gør livet lettere, og når man siger "`TeX"', mener man oftest primitiverne i programmeringssproget sammen med en lille makro-pakke, som Knuth har designet. Tilsvarende siger man "`LaTeX"' om en makro-pakke, der oprindeligt blev udviklet af Leslie Lamport, og "`AmSTeX"' om en makro-pakke, der er udviklet af AmS, American Mathematical Society. Desuden har man LaTeX, der er en udvidelse af LaTeX, så man også får funktionaliteten fra TeX.

Fælles for de forskellige medlemmer af TeX-familien er, at man først skal vænne sig til den lidt specielle arbejdsgang, hvor man bruger ét program (et tekstredigeringsredskab efter eget valg) til at skrive sin tekst, et andet (TeX, AmSTeX eller LaTeX) til at oversætte den til DVI-format, der beskriver, hvor på siden de enkelte tegn står, og et tredje program til at vise indholdet af disse DVI-filer på skærmen. Det kan godt forekomme besværligt og langsommeligt i starten, men der findes programmer til at hjælpe én. Dernæst skal man lære de kommandoer, man oftest bruger, udenad. Det betyder bl.a., at man skal vide, hvad man kalder de forskellige matematiske symboler på engelsk, og hvordan man sætter dem sammen til brøker, matricer, osv.

Selve skrivningen af teksten kan foregå i et hvilket som helst redigeringsprogram, der kan gemme tekst i rent ASCII-format. På grund af TeX-familiens relativt komplicerede kommandoer og ikke-WYSIWYG karakter ser teksten ofte ret kinesisk ud for den ikke-indviede. Man kunne få det indtryk, at man skal være temmelig heldig for at klemme den ønskede tekst med de rette formler ud af printeren uden at sætte en hel skov til i forfejlede forsøg. Men det er tværtimod det omvendte, der er tilfældet. Det er ret sjældent, man skriver ud mere end nogle få gange på grund af typografiske og tekniske fejl. Dette skyldes, at der som nævnt findes programmer, hvor man kan se teksten på skærmen. Man kan så forstørre de vigtige områder og checke, at der står, hvad der skal.

TeX, AmSTeX og LaTeX er meget udbredt i den akademiske verden og mange videnskabelige tidskifter foretrækker at modtage bidrag i et af disse formater. De programmer, man skal bruge, findes til alle operativsystemer, herunder flere varianter til DOS, Windows og UNIX. Et stort plus er, at de er gratis og kan hentes kvit og frit fra Internet døgnet rundt (f.eks. fra ftp://sunsite.auc.dk/pub/tex/ctan/).

TeX

Hvis man bare skal skrive lidt tekst, nogle formler og en overskrift i ny og næ, behøver det ikke at tage lang tid at lære TeX, hvis bare man udstyrrer sig selv med en passende lærebog. Hvis man derimod skal lave tabeller eller indviklede diagrammer får man sin sag for og bør nok investere i Knuths bog The TeXbook, hvori den slags ting står. Tilsvarende er det hurtigt at lave små, simple ting, mens mere komplicerede ting kan tage oceaner af tid. Resultaterne kan blive ganske flotte, men det kan være svært at undgå at begå typografiske fejl, da der - kort sagt - er alt for mange parametre, man kan skrue på.

AmSTeX

AmSTeX er som sagt udviklet af American Mathematical Society med deres tidsskrifter in mente. En væsentlig forskel er, at man har adgang til et større antal symboler, end under "`plain TeX"'. Der er også makroer, der hjælper med at lave ofte brugte konstruktioner som f.eks. lister, men AmSTeX lider under den skavank, at det ikke er lige så velstruktureret som LaTeX. Da der desuden findes mange nyttige makropakker til LaTeX, som ikke kan bruges til AmSTeX, og da det er muligt (vha. makropakken AmSLaTeX) at give LaTeX samme funktionalitet som AmSTeX, er der ingen grund til at lære sig TeX frem for LaTeX. Vi vil derfor ikke omtale AmSTeX yderligere.

LaTeX

LaTeX er en makropakke til TeX, men fremtræder med nogle få undetagelser som et selvstændigt hele, og det kræver i princippet intet kendskab til TeX at bruge LaTeX. For tiden kommer der en ny udgave af LaTeX hvert halve år - hele tiden med små forbedringer. Forbedringerne skal ses i forhold til den gamle version, LaTeX2.09, idet man arbejder mod en version 3. Den version af LaTeX, man bruger i dag betegnes derfor med LaTeX2e.

Hvor nemt er LaTeX at lære? Det korte svar er: Ikke nemt. Blot at udskrive en helt almindelig tekst uden matematiske formler kræver mindst et kvarter den første gang, og betydeligt mere hvis man vil forstå alle detaljer. Hvor lang tid tager det at lære LaTeX til bunds? Spørgsmålet er måske ikke helt rigtigt stillet, da man faktisk bliver nødt til at lære TeX for at forstå LaTeX til bunds. Hvor lang tid skal man bruge på at lære LaTeX rigtig godt? Omtrent en uge eller et år hvor man bruger det jævnligt til ikke-helt-simple-ting.

Hvor hurtigt er det at bruge, når man først har lært det? Ganske hurtigt. Det betyder en del at man hele tiden har fingrene på tastaturet og ikke skal bladre i menuer for at klikke et tegn frem. Til gengæld klager begyndere over, at det tager lang tid at slå navne på matematiske symboler og kommandoer op. Selv om navnene er rimelig logiske bliver man alligevel nødt til at slå \longleftrightarrow ( tex2html_wrap_inline1799 ) efter den første gang. Heldigvis er det ret nemt at give symbolerne andre navne.

En ting, man ofte bander over, er, at LaTeXs fejlmeddelelser er ualmindeligt uforståelige. Dette skyldes, at hvis man begår en fejl, bliver den nogle gange først opdaget, når den har forplantet sig et pænt stykke ned igennem makro-niveauet. For computeren ser det således ud som om, der er en fejl i de makroer, der udgør selve LaTeX, og den typiske bruger kan ikke gøre andet end at stirre måbende på en mærkværdig fejlmeddelelse.

Hvor pænt er resultatet? Eftersom FAMØS er skrevet i LaTeX, har læseren selv mulighed for at danne sig en mening. Lad os se på de tre eksempler på formler, vi bruger i denne artikel: Jensens ulighed,

equation786

et integral,

  equation794

og en formel sammen med noget tekst, "`svaret er altså tex2html_wrap_inline1801 , og derfor..."' Generelt er der forskel på, hvordan fritstående formler og formler i tekst skrives.

En bemærkelsesværdig ting i LaTeX er muligheden for en simpel afpasning af mellemrummene mellem tegn. Mellemrummet mellem integraltegnene er negativ, for at det yderste ikke skal flyve rundt for sig, mens mellemrummet mellem dx og dy er tilstrækkeligt stort, til at det hele ikke er ud i én smøre.

Desværre giver systemet mulighed for at begå en del typografiske fejl, som mange brugere da også begår. For eksempel ligning (2):

equation802

Denne gang er formlen skrevet lige ud ad landevejen og teksten "`for"' bliver formateret som matematik - nemlig som f gange o gange r - og derfor i kursiv med afstand mellem f og o.

En anden meget almindelig fejl er, at man ikke er opmærksom på, at der er forskel på punktummer. Et sætningspunktum kan efterfølges af et lidt længere mellemrum - det hæver læsehastigheden, at sætningsstrukturen er synlig. LaTeX indsætter derfor om muligt lidt ekstra luft efter et punktum.gif Et forkortelsespunktum derimod skal efterfølges af normalt mellemrum, ellers virker det forstyrrende på læsningen.

Dette er et generelt "`problem"' med LaTeX, at det som standard går ud fra, at brugeren er bekendt med disse detaljer. Derfor har begynderen rige muligheder for intetanende at lave nogle grimme fejl.

Man kan støtte LaTeX-projektet (og derigennem betale for programmet) ved at købe bogen The LaTeX companion af Michel Goossens, Alexander Samarin og Frank Mittelbach. I The LaTeX companion står alle de slibrige detaljer.

AUC-TeX og emacs

Hvis man bruger et program i TeX-familien, bør man bestræbe sig på at finde et program, der gør det så nemt som muligt at skrive sin tekst. Et simpelt program som DOS's "`edit"' eller UNIX's "`ed"' kan gøre det, men der er ingen grund til at pine sig selv mere end højst nødvendigt. Et program, der bruges meget i forskningsmiljøet er "`emacs"'. Selvom emacs er et ganske stort program og kan virke lige så kryptisk som TeX, kan man, hvis man regner med at skulle skrive meget matematik på computer, spare en del tid ved at gøre sig fortrolig med emacs.

Den væsentligste grund til dette er, at der findes en udvidelse til emacs kaldet AUC-TeX, der er lavet af Kresten Krab Thorup og Per Abrahamsen fra Aalborg Universitetscenter, og som gør det mange gange lettere at skrive TeX-, AmSTeX- og LaTeX-dokumenter. AUC-TeX\ sørger for at teksten og kommandoerne står pænt i forhold til hinanden, så det er nemmere at se, hvad der hører til hvor. Desuden bliver indtastningen af kommandoer nemmere, f.eks. kan man skrive \epsilon med bare tre tastanslag.

Da AUC-TeX hjælper til ved indtastningen, laver man færre stavefejl i kommandoerne; desuden har AUC-TeX en database over de oftest forekommende kryptiske fejl og en tilhørende forklaring på, hvad man har gjort galt.

Udover disse ting hjælper AUC-TeX også med at køre de mange programmer, som et TeX-system består af. Typisk vil man skrive en tekst i emacs og dernæst trykke Ctrl-C to gange for at få sin fil behandlet af LaTeX. Hvis der er fejl i filen, kan AUC-TeX flytte markøren til det rette sted og komme med en forklaring på, hvad der gik galt. Hvis der ingen fejl var, kan man trykke Ctrl-C to gange igen for at se sin kreation på skærmen.

Der er ingen tvivl om, at hvis man skal skrive meget matematik på computer, er emacs med AUC-TeX den hurtigste og nemmeste løsning på lang sigt. Både emacs og AUC-TeX kan hentes gratis fra Internet.

WordPerfect

Dette afsnit er baseret på WordPerfect 6.0 (og sandsynligvis også 6.1) til Windows, men gælder også (med få undtagelser) versionerne tilbage til 5.1, som er den ældste forfatteren har kendt.

Denne version (og de tidligere Windows-versioner), påstod at have WYSIWYG, og når man har lavet formlerne, kan man da se dem, og hvor meget de fylder, men hvordan de kommer til at se ud på papir, får man ikke altid nogen brugbar viden om. På skærmen kan alle symboler nemlig skaleres frit, men på nogle printere kan de kun skaleres til et helt antal hundrede procent.

WordPerfect har en indbygget formel-editor, hvor man kan skrive formler i et specielt "`sprog"', som på trods af sine ligheder med LaTeX, er væsentlig dårligere. I første omgang må man klare sig med denne kode, men hvis man vil se resultatet er der mulighed for at få lov til det i et andet vindue på skærmen. Dette andet vindue bliver dog ikke opdateret automatisk, og man er stadig henvist til at rette i koden, altså ikke ægte WYSIWYG, men kun en tilnærmelse.

  
Figur 1: Jensens ulighed som den ser ud fra WordPerfect.

Den største "`fejl"' i WordPerfects formelkodesprog er, at de forskellige kommandoer bare skal indtastes uden nogen form for indikation af, at det drejer sig om en kommando, dette gør, at det er umuligt at skrive simple ting som tex2html_wrap_inline1817 , idet WordPerfect vil betragte nu som den kommando, der frembringer det græske bogstav ny ( tex2html_wrap_inline1819 ).gif Et par andre "`fejl"' er, at man ikke kan få nogen hjælp til at skalere parenteser og andre ting, der ikke altid har samme størrelse, f.eks. er parenteserne i Jensens ulighed skaleret til 300% af normal størrelse, og desuden er man selv langt hen af vejen nødt til at styre mellemrummenes størrelse. Bemærk, at WordPerfect har det rigtige tex2html_wrap_inline1823 som et specialtegn.gif

WordPerfect er lidt nemmere at lære end LaTeX, for de fleste af kommandoerne kan findes i et specielt vindue, hvorfor man ikke nødvendigvis behøver lære dem alle udenad.

  
Figur 2: Dobbeltintegraleksemplet som det ser ud fra WordPerfect.

Om resultatet må man konstatere, at det er acceptabelt, men heller ikke mere. F.eks. er det ikke smart, at den vandrette streg i vores dobbeltintegraleksempel (figur 2) ligger i niveau med toppen af integraltegnene, eller at man ikke (på alle printere) kan få parenteserne i Jensens ulighed (figur 1) gjort lidt lavere. Om vores eksempel med en formel midt i en linie (figur 3), må det konstateres, at WordPerfect faktisk er i stand til at placere formlen på samme grundlinie, som den omkringstående tekst, men formlen tager uforholdsmæssig meget plads i højden, desuden står det efterfølgende komma ret så langt væk og ser temmelig malplaceret ud.

At formeleditoren er indbygget i WordPerfect har visse fordele. Det er nemlig (under forudsætning af man arbejder på en moderne PC) en hurtig løsning, og selv med mange formler forøger det ikke størrelsen af dokumentet ret meget.

  
Figur 3: WordPerfects bud på en linie med en formel midt i.

Der var engang, hvor WordPerfect var verdens mest udbredte tekstbehandlingssystem, og det er stadig meget udbredt -- selv den "`gode gamle"' version 5.1 bruges stadig. WordPerfect bruges primært på pc'er med DOS/Windows, men der findes også versioner til både Macintosh, OS/2 og UNIX, jeg ved dog ikke hvilken version, der er den nyeste til disse platforme, eller hvorvidt de stadig udvikles. Det kan desuden nævnes at Corel som har købt WordPerfect er igang med at oversætte alle programmerne i deres "`Office"'-pakke (herunder WordPerfect) til Java, hvilket skulle gøre dem fuldstændigt platformsuafhængige. Prisen er lidt højere end de fleste studerendes pengepung rækker til. Ifølge den prisliste fra Naturfagsbogladen der fulgte med årets første nummer af Hovedområdet, sælges WordPerfect ikke i løsvægt (det ser dog ud til at UNIX-versionen udgør en undtagelse), men WordPerfect suite (som desuden indeholder bl.a. Quattro Pro), kan fås som "`uddanelsespakke"' for 400 kr., mens en komplet version koster 2250 kr. Hvis man ikke er så heldig at kunne købe programmet til disse priser i Naturfagsbogladen, kører Corel for tiden med meget lave priser for at genvinde markedsandele.

Mulighederne for at skrive avanceret matematik er stærkt begrænsede, primært fordi man er nødt til at holde sig til den meget begrænsede mængde af symboler, som formel-editoren kender på forhånd.

Microsoft Word og Equation editor

Microsoft Word 6.0, har ikke en indbygget mulighed for at lave formler, men kommer derimod med programmet Microsoft Equation editor, som laver såkaldte OLE-objekter (objekter som kan indsættes i ethvert program, der understøtter dem). Da jeg af forskellige årsager selv mener at Word er ubrugeligt, har jeg gjort brug af Equation editor sammen med WordPerfect, hvilket giver en bedre tilnærmelse til WYSIWYG.gif

I Equation editor retter man direkte i formlen som den vil (bør) komme til at se ud, altså en rimelig approksimation til WYSIWYG. Princippet, når man laver en formel, er kort fortalt, at man starter med at indsætte strukturgivende elementer (brøkstreger, rodtegn, osv.), ved at vælge dem fra såkaldte "`formelpaletter"', og derefter indsætter man tal og andre symboler. Tal og almindelige bogstaver kan indsættes ved bare at indtaste dem fra tastaturet, mens de fleste andre ting skal findes i en "`symbolpalette"'.gif Det giver alt i alt en hel del skiften mellem tastatur og mus.

  
Figur 4: Jensens ulighed fra Equation editor.

Hvis man husker, at parenteser skal indsættes fra en "`formelpalette"', skaleres de automatisk til en nogenlunde passende størrelse (dog bliver de ofte lidt for store). I nogle tilfælde skal man som i WordPerfect selv indsætte mellemrum.

Resultatet er ligesom med WordPerfect acceptabelt men absolut heller ikke mere. Jeg ser ikke nogen god grund til at parenteserne omkring tex2html_wrap_inline1787 på højresiden af Jensen ulighed (figur 4), skal være så store, og igen hænger den vandrette streg i dobbeltintegraleksemplet (figur 5) uforståeligt højt oppe. Det er håbløst at placere en formel midt i en linie (figur 6)! Det er ikke muligt automatisk at få samme grundlinie. Hvis man vil have det bedre end i eksemplet, skal man til at rode med at flytte tex2html_wrap_inline1837 millimeter op/ned. Formlen virker ikke lige så urimeligt høj som WordPerfects, men til gengæld er der nogle store mellemrum, som får den til at se usammenhængende ud, men kommaet står ganske pænt.

  
Figur 5: Dobbeltintegraleksemplet fra Equation editor.

At Word ikke har en indbygget formeleditor, men derimod et ekstra program, giver en væsentlig lavere hastighed, og de OLE-objekter der kommer ud af det optager uforholdsmæssigt meget harddisk, f.eks. kan det nævnes, at min første FAMØS-artikel i LaTeX-version fylder ca. 11 kilobyte, mens en version lavet med Equation editor næsten uden tekst, og med lidt færre mellemregninger fylder over 300 kilobyte!

Word (og dermed Equation editor) vinder større og større udbredelse i disse år, og Microsoft påstår at 70% af alle solgte Office-pakker i de sidste par år har været deres. Word findes i versioner til Windows og Macintosh, og prisen i Naturfagsbogladen for Word alene er 765 kr., mens man for 1080 kr. kan få hele Office-pakken (version 7.0 til Windows 95). Hvis man ikke kan få rabat i Naturfagsbogladen, må man betale temmelig meget mere.

  
Figur 6: Equation editors bud på en formel midt i en linie.

Equation editor kender lidt flere symboler end WordPerfect, men når symboler som tex2html_wrap_inline1823 må undværes, spørger man sig selv, om man nogensinde får brug for mange af de andre symboler. Alt i alt er det en meget begrænset fornøjelse at forsøge at skrive avanceret matematik i Equation Editor.


previous up next
Foregående: Litteratur Op: FAMØS maj 1997 Næste: Litteratur

famos@math.ku.dk
Wed Jun 11 01:16:53 MET DST 1997