Extra hjälp till L A TEX-uppgift 2 Håkan Jonsson Luleå tekniska universitet Institutionen för systemteknik 971 87 Luleå, Sverige 5 september 2009 Sammanfattning Att skriva är att kommunicera tankar. Ska de senare nå fram måste de formuleras så att mottagaren förstår dem. L A TEX avhjälper många fel och brister automatiskt men författaren styr ändå i hög grad hur det färdiga dokumentet blir. Här går jag igenom hur man kan undvika några vanliga fel som studenter ibland gör då de löser uppgift 2 i momentet Texter och LaTeX i kursen D0015E Datetknik och ingenjörsvetenskap. 1 Om rättningen Det som styr rättningen är att det färdiga dokumentet och L A TEX-koden är läsbara, lätta att förstå och välstrukturerade. Koden ska spegla en sund användning av L A TEX. Ofta skriver man inte ensam utan med kollegor och för att samarbetet ska fungera måste man vara noga med hur man skriver. Eftersom lösningarna på de matematiska problemen var givna utgår rättningen inte så mycket från i vilken grad de återgetts korrekt. Viktigt är att formler och ekvationer motveras ordentligt. När en lärare bedömmer en skriftlig rapport så drar ovårdat språk och trasigt upplägg ner betyget, och det oavsett om sakinnehållet ändå är helt korrekt. Det finns förstås andra situationer där språket inte spelar så stor roll, dvs där det man skriver inte ska läsas av människor, och då är korrekt sakinnehåll det primära. Den som lyckas skriva kod som genererat ett dokument med vad som kan betraktas som en lösning på Skolverkets uppgift blir godkänd. Alla godkända grupperas efter hur bra de är och placeras i en av de tre katagorier 1. Godkänd, email: hj@ltu.se 1
2. Ok! Godkänd och 3. Ok! Bra! Godkänd som är bäst. Dessa kategorier motsvarar ungefär 50%-66% rätt, 67%-83% rätt respektive mer än 83% rätt. Exakt var inom respektive intervall en viss kod/ett visst dokument hamnar går inte att säga. Det är alldeles för stor variation för det. 1.1 Språk Visserligen är syftet med laborationen att få inblick i L A TEX men skriver man en text så måste också språket och textens upplägg vara vårdat. Om man inte kan skriva spelar det ingen roll vilka skrivverktyg man har till sitt förfogande. Stavfel, särskrivningar, fel i meningsbyggnader och syftningsfel är alla exempel på sånt som inte får förekomma. Visst, några småfel dröjer sig (nästan) alltid kvar men deras antal ska vara mycket litet. Meningar ska avslutas med punkt. Ett vanligt fel är att punkten utelämnas då meningen avslutas med en matematisk formel. Så ska det inte vara. T ex så skriver man... Deriverar vi ekvation 12 får vi slutligen f (x) = x 2 + 2x + 4. Även då formeln inte ingår i löptexten sätts punkt sist:... Deriverar vi ekvation 12 får vi slutligen f (x) = x 2 + 2x + 4. Det är ingen skillnad mellan dessa fall. En svårighet kan uppstå om man slutar med decimaltal där man använt decimalpunkt. Det kan se konstigt ut med t ex... får vi att b = 1.0. men så ska det alltså vara. Ett alternativ är att använda decimalkomma, vilket dock ändrar utseendet:... får vi att b = 1, 0. Genom att lägga till en negative space (\!) så blir det bättre. Koden $b=1,\!0$ ger det snyggare uttrycket b = 1,0. 1.2 Särskrivning Med särskrivning menas att ett sammansatt ord skrivs som två ord efter varandra så att meningens betydelse blir fel. I en del språk, t ex engelskan, är särskrivning det normala men det gäller inte svenskan. Tänk t ex på skillnaden mellan sjuksyster och sjuk syster : 2
Min syster är en sjuksyster [och jobbar på ett sjukhus]. Min syster är en sjuk syster [och är inlagd på sjukhus]. På liknande sätt måste man vara försiktig i teknisk och matematisk text. Det kan ge helt olika betydelser att skriva istället för Använd andraderivatan! Använd andra derivatan! Den första uppmaningen gäller något som deriverats två gånger, medan den andra uppmanar till användning av den andra av flera derivator. Konsekvenserna kan bli ödestigra om en teknisk instruktion innehåller denna typ av fel. Särskrivningar är förrädiska för ibland fungerar de. Man kan skriva Jag läser på data teknik programmet och bli förstådd trots att det ska vara Jag läser på datateknikprogrammet. Språket förändras också mot fler särskrivningar, vilket nog beror på sammanblandning med hur främst engelskan fungerar, men vissa ord (som exemplet med sjuksystern ovan) blir bara helt fel om de skrivs isär. Särskrivningar finns f ö i skriven svenska, inte talad. Vill man rensa bort särskrivningar så behöver man bara läsa texten högt och vara övertydlig med pauserna mellan orden (ta lika lång paus mellan alla ord). Om det fortfarande låter bra då man läser en gång till och tar ännu längre paus mellan orden så har man inga särskrivningar! 1.3 Benämning av dokumentdelar Det här är en liten sak men det är lätt att råka kalla avsnitt för sektioner vilket är fel. Det heter avsnitt eller kapitel på svenska. Detta misstag beror förstås på att kommandot heter section. En annan viktig skillnad mellan svenskna och engelskan dyker upp när man refererar till en numrerad del inne i en mening (inte i början av meningen). På svenska skriver man t ex... som följer av ekvation 2. medan det på engelska skulle bli... that follows from Equation 2. Alltså, observera att på engelska skrivs beståndsdelarnas namn med stor bokstav (t ex Equation 2, Section 1.4 och Chapter 3 ) men att de skrivs med liten bokstav på svenska (ekvation 1, avsnitt 1.4 och kapitel 3 ). 3
1.4 Storlek Detta är betydligt viktigare än man kan tro, och dessvärre något som kan ta lång tid att få till: Hela det färdiga dokumentet ska ge ett intryck av harmoni, och en känsla av lycka och välbefinnande hos läsaren. Både sättet som sakinnehållet presenteras att detta är klart och tydligt som typografin och den grafiska designen på bilder påverkar harmonin. Du skriver naturligtvis för att någon ska läsa, förstå och gilla det du skrivit. Harmoni kan upplevas men är svår att beskriva i tekniska termer. Storlek spelar roll, framförallt relativ storlek. Samma sorts text ska genomgående se likadan ut. Löptexten i början av dokumentet ska ha samma utseende som den i slutet och bilder ska ha liknande dimensioner. Att använda L A TEX hjälper mycket till att skapa den eftertraktade harminin, för dokumenten blir både snygga och lättbegripliga, men harminin uppstår tyvärr inte per automatik. Råden i denna skrift leder dock i regel till ökad harmoni så ta till dig dem. Att slarva förstör harmoni. Visa omsorg om läsaren. 2 Matematiska variabler i vanlig text Om man skriver variabler i löptext ska man omge dem med dollartecken (eller möjligen använda kommandot \ensuremath). Detta märker ut matematisk text och skiljer den från vanlig löptext. Under inga omständigheter ska textkommandon som textsl och emph användas för matematik eftersom det då fortfarande är text och kommer att typsättas som text! Notera skillnaden mellan x och x, samt i och i. Fraserna...håll i konstant... (håll tag i nåt hela tiden) och...håll i konstant... (ändra inte variablen i) har helt olika betydelser. 3 Multiplikation Många skriver ut ett multiplikationstecken i produkter men så gör man i tryckt matematisk text endast där man annars inte skulle kunna skilja på faktorerna. Produkten mellan x of y skrivs xy. Den skrivs varken x y, x y eller x y. Matematiska variabler består av ett enda tecken så xy kan inte vara en variabel utan måste vara en produkt. En situation där man behöver ett multiplikationstecken är produkter av tal. Då används oftast en enkel punkt,, som skapas med \cdot. T ex så skrivs produkten av 12 och 34 som $12\cdot 34$ vilket blir 12 34. Utelämnar man punkten och skriver $12 34$ får man istället 1234 som är helt missvisande. I matematisk text spelar blanka tecken ingen (eller obetydlig) roll. 4
3.1 Obrukbara alternativ Två tecken som också brukar användas för multiplikation är (en asterisk) och (\times). Jag tror, utan att veta säkert, att användningen av asterisk ( ) för att beteckna multiplikation kommer från något programmeringsspråk. Inom matematik betcknar dock f g något som kallas faltningen mellan funktionerna f och g. Faltningar dyker upp i signalbehandling och är inte multiplikationer. Tecknet betecknar Kartesisk produkt (eller kryssprodukt). För två mängder A och B är A B mängden av alla talpar (a, b) där a tillhör A och b tillhör B (eller matematiskt: A B = {(a, b) (a A) (b B)}). Detta är inte heller multiplikation så som vi menar. 4 eqnarray Omgivningen eqnarray används för en eller flera rader med ekvationer som hör ihop. Den typiska användningen är sekvenser med likheter eller olikheter. Varje rad har tre delar: Ett vänsterled, en binär relation (som t ex =, <,, > och ) och ett högerled. Dessa delar typsätts som matematik och kan ha godtyckligt matematiskt innehåll. Koden \begin{eqnarray} f(x) & = & 2x+3(x+2) \nonumber \\ & = & 5x+6. \end{eqnarray} ger t ex upphov till f(x) = 2x + 3(x + 2) = 5x + 6. (1) Detta är vad eqnarray är till för men mot detta syndas det ofta. Jag gjorde själv det i mitt förelagedokument till den första laborationen om L A TEX. Andra typer av ekvationer och formler ska typsättas med annat än eqnarray. Till enskilda ekvationer använder man equation om man vill ha ekvationsnummer, eller någon av de ekvivalenta formerna a) \begin{displaymath}... \end{displaymath} b) \[... \] c) $$... $$ som alla ger en ekvation utan nummer (... betecknar kod för själva ekvationen). Man kan också typsätta matematik som vanlig text genom att omge den matematiska delen med dollartecken. Koden 5
... since $x^2+2x+4=(x+2)^2$, we get... ger... since x 2 + 2x + 4 = (x + 2) 2, we get... Floran av omgivningar och kommandon för typsättning av matematik är stor men ovanstående räcker långt. Vid bedömningen betraktas en alltför vidlyftig användning av eqnarray som ett svaghetstecken. Orsaken till denna vidlyftighet är i regel bristande kunskap som tyvärr i en del fall helt enkelt beror på att man inte läst det hjälpdokument som hör till uppgiften och inte heller ordentligt läst på om alla de kommandon som listas i detta dokument. Observera också hur eqnarray används. De tre delarna varje rad består av ska skjiljas åt med &-tecken. Det går att utelämna dem men det är alltså inte att använda eqnarray på rätt sätt. Slutligen ska också sägas att eqnarray är ifrågasatt av många som tyckar att det helt enkelt inte blir snyggt [1]. Dessutom kan det ibland bli fel utan att man tänker på det. Använd därför eqnarray med måtta. 5 Kodstruktur Skriver man ett manus och ett L A TEX-dokument är ett manus som också ska kunna läsas av människor måste man strukturera det så att det blir lättförståeligt. Med god struktur menas att saker som hör ihop presenteras tillsammans och att det klart framgår vad som är beståndsdel och vad som är helhet. Som exempel kan vi ta listan 1 En mening. 2 Mening 2 på nivå 1. (a) En mening på nivå 2. (b) Ännu en mening på samma nivå. 3 En avslutande mening. Denna kan skrivas \begin{enumerate}\item En mening.\item Mening 2 på nivå 1. \begin{enumerate}\item En mening på nivå 2.\item Ännu en mening på samma nivå.\end{enumerate}\item En avslutande mening.\end{enumerate} vilket är ett exempel på dålig struktur. Det är mycket svårt att bena ut vad detta är för lista eller ens inse hur många element listan har. Som författare ska man visa omsorg om läsaren och anstränga sig så att det man skriver är lätt att förstå och därmed blir läst. Ett av många möjliga exempel på god struktur är 6
\begin{enumerate} \item En mening. \item Mening 2 på nivå 1. \begin{enumerate} \item En mening på nivå 2. \item Ännu en mening på samma nivå. \end{enumerate} \item En avslutande mening. \end{enumerate} Detta går att förstå även om man bara kan grunderna i L A TEX, ja kanske till och med om man ser L A TEX-kod för första gången. Varje listelement börjar på en ny rad som inleds med nyckelordet \item. Radernas indentering antyder vad som är ingår i vad. Vi ser t ex omedelbart att listan har 3 punkter. Att punkt 2 i listan i sin tur består av en lista (som sägs ligga på nivå 2) syns också tydligt. Skulle dessutom den listans punkter innehålla ytterligare listor (eller annat) kan även det tydliggöras genom indentering på motsvarande sätt. Samma behov av strukturering finns också då man programmerar datorer, men då använder man förstås andra språk än L A TEX. När en lärare bedömmer ett manus eller en instruktion du skrivit tittar denne inte bara på sakinnehållet utan det är också viktigt att du ger god struktur. Helt korrekta men mycket dåligt strukturerade manus (datorprogram, L A TEX-kod, HTML-kod mm) kan mycket väl bli underkända. 6 Listnumrering Det går att ändra hur listor numreras genom att definiera om de räknare som styr numreringen. Koden \renewcommand{\labelenumi}{\alph{enumi}} \renewcommand{\labelenumii}{\roman{enumii})} gör om numreringen av listelementen i listan från avsnitt 5 så att första listnivån numreras med stora bokstäver och att den andra nivån numreras med små romerska siffror: A En mening. B Mening 2 på nivå 1. i) En mening på nivå 2. ii) Ännu en mening på samma nivå. C En avslutande mening. Man kan välja mellan arabiska siffror (våra vanliga), små och stora bokstäver samt små och stora romerska siffror. Läs mer på 7
http://www.giss.nasa.gov/tools/latex/ltx-3.html Allt som numreras kan ändras på detta sätt, även rubriknumrering och ekvationsnummer. Ett alternativ är att inkludera paketet enumerate genom att skriva \usepackage{enumerate} i början av koden. Då får omgivningen enumerate argument som förenklar typsättningen av numreringen. Att jag tar upp detta beror på att Skolverkets deluppgifter är numrerade med små bokstäver medan L A TEX numrerar med arabiska siffror om man inte säger annat. Vill man t ex lista deluppgifterna på samma sätt som Skolverket så måste man alltså göra som ovan. I min bedömning har jag inte fäst särskilt stor vikt vid hur numreringen görs bara den görs med en lista då det ur texten framgår att det ska vara en lista (att använda listor är annars inget krav). 6.1 Automatisk numrering Använd den automatiska numrering som L A TEX erbjuder så mycket du kan. Att t ex uttryckligen numrera genom att själv skriva a), b), c),... i texten är lika dåligt som att själv skriva in ekvationsnummer och avsnittsnummer. Börjar man strukturera om dokumentet måste man ändra numreringen manuellt, vilket kräver onödigt arbete och (lätt) riskerar att blir fel. Hårdkoda inte in konstanter i texten utan använd etiketter (\label:s och \ref:s). 6.2 description Observera att listelementen i listor med beskrivingar som skapas med description och itemize-listor inte har någon naturlig numrering! Inkluderar man \label:s i sådana får man inte vad man i regel hade tänkt sig. Koden... \begin{itemize} \item Skriv tydligt. \label{first} \item Skriv rätt. \label{second} \item Skriv i tid. \label{third} \item Skriv ofta. \label{fourth} \end{itemize} Tänk i vart fall på punkterna \ref{first}, \ref{second} och \ref{third}. ger t ex som resultat... Skriv tydligt. Skriv rätt. 8
Skriv i tid. Skriv ofta. Tänk i vart fall på punkterna 6.2, 6.2 och 6.2. Anledningen till att alla är lika är att itemize inte introducerar någon ny numrering. Därför blir alla etiketter istället kopplade till närmast föregående numrering som råkar vara avsnittsnumreringen(!) Eftersom den är 6.2 får även etiketterna i listan samma värde. På samma sätt blir det om man använder description. Att etiketterna fungerar i enumeratelistor beror på att enumerate startar en ny numrering 1. Referenser [1] Lars Madsen, Avoid eqnarray! (skrivet 2006-10-05). http://www.imf.au.dk/system/latex/artikler/avoid_eqnarray/avoid_eqnarray.pdf (läst 2008-09-21). 1 För text omedelbart efter listan gäller återigen den numrering som gällde innan. Detta gör att man också kan ha numrerade listor i numrerade listor och ändå få separat numrering inom respektive lista. 9