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可以幫助到同樣從事研究的人,在研究路上少浪費一點力氣。

38會員
52內容數
正在就讀法律系的你,一定耳聞過司律考試,甚至已經下場考過。我有幸從考海中上岸,希望透過我的經驗,幫助正在迷惘、焦急、或是洩氣的你/妳。專題內容包含是否要參加考試、如何準備考試、面授與函授的優缺點比較等等,幫助你/妳找到最適合自己的解方。
留言0
查看全部
發表第一個留言支持創作者!
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
【前言】 回想起第一次接觸瑜珈,其實是因為家人出差住飯店,當時把握"免費"機會享受住飯店之餘,也發現有大量"免費"的課可以上,舉凡有氧、拉丁、太極、飛輪等等都是提供的範圍,如果你沉迷於可以免費運動,這項措施及服務聽起來還不賴,對吧XD,(最詭異的是,參與瑜珈課程的半數房客們都自行攜帶瑜珈墊XD
Thumbnail
🩰本系列文章融入服裝設計、色彩學的基礎概念,當然囉,有興趣了解日本服飾品牌樣貌的女孩歡迎繼續下滑閱讀:)) 💰💰💰價位高:12,000日幣up⬆️ (價位高,要做好錢包大失血的心理準備^^) ▶布料材質: 範例如下👉 1.棉(cotton) mix 聚酯纖維(polyester)
Thumbnail
🩰本系列文章融入服裝設計、色彩學的基礎概念,當然囉,有興趣了解日本服飾品牌樣貌的女孩歡迎繼續下滑閱讀:)) 💰💰💰價位高:10,000日幣up⬆️ (價位偏高,要做好錢包大失血的心理準備^^) ⭐如果你是服裝設計師,我認為UN3D絕對是可以作為尋找設計靈感的絕佳範本!!
Thumbnail
🩰本系列文章融入服裝設計、色彩學的基礎概念,當然囉,有興趣了解日本服飾品牌樣貌的女孩歡迎繼續下滑閱讀:)) 💰💰價位中:6,001~10,000日幣 (價位中~中高,偶爾放縱也不會怎麼樣?) 💰💰💰價位高:10,000日幣up (價位偏高,要做好錢包大失血的心理準備^^)
Thumbnail
《為什麼我想這篇?》 長期關注日本服飾品牌的我 國中時,嬸嬸送給我了人生中第一本服裝時尚雜誌─ Seventween(已停刊) 再後來,我的彩妝老師表示:如果想要提升審美,不能繼續翻日雜,應該多看看像是vogue 如此具有國際性標誌的雜誌 (雖然現在偶爾還是會翻翻啦 吐舌:) 妮可就是這麼任性XD
上回提到MCM風格及千禧主義,今次回歸簡約。北歐風格 (Scandinavian)是以簡約為重心的室內設計風格,這主軸有不同的分支,其中一種就是「Hygge」,這詞語來自全世界最幸福的丹麥人,因此這風格重點在於尋找生活中的小確幸。 溫暖系北歐風格的要訣 Hygge style就是在簡約風格下,
說到波希米亞,大家腦裡自然會浮現出原野上的一個大帳篷,吉普賽人躺在民族風的靠墊和地毯上遊玩著自由音樂。可能您會覺得亞洲地區房屋結構大大限制您對波希米亞風的追求,但原來日本有種稱作「Boho」(bohemia+hippie)的風格,使用帶有波希米亞情調的混搭風格,從而去突顯自由奔放氣息。 1.貼地家俬
不少人喜歡住酒店,但酒店房空間偌大而不用儲物,一般400呎住宅,又如何可以營造出酒店式公寓的室內設計呢?以下給大家幾個小貼士。 1. 隱藏儲物空間 保持廣闊 酒店式公寓著重廣闊感,而很多香港人卻都喜歡「一有位就造櫃」。想營造酒店風格就必須取捨。如果真的需要,也盡量將儲物空間以地台等方式隱藏。 2
繼介紹美國西南部落風格與復古少女風後,本次介紹玩味十足的Memphis style——孟菲斯風格。 孟菲斯風格是在80年代出現,由一群性格古靈精怪的意大利籍設計師所推廣,為了能由過去的極簡主義裏面中解放,於是成就了這個不受拘束的創意美學運動。孟菲斯風格包括的範圍很多,從平面設計到時裝,當然少不了室
上回提到MCM風格及千禧主義,今次回歸簡約。北歐風格 (Scandinavian)是以簡約為重心的室內設計風格,這主軸有不同的分支,其中一種就是「Hygge」,這詞語來自全世界最幸福的丹麥人,因此這風格重點在於尋找生活中的小確幸。 溫暖系北歐風格的要訣 Hygge style就是在簡約風格下,為家
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
【前言】 回想起第一次接觸瑜珈,其實是因為家人出差住飯店,當時把握"免費"機會享受住飯店之餘,也發現有大量"免費"的課可以上,舉凡有氧、拉丁、太極、飛輪等等都是提供的範圍,如果你沉迷於可以免費運動,這項措施及服務聽起來還不賴,對吧XD,(最詭異的是,參與瑜珈課程的半數房客們都自行攜帶瑜珈墊XD
Thumbnail
🩰本系列文章融入服裝設計、色彩學的基礎概念,當然囉,有興趣了解日本服飾品牌樣貌的女孩歡迎繼續下滑閱讀:)) 💰💰💰價位高:12,000日幣up⬆️ (價位高,要做好錢包大失血的心理準備^^) ▶布料材質: 範例如下👉 1.棉(cotton) mix 聚酯纖維(polyester)
Thumbnail
🩰本系列文章融入服裝設計、色彩學的基礎概念,當然囉,有興趣了解日本服飾品牌樣貌的女孩歡迎繼續下滑閱讀:)) 💰💰💰價位高:10,000日幣up⬆️ (價位偏高,要做好錢包大失血的心理準備^^) ⭐如果你是服裝設計師,我認為UN3D絕對是可以作為尋找設計靈感的絕佳範本!!
Thumbnail
🩰本系列文章融入服裝設計、色彩學的基礎概念,當然囉,有興趣了解日本服飾品牌樣貌的女孩歡迎繼續下滑閱讀:)) 💰💰價位中:6,001~10,000日幣 (價位中~中高,偶爾放縱也不會怎麼樣?) 💰💰💰價位高:10,000日幣up (價位偏高,要做好錢包大失血的心理準備^^)
Thumbnail
《為什麼我想這篇?》 長期關注日本服飾品牌的我 國中時,嬸嬸送給我了人生中第一本服裝時尚雜誌─ Seventween(已停刊) 再後來,我的彩妝老師表示:如果想要提升審美,不能繼續翻日雜,應該多看看像是vogue 如此具有國際性標誌的雜誌 (雖然現在偶爾還是會翻翻啦 吐舌:) 妮可就是這麼任性XD
上回提到MCM風格及千禧主義,今次回歸簡約。北歐風格 (Scandinavian)是以簡約為重心的室內設計風格,這主軸有不同的分支,其中一種就是「Hygge」,這詞語來自全世界最幸福的丹麥人,因此這風格重點在於尋找生活中的小確幸。 溫暖系北歐風格的要訣 Hygge style就是在簡約風格下,
說到波希米亞,大家腦裡自然會浮現出原野上的一個大帳篷,吉普賽人躺在民族風的靠墊和地毯上遊玩著自由音樂。可能您會覺得亞洲地區房屋結構大大限制您對波希米亞風的追求,但原來日本有種稱作「Boho」(bohemia+hippie)的風格,使用帶有波希米亞情調的混搭風格,從而去突顯自由奔放氣息。 1.貼地家俬
不少人喜歡住酒店,但酒店房空間偌大而不用儲物,一般400呎住宅,又如何可以營造出酒店式公寓的室內設計呢?以下給大家幾個小貼士。 1. 隱藏儲物空間 保持廣闊 酒店式公寓著重廣闊感,而很多香港人卻都喜歡「一有位就造櫃」。想營造酒店風格就必須取捨。如果真的需要,也盡量將儲物空間以地台等方式隱藏。 2
繼介紹美國西南部落風格與復古少女風後,本次介紹玩味十足的Memphis style——孟菲斯風格。 孟菲斯風格是在80年代出現,由一群性格古靈精怪的意大利籍設計師所推廣,為了能由過去的極簡主義裏面中解放,於是成就了這個不受拘束的創意美學運動。孟菲斯風格包括的範圍很多,從平面設計到時裝,當然少不了室
上回提到MCM風格及千禧主義,今次回歸簡約。北歐風格 (Scandinavian)是以簡約為重心的室內設計風格,這主軸有不同的分支,其中一種就是「Hygge」,這詞語來自全世界最幸福的丹麥人,因此這風格重點在於尋找生活中的小確幸。 溫暖系北歐風格的要訣 Hygge style就是在簡約風格下,為家