RefTeX não encontrará arquivo bibliográfico

RefTeX não encontrará arquivo bibliográfico

Estou usando o Aquamacs mais recente no MacOS (e estou me perguntando por que todas essas perguntas relacionadas ao emacs são publicadas em tex.stackexchange.com e não em emacs.stackexchange.com).

Espero ter configurado meu Emacs corretamente. Pelo menos, estas são as definições relacionadas em .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")))

O Emacs inicia sem reclamar.

A seguir, configurei esse MWE (só para completar...) como arquivo 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}

Adicionei a linha \addbibresource{computer.bib}da maneira usual: C-cRET addbi TABRET. Neste ponto, pressionando TAB, o Emacs completa o comando \addbibresourcee insere este comando LaTeX no buffer, enquanto ainda no Minibuffer, são solicitadas opções. Eu pulei essa pergunta pressionando RETnovamente. Agora o Emacs pede (ainda no minibuffer) o arquivo de bibliografia para usar. Digitei comTABe o Emacs completou novamente com o nome completo do arquivo computer.bib, que inseri por RET.

Suspeito que o Emacs sabia da existência ~/lib/texmf/bibtex/bib/JB/computer.bibe, portanto, conseguiu completar seu nome de arquivo, porque eu defini reftex-bibpath-environment-variables(como visto acima).

O Emacs também é instruído a verificar automaticamente os arquivos LaTeX. Portanto, neste momento o arquivo gerado automaticamente auto/test.elmostra:

(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)

Tenho sorte de que a penúltima entrada mostre o arquivo bibliográfico correto "computer". Um teste rápido no terminal/shell dá

<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},

Isto deve provar que o arquivo existe e contém uma entrada com a chave desejada "texstudio".


EDIT: ~/lib/expande no meu caso para /Users/tmjb/Library/.


Em seguida, movo o cursor para baixo \begin{document}e começo a inserir o \cite-command (novamente da maneira usual): C-cc(este é um atalho para mim, igual a C-c[). Enquanto estou no minibuffer, o RefTeX me pede para inserir a expressão regular. Eu insiro texstudio, que sei que existe naquele arquivo de bibliografia. Depois de pressionar RETo Emacs reclama Sorry, no matches found. O cursor sai do Minibuffer e ainda fica aguardando no buffer principal, mas nenhum texto é inserido, nem mesmo o comando já definido \cite.

O *Message*-buffer diz:

Making completion list...
   (?=Help)

Scanning bibliography database test.bib
Sorry, no matches found

Por que diabos o Emacs quer digitalizar test.bib? Este arquivo não existe em lugar nenhum. Nem foi definido em lugar nenhum (incluindo o arquivo LaTeX nem os arquivos de configuração do emacs)!

O que faltou na minha configuração, para que o Emacs escaneasse o arquivo de bibliografia, ele conseguisse completar seu nome de arquivo.


ATUALIZAR

Como sugerido por Arash Esbati, substituí ~pelo expandido path /Users/tmjb, finalmente até reiniciei meu emacs, que funcionou!

Excluí as \addbibliography{...}entradas do meu arquivo e reinsira os arquivos da bibliografia adicionando uma \bibliography{tuc-thesis,latex-base,typographie,computer}linha grande (cada um dos arquivos listados foi preenchido no minibufer) e depois quatro \addbibresource{}novamente. Digitei C-cC-npara verificar novamente o arquivo LaTeX. Em seguida, verifiquei o arquivo automático. Surpreendentemente, continha apenas três dos quatro arquivos bibliográficos. Independentemente de como eu configurei meu arquivo, apenas os arquivos de bibliografia, que não estavam localizados no diretório local, foram listados no arquivo automático.

Consegui inserir um \cite{}comando no arquivo mestre. Até agora, este é um passo na direção certa :-)

Depois de inserir a com sucesso \citeno arquivo mestre, também consegui inserir \cites nos subarquivos.

O que ainda não está funcionando corretamente é que o preenchimento automático dos rótulos não funciona para bibliografias que não estejam localizadas no diretório local. Mas acho que posso conviver com isso por enquanto!

informação relacionada