Ich schreibe gerade an einem Dokument, in dem sehr viele Codebeispiele enthalten sind, die ich mit dem Paket minted darstelle. Für jedes Codebeispiel wird beim Kompilieren das externe Programm pygments aufgerufen, soweit ich das sehe temporär irgendeine externe Datei geschrieben ..., was mit wachsendem Dokument die Kompilierzeit merklich in die Höhe treibt. Gibt es eine Möglichkeit das Kompilieren zu beschleunigen, z.B. eine Option die für Codebeispiele pygments nur dann aufruft, wenn sich was geändert hat?

gefragt 10 Aug '14, 18:10

feynman's gravatar image

feynman
1.0k132937
Akzeptiert-Rate: 23%

@feynman Das Paket bietet das nicht. Außerdem gäbe es das grundsätzliche Problem, überhaupt zu erkennen, ob sich etwas geändert hat.

(10 Aug '14, 18:14) gast3

Dann finde ich wohl deshalb auch nichts in der Dokumentation. Sollte ich die Frage dann löschen?

(10 Aug '14, 18:20) feynman

@feynman: Es ist unabhängig davon, ob es eine befriedigende Antwort dafür gibt, eine berechtigte Frage. BTW: Wenn die Listings alle externe Dateien wären, könnte man tatsächlich versuchen, die Ergebnisse des pygments-Laufs nicht zu löschen, sondern zu erhalten und dann das Dateidatum der Ergebnisdatei mit dem der Listings vergleichen. Über Erweiterungen von pdfTeX ist das Änderungsdatum theoretisch verfügbar. Leider bietet das Paket auch nicht die Möglichkeit, externe Listing zu laden, sondern erwartet die Listings immer im Quelltext des Dokuments. Das macht alles etwas kompliziert …

(10 Aug '14, 18:42) gast3

Könnte man eventuell auch an die Stellen der listings Dummies setzen, die den Platz reservieren, sodass man in einem Entwurfsmodus ohne minted kompilieren kann und dann für die finale Version erst minted verwendet?

(10 Aug '14, 18:51) feynman

@feynman: Ich wüsste nicht, was man dabei gewinnen würde, denn um den Platz zu reservieren, müsste man wissen wie groß die formatierten Listings sind. Dazu wiederum müsste man pygments laufen lassen, um dann das Ergebnis auszumessen …

(10 Aug '14, 18:54) gast3

Als Alternative zu minted habe ich gerade noch das Paket pythontex entdeckt. Dessen Benutzung ist aber keine wirkliche Antwort auf die Frage.

(10 Aug '14, 20:52) feynman

@feynman: Ich weiß ja nicht, was Du konkret machst, aber vielleicht wäre listings ja für Dich auch ausreichend. Das benötigt kein externen Programme.

(10 Aug '14, 20:54) gast3

@Ijon Tichy Das Paket kenne ich und habe es auch schon benutzt, allerdings gefällt mir da das Syntaxhighlighting nicht. Ich weiß zwar, dass man das dort auch anpassen kann, aber z. B. bei meinen Python-Codes habe ich es nicht geschafft, dass es Namen von Funktionen zuverlässig erkennt. Das geht vermutlich auch nur, wenn der Code durch ein externes Programm läuft, dass die Syntax und Semantik der Programmiersprache kennt!?

(10 Aug '14, 21:08) feynman

Das Paket pythontex ist sehr jung, erst seit letzter Woche auf CTAN. Die Dokumentation fand ich beim ersten drüberlesen sehr knapp.

(10 Aug '14, 21:58) NobbZ

Also bei mir in TeXLive 2013 ist es dabei. Dokumentation ist doch weit über 100 Seiten groß. Ich teste es gerade. Paar Dinge fehlen mir, z.B. automatischen Zeilenumbruch im Code.

(10 Aug '14, 22:08) feynman

OK, Sorry, mein Fehler, das neue Paket das auf das Pygments-Projekt setzt ist PygmenTeX, dass wurde erst letzten Montag (2014-08-04) auf c.t.tex angekündigt. Und mit gerade mal 18 Seiten ist die Anleitung sehr Knapp und besteht eigentlich mehr aus vielen bunten Beispielen als aus Erklärungen.

Davon abgesehen ist PythonTeX ein allgemeiner Wrapper von LaTeX nach Python. Soweit ich es bisher verstanden habe quasi ein luaLaTeX der mit Python läuft und sich als Paket einbinden lässt. Aber PythonTeX selbst stellt AFAIK keine Highlighting Methode dar.

(10 Aug '14, 22:42) NobbZ

Im Gegenteil, es ist eine der Vorbedingungen die minted an das System stellt. Im übrigen sind beide Pakete vom gleichen Autor.

(10 Aug '14, 22:45) NobbZ
Ergebnis 5 von 12 show 7 more comments

Der aktuelle Development-Snapshot bietet eine draft-Option. Sie kann entweder in den Paketoptionen (\usepackage[draft]{minted}) oder global gesetzt werden. Seit wenigen Stunden ist auch KOMA-style draft-Option möglich. Sowohl \documentclass[draft]{scrbook} als auch \documentclass[draft=true]{scrbook} aktivieren das entsprechende Verhalten in minted.

Damit wird der Quellcode unverändert, aber mit den wichtigen Einstellungen direkt und ohne den externen Python-Aufruf an eine Verbatim Umgebung weitergereicht.

Aufgrund der Tatsache, dass es sich eben um einen Development-Snapshot handelt, empfehle ich, daher minted.sty herunterzuladen und in das Quellverzeichnis des TeX-Dokumentes zu legen und ggf. gemeinsam mit dem Rest der TeX-Dateien weiterzugeben.

Die dazugehörige Anleitung kann von https://github.com/gpoore/minted/raw/master/source/minted.pdf heruntergeladen werden. Die Anleitung scheint allerdings ein wenig hinterherzuhängen, ihr letzter Commit ist 8 Monate alt, die Draft Option wurde erst vor wenigen Wochen auf meine Anfrage hinzugefügt.

Permanenter link

beantwortet 10 Aug '14, 20:31

NobbZ's gravatar image

NobbZ
33731017
Akzeptiert-Rate: 40%

bearbeitet 10 Aug '14, 22:38

Danke für die Antwort. Mit der draft Option könnte ich sehr gut leben. Allerdings erhalte ich mit deinem Vorschlag die Meldung ! LaTeX Error: File `lineno.sty' not found.

(10 Aug '14, 22:50) feynman

(sudo) tlmgr install lineno sollte helfen bzw. das MiKTeX-Äquivalent mit dem Paket „lineno“.

(10 Aug '14, 22:52) NobbZ

tlmgr habe ich unter Archlinux nicht zur Verfügung. Mal schauen, ob ich das irgendwie anders auftreiben kann.

(10 Aug '14, 22:55) feynman

Habs jetzt. draft Option funktioniert so, danke.

(10 Aug '14, 22:57) feynman

Auch unter Arch-Linux funktioniert das deinstallieren der paketierten Version und mit anschliessender händischer Installation von TeX-Live. Wenigstens ist bei Arch das paketierte TL etwas aktueller als bei Debian und Derivaten (bis Ubuntu 12.10 wurde mir da TL2009 installiert) Und gerade wegen dieser Kluft und dem fehlenden tlmgr habe ich mich für händische Installation entschieden. Unter Arch gibt es zB das Paket texlive-dummy, dieses gaukelt dem System vor, dass man TL aus den Quellen installiert habe und gaukelt erfüllte Abhängigkeiten vor, zB gegenüber kile und lyx.

(10 Aug '14, 23:06) NobbZ

Nachdem das Dummy-Paket installiert wurde macht man weiter wie im TL-Handbuch beschrieben: https://tug.org/texlive/doc/texlive-en/texlive-en.html#x1-140003

(10 Aug '14, 23:06) NobbZ

PS: Ausserdem kannst du (fast) alles auf CTAN.org finden und zur Not die Dateien in dein Arbeitsverzeichnis kopieren. Allerdings würde ich alles was es auf CTAN gibt, besser nach $TEXMFLOCAL (kpsewhich --var-value TEXMFLOCAL) kopieren/installieren.

(10 Aug '14, 23:13) NobbZ
Ergebnis 5 von 7 show 2 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×20
×9
×2

gestellte Frage: 10 Aug '14, 18:10

Frage wurde gesehen: 9,544 Mal

zuletzt geändert: 10 Aug '14, 23:13