Wie können Emacs einen Bibtex-Eintrag ausrichten und einrücken?

7

Ich möchte bibtex-modeFelder ausrichten und richtig einrücken. Ich habe einen Bibtex-Eintrag für den folgenden Artikel in Emacs kopiert: ( Artikelquelle hier)

Mit einer einfachen Einfügung geht die Ausrichtung in Emacs jedoch verloren und die Einrückung wird durcheinander gebracht:

Die TABTaste funktioniert nicht zum Ausrichten oder Einrücken des Eintrags. Wie kann man dieses Problem lösen?

Viesturs
quelle
1
Unabhängig von Ihrer Frage sollten Sie die Verwendung eines bibslurpPakets in Betracht ziehen. Damit können Sie BibTeX-Einträge aus dem SAO / NASA Astrophysics Data System in Emacs selbst abrufen .
Giordano
1
Ich kann dieses Verhalten nicht reproduzieren. Was passiert, wenn Sie Emacs mit dem -QSchalter starten ?
Erik
Ich bekomme das gleiche Verhalten, wenn ich mit einem -QSchalter
beginne

Antworten:

11

Wenn sich der Cursor irgendwo im Eintrag befindet, führen Sie den Befehl bibtex-fill-entry(gebunden an C-c C-q) aus, mit dem die Felder ausgerichtet werden. Möglicherweise möchten Sie die Variable auch bibtex-align-at-equal-signauf einen Wert ungleich Null setzen, um die Details der Ausrichtung zu ändern.

Dan
quelle
3

Ich hatte ein ähnliches Problem, als ich das smartparens-Paket im Bibtex-Modus verwendete, wo beschämende Mengen an Leerzeichen eingefügt wurden. Aus irgendeinem unbekannten Grund setzt der Bibtex-Modus die fill-prefixVariable auf eine Zeichenfolge mit 18 Leerzeichen. (setq fill-prefix nil)in der bibtex-mode-hookbehoben das Problem in meinem Fall.

Jonatan Lindén
quelle
2

Wie von @ JonatanLindén erwähnt, fill-prefixwird eine Zeichenfolge mit 18 Leerzeichen festgelegt. Dies liegt daran bibtex-clean-entry, dass fill-prefixder fortlaufende Text nach dem Gleichheitszeichen ausgerichtet wird. Die Einstellung fill-prefixauf ""kann das Einrückungsproblem lösen. Um jedoch eine bessere Ausrichtung beim Formatieren des Eintrags zu erzielen, können Sie bibtex-clean-entryeine vorübergehende Einstellung empfehlen fill-prefix.

(defun bibtex-mode-setup ()
  (setq-local fill-prefix ""))
(add-hook 'bibtex-mode-hook #'bibtex-mode-setup)

(defun bibtex-reset-fill-prefix (orig-func &rest args)
  (let ((fill-prefix (make-string (1+ bibtex-text-indentation) ? )))
    (apply orig-func args)))
(advice-add 'bibtex-clean-entry :around #'bibtex-reset-fill-prefix)
Stackunderflow
quelle
1

Normalerweise würden Sie den align-regexpBefehl verwenden (oder den alignBefehl, wenn er bibtex-modeunterstützt wird). Aber das hilft dir nicht bei der gebrochenen Einkerbung.

Erik
quelle