文献管理:使用Zotero进行Rmarkdown写作的文献自动化

Rmarkdown写作环境下,Zotero + rbbt的方式,基本上实现了比较满意的文献管理和引用流程。Zotero具有免费和相对开放性。Zotero对bibTeX和中文情景比较友好。此外,R包rbbt函数实现了对Zotero的实时联系,引用流程更加自动化。使用者需要正确理解Rmd渲染输出、.bib文件状态和Zotero条目库的关系。

1 zotero环境准备

1.1 安装zotero和扩展插件zotero-better-bibtex。

安装文献管理软件zotero和浏览器插件 。官网

1.2 设定Citekey的形式(默认形式太冗长)。

具体修改方法

  • 设定citekey形式:打开Zotero\(\Rightarrow\) 编辑\(\Rightarrow\) 首选项\(\Rightarrow\) Better Bibtex(插件菜单\(\Rightarrow\) Citation keys。

  • 更新citekey值:Zotero\(\Rightarrow\) 选中文献条目\(\Rightarrow\)鼠标右键 \(\Rightarrow\) Better Bibtex\(\Rightarrow\) refresh Bibtex key。

2 多设备下zotero全文附件的同步

一种常见工作模式是,个人会在多设备下使用zotero。这时,就需要处理多个设备下,zotero全文附件的同步问题。

当然,zotero官方本身是支持这一点的。但是对于免费用户,仅仅300M的网络共享空间是完全不够用的,如果要更大网络共享空间,则需要掏钱购买,费用也是不低(尤其对于学生党而言)。

因此,为避开官方的收费方案,下面简要介绍如何搭建一个免费的、无限容量的、自动化zotero附件同步的工作流(参看)。

  • 准备同步工具:google云盘备份同步工具(国内VPN、google账号)

  • 准备zotero插件: 出了前述的插件外,还需要安装一个神奇插件ZotFile下载地址)。

  • 设定zotero参数:具体细节请参看

以上准备和设定都完成后,实际个人多设备使用工作流程其实很简单:

  • 在A设备上:保持google备份同步工具开启和正常联网,同时如常利用zotero进行文献收集、阅读和笔记记录。

  • 在B设备上:保持google备份同步工具开启和正常联网,zotero则会自动同步全部文献条目和全文附件(pdf)。

3 Rmarkdown与Zotero自动关联

3.1 zotero导出.bib文件

  • 选定需要的Zotero的文献组(group),以Better BibTeX格式(前提是要安装相应插件)导出到工作路径"netlify/content/bib/netlify.bib",注意同时要勾选“keep updated”选项。这样的话就能实现Zotero文献的自动关联。

  • 写作文件.Rmd的yaml区域指明对.bib的关联关系,并设定文献列出样式(csl style)及关联关系(参看“文献管理:CSL风格样式”一文)。
bibliography: "../../bib/netlify.bib"
csl: "../../bib/china-national-standard-gb-t-7714-2015-author-date.csl"
link-citations: yes

3.2 使用rbbt在Rmarkdown写作下调用文献

# remotes::install_github("paleolimbot/rbbt")
#require("rbbt")

R包rbbt的主要作用见github

  • 与Zotero文献库直接关联,方便引用。

  • 与.Rmd文件头yaml区域指定的.bib文件关联,实现“参考文献”列出。

主要过程:

  • 安装rbbt包。
# remotes::install_github("paleolimbot/rbbt")
require("rbbt")
  • 使用插件:Rstudio\(\Rightarrow\) 点击Addins\(\Rightarrow\) Insert Zotero Citation。
<<<<<<< HEAD

3 Rmarkdown写作中引用文献

3.1 快速复制预览文献条目

=======

4 Rmarkdown写作中引用文献

4.1 快速复制预览文献条目

>>>>>>> feature

很多时候,我们更希望直接看到指定预览格式的文献条目细节,或者希望直接快速地将预览格式的文献条目复制粘贴到word、Rmarkdown或txt里去。

下面是实现操作(参看 指导说明):

  • 设置指定预览格式。edit \(\Rightarrow\) preference \(\Rightarrow\) export。

  • 选中文献条目,直接用鼠标拉到你想要放置的地方去。

<<<<<<< HEAD

3.2 引用形式

=======

4.2 引用形式

>>>>>>> feature

具体可以参看的Rmarkdown官方解释

  • 一次同时引用多条文献,用冒号区隔:[@refkey1; @refkey2]
一些国内学者[@liuhuaqin2014; @xiaohuizhong2019]一起发现...。

一些国内学者(刘华芹, 2014; 肖辉忠, 2019)一起发现…。

  • 强制不出现作者名字,用减号:[-@refkey]
有学者[@alimov2018]...发现。他还发现[-@alimov2018]...。

有学者(ALIMOV, 2018)…发现。他还发现(2018)…。

  • 行内引用(注意key和后面文本的空格),直接@:@refkey says that ...
@tobin2020a 认为...。

TOBIN (2020) 认为…。

<<<<<<< HEAD

3.3 文献列表的位置

=======

4.3 文献列表的位置

>>>>>>> feature

默认情况下,文献列表会出现在整个文档的最后。

如果要指定其出现位置,则需要插入一小段html代码<div id="refs"></div>,具体如下(可参看)。

# Introduction

# References {-}

<div id="refs"></div>

# Appendix
  • 其中heading里面的{-}是为了保持不自动给出“索引id”。

  • 如果使用了脚注功能1,脚注列表依旧会显示在文档最后。

<<<<<<< HEAD

3.4 文献列表序号和缩进

待解决!

4 总结及注意事项

4.1 优点

=======

4.4 文献列表序号和缩进

待解决!

5 总结及注意事项

5.1 优点

>>>>>>> feature

Rmarkdown写作环境下,Zotero + rbbt的方式,基本上实现了比较满意的文献管理和引用流程,优点如下:

  • Zotero的免费和相对开放性。免费+插件扩展。对很多网站的文章citation能够快速识别并导入到Zotero库里去,而且还能自动下载关联pdf!

  • Zotero对bibTeX的友好性。因为Rmarkdown对bibTeX的要求,而Zotero的相关操作极为便捷简单。此外,Zotero对中文文献情景也比较友好。

  • R包rbbt函数实现了对Zotero的实时联系,引用流程更加自动化。

<<<<<<< HEAD

4.2 重要提示

=======

5.2 重要提示

>>>>>>> feature
  1. 正确理解Rmd渲染输出、.bib文件状态和Zotero条目库的关系。简单说:a) Rmd的输出最终只会引用.bib文件里的文献条目。b)R引用包(rbbt)与Zotero可以实时联系(通过zotero-better-bibtex扩展插件),但是这并不意味着Rmd渲染输出也是与Zotero实时联系的。c).因此,在写作草稿阶段,可以暂时不用关心.bib,只需要保持与Zotero实时联系即可(完成实时搜索和插入条目)。但是在最后完稿之前,务必需要及时更新调整.bib文件(从Zotero 中导出文献为.bib文件,替换更新原来的.bib旧文件即可)。

  2. Zotero中Citekey的设置是一个关键步骤,我们需要做出合理的权衡。这是因为一方面@nameYear的引用便捷性,要求每条文献的citekey必须要简单易用;但是另一方面,Zotero往往会管理海量的文献条目,从而又要求文献的citekey不能重复——不然就没办法精确引用文献了。不过Zotero考虑并提供了选择,可以用动态key(dynamic key),也可以用锁定key(pined key)。

  3. 因为文献条目中可能包含了abstract等长文本域,为了避免Zotero导出.bib后,R包citr识别报错的问题。最好把Zotero 软件的Better Bibtex(插件菜单)做出如下导出设定。

    • 设定导出规则:打开Zotero\(\Rightarrow\) 编辑\(\Rightarrow\) 首选项\(\Rightarrow\) Better Bibtex(插件菜单)\(\Rightarrow\) Export\(\Rightarrow\) Fields\(\Rightarrow\) Fields to omit frome export\(\Rightarrow\) 输入abstract等(逗号分隔)

参考文献

ALIMOV R, 2018. The Shanghai Cooperation Organisation: Its Role and Place in the Development of Eurasia[J]. Journal of Eurasian Studies, 9(2): 114–124. DOI:10.1016/j.euras.2018.08.001.
TOBIN D, 2020. How to Get Data from Multiple Sources[Z]. https://www.xplenty.com/blog/get-data-from-multiple-sources/(2020–07).
刘华芹, 2014. 深化上海合作组织区域经济合作的构想[J]. 俄罗斯东欧中亚研究, (1): 6–10.
肖辉忠, 2019. 俄罗斯伏尔加河沿岸联邦区农业问题研究[J]. 欧亚经济, (5): 7–14.

附录


  1. 脚注列表与文献列表的位置关系,前者总是在文档最后,并且原生有一道横线。↩︎

Hu Huaping
Hu Huaping
PhD on Agricultural Economic and Management

My research interests include Data Science, Statistics, Agricultural Economics and Management.

Related