From 06b88c3cda9bd5da4f33bc9df7b476c5b9e51bb2 Mon Sep 17 00:00:00 2001 From: Mao Zhou Date: Thu, 19 Sep 2024 19:40:21 +1000 Subject: [PATCH] test --- Project.toml | 13 +- config.toml | 12 +- contents/CSL_1.0.1_spec.md | 2020 +++++++++++++++++++++++ contents/CSL_introduce.md | 511 ++++++ contents/XML_basis.md | 109 ++ contents/about.md | 3 - contents/appendix.md | 7 - contents/index.md | 14 +- contents/locale_file.md | 22 + contents/references.md | 1 - metadata.yml | 7 +- src/{BookTemplate.jl => CSL_Chinese.jl} | 9 - src/data.jl | 3 - 13 files changed, 2684 insertions(+), 47 deletions(-) create mode 100644 contents/CSL_1.0.1_spec.md create mode 100644 contents/CSL_introduce.md create mode 100644 contents/XML_basis.md delete mode 100644 contents/about.md delete mode 100644 contents/appendix.md create mode 100644 contents/locale_file.md delete mode 100644 contents/references.md rename src/{BookTemplate.jl => CSL_Chinese.jl} (71%) delete mode 100644 src/data.jl diff --git a/Project.toml b/Project.toml index b767c68..f9e207d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,13 +1,6 @@ -name = "BookTemplate" -uuid = "6b2b467d-d873-4a19-b33c-0abffd8470ba" -authors = ["John Doe"] +name = "CSL_Chinese" +uuid = "5b2b467d-d873-4a19-b33c-0abffd8470ba" +authors = ["Zhou Mao"] [deps] Books = "939d5c6b-51ae-42e7-97ca-7564d0d4ad91" -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -Reexport = "189a3867-3050-52da-a836-e630ba90ab69" - -[compat] -Books = "2" -DataFrames = "1" -Reexport = "1" diff --git a/config.toml b/config.toml index 9b7ec31..86eb7cc 100644 --- a/config.toml +++ b/config.toml @@ -2,13 +2,15 @@ [projects.default] contents = [ - "about", - "appendix", - "references", + "index", + "CSL_introduce", + "XML_basis", + "CSL_1.0.1_spec", + "locale_file", ] # Full URL, required for the sitemap and robots.txt. - online_url = "https://booktemplate.huijzer.xyz" + online_url = "https://ZMAlt.github.io/CSL_Chinese" # Extra directories to be copied. extra_directories = [] @@ -16,4 +18,4 @@ # Port used by serve() port = 8004 - output_filename = "booktemplate" + output_filename = "CSL_Chinese" diff --git a/contents/CSL_1.0.1_spec.md b/contents/CSL_1.0.1_spec.md new file mode 100644 index 0000000..2f285ed --- /dev/null +++ b/contents/CSL_1.0.1_spec.md @@ -0,0 +1,2020 @@ +# CSL 1.0.1 规范 + +## 介绍 + +CSL 是一种基于 XML 的格式,用来描述引用的格式,注释和参考文献,提供了 + +- 一种开放的(开源的)格式 + +- 紧凑并且稳定的格式 + +- 对格式要求的外部支持 + +- 对格式的发布和更新的基本支持 + +- 数千种免费提供 的样式 + + + +有关的其他文档,CSL 介绍,样式和本地化文件详见 [CSL 项目主页](https://citationstyles.org/) + +### 术语 + +关键字 `MUST,MUST NOT,REQUIRED,SHALL,SHALL NOT,SHOULD,SHOULD NOT,RECOMMENDED,MAY 和 OPTIONAL` 将按[IETF RFC 2119](http://tools.ietf.org/html/rfc2119)中的描述解释。 + +## 命名习惯 + +在引用 CSL 元素时,将在前面使用`cs:`。 + +## 翻译习惯 + +这里将列出一些常用的术语的翻译,但只是本人自己的理解,并不能保证翻译的准确性。后文的描述中可能会使用英文或者中文翻译。 + +locale files/locale 本地化文件 + +styles 样式/格式 + +citation 引文 + +macro 宏 + +## 文件类型 + +这里有 3 种 CSL 文件类型:从属样式和独立样式 (都使用`.csl`作为扩展名),以及 本地化文件 (名字为`"locales-xx-XX.xml"`,其中 `"xx-XX"`表示语言以及其方言,e.g. `"en-US"` 表示美式英语)。 + +### 独立样式 + +独立样式包含用来描述引文,笔记以及参考文献的格式的元数据。虽然它们大多数自包含的(即不依赖其他样式),但是依赖于本地化文件。 + +### 从属样式 + +从属样式的内容仅包含样式元数据,不包括任何格式说明。通过将具有相同引用风格的期刊(e.g., "Nature Biotechnology", "Nature Nanotechnology")的从属样式链接到独立样式(e.g., "Nature Journals"),从属样式就不再需要重复的格式说明。(也就是说从属样式是依赖其他样式的,被依赖的样式成为称为**父样式**) + +### 本地化文件 + +每个本地化文件包含一系列对某种语言/方言的本地化数据(词语翻译,本地化日期格式以及语法选项)。(本地化文件主要用于在不同的语言环境中使用样式,比如在中文环境中使用,中文对应的本地化文件可以将英文中的`"et al."`替换为`等.`) + +## XML 声明 + +每个样式或者本地化文件应该以 XML 声明开头,给出具体的 XML 版本以及字符编码。大多数情况下,XML 声明是: + +```xml + +``` + +## 样式结构 + +### 根元素 `cs:style` + +样式的根元素是`cs:style`。在独立格式中,根元素携带以下几种属性: + +`class` + +​ 决定样式的引文类型是 in-text (值是 `"in-text"`) 或者 note (值是`"note"`) 。in-text表示引文在文字中,note 表示引文不在文字中,可能是脚注等等。 + +`default-locale` (可选) + +​ 为本地化设值默认的 locale。值必须是 [locale code](http://books.xmlschemata.org/relaxng/ch19-77191.html)。 + +`version` + +​ 样式的 CSL 版本。对于 CSL 1.0 兼容样式,必须是 `"1.0"`。 + +此外,`cs:style`可能携带任意的[全局选项](#全局选项)和 [可继承名称选项](#可继承的名称选项)。 + +在这些属性中,从属格式中,只有`version`是必须的, `default-locale` 属性可以设置用来代替的默认的本地化文件 。其他的属性是可以忽略的。 + +下面是一个独立样式的 `cs:style`示例,最前面是 XML 声明: + +```xml + + +``` + +#### Locale + +来自`"locales-xx-XX.xml"`locale file 的本地化数据可以通过`cs:locale`元素来重定义或者补充定义。`cs:locale`元素应该放在`cs:info`元素后。 + +`cs:locale`元素的`xml:lang`属性是可选的,必须设置为[xsd:language locale code](http://books.xmlschemata.org/relaxng/ch19-77191.html)中的一种,用来确定使用的语言环境(或方言,见 [locale fallback](locale fallback))。 + +对于`cs:locale`元素的详细使用,另见 [术语](Terms(术语))、[本地化日期格式](本地化日期格式)和[本地化选项](b本地化选项)。 + +下面是一个`cs:locale`元素的例子: + +```xml + +``` + +**Locale Fallback** + +本地化文件为语言方言提供了本地化数据;可选的`cs:locale`元素的`xml:lang`属性设置为一种语言(例如, `"en"` 代表英语 ) 或者方言(例如, `"en-US"` 代表美式英语 ) ,`xml:lang`属性也可能缺失。Localr fallback 是一种在上述的属性设置中检索来确定本地化单元的机制。这些本地化单元包括日期格式,本地化选项或者术语的特定形式。 + +对于同一种语言的方言,一种被称为初级方言,其他都是二级方言。下面展示了部分语言的初级方言和二级方言: + +| 初级方言 | 二级方言 | +| -------- | ------------ | +| de-DE | de-AT, de-CH | +| en-US | en-GB | +| pt-PT | pt-BR | +| zh-CN | zh-TW | + +这里用一个例子来描述 Locale fallback。如果要选择 `"de-AT"`(Austrian German)作为使用环境,本地化单元可以来自下面的源(优先级逐渐降低): + +A. 样式文件中的 `cs:locale`元素 + +- `xml:lang`设置为方言 `"de-AT"` +- `xml:lang`设置为 `"de"` +- `xml:lang`不设置 + +B. Locale files/本地化文件 + +- `xml:lang`设置为方言 `"de-AT"` +- `xml:lang`设置为对应的初级方言 `"de-DE"` (standard german) +- `xml:lang`设置为`"en-US"` + +也就是说,如果要使用`"de-AT"`语言,首先在 Locale files 中寻找`"de"`对应的 `locales-de-XX.xml` 文件,即`"locales-de-AT.xml"`和`"locales-de-DE.xml"`,由于要设置的语言环境是方言`"de-AT"`,所以选择`de-AT`对应的 locale file `locales-de-AT.xml`。接下来,如果 csl 文件中包含 `cs:locale`元素,将会覆盖 `locales-de-AT.xml` 文件的设置。 + +## Locale Files(本地化文件) + +尽管本地化数据可以包括在 csl 文件中(见[Locale](#Locale)),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。 + +每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为`cs:locale`(样式/style中则为`cs:style`元素)。在`cs:locale`根元素中,属性`xml:lang`用来设置方言。同时这一设置选项也用来对本地化文件命名(`"xx-XX"`文件名为`locales-xx-XX.xml`)。此外,根元素必须携带`version`属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为`"1.0"`)。本地化文件有和样式同样的命名空间。`cs:locale`元素可能包含`cs:info`作为第一个子元素,同时,必须含有`cs:terms`、`cs:date`、`cs:style-options`子元素。下面是一个 本地化文件的部分示例: + +```xml + + + + + + + + + + + + + + + n.d. + et al. + + page + pages + + + p. + pp. + + + +``` + +### Info + +`cs:info`元素用来给出本地化文件的元数据。它含有以下子元素: + +`cs:translator`(可选) + +​ `cs:translator`用来致谢翻译者,并且能使用多次。在这个元素中。子元素`cs:name`必须出现一次,`cs:uri`则是可选的。这些子元素应该分别包括翻译者的名字,地址和 URI。(与样式中类似) + +`cs:rights`(可选) + +​ 可能出现一次。`cs:rights`的内容用来指定本地化文件发布版本的 license。该元素可能会携带`license`属性来指定`license`的 URI,`xml:lang`属性则用来指定元素内容的语言(值必须是[xsd:language locale code](http://books.xmlschemata.org/relaxng/ch19-77191.html))。 + +`cs:updates`(可选) + +​ `cs:updated`元素的内容必须是一个[时间戳](#时间戳)来指定本地化文件最后一次更新的时间。 + +### Terms(术语) + +术语是本地化的字符串,比如通过使用`"and"`术语,`"Doe and Smith"`在语言环境从英语到德语的转换中会自动变为`"Doe und Smith"`。术语用`cs:term`元素定义,是`cs:terms`元素的子元素。每个`cs:term`元素必须携带一个`name`属性,其属性值可以设置为[附录II 术语](#附录II 术语)列表中的值。 + +术语可以直接在`cs:term`的内容中定义,或者,在某些情况下,比如在需要单数和复数的情况下可以分别在子元素`cs:single`和`cs:multiple`中定义, (例如:` "page"`和`"pages"`)。 + +术语必须使用`cs:term`元素来定义,并在其中使用`form`属性来设置特定格式,`form`可以设置的值为: + +- `"long"` - (默认值), e.g. "editor" and "editors" for the "editor" term + +- `"short"` - e.g. "ed." and "eds." for the term "editor" +- `"verb"` - e.g. "edited by" for the term "editor" +- `"verb-short"` - e.g. "ed." for the term "editor" +- `"symbol"` - e.g. "§" and "§§" for the term "section" + +如果一个样式使用了一个没有定义的格式,则会会退到其他形式,比如 `"werb-short"`会回退到`"verb"`,`"symbol"`会回退到`"short"`,`"verb"`和`"short"`都会回退到`"long"`。如果没有可以用的语言环境或者 form 格式,改术语的渲染结果就会显示为空字符串。 + +`cs:term`元素可以使用`match`,`gender`和`gender-form`属性来设置数字变量渲染为序数(比如,`first`,`2nd`)。具体见下面的[序数后缀](#序数后缀)和[特定序数](#特定序数)。 + +术语内容不应该包括 Latex 以及 HTML 等标记。上标可以使用 Unicode 上标字符。 + +#### 序数后缀 + +数字变量可以使用`cs:number`元素以`"ordinal"`格式(即序数格式)渲染,比如:`2nd`。序数的后缀则是使用术语来定义的。 + +`"ordinal"`术语定义了默认的序数后缀格式,但这些默认的后缀可以被下面的术语对某些数字进行覆盖: + +- `"ordinal-00"` 到 `"ordinal-09"` - 默认地,当术语名称的最后一位数字与要渲染的数字的最后一个数字相同时,将使用在这个范围内的对应的术语。比如:`"ordinal-00"` 能够匹配数字 0 、10、20 等等。通过设置属性`match`为`"last-two-difits"`(默认值为`"last-digit"`),匹配范围将为变为两位,例如:0、100、200等。当`match`术语设置为`"whole-number"`时,只有术语与要渲染的数字相同时,才会实现匹配。 +- `"ordinal-10"` 到 `"ordinal-99"`- 默认地,当要渲染的数字的最后两位和术语中相同时,使用这个范围的术语。当`match`属性设置为`"whole-number"`时(默认为`"last-two-digits"`),只有术语与要渲染的数字相同时,才会实现匹配。 + +当渲染的数据对上面的两组都匹配时(比如:13 可以同时匹配 `"ordinal-03"`和`"ordinal-13"`),则使用`"ordinal-10"` 到 `"ordinal-99"`。 + +序数术语在 CSL 1.0.1 和 CSL 1.0 中表现时不同的。当样式和本地化文件中都没有定义`"ordinal"`术语,但是定义了`"ordinal-00"` 到 `"ordinal-04"`,原始的 CSL 1.0 的方案被使用,`"ordinal-01"`用于以1结尾的数字(以11结尾的数字除外),`" ordinal-02"`用于以2结尾的数字(以12结尾的数字除外),`"ordinal -03"`表示以3结尾(那些以13结尾的除外),`"ordinal-04"`表示所有其他数字。 + +#### 性别特定序数 + +一些语言使用特定的有别于性别的序数。例如,如果目标名词是男性,英语中的 "1st" 和 "first" 在法语中就翻译为 "1er" 和 "premier",如果目标名词是女性,就翻译为 "1re" 和 "première"。 + +女性和男性在术语使用上的不同可以使用性别格式`gender-form`的属性来设置(分别设置为`feminine`和`masculine`),详情见[Ordinals序数](#Ordinals/序数)(没有性别的术语表示中性)。这里涉及到两类目标名词:a) [数字变量](#数字变量)附带的术语,b)月份术语(见[Months/月](#Months/月))。在术语设置为`"long"`(默认),并且在`gender`属性被设置时(设置为`"feminine"`和`"masculine"`),这些名词即使用相应的性别变体。当数字变量以序数`"ordinal"`或者`long-ordinal`形式时,将使用相同性别的序数词,如果没定义女性或男性变体,则使用中性变体。当`"day"`日期部分以序数`"ordinal"`形式呈现时,序数性别和月的术语匹配。 + +下面给出`1re éd.`(`"1st ed."`)、`"1er janvier"`(`"January 1st"`)和`"3e édition"`(`"3rd edition"`)的示例: + +```xml + + + + + édition + éditions + + éd. + janvier + e + re + er + + +``` + +### 本地化日期格式 + +在`cs:date`元素中,本地化数据格式有两种格式:一种是`"numeric"`(例:`12-15-2005`),另外一种是 `"text"`(例:`December 15,2005`)。格式在`cs:date`元素中,使用`form`属性来设置。 + +日期格式使用`cs:date-part`子元素来构建(见[Date-part](https://docs.citationstyles.org/en/stable/specification.html#date-part))。当`cs:date-part`的`name`属性设置为`"day"`、`"month"`、或`"year"`时,反应了日期显示的顺序为日、月河年。日期可以使用`cs:date`和`cs:date-part`元素中的[formatting](https://docs.citationstyles.org/en/stable/specification.html#formatting) 和 [text-case](https://docs.citationstyles.org/en/stable/specification.html#text-case)属性设置。`cs:date`元素中的`delimiter`属性用来设置`cs:date-part`中不同部分的间隔,并且词缀也可以应用于`cs:date-part`元素。(译注:这里的词缀指的是前后的括号等等。) + +**注**:定义本地化日期格式时,不允许在`cs:date`上使用词缀。此限制适用于将特定于语言环境的词缀(在cs:date-part元素上设置)与任何特定于样式的词缀(在调用cs:date元素上设置)分开,例如括号: + +```xml + + + +``` + +### 本地化选项 + +本地化选项有两个,`limit-day-ordinals-to-day-1` 和 `punctuation-in-quote` (见[Locale Options](https://docs.citationstyles.org/en/stable/specification.html#locale-options))。这些全局选项(同时影响引文和参考文献条目)在`cs:style-options`中被设置为可选属性。 + +## 渲染元素 + +渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。 + +### Layout + +`cs:layout`渲染元素是`cs:citation`元素和`cs:bibliography`元素的的必要子元素。`cs:layout`必须包含一个或者多个渲染元素,并且可能携带[`affixes`](#词缀)和[`formattig`](#格式化)属性。在`cs:citation`元素中,[`delimiter`](#分隔符\delimiter)属性用来指定一个引文中的不同引用的间隔符。例如:一个`"(1,2)"`类型的引文可以使用下面的代码实现: + +```xml + + + + + +``` + +### Text + +`cs:text`渲染元素用来输出文字。其必须携带下面的属性来确定什么部分需要渲染: + +- `variable`- 渲染一个变量的文本内容。属性值必须是[标准变量](#标准变量)。可以与`form`属性一起选择变量的`"long"`(默认)或`"short"`形式(例如:设置题目,完整题目或者简写)。如果选择了`"short"`形式,但是却没法获得,就使用`"long"`形式来渲染。 +- `macro` - 渲染宏的文字输出。属性值必须和`cs:macro`元素的`name`属性的值相匹配。 +- `term` - 渲染术语。属性必须是[附录II 术语](#附录II 术语)中的术语列表中的一个。通过设置复数属性`plura l`来这只其使用单数还是复数形式,其中`"true"`为默认,表示使用复数形式,设置为`"false"`表示使用单数形式。 使用`form`属性可以设置术语的形式,其值可以为`"long"` (默认)、`"short"`、`"verb"`、`"verb-short"`或者`"symbol"` (见[术语](#术语)). +- `value` - 渲染属性值自己。 + +一个`cs:text`的渲染`title`变量的例子: + +```xml + +``` + +`cs:text` 可能会携带 [affixes](https://docs.citationstyles.org/en/stable/specification.html#affixes),[display](https://docs.citationstyles.org/en/stable/specification.html#display),[formatting](https://docs.citationstyles.org/en/stable/specification.html#formatting),[quotes](https://docs.citationstyles.org/en/stable/specification.html#quotes),[strip-periods](https://docs.citationstyles.org/en/stable/specification.html#strip-periods) 和 [text-case](https://docs.citationstyles.org/en/stable/specification.html#text-case) 属性。 + +### Date + +`cs:date`渲染元素输出必须从[日期变量](#日期变量)列表中的选择。日期可以以本地化或者非本地化格式呈现。 + +[本地化的日期格式](#本地化日期格式)通过可选的`form`属性来选择,其值必须设置为`"numeric"`(完全的数字格式 ,例如:12-15-2005)或者`"text"`(非数字的月份格式,例如: December 15, 2005)。本地化日期格式可以通过两种方式进行自定义。第一种:`date-parts`属性可以用来设置不同的日期组成部分。其值可以设置为: + +- `"year-month-day"` - 默认值,渲染年,月,日 +- `"year-month"` - 渲染年月 +- `"year"` - 只渲染年 + +第二种,`cs:date`可以含有一个或者多个`cs:date-part`子元素(见[Date-part](#Date-part))。在这些子元素中可以设置属性来覆盖之前的本地化设置(例如:要获得所有语言环境的缩写月份,可以将月份的`cs:date-part`元素的`form`属性设置为`"short"`)。这些`cs:date-part`子元素不影响各个日期部分渲染的顺序和以及其是否渲染。`cs:date-part`元素中不能使用词缀 [Affixes](#词缀). + +没有属性`form`的情况下,`cs:date`则描述了一个自带的非本地化的日期格式。其日期格式使用`cs:date-part`子元素来构建。在使用`name`属性并设置为`day`,`month`或`year`时,这些元素的顺序反应了其显示顺序。日期可以在`cs:date-part`元素中使用[`formatting`](格式化)属性以及多个`cs:date-part`的属性来格式化(见[Date-part](#Date-part))。`cs:date`中的`delimiter`属性可以用来设置`cs:date-part`元素不同日期部分的分隔符,此外,[词缀](#词缀)可以用在 `cs:date-part` elements。 + +本地化的日期或者是非本地化的日期,, `cs:date` 都可能携带 [affixes](https://docs.citationstyles.org/en/stable/specification.html#affixes),[display](https://docs.citationstyles.org/en/stable/specification.html#display),[formatting](https://docs.citationstyles.org/en/stable/specification.html#formatting) 和[text-case](https://docs.citationstyles.org/en/stable/specification.html#text-case) 属性。 + +#### Date-part + +`cs:date-part`元素用来控制日期的各个部分怎么渲染。除了其父元素`cs:date`调用了本地化日期格式,这些子元素同样可以决定哪些部分出现以及各部分的渲染顺序。`cs:date-part`元素描述了`name`属性选择的日期部分,其`name`值可以是: + +**"day"** + +​ 对于`"day"`来说,`cs:date-part`可能会携带`form`属性,值可以设置为: + +- "numeric" - (默认),例如,每个月第一天显示为 `1` + +- "numeric-leading-zeros" - 不够的位数用0补齐,例如,`01` + +- "ordinal" - 使用序数形式,例如,`1st` + + 有的语言种,比如法语,只在月份的第一天使用`"oridinal"`也就是序数形式("1er janvier","2 janvier","3 janvier"等)。这种输出可以通过`"oridinal"`以及`limit-day-oridinals-to-day-1`属性来设置 (see [本地化选项](#本地化选项))。 + +**"month"** + +​ 对于`"month"`来说,`cs:date-part`可能会携带[`strip-periods`](#strip-periods)和`form`属性。在locale files中,月份缩写应该后面要加点(例如: "Jan.", "Feb.")。点可以设置`strip-periods`为`"true"`去掉。`form`属性可以设置为: + +- "long" - 默认,例如:`January` +- "short" - 例如:`Jan.` +- "numeric" - 例如:`1` +- "numeric-leading-zeros" - 例如:`01` + +**"year"** + +​ 对`"year"`来说,`cs:date-part`可能会携带`form`属性,值可以设置为: + +- "long" - 默认,例如:`2020` +- "short" - 例如:`20` + + +`cs:date-part` 也可能携带[formatting](https://docs.citationstyles.org/en/stable/specification.html#formatting),[text-case](https://docs.citationstyles.org/en/stable/specification.html#text-case) 和 `range-delimiter` 属性。除在`cs:date`元素中使用,其他情况下,`cs:date-part`是可以使用词缀的。 + +#### Date Ranges + +默认的日期范围中的分隔符是短线(en-dash),比如:`May–July 2008`。可以在`cs:date-part`元素中通过`range-delimiter`属性来设置常用的分隔符。当日期范围被渲染的时候,范围分隔符从`cs:date-part`元素中提取,并且匹配两个日期差别中最大的部分("year","month",或 "day")。如下面的例子,将会渲染出类似`"1-4 May 2008", "May–July 2008"`和` "May 2008/June 2009"`的日期范围。 + +```xml + +``` + +#### AD and BC + +`"ad"`一词(Anno Domini)自动附加到小于四位数的正年份(例如,`"79"`变为`"79AD"`)。`"bc"`一词(Before Christ)自动附加到负年份(例如,`"-2500"`变为`"2500BC"`)。 + +#### Seasons + +如果日期中包含了季节而不是月份,日期术语(`"season-01" `到` "season-04"`, 分别代表春夏秋冬)将取代月份术语。比如,下面将会被渲染为`"May 2008"` 和` "Winter 2009"`。 + +```xml + +``` + +#### Approximate Dates + +近似日期,在`is-uncertain-date`属性设置为`"true"`时即渲染(见[choose](#choose))。例如:下面的例子讲渲染出`2005`(正常日期)和`ca.2003`(近似日期)的结果。 + +```xml + +``` + +### Number + +`cs:number`渲染元素输出`variable`属性选择的数字变量。[数字变量](#数字变量)是[标准变量](#标准变量)的子集。 + +使用`cs:number`元素来渲染数字变量时,如果只包含数字内容(使用`is-numeric`属性设置,见 [Choose](https://docs.citationstyles.org/en/stable/specification.html#choose)),数字就被提取出来并渲染。变量内容包含非数字内容时,变量内容将呈现为原样。 + +在提取的过程中,用连字符分隔的数字将去掉中间的空格("2 - 4" 变为 "2-4")。用逗号分隔的数字在逗号后会添加一个空格,并删掉其余的空格("2,3" 和 "2 , 3" 变为 "2, 3")。当数字使用`&`分隔时,在前后各添加一个空格("2&3" 变为 "2 & 3")。 + +提取的数字可以通过`form`属性行进格式化,其值可以设置为: + +- "numeric" - 默认,例如: "1", "2", "3" +- "ordinal" - 序数数字,例如: "1st", "2nd", "3rd"。序数后缀可以使用术语定义 (见 [序数后缀](#序数后缀). +- "long-ordinal" - 长序数,例如: "first", "second", "third"。畅序数使用术语"long-ordinal-01" 到 "long-ordinal-10"定义, 用来在数字1到10使用。对于其他的数字,长序数渲染的结果讲和序数相同. +- "roman" - 罗马数字,例如:"i", "ii", "iii" + +带有前缀或者后缀的数字不能使用罗马数字进行排序或者渲染(例如:"2E" 仍然时 "2E")。没有词缀的数字可以被分别转换("2, 3" 可以转换为 "2nd, 3rd", "second, third" 或者 "ii, iii")。 + +`cs:number`元素可能会携带[affixes](https://docs.citationstyles.org/en/stable/specification.html#affixes),[display](https://docs.citationstyles.org/en/stable/specification.html#display),[formatting](https://docs.citationstyles.org/en/stable/specification.html#formatting) 和 [text-case](https://docs.citationstyles.org/en/stable/specification.html#text-case) 属性。 + +### Names + +`cs:names`元素用来输出一个或多个[名字变量](#名称变量)(或名称变量)的内容(通过必选属性`variable`来选择),每个`names`元素可以包含一个或者多个名称变量(例如:`"author"`名称变量会携带引用项中所有的作者名称)。如果选择了多个变量,每个变量将会按顺序单独渲染,但当选择中包括编辑和翻译(`"editor"`和`"translator"`)不适用。当包含的内容中有两个名字变量相同时,则只渲染一个。另外,如果`cs:names`元素中包含`cs:label`元素,`"editortranslator"`将用来代替`"editor"`和`"translator"`(例如:Doe(editor & tranlator))。`cs:names`元素中的[`delimiter`](#分隔符)属性可以用来分割不同的名字变量(例如:`Doe, Smith (editors); Johnson (translator)`中间使用了分号隔开)。 + +```xml + + +``` + +`cs:names`有四个子元素:`cs:name`,`cs:et-al`,`cs:substitute`和`cs:label`。 `cs:names` 元素可能会携带 [affixes](https://docs.citationstyles.org/en/stable/specification.html#affixes), [display](https://docs.citationstyles.org/en/stable/specification.html#display) 和 [formatting](https://docs.citationstyles.org/en/stable/specification.html#formatting) 属性。 + +#### Name + +`cs:name`元素的一个可选的子元素`cs:names`可以用来描述单个`names`的格式,以及名称变量中不同`names`的分隔。`cs:name`可能携带下面的属性: + +`and` + +​ 在名称变量中用来设置倒数第二个名字和倒数第一个名字的分隔符。可选的值为`"text"`("Doe, Johnson and Smith")或者`"symbol"`(eg: "Doe, Johnson & Smith")。 + +`delimiter` + +​ 在名称变量中设置字符串来分隔名称。默认的是`","`(e.g. "Doe, Smith")。 + +`delimiter-precedes-et-al` + +​ 确定在使用`et-al`缩写的情况下,在截断的姓名列表和`et-al`术语之间何时使用分隔符或者空格。该属性可选的值有: + +- "contextual" - (default), 在作者列表中有2个及以上的人时使用 + - 1 name: "J. Doe et al." + - 2 names: "J. Doe, S. Smith, et al." 两个人,则在最后一个人名和`et-al`间使用`,`分隔 +- "after-inverted-name" - 在`name-as-sort-order`属性使当前的名字发生了颠倒时使用。例如:当`name-as-sort-order`属性设置为`"first"`时,第一个名字的前后部分 Doe 和 J 发生了反转,因此在第一个名字后面使用了分隔符`,` + - "Doe, J., et al." + - "Doe, J., S. Smith et al." +- "always" - 不论几个名字或者怎样的设置,总是使用 + - 1 name: "J. Doe, et al." + - 2 names: "J. Doe, S. Smith, et al." +- "never" - 禁止使用分隔符,不论几个名字。 + - 1 name: "J. Doe et al." + - 2 names: "J. Doe, S. Smith et al." + + + +`delimiter-precedes-last` + + 在名字列表中确定何时使用分隔符来分割最后一个作者和倒数第二个作者。如果`and`没有被设置,则不论`delimiter-precedes-last`属性的值,名字分隔符总是使用。 + +- "contextual" - 默认,当名字列表中的名字有3个或以上时使用。下面在使用3个名字时,在`and`前使用了分隔符`,` + - 2 个名字: "J. Doe and T. Williams" + - 3 个名字: "J. Doe, S. Smith, and T. Williams" +- "after-inverted-name" - 在`name-as-sort-order`属性使当前的名字发生了颠倒时使用。例如:当`name-as-sort-order`属性设置为`"first"`时,仅在第一个名字后使用了分隔符`,` + - "Doe, J., and T. Williams" + - "Doe, J., S. Smith and T. Williams" +- "always" - 分隔符一直使用。 + - 2 names: "J. Doe, and T. Williams" + - 3 names: "J. Doe, S. Smith, and T. Williams" +- "never" - 禁用分隔符 + - 2 names: "J. Doe and T. Williams" + - 3 names: "J. Doe, S. Smith and T. Williams" + + + +`et-al-min`/`et-al-use-first` + +通过设置这两个属性,可是使用`et-al`对名字列表进行缩写。如果名字变量中的名字的数目超过了`et-al-min`属性设置的值,则达到`et-al-use-first`设置的名称数量后,渲染的名字列表将被截断。`"et-al"`(或者`"and others"`)术语用来添加到截断列表的后面(见[et-al](#et-al))。默认地,当名字列表被截断到单个名字,则名字和`"et-al"`术语之间使用空格进行隔开(例如:Doe et al.)。当一个名字列表被截断到两个或者三个名字,则使用分隔符(例如:Doe, Smith, et al.)。这些行为可以使用`delimiter-precedes-et-al`属性来设置。 + + + +`et-al-subsequent-min`/`st-al-subsequent-use-first` + +如果使用了这两个属性,则属性的值分别替换`et-al-min`和`et-al-use-first`的值以便后续引用。 + + + +`et-al-use-last` + +当该属性设置为`"true"`时,(默认为`"false"`),则使用下面的格式:截断的名称列表,分隔符,省略号,名称列表最后一个名字。这个属性只能在名称列表有多余两个的名称时使用。例: + +``` +A. Goffeau, B. G. Barrell, H. Bussey, R. W. Davis, B. Dujon, H. +Feldmann, … S. G. Oliver +``` + +*** + +下面讨论的属性将只会影响单个人的名字,这里先给出名字的组成部分。单个人的名字必须含有 "family" 部分,还可以含有 "given","suffix","non-dropping-particle",和"dropping particle" 等部分。下面对这些部分分别进行解释: + +- "family" - 姓氏,必须去掉 particle(译注:暂译为粒子)和后缀 +- "given" - 全名 "John Edward"或者 J. E. +- "suffix" - 名字后缀,比如:外国人常用的 Jr 或者罗马数字(经常翻译为 xx世,比如伊丽莎白二世) "Jr." in "John Smith Jr." 或者 "III" in "Bill Gates III" +- "non-dropping-particle" - 不可删除(省略)的粒子。当只显示姓氏的时候,不能省略("de" in the Dutch surname "de Koning") ,但是可能会在姓氏中分别对待,比如在排序的时候 +- "dropping-particle" - 可删除的粒子。当只显示姓氏的是欧,可以省略 ("van" in "Ludwig van Beethoven", which becomes "Beethoven") + +下面的属性将会影响单个人的名称的渲染: + +`form` + +指定是否显示名字的所有部分(默认为`"long"`),或者只显示姓氏和不可省略粒子(值为`"short"`)。除这两种情况外,还可以设置为`"count"`,返回使用`cs:names`元素渲染的部分的总数(考虑`et-al`缩写和编辑/翻译等折叠的影响)。 + +`initialize` + +当该属性设置为`"false`时(默认的结果为`"true"`),并且`"initialize-with"`属性被设置时,全名将不使用缩写。但是,如果在全名中有单独的大写字母的时候,仍然会添加``"initialize-with"`的值。例如:当`initialize`设置为`"false"`,并且`initialize-with`设置为`"."`时,James T kirk 将会变为 James T. Kirk。 + +`initialize-with` + +当该实行被设置时,全名将会使用缩写。该属性将会在每个首字母后添加属性值,比如:上述的名字会变为 J.J. Doe。对于合成的全名,例如:Jean-luc,可以使用全局的带有连字符的`initialize-with-hyphen`属性来设置其缩写形式(见[人名中的连字符](#人名中的连字符))。 + +`name-as-sort-order` + +指定名字的显示顺序为:姓,然后是名,例如:John Doe 变为 Doe,John。该属性值可以设置为: + +- "first" - 属性只影响名字变量中的第一个名字 +- "all" - 属性将会影响所有的名字 + +注意:即使`name-as-sort-order`改变了名字内部的顺序,最终显示的顺序不一定与包含粒子和后缀的名字的相同(见[名字内部顺序](#名字内部顺序))。`name-as-sort-order`只影响以拉丁字母或者西里尔字母书写的名字。其他字母书写的名字(比如,亚洲的大部分名字)总是将全名中的姓显示在前面。 + +`sort-separator` + +设置名字的不同部分由于`name-as-sort-order`属性导致的内部位置变换后的分隔符。默认值为`","`(Doe, John)。和`name-as-sort-order`属性相同,该属性只适用于拉丁字母和西里尔字母的名字。 + +`cs:name`元素也可以携带[词缀](#词缀)和[格式化](#格式化属性)。 + +#### 名字内部顺序 + +名字内部各部分的顺序取决于`cs:name`元素中`form`和`name-as-sort-order`属性和`cs:style`元素中的`demote-non-droping-particle`属性的设置。名称各部分的显示和排序的属性通常是不同的。下面将对名字顺序进行简单的介绍: + +**拉丁/西里尔名字的显示顺序** + +--- + +条件:`form `属性设置为`"long"` + +顺序:1. 名 2. 可省略粒子 3. 不可省略粒子 4. 姓 5. 后缀 + +示例:Jean de La Fontaine III + +--- + +条件:`form `属性设置为`"long"`,`name-as-sort-order`属性激活,`demote-non-dropping-particle`属性设置为`"never"`或者`"sort-only"` + +顺序:1. 不可省略粒子 2. 姓 3. 名 4. 可省略粒子 5. 后缀 + +示例:La Fontaine, Jean de, III + +--- + +条件:`form `属性设置为`"long"`,`name-as-sort-order`属性激活,`demote-non-dropping-particle`属性设置为`"display-and-sort"` + +顺序:1. 姓 2. 名 3. 可省略粒子 4. 不可省略粒子 5. 后缀 + +示例:Fontaine, Jean de La III + +--- + +条件:`form `属性设置为`"short"` + +顺序:1. 不可省略粒子 2. 姓 + +示例:La Fontaine + +--- + +**拉丁/西里尔名字的排序顺序** + +--- + +条件:`demote-non-dropping-particle`属性设置为`"never"` + +顺序:1. 不可省略粒子+姓 2. 可省略粒子 3. 名 4. 后缀 + +示例:La Fontaine de Jean III + +--- + +条件:`demote-non-dropping-particle`属性设置为`"sort-only"`或者`"display-and-sort"` + +顺序:1. 姓 2. 可省略粒子+不可省略粒子 3. 名 4. 后缀 + +示例:Fontaine de La Jean III + +--- + +**非拉丁和非西里尔名字的显示和排序顺序** + +--- + +条件:`form`属性设置为`"long"` + +顺序:1. 姓 2. 名 + +示例:张三 或者 Zhang San + +--- + +条件:`form`属性设置为`"short"` + +顺序:1. 姓 + +示例:张 或者 Zhang + +--- + + + +#### 名字格式化 + +`cs:name`元素可能会携带一个或者两个`cs:name-part`子元素来对名字的小部分进行特定的格式化。`cs:name-part`必须携带`name`属性,设置为`"given"`或者`"family"`。 + +如果设置为`"given"`,`cs:name-part`元素的[格式化](#格式化)和[文字大小写](#文字大小写)属性会影响`"given"`和`"dropping-particle"`部分。[词缀](#词缀)出现在`"given"`左右,将该部分扩起来。 + +如果设置为`"family"`,`cs:name-part`元素的[格式化](#格式化)和[文字大小写](#文字大小写)属性会影响`"given"`和`"non-dropping-particle"`部分。[词缀](#词缀)出现在`"family"`左右,将该部分扩起来。 + +`"suffix"`部分不受 name-part 部分格式限制。`cs:name-part`元素不影响 name-part 渲染的顺序。下面的代码,将产生类似 Jane DOE 的效果: + +```xml + + + + + +``` + +#### Et-al + +Et-al 缩写通过`et-al-...`属性来控制(见[Name](#Name)),同时也可以使用可选的`cs:et-al`元素设置,`cs:et-al`元素必须放在`cs:name`元素后。`term`属性可以被设置为`"et-al"`(默认)或者`"and others"`。[格式化](#格式化)属性可以用来设置 et-al 的格式,下面是 `"et-al"`术语的一个例子: + +```xml + + + +``` + +#### Substitute + +可选的`cs:substitute`元素,是`cs:names`的子元素,且必须是最后一个子元素,在父元素`cs:names`中指定的[名称变量](#名称变量)为空时添加替换。替换必须放在`cs:substitute`元素中,并且必须包含一个或者多个渲染元素(除`cs:layout`)。`cs:names`的简洁版本没有子元素,继承了`cs:names`元素中在`cs:name`和`cs:et-al`子元素的属性值。如果`cs:substitute`元素包含了多个子元素,第一个非空的元素用于替换。替换变量在输出的其余部分被抑制,以防止重复。下面的例子中:`"author"`名称变量为空时,就被`"editor"`名称变量替换,在没有 editor 时,则使用`"title"`宏替换。 + +```xml + + + + + + + + +``` + + + +#### Label in `cs:names` + +`cs:label`元素是可选的(见[Label](#Label)),而且必须位于`cs:name`和`cs:et-al`元素后,在`cs:substitute`元素前。当`cs:label`作为`cs:names`元素的子元素时,`cs:label`不能携带`variable`属性,而是使用父元素`cs:names`中的变量。第二个区别是:`form`属性可以设置为`"verb"`或者`"verb-short"`,其所有允许的值为: + +- "long" - (默认), 例如, "editor"术语渲染为"editor" 和 "editors" +- "short" - 例如,"editor"术语渲染为"ed." 和 "eds" +- "verb" - 例如,"editor"术语渲染为"edited by" +- "verb-short" - 例如,"editor"术语渲染为"ed." +- "symbol" - 例如,"section"术语渲染为 "§" 和 "§§" + +### Label + +`cs:label`渲染元素输出与所选变量匹配的术语,该属性必须设置为"locator"、"page"或数字变量之一。只有当选择的变量是非空的时候,术语才会渲染。例如: + +```xml + + +``` + +可以生成`"page 3"`或者`"pages 5-7"`。`cs:label`可能会携带下面的属性: + +`form` + +​ 选择术语的形式,可以设置为下面的值: + +- "long" - (默认), 例如: "page" 术语渲染为"page"/"pages" +- "short" - 例如: "page" 术语渲染为"p."/"pp." +- "symbol" - 例如: "section" 术语渲染为 "§"/"§§" + +`plural` + +​ 设置术语的复数形式,可以使用下面的值: + +- "contextual" - (默认),复数形式的渲染和具体的内容相匹配。当内容中包含多个数字时,使用复数形式。如下面的渲染结果:"page 1","pages 1-3","volume 2","volumes 2 & 4"。或者在使用`number-of-pages`和`number-of-volumes`时,数字大于1,例如: ("1 volume" 和 "3 volumes"。 +- "always" - 总是使用复数形式,不管具体的内容如何。例如:"pages 1" 和 "pages 1-3" +- "never" - 禁止使用复数形式,不管具体内容: "page 1"和"page 1-3" + +`cs:label`也可能会携带[affixes](https://docs.citationstyles.org/en/stable/specification.html#affixes), [formatting](https://docs.citationstyles.org/en/stable/specification.html#formatting), [text-case](https://docs.citationstyles.org/en/stable/specification.html#text-case) 和 [strip-periods](https://docs.citationstyles.org/en/stable/specification.html#strip-periods) 属性。 + +### Group + +`cs:group`元素必须包含一个或者多个渲染元素(除了 `cs:layout`)。`cs:group`可以携带`delimiter`属性来分隔子元素以及`affixes`、`display`和`formatting`属性。`cs:group`隐含的条件,当以下情况出现时,`cs:group`和它的子元素将会被抑制:a)在`cs:group`中至少一个渲染元素调用了变量(直接地或者通过宏调用),b)所有被调用得变量都为空。 + +```xml + + + + + + + +``` + +上述代码可以生成`"retrieved from http://dx.doi.org/10.1128/AEM.02591-07"`类似得结果,但是当URL为空的时候,不生成结果。 + +### Choose + +`cs:choose`元素允许有条件的渲染元素。下面的例子的意思为:在`"issud"`日期变量存在的情况下,就实施渲染,如果不存在,就给出`"no date"`术语: + +```xml + + + + + + + + +``` + +`cs:choose`元素中必须还有`cs:if`子元素,后面还可以有一个或者多个`cs:else-if`子元素以及一个可选的用来结尾的`cs:else`元素。`cs:if`和`cs:else-if`元素可能回包含任意个除`cs:layout`的渲染元素。由于空的`cs:else`元素是多余的,所以`cs:else`元素必须至少包含一个渲染元素。`cs:if`和`cs:else-if`元素必须含有一个或多个判断条件,这些条件可以使用下买的属性设置: + +`disambiguate` + +​ 当改属性设置为`"true"`(唯一允许的值)的时候,在元素内容消除了两个相同的引用时渲染。当所有其他消除歧义的方法都不能识别唯一的目标时,才进行消除歧义的尝试。 + +`is-numeric` + +​ 测试给定的变量([附录IV 变量](#附录IV 变量))是不是包含数字部分。如果内容仅由数字构成,则识别为数字。数字可以带有前缀、后缀("D2","2b","L2d")、并且可能被逗号,连字符或`&`分隔("2, 3","2-4","2 & 4")。 例如, "2nd"被识别为 "true" ,但 "second"和"2nd edition"被识别为"false". + +`is-uncertain-date` + +​ 判断给定的[日期变量](#日期变量)是不是包含[近似日期](#Approximate Dates)。 + +`locator` + +​ 判断位置是不是和给定的位置符合。这里的位置主要是在一个文档中的位置,比如,题目,第几段。使用 "sub-verbo"判断是不是"sub-verbo"类型 + +`position` + +​ 判断引用的位置湿否和给定的位置匹配。当在`cs:bibliography`中调用时,`position`的结果为"false"。位置可以使用下面的选项测试: + +- "first": 第一个引用项的位置 + +- "ibid"/"ibid-with-locator"/"subsequent": 引用先前引用的项目的引用,Such cites may also have the "ibid" or "ibid-with-locator" position when: + + 1. the current cite immediately follows on another cite, within the same citation, that references the same item + + or + + 1. the current cite is the first cite in the citation, and the previous citation consists of a single cite referencing the same item + + If either requirement is met, the presence of locators determines which position is assigned: + + - **Preceding cite does not have a locator**: if the current cite has a locator, the position of the current cite is "ibid-with-locator". Otherwise the position is "ibid". + - **Preceding cite does have a locator**: if the current cite has the same locator, the position of the current cite is "ibid". If the locator differs the position is "ibid-with-locator". If the current cite lacks a locator its only position is "subsequent". + +- "near-note": position of a cite following another cite referencing the same item. Both cites have to be located in foot or endnotes, and the distance between both cites may not exceed the maximum distance (measured in number of foot or endnotes) set with the `near-note-distance` option (see [Note Distance](https://docs.citationstyles.org/en/stable/specification.html#note-distance)). + +Whenever position="ibid-with-locator" tests true, position="ibid" also tests true. And whenever position="ibid" or position="near-note" test true, position="subsequent" also tests true. + +`type` + +​ 测试项目是不是和给定的类型匹配([附录 III 类型](#附录 III 类型))。这里的类型指条目的类型,例如,书,期刊文献,学位论文。 + +`variable` + +​ 测试给定变量([附录IV 变量](#附录IV 变量))的默认的形式(long)是不是为空。 + +--- + +除了`disambiguate`外,所有的条件都允许有多个测试值,多个测试值使用空格分隔("book thesis")。 + +`cs:if`元素和`cs:else-if`元素可能会携带`match`属性用来控制判断的逻辑,`match`可设置的值为: + +- "all" - 默认,仅当所有给定测试值都为 true 的时候结果才为 true +- "any" - 当任意一个值为 true 的时候,结果就为 true +- "none" - 当没有值测试为 true 的时候,结果为 true + +## 样式行为 + +### 选项 + +样式可以使用不同的元素来进行特定的配置。在`cs:citation`元素中设置元素可以配置特定的[引文选项](#引文选项);在`cs:bibliography`元素和[全局选项](#全局选项)(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在`cs:style`,`cs:style`和`cs:bibliography`中设置。最后,[本地化选项](#本地化选项)可以在`cs:locale`元素中设置。 + +#### 引文选项 + +##### 消除歧义 + +当一个引用对应多个参考文献条目的时候会产生歧义。下面有四种方法用来消除歧义: + +1. 显示更多作者姓名 +2. 扩展姓名(添加缩写或者完整的名) +3. 添加年份后缀 +4. 在`cs:choose`的`disambiguate`属性为 true 的时候,实行渲染 + +方法2也可以在全局名称歧义消除异己整个文档中有歧义的地方。 + +消除歧义的方法在下面属性被设置的时候,将会被激活,并且按上述列表中的方法进行尝试: + +`disambiguate-add-names` 步骤1 + +​ 如果设置为`"true"`(默认为`false`),使用 et-al 缩写锁代替的名字列表会逐个的加入到渲染列表中,知道添加的名字可以消除引用歧义为止。 + +`disambiguate-add-givenname` 步骤2 + +​ 如果设置为`"true"`(默认为`false`),产生歧义的名字将被扩展。名字扩展可以使用`givenname-disambiguation-rule`设置。下面是一个例子。 + + +| 含有歧义的引用 | 消除歧义的引用 | +| ---------------------------- | ---------------------------------- | +| (Simpson 2005; Simpson 2005) | (H. Simpson 2005; B. Simpson 2005) | +| (Doe 1950; Doe 1950) | (John Doe 1950; Jane Doe 1950) | + +如果不能通过扩展名字来实现消除歧义,当`disambiguate-add-names`属性设置为`"true"`, the names still hidden as a result of et-al abbreviation after the disambiguation attempt of `disambiguate-add-names` are added one by one to all members of a set of ambiguous cites, until no more cites in the set can be disambiguated by adding expanded names. + +`givenname-disambiguation-rule` + +用来指定 a) 名字扩展的目的是不是仅限于消除歧义,还是对消除歧义的名字有其他的目的(只有在后面的情况中,有歧义的名字才会在明确的引用中扩展,例如:从(Doe 1950; Doe 2000)扩展到(Jane Doe 1950; John Doe 2000)) b)名称扩展是针对全部还是针对每个引用的名字 c)扩展名字的方法。 + +**扩展单个名字** + +​ 扩展单个名字的步骤是: + +1. 如果`initialize-with`被设置并且`initialize`的值为默认的 true: + (a) 可以通过`"long"`而不是`"short"`的形式来渲染首字母 (e.g. Doe 变为 J. Doe) + (b) 如果`initialize`设置为`"flase"`,完整的姓名被渲染,而不是首字母(J. Doe 变为 John Doe) +2. 如果`initialize-with`没有被设置,使用`"long"`格式渲染完整的姓名(Doe 变为 John Doe) + +**消除歧义法则** + +​ `givenname-disambiguation-rule`属性可设置的值为: + +​ "all-name" + +​ 名字扩展具有消除名字歧义和消除引用歧义的双重目的。在渲染的有歧义的名称中,所有的有歧义的或者没有歧义的名字都将被消除歧义。 + +​ "all-names-with-initials" + +​ 和 "all-name" 一样,但是名称的扩展仅限于缩写。当`initialize-with`没被设置或者`initialize`被设置为`"false"`时,不会进行消除歧义的尝试。 + +​ "primary-name" + +​ 和 "all-name" 一样,但是消除歧义仅限于每个引用的第一个名字。 + +​ "primary-name-with-initials" + +​ 和 "all-names-with-initials" 一样,但是消除歧义仅限于每个引用的第一个名字。 + +​ "by-cite" + +​ 默认,和 "all-name" 一样,但是名称扩展的目的仅限于消除引用的歧义,只有有歧义的名字在有歧义的引用中才会被影响,并且在引用的第一个名字消除歧义后就停止消除歧义。 + +`disambiguate-add-year-suffix` 步骤3 + +如果设置为`"true"`(默认为`"false"`),字母序的年后缀将会被添加到有歧义的名字上("Doe 2007, Doe 2007" 变为 "Doe 2007a, Doe 2007b")。当字母序到达`"z"`,后,就会启用两个字母("z", "aa", "ab", …, "az", "ba" 等等)。 + +--- + +如果应用上述的歧义消除方法后仍然存在歧义,则尝试通过`disambiguate`条件来渲染不同的引用[步骤4] (见[choose](#choose))。 + +##### 引用分组 + +通过引用分组,可以将相同名称的文本引用放在一起,比如:(Doe 1999; Smith 2002; Doe 2006; Doe et al. 2007)将会变为(Doe 1999; Doe 2006; Smith 2002; Doe et al. 2007)。引用分组在引用排序和消除歧义后执行。分组后的引用保持其相对顺序,并移到第一个改组中引用出现的第一个位置。 + +引用分组可以在`cs:citation`元素中通过设置`cite-group-delimiter`属性或者`collapse`属性(见[cite collapsing](#cite collapsing))激活。 + +`cite-group-delimiter` + +激活引用分组并为引用组中的引用指定分隔符,默认为`","`。例如,当`cs:citation`元素中的`cs:layout`中的`delimiter`设置为`";"`时,`collapse`设置为`"year"`,`cite-group-delimiter`设置为`","`,将生成类似 "(Doe 1999,2001; Jones 2000)" 的引用。 + +##### cite collapsing/引用折叠 + +author或者author-date类型的引用格式中的引用分组和数字格式中的引用范围可以通过`collapse`属性来折叠。折叠引用组中分隔符可以是使用`year-suffix-delimiter`和`after-collapse-delimiter`属性来设置: + +`collapse` + +激活引用分组和折叠。允许的值为: + +- "citation-number" - 当使用数字样式的时候,折叠引用数字的范围(通过`"citation-number"`变量来渲染) ,例如:"[1, 2, 3, 5]" 变为 "[1–3, 5]"。只有升序的引用才可以折叠,比如: "[3, 2, 1]" 将不会折叠。 +- "year" - 通过压缩相同的名字来折叠引用分组,例如: "(Doe 2000, Doe 2001)" 变为 "(Doe 2000, 2001)"。 +- "year-suffix" - 对名字相同的折叠项,折叠相同的年份,例如: "(Doe 2000a, 2000b)"变为"(Doe 2000a, b)"。 +- "year-suffix-ranged" - 对名字相同的折叠项,折叠年份范围,例如: "(Doe 2000a, b, c, e)"变为"(Doe 2000a–c,e)"。 + +当`disambiguate-add-year-suffix`设置为`"false"`时,或者引用中包含位置(例如:“(Doe 2000a-c, 2000d, p. 5, 2000e,f)”,"Doe 2000d"有一个页码位置),"year-suffix"和"year-suffix-ranged"回退到"year"。 + +`year-suffix-delimiter` + +​ 设置年份后缀的分隔符。默认在`cs:citation`元素的`cs:layout`中设置。例如:当`collapse`设置为`"year-suffix"`,`cs:citation`中的`cs:layout`的`delimiter`元素设置为`";"`,并且`year-suffix-delimiter`设置为`","`时,渲染结果将类似于 "(Doe 1999a,b; Jones 2000)"。 + +`after-collapse-delimiter` + +​ 设置折叠后的引用组要使用的分隔符。默认在`cs:citation`元素的`cs:layout`中设置。例如:当`collapse`设置为`"year"`,`cs:citation`中的`cs:layout`的`delimiter`元素设置为`","`,并且`after-collapse-delimiter`设置为`";"`时,渲染结果将类似于 "(Doe 1999, 2001; Jones 2000, Brown 2001)"。 + +##### 标注距离 + +`near-note-distance` + +当有一个预先的标注时,`"near-note"`位置是我引用被判断为真,这种预先的标注可以为 a) 指向同一个项目 b) 当前注视以前的脚注或尾注。(译注:不知道讲了什么) + +#### 参考文献目录选项 + +##### 空白 + +`hanging-indent` + +​ 如果设置为 `"true"`(默认为`"false"`),参考文献列表将采用悬挂缩进渲染。 + +`second-field-align` + +​ 如果该属性被设置,则书目条目的后续行沿第二字段对齐。 使用"flush"时,第一个字段与边距齐平。 对于"margin",第一个字段放在margin中,随后的行与margin对齐。例如,当第一个字段设置为`` + +``` +9. Adams, D. (2002). The Ultimate Hitchhiker's Guide to the + Galaxy (1st ed.). +10. Asimov, I. (1951). Foundation. +``` + +`line-spacing` + +​ 指定垂直方向的行距。默认值为`"1"`,即单倍行距。可以被设置为任意正整数,用来表示对应倍数的行距。 + +`entry-spacing` + +​ 指定不同条目垂直方向的距离,默认值为`"1"`,即一倍距离,可以被设置为任意正整数,用来表示对应倍数的距离。 + +##### 参考文献分组 + +`subsequent-author-substitute` + +​ 如果该属性被设置,则此属性将用上一条条目中的名称替换参考文献条目中的名字。具体的代替方案取决于`subsequent-author-substitute-rule`属性的值。替换仅限于`cs:names`元素中渲染的第一个名字。 + +`subsequent-author-substitute-rule` + +​ 用来指定`subsequent-author-substitute`的结果怎么替换。允许的值为: + +- "complete-all" - 默认值,当名字变量中的所有渲染的名字和上一个参考文献条目相同时,`subsequent-author-substitute` 属性的值将代替整个名字列表(包括标点和术语,比如 et-al 和 and 等术语),但`cs:names`元素中设置的后缀将不会被代替。 +- "complete-each" - 和"complete-all"一样,需要完整的匹配,但是`subsequent-author-substitute` 属性的值将会代替所有被渲染的名字。 +- "partial-each" - 当有一个或者多个名字变量中的渲染名字和上一个条目中相同时,使用`subsequent-author-substitute` 属性代替对应的值。匹配从第一个名字开始,直到不匹配的名字为止。 +- "partial-first" - 和"partial-each"相同,但是替换仅限于第一个名字。 + +对下面的例子: + +```xml +Doe. 1999. +Doe. 2000. +Doe, Johnson & Williams. 2001. +Doe & Smith. 2002. +Doe, Stevens & Miller. 2003. +Doe, Stevens & Miller. 2004. +Doe, Williams et al. 2005. +Doe, Williams et al. 2006. +``` + +当`subsequent-author-substitute`设置为`"-"`,并且`subsequent-author-substitute-rule`设置为`"complete-all"`,渲染结果将变为: + +```xml +Doe. 1999. +---. 2000. +Doe, Johnson & Williams. 2001. +Doe & Smith. 2002. +Doe, Stevens & Miller. 2003. +---. 2004. +Doe, Williams et al. 2005. +---. 2005. +``` + +当`subsequent-author-substitute-rule`设置为`"complete-each"`时,渲染的结果为: + +```xml +Doe. 1999. +---. 2000. +Doe, Johnson & Williams. 2001. +Doe & Smith. 2002. +Doe, Stevens & Miller. 2003. +---, --- & ---. 2004. +Doe, Williams et al. 2005. +---, --- et al. 2006. +``` + +当`subsequent-author-substitute-rule`设置为`"partial-each"`时,渲染的结果为: + +```xml +Doe. 1999. +---. 2000. +Doe, Johnson & Williams. 2001. +--- & Smith. 2002. +Doe, Stevens & Miller. 2003. +---, --- & ---. 2004. +Doe, Williams et al. 2005. +---, --- et al. 2005. +``` + +当`subsequent-author-substitute-rule`设置为`"partial-first"`时,渲染的结果为: + +```xml +Doe. 1999. +---. 2000. +Doe, Johnson & Williams. 2001. +--- & Smith. 2002. +Doe, Stevens & Miller. 2003. +---, Stevens & Miller. 2004. +Doe, Williams et al. 2005. +---, Williams et al. 2005. +``` + + + +#### 全局选项 + +**人名中的连字符** + +`initialize-with-hyphen` + +​ 该属性用来制定合成名字中间是不是使用连字符。例如,`"Jean-Luc"`是一个合成名字,如果该属性设置为`"true"`(默认),渲染结果为`"J.-L."`,如果设置为`"false"`,渲染结果为`"J.L."`。 + +**页码范围** + +`page-range-format` + +​ 用来设置页码范围的格式,是不是使用简写来压缩。其可选的值有:`"chicago"` ("321–28"), `"expanded"` ( "321–328"), `"minimal"` ("321–8"), 或者`" minimal-two"` ("321–28")。每一组值前面表示可选的属性值,后面是渲染结果的例子。也可见[附录V 页码范围格式](#附录V 页码范围格式)。使用`page-range-delimiter`属性可以用来设置页面范围分割的符号,该属性在 CSL 1.0.1 中引入,默认是一个破折号。如果改属性没有设置,就默认使用破折号。 + +**Name Particles** + +​ 西方人的名字中经常包括一个或者多个小部分,例如,`"de"`在荷兰人的名字中`"W. de Koning"`。在仅显示姓氏时,这些小部分可以分为必须保留和可删除(或译为不可省略和可省略)两种类型:这两种类型分别称为`non-dropping`部分和`dropping`部分。一个单个的名字可以同时包括这两种类型(不能删除的类型始终位于可删除类型的后面)。例如,`"W. de Koning"`和法国名字`"Jean de la Fontaine"`可以被解构为: + +```json +{ + "author": [ + { + "given": "W.", + "non-dropping-particle": "de", + "family": "Koning" + }, + { + "given": "Jean", + "dropping-particle": "de", + "non-dropping-particle": "La", + "family": "Fontaine" + } + ] +} +``` + +在仅显示姓氏的时候,只保留不能删除的部分,`"De koning"`和`"La Fontaine"`。 + +在名字倒写的情况下,即姓氏在名字之前,在姓氏后面始终添加`dropping particle`,但是`non-dropping`部分可以前置(例如,`"de Koning, W."`)或者后置(`Koning, W. de`)。在名字倒写,不可省略粒子前置时,可以使用下面的方式对名字进行排序:排序A:将不可省略粒子和姓一起保留作为主排序键值的一部分;排序B:通过将不可省略粒子和姓分开,并使其成为二级排序键值,并加入可省略粒子(如果有): + +**Sort order A: 不可省略粒子不降级** + +- 主排序键值 "La Fontaine" +- 次排序键值 "de" +- 第三排序键值: "Jean" + +**Sort order B: 不可省略粒子降级** + +- 主排序键值 "Fontaine" +- 次排序键值 "de La" +- 第三排序键值 "Jean" + +对不可省略粒子的设置可以使用`demote-non-dropping-particle`选项: + +`demote-non-dropping-particle` + +​ 用来设置在倒写的名字中不可省略粒子的显示和排序方式(例如 Koning W. de)。可设置的值为: + +- "never": 不可省略粒子被作为姓中的一部分对待,并附加可省略粒子("de Koning, W." "La Fontaine, Jean de")。不可省略粒子作为主排序键值的一部分(排序A,例如. "de Koning, W." 将出现在首字母 "D"的区域). +- "sort-only": 显示的方式和 "never" 相同,但是不可省略粒子降级作为二级排序键值。(排序B, "de Koning, W."出现在首字母"K"的区域). +- "display-and-sort" (默认),可省略粒子和不可省略粒子在最后( "Koning, W. de" 和 "Fontaine, Jean de La")。对名字排序,所有的粒子都是二级排序键值的一部分。(排序B,"Koning, W. de" 出现在首字母"K"的区域). + +某些名字中包含的粒子禁止被降级。在这些情况中,粒子将和姓合并到一起,比如,对于法国名字 Charles de Gaulle + +```json +{ + "author": [ + { + "family": "de Gaulle", + "given": "Charles" + } + ] +} +``` + + + +#### 可继承的名称选项 + +​ `cs:names`和`cs:name`元素的属性也可以在`cs:style`、`cs:citation`和`cs:bibliography`元素中设置。这样就不需要每次在`cs:names`和`cs:name`出现的时候赋值。 + +​ 可以在`cs:name`元素中继承的属性有 `and`, `delimiter-precedes-et-al`, `delimiter-precedes-last`, `et-al-min`, `et-al-use-first`, `et-al-use-last`, `et-al-subsequent-min`, `et-al-subsequent-use-first`, `initialize`, `initialize-with`, `name-as-sort-order` 和 `sort-separator`。`name-form`属性和`name-delimiter`属性对英语`cs:name`元素中的`form`和`delimiter`属性。同样地,`names-delimiter`属性对应`cs:names`元素中的`delimiter`属性。 + +​ 当一个可继承的名称属性在`cs:style`,`cs:citation`和`cs:bibliography`中设置时,其值将作用于改元素包含的所有的`cs:names`元素。如果一个属性在多个可继承的层次设置,最底层的值发挥作用。 + +#### 局部选项 + +`limit-day-ordinals-to-day-1` + +​ 日期格式在`cs:date`和`cs:date-part`元素中定义。默认地,当`cs:date-part`元素中的`name`设置为`"day"`,`form`属性设置为`"ordinal"`时,所有的天(1到31)将会以序数形式渲染,例如:"January 1st","January 2nd"等等。通过将`limit-day-ordinals-to-day-1`属性设置为`"true"`(默认值为`"false"`),序数格式将仅限于每个月的第一天,其他的天将不使用序数格式。这在某些语言中出现,比如法语,"1er janvier","2 janvier","3 janvier"。 + +`punctuation-in-quote` + +​ 当`cs:text`元素渲染时,如果`quotes`属性设置为`"true"`(见[格式化](#格式化)),并且在输出后有逗号或者句号,`punctuation-in-quote`属性可以控制标点放在括号的内还是外,`"false"`为外(默认),`"true"`为内。 + +### 排序 *** + +​ `cs:citation`和`cs:bibliography`元素可以在`cs:layout`元素之前携带一个`cs:sort`子元素,来实现对引文或者参考文献条目的排序。在缺失`cs:sort`元素时,引文和文献条目将会使用他们在文章中出现的顺序来排序。 + +​ `cs:sort`元素必须包含一个或者多个`cs:key`子元素,可以在该元素中设置变量([附录 IV 变量](#附录 IV 变量))或者宏名来实现排序。对于每个`cs:key`元素,排序的顺序可以通过设置`sort`属性来设置为升序(`"ascending"`,默认)或者降序(`"descending"`)。属性`names-min`,`names-use-first`,`names-use-last`可以用来覆盖`et-al-min`/`et-al-subsequent-min`, `et-al-use-first`/`et-al-subsequent-use-first` 和 `et-al-use-last` 属性的值,并且可以通过`cs:key`影响所有的名字. + +​ 排序的键值是按顺序求值的,也就是说:首先,使用第一个排序键值对所有的项目进行排序。然后使用第二个键值对第一个键值排序后的结果进行排序,直到所有的键值都完成排序为止。如果键值为空,就放到最后。 + +​ 这里给出一个例子:其中首先引用`"author"`宏进行排序,并且使用`et al.`来对较长的作者序列进行代替。然后,使用`"issued"`变量来进行第二次排序,使用降序: + +```xml + + + + + + + + + +``` + +​ 变量或者宏的排序键值可以与`"normal"`渲染的输出不同,具体要依赖下面的细节: + +#### 排序变量 + +​ `cs:key`元素通过`variable`变量属性调用变量的排序键值。名称变量、日期变量和数字变量除外: + +**名称**: [名字变量](#名字变量)通过变量属性被调用,例如 ``,当`form`属性设置为`"long"`,`name-as-sort-order`属性设置为`"all"`,返回名字列表字符串。 + +**日期**:[日期变量](#日期变量)通过`variable`属性被调用,返回 `YYYYMMDD`格式。使用0代替缺失的日期部分,例如:`December 2000`渲染为`20001200`。因此,简略的日期在升序排列的时候更加靠前,例如:2000, May 2000, May 1st 2000。负数的年份(即公元前)将被反向排序,比如:100BC, 50BC, 50AD, 100AD。排序过程中,季节将被忽略,因为南北半球的季节顺序不同。在日期范围中,开始的日期用于主要排序,结束日期用于次要排序,例如:2000–2001, 2000–2005, 2002–2003, 2002–2009。在具有相同的开始日期时,日期范围将放在单独的日期后,例如:2000, 2000–2002。 + +**数字**:[数字变量](#数字变量)通过`variable`属性来调用,返回整数(`form`设置为`"numeric"`)如果原始的变量值仅由非数字文本组成,则将该值作为文本字符串返回。 + +#### 排序宏 + +​ 变量排序的键值是由字符串值组成,没有富文本标记。通过宏属性中的键值`cs:key`来调用。下面为一些特殊情况。 + +​ 对于名字排序,使用相同的宏而不是直接使用名字变量来渲染和排序有4个好处。第一,可以使用替换,例如:可以使用`"editor"`变量代替空的`"author"`变量。第二,可以使用 et-al 缩写,在宏里使用 `et-al-min`/`et-al-subsequent-min`, `et-al-use-first`/`et-al-subsequent-use-first`和 `et-al-use-last` 可选属性,或者覆盖 `cs:key`元素中的`names-min`, `names-use-first` 和 `names-use-last` 。当 et-al 缩写出现的时候,`"et-al"`和`"and others"`术语不会包括在排序键值中。第三,名字可以只使用姓来排序,即使用宏,其中的`cs:name`扽`form`属性设置为`"short"`。最后,通过调用宏,将`cs:name`中的`form`属性设置为`"count"`,可以按姓名列表中姓名的数目进行排序。至于使用`variable`属性对姓名进行排序,将`cs:name`中的`name-as-sort-order`属性设置为`"all"`,返回值为排序后的名称列表。 + +​ 在宏中带有`cs:number`的[数字变量](#数字变量)的和日期变量的渲染方法和通过变量的调用相同。唯一的区别是:如果通过`variable`属性调用日期变量,将返回完整的日期。相反地,宏调用则只返回原本要渲染的日期部分。例如: + +### 范围分隔符 + +​ "citation-number"和"year-suffix"变量的折叠范围以短划线分隔,例如"(1-3,5)"和"(Doe 2000a-c,e)"。 + +​ "locator" 变量总是使用一个短划线代替任意的连字符。 对 "page" 变量来说,只有`cs:style`中的`page-ran ge-format`属性被设置时,替换才会执行(见[页码范围](#页码范围))。 + +### 格式化 + +​ 下面的属性可以在`cs:date`, `cs:date-part`, `cs:et-al`, `cs:group`, `cs:label`, `cs:layout`, `cs:name`, `cs:name-part`, `cs:names`, `cs:number` 和 `cs:text`中设置: + +`font-style` + +用来设置字体,可能的值为: + +- "normal" 默认 +- "italic" 设置文字的斜体 +- "oblique" 设置没有斜体的文字倾斜 + +`font-variant` + +Allows for the use of small capitals, 值可以设置为: + +- "normal" 默认 +- "small-caps" + +`font-weight` + +设置字宽,值可以为: + +- "normal" 默认 +- "bold" +- "light" + +`text-decoration` + +设置下划线,值可以为: + +- "none" 默认 +- "underline" + +`vertical-align` + +设置垂直对齐,值可以为: + +- "baseline" 默认 +- "sup" 上标 +- "sub" 下标 + +### 词缀 + +​ 前缀属性`prefix`和后缀属性`suffix`可以在`cs:date`(使用`cs:date`定义本地化格式除外),`cs:date-part`(`cs:date`调用本地化格式除外)、`cs:group`、`cs:label`、`cs:layout`、`cs:name`、`cs:names`、`cs:number`以及`cs:text`中设置。属性值用来在输出的前面或者后面添加东西,但是只有输出的时候才会渲染。除在`cs:layout`中设置外,词缀将出现在同一个元素的[格式化](#格式化)、[引用](#引用)、[strip-periods](#strip-periods)和[text-case](#text-case)的影响范围的外面,也就是这些属性的设置对前缀和后缀没有影响。作为一种解决方法,在父元素`cs:group`中设置上述属性,会产生影响。 + +### 分隔符\delimiter + +​ `delimiter`属性可以在`cs:date`(用来分隔日期的各部分,如年和月;在`cs:date`调用本地化格日期格式时,分隔符将被禁用)、`cs:name`(分隔名字变量中不同的名字列表)、`cs:name`(分隔名字列表中的名字)、`cs:group`以及`cs;layout`(分隔子元素的输出)中设置分隔符。 + +### 显示\display + +`display`属性可用于将各个参考文献条目构成一个或者多个文本块。如果使用该属性,所有的渲染元素都在该属性的控制下。(译注:是用来设置对齐效果的)属性可能的值为: + +- "block" - 两边对其 +- "left-margin" - 左对齐。 +- "right-inline" - 右对齐 +- "indent" - 缩进。 + +**例** + +A. 除使用`second-field-align`外,使用`"left-margin"`和`"roght-inline"`可以实现相同的渲染效果。这种操作方式潜在的好处是,可以在最终的输出中进一步控制块的格式,例如,在HTML 的 CSS 或者 word 的样式中。 + +```xml + + + + + + + + +``` + + + +B. 每个作者的出版物列表。当`subsequent-author-substitute`设置为空字符串时,具有相同作者的条目的作者名字只渲染一次。 + +```xml + + + + + + + + + + + + + + + + + + + +``` + +渲染结果将类似下面: + +| Author1 | | +| ----------------- | ------------------ | +| year-publication1 | title-publication1 | +| year-publication2 | title-publication2 | +| Author2 | | +| year-publication3 | title-publication3 | +| year-publication4 | title-publication4 | + +C. 带有注释的条目,注释显示在参下方的缩进块中。 + +```xml + + + + + + + + +``` + + + +### 引用\quotes + +​ `quotes`属性可以在`cs:text`中设置。当设置为`"true"`时(默认为`"false"`),渲染文本将会被包含在引用中。本地化的`punctuation-in-quote`选项控制用来连接的逗号或者句号是出现在引号的内部还是外部(默认外部),见[Locale options](#Locale options)。 + +### Strip-periods + +​ `strip-periods`属性可以在`cs:label`或者`cd:text`中设置,此外,当`name`被设置为`"month"`时,也可以在`cs:date-part`中设置。当该属性被设置为`true`的时候(默认的是`"false"`),所有文本中的句号(英文中为点)将会被删除。 + +### 文字大小写 + +​ `text-case` 属性可以在`cs:date`,`cs:date-part`,`cs:label`,`cs:name-part`,`cs:number`和`cs:text`中设置,可设置的值为: + +- "lowercase": 使用小写字母渲染文本 +- "uppercase": 使用大写字母渲染文本 +- "capitalize-first": 如果第一个词是小写的,将首字母设置为大写 +- "capitalize-all": 将每个小写词的首字母设置为大写 +- "sentence": renders text in sentence case(以句子的格式设置?) +- "title": renders text in title case(以标题的格式来设置?) + +#### 句子大小写转换 + +句子大小写转换(在"Text-case"中设置为"sentence"), + +1. 对于大写字符串,字符串的第一个字符保持为大写。其它字母表示为小写 +2. 对于大小写混合的字符串,如果单词是小写,第一个单词的首字符大写,其它所有单词的大小写保持不变。 + +CSL 处理器不能识别专有名词。因此,可以将句子大小写的字符转缺的转换为标题大小写,反之亦然。因此,通常最好在句子大小写的情况下存储注入标题之类的字符串,并且仅在样式需要其它大小写的情况下菜使用文本大小写。 + +#### 标题大小写转换 + +标题大小写转换(在"Text-case"中设置为"title")对英语来说: + +1. 对大写的字符串,每个单词的第一个字母保持大写,其它的字母保持小写。 +2. 对于小写或者是混合的字符串,每个小写字符串的首字母大写。大写的字符串或者是混合的字符串保持原样。 + +两种情况下,`stop words`必须是小写的,除非他们是第一个或者对后一个单词,或者跟在冒号后面。`stop words`包括:` "a", "an", "and", "as", "at", "but", "by", "down", "for", "from", "in", "into", "nor", "of", "on", "onto", "or", "over", "so", "the", "till", "to", "up", "via", "with", "yet"`. + +**非英语项目** + +​ 由于许多语言不使用标题大小写,标题大小写转换(在"Text-case"中设置为"title")仅影响英语项目。 + +​ 如果`cs:style`中的`default-locale`属性没有设置,或者设置为`en`开头的单词,则假定为英语环境。如果某项的元数据包含一个语言字段,而且该字段不是以`"en"`开头的,才被视为是非英语环境。 + +​ 同样的,`default-locale`被这是为除`en`开头的字段,就假定为非英语。如果项目是以`en`开头的字段,就被视为是英语。 + +## 附录I 学科分类 + +- anthropology 人类学 +- astronomy 天文学 +- biology 生物学 +- botany 植物学 +- chemistry 化学 +- communications 通讯 +- engineering 工程学 +- generic-base - used for generic styles like Harvard and APA 通用基础-用于通用样式,像哈弗和`APA` +- geography 地理学 +- geology 地质学 +- history 历史 +- humanities 人文学科 +- law 法学 +- linguistics 语言学 +- literature 文学 +- math 数学 +- medicine 药物学 +- philosophy 哲学 +- physics 物理学 +- political_science 政治科学 +- psychology 心理学 +- science 科学 +- social_science 社会科学 +- sociology 社会学 +- theology 神学 +- zoology 动物学 + +## 附录II 术语 + +术语在本地化文件中使用 + +### Locators/用来定位的术语 + +- book 书 +- chapter 章 +- column +- figure 图 +- folio 作品集 +- issue 议题/问题 +- line 行 +- note 笔记/注记 +- opus 作品(音乐作品) +- page 页 +- paragraph 段 +- part 部分 +- section 节 +- sub verbo 词条 +- verse 诗 +- volume 卷 + +### Months/月 + +- month-01 +- month-02 +- month-03 +- month-04 +- month-05 +- month-06 +- month-07 +- month-08 +- month-09 +- month-10 +- month-11 +- month-12 + +### Ordinals/序数 + +- ordinal +- ordinal-00 through ordinal-99 +- long-ordinal-01 +- long-ordinal-02 +- long-ordinal-03 +- long-ordinal-04 +- long-ordinal-05 +- long-ordinal-06 +- long-ordinal-07 +- long-ordinal-08 +- long-ordinal-09 +- long-ordinal-10 + +### Quotation marks/引号 + +- open-quote +- close-quote +- open-inner-quote +- close-inner-quote + +### Roles/角色 + +- author 作者 +- collection-editor 文集编辑 +- composer 作曲者 +- container-author 文章作者 +- director 主任/导演 +- editor 编辑 +- editorial-director 编辑部主任 +- editortranslator +- illustrator 插画者 +- interviewer 采访者 +- original-author 原作者 +- recipient 收件人 +- reviewed-author 复查作者 +- translator 译者 + +### Seasons/季节 + +- season-01 +- season-02 +- season-03 +- season-04 + +### Miscellaneous/其他 + +- accessed +- ad +- and +- and others +- anonymous +- at +- available at +- bc +- by +- circa +- cited +- edition +- et-al +- forthcoming +- from +- ibid +- in +- in press +- internet +- interview +- letter +- no date +- online +- presented at +- reference +- retrieved +- scale +- version + +## 附录III 文献类型 + +- article 文章 +- article-magazine 杂志文章 +- article-newspaper 新闻文章 +- article-journal 期刊文章 +- bill +- book 书 +- broadcast +- chapter 章节 +- dataset 数据集 +- entry +- entry-dictionary +- entry-encyclopedia +- figure 图 +- graphic +- interview 采访 +- legislation +- legal_case +- manuscript +- map 地图 +- motion_picture +- musical_score +- pamphlet +- paper-conference +- patent +- post 海报 +- post-weblog +- personal_communication 私人交流 +- report 报告 +- review +- review-book +- song 歌曲 +- speech 演讲 +- thesis 学位论文 +- treaty +- webpage 网页 + +## 附录IV 变量 + +### 标准变量 + +- abstract 项目的摘要(例:期刊文章的摘要) + +- annote 读者关于项目内容的笔记 + +- archive 保存项目的存档 + +- archive_location 存档的位置 + +- archive-place 存档的地理位置 + +- authority + +- call-number + + call number (to locate the item in a library) + +- citation-label + + label identifying the item in in-text citations of label styles (e.g. "Ferr78"). May be assigned by the CSL processor based on item metadata. + +- citation-number + + index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor) + +- collection-title + + title of the collection holding the item (e.g. the series title for a book) + +- container-title + + title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article) + +- container-title-short + + short/abbreviated form of "container-title" (also accessible through the "short" form of the "container-title" variable) + +- dimensions + + physical (e.g. size) or temporal (e.g. running time) dimensions of the item + +- DOI + + Digital Object Identifier (e.g. "10.1128/AEM.02591-07") + +- event + + name of the related event (e.g. the conference name when citing a conference paper) + +- event-place + + geographic location of the related event (e.g. "Amsterdam, the Netherlands") + +- first-reference-note-number + + number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes. + +- genre + + class, type or genre of the item (e.g. "adventure" for an adventure movie, "PhD dissertation" for a PhD thesis) + +- ISBN + + International Standard Book Number + +- ISSN + + International Standard Serial Number + +- jurisdiction + + geographic scope of relevance (e.g. "US" for a US patent) + +- keyword 关键字 + +- locator + + a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the [Locators](https://docs.citationstyles.org/en/stable/specification.html#locators) term list), which determines which term is rendered by `cs:label` when the "locator" variable is selected. + +- medium + + medium description (e.g. "CD", "DVD", etc.) + +- note + + (short) inline note giving additional item details (e.g. a concise summary or commentary) + +- original-publisher + + original publisher, for items that have been republished by a different publisher + +- original-publisher-place + + geographic location of the original publisher (e.g. "London, UK") + +- original-title 最初版本的题目 + +- page 项目的页码范围 + +- page-first 页码范围的第一个页码 + +- PMCID + + PubMed Central reference number + +- PMID + + PubMed reference number + +- publisher 出版商/出版社 + +- publisher-place 出版社的地理位置 + +- references + + resources related to the procedural history of a legal case + +- reviewed-title + + title of the item reviewed by the current item + +- scale + + scale of e.g. a map + +- section + + container section holding the item (e.g. "politics" for a newspaper article) + +- source + + from whence the item originates (e.g. a library catalog or database) + +- status + + (publication) status of the item (e.g. "forthcoming") + +- title + + primary title of the item + +- title-short + + short/abbreviated form of "title" (also accessible through the "short" form of the "title" variable) + +- URL 链接 + +- version 版本 + +- year-suffix + + disambiguating year suffix in author-date styles (e.g. "a" in "Doe, 1999a") + +### 数据变量 + +Number variables are a subset of the [Standard Variables](https://docs.citationstyles.org/en/stable/specification.html#standard-variables). + +- chapter-number + + 章序号 + +- collection-number + + number identifying the collection holding the item (e.g. the series number for a book) + +- edition + + 版本序号(注意和version的区别) + +- issue + + (container) issue holding the item (e.g. "5" when citing a journal article from journal volume 2, issue 5) + +- number + + number identifying the item (e.g. a report number) + +- number-of-pages + + 引用项目的总的页数 + +- number-of-volumes + + total number of volumes, usable for citing multi-volume books and such + +- volume + + (container) volume holding the item (e.g. "2" when citing a chapter from book volume 2) + +### 日期变量 + +- accessed + + date the item has been accessed + +- container + + ? + +- event-date + + date the related event took place + +- issued + + date the item was issued/published + +- original-date + + (issue) date of the original version + +- submitted + + date the item (e.g. a manuscript) has been submitted for publication + +### 名字变量 + +- author + +- collection-editor + + editor of the collection holding the item (e.g. the series editor for a book) + +- composer + + composer (e.g. of a musical score) + +- container-author + + author of the container holding the item (e.g. the book author for a book chapter) + +- director + + director (e.g. of a film) + +- editor + +- editorial-director + + managing editor ("Directeur de la Publication" in French) + +- illustrator + + illustrator (e.g. of a children’s book) + +- interviewer + + interviewer (e.g. of an interview) + +- original-author + +- recipient + + recipient (e.g. of a letter) + +- reviewed-author + + author of the item reviewed by the current item + +- translator + + +## 附录V 页码范围格式 + +`cs:style`元素中的`page-range-format`表示了页码的缩写规则,其取值可能是: + +`"chicago"` + +| 第一个数字 | 第二个数字 | 例 | +| ------------------------------------ | ---------------------------------------------- | ------------------------------------ | +| 小于100 | 使用所有的位数 | 3–10; 71–72 | +| 100或者100的整数 | 使用所有的位数 | 100–104; 600–613; 1100–1123 | +| 100到109 (包括对应100的倍数的范围) | 仅使用有变化的部分,忽略不需要的0 | 107–8; 505–17; 1002–6 | +| 110到199 (包括对应100的倍数的范围) | 根据需要使用两位数或者更多 | 321–25; 415–532; 11564–68; 13792–803 | +| 4位数 | 如果数字是4位并且其中有3位不同,使用所有的位数 | 1496–1504; 2787–2816 | + +`"expanded"` + +​ 扩展模式,不适用缩写。eg. 42–45、321–328、2787–2816 + +`"minimal"` + +​ 第二个数字中重复的所有数字都被省略:42–5,321–8,2787–816 + +`"minimal-two"` + +​ 和`"minimal"`类似,但当第二个数字有两个或者两个以上的数字时,第二个数字至少保留两位。 + diff --git a/contents/CSL_introduce.md b/contents/CSL_introduce.md new file mode 100644 index 0000000..7c140a0 --- /dev/null +++ b/contents/CSL_introduce.md @@ -0,0 +1,511 @@ +# CSL 介绍 + +## 前言 + + CSL 是一种基于 XML 的开放(开源)语言,用来描述引用和参考文献的格式。对 CSL 更加技术和详细的描述见 @sco:local_introduce。 + +## CSL 是什么 + +如果你写过论文的话,你可能在其中引用了别人的论文。参考文献在学术交流中很重要,因为它可以提供引用的来源,并且可以把已经发表的研究联系到一起。但是,手动设置引用格式和参考文献目录非常耗时,而且不同的期刊有自己的引用格式。 + +参考文献管理软件可以解决上面的问题。像`Zotero、Mendeley、Papers`等软件不仅能帮助你管理参考文献,而且可以自动地生成引用的参考文献目录。为了设置特定的引用格式,这些软件需要能识别的对引用格式的描述,这种描述就是`Citation Style Language(CSL)`。 + +## 引用格式 + +引用格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是`(GB/T 7714-2015)`。大多数的引用格式都属于几个基本类别,如下: + +### In-text Styles + +引用格式可以分为两个主要的类型。第一种就是`in-text styles`,正文中的引用直接指向参考文献目录中的一个或者多个条目。`in-text styles`还可以细分为`author-date,author,numeric`和`label`格式。 + +在 CSL 中,每个单独的`pointer`称为一个引用。例如,引文`“(Doe et al. 2002, Smith 1997)”`包含两个引用:一个是`Doe et al.`在2002年发表的文献,另外一个是`Smith`1997年发表的文献。 + +#### “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`指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。 + +![]() + +### 独立格式和从属格式 + + 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 + +你可以使用一种独立的 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 + +因此,使用 `CSL locale files` ,可以编写与语言无关的 CSL 样式。如上面展示的,这样的格式可以轻易的在不同的语言中转换。但是语言是很复杂的,`CSL automatic localization`并不能支持所有的语言特色。但是,语言无关的样式仍然是有意义的,如果你要自己修改 CSL 样式来适应自己选择的语言环境,参考这些语言无关的样式将更容易实现。 + +`Locale file` 还有一个好处,那就是,我们只需要为每种语言定义一次通用的翻译,日期格式和语法。这样可以保证样式紧凑,并使`locale file`更容易维护。由于给定语言的引用格式并不是一直和`locale file`中定义的转换格式一致,因此,我们也可以自己选择性的重写任何在`locale file`中定义的项目。下面独立格式解析中的`locale`元素就是为实现这一功能设置的。 + +### Item Metadata + +接下来就是引用中需要的参考文献条目的细节:条目元数据。 + +例如:一篇期刊文章可能需要作者的名字,发表的年份,文章题目,期刊名称,卷和期,出现的页码范围以及`DOI`(数字文献唯一标识),所有这些信息都有助于读者识别和查找这篇文章。 + +参考文献管理软件可以轻松的创建文献的这些细节信息。但是,很多参考文献管理软件都有自己的格式来存储这些元素据,大多数都支持通用的`bibliographic exchange formats`,比如`BixTex`和`RIS`。` citeproc-js `CSL 处理器引入了一种基于`JSON`的格式,用于以`citeproc-js`可以理解的方式来存储元数据。其他的一些 CSL 处理器后来采用了这种`“CSL JSON”`格式(也称为`“citeproc JSON”`)。 + +译者注:这里讲的似乎有些繁琐。总的来说,是我们需要每篇文章的作者,题目,发表期刊等信息来生成对应的条目。文献管理软件可以很方便的提供这些信息。至于其内部存储的方式,使用的时候并不需要关心,类似`Zotero`的文献管理软件会自动使用这些信息和 CSL 生成引用信息。 + +### 引用细节 + +对于给定的引用格式,引文和条目的展示不仅取决于被引用项的元数据,还取决于这些项被引用的上下文。我们将这类特定于上下文的信息称为引用细节。 + +例如:引用时对条目的排序会影响他们在参考文献中的位置(在下面独立格式的`citation`和`bibliography`章节中提到)。 + +### CSL 处理器 + +有了 CSL 样式,`locale file`,元数据和引用细节,我们现在需要一个软件来解析这些信息,并以正确的格式生成引用和参考文献条目。用来完成这些功能的软件就是 CSL 处理器。 + +大多数的参考文献管理软件使用的是免费开源的 CSL 处理器,比如:`citeproc-js`。 + +## 理解 CSL 格式 + +到现在为止,我们已经知道什么是 CSL 、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。`XML基础.md` 文件中简单介绍了 XML ,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML ,可以在网上查找 XML 教程。 + +### 从属格式解析 + +下面是一个 CSL 从属格式文件: + +```xml + + +``` + +如`XML基础.md`文件中的描述:一行给出了 XML 的声明。根元素为`style`,其中包含了一个子元素`info`。`info`元素中又包含了很多元素,其中很多元素都有内容和属性。`xmlns、version` 和`defaults-locale`都是元素`style`的属性,分别指定了??、版本和使用的语言,这里为美国英语。 + +大多数从属格式都是电子表格自动生成的,下面的注释也给出了指向电子表格的联接。 + +```xml + +``` + +元素`info`里包含了大多数`style`的元数据,比如: + +`style`的题目(也是期刊的题目): + +```xml +Applied and Environmental Microbiology +``` + +样式的ID,是文献管理软件用来区分不同`style`的标志: + +```xml +http://www.zotero.org/styles/applied-and-environmental-microbiology +``` + +`style`自己的链接。该链接指向了网上的副本。 + +```xml + +``` + +从属格式需要指定它的父格式,父格式为独立格式。这里的父格式为 `American Society for Microbiology` + +```xml + +``` + +为了更好的维护格式,因此需要指定格式的文档链接。这里文档的链接转到了期刊的主页。 + +```xml + +``` + +为了便于分类,还可以在`category`元素中设置它的属性。这里分别设置了引用格式为`numeric`,领域为`biology`。 + +```xml + + +``` + +当期刊创建格式的时候,可以在`issn`元素和`eissn`元素中保存其打印标准国际连续出版物号`(ISSN)`和其电子版本`(ESSIN)`。 + +```xml +0099-2240 +1098-5336 +``` + +`updated`元素保存了最后一次更新的时间戳: + +```xml +2014-04-30T03:45:36+00:00 +``` + +`rights`元素中保存了该CSL格式的证书: + +```xml +This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License +``` + +### 独立格式解析 + +下面是一个独立格式的实例,实例中定义了引用格式,所以要比从属格式要大一些。这里的示例只是一个简化的例子,实际的格式比这个还要大很多。但这个简化的例子仍然是完整有效的。 + +```xml + + +``` + +#### 结构 + +首先看一下根元素`style`的子元素。 + +```xml + + +``` + +相比于从属格式只有`info`一个子元素,独立格式的根元素有除了`info·`以外,还有`locale 、 macro 、citation、bibliography`四个子元素。 + +这些子元素的作用分别是: + +- `info` 该元素在独立格式中的作用和从属格式中相同,都是用来保存基本的格式元数据。 + +- `locale` 该元素可以用来从`locale file`中重写 `locale data` +- `macro` 用来存储 CSL 代码,这些代码可能应用在 `citation 、bibliography `或者其他的 `macro` 元素中。 +- `citation` 定义文中引用的格式。 +- `bibliography` 定义参考文献目录的格式。 + +以下从`style`根元素开始分析。 + +#### 根元素/style元素 + +```xml + +``` + +在从属格式中我们已经了解了`xmlns`和`version`属性,`class`是新的属性,用来告诉`CSL processor`(CSL处理器)使用的引用格式是什么。 + +#### info元素 + +独立格式的元数据通常比从属格式的元数据更加全面: + +```xml + + Example Style + http://www.zotero.org/styles/example + + + + + John Doe + JohnDoe@example.com + + + Jane Doe + + + Bill Johnson + + + + 2014-10-15T18:17:09+00:00 + This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License + +``` + +`title、style ID、"self" link、categories、time stamp、license `和从属格式作用都是相同的,但有些许差别。首先,独立格式不依赖父格式,通常是提供一个`template(模板)`链接,表明当前的独立格式是以模板格式链接创建的(这样写的原因是,通常情况下,凭空写一个 CSL 比较困难,但是借助一个模板改写则容易的多)。这里的模板是`APA style`。此外,`info`还倾向于给定一个或者多个`document`链接,用来指向引文格式的在线描述。 + +为了致谢 CSL 格式的创建者,他们的名字和联系方式也可以添加到格式文件中。在当前的例子中,有一个作者和两个贡献者。作者通常完成了创建格式的大部分工作,贡献者一般只提供了一些小的改进。 + +#### citation元素和macro元素 + +接下来分析`macros`和`citation`元素。`citation`元素用来描述引用的格式。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +上面的代码可以生成类似`“(A.C. Smith et al., 2002; W. Wallace, J. Snow, 1999)”`这样的格式。为了理解这种引用格式在 CSL 中式如何编码的,要先分析`citation`元素中的`layout`元素。`layout`元素中的`prefix`、`suffix`和`delimiter`属性分别定义了前缀(这里为`(`),后缀(这里为`)`)以及条目分隔符(这里为`;`)。也就是说整个条目要放在圆括号中,条目之间以`;`分隔。每个条目的格式在`layout`元素的内容中定义。其内容中的`group`元素包括了`author`和`issue-year` macros,并且以`,`分隔。 + +`macro`元素是一种辅助元素,在其他元素或者其他`macro`元素中使用。通过其名字也可以看出,其与其他语言中的__宏__类似,这里暂不翻译。每个`macro`都含有`name`属性。 + +**注:**以下为了方便描述,将对应的`macro`元素直接以`name`指代,例:`name`为`author`的`macro`元素直接称为`author`元素。 + +``author`元素的`name`的属性指定了名称,`variable`属性保存了具体的作者值,`initialize-with`表明作者值为首字母缩写,每个首字母后面为`.`。 + +`issued-year`元素以分支语句开始,分支语句以`choose`元素定义,其中包含`if`和`else`元素。如果参考文献有日期,则保存在`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-min` 和 `et-al-use-first`。这里的值分别为`3、1`,表示作者大于等于`3`个的时候,使用印出第一个作者,后面跟`et al`术语。 + +`citation`元素中还包括了`sort`元素,其中包括了两个`key`元素,用来表明引用的排列顺序。第一个`key`元素中引用了`author`宏,第二个宏引用了`issued-year`宏,表明,先按作者作者字母排序,然后按文献发表年份排序。 + +#### bibliography元素 + +`citation`元素定义了引用的格式,`bibliography`定义了参考文献条目的格式。 + +```xml + + + + + + + + + + + + + + + + + +... + + + + + + + + + + + + + + + + + + + + +``` + +上述的例子中的`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`元素用来定义参考文献条目的格式。除了给出`author`和`issued-year`,参考文献条目还需要给出每个条目的`title`、`container-title`(对期刊文章来说,就是期刊的名称)、`volume`、`issue`和`page`。这里`layout`元素使用属性`suffix`和`delimiter`分别指定了`group`的后缀为`.`,以及`group`之间的分隔符为`,`。 + +和`citation`元素相同,`bibliography`也包括了一个`sort`元素,用来对参考文献条目进行排序。这里的三个`key`分别为`author`、`issued-year`和`title`。 + +#### locale 元素 + +最后介绍的是`loacle`元素。正如上面写道的,`CSL locale file`允许 CSL 样式快速转换为不同的语言。但是,有时需要覆盖默认翻译。 + +```xml + + + without date + + +``` + +对 US English 来说,`"no date"`项的内容就是`"no date"`。但是在我们的例子中,我们想使用`"without date"`去替换它。为了重写默认的翻译,我们可以使用类似上面的`locale`元素。对一个没有日期的条目来说,这种重写会导致引用变为像`(D. Williams, without date)`这样的格式。 + +`locale`的`xml:lang`属性被设置为`en`,这告诉CSL 样式当样式被用于英语写作的时候,重写`"no date"`。如果我们在德语写作的时候使用该 CSL ,该样式将会依据`German locale file `印出德语的翻译(`ohne Datum`) + +## 更进一步 + +这里只给出了一个基本的介绍。有关 CSL 更详细的介绍可以查看` CSL` 标准文档或者其他参考文档。 + + diff --git a/contents/XML_basis.md b/contents/XML_basis.md new file mode 100644 index 0000000..c1c5ca9 --- /dev/null +++ b/contents/XML_basis.md @@ -0,0 +1,109 @@ +CSL 基于 XML(eXtensible Markup Language)。XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。 + +# XML基础 + +```xml + # 文档声明 + + # 注释 + + # 根元素,文档的第一个元素,有且仅有一个 + # 子元素 + # 属性 + # 元素文本 + +``` + +上面的代码时一个简单的 XML 结构。为了方便说明使用了`#`符号作为注释符号,`#`并不是真正的注释符号, XML 的注释格式为文档中的第二行所示的形式。 + +第一行为声明,或者称为序言,总是在文档的最前面。包括了 XML 的版本、编码信息以及是否依赖外部文档等。这一行代码会告诉解析器或浏览器这个文件应该按照XML规则进行解析。 + +第二行为 XML 文档的注释。格式为``。 + +剩下的代码为 XML 文件的根元素,根元素也是元素,根元素是文档的第一个元素,有且仅有一个。 + + + +## 元素 + +元素由开始标签,元素内容和结束标签构成。其中可以包含属性、元素和注释。根元素包含了其他所有元素。 + +```xml +内容 +``` + +`title` 为元素名。 + +元素有4种形式。 + +```xml +1. 空元素 + 或者 + +2. 带有属性的空元素 + 或者 + +3. 带有内容的元素 +21000 + +4. 带有内容和属性的元素 +21000 # MoneyKind 为属性 21000为元素值 +或者是 + +Style =" LX2000" +CPU =" PIII600" +RAM ="128M " + + +``` + +所有的元素都包含在根元素中,为根元素的子元素,子元素还还可以包含子元素。 + + + +## 属性 + +属性是对元素及其内容的描述,用`=`隔开。属性必须包含在一对单引号或者双引号之间。 + +```xml + # 其中的 id 就是属性 后面的值就是属性值 +非诚勿扰 # 子元素 +70 + + +# 空元素的属性 + + +# 属性的另外一种形式 + +Style =" LX2000" +CPU =" PIII600" +RAM ="128M " + +``` + +每个元素中,一个属性最多出现一次,一个属性只能有一个值。 + +如果属性有多个值,这需要采取 XML 协议以外的方式来表示,如采用逗号或分号间隔,对于[CSS](https://zh.wikipedia.org/wiki/CSS)类或标识符的名字可用空格来分隔。 + +## 预定义实体表 + + XML 文件中某些符号无法正常表达,比如`<` 或者`>`,不处理的话会导致混乱。 + +| 所定义的实体 | 所代表的字符 | +| ------------ | ------------ | +| `<` | < | +| `>` | >`` | +| `"` | " | +| `'` | ' | +| `&` | & | + +```xml +John asked "What's your name?" + +中间的结果: +John asked "What's your name? " +``` + + + diff --git a/contents/about.md b/contents/about.md deleted file mode 100644 index eee99d9..0000000 --- a/contents/about.md +++ /dev/null @@ -1,3 +0,0 @@ -# About {#sec:about} - -This is an example book, built via [Books.jl](https://books.huijzer.xyz) and is made possible by the Julia programming language [@bezanson2017julia] and [pandoc](https://github.com/jgm/pandoc). diff --git a/contents/appendix.md b/contents/appendix.md deleted file mode 100644 index 18bc870..0000000 --- a/contents/appendix.md +++ /dev/null @@ -1,7 +0,0 @@ -# Appendix {-} - -This is the appendix. - -```jl -example_dataframe() -``` diff --git a/contents/index.md b/contents/index.md index 90c1c9e..b83c371 100644 --- a/contents/index.md +++ b/contents/index.md @@ -1,12 +1,16 @@ # Welcome {-} ```{=comment} -This file is not included in the PDF. +This file is only included on the website. ``` -This is the website for the `Books.jl` template and generated by the `Books.jl` package. -For more information about the package, see . +欢迎来到 CSL 的中文文档,本文档使用 Julialang 的 Books.jl 包构建,参考了 Julia data science 项目。 -This website is also available as [**PDF**](/booktemplate.pdf){target="_blank"}. +Welcome! This is an open source and open access book on how to do **Data Science using [Julia](https://julialang.org)**. +Our target audience are researchers from all fields of applied sciences. +Of course, we hope to be useful for industry too. +You can navigate through the pages of the ebook by using the arrow keys (left/right) on your keyboard. -The source for this template can be found at . +The book is also available as [**PDF**](/juliadatascience.pdf){target="_blank"}. + +The source code is available at [GitHub](https://github.com/JuliaDataScience/JuliaDataScience){target="_blank"}. diff --git a/contents/locale_file.md b/contents/locale_file.md new file mode 100644 index 0000000..2e540af --- /dev/null +++ b/contents/locale_file.md @@ -0,0 +1,22 @@ +# Locale File + +## 前言 + +​ 这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将CSL locale file翻译为需要的语言。 + +​ 用户总是会选择一个特定的语言环境或者CSL语言环境,例如:"British Psychological Society" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。 + +​ 所有的 CSL 样式,都依赖于 locale file,这些本地化文件中包含了本地化数据,用来指定引文和参考文献目录中的术语,日期格式和语法规则怎么本地化。在单独的本地化文件保存这些数据,而不是在 CSL 样式文件中(尽管CSL样式文件中可以使用`cs:locale`元素对本地化文件中的设置进行覆盖),有很多好处:1. 本地化更加容易维护;2. 样式文件更加的紧凑; 3. 样式可以是语言无关的。 + +​ 下面,我们将描述本地化文件的结构,给出如何转换所有部分的指示,并且解释如何提交这些转换。如果想获得更多的有关本地化的信息,可以查看 [CSL规范]()。 + +## 开始 + +​ CSL 本地化文件在Github的仓库地址为。 + +​ 每个本地化文件都包含一种对应语言的本地化数据。本地化文件的名字为 "locales-xx-XX.xml",这里的"xx-XX"是 [BCP 47 langues code 语言代码](http://people.w3.org/rishida/utils/subtags/)中的一种。这个[github wiki仓库](https://github.com/citation-style-language/locales/wiki)列出了本地化 code,对应的语言和该仓库中储存的所有语言环境的软换状态(是否完成,或在制作中)。 + +## 转换 Locale Files + +## + diff --git a/contents/references.md b/contents/references.md deleted file mode 100644 index b18be66..0000000 --- a/contents/references.md +++ /dev/null @@ -1 +0,0 @@ -# References diff --git a/metadata.yml b/metadata.yml index 96f82ef..228ebd1 100644 --- a/metadata.yml +++ b/metadata.yml @@ -1,9 +1,8 @@ --- -title: Your Awesome Book -subtitle: A Template to Get Your Book Started +title: CSL 中文手册 +subtitle: "" author: - - Example author 1 - - Example author 2 + - Mao Zhou 1 html-license: CC BY-NC-SA 4.0 tex-license: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International diff --git a/src/BookTemplate.jl b/src/CSL_Chinese.jl similarity index 71% rename from src/BookTemplate.jl rename to src/CSL_Chinese.jl index 9b66962..8e6267a 100644 --- a/src/BookTemplate.jl +++ b/src/CSL_Chinese.jl @@ -4,16 +4,7 @@ using Reexport: @reexport @reexport using Books: build_all, gen -@reexport using DataFrames: - DataFrame, - filter!, - filter, - select!, - select -export M, example_dataframe - -include("data.jl") """ build() diff --git a/src/data.jl b/src/data.jl deleted file mode 100644 index a863e42..0000000 --- a/src/data.jl +++ /dev/null @@ -1,3 +0,0 @@ -function example_dataframe() - return DataFrame(A = 1:6, B = 1:6, C = 1:6) -end