Настройка завершения табуляции RefTeX в emacs

Я пытаюсь заставить Tab работать с RefTeX. При вводе C-c[ и выборе типа ссылки у меня появляется подсказка в минибуфере. Когда я знаю начало начального ключа, который я хочу ввести, скажем, например, Campbell2006, я хотел бы ввести Camp Tab и получить Campbell2006 [единственное завершение].

Мне удалось настроить его для некоторых документов, но я не совсем понимаю, почему он работает для них, а не для других. Я заметил, что для документов с правильным завершением Tab> в файл name_of_tex_file.el, созданный в подпапке auto, добавляется следующая строка:

(TeX-add-style-hook "name_of_tex_file"
(lambda ()
(LaTeX-add-bibliographies
"absolute_path_to_bib")))

Я думаю, что я получил этот результат, добавив %%% reftex-default-bibliography: absolute_path_to_bib в конец моих файлов, но это довольно неприятно, особенно при редактировании одного и того же файла на нескольких компьютерах.

Обратите внимание, что RefTeX работает, потому что когда я набираю C-c [ Camp Ret, я получаю список (иногда немного странный) с записью Campbell2006.

Я безуспешно пытался установить переменные окружения %BIBINPUTS%. Добавление (setq reftex-bibpath-environment-variables '("c:/path_to_bib_file/")) казалось необходимым для работы метода C-c [ Camp Ret. Он имеет те же дефекты, что и добавление %%% reftex-default-bibliography: в конец файла, и не обеспечивает завершение Tab.

Я пробовал различные комбинации /, //, \\ и \ в качестве разделителей файлов при указании файлов, но я не знаю точно, что мне следует использовать (я использую emacs в среде Windows). Проблема может быть такой простой, но, поскольку есть много параметров, которые нужно попробовать, я не могу определить, в чем проблема.

Каков пошаговый метод обеспечения бесперебойной работы RefTeX с библиографией, включая заполнение Tab?

РЕДАКТИРОВАТЬ: Завершение возможно в соответствии с записью руководства Reftex о команде reftex-citation:

Регулярное выражение использует расширенный синтаксис: &&' is interpreted as and. Thus,aaaa&&bbb' соответствует записям, которые содержат оба aaaa' andbbb'. При вводе регулярного выражения возможно завершение по ключам цитирования know [sic]. `=' - хорошее регулярное выражение для сопоставления всех записей во всех файлах.

однако он не дает точных указаний о том, как заставить его работать.

Kindahero предлагает установить список записей стартового номера и использовать команду completing-read. Это звучит разумно, однако я хотел бы создать этот список автоматически, и это кажется возможным, потому что он работает с некоторыми из моих документов.


person M. Toya    schedule 13.03.2012    source источник
comment
Просто намек. чтобы иметь возможность завершить TAB, вам нужно составить список со всеми вашими записями стартового номера, чтобы использовать completing-read, который действительно по умолчанию привязан к TAB   -  person kindahero    schedule 14.03.2012
comment
В качестве альтернативного решения можно набрать =, затем в буфере выбора поискать то, что нужно.   -  person xuhdev    schedule 27.10.2016


Ответы (1)


Документация reftex-citation немного сбивает с толку. Он обещает завершение известных ключей цитирования, но я считаю, что «известные» относятся к ключам, которые использовались ранее в этом сеансе, а не ко всем ключам в соответствующей библиографии. Вы можете использовать команду LaTeX-add-all-bibitems-from-bibtex, определенную ниже, чтобы загрузить все ключи в вашей библиографии:

(defun get-bibtex-keys (file)
  (with-current-buffer (find-file-noselect file)
    (mapcar 'car (bibtex-parse-keys))))

(defun LaTeX-add-all-bibitems-from-bibtex ()
  (interactive)
  (mapc 'LaTeX-add-bibitems
        (apply 'append
               (mapcar 'get-bibtex-keys (reftex-get-bibfile-list)))))

Приветствуются предложения по подходящим хукам, чтобы это происходило автоматически.

person Michael Hoffman    schedule 26.07.2012