不知道怎么自动编辑参考文献?

您所在的位置:网站首页 数据集怎么写参考文献 不知道怎么自动编辑参考文献?

不知道怎么自动编辑参考文献?

2023-03-15 07:16| 来源: 网络整理| 查看: 265

本文根据CSL官方文件讲解CSL基本原理。

网络上已有很多关于CSL文件的编辑和使用教程,但基本上都是只讲使用,不讲原理。

授人以鱼不如授人以渔,本文根据官方文档讲解CSL格式的基本原理。

链接如下:Citation Style Language 1.0.1-dev documentation

第一章 引用类型

我们在写文章要加参考文献的时候,一篇文章的引用分为两个部分,分别是“文内引用”和“参考文献”。

文内引用就是我们正文部分使用的引用,这些引用一般在文末的“参考文献”部分重新排列。

举例来说:

这句话使用了文内引用。(Doe et al. 2002, Smith 1997) 参考文献: Doe L, et al.(2002) This is a example of references. Journal of references 156:12-13.

围绕这两个部分,我们有多种多样的格式,上述的格式称之为“author-date”格式,如果去掉年份,就是“author”格式。

以下是另一种常见的格式“numeric”:

这句话使用了文内引用,且使用了numeric格式。[1] 使用了numeric格式的参考文献: [1]Doe L, et al.(2002) This is a example of references. Journal of references 156:12-13.

上述说明了“文内引用”和“参考文献”是一种联动的格式系统,常用的引用格式就是上述两种。

但是,

我们还有一种常见的格式,即note格式

这句话使用了note格式的文内引用。① ①:一般note格式定义较为宽松,这里可以放参考文献: “Doe L, et al.(2002) This is a example of references. Journal of references 156:12-13.” 也可以补充文章信息。

由于note格式和上述两种格式在word软件等处理上完全不同,note格式使用的是脚注格式,而其他两种格式使用的是尾注格式,任何一个CSL文件首先要做的事情就是定义格式。

下面是法律常用格式OSCOLA的真实CSL文件代码,其中class变量定义了其使用了note格式。

OSCOLA (Oxford University Standard for Citation of Legal Authorities) OSCOLA http://www.zotero.org/styles/oscola Sebastian Karcher The OSCOLA Standards. For a Zotero Group showing data-entry in Zotero see: https://www.zotero.org/groups/oscola_samples/items/order/itemType 2021-08-04T14:15:41+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License

下面是我们中文引用最常用的格式China National Standard GB/T 7714-2015:

其中先定义了in-text格式,接着要定义使用的是具体什么格式,在后边的citation-format定义了是numeric格式。

China National Standard GB/T 7714-2015 (numeric, 中文) http://www.zotero.org/styles/china-national-standard-gb-t-7714-2015-numeric 牛耕田 [email protected] Zeping Lee [email protected] (这里定义了numeric格式) The Chinese GB/T 7714-2015 numeric style 2022-02-23T10:44:01+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License

上述知识可被总结如下:有两大类格式,分别是note和in-text,其中in-text又分为author-date和numeric格式。无论是什么格式,均需要定义文内引用和参考文献的格式。(当然还有很多其他格式,这里是为了举例方便)

一旦定义了格式,文章的引用会统一遵守该格式。

第二章 XML基本结构

上述代码我们只研究了其引用类型的部分,要理解其他部分,还需要了解一定的XML语言知识。

组件是XML的基本单元,一个组件可以被其他组件定义,除此之外,它还可以包含变量内容

下面以China National Standard GB/T 7714-2015为例:

组件的嵌套关系:

//组件的开始使用标识符,说明这是一个组件。组件的名字是“style”,说明组件的内容是和格式相关的信息。 //style组件包含了info组件,info又包含了tile组件。 China National Standard GB/T 7714-2015 (numeric, 中文)//声明了该CSL文件的名称 //在组件名称之前加上/符号,说明组件结束。 //在组件名称之前加上/符号,说明组件结束。

组件的变量

//组件的变量写在组件开始的标识符内部,每个变量定义了组件的一些功能。 在这里: version定义xml的版本。 class定义引用格式为in-text。 default-locale定义了默认使用的语言格式为中文。

组件的内容

牛耕田 组件开始和结束之间可以直接定义组件的内容,也可以理解为name这个变量被定义为牛耕田。如果一个组件只有变量没有内容,也没有其他组件: 在>前使用/符号标记即可,不需要的结束标记。第三章 CSL文件的基本结构

有了上述知识,我们可以来研究CSL代码的结构了,以下是一个极简的代码结构,但是已经可以正确的生成的参考文献了。

Example Style http://www.zotero.org/styles/example John Doe [email protected] Jane Doe Bill Johnson 2014-10-15T18:17:09+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License without date

该代码能够生成如下格式的参考文献:

文内引用: (A.C. Smith et al., 2002; W. Wallace, J. Snow, 1999) 参考文献: 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.

要理解该代码,我们首先将整体的代码结构表示出来:

//style组件开始 //info组件用于描述style的信息 //locale组件用于声明语言信息 //macro组件是功能组件,这里声明了author的信息 //macro组件是功能组件,这里声明了出版年的信息 //citation组件声明了文内引用的格式 //bibliography组件声明了参考文献的格式

可以看出,代码结构的最高级是style,其次级组件包括:

info 用于描述style的信息

locale 用于声明语言信息

macro 用于声明功能

citation 声明了文内引用的格式

bibliography 声明了参考文献的格式

第四章 CSL文件详解

接下来,我们了解上述代码每一个组件在做的事情。

首先是style的变量说明:

//CSL文件首先会声明xml代码的版本和编码模式,这部分我们不用关心 //xmlns声明了本CSL文件中的组件都来自于官方CSL //class表明引用格式是note还是in-text //version同样是xml代码的版本

info组件是style的次一级组件,它主要描述CSL文件本身的信息,不涉及到格式的具体信息:

Example Style //定义该CSL的名称 http://www.zotero.org/styles/example //id是定义CSL文件的唯一标志,每个CSL文件的id应该都不同,否则上传到文献管理软件会冲突 //link组件用于管理超链接,rel指向一个变量用于定义超链接,self即该文件自身,你可以上传到zotero之类的网站上 //template指的是该CSL文件的参考模板,我们不能从零造轮子,一般都有参考模板,例如中文期刊大部分参考GB/T 7714-2015 //documentation指的一般是期刊格式,你可以在这里放它的主页来说明你这个CSL格式适用于哪个期刊 //说明该CSL文件是谁做的 John Doe [email protected] //说明贡献者是谁 Jane Doe Bill Johnson //我们已经用class定义了in-text格式,这里定义用什么具体的in-text格式,我们用的是author-date格式 //描述是关于什么领域的,可以是物理学、生物学等等。 2014-10-15T18:17:09+00:00 //描述该CSL文件是什么时候生成的 //声明版权信息 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License

我们先略过locale和macro组件,来看citation组件是如何工作的,要注意citation是文内引用格式:

该功能十分重要,我们还是将该功能分解来看:

假设参考文献是这两条:

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.

首先来看citation组件的变量

//et-al-min定义了如果作者数超过三个,则使用et.al作为结尾。 //et-al-use-first定义了只显示第一个作者的名字,其余显示et al。 //这两个组件是联合工作的,我们可以修改数值来定义自己的et al应该如何显示。 //文内引用: //(A.C. Smith et al., 2002; W. Wallace, J. Snow, 1999) //如果我们修改et-al-use-first数值为2: //文内引用: //(A.C. Smith, D. Williams. et al., 2002; W. Wallace, J. Snow, 1999)

sort组件用于排序不同参考文献的位置:

//第一排序变量,即作者首字母 //第二排序变量,当首字母相同的情况下,按照年份排序 //文内引用: //(A.C. Smith, D. Williams. et al., 2002; W. Wallace, J. Snow, 1999) //可以看出A开头的拍前面,W开头的排在后面

layout是CSL文件中最重要的组件,它决定了如何呈现一条引用:

我们将layout再进行拆解:

layout组件的变量

//prefix和suffix定义了文内引用的前缀和后缀 //delimiter定义了两条引用之间的符号 //文内引用: //(A.C. Smith, D. Williams. et al., 2002; W. Wallace, J. Snow, 1999) //如果我们改为 //则文内引用变成 //[A.C. Smith, D. Williams. et al., 2002@ W. Wallace, J. Snow, 1999]

group组件定义了每一条引用应该包含什么信息,以及应该怎么排序:

//delimiter定义了text组件之间的分隔符是什么,这里是作者名字和年份之间的分隔符,为逗号 //文内引用: //(A.C. Smith, D. Williams. et al., 2002; W. Wallace, J. Snow, 1999) //text组件定义了应该呈现什么,这里首先呈现作者 //然后呈现年月,它们之间用逗号分隔 由于知乎代码块没有加粗功能,格式重点展现在这里(A.C. Smith, D. Williams. et al., 2002; W. Wallace, J. Snow, 1999)

现在我们可以来看macro组件的功能了:

//定义该macro组件用于处理作者信息 //names组件包含了多个作者的信息 //name组件有一个initialize-with的变量,该变量第一步定义了作者名字应该缩写,第二步定义了缩写后要带一个点 //文内引用: //(A.C. Smith, D. Williams. et al., 2002; W. Wallace, J. Snow, 1999) 由于知乎代码块没有加粗功能,格式重点展现在这里(A.C. Smith, D. Williams. et al., 2002; W. Wallace, J. Snow, 1999)

再来看第二个macro组件的功能,

这里用了一个choose组件,嵌套了一个if/else组件,用于应对参考文献没有年份的情况:

//在参考文献中检索年份,如果找到了,则显示该年份 //这里定义了只显示年,不显示月和其他信息 //如果检索不到年份,则输出“no date”

可以看出,macro组件是一种可被调用的功能库,由于不管是书籍、报纸、期刊都有作者,我们在定义这些不同的文献来源时,只需要调用组件就可以完成管理,而不用重新写一个关于作者的代码。

好了,以上就是ciation所有的功能了,bibliography实质上也和ciation的结构类似,只不过多了一些信息和定义,在这里就不再多言了,只做一些简单的提醒:

//条目最后一个符号是. //这里的group嵌套了一个group,这里的逗号分割了三个部分,分别是第一个group,第二个group,和page。 //参考文献上述四个成分之间用点分割: //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.

由于知乎代码块没有加粗功能,格式重点展现在这里(A.C. Smith, D. Williams, T. Johnson. 2002. Story of my life. Journal of Biographies, 12(2), 24—27. )(点和逗号加粗)

最后是locale组件,它用于定义不同语言的显示:

without date

上述是官网源代码,我们用一个更加直观的例子:

//定义了使用的语言是什么,这里是中文 没有日期 //在任何呈现no date的地方,转变为呈现“没有日期” //参考文献效果: ////W. Wallace, J. Snow. 没有日期. Winter is coming. Journal of Climate Dynamics, 6(9), 97—102.

不过,经作者测试,locale在使用的时候经常出错,所以不建议大家对locale进行修改。

第五章 应用

我们已经理解了CSL的代码,接下来就要使用代码了。我们举两个最简单的例子。

更改所有标题格式为斜体

将所有文献标题改为斜体,以下是China National Standard GB/T 7714-2015的关于标题的macro组件的源代码,我们将改动标记在代码中:

//这里是输出text的内容是title,我们加一个变量定义其斜体格式: // //即可实现所有标题变成斜体 ////A.C. Smith, D. Williams, T. Johnson. 2002. Story of my life. Journal of Biographies, 12(2), 24—27. 由于知乎代码块没有斜体功能,格式重点展现在这里A.C. Smith, D. Williams, T. Johnson. 2002. Story of my life. Journal of Biographies, 12(2), 24—27.

消除英文文献出现“等”

由于官方文件默认是中文,所以引用英文的时候会出现“A.C. Smith, D. Williams, 等. 2002. Story of my life. Journal of Biographies, 12(2), 24—27. ”的情况,我们只需要修改这段代码:

//我们只要把default-locale="zh-CN"改为:default-locale="eng",即默认语言变为英语 //就可以避免这种情况

其他的应用方法请各位自行探索。

原创性声明:本文由知乎作者余绰发布,可以通过知乎链接转载,请勿抄袭或用于商业用途。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3