Dies ist eine Folgefrage zuProblem mit dem Listings-Paket bezüglich Zeilenumbrüchen und falscher Ausrichtung. Warum treten Probleme auf, wenn ich Code innerhalb der Umgebung kopiere und einfüge ? Muss ich bei Tabulatoren oder Leerzeichen in Auflistungen vorsichtig sein? Und wenn ja, warum ist das so? Wie genau wirken sich Tabulatoren und Leerzeichen auf den horizontalen Abstand im mit dem Paket lstlisting
gesetzten Quellcode aus ?listings
Antwort1
Es gibt noch weitere unsichtbare Zeichen außer dem Leerzeichen (ASCII-Code 32); eines davon ist dasTabulator, auch bekannt alsTabulatorzeichen(ASCII-Code 9), die in einigen Quelldateien verwendet werden, vor allem aber in Makefiles. Weitere Informationen zu unsichtbaren Zeichen im Allgemeinen finden Sie imWikipedia-Seite zu ASCII-Steuerzeichen.
Das listings
Paket behandelt Leerzeichen und Tabulatoren sehr unterschiedlich, wie im Unterabschnitt 2.5 der listings
Dokumentation erläutert.
Wenn Ihre Quellen Tabulatoren enthalten, erhalten Sie möglicherweise unerwartete Ausgaben. Das Paket geht davon aus, dass Tabulatorstopps bei den Spalten 9, 17, 25, 33 usw. vorhanden sind. Dies ist über vordefiniert
tabsize=8
. Wenn Sie die Acht in die Zahl n ändern, erhalten Sie Tabulatorstopps bei den Spalten n+1,2n+1,3n+1 usw.
Wenn Sie keine Überraschungen erleben möchten und Ihr Code auch mit Leerzeichen und ohne Tabulatoren auskommt, ist es wahrscheinlich eine gute Idee, bei Leerzeichen zu bleiben und ganz auf Tabulatoren zu verzichten.
Ich vermute, Sie verwenden eine LaTeX-IDE wie Texmaker und keinen Texteditor wie Emacs oder Vim. Ihre IDE fügt höchstwahrscheinlich standardmäßig ein Tabulatorzeichen ein, wenn die TabTaste gedrückt wird, aber es sollte eine Möglichkeit geben, sie so zu konfigurieren, dass stattdessen eine feste Anzahl von Leerzeichen (normalerweise 2, 4 oder 8) eingefügt wird. Eine solche Option ist jedoch möglicherweise nicht rückwirkend; mit anderen Worten, Tabulatorzeichen, die bereits in Ihrer Datei vorhanden waren, werden möglicherweise nicht einfach durch Aktivieren dieser Option durch Leerzeichen ersetzt. Möglicherweise müssen Sie Tabulatoren suchen und durch Leerzeichen ersetzen, um sie alle zu entfernen. Dies ist wohl fehleranfällig, aber Sie haben möglicherweise keine andere Option, wenn Sie eine IDE verwenden. Allerdings...
Bearbeiten(nach Barbara Beetons Kommentar): ... Editoren wie Emacs und Vim haben eine eingebaute Funktion, um alle Tabs im aktuellen Puffer effizient durch Leerzeichen zu ersetzen. In Emacs haben Sie untabify
; in Vim haben Sie retab
(sieheDas).
Gute Texteditoren ermöglichen auch die Erstellung unsichtbarer Zeichen (Tabulatoren, Zeilenumbrüche usw.).sichtbar, damit Sie wissen, mit welcher Art von unsichtbarem Zeichen Sie es tatsächlich zu tun haben. Im obigen Bild (Screenshot eines Vim-Puffers) ▸
bezeichnet das Symbol einen Tabulator und das ¬
Symbol einen Zeilenumbruch.
Das sind zwei weitere Gründe, Ihre IDE hinter sich zu lassen und einen Texteditor zu verwenden:)
Aktualisieren: texmaker 4.2 (2014/05/01) ermöglicht fortgeschrittenen Benutzern nunErweitern Sie die Funktionalitäten der IDEindem Sie benutzerdefinierten Javascript-Code von innen ausführen. Dies öffnet die Tür zu einem „retab“-Skript, setzt aber voraus, dass Sie ein Mindestmaß an Javascript-Kenntnissen haben.