Làm thế nào để làm cho emacs căn chỉnh và thụt lề một mục bibtex?


7

Tôi muốn bibtex-modecăn chỉnh và các trường thụt lề đúng cách. Tôi đã sao chép một mục bibtex cho bài viết sau vào Emacs: (Nguồn bài viết ở đây)

Nhưng, với một dán đơn giản, căn chỉnh bị mất trong Emacs và vết lõm bị rối tung:

Các TABchính không làm việc để class hoặc thụt mục. Làm thế nào để giải quyết vấn đề này?


1
Không liên quan đến câu hỏi của bạn, hãy xem xét sử dụng bibslurpgói, nó cho phép bạn truy xuất các mục BibTeX từ Hệ thống dữ liệu vật lý thiên văn SAO / NASA trong chính Emacs.
giordano

1
Tôi không thể tái tạo hành vi đó. Điều gì xảy ra nếu bạn bắt đầu Emacs với công -Qtắc?
Erik

Tôi cũng có hành vi tương tự khi bắt đầu với một -Qcông tắc
Viesturs

Câu trả lời:


11

Khi con trỏ ở đâu đó trong mục, hãy chạy lệnh bibtex-fill-entry(bị ràng buộc C-c C-q), nó sẽ căn chỉnh các trường. Bạn cũng có thể muốn đặt biến bibtex-align-at-equal-signthành giá trị không phải để thay đổi chi tiết căn chỉnh.


3

Tôi gặp vấn đề tương tự, khi sử dụng gói smartparens ở chế độ bibtex, nơi có nhiều khoảng trống đáng xấu hổ được chèn vào. Vì một số lý do không rõ, chế độ bibtex đặt fill-prefixbiến thành một chuỗi chứa 18 khoảng trắng. (setq fill-prefix nil)trong bibtex-mode-hookvấn đề cố định trong trường hợp của tôi.


2

Như được đề cập bởi @ JonatanLindén, fill-prefixđược đặt thành một chuỗi chứa 18 khoảng trắng. Điều này là do bibtex-clean-entryđang sử dụng fill-prefixđể căn chỉnh văn bản tiếp tục sau dấu bằng. Thiết lập fill-prefixđể ""có thể giải quyết vấn đề thụt đầu dòng. Nhưng để có sự liên kết tốt hơn khi hình thành mục nhập, bạn có thể tư vấn bibtex-clean-entryđể tạm thời thiết lập 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

Thông thường, bạn sẽ sử dụng align-regexplệnh (hoặc alignlệnh nếu bibtex-modeđược hỗ trợ). Nhưng điều đó sẽ không giúp bạn với vết lõm bị hỏng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.