當外部程式使用參考書目文件時,如何使用 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文件不在儲存庫中,我該如何實現這一目標?
符號連結不是一個選項因為 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 調用)將圍脖複製到本地資料夾中解決了這個問題。這樣你的倉庫中也有正確的版本。我在 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

相關內容