我使用 Mendeley 来组织引文。它会.bib
自动将文件导出到我的 Mac 上的文件夹中。
我还有另一个.bib
文件,用于存储未存储在 Mendeley 中的其他引文(主要是网站)。此文件存储在一个文件夹中,其中包含我所有 LaTeX 项目,这些项目位于单独的文件夹中。
文件与 LaTeX 项目分开存储的原因.bib
是多个项目使用相同的引用,这样我只需要维护一个.bib
文件(另一个文件由 Mendeley 维护)。
灵感来自关于 VCS 的问题我使用 git 将当前的 LaTeX 项目添加到 bitbucket.org。这是一个包含我的.tex
文件和图像的目录,不是文件.bib
。
我将这main.tex
两个参考书目列如下:
\bibliography{~/Documents/Dropbox/Mendeley/library,../other_refs}
我现在的目标是使存储库自包含,以便某人可以克隆它并编译 LaTeX 文档。
由于我的.bib
文件不在 repo 中,我该如何实现这一点?
符号链接不是一种选择因为 git 不再遵循符号链接。
答案1
我最终从 切换natbib
到biblatex
+ biber
。后者支持\addbibresources[location=remote]
可以使用文件链接.bib
作为输入的命令。
\bibliography{~/Documents/Dropbox/Mendeley/library,../other_refs}
变成:
\IfFileExists{../thesis_refs.bib}
{
\addbibresource{~/Documents/Dropbox/Mendeley/library.bib}
\addbibresource{../thesis_refs.bib}
}
{
\addbibresource[location=remote,type=file]{https://dl.dropboxusercontent.com/s/library.bib}
\addbibresource[location=remote,type=file]{https://dl.dropboxusercontent.com/s/thesis_refs.bib}
}
\printbibliography
现在检查本地.bib
文件是否存在。如果存在,它就使用这些文件,如果不存在,它就.bib
从 Dropbox 下载这些文件,我已经将这些文件公开了(此处显示的链接不是实际链接)。
答案2
我通过使用 make 文件(由 latexmk 调用)将 bib 复制到本地文件夹解决了这个问题。这样,您的存储库中也会有正确的版本。我使用 Mendely 时遇到的主要问题之一是每次写入文件时条目的顺序都会发生变化。因此,我扩展了 Makefile 以通过它运行bibtool
。我的 Makefile 有点复杂,但对您来说,它可以归结为:
PROJECT.bib:~/Documents/Dropbox/Mendeley/library
cat $< | bibtool -o $@ -r ./bib.rsc
bib.rsc 看起来像
resource {sort_fld.rsc}
sort = on
preserve.keys = on
preserve.key.case = on