在 Mac 上使用 Zotero 時,透過在 CSL 樣式中加入條件分支,為編輯的多卷書籍設定不同格式。本指南適用於有編者且沒有作者的個別卷冊,並使用合成的中繼資料和完整的示範樣式。
定義哪些書籍應套用特殊格式
CSL 使用 book 表示有作者的書籍、編輯文集、完整的多卷作品和個別卷冊。其文件列出的類型中,沒有專門表示「經編輯的多卷書籍」的類型。受支援的做法是在樣式中檢查書籍的中繼資料。CSL 1.0.2 規格
本指南刻意將輸出規則訂得明確:具有 editor 和 volume、且沒有 author 的 book,會以標題優先的格式列入參考書目。其他所有紀錄則使用示範中的一般創作者優先格式。這是用來說明格式選擇的範例,並非規定的引用標準。
特殊條目依下列順序排列:斜體標題、編者姓名與角色標籤、卷號,接著是出版地、出版社和年份。例如,下方合成紀錄預期會輸出如下:
Collected Shape Exercises. Nora Vale, 編。第 2 卷。Sampletown:Example Workshop Press,2024。
卷冊與整套作品的區別很重要。CSL 的 volume 用來識別特定卷冊;number-of-volumes 則記錄總卷數。編者人數以及標題中的數字都無法確立這項區別。CSL 變數定義
輸入中繼資料明確的測試紀錄
在 Zotero 中建立一筆 Book 紀錄,並填入以下合成值。將 Nora Vale 設為角色為 Editor 的創作者,並留空作者欄位。Zotero 說明了不同的創作者角色,也區分了 Volume 和 # of Volumes。Zotero 項目類型與欄位
| Zotero 欄位 | 合成值 |
|---|---|
Item Type |
Book |
Title |
Collected Shape Exercises |
| 創作者角色 | Editor |
| 創作者名字 | Nora |
| 創作者姓氏 | Vale |
Volume |
2 |
# of Volumes |
3 |
Place |
Sampletown |
Publisher |
Example Workshop Press |
Date |
2024 |
在 Volume 欄位輸入 2,不要另外加入 vol.。標籤由樣式提供。此處 2 表示引用的卷冊,3 則描述整套作品。Zotero 建議以數字輸入卷號。Zotero 的書籍與期刊欄位
若要建立代表整套三卷作品的另一筆紀錄,請將 Volume 留空,並將 # of Volumes 保留為 3。依照本文的規則,這筆紀錄會走一般處理路徑。這可避免參考書目把整套作品誤當成某一特定編號卷冊。
在 Mac 上建立完整的示範樣式
開啟 TextEdit,並在貼上程式碼前選擇 格式 → 製作純文字。將檔案儲存為 edited-multivolume-demo.csl,並確認檔名以 .csl 結尾。Zotero 的編輯指南特別說明如何在 Mac 上使用 TextEdit 編輯純文字檔。編輯 CSL 樣式-逐步指南
以下是完整的示範樣式。其參考書目會依照上述規則處理;文內引用則只顯示標題。一般條目刻意採用精簡格式,建議先用此檔案了解並測試規則,再將其套用至已有樣式,以處理包含多種紀錄的資料庫。
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0"
class="in-text" default-locale="en-US">
<info>
<title>Edited Multivolume Books Demo</title>
<id>urn:uuid:6b4f5d8c-7b20-4fea-92eb-6207d10d94e3</id>
<updated>2026-10-29T12:13:38+00:00</updated>
</info>
<macro name="editors">
<names variable="editor">
<name and="text" delimiter=", "/>
<label form="short" prefix=", "/>
</names>
</macro>
<macro name="creators">
<choose>
<if variable="author">
<names variable="author">
<name and="text" delimiter=", "/>
</names>
</if>
<else>
<text macro="editors"/>
</else>
</choose>
</macro>
<macro name="extent">
<choose>
<if variable="volume">
<group delimiter=" ">
<label variable="volume" form="short"/>
<text variable="volume"/>
</group>
</if>
<else-if variable="number-of-volumes">
<group delimiter=" ">
<text variable="number-of-volumes"/>
<label variable="number-of-volumes" form="short"/>
</group>
</else-if>
</choose>
</macro>
<macro name="imprint">
<group delimiter=", ">
<group delimiter=": ">
<text variable="publisher-place"/>
<text variable="publisher"/>
</group>
<date variable="issued">
<date-part name="year"/>
</date>
</group>
</macro>
<macro name="ordinary-entry">
<group delimiter=". ">
<text macro="creators"/>
<text variable="title" font-style="italic"/>
<text macro="extent"/>
<text macro="imprint"/>
</group>
</macro>
<macro name="entry">
<choose>
<if type="book" variable="editor volume" match="all">
<choose>
<if variable="author" match="none">
<group delimiter=". ">
<text variable="title" font-style="italic"/>
<text macro="editors"/>
<text macro="extent"/>
<text macro="imprint"/>
</group>
</if>
<else>
<text macro="ordinary-entry"/>
</else>
</choose>
</if>
<else>
<text macro="ordinary-entry"/>
</else>
</choose>
</macro>
<citation>
<layout prefix="(" suffix=")" delimiter="; ">
<text variable="title" font-style="italic"/>
</layout>
</citation>
<bibliography>
<layout suffix=".">
<text macro="entry"/>
</layout>
</bibliography>
</style>
updated 元素是樣式檔必要的中繼資料。此處記錄的是這份示範的建立時間,並非文章的發布或審閱時間。根元素使用 version="1.0",符合 CSL 1.0 相容樣式的規範。CSL 樣式結構
修改前先了解條件
外層條件使用 match="all",要求項目類型是書籍,且兩個變數都有值。內層條件透過 match="none",要求作者欄位為空。使用巢狀條件可以表達這些要求的組合,避免缺少作者的檢查套用至其他條件。CSL 條件式呈現
下表可用來實際檢查此實作的判斷結果:
| 紀錄 | 是否使用標題優先的特殊條目? | 原因 |
|---|---|---|
| 書籍,有編者,第 2 卷,無作者 | 是 | 符合所有要求 |
| 書籍,有編者,第 1 卷,無作者 | 是 | 第一卷仍符合規則 |
| 書籍,有編者,沒有卷號,總卷數為三卷 | 否 | 依此慣例代表整套作品 |
| 書籍,有作者、有編者,第 2 卷 | 否 | 作者欄位有值 |
| 書籍,第 2 卷,無編者 | 否 | 編者欄位為空 |
| 書籍章節,有編者和卷號 | 否 | 項目類型不是 book |
此條件會檢查中繼資料是否有值,但無法判斷匯入的紀錄是否正確描述了預期的書籍。將規則套用到大量紀錄之前,請先檢查標題和卷號欄位。
CSL 1.0.2 也沒有通用的數值大於條件。若檢查 number-of-volumes 是否有值,1 和 3 都會符合;is-numeric 也無法解決這項比較問題。若要將規則延伸至整套作品,請先建立一致的中繼資料慣例,不要把欄位有值當成作品包含多卷的證明。CSL 條件定義
示範中的 extent 巨集會在兩個欄位都有值時優先使用特定卷冊。因此範例只會顯示 第 2 卷,不會同時列出整套作品的總卷數。一般條目的創作者巨集也會優先使用作者而非編者。這些都是本範例明確採用的簡化處理;修改自己的樣式時,請保留其他創作者或卷冊資訊的需求。
預覽結果並測試邊界情況
在 Zotero 中選取合成紀錄。在 Zotero 設定中開啟 引用,再選擇 樣式編輯器。將完整樣式貼到編輯器,然後按一下 重新整理,即可使用目前選取的資料庫項目。編輯器會分別顯示引用和參考書目條目,並在編輯時更新預覽。Zotero 樣式編輯器
檢查參考書目條目是否依照預期的標題優先順序排列。文內引用應維持為帶括號的斜體標題,因為此示範只在參考書目的條目巨集中放入特殊規則。
接著建立符合判斷表的合成變體。在一筆紀錄中加入作者,在另一筆中移除卷號,再建立一筆代表整套作品的紀錄。為每筆紀錄設定不同且中性的標題,方便在預覽中辨認。確認只有符合條件的紀錄會將標題移到編者姓名之前。
準備期間已解析範例 XML,並檢查巨集引用。此範例尚未在 Mac 版 Zotero 應用程式中實際呈現。安裝或修改前,請使用專案開發指南所連結的驗證器,依 CSL 結構描述驗證完整檔案。僅檢查 XML 語法無法確認 CSL 有效性。CSL 樣式開發-驗證
關閉編輯器或選擇其他已安裝樣式前,請先儲存程式碼:Zotero 說明這些操作會捨棄未儲存的修改。Zotero 樣式編輯器
安裝樣式或修改現有樣式
若要安裝已儲存的檔案,請開啟 Zotero 的 引用 設定,並在樣式管理器中使用 + 按鈕選取 edited-multivolume-demo.csl。相同設定也提供 樣式預覽,可使用已安裝樣式檢查選取的紀錄。Zotero 引用設定
若要修改現有引用格式,請從目前的獨立樣式開始。相依樣式只會指向父樣式,不包含自己的格式設定指示。入門指南-CSL 簡介
保留現有樣式的一般呈現方式作為後備處理,並將特殊條件放在較廣泛的書籍規則之前。依現有樣式的名稱、標題和出版資訊巨集調整特殊輸出。除非也需要修改,否則請保留原有的排序、其他項目類型和引用行為。這樣新增的分支就能解決單一需求,而不會取代格式中的其他部分。
安裝前,請為修改後的樣式設定不同的標題和 ID;Zotero 提醒,若沿用原本的識別資料,更新可能會覆寫修改後的版本。Zotero 樣式編輯指南
如果沒有出現特殊條目,請先依照判斷表檢查紀錄,再修改標點或巨集。確認創作者角色、卷號、作者欄位是否空白,以及項目類型。確認符合條件和後備紀錄的行為都符合預期後,你就有了一條可重複使用且適用範圍明確的呈現規則:經編輯的個別卷冊會使用專屬參考書目格式,其他紀錄則繼續採用選定的一般處理方式。
來源
- CSL 1.0.2 規格 — Citation Style Language。
- Zotero 項目類型與欄位 — Zotero。
- 編輯 CSL 樣式-逐步指南 — Zotero。
- Zotero 樣式編輯器 — Zotero。
- CSL 樣式開發 — Citation Style Language。
- 引用 — Zotero。
- 入門指南 — CSL 簡介 — Citation Style Language。