XeTeX, Pygments und ein Zeilenumbruch?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hallo zusammen,

weiß jemand, wie man dem LaTeX-Formatter von pygments irgend wie einen Zeilenumbruch bei zu langen Zeilen beibringen kann? Ich habe in der Doku zu fancyvrb (welches wohl von dem Formatter genutzt wird) nichts dazu gefunden. Ich hoffe es gibt eine möglichst einfachen Weg, das zu erreichen.

Im Netz finde ich viel zur Alternative "listings", jedoch scheint das im fancyvrb-Kompatibilitätsmodus gerade das Highlighting nicht zu übernehmen - aber darauf kommt es mir ja gerade an!

Als bisherigen workaround verkleinere ich die Schrift in der Umgebung - aber wirklich glücklich bin ich damit nicht.

Ich hoffe jemand weiß Rat :-)

Ciao,
Hyperion
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

Wieso brichst Du den Quelltext selbst nicht direkt um?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben:Wieso brichst Du den Quelltext selbst nicht direkt um?
Tja, wird wohl nicht anders gehen. Problematisch dabei ist, dass der schon so formatiert ist, dass er in anderen Medien gut zu lesen ist. Bei Python gelten ja auch die 79 Zeichen pro Zeile. Da würde man sich auch wünschen, dass man dabei nicht Scripte für den Druck gesondert anpassen muss...

Ich muss wohl mal an einem Drucker testen, ob das Schriftbild so gut zu lesen ist. Dann wäre alles ok, weil ich auf eben 79 Zeichen pro Zeile beim Entwurf geachtet habe.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

Vergiss es. Du kannst Quelltext nie so formatieren, dass er in allen Medien gut zu lesen ist. Die Grenze von 80 Zeichen ist vor allem für die Arbeit mit Quelltext am PC gedacht. Für Druck und Präsentation gelten andere, mitunter wesentlich engere Grenzen.

Ich weiß nicht, worum es geht, aber im Allgemeinen ist es empfehlenswert, Quelltextbeispiele für den Druck gesondert zu überarbeiten. Es gelten ja in gedruckten Dokumenten auch meist ganz andere Anforderungen. Beispiele müssen nicht in der Regel nicht lauffähig sein (wer tippt schon Quelltext ab), dafür aber umso mehr Fokus auf das Wesentliche legen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben:Es gelten ja in gedruckten Dokumenten auch meist ganz andere Anforderungen. Beispiele müssen nicht in der Regel nicht lauffähig sein (wer tippt schon Quelltext ab), dafür aber umso mehr Fokus auf das Wesentliche legen.
Es handelt sich dabei um kleinere Code-Schnipsel für meine Dipl-Arbeit. In der Tat sind viele Beispiele nicht direkt lauffähig und verkürzt. Insofern muss ich da wohl dann doch umformatieren. Schade, ich dachte ich käme da drum herum; andererseits könnte es so natürlich übersichtlicher werden, als mit einem Zeilenumbruch.

Nuja, für die etwas längeren Beispiele für den Anhang ist's natürlich doof - da hätte ich mir schon erhofft, mir ein wenig manuelle Arbeit sparen zu können.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@Hyperion: Die längeren Beispiele im Anhang (ich nehme an, die sind dann vollständig) kannst Du doch in kleinerer Schrift setzen. Die liest eh niemand zur Gänze durch, sie dienen ja nur als Referenz und sind wohl wahrscheinlich eh zusätzlich in elektronischer Form abzugeben, oder?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben:@Hyperion: Die längeren Beispiele im Anhang (ich nehme an, die sind dann vollständig) kannst Du doch in kleinerer Schrift setzen. Die liest eh niemand zur Gänze durch, sie dienen ja nur als Referenz und sind wohl wahrscheinlich eh zusätzlich in elektronischer Form abzugeben, oder?
Auch wieder wahr 8)

"Wer das liest, bekommt nen Kasten Bier"... jaja :mrgreen:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

Also ich mag ja gedruckt bunt nicht so gerne. Da finde ich das `listings`-Paket in s/w nicht nur ausreichend, sondern auch besser, weil mir da die proportionale Schrift besser gefällt. Und automatischen Umbruch mit Kennzeichnung und Einrückung gibt's auch.

Ich bin bis jetzt immer mit einer kleineren Schrift und wenigen Änderungen im Quelltext ausgekommen. Gedruckt, kommt man auch mit Schriftgrössen aus, die am Bildschirm zu klein und pixelig aussehen, einfach weil die Auflösung am Bildschirm im Vergleich zum Druck viel kleiner ist.
lunar

@BlackJack: Du nutzt proportionale Schriften für Quelltextbeispiele?
BlackJack

@lunar: Jup. Das ist beim `listings`-Paket Standard. Wobei trotzdem auch an Whitespaces innerhalb einer Zeile ausgerichtet wird. Wenn man also zum Beispiel eine Reihe von Zuweisungen im Quelltexteditor mit Monospace-Schriftart und unterschiedlich langen Bezeichnern, mit Leerzeichen die Gleichheitszeichen untereinander ausrichtet, dann sind sie das beim Setzen mit `listings` auch bei proportionaler Schrift!

Beispiel wäre dieses PDF: http://www.inf.fu-berlin.de/inst/ag-se/ ... evelop.pdf

Achte mal auf Seite 31 in dem Listing bei den Zeilen 12--15 auf die Gleicheitszeichen und die ``new``-Schlüsselwörter. Am `n` über dem `=` in der nächsten Zeile bzw. an den beiden ``new``\s, welche direkt übereinander stehen, sieht man ganz gut, dass die Zeilen nicht einfach so unabhängig voneinander in proportionaler Schrift gesetzt sind, sondern dass das `listings`-Paket da noch ein bisschen Magie mit dem Spacing innerhalb der Zeilen betreibt.
lunar

@BlackJack: Nun, ich verwende selbst listings, aber eigentlich ersetze ich immer als erstes die proportionale Schrift durch eine mit festen Breiten. Ich weiß nicht, aber Quelltext ist für mich irgendwo mit einer Schrift mit festen Breiten verbunden ;) Das listings allerdings das Spacing anpasst, wusste ich nicht. Ich muss auch zugeben, dass die Quelltextbeispiele in dieser Arbeit sehr gut aussehen (mal abgesehen von der verwendeten Sprache ;) ).
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ja, das sieht wirklich ganz gut aus. Wobei ich das s/w-Theme von pygments auch ganz ok finde. Naja, ich werder mir mal das listings-Paket angucken und prüfen, ob das auch SparQL unterstützt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten