Como fazer o emacs alinhar e recuar uma entrada do bibtex?

7

Quero bibtex-modealinhar e recuar corretamente os campos. Copiei uma entrada de bibtex para o seguinte artigo no Emacs: (fonte do artigo aqui)

Mas, com uma pasta simples, o alinhamento é perdido no Emacs e o recuo é confuso:

A TABchave não funciona para alinhar ou recuar a entrada. Como resolver este problema?

Viesturs
fonte
11
Independentemente da sua pergunta, considere usar o bibslurppacote, ele permite recuperar entradas do BibTeX do Sistema de Dados Astrofísicos da SAO / NASA no próprio Emacs.
21717 giordano
11
Não consigo reproduzir esse comportamento. O que acontece se você iniciar o Emacs com o -Qswitch?
Erik
Eu obter o mesmo comportamento quando se inicia com um -Qinterruptor
Viesturs

Respostas:

11

Quando o cursor estiver em algum lugar da entrada, execute o comando bibtex-fill-entry(vinculado a C-c C-q), que alinhará os campos. Você também pode definir uma variável bibtex-align-at-equal-signcomo um valor nulo para alterar os detalhes do alinhamento.

Dan
fonte
3

Eu tive um problema semelhante ao usar o pacote smartparens no modo bibtex, onde quantidades vergonhosas de espaços foram inseridas. Por algum motivo desconhecido, o modo bibtex define a fill-prefixvariável como uma sequência contendo 18 espaços. (setq fill-prefix nil)no bibtex-mode-hookcorrigido o problema no meu caso.

Jonatan Lindén
fonte
2

Conforme mencionado por JonatanLindén, fill-prefixé definido como uma sequência que contém 18 espaços. Isso ocorre porque bibtex-clean-entryé usado fill-prefixpara alinhar o texto contínuo após o sinal de igual. Definir fill-prefixpara ""pode resolver o problema de recuo. Mas, para ter um melhor alinhamento ao formatar a entrada, você pode aconselhar bibtex-clean-entrya configuração temporária 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
fonte
1

Normalmente, você usaria o align-regexpcomando (ou o aligncomando, se bibtex-modesuportado). Mas isso não irá ajudá-lo com o recuo quebrado.

Erik
fonte