Ich muss den Quellcode in LaTeX hervorheben. Das Paket listings
scheint die beste Wahl für die meisten Anwendungsfälle zu sein, und für mich war es das bis jetzt.
Jetzt brauche ich jedoch mehr Flexibilität. Im Allgemeinen suche ich einen echten Lexer. Insbesondere muss ich (für eine eigene Sprachdefinition) eigene Zahlenstile definieren (und hervorheben!). listings
erlaubt nicht das Hervorheben von Zahlen im Code. Ich muss jedoch so etwas produzieren:
listings
kann auch nicht mit beliebigen Trennzeichen für Zeichenfolgen umgehen. Betrachten Sie den folgenden gültigen Ruby-Code:
s = %q!this is a string.!
Hier !
kann durch fast jedes Trennzeichen ersetzt werden.
(Das listings
mit Unicode nicht umgehen kann ist auch ziemlich ärgerlich, aber das ist ein anderes Problem.)
Idealerweise suche ich nach einer Erweiterung listings
, mit der ich komplexere Lexing-Regeln bereitstellen kann. Abgesehen davon suche ich auch nach tragfähigen Alternativen.
Andere Threads haben die Verwendung von Pylements vorgeschlagen, die eine LaTeX-Ausgabe erzeugen können. Es gibt sogar ein Paket - texments
- um den Übergang zu erleichtern.
Diesem fehlen jedoch schmerzliche Merkmale. Insbesondere interessieren mich listings
Zeilennummern im Stil, Quellcode-Zeilenreferenzen und die Möglichkeit, LaTeX in den Quellcode einzubetten (Optionen texcl
und mathescape
in listings
).
Als Beispiel hier ein Quellcode-Satz, listings
der einige der Dinge zeigt, die ein Ersatz auch bieten sollte:
["Seitwärtszugabe" geändert von Bit Twiddling Hacks]
quelle
Antworten:
Ich habe mir Normans Rat zu Herzen genommen und eine Lösung gehackt, die ( gepatchte ) Pylements zum Hervorheben verwendet und so viele Funktionen wie möglich hinzugefügt hat, ohne zu platzen ;-)
Ich habe auch ein LateX-Paket erstellt, nachdem mein Pylements-Patch in Version 1.2 veröffentlicht wurde .
Präsentiert geprägt
Geprägt ist ein Paketdas Verwendung Pygments erstklassige Syntax in LaTeX Hervorhebung bereitzustellen. Beispielsweise ermöglicht es die folgende Ausgabe.
Hier ist eine minimale Datei, um den obigen Code zu reproduzieren (beachten Sie, dass für das Einfügen von Unicode-Zeichen möglicherweise XeTeX erforderlich ist)!
Dies kann mit dem folgenden Befehl gesetzt werden:
(Aber geprägt prägt funktioniert auch mit
latex
undpdflatex
…)minted.sty
funktioniert ähnlich,texments.sty
erlaubt aber zusätzliche Funktionen.Wie man es bekommt
geprägt ist auf CTAN gelistet ( Paketinfo )
Dokumentation ist natürlich enthalten.
geprägt wird jetzt von Geoffrey Poore gepflegt. Die Entwicklungsversion, einschließlich der neuesten
.sty
Datei , ist unter github.com/gpoore/minted verfügbar und kann von dort aus geklont werden.Nochmals vielen Dank an Norman, der mich motiviert hat, dieses Paket zu produzieren.
quelle
easy_install
), wird der Prozess nie sehr reibungslos verlaufen.TeX ist (bekanntlich) Turing-vollständig, aber ich bin mir ziemlich sicher, dass Sie diese Erweiterung selbst schreiben müssen. Die Dokumentation macht deutlich, dass der ursprüngliche Autor von
listings
Orphaned es im Jahr 2004 verwaist hat und dass es seit 2006 nicht mehr aktualisiert wurde. Das Paket wurde nicht entwickelt, um die Formatierung von numerischen Literalen zu überschreiben, aber Sie können es möglicherweise ändern, indem Sie das ändern Definition von\lst@ProcessDigit
. Wenn dies nicht funktioniert, müssen Sie im Detail verstehen, wie die Optionen "Bezeichnerstil" funktionieren, und Sie müssen diese Maschinerie für Ihre numerischen Literale duplizieren.Ich verstehe nicht ganz, warum Sie es so ablehnen, ein externes Tool in Ihre Toolchain aufzunehmen, aber weil Sie es sind, müssen Sie zusätzliche Arbeit leisten. Nach einem Blick auf den Quellcode erwarte ich, dass Änderungen
listings
möglich sein sollten, aber ich persönlich würde mich dafür entscheiden, stattdessen mein LaTeX vorzuverarbeiten.quelle
\label
s im Code entkommen kann.listings
, habe ich mir bereits die Quelle angesehen - und leider verstehe ich es überhaupt nicht. Meine TeX-Fähigkeiten sind bei weitem nicht so hoch. Bisher habe ich sowieso nur die LaTeX-Teilmenge von TeX verwendet.minted
des LNCS-Veröffentlichungsprozesses von Springer erfolgreich zu schleichen .Dies ist ein Paket, das Quellcode mit Syntaxhervorhebung in TeX und LaTeX konvertiert. Es ist einfach, benutzerdefinierte Programmiersprachendefinitionen hinzuzufügen.
Highlight unterstützt 100 Programmiersprachen und enthält 50 Farbthemen. Es bietet Code-Neuformatierung und Einrückung.
Ich habe es nicht benutzt, um zu wissen, wie gut es funktioniert, aber jemand anderes, den ich kenne, sagte, dass es ziemlich gut funktioniert hat. Wenn ich die Gelegenheit dazu bekomme, werde ich es selbst ausprobieren und sehen.
quelle
highlight
teilt jedoch alle Probleme von Pylements. Insbesondere handelt es sich trotz der Beschreibung nicht um ein LaTeX-Paket . Es ist einfach ein eigenständiges Programm. Das Problem ist, genau wie bei Pylements, wie man es in LaTeX sinnvoll einsetzt und all die schönen Dinge bereitstellt, die eslistings
gibt.