Markdown 引用語法教學
寫技術文件或學術文章的時候,經常需要在正文中標註「這句話引自某篇論文」或「這個資料來源於某個報告」。Markdown 本身沒有專門的引用(citation)語法,但透過 Markdown 腳註 和 Pandoc 擴展,可以實現從簡單的文獻標註到完整的參考文獻管理。
這篇文章就來講 Markdown 裡怎麼做引用——包括最基礎的腳註引用法,以及更專業的 Pandoc citation 語法。
腳註引用:最簡單的方法
如果你只是偶爾需要在文章裡加幾條引用,用 Markdown 腳註 就夠了。把引用內容直接寫進腳註定義裡:
這項研究表明,程式碼審查能有效減少缺陷率。[^smith2020]
[^smith2020]: Smith, J. (2020). *Code Review Practices in Large-Scale Software Development*. IEEE Software, 37(4), 78-85.渲染後,正文會出現一個上標數字 ¹,點擊後跳到頁面底部的參考文獻說明。
這種方式的好處是簡單直觀,GitHub、GitLab、Obsidian、Typora 這些平台都支援 [^1] 腳註語法。壞處是——你得手動維護引用格式,比如每條參考文獻的 APA 格式都要自己拼。
說實話,引用不超過五六條的時候,用腳註完全沒問題。但要是寫一篇有幾十條引用的論文或者長篇技術報告,手動管理格式就是噩夢了。這就是 Pandoc citation 發揮作用的地方。
Pandoc Citation 語法:@key 引用
Pandoc 是一個強大的文件轉換工具,它擴展了 Markdown,增加了專門用於學術引用的語法。核心就是 @ 符號。
基本用法
在正文裡用 @citationKey 引用文獻:
程式碼審查對軟體品質有顯著影響 [@smith2020]。
根據 @smith2020 的研究,程式碼審查能減少 60% 的缺陷。兩種寫法的區別:
[@smith2020]— 括號引用(parenthetical),渲染為(Smith, 2020)@smith2020— 敘述引用(narrative),渲染為Smith (2020),適合融入句子
加入前綴和後綴
括號引用裡可以加前綴和後綴:
多項研究證實了這一點 [見 @smith2020; 也參考 @jones2019, 第 3 章]。
資料顯示增長了 30% [@smith2020, p. 45]。渲染效果:
(見 Smith, 2020; 也參考 Jones, 2019, 第 3 章)(Smith, 2020, p. 45)
引用多篇文獻
用分號隔開:
[@smith2020; @jones2019; @wang2021]渲染後按你指定的引用樣式排列,比如 APA 格式會變成 (Jones, 2019; Smith, 2020; Wang, 2021)。
隱藏作者只顯示年份
有時候你已經提到了作者名字,只想顯示年份:
Smith 指出 [-@smith2020] 程式碼審查非常關鍵。-@ 會省略作者,只渲染 (2020)。
準備 BibTeX 檔案
Pandoc citation 的關鍵是 .bib 檔案——一個純文字的參考文獻資料庫。每筆記錄長這樣:
@article{smith2020,
author = {Smith, John},
title = {Code Review Practices in Large-Scale Software Development},
journal = {IEEE Software},
volume = {37},
number = {4},
pages = {78--85},
year = {2020}
}
@book{jones2019,
author = {Jones, Mary},
title = {Software Quality Assurance},
publisher = {Springer},
year = {2019}
}花括號裡的 smith2020、jones2019 就是你在正文中用的 citation key。命名規則是「作者+年份」或任意有意義的字串,只要正文和 .bib 檔案裡的 key 對得上就行。
這裡我踩過一個坑:有一回從 Zotero 匯出 BibTeX 檔案,結果 citation key 裡帶了空格(比如 @smith 2020),Pandoc 怎樣都不識別。後來統一把 key 改成無空格的格式(smith2020)就好了。如果你也從 Zotero 匯出,建議裝一個 Better BibTeX 外掛,它會自動產生規範的 citation key。
取得 BibTeX 的幾種方式
| 來源 | 操作 |
|---|---|
| Google Scholar | 搜尋文獻 → 點引號按鈕 → 選 BibTeX |
| Zotero | 安裝 Better BibTeX 外掛 → 右鍵匯出 |
| Mendeley | 選文獻 → File → Export → BibTeX |
| 手寫 | 按格式直接建立 .bib 檔案 |
用 Pandoc 產生參考文獻
有了 .md 檔案和 .bib 檔案,用一條命令就能產生帶參考文獻的文件:
pandoc document.md \
--citeproc \
--bibliography=refs.bib \
-o output.pdf關鍵參數說明:
--citeproc— 啟用引用處理(替代了舊版的--filter pandoc-citeproc)--bibliography=refs.bib— 指定 BibTeX 檔案路徑-o output.pdf— 輸出格式(也可以是.html、.docx等)
Pandoc 會自動:
- 把正文裡的
@key替換為格式化的引用標註 - 在文末產生完整的參考文獻列表(References)
- 正文引用和參考文獻列表自動關聯
指定引用樣式
用 --csl 參數可以切換引用格式:
pandoc document.md \
--citeproc \
--bibliography=refs.bib \
--csl=apa.csl \
-o output.pdfCSL(Citation Style Language)檔案可以從 Zotero Style Repository 免費下載,支援超過一萬種樣式。常見的幾種:
| 樣式 | 檔案 | 領域 |
|---|---|---|
| APA 7th | apa-7th-edition.csl | 社會科學、心理學 |
| IEEE | ieee.csl | 工程、電腦科學 |
| Chicago | chicago-author-date.csl | 人文學科 |
| MLA 9th | modern-language-association.csl | 語言、文學 |
引用工具鏈比較
除了直接用 Pandoc,還有幾個工具鏈也支援 Markdown 引用:
| 工具 | 引用語法 | 文獻格式 | 特點 |
|---|---|---|---|
| Pandoc | @key | BibTeX / CSL | 最通用,命令列工具 |
| Quarto | @key | BibTeX / CSL | 基於 Pandoc,更易用,支援互動文件 |
| R Markdown | @key | BibTeX / CSL | R 語言生態,適合資料分析 |
| Jekyll Scholar | {% cite key %} | BibTeX | Jekyll 部落格專用 |
| MyST | @key / DOI 連結 | BibTeX | 支援 DOI 自動識別 |
Quarto 是 Pandoc 的上層封裝,語法完全一樣,但設定更簡單。如果你不想折騰命令列參數,Quarto 是個不錯的選擇——在 _quarto.yml 裡設好 bibliography 和 csl 就行,連 pandoc 命令都不用手動輸入。
腳註 vs 引用:什麼時候用哪個
這兩個東西容易搞混,簡單說一下區別:
| 特性 | 腳註 [^1] | 引用 @key |
|---|---|---|
| 用途 | 補充說明、備註、簡單引用 | 學術引用、參考文獻管理 |
| 格式管理 | 手動 | 自動(透過 CSL 樣式) |
| 參考文獻列表 | 不自動產生 | 自動產生 |
| 適用平台 | GitHub、GitLab、Obsidian 等 | Pandoc、Quarto、R Markdown |
| 複雜度 | 低 | 中 |
我的建議是:
- 寫部落格、README、技術文件 → 用腳註
[^1],簡單夠用 - 寫論文、研究報告、書籍 → 用 Pandoc citation
@key,自動管格式 - 在 GitHub 上討論學術問題 → 用腳註手動寫引用格式(GitHub 不支援 Pandoc citation)
常見問題
GitHub 上能用 @key 引用嗎?
不能。GitHub 的 Markdown 渲染器不支援 Pandoc citation 語法。在 GitHub 上做引用,只能用腳註方式:
根據研究[^1],這個方案可行。
[^1]: Smith, J. (2020). *Code Review Practices*. IEEE Software, 37(4), 78-85.Pandoc 提示找不到 citation key 怎麼辦?
檢查這幾點:
.bib檔案裡的 key 和正文裡的@key是否完全一致(區分大小寫)--bibliography參數指定的檔案路徑是否正確.bib檔案的語法是否有誤(多餘的逗號、缺少花括號等)
怎麼在 Obsidian 裡做學術引用?
Obsidian 原生只支援腳註 [^1],不認識 Pandoc 的 @key 語法。但可以裝社群外掛來解決:
- Pandoc Plugin — 在 Obsidian 裡直接呼叫 Pandoc 匯出帶引用的文件
- Citations Plugin — 連接 Zotero 資料庫,在 Obsidian 裡搜尋和插入引用
引用樣式怎麼改?
改 --csl 參數指向的 .csl 檔案就行。比如從 APA 改成 IEEE:
pandoc doc.md --citeproc --bibliography=refs.bib --csl=apa.csl -o output.pdf
# IEEE 格式
pandoc doc.md --citeproc --bibliography=refs.bib --csl=ieee.csl -o output.pdf同樣的正文,換個 CSL 檔案,輸出的引用格式和參考文獻列表就會自動調整。
參考來源
- Pandoc 官方文件 — Citations — Pandoc citation 語法的權威參考
- Quarto 官方文件 — Citations & Footnotes — Quarto 引用系統說明
- CSL 專案 — Citation Style Language — 引用樣式語言規範
- Markdown Guide — Extended Syntax: Footnotes — Markdown 腳註語法社群參考
- Zotero Style Repository — 超過一萬種 CSL 引用樣式下載