问题描述
我的问题其实和Liechi之前这个帖子提及的问题类似,不过文献管理软件不是用Mendeley,而是用Zotero。具体来说,我用RMarkdown写文章,引用文献来自Zotero导出的*.bib文件,但是:
问题1:如果Zotero中有新增文献,而且新增文献要用到文章的话,就需要更新\*.bib文件,这个过程我现在是手动进行,很慢,有没有什么方法可以让Zotero自动在添加新文献的时候自动更新并输出\*.bib文件,并同步到R Markdown的文件夹中?
问题2:目前Zotero输出的\*.bib文件中供R Markdown引用的key是“第一作者标题第一个单词年份”的形式,能否改成“第一作者_年份”的形式呢?
问题3:如果有两条或以上文献用于编码key的信息完全一样,Zotero会在导出的\*.bib文件赋予第二条及之后的文献“-1”、“-2”…之类的后缀,但是在删改文献条目的情况下,就会造成混乱,比如原本后缀为“-2”的文献可能因为原本后缀为“-1”的文献被删除而更新后缀为“-1”,那么原文章中的引用文献就错配了。这个问题略绕,我会在下面用具体例子说明。
操作过程
在RStudio中建立新项目,把Zotero导出的\*.bib文件和网上下载的引用风格\*.csl文件复制到项目文件夹中,然后在RStudio中新建R Markdown文件,内容如下:
---
title: "A book"
author: "Kang"
date: "10/30/2020"
output: html_document
#文献引用来源于Zotero导出的bib文件
bibliography: Ref_for_ecology.bib
#引用风格来自同一文件夹的csl文件
csl: apa-6th-edition-no-ampersand.csl
---
文章正文内容:
Here I quote the word of Tom [the key of the reference, e.g. @tom_urban_2021]...
# 参考文献列表:Reference
问题1如上文#问题描述#部分所述。现在的想法是能否让Zotero在新增文献的时候自动更新输出一个\*.bib文件,输出到哪里都行,再用file.copy(bib文件路径及原文件名, R Markdown文件夹及bib文件名, recursive = TRUE)
同步到R Markdown的文件夹,但是这样每次写文章之前要同步一次其实也挺麻烦,而且不知道能否实现。在Liechi之前那个帖子里tctcab提到说“citr可以直接连接zotero库并且从你的zotero库挑选引用文献更新那个bib”,我已经安装了citr
包,有了插入文献的插件,但是不知道后续连接如何操作,是否有教程?
问题2是关于如何改Zotero输出的\*.bib文件的key,我在Zotero的Preference中没有找到,但是似乎能通过Better BibTeX来实现,似乎是要装个扩展插件到Zotero中。
问题3是关于Zotero中类似名称文献的删改造成的更新\*.bib中条目混乱的问题,以下举例说明。我原本的Zotero中有两篇文献,都是Tom在2021年发表的,这样Zotero输出来的\*.bib文件中,它们的key会有不同后缀:
@book{tom_urban_2021,
title = {Urban ecology},
author = {{Tom}},
year = {2021}
}
@book{tom_urban_2021-1,
title = {Urban biodiversity},
author = {{Tom}},
year = {2021}
}
于是我在R Markdown文件正文中引用这两篇文献:
---
title: "A book"
author: "Kang"
date: "10/30/2020"
output: html_document
#文献引用来源于Zotero导出的bib文件
bibliography: Ref_for_ecology.bib
#引用风格来自同一文件夹的csl文件
csl: apa-6th-edition-no-ampersand.csl
---
文章正文内容:
Here I quote the word of Tom[@tom_urban_2021] ... and Tome also said that[@tom_urban_2021-1] ...
# 参考文献列表:Reference
Knit一下,输出的结果是:
过两天我删除了《Urban ecology》这篇文献,结果输出的\*.bib文件内容变成:
@book{tom_urban_2021,
title = {Urban biodiversity},
author = {{Tom}},
year = {2021}
}
可见更新后的《Urban biodiversity》的key变成了原本《Urban ecology》的key,而R Markdown文件Knit输出的结果则变成了:
可见——当然——原本前面的论据应该来自于《Urban ecology》,现在却变成来自《Urban biodiversity》了。
当然有一个解决思路是:如果问题2能够解决的话,我们可以把文献的key都改成对应的唯一doi号,但是这样在徒手输入插文献的时候就不那么友好了,原本我只要根据记忆打出作者和年份,现在只能用citr
插件来插入文献了。
解决方法
问题1和问题2:安装Better BibTeX插件,这样Zotero的Preference
中就会显示一个可以自定义bib文件key
信息的按钮。安装citr
包,RStudio中的addin
下拉菜单中就会出现Insert citation
。在开着Zotero的情况下,点击Insert citation
,面板上就会有Zotero connection available. Connect and load libraries.
的操作选项,按照所需进行设置后,连接上即可。
题外话
作为一个没有计算机和代码基础的人,为什么要折腾这些东西呢?人学习一项新技术新工具,很多时候是脑子里成本收益博弈的结果,这里成本收益可能包括工具本身功能强大,所以愿意花学习成本下去;也包括群体的影响,比如大家都开始用微信了,而我只用QQ的话沟通成本就太大了。但是其实现在Word用着也没什么问题,跟Zotero结合写文章写报告也觉得顺手,所以前两天一时兴起折腾通宵的时候突然觉得,一些新技术本身就像生命一样,具有某种吸引力,具有不断扩张的潜力——作为“手段”而非“内容”的事物具有这种吸引力让人乍一想很奇怪,但也不是新鲜事吧大概。