多亏了科学写作与报告这门课,让我意识到了参考文献格式的重要性,毕业论文的主要问题就出现在这里。忽而想起能否通过自动化的方法完成格式编排而不是一条一条的手工编写,自然而然地就想到了Zotero,这时候就需要发挥自己的主观能动性了。一番折腾居然还真给办成了,虽然编写的代码奇丑无比,*Who cares?*只要能跑就是好代码。

自定义Zotero参考文献表格式

众所周知参考文献格式的调整是一件头疼的事,我就不信有人还在手工调整,相比EndnoteZotero完备开源的用户社区是我选择它的主要原因,海量的插件也能够实现花里胡哨的功能(反正就是不提高生产力)。修改参考文献格式,Zotero提供了专门的.csl文件,一并给出了该文件编辑的CSL1.0.2规范文档,可供具体配置。

在自定义格式模板前,首先需要确认自己需要模板有无前人做过了,可以查阅网上的各大论坛或者在Zotero内查找,确定没有后才自行配置。

第一步,获取样式模板

进入Zotero的首选项引用一样,点击样式编辑器,如下图:
样式编辑器
随机挑选一位幸运模板,点击保存,然后得到了一个样式模板。
获取样式模板

第二步,修改模板Header

模板的前几行一般是模板作者信息,可以按自己的意愿修改,其中有一行必须修改,即:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<info>
<title>American Chemical Society</title>
<title-short>ACS</title-short>
<id>http://www.zotero.org/styles/american-chemical-society</id>
<link href="http://www.zotero.org/styles/american-chemical-society" rel="self"/>
<link href="https://pubs.acs.org/doi/full/10.1021/acsguide.40303" rel="documentation"/>
<link href="https://pubs.acs.org/doi/book/10.1021/acsguide" rel="documentation"/>
<author>
<name>Julian Onions</name>
<email>julian.onions@gmail.com</email>
</author>
<contributor>
<name>Ivan Bushmarinov</name>
<email>ib@ineos.ac.ru</email>
</contributor>
<contributor>
<name>Sebastian Karcher</name>
</contributor>
<contributor>
<name>Patrick O'Brien</name>
</contributor>
<category citation-format="numeric"/>
<category field="chemistry"/>
<summary>The American Chemical Society style</summary>
<updated>2022-11-13T02:40:31+00:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>

其中的<id>属性是Zotero软件区分不同模板的标识码,一般是存储模板的网站,这里必须将其修改为与原始网络链接不同的,否则Zotero将报错该模板不可用。

第三步,认识元素

常用元素(或者用术语来说叫渲染元素),是用于渲染格式的时间、人名、题名或者地名等具体内容。首先需要认识这些元素的名称,当Zotero在对应的条目数有值时,才可以使用该元素,这些元素在本表处详细列出。对应的Zotero元素在这里:
Zotero元素

第四步,如何设计?

如何将元素按参考文献格式要求组合成需要使用的形式?需要了解csl文件的<group><text>语法。其中,<text>用于格式化输出元素的字段,而<group>用于包含某几个元素字段,使之形成一个整体,可通过引用字段的变量variables或者别名macro,例如:

1
2
3
4
5
6
7
8
9
<macro name="year-volume-issue">
<group>
<group delimiter=",">
<text macro="issued-year"/>
<text variable="volume"/>
</group>
<text variable="issue" prefix="(" suffix=")"/>
</group>
</macro>

其中的volumeissue就是变量,对应的macro就是别名,可在字段格式中加入前缀prefix或者后缀suffix

第五步,设计常用元素

一般而言,会议论文和期刊论文末尾常出现year,vol(issue):page1-page2这种类型的文章标识和出版社地址:出版社,出版年份:page1-page2的出版标识,如下文:

[1] Jaeger D. , Jung R. .Encyclopedia of Computational Neuroscience[M/OL].New York:Springer New York,2015:115-123

[2] 刘石.一种小型太阳模拟器用准直系统多维调整机构[P].中国专利:202010822017.0,2022-10-14

[3] GB/T 36324-2018,信息安全技术 工业控制系统信息安全分级规范[S].北京:中国标准出版社,2019

[4] Nessler B. , Pfeiffer M. , Maass W. .STDP Enables Spiking Neurons to Detect Hidden Causes of Their Inputs[A].Advances in Neural Information Processing Systems[C/OL].Curran Associates, Inc.,2009:1-9

[5] Rossum M. C. W. V. , Bi G. Q. , Turrigiano G. G. .Stable Hebbian Learning from Spike Timing-Dependent Plasticity[J/OL].J. Neurosci.,2000,20(23):8812-8821

[6] 游嘉伟.运载火箭加注自动对接与脱离机器人系统设计与试验研究[D/OL].上海交通大学,2016

[7] 闫劲云.高动态高更新率星敏感器技术研究[D].北京:北京航空航天大学,2017

[8] 四川安控科技股份有限公司.2022年度财务决算报告:2023062[R].四川省:四川安控科技股份有限公司董事会,2023

[9] Haykin S., 申富饶.神经网络与机器学习[M].3版.北京:机械工业出版社,2013:12-213

这些部分通常与参考文献的类型无关,属于是共有的标识符(公因式),可以批量完成批量使用,例如,修改year,vol(issue):page1-page2这种类型的文章标识可按以下代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<macro name="periodical-publishing">
<group>
<group delimiter=":">
<group>
<group delimiter=",">
<text macro="container-title" text-case="title"/>
<choose>
<if type="article-newspaper">
<text macro="issued-date"/>
</if>
<else>
<text macro="issued-year"/>
</else>
</choose>
<text variable="volume"/>
</group>
<text variable="issue" prefix="(" suffix=")"/>
</group>
<text variable="page"/>
</group>
<text macro="accessed-date"/>
</group>
</macro>

然后就可以按自己的想法设计格式模板了。

一些问题

在实际使用中会遇到一些问题,例如:

“等”与et al.的问题

在中文期刊中超过3个作者并列应当加入等,例如:
[1] 王正玺, 张葆, 李贤涛, 等.快速反射镜在像移补偿中的应用[J].中国光学,2020,13(1):95-105
而在英文期刊中超过3个作者并列应当加入et al.,例如:
[1] Wang Z, Zhang B, Li X T, et al. Application of fast steering mirror in image shift compensation[J]. Chinese Optics, 2020, 13(1):95-105
但是,在预览过程中,偶尔遇到在中文期刊中出现et al.的情况,或者在英文期刊的引用中出现“等”,例如:
[1] Wang Z, Zhang B, Li X T, et al. Application of fast steering mirror in image shift compensation[J]. Chinese Optics, 2020, 13(1):95-105
[2] 王正玺, 张葆, 李贤涛, et al.快速反射镜在像移补偿中的应用[J].中国光学,2020,13(1):95-105
这里因为某些文献在字段“语言”一栏中没有指定其语言,Zotero无法作出判断,因此Zotero自动使用全局的语言设置该字段,导致上述问题。解决方法是在Zotero中对文献的语言字段进行设置,显式指定文献的种类是zh或者en,如下图:
显式指定语言字段
然后再预览该文献的参考文献列表,即显示正常的中英文“等”。