Matrix 精選

Matrix 是少數派的寫作社區,我們主張分享真實的產品體驗,有實用價值的經驗與思考。我們會不定期挑選 Matrix 最優質的文章,展示來自用戶的最真實的體驗和觀點。

文章代表作者個人觀點,少數派僅對標題和排版略作修改。

需求

兵馬未動糧草先行,寫畢業論文需要做很多思想建設,有一個順手的寫作工具和一個方便的文獻管理工具可以給人一些動力和勇氣。 我目前的需求很明確,就是用自己中意的 Markdown 編輯器來寫論文初稿,使用 Zotero 來管理大量參考文獻,然後論文轉換成 Office Word 文檔讓老師們查看。

如果選擇 Office Word 來寫,直接用 Zotero 插件處理參考文獻沒有任何問題,但作爲 Markdown 的重度用戶,用 Word 寫上百頁的文檔實在是太難受。 於是,這篇文章就分享一下如何儘量優雅地藉助 Zotero 用純文本方式完成論文中參考文獻的引用和管理。

所謂優雅是指當 Markdown 內容並轉換成 Word 格式後,所有引用都需要被 Zotero 插件正確識別且可以隨時在 Word 中進行修改更新,而常用的 Bibtex 加 Pandoc 方法並不能實現這個需求。

準備

工具

Markdown 編輯器:Ulysses

奔着 Ulysses 在高價位上了 Setapp 的車,如果能用它把論文寫完,這車費就沒有白花。當然,用 Markdown 寫論文最自由的就是對寫作工具的選擇,這裏使用任何一個你順手的編輯器都可以,比如 Typora, MWeb 甚至是 VSCode 都麼得問題。 

文獻管理工具:Zotero

碩博這幾年時間,我先後使用了目前國內使用率最高的三款文獻管理工具,從 Endnote 轉向 Mendeley 是因爲當時覺得 Mendeley 沒有 Endnote 那麼「重」;從 Mendeley 轉到 Zotero 是因爲後者的免費和插件。關於 如何上手 Zotero 之前也有寫過詳細的介紹。

輔助

使用 Zotero 又不借助 Word 來管理參考文獻,安裝 Better BibTeX 插件是必選項,它爲參考文獻的引用和管理提供了一站式解決方案。 同時,把 Markdown 格式的文本用高度可定製的方法轉換爲 PDF 或者 Word 格式文檔,繞不開 Pandoc 這個工具。我們熟悉的大量文本編輯器在生成其他格式文檔時往往調用的都是 Pandoc。

概念

CITATION KEYS

所謂 Citation Keys(Citekey),可以理解爲 Better BibTeX 給文獻生成的一個 ID,當我們在文檔中需要插入文獻的位置按照一定格式輸入 Citekey 後就等於告訴 Zotero 要在這裏引用對應的文獻了。 由於 Citekey 是純文本格式,不同編輯器對文章本身的影響可以降到最低。在 Endnote 中同樣有類似的引用方式,這個概念被稱作 Temporary citation。 通用的 Citekey 格式爲 [auth:lower][year] ,前半部分表示文章第一作者的小寫姓氏,後半部分爲文獻年份,如果出現了重複,就會在後面添加 a b c 或者數字進行區分。 下圖是 Zotero 中關於 Citekey 的展示。

CITE AS YOU WRITE

在寫作過程中,如果僅將 Zotero 對應的文獻 Citekey 複製到文本並沒有什麼難度,無非就是方便和效率的問題,即隨寫隨引。 在 Word 插件中的 Zotero 的引用效果如下圖所示。

類似的效果只有同時在我們使用的編輯器中實現,才能做到 CITE AS YOU WRITE。

自動操作

如果你在使用 macOS,或許還不知道它也有類似於 iOS 中快捷指令的功能,叫做 Automator(自動操作)。這個應用可以設定在什麼情況下進行何種操作,本文將會涉及到一個腳本自動執行的問題,就會用到 Automator。 如果對它感興趣,具體使用介紹可以查看 Apple 官方說明

設置

Zotero CITATION KEYS

我目前的配置如下圖,所示。這裏主要是修改了引用格式。

Pandoc filter

Better BibTeX 的作者寫了一個 lua 腳本 zotero.lua ,用來實現從 Markdown 到 Word 實時引用的格式轉換。我們可以在 Markdown 文本中寫入相關元數據,或者在 pandoc 命令行中進行相關參數設置。

---
# all the regular stuff you have here
Zotero:
  library: <group name> # omitted to use your personal library
  scannable-cite: false # only relevant when your compiling to scannable-cite .odt
  client: <Zotero or jurism> # defaults to Zotero
  author-in-text: false # when true, enabled fake author-name-only cites by replacing it with the text of the last names of the authors
...

如果是 Zotero 個人 library , 沒有什麼特殊情況使用默認參數即可,直接運行如下命令:

pandoc input.md -s --lua-filter=zotero.lua -o output.docx

zotpick-applescript

Better BibTeX 在實現隨寫隨引的問題上給出了多種實現方法。如果你是把 Atom 或者 VSCode 作爲編輯器可以直接安裝它們相關的擴展插件,具體可以查看 官方說明 。 除此以外,還可以利用提供的 URL 自行設置在其他編輯器內的調用。例如 http://127.0.0.1:23119/better-bibtex/cayw?format=mmd&clipboard=yes 這個地址就表示會把選擇的 Citekey 按照 MultiMarkdown 的格式 [#adams2001][] 進行引用,同時把內容保存在粘貼板中。 當然,無需我們自己寫,已經有前人造好的輪子 zotpick-applescript

這裏我們只需要下載 zotpick-pandoc.applescript 。

爲了快速調用這個腳本,我們可以設置一個自動操作的 workflow,配置如下圖所示。選擇「沒有輸入」和位於「任何應用程序」,然後在左側選擇「運行 AppleScript」,在右側彈出的編輯器中複製zotpick-pandoc.applescript 的代碼即可。隨後保存命名並保存該 workflow。

快捷鍵

爲了快速調用這個 workflow,我們還可以在快捷鍵的設置中爲它指定一個快捷鍵。

此外,因爲 workflow 插入的格式爲 @adams2001 而 Pandoc 轉化時在 Markdown 中識別的格式爲[@adams2001] ,所以有了另一個小需求:快速輸入 [] 並且把光標置於兩個括號間。

這個需求可以利用 TextExpander 和 Keyboard Maestro 等工具實現,爲了讓 Setapp 值回票價,這裏我選擇了和 TextExpander 同類型的應用 Rocket Typist。設置方式如下:

同時我給這個動作也自定義了縮寫,方便快速輸入。最終的實現效果如下:

如果使用 VSCode 來編輯,插件用起來非常方便,就無需上面這些設置了。

效果

接下來展示一下 Markdown 源文檔示例,和轉換成 word 文檔之後的樣子。

最後一步,就是在 Zotero 的 Word 插件中選擇引用格式,點擊「OK」,然後再點擊「Refresh」就可以展示正常的引用格式了。如果想插入參考文獻的詳細信息,點擊「Add Bibliography」即可。

擴展閱讀

Better BibTeX 的官方文檔是非常好的學習材料,可以瞭解更多的相關知識,推薦閱讀。

此外,如果你感覺這些配置過於繁瑣,可以嘗試 Zettlr 這款直接支持文獻管理的開源 Mardown 編輯器。我曾經使用過一小段時間,不過還是因爲沒有 MWeb 和 Ulysess 用起來順手而放棄了。

如果你是 Windows 用戶,則非常推薦使用 Zotero + VSCode + VSCode Zotero 插件的組合,關於 VSCode 用作 markdown 編輯器,可以參考之前少數派發布的 VSCode 場景化上手指南

> 下載少數派客戶端、關注少數派公衆號,瞭解更精彩的數字生活 :leaves:

相關文章