Tekniske presentasjoner med LaTeX og Beamer

Det kan ofte være vanskelig å få til pene tekniske presentasjoner hvor kode-eksemplene er godt formatert og fargekodet. Hvis man bruker LaTeX med Beamer-pakken er det enkelt å få til proffe presentasjoner med enhetlig utseende. Nedenfor har vi skrevet opp noen tips for å få til presentasjoner med norske tegn og kode-listing, med Listings-pakken.

Først må man selvsagt sørge for å ha LaTeX installert. Dette er avhengig av platform, og står beskrevet mange steder på nettet (for eksempel her for Mac som ble brukt i vårt eksempel).

Norske tegn
For å få norske tegn til å fungere smertefritt kan følgende start på .tex filen være greit:

\documentclass[norsk]{beamer}
 
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel,textcomp,type1ec,pdfpages}
...

Listings i Beamer
For å få Listings til å funke i Beamer er det et par punkter man må huske på:

  1. Man må bruke \begin{frame} og \end{frame}, ikke kortversjonen \frame{}
  2. Man må bruke fragile opsjonen

Et eksempel:

\begin{frame}[fragile]
  \frametitle{Eksempel-listing}
  \begin{lstlisting}
public static final int MY_INT = 42;
  \end{lstlisting}
\end{frame}

Komplett eksempel
Nedenfor ligger link til en eksempelpresentasjon som ble laget med LaTeX og Beamer, med kode-listing. Koden er formatert med IntelliJ IDEA-inspirerte farger. I vårt eksempel brukes Java-kode, men alle andre programmeringsspråk som støttes av Listings-pakken kan selvsagt brukes:

Full kode for eksempelpresentasjonen:

\documentclass[norsk]{beamer}
\usetheme{Berlin}
 
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel,textcomp,type1ec,pdfpages}
\usepackage{listings}
\usepackage{color}
 
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
 
% Default settings for code listings
\lstset{frame=tb,
  language=java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  frame=single,  
  breaklines=true,
  breakatwhitespace=true
  tabsize=3
}
 
\title{Eksempel-presentasjon med \LaTeX og Beamer}
\author{Eivind Barstad Waaler}
\date{\today}
 
\begin{document}
 
\frame{\titlepage}
 
\section*{Outline}
\frame{
  \frametitle{Agenda}
  \tableofcontents
}
 
\section{Seksjon}
\subsection{Underseksjon}
\begin{frame}[fragile]
  \frametitle{Punktliste + Javakode}
 
  \begin{itemize}
    \item<1-> Flotte norske tegn æøåÆØÅ
    \item<2-> Punkter kommer ett og ett
    \item<3-> Java kode-eksempel:      
  \end{itemize}
 
  \begin{lstlisting}
/**
 * Finfin Java-klasse
 */
public class Person {
 
  private String name = "Ola Nordmann";
 
  // Settere og getter er veldig sentrale i Java!
  public void setName(String name) { this.name = name; }
  public String getName() { return name; }
}
  \end{lstlisting}
\end{frame}
 
\end{document}
  • http://uggedal.com Eivind Uggedal

    Hvis du vil ha litt bedre syntaksutheving kan http://code.google.com/p/yml2tex/ være et alternativ. Den bruker Pygments (som også brukes av Github/Bitbucket) for å utheve kode. Et annet pluss er at man skriver presentasjonene sine i YAML filer (som kompileres til LaTeX kilde).

  • http://tihlde.org/~eivindw/ Eivind Waaler

    Kult! Var ikke klar over det rammeverket. Får teste ut når jeg får tid!

  • Bendik

    Takker så mye for tipsene.