[TOC]

CSL介绍

前言

CSL是一种基于XML的开放(开源)语言,用来描述引用和参考文献的格式。对CSL更加技术和详细的描述见CSL 1.0.1 规范

CSL 是什么

如果你写过论文的话,你可能在其中引用了别人的论文。参考文献在学术交流中很重要,因为它可以提供引用的来源,并且可以把已经发表的研究联系到一起。但是,手动设置引用格式和参考文献目录非常耗时,而且不同的期刊有自己的引用格式。

参考文献管理软件可以解决上面的问题。像Zotero、Mendeley、Papers等软件不仅能帮助你管理参考文献,而且可以自动地生成引用的参考文献目录。为了设置特定的引用格式,这些软件需要能识别的对引用格式的描述,这种描述就是Citation Style Language(CSL)

引用格式

引用格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是(GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下:

In-text Styles

引用格式可以分为两个主要的类型。第一种就是in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles还可以细分为author-date,author,numericlabel格式。

CSL中,每个单独的pointer称为一个引用。例如,引文“(Doe et al. 2002, Smith 1997)”包含两个引用:一个是Doe et al.在2002年发表的文献,另外一个是Smith1997年发表的文献。

“author-date” 和 “author” 格式

author-date引用格式会显示作者的名字和发表的日期,比如:(Van der Klei et al. 1991; Zwart et al. 1983)author只显示作者名字,例如:(Gidijala et al.)。参考文献条目一般使用字母表顺序对作者进行排序。

应该注意的是,许多引用格式使用了令人疑惑的Harvard术语来指代author-date格式,但是大多数这些格式与哈佛大学并没有关系。而且也并不存在一个官方的Harvard格式。

参考文献条目实例

Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.

van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.

“numeric”格式

numeric格式由数字组成,比如[1,2][3]。参考文献条目一般使用作者首字母排序或者使用第一次在正文中的引用顺序排序。国标就是一种典型的numeric格式。

参考文献条目实例

  1. Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.
  2. Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.
  3. van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

“numeric” 复合格式

复合格式是numeric格式的变体。这种风格在化学领域很流行。CSL中暂时不支持这种格式,这里也不多作介绍。

参考文献条目实例

  1. Gidijala L, et al. (2008) BMC Biotechnol 8: 29.
  2. a) Zwart KB, et al. (1983) Antonie van Leeuwenhoek 49: 369-385, b) van der Klei IJ, et al. (1991) Arch Microbiol 156: 15-23.

标签格式

这种引用格式由keys构成,例GBKv2008][ZwVH1983; vaHV1991]CSL对这种格式支持有限,这里也不多作介绍。

参考文献条目实例

[GBKv2008] Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.

[vaHV1991] van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

[ZwVH1983] Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.

Note Styles

引用格式的第二类为Note格式。引用中的marker可以是数字或者符号,例如[*]或者[†]。每个marker指向脚注或者尾注。CSL不能设置使用哪些数字或者符号用于marker,这些应该用字处理软件(比如 word)设置。与上面的in-text格式不同,尾注或者脚注通常显示的信息更多。

参考文献条目实例

[*] Voyage to St. Kilda’ (3rd edit. 1753), p. 37.

[†] Sir J. E. Tennent, ‘Ceylon,’ vol. ii. 1859, p. 107.

CSL 生态

要明白CSL是怎么运作的,首先要了解CSL的生态。Style指的是 CSL 样式,Item Metadata指的是每篇参考文献的作者,题目等信息,Locale Files是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。

https://docs.citationstyles.org/en/stable/_images/csl-infrastructure.png

独立格式和从属格式

CSL的一切都是围绕style的,但是并不是所有的style都是相似的。主要包括两种格式:独立格式(independent styles)和从属格式(dependent styles)

独立格式有2种功能,首先,需要先定义一种引用格式。具体格式是什么样的,是 author-date格式还是note格式? 引用的顺序是按字母排序还是按日期排序?参考文献条目中是不是包含DOI?使用什么标点符号以及使用大写还是小写?文献发表年限在文献题目前还是后?等等,这些都是引用格式定义的。第二个功能是:CSL必须是能自我解释的,可以称之为格式的元数据。元数据中可以包括该CSL对应的期刊标题,以及该期刊的联接,该CSL的创建者等。

从属格式则仅包括格式的元数据,没有对引用格式的定义。从属格式必须指定它的参考格式(父格式),从属格式的引用将使用它的父格式的引用格式。

当多个格式使用相同的引用格式时,从属格式非常有用。以一个出版社旗下的不同期刊为例,如果每个期刊都使用独立格式,则每个CSL都要完整的对引用格式的描述,即使他们的引用格式都是相同的。这样就导致CSL太庞大,冗余太多。这种情况下,从属格式就比较适合。例如,"Nature""Nature Biotechnology""Nature Chemistry"都使用同样的引用格式。因此,只需要创建一个"Nature" 的独立格式,将"Nature Biotechnology""Nature Chemistry"格式都定义为"Nature"格式的从属格式。这样,如果"Nature"的出版社想改变引用格式,只需要改变"Nature"期刊格式的CSL就可以,不需要改变它的从属格式对应的CSL

Locale 文件

事实上,大多数独立格式并不是完全独立的。

以下面的条目为例:

Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (1999, September 28). Method and system for placing a purchase order via a communications network. Retrieved from https://www.google.com/patents/US5960411

你可以使用一种独立的CSL格式来描述这个条目,在格式种编码就可以实现。例如,在最后的链接前加上"Retrieved from",或者使用"YYYY, Month DD"作为日期的格式。但是这样的一种CSL,只能在美式英语中使用,如果使用德语写作,就必须修改样式中对应的翻译和日期格式。

幸运的是,独立格式可以依据CSL locale files(以下也翻译为 本地化文件 )来实现通用项的翻译,日期格式和语法的转换。例如:我们可以重写CSL格式使用"retrieved""from"项,并使用本地化的日期格式。如果我们将CSL样式(同格式)的使用环境设置为美式英语,该样式将从 US English locale file检索和翻译对应的项,并生成上述引用。如果将英语换为德语,就会使用德语对应的locale file,生成的引用如下:

Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (28. September 1999). Method and system for placing a purchase order via a communications network. Abgerufen von https://www.google.com/patents/US5960411

因此,使用 CSL locale files ,可以编写与语言无关的CSL样式。如上面展示的,这样的格式可以轻易的在不同的语言中转换。但是语言是很复杂的,CSL automatic localization并不能支持所有的语言特色。但是,语言无关的样式仍然是有意义的,如果你要自己修改CSL样式来适应自己选择的语言环境,参考这些语言无关的样式将更容易实现。

Locale file 还有一个好处,那就是,我们只需要为每种语言定义一次通用的翻译,日期格式和语法。这样可以保证样式紧凑,并使locale file更容易维护。由于给定语言的引用格式并不是一直和locale file中定义的转换格式一致,因此,我们也可以自己选择性的重写任何在locale file中定义的项目。下面独立格式解析中的locale元素就是为实现这一功能设置的。

Item Metadata

接下来就是引用中需要的参考文献条目的细节:条目元数据。

例如:一篇期刊文章可能需要作者的名字,发表的年份,文章题目,期刊名称,卷和期,出现的页码范围以及DOI(数字文献唯一标识),所有这些信息都有助于读者识别和查找这篇文章。

参考文献管理软件可以轻松的创建文献的这些细节信息。但是,很多参考文献管理软件都有自己的格式来存储这些元素据,大多数都支持通用的bibliographic exchange formats,比如BixTexRISciteproc-jsCSL 处理器引入了一种基于JSON的格式,用于以citeproc-js可以理解的方式来存储元数据。其他的一些 CSL 处理器后来采用了这种“CSL JSON”格式(也称为“citeproc JSON”)。

译者注:这里讲的似乎有些繁琐。总的来说,是我们需要每篇文章的作者,题目,发表期刊等信息来生成对应的条目。文献管理软件可以很方便的提供这些信息。至于其内部存储的方式,使用的时候并不需要关心,类似Zotero的文献管理软件会自动使用这些信息和CSL生成引用信息。

引用细节

对于给定的引用格式,引文和条目的展示不仅取决于被引用项的元数据,还取决于这些项被引用的上下文。我们将这类特定于上下文的信息称为引用细节。

例如:引用时对条目的排序会影响他们在参考文献中的位置(在下面独立格式的citationbibliography章节中提到)。

CSL 处理器

有了 CSL 样式,locale file,元数据和引用细节,我们现在需要一个软件来解析这些信息,并以正确的格式生成引用和参考文献条目。用来完成这些功能的软件就是 CSL处理器。

大多数的参考文献管理软件使用的是免费开源的CSL处理器,比如:citeproc-js

理解 CSL 格式

到现在为止,我们已经知道什么是CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到CSL文件内部,分析它的XML代码。XML基础.md 文件中简单介绍了XML,看完后可以读懂并编辑简单的XML文件。如果想更多的了解XML,可以在网上查找XML教程。

从属格式解析

下面是一个CSL从属格式文件:

<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" default-locale="en-US">
  <!-- Generated with https://github.com/citation-style-language/utilities/tree/master/generate_dependent_styles/data/asm -->
  <info>
    <title>Applied and Environmental Microbiology</title>
    <id>http://www.zotero.org/styles/applied-and-environmental-microbiology</id>
    <link href="http://www.zotero.org/styles/applied-and-environmental-microbiology" rel="self"/>
    <link href="http://www.zotero.org/styles/american-society-for-microbiology" rel="independent-parent"/>
    <link href="http://aem.asm.org/" rel="documentation"/>
    <category citation-format="numeric"/>
    <category field="biology"/>
    <issn>0099-2240</issn>
    <eissn>1098-5336</eissn>
    <updated>2014-04-30T03:45:36+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>
</style>

XML基础.md文件中的描述:一行给出了xml的声明。根元素为style,其中包含了一个子元素infoinfo元素中又包含了很多元素,其中很多元素都有内容和属性。xmlns、versiondefaults-locale都是元素style的属性,分别指定了??、版本和使用的语言,这里为美国英语。

大多数从属格式都是电子表格自动生成的,下面的注释也给出了指向电子表格的联接。

 <!-- Generated with https://github.com/citation-style-language/utilities/tree/master/generate_dependent_styles/data/asm -->

元素info里包含了大多数style的元数据,比如:

style的题目(也是期刊的题目):

<title>Applied and Environmental Microbiology</title>

样式的ID,是文献管理软件用来区分不同style的标志:

<id>http://www.zotero.org/styles/applied-and-environmental-microbiology</id>

style自己的链接。该链接指向了网上的副本。

<link href="http://www.zotero.org/styles/applied-and-environmental-microbiology" rel="self"/>

从属格式需要指定它的父格式,父格式为独立格式。这里的父格式为 American Society for Microbiology

<link href="http://www.zotero.org/styles/american-society-for-microbiology" rel="independent-parent"/>

为了更好的维护格式,因此需要指定格式的文档链接。这里文档的链接转到了期刊的主页。

<link href="http://aem.asm.org/" rel="documentation"/>

为了便于分类,还可以在category元素中设置它的属性。这里分别设置了引用格式为numeric,领域为biology

<category citation-format="numeric"/>
<category field="biology"/>

当期刊创建格式的时候,可以在issn元素和eissn元素中保存其打印标准国际连续出版物号(ISSN)和其电子版本(ESSIN)

<issn>0099-2240</issn>
<eissn>1098-5336</eissn>

updated元素保存了最后一次更新的时间戳:

<updated>2014-04-30T03:45:36+00:00</updated>

rights元素中保存了该CSL格式的证书:

<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>

独立格式解析

下面是一个独立格式的实例,实例中定义了引用格式,所以要比从属格式要大一些。这里的示例只是一个简化的例子,实际的格式比这个还要大很多。但这个简化的例子仍然是完整有效的。

<?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="." 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"/>
    </layout>
  </bibliography>
</style>

结构

首先看一下根元素style的子元素。

<?xml version="1.0" encoding="utf-8"?>
<style>
  <info/>
  <locale/>
  <macro/>
  <macro/>
  <citation/>
  <bibliography/>
</style>

相比于从属格式只有info一个子元素,独立格式的根元素有除了info·以外,还有locale macro 、citation、bibliography四个子元素。

这些子元素的作用分别是:

  • info 该元素在独立格式中的作用和从属格式中相同,都是用来保存基本的格式元数据。
  • locale 该元素可以用来从locale file中重写 locale data
  • macro 用来存储 CSL 代码,这些代码可能应用在 citation 、bibliography 或者其他的 macro 元素中。
  • citation 定义文中引用的格式。
  • bibliography 定义参考文献目录的格式。

以下从style根元素开始分析。

根元素/style元素

<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">
  ...
</style>

在从属格式中我们已经了解了xmlnsversion属性,class是新的属性,用来告诉CSL processor(CSL处理器)使用的引用格式是什么。

info元素

独立格式的元数据通常比从属格式的元数据更加全面:

<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>

title、style ID、"self" link、categories、time stamp、license 和从属格式作用都是相同的,但有些许差别。首先,独立格式不依赖父格式,通常是提供一个template(模板)链接,表明当前的独立格式是以模板格式链接创建的(这样写的原因是,通常情况下,凭空写一个CSL比较困难,但是借助一个模板改写则容易的多)。这里的模板是APA style。此外,info还倾向于给定一个或者多个document链接,用来指向引文格式的在线描述。

为了致谢CSL格式的创建者,他们的名字和联系方式也可以添加到格式文件中。在当前的例子中,有一个作者和两个贡献者。作者通常完成了创建格式的大部分工作,贡献者一般只提供了一些小的改进。

citation元素和macro元素

接下来分析macroscitation元素。citation元素用来描述引用的格式。

<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>

上面的代码可以生成类似“(A.C. Smith et al., 2002; W. Wallace, J. Snow, 1999)”这样的格式。为了理解这种引用格式在 CSL 中式如何编码的,要先分析citation元素中的layout元素。layout元素中的prefixsuffixdelimiter属性分别定义了前缀(这里为(),后缀(这里为))以及条目分隔符(这里为;)。也就是说整个条目要放在圆括号中,条目之间以;分隔。每个条目的格式在layout元素的内容中定义。其内容中的group元素包括了authorissue-year macros,并且以,分隔。

macro元素是一种辅助元素,在其他元素或者其他macro元素中使用。通过其名字也可以看出,其与其他语言中的__宏__类似,这里暂不翻译。每个macro都含有name属性。

**注:**以下为了方便描述,将对应的macro元素直接以name指代,例:nameauthormacro元素直接称为author元素。

``author元素的name的属性指定了名称,variable属性保存了具体的作者值,initialize-with表明作者值为首字母缩写,每个首字母后面为.`。

issued-year元素以分支语句开始,分支语句以choose元素定义,其中包含ifelse元素。如果参考文献有日期,则保存在issued变量中,如果issued-year元素被引用,日期的年份将被印出,否则就印出no date

layout元素中的group元素的author 用来印出在author元素中存储的值,issued-year则用来印出issued-year元素储存的值。

为什么不直接把macro中的内容放在citation元素中呢?使用macro有什么好处呢?在上面的例子中,macro的使用简化了citation元素的结构。此外,上述的两个macro总共被调用了4次(两次在 citation元素中,两次在bibliography元素中),如果不使用macro,必须多次重复这些代码。因此macro的使用提供了更紧凑的样式。

再看citation元素,其中含有两个属性et-al-minet-al-use-first。这里的值分别为3、1,表示作者大于等于3个的时候,使用印出第一个作者,后面跟et al术语。

citation元素中还包括了sort元素,其中包括了两个key元素,用来表明引用的排列顺序。第一个key元素中引用了author宏,第二个宏引用了issued-year宏,表明,先按作者作者字母排序,然后按文献发表年份排序。

bibliography元素

citation元素定义了引用的格式,bibliography定义了参考文献条目的格式。

<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>
...
<bibliography>
  <sort>
    <key macro="author"/>
    <key macro="issued-year"/>
    <key variable="title"/>
  </sort>
  <layout suffix="." 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"/>
  </layout>
</bibliography>

上述的例子中的bibliography实际上只适用于一种类型:期刊文章。它生成的条目的格式是:

A.C. Smith, D. Williams, T. Johnson. 2002. Story of my life. Journal of Biographies, 12(2), 24—27. W. Wallace, J. Snow. 1999. Winter is coming. Journal of Climate Dynamics, 6(9), 97—102.

我们怎么定义这种格式呢?首先,bibliography元素的结构和citation元素很相似,不同的是,这里的layout元素用来定义参考文献条目的格式。除了给出authorissued-year,参考文献条目还需要给出每个条目的titlecontainer-title(对期刊文章来说,就是期刊的名称)、volumeissuepage。这里layout元素使用属性suffixdelimiter分别指定了group的后缀为.,以及group之间的分隔符为,

citation元素相同,bibliography也包括了一个sort元素,用来对参考文献条目进行排序。这里的三个key分别为authorissued-yeartitle

locale 元素

最后介绍的是loacle元素。正如上面写道的,CSL locale file允许CSL 样式快速转换为不同的语言。但是,有时需要覆盖默认翻译。

<locale xml:lang="en">
  <terms>
    <term name="no date">without date</term>
  </terms>
</locale>

对 US English 来说,"no date"项的内容就是"no date"。但是在我们的例子中,我们想使用"without date"去替换它。为了重写默认的翻译,我们可以使用类似上面的locale元素。对一个没有日期的条目来说,这种重写会导致引用变为像(D. Williams, without date)这样的格式。

localexml:lang属性被设置为en,这告诉CSL 样式当样式被用于英语写作的时候,重写"no date"。如果我们在德语写作的时候使用该CSL,该样式将会依据German locale file 印出德语的翻译(ohne Datum)

更进一步

这里只给出了一个基本的介绍。有关CSL更详细的介绍可以查看 CSL 标准文档或者其他参考文档。