Matlab-Code mit Syntax-Highlighting in LaTeX

LaTeX bietet die aus­ge­spro­chen prak­ti­sche Mög­lich­keit, Syn­tax­her­vor­he­bun­gen auto­ma­tisch vor­zu­neh­men. Das macht es dem Leser des Doku­men­tes ein­fa­cher, sich im Quell­text zurecht­zu­fin­den und der Autor spart sich die Mühe, Schlüs­sel­wör­ter hän­disch ein­zu­fär­ben oder auf Screen­shots aus­zu­wei­chen.

Für eine Aus­ar­bei­tung brauchte ich kürz­lich Her­vor­he­bun­gen für Matlab-Skripte. Auch hier­für taugt das Paket listings (nicht mit listing – ohne s – ver­wech­seln!).

Fol­gen­der Code in der Prä­am­bel ermög­licht genau dies:


\usepackage{listings}
\usepackage{color}

% Farben für Matlab-Listings
\definecolor{hellgelb}{rgb}{1,1,0.85}     % Hintergrundfarbe
\definecolor{colKeys}{RGB}{0,0,255}       % blau
\definecolor{colIdentifier}{RGB}{0,0,0}   % schwarz
\definecolor{colComments}{RGB}{34,139,34} % gruen
\definecolor{colString}{RGB}{160,32,240}  % violett

\lstset{%
    language=Matlab,%
    backgroundcolor={\color{hellgelb}},%
    basicstyle={\footnotesize\ttfamily},%
    breakautoindent=true,%
    breakindent=10pt,%
    breaklines=true,%
    captionpos=t,%
    columns=fixed,%
    commentstyle={\itshape\color{colComments}},%
    extendedchars=true,%
    float=hbp,%
    frame=single,%
    framerule=1pt,%
    identifierstyle={\color{colIdentifier}},%
    keywordstyle={\color{colKeys}},%
    numbers=left,%
    numbersep=1em,%
    numberstyle={\tiny\ttfamily},%
    showspaces=false,%
    showstringspaces=false,%
    stringstyle={\color{colString}},%
    tabsize=4,%
    xleftmargin=1em,%
    xrightmargin=1em%
}

Obige Lis­ting-Ein­stel­lun­gen habe ich aus einem Forum-Bei­trag gemopst und nur leicht ver­än­dert. Die Farb-Defi­ni­tio­nen sind direkt aus Matlab abge­le­sen. Ledig­lich der Hin­ter­grund ist etwas satter, um sich stär­ker abzu­he­ben:

LyX

LyX-Benut­zer können den Code zwi­schen \lstset{% und } in ihren Doku­ment­ein­stel­lun­gen direkt in den Bereich Lis­ting“ ein­tra­gen, aller­dings ohne Komma- und Pro­zent­zei­chen am Ende jeder Zeile. Das hat den Vor­teil einer Code-Über­prü­fung, um damit Fehler im Voraus zu ver­mei­den und den LaTeX-Vor­spann kurz zu halten – keine Ahnung, ob es das wert ist!?

Die Far­b­an­ga­ben und \usepackage{color} müssen trotz­dem in den Vor­spann ein­ge­tra­gen werden, sonst hagelt es natür­lich Feh­ler­mel­dun­gen.

Ich benutze aber $Pro­gram­mier­spra­che!

Wer noch etwas ver­än­dern möchte oder eine andere Pro­gram­mier­spra­che ver­wen­det, schaut am besten mal in das Lis­tings-Hand­buch.

Dort gibt es bspw. auch Tipps zum Refe­ren­zie­ren ein­zel­ner Code-Zeilen und ähn­li­che Spe­zia­li­tä­ten.