LaTeX - typografisk perfeksjon

LaTeX - typografisk perfeksjon

Tirsdag 25. oktober holdt Veronika Heimsbakk et foredrag om «Introduksjon til LaTeX» på Institutt for informatikk, Universitetet i Oslo for skaperverkstedet Åpen sone for eksperimentell informatikk.

Hva er LaTeX?

Enhver som har studert ved et universitet har ett eller annet forhold til verktøyet LaTeX. LaTeX er et typesettingssystem designet for å produsere tekniske og vitenskaplige dokumenter. I den akademiske verdenen er LaTeX «de facto» standard for kommunikasjon og publisering av vitenskapelige dokumenter.

LaTeX er kort for Lamport TeX, etter den amerikanske informatikeren Leslie Lamport, og ble lansert i 1984. Systemet bygger på typesettingssystemet TeX for formatering av dets ouput, og er selv skrevet i TeX sitt macro språk. (Lamport, 2015) TeX er skrevet av professor Donald Knuth, og ble lansert i 1978. Knuth designet TeX for å møte to mål; La enhver få produsere høykvalitetsbøker uten stor innsats, og han ville designe et system som ga nøyaktig det samme resultatet på samtige maskiner, alltid (Knuth, 2015).

Det hele startet som et skriveverktøy for matematikere og informatikere, men det er nå populært hos de som trenger å skrive dokumenter som inneholder komplekse matematiske uttrykk eller tegnsett utenom Latin, som arabisk, sanskrit og kinesisk.

Hvordan bruke LaTeX?

Man kan skrive LaTeX på hvilken som helst maskin, i den teksteditoren som passer deg best, så lenge du har en kompilator for LaTeX. Det fins flere programmer hvor en slik kompilator er innebygd. Undertegnende bruker selv open-source programvaren TeXworks. Men andre programmer som Vim, Emacs og Kile er like gode, det handler om personlige preferanser.

Syntax

LaTeX er bygd opp av en rekke miljøer, hvor ett miljø som alltid skal være med er document.

\begin{document}
\end{document}

Dette miljøet forteller kompilatoren at her skal vi skrive et dokument, altså all tekstlig informasjon, figurer og tabeller. Før man starter dokumenter sitt, deklarerer man gjerne en rekke innstillinger, pakker og kommandoer.

\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\begin{document}
  ...
\end{document}

Et dokument skal alltid starte med kommandoen documentclass. Her setter vi en rekke argumenter i firkant-parenteser, og klassetype i krøll-parenteser. Videre inkluderer vi noen pakker. Det eksisterer utallige pakker til LaTeX, og samtlige er godt beskrevet på Internett. Her forteller vi kompilatoren at vi ønsker et dokument av typen article, som skal være i størrelse A4 med 12pt skriftstørrelse. Videre inkluderer vi pakkene inputenc, som forteller noe om hvilket tegnsett som forventes fra tastaturet. I tillegg til hyperref, som lar oss lage lenker (URLer) i dokumentet vårt.

Vårt første dokument

Her kommer et eksempel på en svært enkel dokumentstruktur, og dens resultat.

\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}

\title{Introduksjon til \LaTeX}
\author{Veronika Heimsbakk\\veronika.heimsbakk@acando.no}
\date{}

\begin{document}
  \maketitle
  Mitt første dokument!
\end{document}

Legg merke til at kommandoene \LaTeX (det eksisterer også en \TeX) vil gi logoen til LaTeX i riktig format. Bruk denne om du omtaler LaTeX i ditt dokument. Ved å bruke \date{} sier vi at vi ikke ønsker å oppgi dato. Ønsker du å oppgi dagens dato, kan du sløyfe denne kommandoen, da dagens dato vises som standard.

I dette eksempelet setter vi også tittel og forfatter på dokumentet, denne informasjonen viser man med kommandoen \maketitle.

Byggeblokker i LaTeX

Seksjoner

Et dokument er bygd opp av kapitler, eller seksjoner. I Word så er dette «headings». Hvis vi bygger videre på forrige eksempel med følgende syntaks.

\section{Seksjon}
Dette er en seksjon.

\subsection{Underseksjon}
Dette er seksjon 1 sin underseksjon.

\subsubsection{Underunderseksjon}
Dette er seksjon 1 sin underunderseksjon.

Nå begynner dokumentstrukturen å falle på plass, men ennå er det en rekke byggeblokker i LaTeX som man burde kjenne til. I dette innlegget tar jeg for meg de viktigste.

Paragrafer

\paragraph{Dette er en paragraf} En setning som følger paragrafen.
\subparagraph{Dette er en underparagraf} Og litt tekst som følger denne underparagrafen.

Diverse

Det kan være hensiktsmessig å kjenne til noen finurligheter ved LaTeX.

 

Syntaks

Ny linje

\\ eller \newline

Kommentarer

% Dette er en kommentar.

Spesialtegn: %, _, $, & m.fl.

\%, \_, \$, \&

Bakslask

\textbackslash

Tekstmanipulering

Fonter

Størrelser

Skrifttyper

Lister

Det er tre typer lister i LaTeX. Listene kan også «nestes» i hverandre for å lage underlister i listen. De tre typer lister i LaTeX er; itemize for punktlister; enumerate for numerert listing; description for «tekstlige» lister.

Itemize

\begin{itemize}
\item
Listelement
  \begin{itemize}
  \item
  Listelement
  \item
  Listelement
  \end{itemize}
\item
Listelement
\item
Listelement
\end{itemize}

Enumerate

Endrer du miljøet på listen over til enumerate, får du følgende resultat.

Description

Endrer du miljøet til description, får du muligheten til å legge inn tekst som listestart.

\begin{description}
\item[Element] Dette er et listelement
\item[Element] Dette er et listelement
\end{description}

Tabeller

Tabeller er en svært essensiell del av LaTeX sine byggeblokker. Legg merke til at hver rad i kolonnen må avsluttes med ei ny linje.

\begin{tabular}[h]{|l|r|c|}
  \hline
  en&to&tre\\
  \hline
  fire&fem&seks\\
  \hline
  sju&åtte&ni\\
  \hline
\end{tabular}

Legg merke til opsjonene i firkant-parenteser og krøll-parenteser. I firkant-parentesene forteller vi hvor vi vil plassere tabellen i forhold til teksten. Hvis du ikke spesifiserer hvor du vil plassere tabellen, vil LaTeX opprette en egen side for tabeller og plassere denne her. En viktig ting å huske på når man skriver dokumenter i LaTeX er at LaTeX vet alltid best! Ikke forsøk å tvinge LaTeX til å gjøre noe, den vet best når det kommer til plassering av tabeller og figurer. h står for «here», og vil plassere tabellen der du definerer den.

Opsjonene i krøll-parentesene sier oss noe om hvordan justeringen i hver kolonne skal være. Her sier vi at første kolonne skal være justert mot venstre (left), andre kolonne mot høyre (right) og siste kolonne i sentrum (center). Pipesymbolet angir at her skal vi ha ei vertikal linje.

Inne i tabular-miljøet skriver vi \hline når vi ønsker ei horisontal linje. Tabellceller separeres med en ampersand, og rader avsluttes med ny linje.

Figurer

Figurer, som bilder, kan inkluderes på følgende vis. Merk at for å inkludere bilder, må vi bruke pakken graphicx.

\begin{figure}[h]
  \centering
  \includegraphics[width=8cm]{latexlogo.png}
  \caption{\LaTeX logo.}
\end{figure}

Likt som for tabeller kan vi sette en opsjon for posisjon i firkant-parenteser. Inne i miljøet figure har vi også tilgang til kommandoen \centering som vil sentrere bildet i dokumentet. Bildebeskrivelse legges til med kommandoen \caption.

Referanser

Ved bruk av kommandoen \label i figure- og table-miljøer kan vi benytte oss av kommandoen \ref i teksten vi skriver. \ref vil hensvise til oppgitt figur eller tabell og lage en link til denne i PDFen vi kompilerer.

\begin{figure}
  \centering
  \includegraphics[width=8cm]{latexlogo.png}
  \caption{\LaTeX logo.}
  \label{fig:latexlogo}
\end{figure}
 
\paragraph{Referanser} Figur \ref{fig:latexlogo} viser \LaTeX sin logo.

Matematikk

Å skrive matematikk i LaTeX er en fryd for forfatteren og øyet. LaTeX er som nevnt «de facto» standard for dokumenter som inneholder mye matematikk og logikk. Miljøet for å skrive matematikk i LaTeX er to dollartegn.

$$

Inne i disse kan vi benytte oss av samtlige symboler som eksisterer, har eksistert og vil eksistere (Pakin, 2009). Noensinne. La meg gi et eksempel på bruk av matematikk og symboler ved å definere en deterministisk automat.

\paragraph{Definisjon} En \textbf{deterministisk automat} er et 5-tuppel ($\mathcal{Q}$, $\sum$, $\delta$, $q_0$, $\mathcal{F}$), hvor:

\begin{itemize}
  \item $\mathcal{Q}$ er et sett tilstander.
  \item $\sum$ er input alfabet.
  \item $\delta : \mathcal{Q} \times \sum \rightarrow \mathcal{Q}$ er pilenes funksjon.
  \item $q_0$ er $\mathcal{Q}$ sin starttilstand.
  \item $\mathcal{F} \subseteq \mathcal{Q}$ er de $x$-antall aksepterte tilstander.
\end{itemize}

Legg merke til den greske bokstaven delta. Samtlige greske bokstaver kan skrives på denne formen. Ønsker man stor delta, kan man skrive \Delta

Hvorfor skal man bruke LaTeX?

Nå tenker du sikkert, «hvorfor i all verden skal jeg bruke LaTeX?». Svaret er enkelt; LaTeX vet best!

  • LaTeX tilbyr typografisk perfeksjon.
  • LaTeX er lett å lære, og enklere å bruke.
  • Du kan benytte LaTeX til å tegne grafer, trær og alskens figurer.
  • Det er «de facto» standard for å skrive matematikk og logikk.
  • LaTeX (gjennom graphicx) godtar inkludering av vektorfiler.
  • LaTeX har det beste referanse- og linkesystemet.

Når man skriver i Word, så er det du som vet best. Dette er sjelden tilfellet. I LaTeX, så vet LaTeX best, det kan man stole på.

Hvis du skal skrive dokumentasjon som inneholder matematikk, vil LaTeX være det perfekte verktøy. Et fagområde i IT-bransjen som inneholder mye logikk er semantiske teknologier, og å skrive «description logics» (DL) vil være mer korrekt og enklere med LaTeX enn andre skriveprogrammer (som Word).

La meg gi et eksempel fra den semantiske verden. La oss beskrive en 2CV. 

:TwoCV rdfs:subClassOf [   rdf:type owl:Restrictions ;
                           owl:onProperty :driveAxle ;
                           owl:allValuesFrom :FrontAxle ] .

Bruker man DL for å beskrive disse triplene vil man måtte benytte seg av symboler som gjerne ikke eksisterer i programmer som Word. Uansett, så er en slik beskrivelse mye lettere (og penere) å beskrive i LaTeX.

TwoCV $\sqsubseteq \forall$ driveAxle.FrontAxle

Har du interesse for typografi, perfeksjon og bokstaver, lær deg LaTeX. Kan du LaTeX, bruk det.

Kilder

Knuth. (2015, August 05). TeX Users Group

Lamport. (2015, April 03). LaTeX - A document preparation system

Pakin, S. (2009, November 09). The Comprehensive LaTeX Symbol List.

 

Om bloggeren:
Veronika har studert programmering og nettverk ved Universitetet i Oslo og har en forkjærlighet for logikk, semantiske teknologier, typografi og elektronikk.

comments powered by Disqus