Syntax-Highlighting für PHP in LaTeX

2. November 2012 | #latex #php

Wie man mit dem listings-Paket von LaTeX automatisches Syntax-Highlighting aktiviert, habe ich bereits am Beispiel von Matlab erklärt.

Für PHP jedoch fand ich kein fertig ausgearbeitetes Optionen-Set und musste selbst basteln. Dabei versuchte ich, das typische Farbschema des PHP-Manuals nachzuahmen, was im Wesentlichen gelungen ist.

Ob die Farben für den Druck auf Papier taugen, stelle ich in Frage. Bei der Bildschirmdarstellung hat sich die Farbkombination jedoch bewährt und ist daher sicherlich keine ganz schlechte Idee.

Folgende Optionen sind in die Präambel zu meißeln:

% Farben definieren
\usepackage{xcolor}
\definecolor{codeGray}{RGB}{240,240,240}
\definecolor{codeBlack}{RGB}{0,0,0}
\definecolor{codeRed}{RGB}{221,0,0}
\definecolor{codeBlue}{rgb}{0,0,187}
\definecolor{codeYellow}{RGB}{255,128,0}
\definecolor{codeGreen}{RGB}{0,119,0}

% … und zuweisen
\lstset{%
    language=PHP,%
    % 
    % Farben, diktengleiche Schrift
    backgroundcolor={\color{codeGray}},% 
    basicstyle={\small\ttfamily\color{codeGreen}},% 
    commentstyle={\color{codeYellow}},%
    keywordstyle={\color{codeBlue}},%
    stringstyle={\color{codeRed}},%
    identifierstyle={\color{codeBlue}},%
    % 
    % Zeilenumbrüche aktivieren, Leerzeichen nicht hervorheben
    breaklines=true,%
    showstringspaces=false,%
    %  
    % Listing-Caption unterhalb (bottom)
    captionpos=b,%
    %  
    % Listing einrahmen
    frame=single,%
    rulecolor={\color{codeBlack}},%
    % 
    % winzige Zeilennummern links
    numbers=left,%
    numberstyle={\tiny\color{codeBlack}}%
}

Im direkten Vergleich fallen einem sicher schnell einige Unterschiede auf; insbesondere die grünen Spitzklammern bei <?php und ?> sind sehr ungünstig. Näher kam ich mit den Möglichkeiten des Packages aber nicht an die Vorlage heran – vielleicht ist Minted eine mächtigere Alternative, mit der ich aber erst noch befassen muss.

Für Korrekturvorschläge bin ich bis dahin offen! Diesem Blogpost liegt nämlich mal wieder eine zu schreibende Facharbeit zugrunde. :-)