emacsをbibtexエントリに合わせてインデントする方法は?


7

bibtex-modeフィールドを揃え、適切にインデントしたい。次の記事のbibtexエントリをEmacsにコピーしました:(記事の ソースはこちら)

ただし、単純な貼り付けでは、Emacsで位置合わせが失われ、インデントがめちゃくちゃになります。

TABキーは、整列に仕事をしないか、エントリをインデント。この問題を解決するには?


1
あなたの質問bibslurpとは関係ありません。パッケージの使用を検討してください。これにより、Emacs内のSAO / NASA天体物理データシステムからBibTeXエントリを取得できます。
ジョルダーノ2017

1
その行動を再現することはできません。-QスイッチでEmacsを起動するとどうなりますか?
エリック

-Qスイッチで開始したときにも同じ動作が発生します
Viesturs '15 / 07/15

回答:


11

カーソルがエントリのどこかにあるときに、コマンドを実行しbibtex-fill-entry(にバインドC-c C-q)、フィールドを整列させます。またbibtex-align-at-equal-sign、変数をnil以外の値に設定して、配置の詳細を変更することもできます。


3

smartparensパッケージをbibtex-modeで使用すると、挿入された場所に恥ずかしい量のスペースが挿入されたときに、同様の問題が発生しました。何らかの理由で不明ですが、bibtex-modeはfill-prefix変数に18個のスペースを含む文字列を設定します。私の場合(setq fill-prefix nil)bibtex-mode-hook修正された問題で。


2

@JonatanLindénが述べたように、fill-prefix18のスペースを含む文字列に設定されます。これは、bibtex-clean-entryfill-prefix等号の後に続くテキストを揃えるために使用しているためです。インデントの問題を解決できるように設定fill-prefix""ます。ただし、エントリのフォーマット時に位置合わせを適切に行うために、bibtex-clean-entry一時的に設定することをお勧めします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)

1

通常、align-regexpコマンド(またはサポートされているalign場合はコマンドbibtex-mode)を使用します。しかし、それは壊れたインデントであなたを助けません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.