打造舒适的 TeX 参考文献引用环境

以前一直很将就的在 TeX 里面引用参考文献。现在上研究生了,发觉必须好好管理一下参考文献,改进一下引用的方式。于是有了今日的折腾。

简要介绍一下我的环境:

  • 系统: ArchLinux
  • TeX 发行版: texlive
  • 编辑器: VsCode
  • VsCode 插件:LaTeX Workshop
  • 参考文献管理工具: JabRef

用 JabRef 管理参考文献决定了我的数据库文件是 bib 文件,方便的是,这正是 TeX 默认使用的格式。曾经我都是把需要引用的文献单独导出到 TeX 主文件的地方引用。着实麻烦,最近正好注意到有个 BIBINPUTS 的环境变量可以使用。它是一个 bib 文件存放目录,这样在写 \bibliography{Reference} 时就不用加绝对路径了。我为了让它的作用范围够大,选择在 ~/.pam_environment 中设定它的值,即

1
BIBINPUTS DEFAULT=/home/camuse/bib:${BIBINPUTS}

其中的 /home/camuse/bib 文件夹就是我存放 bib 文件的目录。注意,这需要重启后才能生效。重启后可以用 printenv | grep BIBINPUTS 检查其是否生效。如果生效的话应该看到类似

1
BIBINPUTS=/home/camuse/bib:

这样的结果。

在里面存入 Reference.bib 文件用于测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@article{
fallani2007ultracold,
title={Ultracold Atoms},
author={Fallani, L and Lye, J E},
journal={Physical Review Letters},
volume={98},number={13},pages={130404},
year={2007}
}

@article{杨宏林2004关于高等数学课程教学改革的几点思考,
title={关于高等数学课程教学改革的几点思考},
author={杨宏林 and 丁占文 and 田立新},
key={yang2 hong1 lin1 & ding1 zhan4 wen1 & tian2 li4 xin1},
journal={数学教育学报},
volume={13},
number={2},
pages={74--76},
year={2004}
}

在主文件 main.tex

1
2
3
4
5
6
\documentclass[UTF8]{ctexart}
\bibliographystyle{unsrt}
\begin{document}
\cite{fallani2007ultracold},\cite{杨宏林2004关于高等数学课程教学改革的几点思考}
\bibliography{Reference}
\end{document}

使用 latexmk -pdfxe main.tex 编译,可以得到正确的结果。

为了在 VsCode 中得到更好的体验,要设置一个值

1
2
3
"latex-workshop.latex.bibDirs": [
"/home/camuse/bib/"
],

这样用命令 \cite{} 时会更方便,它能分析对应文件夹下面的 bib 文件。更方便的是打开 citation browser ,能获得更好的引用体验。

这样写文章确实舒服,但是又有一个要解决的问题,也就是写好文章之后要投稿的话,不可能把自己整个 bib 文件都放进去,而是应该提取出被引用的 entry 。这时候可以用 JabRef 带的一个从 aux 文件提取出一个新的 bib 文件的功能。在 Tools > New sublibrary based on AUX file 里选择 aux 文件,它能够帮助筛选出引用部分的 entry ,并且形成新的一个 bib 文件。

Welcome to my other publishing channels