TeXempelvis

En blogg om typsättning med TeX och LaTeX

Vad är TeX? En kort introduktion

Som jag skrev i det förra inlägget syftar inte den här bloggen på att vara en nybörjarintroduktion till Latex, länkar till sådana finns i slutet av det här inlägget. Jag tycker ändå att det är lämpligt med en liten kort introduktion till vad TeX och Latex är, om inte annat för att klargöra begrepp. TeX är ett typsättningssystem och programmeringsspråk skrivet av Donald Knuth för att typsätta primärt böcker. Namnet kommer från det grekiska ordet τεχνη, som är ursprunget till orden teknik och tekniker i svenskan, men som även kan betyda konst. TeX uttalas “tech”, med ett “ch”-ljud liknande “ach” i tyskan.

Programmet utvecklades under sent 1970-tal och tidigt 1980-tal för att utnyttja möjligheterna med datorstödd trycksaksproduktion. Senaste versionen av TeX kom 1989, och efter det låstes utvecklingen för att garantera framtida kompatibilitet och stabilitet. Ett antal buggar har dock ordnats senare, men TeX anses ofta vara i stort sett buggfritt numera.

Ursprungligen typsatte det filer till device independent (dvi)-formatet, men idag är pdf ett betydligt vanligare format och med hjälp av Pdftex blev det möjligt att även skapa sådana dokument på ett enkelt sätt.

TeX bygger på ungefär 300 grundläggande (primitiva) kommandon som sedan byggs upp till högre makron. Ett exempel på hur det fungerar är makrot \TeX som skriver ut programmets logotyp: T\kern -.1667em\lower .5ex\hbox{E}\kern -.125emX.

Samlar man ett antal sådana makron får man ett makropaket, som brukar kallas format. I formatet som Donald Knuth utvecklade, kallat för plainTeX, finns cirka 900 sådana makron definierade, men eftersom möjligheten finns för användaren att definiera egna makron så finns det ingen gräns för hur många som kan finnas.

Latex är egentligen en samling sådana makron som lägger till mycket funktionalitet och gör det möjligt att separera utseende och innehåll med så kallade dokumentklasser. Latex skrevs ursprungligen av Leslie Lamport under 1980-talet och även om senaste versionen kom 1994 har det släppts väldigt många paket som utökar funktionaliteten. Det har sedan Latex släpptes skrivits paket för att typsätta allting från recept till musik, rita figurer och grafer och göra bildspel.

Grundläggande terminologi

Motorn (engine)

Typsättningsmotorn är programmet som typsätter dokumenten. Originalprogrammet är TeX, där den senaste versionen egentligen heter TeX90. Nyare ersättare som utökar eller ändrar funktionalitet är Pdftex, Luatex, Xetex och e-TeX.

e-TeX

E-TeX var en motor som kom på 1990-talet som la till ett antal primitiva kommandon till TeX och som möjliggjorde bland annat typsättning åt båda hållen (med TeX-XeT). E-TeX har numera bakats in i de andra nyare typsättningsmotorerna och används väldigt sällan självständigt.

pdfTeX

Pdftex skapades av Hàn Thé Thành, och är en motor som kan producera pdf-filer direkt, utan att gå via dvi-formatet som tidigare användes. Detta lägger till mycket funktionalitet som till exempel länkar i dokumenten, innehållsförteckningar, mikrotypografi och liknande. Utvecklingen är numera fryst och utvecklarna har gått över till att utveckla Luatex istället.

Pdftex är dock standardmotorn i de flesta TeX-distributionerna, så när skriver något av följande kommandon är det Pdftex som används:

1
2
3
4
$ pdftex				# Pdftex med PlainTeX (ger pdf-fil)
$ latex					# Pdftex med Latex2ε (ger dvi-fil)
$ pdflatex				# Pdftex med Latex2ε (ger pdf-fil)
$ texexec				# Pdftex med Context mkii (ger pdf-fil)

XeTeX

Xetex är en vidareutveckling av TeX ursprungligen utvecklad av Jonathan Kew och utvecklades för att kunna typsätta de flesta språk. Xetex stöder typsättning från både vänster till höger och höger till vänster, eller för den delen något annat godtyckligt håll. Har stöd för Unicode UTF-8, Opentype-typsnitt och mycket annat trevligt, däribland ett bra stöd för olika språk genom paketet polyglossia.

LuaTeX

Luatex kan ses som en efterföljare till Pdftex, med med ett något annat syfte. Tanken är att använda skriptspråket Lua istället för TeXs egna, och på så sätt göra det möjligt att komma åt mer avancerade kommandon på ett enkelt sätt. Luatex stöder, precis som Xetex, Unicode UTF-8 teckenkodning, som gör det möjligt att använda ett stort antal tecken (däribland åäö) utan att behöva göra några speciella inställningar. Vidare stöds Opentype-typsnitt via paketet fontspec och mycket annat.

Personligen så använder jag Luatex till i stort sett allt jag gör, om det inte finns någon väldigt bra anledning att använda någon av de andra motorerna. Jag kommer motivera detta bättre i kommande inlägg, men det beror bland annat på utökade möjligheter till avstavningar och bättre stöd för kopiering av glyfer i pdf:er än vad Xetex har.

Format

Format är en samling makron som underlättar för användaren, eftersom det snabbt blir ohållbart att bara använda primitiva kommandon. De vanligaste formaten är Latex, Context och plainTeX.

LaTeX

Latex presenterades i inledningen, men en kort sammanfattning kommer här.

I grunden utvecklat av Leslie Lamport. Senaste versionen Latex2ε från juni 1994. Latex3 är under utveckling och har varit så länge. De grundläggande paketen, expl3, i Latex3 är dock klara och det finns många andra paket som bygger sin funktionalitet på dessa.

ConTeXt

Medan tanken med Latex var att separera text och form bygger Context istället på idéen att göra det enkelt för användaren att komma åt avancerade typografiska inställningar och göra egna stilar utan att behöva kunna TeXs makrospråk. Context började utvecklas 1990 av Hans Hagen. Den här bloggen kommer primärt att handla om Latex och Context kommer endast att behandlas undantagsvis.

Context finns i två versioner, mkiv och mkvi och den senare kräver att Luatex används.

Distribution

Utöver motorn och formaten så finns det ett stort antal extra filer som gör det enklare att arbeta med typsättningen. I Latex kallas dessa för paket (packages) medan Context kallar de moduler (modules). Utöver detta finns det flera externa program som är användbara tillsammans med TeX. Program som TeX Live och Miktex använder pakethanterare för att hantera alla beroenden och uppdateringar av paketen.

Vad är skillnaden mellan distributionerna?

Standardinställningen i TeX Live är att installera allting på en gång, medan Miktex installerar paket i takt med att de används. Detta gör visserligen att paket man aldrig använder inte installeras och tar upp plats, men samtidigt måste man vara uppkopplad till Internet om man stöter på en fil med paket man inte använt innan. Då hårddiskutrymme sällan är ett problem rekommenderar jag att installera allting direkt, något som är möjligt att göra även i Miktex om man ändrar inställningarna.

En del program och paket är inte tillgängliga i alla distributioner. Ett exempel är indexeringsprogrammet xindy som inte finns i Miktex. På grund av olika regler och tankar vad som gäller paket som inte har öppen källkod så finns en del paket i Miktex som inte finns i TeX Live, men oftast gäller detta bara typsnitt.

Då TeX Live dessutom finns till alla större operativsystem kan man alltid se till att alla personer i eventuella grupper kör samma distribution oavsett om de använder Mac OS, Windows eller Linux.

  • TeX Live för alla större operativsystem.
  • MikTeX för Windows.
  • proTeXt för Windows. Egentligen en version av Miktex som distribueras tillsammans med några andra program.
  • MacTeX för Mac OS. En version av TeX Live tillsammans med ytterligare några program som är speciellt anpassade för Mac OS.

Var kan jag läsa mer?

Det finns många bra källor om man vill lära sig Latex. Jag tycker att Wikibooks Latex-bok är väldigt bra om man vill lära sig grunderna, och den är både fri och gratis. En annan bok som jag brukar rekommendera är Latex and friends, som gavs ut 2012 och innehåller mycket bra information, inte bara om Latex, utan även om flera av de populäraste paketen och externa program.

Vidare finns det några svenska gratisskrifter med lite varierande innehåll.

  • LaTeX-tips av Niklas Andersson och Malin Palö. Skriven 2012 primärt för högskolestudenter (inom matematik).
  • Att TeXa: en praktisk guide av Simon Sigurdhsson. En pågående skrift som tar upp mycket av det som är relevant.
  • Att skriva rapporter med LaTeX skriven av Per Foreby vid Lunds universitet. Har några år på nacken (skriven 2006) och behandlar inte de nyare typsättningsmotorerna Luatex och Xetex. Innehåller dock alla grunder man behöver.

Sist finns även en tryckt bok på svenska, Introduktion till LaTeX av Per Jacobsson, som jag inte har någon erfarenhet av.

Andra bra sidor

En sökning på nätet visar att det finns en uppsjö hemsidor om TeX och Latex med mallar, exempel och introduktioner. Några av de sidorna som jag tycker är bra och använder regelbundet är de som står nedan.

  • Detexify, finns även som mobilapp till både Ios, Windows Phone och Android. En smart tjänst där man kan rita ett tecken och Detexify skriver ut kommandot som producerar just det tecknet. Extra bra när man vet utseendet på ett tecken men inte namnet.
  • TeXample har många bra exempel med hur man använder Tikz för att rita figurer och grafer.
  • TeX på Stack Exchange-nätverket är en frågesida där folk ställer och besvarar frågor. Det finns väldigt många frågor besvarade, så man kan lära sig mycket bara genom att surfa runt och läsa svaren till olika frågor.
  • UK-TUGs FAQ är en sida med väldigt mycket innehåll. Kan dels användas som ett uppslagsverk för att besvara frågor när de dyker upp, men precis som på Stack Exchange kan man lära sig mycket bara genom att läsa det som står på sidan.
  • LaTeX Community innehåller TeX/Latex-relaterade nyheter, ett diskussionsforum och ett antal artiklar.

Comments