はじめに
アウトライナーで文章を書くということにはまっている
seealso
かなり便利に文章を書けるが、1 つだけ問題点が・・・
それは、引用や Bibliography が入れれないということだ
引用や Bibliography の挿入は基本的には Word のプラグインで行われることが多い
ただ、Obsidian 上には文献のデータは十分にあり、Obsidian 上で自動で行うことも可能なのではないか?と考えた
情報収集
コミュニティプラグインで reference
と検索すると Obsidian Pandoc Reference List というのが出てくる
どうやら Pandoc を使用して文章に [@citation]
と打つと引用として判断して、Bibliography を自動作成してくれるとのこと
???
Pandoc ってマークダウンファイルをワードとか色んな形式に変換するツールだと思っていたけど、Bibliography を作成する機能がついている???
ということは、Pandoc でマークダウンファイルを直接引用や Bibliography 付きの Word ファイルに変換することも可能なはずだ
Pandoc で出力するプラグインを探すと Pandoc Plugin というコミュニティプラグインをみつけた
Pandoc Plugin のドキュメントを確認→Citations (work in progress) · OliverBalfour/obsidian-pandoc Wiki · GitHub
やはり引用に関する方法が書いてある
これを読んでみることにした
必要なもの
- Pandoc
- CSL-JSON
- CSL ファイル
- Pandoc Style で引用が記述されたマークダウンファイル
Pandoc
まず、Pandoc のコマンドを呼び出して使用するので Pandoc Plugin に加えて、Pandoc をインストール→Pandoc - Installing pandoc
CSL-JSON
文献情報を記した辞書ファイル
これは Citations プラグインを使用している場合はすでに存在するはず
seealso
以下が Citations プラグインを使用した文献管理概要図だ
このマイ・ライブラリ.json は CSL-JSON であるので、この絶対パスを設定画面で指定しておく
CSL ファイル
Journal 毎の引用形式を記したファイル
ローカルでファイルのパスを指定してもいいのだが、公開 URL でもいい
さらに、プロパティに書いておくということも可能
なので、出力するマークダウンファイルのプロパティに
csl: URL
このようにを追加しておく
csl ファイルは Zotero Style Repository
ここで検索して、URL をコピーしてくる
例えば脊椎の Journal の Spine の引用形式にしたければ下記の用に記載する
csl: https://www.zotero.org/styles/spine
Pandoc style で記載したマークダウンファイル
例えば
This is a pen[@citekey1;@citekey2].
このように引用を記載すると Pandoc で出力する時に
This is a pen[1-2].
みたいな感じで引用になり、文末に Bibliography も自動作成されるという
!!!
[@citekey] という形式は Citations で作った文献ノートへのリンクとほぼ一緒
つまり、文献ノートへのリンクを貼ったマークダウンファイルに少し手を加えれば Pandoc style になるということだ
アウトラインで文章を書く際に文献ノートをちょくちょく貼っていたので、これを Pandoc style に変換しよう
Templater の出番である
Templater のロジック
- Section
- Paragraph
- content(日本語)
- content(英語)
- 文献ノートへのリンク
- 備考など
- content(英語)
- content(日本語)
- Paragraph
このルールでアウトラインが書いてあるとする
- インデントレベル 4 から文献ノートへのリンクを抽出して、Pandoc style へと変換する
- 複数ある場合は連結して、前の content のピリオドの前に挿入する
要するにアウトラインを Pandoc Style に変換して、Output セクションに出力する
seealso
今回はかなり私に特異的なロジックなのでスクリプトは省略
特定のセクションのみを Pandoc で出力
これは lua filter というのを使うのがいいと書いてあった
ちょっと分からないが、簡単なロジックなので GPT 先生にお願いする
-- filename: extract_section.lua
local extracting = false
function Header(elem)
if elem.level == 1 then
if elem.content[1].text == "Output" then
extracting = true
else
extracting = false
end
return {}
end
end
function Block(elem)
if extracting then
return elem
else
return {}
end
end
何となく合ってそうな構造
Output セクションのみを Pandoc で出力するように記載してもらった
スクリプトを適当に保存しておき、Pandoc Plugin に実行時にこの lua スクリプトを呼び出すようにパスを記載
完成したロジック
こういうことですね (分かりにくい)
- アウトラインで文章を書いて、適当に文献ノートへのリンクとかをメモしておく
- Templater で Pandoc style に変換する
- Pandoc Plugin で Word ファイルに変換する
この作業で出力された Word ファイルには、任意の Journal の引用形式で引用が付加され、Bibliography もついてくる
つまり、もう提出するだけでいい状態で出力される
おわりに
Pandoc plugin の公式ドキュメントには、Obsidian のリンクと引用のための表記のどちらかを選ばないといけないのがかなりの問題で、Citations プラグインとどう連携すればいいか考えていると書いてあった
今回の方法はそれを独自に解決していると言えるかもしれない
Outline である程度ルールを決めて記載しておけば Pandoc style への変換はそれほど難しくないし、記載自体も便利である
Obsidian のアウトライナーは高度にカスタマイズすることで最高の論文エディタへと変貌しつつある