Настройка завершения RefTeX Tab в emacs - PullRequest
8 голосов
/ 13 марта 2012

Я пытаюсь заставить Tab завершить работу с RefTeX.При наборе Cc [ и выборе типа ссылки у меня появляется подсказка в минибуфере.Когда я знаю начало ключа нагрудника, который я хочу ввести, например, 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 работает, потому что когда я печатаю Cc [ Camp Ret , я получаю список (иногда немного странный) с записью Campbell2006.

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

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

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

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

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

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

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

1 Ответ

4 голосов
/ 26 июля 2012

Документация 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)))))

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

...