zotero中编写CSL文件自定义参考文献格式

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

引言

 最近草拟了几篇论文,终于想要去学学怎么自动插入参考文献了。虽然现在还是感觉用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, 
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值