RefTeX findet Bibliographiedatei nicht

RefTeX findet Bibliographiedatei nicht

Ich verwende die neuesten Aquamacs auf MacOS (und ich frage mich, warum alle diese Emacs-bezogenen Fragen auf tex.stackexchange.com und nicht auf emacs.stackexchange.com gepostet werden).

Ich hoffe, ich habe meinen Emacs richtig konfiguriert. Zumindest sind dies die entsprechenden Definitionen in .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 startet ohne Beanstandungen.

Als nächstes habe ich dieses MWE (nur der Vollständigkeit halber ...) als Datei eingerichtet 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}

Ich habe die Zeile \addbibresource{computer.bib}auf die übliche Weise hinzugefügt: C-cRET addbi TABRET. An dieser Stelle TABvervollständigt Emacs durch Drücken von den Befehl zu \addbibresourceund fügt diesen LaTeX-Befehl in den Puffer ein, während ich noch im Minipuffer nach Optionen gefragt werde. Diese Frage habe ich übersprungen, indem ich RETerneut gedrückt habe. Jetzt fragt Emacs (noch im Minipuffer) nach der zu verwendenden Bibliographiedatei. Ich habe eingegeben comTABund Emacs hat den Befehl erneut zum vollständigen Dateinamen vervollständigt computer.bib, den ich mit eingefügt habe RET.

Ich vermute, dass Emacs von der Existenz von wusste ~/lib/texmf/bibtex/bib/JB/computer.bibund daher den Dateinamen vervollständigen konnte, weil ich es definiert habe reftex-bibpath-environment-variables(wie oben zu sehen).

Emacs wird außerdem angewiesen, die LaTeX-Dateien automatisch zu scannen. Daher zeigt die automatisch generierte Datei derzeit 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)

Ich habe Glück, dass der vorletzte Eintrag die richtige Bibliographiedatei anzeigt "computer". Ein kurzer Test im Terminal/der Shell ergibt

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

Dies sollte beweisen, dass die Datei existiert und einen Eintrag mit dem gewünschten Schlüssel „texstudio“ enthält.


EDIT: ~/lib/wird in meinem Fall erweitert zu /Users/tmjb/Library/.


Als nächstes bewege ich den Cursor darunter \begin{document}und beginne, den -Befehl einzufügen \cite(wieder auf die übliche Weise): C-cc(das ist für mich eine Abkürzung, dasselbe wie C-c[). Während ich im Minipuffer bin, fordert mich RefTeX auf, den regulären Ausdruck einzufügen. Ich füge ein texstudio, von dem ich zufällig weiß, dass es in der angegebenen Bibliographiedatei vorhanden ist. Nach dem Drücken von RETbeschwert sich Emacs Sorry, no matches found. Der Cursor verlässt den Minipuffer und wartet noch immer im Hauptpuffer, aber es wird kein Text eingefügt, nicht einmal der bereits definierte Befehl \cite.

Der *Message*-buffer sagt:

Making completion list...
   (?=Help)

Scanning bibliography database test.bib
Sorry, no matches found

Warum zum Teufel will Emacs scannen test.bib? Diese Datei existiert nirgendwo. Sie wurde auch nirgendwo definiert (auch nicht in der LaTeX-Datei oder den Emacs-Konfigurationsdateien)!

Was ich in meiner Konfiguration übersehen habe: Beim Scannen der Bibliografiedatei durch Emacs konnte dieser den Dateinamen vervollständigen.


AKTUALISIEREN

Wie von Arash Esbati vorgeschlagen, habe ich es ~durch den erweiterten Pfad ersetzt /Users/tmjb, schließlich habe ich sogar meinen Emacs neu gestartet und dann hat es funktioniert!

Ich löschte die \addbibliography{...}Einträge in meiner Datei und fügte die Bibliographiedateien entweder durch Hinzufügen einer großen \bibliography{tuc-thesis,latex-base,typographie,computer}Zeile (jede der aufgelisteten Dateien wurde im Minipuffer vervollständigt) und anschließend \addbibresource{}erneut durch vier Zeilen hinzu. Ich tippte, C-cC-num die LaTeX-Datei erneut zu scannen. Dann überprüfte ich die Autodatei. Überraschenderweise enthielt sie nur drei der vier Bibliographiedateien. Unabhängig davon, wie ich meine Datei eingerichtet hatte, wurden in der Autodatei nur die Bibliographiedateien aufgelistet, die sich nicht im lokalen Verzeichnis befanden.

Ich konnte dann einen \cite{}Befehl in die Masterdatei einfügen. Das ist schon mal ein Schritt in die richtige Richtung :-)

Nachdem ich erfolgreich ein in die Masterdatei eingefügt hatte \cite, konnte ich auch \cites in die Unterdateien einfügen.

Was noch nicht richtig funktioniert, ist, dass die Autovervollständigung der Labels bei Bibliographien, die nicht im lokalen Verzeichnis liegen, nicht funktioniert. Aber ich denke, damit kann ich vorerst leben!

verwandte Informationen