RefTeX が参考文献ファイルを見つけられない

RefTeX が参考文献ファイルを見つけられない

私は MacOS で最新の Aquamacs を使用しています (そして、なぜこれらすべての emacs 関連の質問が emacs.stackexchange.com ではなく tex.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)

幸運なことに、最後から2番目のエントリに正しい参考文献ファイルが表示されています"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」を持つエントリが含まれていることが証明されます。


編集:~/lib/私の場合は に拡張されます/Users/tmjb/Library/


次に、カーソルを下に移動して\begin{document}、 -コマンドの挿入を開始します\cite(これも通常の方法で): C-cc(これは私にとってはショートカットで、 と同じですC-c[)。ミニバッファにいる間に、RefTeX は正規表現の挿入を求めます。私は を挿入します。texstudioこれは、たまたまその参考文献ファイルに存在することがわかっています。 を押すと、RETEmacs が というエラーを表示しますSorry, no matches found。カーソルはミニバッファを離れ、メイン バッファで待機していますが、テキストは挿入されず、すでに定義されているコマンド さえも挿入されません\cite

-bufferには*Message*次のように書かれています:

Making completion list...
   (?=Help)

Scanning bibliography database test.bib
Sorry, no matches found

いったいなぜ Emacs は をスキャンするのでしょうかtest.bib? このファイルはどこにも存在しません。どこにも定義されていません (LaTeX ファイルや emacs 構成ファイルを含む)。

私の設定で何を見逃したのでしょうか。Emacs で参考文献ファイルをスキャンすると、ファイル名を補完できました。


アップデート

~Arash Esbati の提案に従って、拡張パスに置き換え/Users/tmjb、最後に emacs を再起動したらうまくいきました。

ファイル内のエントリを削除し\addbibliography{...}、1 行の大きな行を追加して\bibliography{tuc-thesis,latex-base,typographie,computer}(リストされている各ファイルはミニバッファで完了)、その後 4 行追加\addbibresource{}して、参考文献ファイルを再入力しました。LaTeX ファイルを再スキャンするように入力しましたC-cC-n。次に、自動ファイルを確認しました。驚いたことに、4 つの参考文献ファイルのうち 3 つしか含まれていませんでした。ファイルをどのように設定したかに関係なく、ローカル ディレクトリにない参考文献ファイルのみが自動ファイルにリストされていました。

\cite{}その後、マスター ファイルにコマンドを挿入できるようになりました。これは今のところ正しい方向への一歩です :-)

\citeマスター ファイルに を正常に挿入した後、\citeサブ ファイルに を挿入することもできました。

まだ正しく機能していないのは、ラベルの自動補完が、ローカル ディレクトリにない参考文献に対して機能しないことです。しかし、今のところはこれで大丈夫だと思います。

関連情報