![cover](https://img-blog.csdnimg.cn/direct/698de986515e4792b67cf005a941db33.png)
Zotero+Word学位论文中添加参考文献
本文介绍了使用Zotero在Word中插入文献时,如何自定义符合GB/T 7714-2015的参考文献格式。
引言
Zotero 是一款文献管理器。它可以用来存储、管理和引用文献。最近由于毕设需要,我采用了Zotero帮助在Word中插入文献。因此,本文的内容仅涉及:
目录
1. Zotero的下载与安装
下载链接:Zotero | Downloads
点击编辑-首选项-高级-语言,然后选择简体中文。
2. Zotero的界面介绍
打开Zotero后,界面从左至右被分为三个区域,分别是文献的分类和子分类(可以理解为目录)、选中类别下的文献列表、选中文献的具体信息。
如下图所示,我在我的文库下创建了一个类别“基于纹理细节的blabla”,用于存放毕设中要用到的所有文献。为了方便在索引的时候使用,我细分了几个子类,比如第三章的对比方法、第四章的对比方法、基于半监督学习的方法、数据集、指标...等。实际上还能进一步分类,看个人使用需求。
选中某一类方法,可以在中间的区域看到该类别下的文献列表,包括标题和作者。
选中某一篇文献,可以在最优的区域中看到相应的详细信息,包括文献类型、标题、作者的姓名、摘要、卷次、期号、页码、日期、语言、网址、DOI等。
3. 文献分类创建
如图所示,在相应的目录下点击右键-新建分类即可。这个操作有点像新建文件夹。
4. 文献导入功能
4.1 插件安装
当我们在浏览器上检索文献时,需要Zotero Connector插件来自动识别我们正在浏览的文献,并自动保存。
插件的安装链接:Zotero | Downloads
如果用的不是chrome,可以点击Zotero Connectors for other browsers
4.2 文献导入
安装完插件后,在浏览网页时, Zotero Connector 会自动感应到文献,我们只需点击右上角的图标, Zotero Connector 就可以将文献保存到所选择的文库中。
这里只举一个例子,现有一篇论文:《An Accurate Multimodal 3-D Vessel Segmentation Method Based on Brightness Variations on OCT Layers and Curvelet Domain Fundus Image Analysis》,我们在论文页(也可以是谷歌学术的搜索结果页)点击右上角的插件。
然后就会弹出这个框,可以选择我们指定的分类下,文献就会被存放到相应的路径。
到Zotero中查看,可以看到文献已经成功导入。
有的时候插件可能无法识别出文献的信息,导入后信息不完整或不准确,我们可以通过另一种方式导入。首先,我们复制文献的BibTex或DOI或arXiv ID或ISBN,然后在Zotero中手动导入文献信息。
- BibTex
最终也能导入这篇文献。
- DOI
回车后Zotero会自动开始检索并导入DOI对应的文献。
- arXiv ID
导入方法和DOI是一样的,只是复制的信息是arXiv ID。
- ISBN
导入方法和DOI是一样的,只是复制的信息是ISBN。
最右一栏的信息都是可以修改的,要是自动导入后还是有哪里不满意可以手动修改或添加。
5. 与Word协同引用文献
5.1 Word中的Zotero插件界面及功能介绍
安装了Zotero后,打开Word时会自动出现以下界面。
其中,我们常用的就是Add/Edit Citation、Add/Edit Bibliography、Document Preferences和Refresh。
- Add/Edit Citation
在正文中添加/编辑参考文献的索引,效果图如下。
- Add/Edit Bibliography
添加/编辑参考文献列表,效果图如下。
- Document Preferences
点击以后会弹出以下对话框
可以看到,我们可以在这里面挑选参考文献的显示样式。所谓样式,就是我们希望参考文献的索引及列表以某种形式呈现出来。上面的例子我们选择的是GB/T 7714-2015(note,中文),如果我们将样式改为GB/T 7714-2015(author-date,中文),则参考文献的呈现形式如下图。
- Refresh
每当我们在Zotero中更新了某个文献的相关信息后(或是对Word中的样式做出了改变),点击Refresh可以会自动刷新参考文献,显示最新的信息。
5.2 自定义参考文献的格式
可以看出,目前的参考文献格式与学位论文中的要求有所不同,无论是索引处还是参考文献列表处。因此,我们需要按照学位论文的要求,自定义参考文献的格式,也就是自定义一个可用的模板,就无需手动调整每一篇参考文献的格式了。
5.2.1 寻找可用的模板作为修改基础
Zotero本身提供GB/T 7714-2015的模板,我们可以首先获取该模板,看看这个模板是否直接可用。
在搜索框中输入GB/T,就会自动弹出相关的模板。由于我们刚刚试过了note和author-date都不符合要求,我们再下载numeric的模板看看。
点击后,我们发现numeric也成为了可选的样式,选择后点击ok。
然后我们就看到参考文献的格式变成了下图的样子,基本符合学位论文的要求,但仍有需要修改的地方。
5.2.2 明确修改需求
接下来我们要明确需要有哪些地方是需要修改的,为此,我们需要多添加一些不同的参考文献看看。
目前来看有这几个问题:
- 作者的姓名完全大写了,实际上应为首字母大写。
- 英文文献中,如果作者人数较多会显示中文“等”,实际上应显示为“et al.”。
- 期刊论文的文献类型显示了[J/OL],实际上应显示[J],类似的还有会议论文。
- arXiv的预印本文献类型显示未[M],实际上应显示为[DB/OL]。
- 会议论文不需要显示DOI、链接和引用日期。
明确问题后,我们就可以直接在当前模板的基础上,修正格式。由于我引用的都是英文文献(仅包含期刊文章、会议论文、arxXiv的预印本以及标识为[EB/OL]的数据集),所以中文文献中存在的格式问题没有修正。不介意的朋友可以直接拉到最后,用我修改后的模板即可。
5.2.3 csl文件结构
为了修改模板,我们首先导出模板对应的文件。
点击Document Preferences-管理样式,选中numeric模板后点击样式编辑器
紧接着,我们来到以下界面。可以看出,模板本质是xml,在下方还能实时地看到该样式对应的效果,不过我们现在用不上这个功能。
点击另存为,保存该模板到一个待会还能找得到的路径,自定义一个文件名。
然后我们来到刚刚保存的路径,打开文件。我个人喜欢用notepad++看,感觉比较清楚。
打开后可以看到,这个文件非常地长,里面有一些中文注释。我这里直接分析一下这个xml的结构。
拉到最底,我们看到两行很显眼的中文注释:正文中引用的文献标注格式、参考文献表格式,这两部分分别对应着正文中的标注、正文后的参考文献列表的呈现形式。
其中,正文中的数字标注的格式比较简单,格式的名字叫citation-layout,内容包含一个变量citation-number(其实就是标注对应的数字)。
在文档的末尾有一段代码定义了一种布局,大概的意思就是citation-number显示时不仅显示变量值本身(比如1、2、3...),而且会带一个前缀(prefix)“[”和一个后缀(suffix)“]”。换句话说,每次显示标注,也就是参考文献的索引时,一定是[1]、[2]这样的形式。
<layout>
<text variable="citation-number" prefix="[" suffix="]"/>
</layout>
参考文献列表的格式定义比较复杂,格式的名字叫entry-layout。
这段代码去掉实际的内容,其实下面这样的形式。通过这个标签,说明这个layout具体是什么格式要分类讨论。
<macro name="entry-layout">
<choose>
<if type="article-journal article-magazine article-newspaper" match="any"> <!-- 如果文献类型是 期刊文章、杂志文章、报纸文章 中 的 任意一种(match=any) -->
</if>
<else-if type="periodical"> <!-- 如果文献类型是 periodical -->
</else-if>
<else-if type="patent"> <!-- 如果文献类型是 专利 -->
</else-if>
<else-if type="paper-conference" variable="container-title" match="any"> <!-- 如果 文献类型是会议论文 或 变量container-title(比如会议论文集名称、期刊名称)存在-->
</else-if>
<else> <!-- 如果不是以上任何一种情况 -->
</else>
</choose>
</macro>
再加上被码掉的内容,我们可以理解,不同类型的文献使用不同的layout。比如期刊文章(article-journal)对应的是article-in-periodical-layout;专利对应的是patent-layout...
那么这些layout又是什么组成的呢?我们在文档中直接搜索(Ctrl+F)相应的layout名称,可以查看到相关的定义。
可以看到,article-in-periodical-layout由author(作者)、title(标题)、periodical-publishing(出版信息)、url-doi(链接和DOI)几个部分组成。
值得注意的是,这个layout使用了标签,其含义为其中的各个text模块被“.”隔开,且最后一个text模块以“.”收尾。举个例子,就是下面这种形式。
作者.标题.出版信息.
继续搜索这些模块的相关定义。以author为例,这里定义了姓是所有字母大写、名的格式没有定义,应该是用了默认的格式。
再看看periodical-publishing的相关定义,出现了choose标签。可以看出,这个模块会根据文献的类型是否属于article-newspaper决定是显示issued-date还是issued-year。
总结:由于整个csl文件比较长,我们只需修改其中很小的几个点,所以无需真的看完每一行的内容,大概了解一下这些格式是怎么定义的即可。
梳理下来可以知道,模板根据文献类型(type)定义并采用了不同的layout,每种layout又由不同的模块组成(比如author、title),每个模块会根据文献类型(type)的不同采用不同的显示格式(比如大小写、隔断符、结尾符、加括号[]等)和显示内容(Zotero中记录的每篇文献对应的信息,比如title、URL、DOI、author等)。
5.2.4 csl文件修改
知道整个csl文件的逻辑以后,我们就可以对着需求快速地找到要修改的地方了。
-
作者的姓名完全大写了,实际上应为首字母大写。
我们找到author对应的macro,然后把文字的显示形式改为首字母大写。
可以看到,作者的姓名已经变为首字母大写了。
-
英文文献中,如果作者人数较多会显示中文“等”,实际上应显示为“et al.”。
我们按照中文注释的指示,取消掉下行的注释以支持英语。
效果如下图,部分文献被改过来了,但是第一篇文献依然会显示“等”。
这是因为第一篇文献在Zotero中没有被设置语言,改成“en”即可。
如果嫌手动改很多篇文献比较麻烦的话,可以参考[Zotero]批量修改条目(文献)语言 - 知乎给出的方法用脚本批量修改。
文献[1]也修改成功。
-
期刊论文的文献类型显示了[J/OL],实际上应显示[J],类似的还有会议论文。
搜索“type-code”,定位到文献类型标识,可以看到以下代码。
<macro name="type-code">
<group delimiter="/">
<choose>
<if type="article">
<choose>
<if variable="archive">
<text value="A"/>
</if>
<else>
<text value="M"/>
</else>
</choose>
</if>
<else-if type="article-journal article-magazine periodical" match="any">
<text value="J"/>
</else-if>
<else-if type="article-newspaper">
<text value="N"/>
</else-if>
<else-if type="bill collection legal_case legislation regulation" match="any">
<text value="A"/>
</else-if>
<else-if type="book chapter" match="any">
<text value="M"/>
</else-if>
<else-if type="dataset">
<text value="DS"/>
</else-if>
<else-if type="map">
<text value="CM"/>
</else-if>
<else-if type="paper-conference">
<text value="C"/>
</else-if>
<else-if type="patent">
<text value="P"/>
</else-if>
<else-if type="post post-weblog webpage" match="any">
<text value="EB"/>
</else-if>
<else-if type="report">
<text value="R"/>
</else-if>
<else-if type="software">
<text value="CP"/>
</else-if>
<else-if type="standard">
<text value="S"/>
</else-if>
<else-if type="thesis">
<text value="D"/>
</else-if>
<else>
<text value="Z"/>
</else>
</choose>
<choose>
<if variable="URL DOI" match="any">
<text value="OL"/>
</if>
</choose>
</group>
</macro>
关键在于最后一小块,这段的意思是只要文献含有URL或DOI,就会在文献类型标识中加一个OL。
按照需求,我们将这段逻辑改为:只有文献类型既不是期刊文章又不是会议论文时(match="none"),在标识中加一个OL。如果这个逻辑在你的论文中不适用,你也可以按照自己的逻辑用等标签进行修改。
<choose>
<!-- <if variable="URL DOI" match="any"> -->
<if type="article-journal paper-conference" match="none">
<text value="OL"/>
</if>
</choose>
效果如下,期刊文章和会议论文中的OL被去除。
-
arXiv的预印本文献类型显示未[M],实际上应显示为[DB/OL]。
预印本的type在这个判断逻辑下会落在红色箭头的位置,把原来的M改为DB即可。
效果如下,预印本的文献类型标识正确显示未[DB/OL]。
-
会议论文不需要显示DOI、链接和引用日期。
首先定位到相关的macro
发现该模块是在任何情况下都显示URL和DOI的,因此我们只需增加一个判断逻辑,令DOI不显示,令URL只在EB和DB的类型下显示。
<!-- 获取和访问路径以及 DOI -->
<macro name="url-doi">
<choose>
<if type="post post-weblog webpage" match="any">
<group delimiter=". ">
<text variable="URL"/>
<!-- <text variable="DOI" prefix="DOI:"/> -->
</group>
</if>
<else-if type="article">
<choose>
<if variable="archive" match="none">
<group delimiter=". ">
<text variable="URL"/>
<!-- <text variable="DOI" prefix="DOI:"/> -->
</group>
</if>
</choose>
</else-if>
</choose>
</macro>
效果如下图,期刊文章、会议论文不再显示url和DOI,预印本和数据集依然显示url。
可以看到,第二篇文献虽然是会议论文,但是显示了引用日期,定位到相关的macro(先找到paper-conference对应的layout,查看由哪些模块组成,发现有个叫publishing的模块)。最后一行显示,会有个引用日期相关的模块。
我们将逻辑修改为“只有不是会议论文时才显示引用日期”即可(不用ban掉期刊文章的原因是期刊文章本来就不包含publishing这个模块)。
<choose>
<if type="paper-conference" match="none">
<text macro="accessed-date"/>
</if>
</choose>
效果如下图。
-
会议论文需要显示卷号(考虑到小部分的会议论文会有卷号,我们加上这条修改)。
<group delimiter=", "> <!-- 用逗号隔开卷号和年 -->
<text macro="issued-year"/>
<text variable="volume"/> <!-- 对会议增加了卷号 -->
</group>
5.2.5 csl文件应用
最后拉到最顶,重命名这个模板的title,然后保存。
接下来我们只需在Word中选择该模板,然后Refresh。
会弹窗,没关系,选ok就可以。
样式添加成功,然后选择我们刚刚导入的Mystyle模板,点ok。
没变化就Refresh一下。
最终参考文献的格式调整完成。
最终的csl文件
点击链接下载即可:https://github.com/cxxxin/Zotero-gbt-7014-2015-csl.git
由于研究生的学位论文用的是GB7714-87,我在上面的链接中增加了修改后的GB7714-87的模板。
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)