Frage

Ich muss Highlight Quellcode in LaTeX. Das Paket listings scheint die beste Wahl für die meisten Anwendungsfälle zu sein, und für mich war es, bis jetzt.

Aber jetzt muss ich noch mehr Flexibilität. Im Allgemeinen, was ich suche ist ein real Lexer. Insbesondere muss ich (für eine eigene Sprachdefinition) zu definieren (und markieren!) Eigene Nummer Stile. listings erlaubt keine Zahlen in Code hervorheben. Ich brauche aber etwas zu produzieren:

Required Ergebnis

listings kann auch nicht mit beliebigen Begrenzungszeichen für Strings bewältigen. Betrachten Sie den folgenden gültigen Ruby-Code:

s = %q!this is a string.!

Hier können ! um fast ersetzt werden jeder Trennzeichen.

(Das listings kann nicht Unicode behandeln ist auch ziemlich ärgerlich, aber das ist ein anderes Thema.)

Im Idealfall, ich suche für eine Verlängerung der listings, die mir komplexere lexing Regeln bieten können. Aber abgesehen, dass ich auch für tragfähige Alternativen zu suchen.

Andere Themen haben vorgeschlagen, mit Pygments die LaTeX-Ausgabe erzeugen kann. Es gibt sogar ein Paket - texments - den Übergang zu erleichtern.

Dies ist jedoch schmerzlich vermisst Funktionen. Insbesondere interessiert mich in listings-Stil Zeilennummerierung, Quellcodezeile Referenzen und die Möglichkeit LaTeX im Quellcode der Einbettung (Optionen texcl und mathescape in listings).

Als Beispiel ist hier ein Quellcode typeset mit listings, die zeigt einige der Dinge, die ein Ersatz sollte auch bieten:

LaTeX Listings Beispiel: Sideways Zusatz [ „Sideways Zusatz“ geändert von Bit Twiddling Hacks]

War es hilfreich?

Lösung

Unter Norman Rat zu Herzen, habe ich gehackt zusammen eine Lösung, die (a gepatchten ) Pygments für die Hervorhebung und schob in so viele Funktionen wie möglich, ohne zu platzen; -)

Ich habe auch ein LaTeX-Paket erstellt, sobald mein Pygments Patch veröffentlicht wurde Version 1.2 ...

Presenting Geprägt

Geprägt ist ein Paket, dass Anwendungen Pygments erstklassige Syntax in LaTeX Hervorhebung zur Verfügung zu stellen. Zum Beispiel ermöglicht es die folgende Ausgabe.

fancy LaTeX Beispiel

Hier ist eine minimal-Datei mit dem obigen Code (beachten Sie, dass Unicode-Zeichen einschließlich könnte XeTeX erfordern) zu reproduzieren!

\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{minted}

\setsansfont{Calibri}
\setmonofont{Consolas}

\begin{document}
\renewcommand{\theFancyVerbLine}{
  \sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}}

\begin{minted}[mathescape,
               linenos,
               numbersep=5pt,
               gobble=2,
               frame=lines,
               framesep=2mm]{csharp}
  string title = "This is a Unicode π in the sky"
  /*
  Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
  of an $n$-sided regular polygon circumscribing a
  circle of diameter $d$.
  */
  const double pi = 3.1415926535
\end{minted}
\end{document}

Dies kann mit dem folgenden Befehl sein typeset:

xelatex -shell-escape test.tex

(aber Geprägt funktioniert auch mit latex und pdflatex ...)

minted.sty funktioniert ähnlich wie texments.sty sondern ermöglicht zusätzliche Funktionen.

Wie es

bekommen

Noch einmal vielen Dank an Norman für mich motivieren, dieses Paket zu erzeugen.

Andere Tipps

ist TeX (bekanntlich) Turing-vollständig, aber ich bin ziemlich sicher, dass du gehst, diese Erweiterung selbst schreiben zu müssen. Die Dokumentation macht deutlich, dass der ursprüngliche Autor von listings es im Jahr 2004 verwaiste, und dass es nicht aktualisiert wurde seit 2006. Das Paket wurde nicht die Formatierung von numerischen Literalen außer Kraft zu setzen entworfen, aber Sie könnten in der Lage sein, es zu ändern, indem die Definition von \lst@ProcessDigit. Wenn das nicht funktioniert, müssen Sie im Detail, wie die „identifier“ Optionen arbeiten, zu verstehen, und Sie werden feststellen, dass Maschinen Duplikat für Ihre Zahlenliterale müssen.

Ich verstehe nicht ganz, warum bist du so widerstrebend ein externes Tool in der Werkzeugkette einzuführen, sondern weil Sie sind, werden Sie zusätzliche Arbeit zu tun haben. Nach einem Blick auf den Quellcode, erwarte ich, dass listings Modifizierung möglich sein sollte, aber ich persönlich würde wählen meine LaTeX statt vorverarbeitet.

Diese ist ein Paket, das Quellcode TeX und LaTeX mit Syntaxhervorhebung umwandelt. Es ist möglich, benutzerdefinierte Definitionen Programmiersprache leicht hinzuzufügen.

Highlight unterstützt 100 Programmiersprachen und umfasst 50 Farbthemen. Es verfügt über Code Neuformatierung und Einrücken.

Ich habe es nicht zu wissen, wie gut es funktioniert, aber jemand anderes Ich weiß es sagte, dass es ziemlich gut funktioniert. Wenn ich eine Chance, ich werde versuchen, es aus mir selbst und sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top