当外部程序使用参考书目文件时,如何使用 VCS 来管理它们?

当外部程序使用参考书目文件时,如何使用 VCS 来管理它们?

我使用 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

我最终从 切换natbibbiblatex+ 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

相关内容