RefTeX не находит файл библиографии

RefTeX не находит файл библиографии

Я использую последнюю версию Aquamacs на MacOS (и мне интересно, почему все эти вопросы, связанные с emacs, публикуются на tex.stackexchange.com, а не на emacs.stackexchange.com).

Надеюсь, я правильно настроил свой Emacs. По крайней мере, вот соответствующие определения в .emacs:

(setq reftex-extra-bindings t)
(require 'reftex)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(require 'bibtex)
(bibtex-set-dialect 'biblatex)
(setq LaTeX-biblatex-use-Biber t)
(setq TeX-command-BibTeX "Biber")
(setq reftex-bibliography-commands
      '("bibliography" "nobibliography" "addbibresource")) 
(setq reftex-bibpath-environment-variables
      '(".:~/lib/texmf/bibtex/bib//:/usr/local/texlive/texmf-local/bibtex/bib//:/usr/local/texlive/2018/texmf-dist/bibtex/bib//"))
; (reftex-use-external-file-finders t)
(setq reftex-external-file-finders
      '(("tex" . "kpsewhich -format=.tex %f")
    ("bib" . "kpsewhich -format=.bib %f")))

Emacs запускается без нареканий.

Далее я настроил этот MWE (просто для полноты картины...) как файл test.tex:

\documentclass{scrbook}

\usepackage[T1]{fontenc}
\usepackage[backend=biber,style=numeric]{biblatex}

\addbibresource{computer.bib}

\begin{document}

% Waiting to insert \cite{} here

\end{document}

Я добавил строку \addbibresource{computer.bib}обычным способом: C-cRET addbi TABRET. В этот момент, нажав TAB, Emacs завершает команду \addbibresourceи вставляет эту команду LaTeX в буфер, пока я все еще в минибуфере, меня спрашивают о параметрах. Я пропустил этот вопрос, нажав RETеще раз. Теперь Emacs спрашивает (все еще в минибуфере) файл библиографии для использования. Я набрал comTABи Emacs снова завершил до полного имени файла computer.bib, которое я вставил с помощью RET.

Я подозреваю, что Emacs знал о существовании ~/lib/texmf/bibtex/bib/JB/computer.bibи поэтому смог завершить его имя файла, поскольку я это определил reftex-bibpath-environment-variables(как показано выше).

Emacs также получает указание автоматически сканировать файлы LaTeX. Таким образом, на данный момент автоматически сгенерированный файл auto/test.elпоказывает:

(TeX-add-style-hook
 "test"
 (lambda ()
   (TeX-add-to-alist 'LaTeX-provided-package-options
                     '(("fontenc" "T1") ("biblatex" "backend=biber" "style=numeric")))
   (add-to-list 'LaTeX-verbatim-environments-local "semiverbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "minted")
   (add-to-list 'LaTeX-verbatim-environments-local "Verbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "Verbatim*")
   (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim*")
   (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim*")
   (add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "VerbatimOut")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperref")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperimage")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperbaseurl")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "nolinkurl")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "path")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "url")
   (add-to-list 'LaTeX-verbatim-macros-with-delims-local "path")
   (add-to-list 'LaTeX-verbatim-macros-with-delims-local "Verb")
   (add-to-list 'LaTeX-verbatim-macros-with-delims-local "url")
   (TeX-run-style-hooks
    "latex2e"
    "scrbook"
    "scrbook10"
    "fontenc"
    "biblatex")
   (LaTeX-add-bibliographies
    "computer"))
 :latex)

Мне повезло, что предпоследняя запись показывает правильный файл библиографии "computer". Быстрый тест в терминале/оболочке дает

<funnyprompt>:~$ kpsewhich bib computer.bib
/Users/tmjb/Library/texmf/bibtex/bib/JB/computer.bib
<funnyprompt>:~$ grep texstudio `kpsewhich bib computer.bib`
@Online{texstudio, 
                 url = {http://texstudio.sourceforge.net/manual/current/usermanual_en.html},

Это должно доказать, что файл существует и содержит запись с нужным ключом «texstudio».


EDIT: ~/lib/в моем случае расширяется до /Users/tmjb/Library/.


Далее я перемещаю курсор ниже \begin{document}и начинаю вставлять \cite-команду (снова обычным способом): C-cc(это сокращение для меня, как и C-c[). Пока я нахожусь в минибуфере, RefTeX просит меня вставить регулярное выражение. Я вставляю texstudio, которое, как я знаю, существует в этом файле библиографии. После нажатия RETEmacs жалуется Sorry, no matches found. Курсор покидает минибуфер и все еще ждет в главном буфере, но текст не вставляется, даже уже определенная команда \cite.

-буфер *Message*говорит:

Making completion list...
   (?=Help)

Scanning bibliography database test.bib
Sorry, no matches found

Какого черта Emacs хочет сканировать test.bib? Этот файл нигде не существует. Он также нигде не был определен (включая файл LaTeX и файлы конфигурации emacs)!

Что я упустил в своей конфигурации, так это то, что Emacs, сканирующий файл библиографии, мог завершить его имя.


ОБНОВЛЯТЬ

Как и предложил Араш Эсбати, я заменил его ~на расширенный путь /Users/tmjb, в конце концов я даже перезапустил свой emacs, и это сработало!

Я удалил \addbibliography{...}записи в своем файле и заново ввел файлы библиографии, либо добавив одну большую \bibliography{tuc-thesis,latex-base,typographie,computer}строку (каждый из перечисленных файлов был заполнен в минибуфере), а затем \addbibresource{}снова по четыре. Я набрал, C-cC-nчтобы повторно отсканировать файл LaTeX. Затем я проверил файл auto. Удивительно, но он содержал только три из четырех файлов библиографии. Независимо от того, как я настроил свой файл, только те файлы библиографии, которые не были расположены в локальном каталоге, были перечислены в файле auto.

Я смог тогда вставить \cite{}команду в главный файл. Это пока шаг в правильном направлении :-)

После успешной вставки a \citeв главный файл я также смог вставить \cites в подфайлы.

Что все еще не работает правильно, так это то, что автозаполнение меток не работает для библиографий, которые не находятся в локальном каталоге. Но я думаю, что я могу жить с этим на данный момент!

Связанный контент