Citation Style Language 入門理解

更新於 發佈於 閱讀時間約 14 分鐘
💡 這篇文章將幫助你快速了解CSL的結構邏輯,以及常用參數和變數所代表的意義。

我先前在⟨自訂Zotero的引註格式⟩一文中提到,可以透過自訂CSL的方式完成自動引註。

但在台灣使用CSL有一個問題是,多數的學術研究都需要引用大量國內外的資料,也就是說,引用的文獻中,會同時存在中文、英文,甚至日文、德文、法文等多國語言,偏偏不同語言有不一樣的引註格式。

還好,這個問題在台灣已經有前輩pulipuli嘗試處理過,並且製作出可同時輸出中文及英文參考文獻的CSL Script。pulipuli前輩是以APA 6為藍本進行修改,但APA註腳(footnote)的格式過於簡略,不符合法律學門的引註習慣。

因此我決定踩著前人的肩膀,以Chicago Manual of Style 17th edition (full note)為藍本,自己修改一套可同時輸出中英文參考文獻的CSL樣式。由於我自身使用的需求,中文引註格式我以政大法學評論的格式為標準,加入Chicago樣式中。

以語言區分輸出格式並未被載入官方的CSL 1.0.2 Specification中,因此匯入Zotero等文獻軟體時,會出現非有效樣式的警告,但仍可正常引用、顯示。

raw-image

以下簡單紀錄我理解CSL的過程,並將我開發的CSL樣式上傳至Github,造福更多為引註所苦的研究人員。如果有人願意贊助,或許我可以持續開發更多符合台灣各種學門的多語言CSL樣式。

Github 開源專案

政大芝加哥中英文樣式:Mandarin-NCCULR_Chicago_Gong.csl


CSL 1.0.2 Specification

碼農們都知道,當coding遇到問題時,一定先看看Stack Overflow上有沒有遇過一樣的問題,最好有現成的code可以複製貼上;或是把code丟給時下最流行的ChatGPT幫忙debug。但由於CSL屬於XML語言的一種,又是針對「引註」這個特定目的而生的語言,網路上的討論與資源相對少。因此除了模仿pulipuli前輩和Github上其他專案之外,免不了還是得自己看spec。

由於我只有少少的程式語言基礎,一開始就從spec著手有些不得要領,經過一連串的試錯後,我才大致理解CSL語言的架構,並能透過查找spec來解決問題。

宣告

前面提到,CSL屬於XML的一種,因此開頭必須進行XML的宣告。

<?xml version="1.0" encoding="utf-8"?>

主結構

Styles

接著便是CSL的主要內容,在「cs:style」中呈現。「cs:style」有幾種常用的參數:

  1. class:用以表示內文中的引用格式,有「in-text」和「note」兩種,分別指在文中直接嵌入引用,或以註腳方式呈現。
  2. version:表示CSL的版本,1.0以前的版本無法與1.0以後的版本相容。
  3. initialize-with-hyphen:英語或拉丁語系的姓名通常可分為「family name(姓)」、「given name(名)」,而「given name(名)」可能不止一個單字,單字與單字之間是否要用「-」連接,如:Jean-Luc。
  4. demote-non-dropping-particle:有些姓名可能還含有「name particles(中間名)」,然而根據語言的不同,有些中間名必須跟隨「family name(姓)」,而有些則是跟隨「given name(名)」。這會影響姓名簡寫,或參考文獻將姓氏移列在前時的呈現,如Vincent van Gogh的「van」即屬中間名。此參數分為三種,「never」會將必須跟隨姓的中間名前置,如van Gogh, Vincent、不跟隨姓的中間名留下,如Humboldt, Alexander von;「sort-only」效果與never相同,但排序時使用姓氏排序,如van Gogh, Vincent會以G排序;「display-and-sort」則是中間名均不跟隨姓,並以姓氏排序,如Gogh, Vincent van會以G排序。
<style xmlns="<http://purl.org/net/xbiblio/csl>" class="note" version="1.0" initialize-with=". " demote-non-dropping-particle="sort-only">

而「cs:style」下,有幾種常見的子元素:

  1. info:必須為第一個出現的子元素,包含樣式名稱、開發者名稱等。
  2. locale:可能出現多次,在不同語系時覆蓋一些原始設定,如可使用<terms>標籤指定在zh-TW語系時translator應縮寫為「譯」而非原始的「trans.」;或使用<date>標籤,指定year在文字模式時應顯示為「年」。
  3. macro:類似函式的作用,可以想像成模組,用來描述各種欄位的規則,如author、publisher等,並可被其他macro呼叫組成更大的模組,最後拼成完整的引註規則。
  4. citation:實際定義引註格式的區域,但習慣上會用一個大的macro包好,在citation欄位直接呼叫一次包好的macro即可。
  5. bibliography:實際定義參考文獻的區域,與citation相同,習慣上會先用一個大的macro包好再呼叫,如要做出雙語言或多語言版本的參考文獻,就必須善用此技巧,以免bibliography過於肥大。
<style xmlns="<http://purl.org/net/xbiblio/csl>" class="note" version="1.0" initialize-with=". " demote-non-dropping-particle="sort-only">
<info>
<title>...</title>
<title-short>...</title-short>
<id><http://www.zotero.org/styles/...></id>
<link href="<http://www.zotero.org/styles/...>" rel="self"/>
<link href="<http://www.zotero.org/styles/bluebook-law-review>" rel="template"/>
<author>
<name>Gong Y.B.</name>
<email>...</email>
</author>
<category citation-format="note"/>
<category field="law"/>
<updated>2023-12-06T00:48:17+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">
<date form="text" delimiter=" ">
<date-part name="day"/>
<date-part name="month" form="numeric"/>
<date-part name="year"/>
</date>
<terms>
<term name="accessed">last visited</term>
<term name="page" form="short">p</term>
</terms>
</locale>
<locale xml:lang="zh">
<date form="text">
<date-part name="year" form="numeric" suffix="" range-delimiter="-"/>
<date-part name="month" form="numeric" suffix="" range-delimiter="-"/>
<date-part name="day" form="numeric" suffix="" range-delimiter="-"/>
</date>
<terms>
<term name="accessed">最後瀏覽日</term>
<term name="editor" form="short"></term>
<term name="translator" form="short"></term>
<term name="page" form="short"></term>
</terms>
</locale>
<locale>
<style-options punctuation-in-quote="false"/>
<terms>
<term name="page-range-delimiter">-</term>
</terms>
</locale>

<macro name="author-zh">
<names variable="author">
<name delimiter="" delimiter-precedes-et-al="never"/>
<substitute>
<names variable="editor" suffix=""/>
</substitute>
</names>
</macro>

<citation et-al-min="3" et-al-use-first="1" et-al-subsequent-min="3" et-al-subsequent-use-first="1">
<layout suffix="" delimiter="">
<!-- 直接呼叫包好的macro "citation-layout-zh" -->
<text macro="citation-layout-zh"/>
</layout>
</citation>

<bibliography second-field-align="flush" name-as-sort-order="all" et-al-min="0" et-al-use-first="6">
<layout suffix="">
<text macro="citation-number"/>
<!-- 直接呼叫包好的macro "source-bib-zh" -->
<text macro="source-bib-zh"/>
</layout>
</bibliography>
</style>

Types

基本上在style中就已經定義完所有引用與參考文獻的格式了,但在定義的過程中,我們需要根據文獻的種類而有不同格式定義,如書籍和期刊文章的引註格式就有所不同。以下是CSL中常用的幾種文獻類型:

raw-image

Variables

在定義的過程中,我們需要取用資料庫中的欄位資料,以決定引註中應該出現哪些欄位資料、出現的順序等。以下是CSL中常見的變數與對應的欄位名稱:

raw-image

另外還有一些不是直接對應資料庫欄位的變數,通常是經過欄位資料計算而來。

raw-image





結語

由於沒有太深厚的程式基礎,一開始直接啃spec非常辛苦,也不得要領。借助各種教學文章、試誤與觀察他人專案的方式,才漸漸摸懂了CSL語言的結構,以及該如何寫出符合引註規範的CSL Script。

但搞懂CSL語言還不夠,要編寫一份CSL Script,最困難的莫過於將文字敘述的引註規則(如Bluebook)轉化為程式邏輯,再透過上面的變數以及語法一一實現。與法律相同,寫法不會只有一種,也可能隱藏著一些bug,必須實際使用才能發現,因此往後必定還會有各種更新維護,更別提引註規則可能也會變更。

我研究CSL的初衷在於希望減少重複、繁瑣的事情,並專注於研究上,不是花一堆時間一直複製貼上作者、期刊名、頁數。雖然初期學習、開發的時間可能多過於用老方法慢慢複製貼上,但一旦開發完成,往後在整理引註與參考文獻就是三秒鐘完成。希望我這個side-project可以幫助到同樣從事研究的人,在研究路上少浪費一點力氣。

avatar-img
38會員
52內容數
正在就讀法律系的你,一定耳聞過司律考試,甚至已經下場考過。我有幸從考海中上岸,希望透過我的經驗,幫助正在迷惘、焦急、或是洩氣的你/妳。專題內容包含是否要參加考試、如何準備考試、面授與函授的優缺點比較等等,幫助你/妳找到最適合自己的解方。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
GYB的沙龍 的其他內容
近期收聽了一門由楊嘉玲心理師與裘凱宇心理師共同主講的一門心理學線上課程「好好說再見」,我驚訝的發現,原來法律和心理這兩個看似有點遙遠的專業,背後竟然有如此驚人的共通原理。 自我與心理的修煉是一輩子的功課,何時開始都不嫌晚。
由於CSL僅是一種讓電腦可以了解引註格式的一種程式語言,因此支援CSL的參考文獻管理軟體都能使用CSL script,一勞永逸地解決引註格式的問題。 然而如此好用的解決方案,在國內卻少有人研究或貢獻。歡迎有志之士一同參與開發更多適合不同領域的CSL scripts,早日讓痛苦的引註校稿成為歷史。
透過Google Authenticator轉移帳戶的功能,可以一次性提取所有TOTP密鑰,加快整合TOTP到Bitwarden的過程。整合完成後,不論是輸入帳號密碼或是輸入TOTP認證碼,都只需要Bitwarden即可搞定,在安全性和方便性取得平衡。在方便性和安全性之間取得平衡,是資安永遠的課題。
架站新手們總是在預算和效能、服務之間猶豫不決,畢竟新手大多還無法靠網站賺取穩定收入,網站的費用很大程度必須自己吸收。如果你還是很想省一點錢,或是不確定自己是否有能力自己長久管理網站,先租個便宜的share hosting試水溫也不是不行,但坑點2、3、4就要盡量避免,保留去留的彈性。
除了電腦與網路技術方面的人才,完整的資安架構還必須包含資安法遵師。我甚至認為,多數企業對於資安法遵的需求,高於資安技術。企業面對資安威脅,必須採取風險控管的角度,將實際的防禦技術工作外包給專門的資安公司進行,企業內部僅需評估與控制風險。而控制風險正是法遵的核心職能。期待法律人才能一同為資安盡一份力。
遙想2021年6月底,當時所有人正被Covid-19疫情搞得心惶惶之際,我辭去了事務所的受雇律師工作,開始了全職研究生的生活。在辭職之前,我做了詳細的計算,以為靠存款就足夠支應兩年的生活,加上一些額外的收入,應該還可以過的去。 兩年後的今天,我以「存款+收入-餘額」的概略方式,計算這兩年來的花費。
近期收聽了一門由楊嘉玲心理師與裘凱宇心理師共同主講的一門心理學線上課程「好好說再見」,我驚訝的發現,原來法律和心理這兩個看似有點遙遠的專業,背後竟然有如此驚人的共通原理。 自我與心理的修煉是一輩子的功課,何時開始都不嫌晚。
由於CSL僅是一種讓電腦可以了解引註格式的一種程式語言,因此支援CSL的參考文獻管理軟體都能使用CSL script,一勞永逸地解決引註格式的問題。 然而如此好用的解決方案,在國內卻少有人研究或貢獻。歡迎有志之士一同參與開發更多適合不同領域的CSL scripts,早日讓痛苦的引註校稿成為歷史。
透過Google Authenticator轉移帳戶的功能,可以一次性提取所有TOTP密鑰,加快整合TOTP到Bitwarden的過程。整合完成後,不論是輸入帳號密碼或是輸入TOTP認證碼,都只需要Bitwarden即可搞定,在安全性和方便性取得平衡。在方便性和安全性之間取得平衡,是資安永遠的課題。
架站新手們總是在預算和效能、服務之間猶豫不決,畢竟新手大多還無法靠網站賺取穩定收入,網站的費用很大程度必須自己吸收。如果你還是很想省一點錢,或是不確定自己是否有能力自己長久管理網站,先租個便宜的share hosting試水溫也不是不行,但坑點2、3、4就要盡量避免,保留去留的彈性。
除了電腦與網路技術方面的人才,完整的資安架構還必須包含資安法遵師。我甚至認為,多數企業對於資安法遵的需求,高於資安技術。企業面對資安威脅,必須採取風險控管的角度,將實際的防禦技術工作外包給專門的資安公司進行,企業內部僅需評估與控制風險。而控制風險正是法遵的核心職能。期待法律人才能一同為資安盡一份力。
遙想2021年6月底,當時所有人正被Covid-19疫情搞得心惶惶之際,我辭去了事務所的受雇律師工作,開始了全職研究生的生活。在辭職之前,我做了詳細的計算,以為靠存款就足夠支應兩年的生活,加上一些額外的收入,應該還可以過的去。 兩年後的今天,我以「存款+收入-餘額」的概略方式,計算這兩年來的花費。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
希望透過條列和簡介,可以更方便讀者選讀自己偏好的主題。
在現代學術研究中,閱讀大量文獻是一個必要且繁重的任務。然而,通過將學術閱讀流程標準化,能顯著提升效率,使閱讀變得更加有條理。最近,我實踐了兩個已經標準化的動作,每個動作都進行了50次以上的測試,效果顯著。 ▋動作一:將文獻內容轉為資訊塊 這個動作的目的是將閱讀材料中的重要內容轉換為小而具
Thumbnail
這篇文章介紹瞭如何利用AI論文工具來提高研究生的論文閱讀效率以及寫作效率。透過Connected Papers、Scispace和Immersive Translate等AI工具,可以進行文獻回顧、段落摘要生成、Paraphrasing、APA格式生成以及論文對照翻譯
Thumbnail
難得在科技頁面,看到自己文章如此對稱出現,機不可失,趕緊截圖典藏策展一下。順便也將 ❦ 莊小昕 在WHO ICD 術語中文翻譯彙整一文中的問題,也公告一下 : 此術語彙整的使用方向。
最近實踐將學術閱讀流水線化,效率顯著提升。 其中已經有兩個動作實踐了50次以上,達到標準化。 動作一:將文獻內容轉為資訊塊 良品一標準 原料:閱讀材料的文本形式 成果物:資訊塊 動作二:將資訊塊匯集成話題索引筆記 (Keyword Index) 良品二 原料:帶著
當自己習慣於某種特定的論述模式以及文法結構、語言方式
期刊論文的品質和表達方式是成功發表的關鍵。然而,許多研究者可能會面臨到英文語言表達、格式要求等方面的挑戰,這可能影響他們的研究成果被廣泛傳播的能力。為了解決這些問題,我們提供了一站式的學術出版服務,將期刊論文校對一直到專業的英文編修的整個過程結合,讓您的研究得以流暢地呈現在期刊上。 一、投稿期
Thumbnail
在學術寫作中,掌握「關鍵字閱讀」技術至關重要。 對於學術研究者來說, 有效地從大量的學術文獻中提煉出核心資訊是一項挑戰。 關鍵字閱讀不僅可以幫助你避免被不必要的細節所淹沒, 還能讓你更聚焦於與研究主題相關的資訊。 結合「書目卡 Bibcard」的使用, 這種閱讀方式能夠大大提高你的閱讀效
Thumbnail
台灣啟航:跨領域的解讀與對話;關於語言學的一些思考
Thumbnail
運用大數據文本分析,所得出來的結果,皆有科學論文實證。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
希望透過條列和簡介,可以更方便讀者選讀自己偏好的主題。
在現代學術研究中,閱讀大量文獻是一個必要且繁重的任務。然而,通過將學術閱讀流程標準化,能顯著提升效率,使閱讀變得更加有條理。最近,我實踐了兩個已經標準化的動作,每個動作都進行了50次以上的測試,效果顯著。 ▋動作一:將文獻內容轉為資訊塊 這個動作的目的是將閱讀材料中的重要內容轉換為小而具
Thumbnail
這篇文章介紹瞭如何利用AI論文工具來提高研究生的論文閱讀效率以及寫作效率。透過Connected Papers、Scispace和Immersive Translate等AI工具,可以進行文獻回顧、段落摘要生成、Paraphrasing、APA格式生成以及論文對照翻譯
Thumbnail
難得在科技頁面,看到自己文章如此對稱出現,機不可失,趕緊截圖典藏策展一下。順便也將 ❦ 莊小昕 在WHO ICD 術語中文翻譯彙整一文中的問題,也公告一下 : 此術語彙整的使用方向。
最近實踐將學術閱讀流水線化,效率顯著提升。 其中已經有兩個動作實踐了50次以上,達到標準化。 動作一:將文獻內容轉為資訊塊 良品一標準 原料:閱讀材料的文本形式 成果物:資訊塊 動作二:將資訊塊匯集成話題索引筆記 (Keyword Index) 良品二 原料:帶著
當自己習慣於某種特定的論述模式以及文法結構、語言方式
期刊論文的品質和表達方式是成功發表的關鍵。然而,許多研究者可能會面臨到英文語言表達、格式要求等方面的挑戰,這可能影響他們的研究成果被廣泛傳播的能力。為了解決這些問題,我們提供了一站式的學術出版服務,將期刊論文校對一直到專業的英文編修的整個過程結合,讓您的研究得以流暢地呈現在期刊上。 一、投稿期
Thumbnail
在學術寫作中,掌握「關鍵字閱讀」技術至關重要。 對於學術研究者來說, 有效地從大量的學術文獻中提煉出核心資訊是一項挑戰。 關鍵字閱讀不僅可以幫助你避免被不必要的細節所淹沒, 還能讓你更聚焦於與研究主題相關的資訊。 結合「書目卡 Bibcard」的使用, 這種閱讀方式能夠大大提高你的閱讀效
Thumbnail
台灣啟航:跨領域的解讀與對話;關於語言學的一些思考
Thumbnail
運用大數據文本分析,所得出來的結果,皆有科學論文實證。