Denna webbsida är till för dej som vill komma igång att skapa rapporter, uppsatser och liknande med LaTeX. Detta görs med exempel och tips samt malldokument m.m. Sedan finns det hänvisningar till mer fullständiga skrifter för att ha som referens när du ska använda LaTeX.

Bakgrund

LaTeX är ett program som man använder för att på ett enkelt sätt skapa vackra dokument. Till skillnad mot programverktyg baserade på WYSIWYG (What You See Is What You Get), som t.ex. välkända Microsoft Word, så överlåter man formatteringen av dokumentet till LaTeX. Via formatteringskommandon i texten anger man att rubriker, olika stilsorter, listor, fotnoter, infogade bilder, innehållsindex m.m. ska skapas. På så sätt kan man mer koncentrera sig på innehållet och dess logiska struktur i det man skriver än på dokumentets layout. Man kan även lätt omforma dokumentet i olika format som Adobe PDF, Postscript eller HTML m.fl. LaTeX har för övrigt många likheter med HTML.

När man skall skriva sin kandidat- eller master-uppsats så är LaTeX ett utmärkt verktyg för det. Med hjälp av denna webbsida och speciellt det malldokument för LaTeX som beskrivs nedan så kan man snabbt komma igång med att skriva sitt manuskript i LaTeX-format.

LaTeX skapades av Leslie Lamport och är ett makropaket ovanpå det generella typsättningsprogrammet TeX. Professor Donald E. Knuth vid Stanford University skapade TeX och METAFONT när han behövde ett system för att fotosätta sin serie av välkända böcker The Art of Computer Programming (TAOCP). På grund av det så har LaTeX mycket bra stöd för typsättning av matematiska och logiska formler.

TeX/LaTeX finns för ett stort antal operativsystem, bl.a. för Linux och Microsoft Windows av olika slag. För Linux finns TeX Live-distributionen och för Windows finns MiKTeX-distributionen. På DSV finns TeX/LaTeX på alla våra Linuxsystem.

Läs mer om WYSIWIG-ordbehandling kontra LaTeX i artikeln Word Processors: Stupid and Inefficient, av Allin Cottrell, Wake Forest University, USA.

 

Att skapa dokument med LaTeX

För att skapa ett dokument i utskriven form med hjälp av LaTeX gör man följande steg:

  1. Skapa en vanlig textfil med LaTeX-manuskriptet.
  2. Kompilera manuskriptet till PDF med pdfLaTeX.
  3. Förhandsgranska resultatet med PDF-läsare.
  4. Skriv ut från PDF-läsaren.

En något fördjupad beskrivning av dessa steg är följande:

  1. Först så skapar man en vanlig textfil som innehåller vanlig text och instruktioner som talar om hur LaTeX ska formatera texten. Man använder då med fördel textredigeraren Emacs som automatiskt använder LaTeX-mode om filens namn slutar på ".tex". Men man kan förstås också använda något annat textredigeringsprogram. Antag att den skapade filen heter rapport.tex, man ger då kommandot emacs rapport.tex& eller startar Emacs och öppnar textfilen med Emacs menyer eller kommandon.
  2. Sedan kompilerar man med hjälp av LaTeX den skapade textfilen till PDF som kan läsas på skärm och skrivas ut. Kommandot för att göra det är pdflatex rapport i detta exempel. Namntillägget ".tex" behöver man inte ange. Resultatet blir filen rapport.pdf. Ibland behöver man upprepa kommandot några gånger för att innehållsförteckning, sidhänvisningar etc. ska bli rätt.
  3. Man kan nu öppna PDF-filen med en PDF-läsare som t.ex. Evince (på Linux) eller Adobe Reader.
  4. Utskrift görs enklast direkt från PDF-läsaren.

 

Hur ser ett LaTeX-dokument ut?

Ett LaTeX-dokument består av två delar, dokumenthuvudet och dokumentkroppen:

\documentclass{dokumenttyp}

dokumenthuvud

\begin{document}

dokumentkropp

\end{document}

I dokumenthuvudet laddar man paket med \usepackage för att lägga till olika funktioner som t.ex. svensk avstavning eller grafikpaket. Man kan även ändra på marginaler och radavstånd här.

Dokumentkroppen är texten för dokumentet.

 

Ett enkelt exempel på LaTeX-fil

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[swedish]{babel}

\title {Inlämningsuppgift 2b}
\author{Allan K Luring}
\begin{document}
\maketitle
\section{Detta är en rubrik}
Här kommer första stycket i artikeln.

Detta blir ett nytt stycke eftersom det är en tom rad före.
\subsection{Detta är en underrubrik}
\end{document}

 

Svenska tecken och svensk avstavning

För att kunna använda svenska tecken i ett LaTeX-dokument lägger man enligt exemplet ovan in följande kommandon i dokumenthuvudet (innan \begin{document}):

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

Svensk avstavning får man som visas i exemplet ovan genom att lägga följande kommando i dokumenthuvudet.

\usepackage[swedish]{babel}

 

Ett längre malldokument

Vi har tagit fram ett längre LaTeX-dokument som man kan använda som mall (eng. "template") då man skriver sitt eget dokument med LaTeX. Till en början kan man studera själva LaTeX-textfilen i ett fönster och parallellt ha slutresultatet i PDF-form öppet i ett annat fönster. Man kan då se vad dom olika LaTeX-kommandona genererar. Nedan följer länkar till de olika filerna. OBS att ifall man sparar en egen kopia av filen latexmall.tex så måste man även ha kopierat sample.eps för att LaTeX-kompileringen ska fungera. latexmall.tex har alltså en referens till inkapslade PostScript-filen sample.eps. Även om man bara kopierar latexmall.dvi så behövs även då sample.eps om man vill läsa latexmall.dvi med t.ex. xdvi.

 

Att använda LaTeX och Emacs

Användbara editeringslägen (modes)

Inte helt oväntat har Emacs ett utmärkt stöd för LaTeX. De flesta Emacs-versioner byter automatiskt editeringsläge till LaTeX-läge (titta på statusraden längst ned) när man skapar eller öppnar en fil med filändelsen .tex. För att gå in i LaTeX-läge skriver man:

M-x latex-mode

I latex-mode kommer Emacs att konvertera citationstecken till `` och '' automatiskt. (Minns att i svenska använder man alltid ''!).

Andra bra editeringslägen att slå på är auto-fill-mode som radbryter automatiskt efter ett visst antal tecken:

M-x auto-fill-mode

Även line-number-mode och column-number-mode är bra att slå på (visar markören aktuella position, rad respektive kolumn):

M-x line-number-mode
M-x column-number-mode

För att ställa in hur radlängd (d.v.s. hur många tecken som ryms på en rad innan Emacs radbryter automatiskt) kan man trycka:

C-6-6-x f

d.v.s. tryck ned control-tangenten, skriv 66x, släpp control och tryck f. Nu är radlängden 66 tecken. 66 tecken är en bra radlängd eftersom det är inom gränsen för vad som är lätt för ögonen att följa på en rad, men man kan tänka sig situationer då 66 är för litet eller för mycket.

För den som använder BibTeX finns editeringsläget reftex-mode:

M-x reftex-mode

Se kortkommandon för reftex-mode nedan. Läs gärna info-filen för reftex-mode i Emacs. Det går att ställa in och anpassa reftex i all oändlighet.

Användbara kortkommandon

C-c C-o Stoppa in environment (latex-mode)
C-c C-e Stänger det aktuella environmentet, d.v.s. stoppar in ett \end {...} där ... är det aktuella environmentet (latex-mode)
C-c { Stoppa in {} och ställ markören mellan dem (latex-mode)
C-j Stoppa in två radbrytningar (nytt stycke i LaTeX) (latex-mode)
M-q Radbryt aktuellt stycke enligt aktuella radlängden (auto-fill-mode)
C-6-6-x f Sätt aktuell radlängd till 66 (naturligtvis kan andra tal är 66 användas) (auto-fill-mode)
M-enter Stoppar in ett \item vid markörens position och indenterar.
<tab> Indenterar den aktuella raden. I reftex-mode kan man också använda tab efter en etikett i en \cite för att få reda på om den finns i den aktuella BibTeX-filen. (reftex-mode)
C-c [ Stoppar in ett \cite och låter dig söka efter en label med ett regex (reftex-mode)
C-c ( Stoppar in en label (reftex-mode)
C-c ) Stoppar in en referens och låter dig välja label ur en lista (reftex-mode)
M-x tex-validate-region Kontrollerar den markerade texten och ser om alla inledande ( { $ matchas av en avslutande $ } ) (i rätt ordning) (latex-mode)

 

Andra kortkommandon

C-c f Kompilera det aktuella dokumentet i LaTeX (latex-mode)
C-c tab Kör BibTeX (latex-mode)

Stavningskontroll

På DSV:s Linuxdatorer är Emacs kopplat till programmet ispell som är en stavningskontroll som bl.a. förstår LaTeX och inte klagar på alla LaTeX-kommandon. Ispell startas med:

M-x ispell

Då kontrolleras språket i dokumentet mot ordboken för det aktuella språket. För att byta aktuellt språk, t.ex. till svenska, skriver du:

M-x ispell-change-dictionary

och skriver sedan ``svenska'' och trycker enter.

Om ispell hittar ett ord som inte matchar mot någon post i ordboken markeras ordet och längst upp i fönstret visas föreslagna alternativa stavningar. Alla alternativ föregås av ett nummer och om man trycker numret för ett visst alternativ ersätts det markerade ordet med alternativet. Kommandon under en körning med ispell är:

n (n=siffra) Byt ut markerat ord mot alternativ n
i Stoppa in det markerade ordet i ordboken (ändrar bara i ordboken för dig, inte för någon annan)
space Gå vidare utan ändring (ispell kommer att även att klaga på nästa förekomst av ordet)
a Acceptera stavningen av det markerade ordet under denna körning av ispell
r Byt ut det markerade ordet mot ett annat, men inte något av de som finns bland alternativen (nu får du själv fylla i vilket)

Ett ord om radbrytningar

I auto-fill-mode stoppar Emacs in en radbrytning efter varje rad som brutits automatiskt. Detta skiljer sig från många editorer på pc (dock ej från t.ex. Kile). Detta gör att om samma LaTeX-dokument tas in i en annan editor kommer dokumentet att vara radbrutet på exakt samma sätt, (förutsatt att inte den förinställda radlängden i den editorn är mindre än radlängden på dokumentet)! Det gör också att dokumentet fortsätter att vara radbrutet på samma sätt i Emacs även om den aktuella radlängden ändras med C-<radlängd>-x f. Det är alltså möjligt att stänga av automatisk radbrytning för långa matematiska formler och kodsnuttar, något som ofta underlättar typsättandet avsevärt.

 

Koncentrera på strukturen

Tänk att man vill visa varje ny term kursiv varje gång den används. Istället för att kursivera den definierar man ett makro för nya termer, t.ex.:

\newcommand{\nyterm}[1]{\textit{#1}}

som fungerar precis som kursiv-makrot och används så här:

\nyterm{typsättningssystem}

Skillnaden är att man direkt i koden kan se "här är en ny term". När man senare inser att man vill att nya termer skall vara fetstilta och dessutom hamna i innehållsförteckningen behöver man bara ändra om makrot till:

\newcommand{\nyterm}[1]{\textbf{#1}...mer kod...}

och så sker förändringen på alla ställen direkt. På detta sätt hjälper LaTeX till att tänka på struktur och inte på utseende. Speciellt som man alltid kan fixa till utseendet senare, när själva innehållet är klart, genom att definiera om taggarna.

 

Skapa egna makron

När man skriver ett LaTeX-dokument behöver man inte sällan skapa nya makron, som i \nyterm -exemplet ovan. Ett nytt makro skapas så här:

\newcommand{\<namn>}[<antal parametrar>]{<LaTeX-kod>}

där <namn> är ett namn bestående av bokstäver a-z och A-Z, <antal parametrar> är en siffra 1-9 (om man inte vill ha parametrar utelämnar man hela [<antal parametrar>] och <LaTeX-kod> är vanlig LaTeX-kod.

Parametrarna får namnen #1, #2 o.s.v. Detta exempel-kommando lägger till en kommentar i marginalen: 

\newcommand{\nyterm}[2]{\textit{#1}\marginpar{\small\raggedright#2}}

\textit{...} kursiverar ett eller flera ord
\marginpar{...} skapar en marginalnot.
\small minskar fontstorleken i hela marginalnoten
\raggedright ställer av justeringen av högermarginalen

Med andra ord kommer

\nyterm{LaTeX}{Ett professionellt verktyg för att typsätta t.ex. böcker och uppsater}

att kursivera ordet "LaTeX" och skriva "Ett professionellt verktyg för att typsätta t.ex. böcker och uppsater" i en litet mindre font i marginalen.

Observera dock att en vanlig marginal är på tok för liten för så långa utvikningar.

 

Korsreferenser

LaTeX har ett utmärkt stöd för korsreferenser. I texten kan man skapa "etiketter" som man sedan kan referera till:

\label{etikett}

skapar en etikett. När man sedan vill referera till en viss etikett skriver man bara:

\ref{etikett}

t.ex.

Läs mer om typsättning i kapitel
\ref{sec:typsattning} ...

där "sec:typsattning" är en etikett som man skapat med \label någonstans i dokumentet. En konvention är att inleda etiketter som motsvarar stycken med "sec:", tabeller med "tab:" o.s.v. I den kompilerade dokumentet kommer resultatet att bli

 

Läs mer om typsättning i kapitel 2

givet att \label {sec:typsattning} är definierad i det andra kapitlet. Byter man ordning på kapitlen hänger korsreferenserna automatiskt med efter en omkompilering (två gånger!)

För att referera till ett sidnummer:

\pageref{etikett}.

Exempel:

Läs mer om typsättning i kapitel
\ref{sec:typsattning} på
sid. \pageref{sec:typsattning}

som blir:

Läs mer om typsättning i kapitel 2 på sid. 14

 

Kompilering

LaTeX kör s.k. one-pass kompilering, d.v.s. att källkoden bara läses en gång, uppifrån och ned. Det betyder att om man har referenser framåt i texten så kommer dessa inte att fungera första gången man kompilerar dokumentet. All sådan information sparas i en temporär fil med filtillägget .aux och används inte förrän man kompilerar filen en extra gång. Kör man MikTeX under Windows kan man skriva texify minfil.tex varvid LaTeX kompilerar så många gånger som behövs för att få alla korsreferenser etc. att fungera.

 

Grafik

pdfLaTeX kan importera bland annat PDF, PNG och JPEG. I dokumentets huvud måste man lägga till följande rad i dokumenthuvudet för att ladda tilläggspaketet graphicx med

\usepackage{graphicx}

Detta gör att man får tillgång till kommandot

\includegraphics[...]{...}

Grafiken läggs normalt i en flyttbar omgivning, precis som tabeller. Exempel:

\begin{figure}
\begin{center}
\includegraphics{bild.pdf}
\end{center}
\caption{Bildtext här.}
\label{bild}
\end{figure}

Man kan även ange även ange height, width och angle till kommandot \includegraphics[...]{...} . Exempel: 

\includegraphics[height=5cm, width=10cm]{bild.pdf}

Man använder med fördel PNG och JPEG för rastergrafik. JPEG passar bäst för foton. Har man en bild som består av vektorgrafik bör man däremot konvertera den till PDF. De flesta vektorgrafikprogram kan exportera till EPS, sedan kan man enkelt konvertera EPS-filen till PDF med kommandot epstopdf.

Följande är en sammanställning över en del vektorgrafikprogram som kan spara i EPS-format:

  • Adobe Illustrator, kommersiell programvara som finns för MS Windows.
  • CorelDRAW, kommersiell programvara som finns för MS Windows.
  • Daneba Canvas, kommersiell programvara som finns för MS Windows.
  • Dia, fri programvara som finns för Linux. Finns installerat på DSV:s Linux-system
  • Inkscape, fri programvara som finns för Linux och MS Windows. Finns installerat på DSV:s Linux-system
  • OpenOffice.org Draw, fri programvara som finns för Linux och MS Windows. Finns installerat på DSV:s Linux-system
  • Xfig, fri programvara som finns för Linux. Finns installerat på DSV:s Linux-system

 

Olika filtyper

Bland annat följande filtyper förekommer i samband med LaTeX:

Namn-
tillägg
Innehåll i filen
.tex manuskript för LaTeX-dokument
.dvi resultatfil från LaTex-kompilering (device independent)
.log en loggfil med information om senaste LaTeX-kompileringen
.aux transporterar info från en LaTeX-kompilering till nästa och används för att skapa innehållsförteckning och referenser
.sty LaTeX makropaket. Laddas i manuskript med \usepackage -kommandot
.toc lagrar alla rubriker och används vid nästa kompilering för att skapa innehållsregister
.lof samma som .toc men för figurer
.lot samma som .toc men för tabeller
.idx innehåller alla ord i ett eventuellt index. Processa filen med \makeindex
.ind resultat från den processade .idx-filen klar för att inkluderas i dokumentet vid nästa kompilering
.ilg loggfil som säger vad \makeindex gjorde
.ps slutdokument i Adobe PostScript-format som kan skickas till Postscriptlaserskrivare eller visas på grafisk skärm med ghostview
.pdf slutdokument i Adobe PDF-format som kan läsas med bl.a. Adobe Acrobat Reader eller ghostview
.eps encapsulated PostScript, grafik i PS som kan infogas i LaTeX-dokument

 

MiKTeX

MikTeX är den populäraste Windows-distributionen av LaTeX. Den är uppdelad i ett antal paket som man själv kan välja att installera, antingen över nätet eller från disk om man redan har laddat ned dem. MikTeX stora styrka ligger i just pakethantering och att det finns enklare Wizards för vanliga uppgifter, som t.ex. att slå på stöd för svensk avstavning som standard.

Som något med avancerad LaTeX-användare hamnar man ofta i situationen att man behöver ett speciellt paket för att t.ex. rotera text eller liknande som inte finns med i standarddistributionen. Med hjälp av MikTeX pakethanterare kan man enkelt kryssa för paketet man vill ha och få det automatiskt nedladdat och installerat.

I övrigt fungerar MikTeX som vilken annan LaTeX-distribution som helst, man kör "latex" från kommandoprompten i DOS.

MikTeX visningsprogram heter YAP -- Yet Another Previewer och fungerar i princip som Acrobat Reader.

MikTeX har också ett praktiskt program, texify, som manipulerar en LaTeX-fil från start till mål, utan att man behöver gå igenom flera steg, eller kompilera flera gånger, vilket annars är vanligt.

För att få yap att fungera med bilder bör man också installera programmet ghostscript på sin dator, gärna innan man installerar själva MikTeX, eftersom yap använder sig av ghostscript för att visa bl.a. PostScript-bilder. Ghostscript går att ladda ned gratis från nätet.

Vidare saknar yap stöd för vissa typer av mer avancerade tricks som t.ex. färgad text etc. Då kan man vilja titta på PostScript-filen istället, då PostScript är ett mycket kraftfullare filformat än DVI. Ett bra program för både MS Windows och Unix som visar PostScript är ghostview, som går att ladda ned gratis från nätet.

Minsta MikTeX-installationen är 28 Mbyte och hämtas från www.miktex.org.

 

BibTeX

BibTeX är ett program för att skapa en bibliografi från en (La)TeX-fil för att sedan inkorporeras i samma fil. En BibTeX-manual finns i varje distribution av LaTeX. Den ligger i /usr/share/doc/texmf/bibtex/base/btxdoc.dvi.gz i standardinstallationen, och i c:\program files\texmf\doc\bibtex\base\btxdoc.dvi i MikTeX.

 

LyX

LyX är en ordbehandlare som bygger på LaTeX. Då man använder LyX ligger tyngdpunkten mer vid dokumentets struktur; utseendet väljs i första hand genom val av dokumentmall och övriga dokumentinställningar. Det finns mallar för brev, presentationer, artiklar och böcker i olika varianter, bland annat färdiga mallar för artiklar i ett antal vetenskapliga tidskrifter. Typsnitt och spaltbredd i editeringsvyn kan väljas oberoende av typsnitt och spaltbredd vid utskrift. LyX finns installerad i DSV:s Linux-miljö men programvaran är fri och kan installeras i olika operativsystem som MS Windows, Linux och Mac OS X. Se LyX webbplats

http://www.lyx.org

 

LaTeX IDE

Om man föredrar att arbeta i en integrerad utvecklingsmiljömiljö, en så kallad IDE (Integrated Development Environment), så finns programmet Kile installerad i DSV:s Debian GNU/Linux-miljö. Kile är utvecklat för KDE-miljön som finns för olika Unix/Linux-system. Man kan kämta Kile från http://kile.sourceforge.net.

TeXnicCenter är en fri LaTeX IDE för användare av Microsoft Windows. Se http://www.toolscenter.org/front_content.php?idcat=26.

 

FAQ - vanliga frågor och svar om LaTeX

Overful hbox

Fråga: Jag får en massa text som skjuter över in i marginalen hela tiden. Jag förstår inte varför. Hur fixar jag det?

Svar: Det finns ett par sätt:

  1. Stoppa in manuella avstavningar: Om ordet programvaruteknik inte avstavas korrekt, pröva att skriva, t.ex. program\-varu\-teknik för att tala om för LaTeX bra ställen att avstava på. Om avstavningen görs "mjuk", d.v.s. \- istället för -, skrivs inte bindestrecken ut när de inte behövs.
    Om du använder ordet ofta kan du lägga till det i en speciell avstavningslista i ditt dokument. Skriv \hyphenation {program-varu-teknik Tobias} för att ge ordet programvaruteknik avstavningen ovan och förhindra namnet Tobias från att avstavas alls.
  2. Stoppa in \linebreak . Om en rad skjuter över bara litet grand, och det finns ingen möjlighet att avstava någonting för att få bukt med problemet kan du stoppa in ett \linebreak innan det sista (icke-överskjutande) ordet. Då bryts raden hårt och marginalen justeras ordentligt. (Kan även användas för att få bukt med underful hbox.)

Se också till att du använder dig av avstavningsreglerna för det aktuella språket. För att få språkstöd för svenska (LaTeX tolkar å,ä,ö, svensk avstavning etc.) kan du i ditt dokument skriva:

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[swedish]{babel}

Att använda \usepackage [latin1]{inputenc} kanske inte är en bra idé om man skall skicka källkoden i ditt dokument till någon som inte använder svensk tangentbord och teckenuppsättning. Om man bara vill komma åt svenska tecken för att skriva några få namn kan svenska bokstäver kodas:

      \aa   å
      \AA   Å
      \"a   ä
      \"A   Ä
      \"o   ö
      \"O   Ö
  

LaTeX-mall för masteruppsatser

En LaTeX-mall för masteruppsatser finns på Thesisinfo

LaTeX kommandoreferens

En fullständig förteckning över LaTeX-kommandon finns lokalt lagrad på DSV:s webb. Samma information finns även lokalt lagrad på DSV:s datorer med Linux. Med GNU-kommandot "info latex" kan man läsa den i ett terminalfönster. Skrivbordssystemet Gnome på Linux-datorerna har ett hjälpsystem (Gnome help browser) där man också kan hitta LaTeX-referensen.

 

Manualer

 

Webbplatser

 

Olika TeX/LaTeX-distributioner

 

Operativ-
system
Namn Webbplats
MS Windows MiKTeX www.miktex.org
Mac OS X OzTeX www.trevorrow.com/oztex/
Linux TeX Live www.tug.org/texlive/