Ich arbeite mit großen LaTeX-Tabellen in AucTEX und es wäre hilfreich, sie in abgeschnittenen Zeilen anzuzeigen, wie hier:
Die roten Markierungen sind die "&" Zeichen, die die Spalten der Tabelle trennen. Bei Tabellen mit vielen Spalten ist der Latex-Quellcode für eine Tabellenzeile länger als die emacs
Rahmenbreite und wird daher standardmäßig in mehr als eine Zeile eingeschlossen. Trotzdem align-current
ist der Tabellenquellcode dadurch sehr schwer zu lesen und zu bearbeiten
- Für Tabellen würde ich es vorziehen, wenn die Quellcodezeilen abgeschnitten werden (was mich zwingt, horizontal zu scrollen).
- Für alle anderen
latex
Quellen würde ich es vorziehenword wrap
, sie an die Rahmenbreite anzupassen
Für den echten Text in meinem LaTeX-Dokument würde ich jedoch die normalen word-wrap
Einstellungen bevorzugen .
Frage:
Ist es möglich , die Verwendung word-wrap
als Standard in Emacs
und noch einige Latex - Umgebungen im gleichen Puffer haben wie table
, longtable
und sidewaystable
gezeigt truncate
d zugleich?
Auch für einige andere Umgebungen wie equation
, pycode
oder tikzpicture
Verkürzungs scheint besser geeignet zu sein. Daher ist es möglicherweise eine gute Idee, eine Liste von Umgebungen zu definieren, die nicht verpackt, sondern abgeschnitten werden.
Der Umbruch sollte ein weicher Umbruch sein (dh der Text wird in eine Füllspalte im Puffer umgebrochen, dies wird jedoch nicht in der Datei wiedergegeben), und der Umbruch einer eingerückten Zeile sollte dem Einzug der Zeile folgen.
Die Lösungen sollten auch für Emacs, aber auch für Aquamacs 2.5 funktionieren.
Es gibt einen Blog-Beitrag, der eine (teilweise) Lösung vorschlägt, aber ich habe die Implementierung nicht gefunden: http://endlessparentheses.com/longlines-mode-in-latex.html
quelle
(setq word-wrap t
) und(setq truncate-lines t)
im selben Puffer. Wenn Sieword-wrap
aktiv sein möchten , ist das Beste, was Sie wahrscheinlich erreichen können, eine unsichtbare Überlagerung über dem Text zu platzieren, den Sie abschneiden möchten - machbar, aber nicht trivial -. Der Code hierfür mussvertical-motion
nach jedem Befehl mit Entfernen / verwendet werden Bewegung / Platzierung von Overlays.truncate-lines
nur für bestimmte Teile eines Textes (bestimmte Umgebungen in LaTeX) zu definieren, aber ich sehe, dass dies schwierig zu erreichen sein könnte. Es scheint , ich lernen müssen, werden wie wechselnword wrap
/truncate
schnell. :)toggle-truncate-lines
.longlines-mode
. In diesem Beitrag finden Sie ein Beispiel. Ich werde später eine vollständige Antwort schreiben, wenn ich Zeit habe.Antworten:
Es hängt genau davon ab, was Sie tun möchten.
In den Kommentaren verweist Malabarba auf einen Blog-Beitrag, der möglicherweise den Weg weist. Ich denke jedoch, dass dieser Ansatz auf (programmgesteuerter) Änderung des Puffertextes beruht. Wenn das für Sie funktioniert - großartig!
Wenn Sie den Text unverändert lassen möchten, haben Sie wahrscheinlich kein Glück.
Bei solchen Problemen beginne ich normalerweise mit dem Lesen des Abschnitts des Elisp-Handbuchs in der Eigenschaft "display". Hier werden Eigenschaften beschrieben, die auf Zeichen im Puffer angewendet werden können, um deren Anzeige zu beeinflussen.
Beim Lesen habe ich nichts gesehen, das steuert, ob eine Zeile umbrochen wird oder nicht - nur, wie Einrückungen angezeigt werden und so weiter, wenn ein Umbruch stattfindet.
Daher glaube ich vorerst, dass die Antwort "nein" ist. In letzter Zeit wurde auf emacs-devel über das Hinzufügen von Wrapping-Funktionen zum Redisplay gesprochen. Vielleicht gibt es also Hoffnung für die Zukunft.
quelle
'invisible t
oder einer'display ""
Eigenschaft ändert den Puffertext nicht und diese Überlagerung kann jede Zeile im Puffer visuell abschneiden - dies kann selektiv erfolgen. Mit anderen Worten,word-wrap
bleibt aktiv, während das gezielte Abschneiden mit Überlagerungen erfolgen kann.