我为所有课程文献创建了一个courses.bib
数据库文件,并将其与我的一个包放在一起,tlnames.sty
该包定义了一些相关的宏。这两个文件所在的文件夹是~/documents/texlive/texmf/tex/latex/tlnames
。
我正在从内部编译它TeXWorks 使用 LaTeXmk 脚本的修改版本,除了参考书目之外,它运行正常 - 它找不到courses.bib
。查找tlnames.sty
工作正常 - 我可以导入包并从中使用宏。
自从我把它放在courses.bib
那里后,我就运行texhash ~/documents/texlive/texmf
并收到以下输出
$ texhash texmf
texhash: Updating /home/tomas/documents/texlive/texmf/ls-R...
texhash: Done.
为什么这不起作用?我需要做什么才能帮助 BiBTeX 找到我的数据库?
为了问题的完整性:我正在运行 Ubuntu 12.04,带有 TeX Live 2011 和 TeXWorks 版本 0.5 r.952。
答案1
(仍在运行 11.10,但是....)
我不会把我的.bib
文件放在那里。如果您想要一个系统范围的解决方案,请尝试从终端运行此命令:
kpsewhich -var-value BIBINPUTS
对我来说,这给了我很多选择,包括
~/home/<username>/texmf
因此,如果我添加如下文件test.bib
:
~/home/<username>/texmf/bibtex/bib/
BibTeX 和/或 Biber 即使不使用 也能找到此文件texhash
。(这可以在 emacs 和终端内进行;我没有 TeXWorks。)
答案2
存储在texmf
树中的文件必须位于“正确”位置,以便 TeX 找到它们。对于.bib
文件,它们需要位于 内texmf/bibtex/bib
。根据您的描述,~/documents/texlive/texmf
是您系统上的本地树,因此您需要.bib
里面的文件
~/documents/texlive/texmf/bibtex/bib
如果你愿意的话,你可以进一步细分事物,所以也许
~/documents/texlive/texmf/bibtex/bib/tlnames
将是您可以使用的位置。
最近的 TeX Live 版本(包括 TL2011)不需要您访问texhash
本地树,除非它存储在远程磁盘上。因此对于大多数人来说,只需在正确的位置添加文件texmf
就足够了。