Pygments
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Pygments 🇬🇧 ist ein leistungsfähiges, in Python geschriebenes Programm zur Syntax-Hervorhebung. Das heißt, man übergibt Pygments eine Datei (z.B. den Quellcode eine Programms) und erhält als Ergebnis eine Datei, in der die Syntax-Elemente farbig hervorgehoben sind, was in der Regel die Lesbarkeit erhöht.
Inyoka verwendet Pygments zur Syntax-Hervorhebung, ebenso wie eine Reihe weiterer Projekte 🇬🇧.
Installation¶
Paketquellen¶
Pygments ist in den Ubuntu-Quellen für Python 2 und Python 3 enthalten [1]:
python3-pygments
Befehl zum Installieren der Pakete:
sudo apt-get install python3-pygments
Oder mit apturl installieren, Link: apt://python3-pygments
bzw. für Python 2:
python-pygments
Befehl zum Installieren der Pakete:
sudo apt-get install python-pygments
Oder mit apturl installieren, Link: apt://python-pygments
Manuell¶
Je nach Ubuntu-Version ist nicht die neueste Pygments-Version in den Quellen enthalten. Wer diese unbedingt benötigt, kann das Programm auch über pip manuell installieren
Hinweis!
Fremdsoftware kann das System gefährden.
Nutzung¶
Es gibt zwei Möglichkeiten, Pygments zu nutzen: Über das Kommandozeilen-Programm pygmentize oder über das Python-Modul.
Pygmentize¶
Pygmentize ist das Kommandozeilen-Programm zu Pygments.
Die allgemeine Syntax lautet:
pygmentize -l LEXER -f FORMATTER [-O WEITERE_OPTIONEN] -o ZIELDATEI EINGABEDATEI
Zwingend ist dabei allerdings nur die EINGABEDATEI
. Wird keine AUSGABEDATEI
definiert erfolgt die Ausgabe auf stdout, also in der Regel den Bildschirm.
Die Option -l
legt den Lexer fest. Dies bedeutet, dass man vorgibt, um welche Eingabedatei es sich handelt (Python-Code, HTML-Datei, Make-File usw.). Gibt man die Option nicht an, versucht Pygments anhand der Datei-Endung zu erraten, um welche Datei es sich handelt. Gibt man die Option -g
an, so wird versucht, anhand des Datei-Inhalts die Art der Eingabedatei zu erraten.
Die Option -f
gibt an, wie die ZIELDATEI
formatiert werden soll. Zur Auswahl stehen eine Vielzahl von Ausgabeformaten wie HTML, LaTex, diverse Grafik-Formate usw.
Je nach Ausgabeformat stehen eine Reihe von Optionen zur Verfügung, die mit -O OPTION
übergeben werden. Werden mehrere Optionen benötigt, kann man -O
mehrfach angeben. Einen Überblick über die gängigen Optionen gibt es in der Dokumentation 🇬🇧.
Beispiel:
pygmentize -l python -f html -o codeseite.html quellcode.py
Dieser Befehl würde die Datei quellcode.py laden, den Code gemäß dem Python-Lexer hervorheben, die Ausgabe als HTML-Seite formatieren und in der Datei codeseite.html speichern. Allerdings wird so keine vollständige HTML-Seite erzeugt, sondern nur eine Teil (hauptsächlich <div class="...">
und <span class="..."
>, außerdem werden die CSS-Stile weder intern definiert noch eine externe CSS-Datei angelegt.
Der Befehl
pygmentize -l python -f html -O full -o codeseite.html quellcode.py
erzeugt eine vollständige HTML-Datei (also inkl. <html>
,<head>
,<body>
usw.) mit intern definierten CSS-Stilen.
Über den Aufruf
pygmentize -l python -f html -O full -O cssfile="quellcode.css" -o codeseite.html quellcode.py
erhält man eine vollständige HTML-Datei und eine externe CCS-Datei mit dem Namen quellcode.css, welche in der HTML-Dateie eingebunden wird.
Eine vollständige Übersicht über alle Lexer und Formatter erhält man über den Aufruf von
pygmentize -L
Pygmentize kennt noch eine Reihe weiterer Optionen, welche man in der Manpage oder Online-Dokumentation 🇬🇧 nachlesen kann.
Python Modul¶
Mit der Installation von Pygments werden die entsprechenden Python-Module installiert.
Dieses können über den übliche Weg
1 2 3 | import pygments # alternativ from pygments import ... |
in Python geladen werden.
Auf der Projekte-Seite gibt es eine vollständige Übersicht über die Pygments-API 🇬🇧. Alle Funktionen, die pygmentize beherrscht stehen auch innerhalb von Python zur Verfügung.
Links¶
Dokumentation 🇬🇧 zu Pygments
Live-Demo 🇬🇧 von Pygments