引言
最近草拟了几篇论文,终于想要去学学怎么自动插入参考文献了。虽然现在还是感觉用zotero插入参考文献还是差那么点意思,需要先保存文献到本地,然后才能在word里导入相应的参考文献。如果只是使用一次的论文的话,确实麻烦,但科研免不了退稿拒稿,而各家的参考文献格式又不一样。这时候才意识到文献管理工具是多么重要了。
当投的期刊会议比较偏门时,很难找到已经做好的参考文献样式文件,就得自己动手来对CSL文件进行调整了。但网络上很多的教程要么就是粗略的依据经验来教授如何对CSL文件进行手动修改,要么就是使用可视化CSL编辑器来自定义。而后者在我看来真的很不直观,前者则是弄得一头雾水,作为半个程序员还不如稍微学习一下CSL的编写规范自己动手来编辑。于是有此教程。
CSL概述
CSL全称citation stytle Language,顾名思义就是编写参考格式的语言,本身在XML格式上发展而来。本文并不打算对XML格式或者CSL格式本身做过多的介绍,如有需要自行查阅官方文档:1,本文也算是在该文档基础上修改而来,从中受益匪浅。本文着重关注的是如何看懂CSL文件,在了解其层次化结构的基础上进行修改,并且主要是在Zotero提供的范本CSL上进行介绍,不涉及较为偏门的语法。
CSL的一般结构
我们能看到的CSL文件一般布局如下:
<?xml version="1.0" encoding="utf-8"?>
<style>
<info/>
<locale/>
<macro/>
<macro/>
<citation/>
<bibliography/>
</style>
我们可以看到CSL文件除了抬头,整个都是被包裹在<style>和<\style>定义的代码块中,抬头可以无视,旨在说明CSL文件所遵循的XML版本和编码格式,我们只需要对style中的代码进行编辑即可实现风格的修改。而在<style>中,整个代码又大体可以被划分为6个部分,每个部分同样是会被形如<child>,<\child>的域所包裹(其实也就是HTML中的格式,类似C中的花括号,如果域为空的话也可以直接用<child\>一行表示)。同样的,CSL文件最基本的元素就可认为是这样一个域,比较类似于其他编程语言中的类,也有着类似于父类和子类重写,子类继承的概念。一个标准的域为如下格式:
<parent attribute1="..." attribute2="...">
<child1>
<\child1>
<partent>
attribute就对类的属性进行了基本的定义,一般通过它的名字就知道定义了哪方面的内容,可选项的话查阅文档2即可.
这6个部分都对最后输出的风格有一定的影响,首先给出一个范本,以此为基础进行介绍:
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">
<info>
<title>Example Style</title>
<id>http://www.zotero.org/styles/example</id>
<link href="http://www.zotero.org/styles/example" rel="self"/>
<link href="http://www.zotero.org/styles/apa" rel="template"/>
<link href="http://www.example.com/style-guide/" rel="documentation"/>
<author>
<name>John Doe</name>
<email>JohnDoe@example.com</email>
</author>
<contributor>
<name>Jane Doe</name>
</contributor>
<contributor>
<name>Bill Johnson</name>
</contributor>
<category citation-format="author-date"/>
<category field="science"/>
<updated>2014-10-15T18:17:09+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>
<locale xml:lang="en">
<terms>
<term name="no date">without date</term>
</terms>
</locale>
<macro name="author">
<names variable="author">
<name initialize-with="."/>
</names>
</macro>
<macro name="issued-year">
<choose>
<if variable="issued">
<date variable="issued">
<date-part name="year"/>
</date>
</if>
<else>
<text term="no date"/>
</else>
</choose>
</macro>
<citation et-al-min="3" et-al-use-first="1">
<sort>
<key macro="author"/>
<key macro="issued-year"/>
</sort>
<layout prefix="(" suffix=")" delimiter="; ">
<group delimiter=", ">
<text macro="author"/>
<text macro="issued-year"/>
</group>
</layout>
</citation>
<bibliography>
<sort>
<key macro="author"/>
<key macro="issued-year"/>
<key variable="title"/>
</sort>
<layout suffix=".">
<group delimiter=", ">
<group delimiter=". ">
<text macro="author"/>
<text macro="issued-year"/>
<text variable="title"/>
<text variable="container-title"/>
</group>
<group>
<text variable="volume"/>
<text variable="issue" prefix="(" suffix=")"/>
</group>
<text variable="page"/>
</group>
</layout>
</bibliography>
</style>
info
info顾名思义主要是对CSL文件本身做出的解释,介绍了CSL文件的名字、依赖项、作者、类型、更新时间等等,和CSL文件最终的输出效果关系不大,不做具体介绍,同样可见1。一自用的话只需修改其中的titile字段即可。
local
locale同样也比较好理解,类似于本地化的意思。他使得我们可以CSL中的一些默认提供的关键字段进行修改,比如作者名间连缀的“and",我们就可以通过添加一下语句:<term name="and">also</term>
在这里将其修改为" also ":
J. Hirsch, M. Tiede, X. Zhang, J. A. Noah, A. Salama-Manteau, and M. Biriotti
J. Hirsch, M. Tiede,

本文围绕CSL文件展开,CSL是编写参考格式的语言,基于XML发展而来。介绍了CSL文件的一般结构,包括info、local、macro、citation、bibliography等部分。给出了整体修改思路,如分段、划分bibliography、修改macro字段等,还提及了待解决的期刊或会议名缩写问题。
最低0.47元/天 解锁文章
8395





