2012-03-13 4 views
8

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

Мне удалось настроить его для некоторых документов, но я не понимаю, почему он работает для них, а не для других. Я заметил, что за документы, которые имеют правильную 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 [CampRet, я получаю список (где-то немного странно) с записью Campbell2006.

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

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

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

EDIT: Завершение возможно в соответствии с ручного ввода Reftex о команде reftex-citation:

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

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

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

+0

Просто подсказка. чтобы иметь возможность завершения «TAB», вам нужно составить список со всеми вашими библями, чтобы использовать «завершение чтения», которое по умолчанию связано с «TAB» – kindahero

+0

. В качестве альтернативного решения вы можете ввести '= ', затем в буфере выбора найдите то, что вам нужно. – xuhdev

ответ

4

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

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

Смежные вопросы