ObsidianはPKM。 つまり「知識 Knowledge」のネットワークを構築するツールなので、実は「執筆 Writing」に弱い。 大リーグボール2号が水に弱いくらい弱い。
それでPWM(Personal Writing Management)には一工夫必要となります。
分割執筆
章立てをファイルに分けて書き、あとから連結する方法。 ScrivenerやUlyssesでお馴染みですが、これをObsidianでもやってしまおう、という作戦です。
TemplaterとDataviewプラグインを使っています。
Playlist.md
下記スクリプトをTemplaterのHotkeyに登録してください。 個人的にはCommanderでTab Barのボタンにしています。 ここが呼び出しやすい。
<%* const PLAY = "playlist" const MERGE = "merge" p = tp.file.folder(true) + "/" q = PLAY const t = tp.file.title if(t == PLAY){ s = tp.file.content if(/^\- /m.test(s)){ if(/\- \[x\]/.test(s)){ q = MERGE const a = s.split("\n") s = "" for(i=0; i<a.length; i++){ if(/- \[x\] /.test(a[i])){ const m = a[i].split("- [x] ") s+= m[0].replace(/\t/g, " ").replace(/\s{4}/g, "#").replace(/\s+/g, "#") + "## " f = m[1].replace(/.*\[\[(.+?)\]\].*/, "$1") s+= f + "\n\n" f = p + f + ".md" b = app.vault.getAbstractFileByPath(f) if(b){ const c = await app.vault.read(b) s+= c.replace(/([^!])\[\[(.+?)\]\]/mg, "$1$2") + "\n" } } } }else{ s = s.replace(/\t/mg, " ") s = s.replace(/^ {4} +- /mg, "#### ") s = s.replace(/^ +- /mg, "### ") s = s.replace(/^- /mg, "## ") } }else{ s = s.replace(/^#{4} /mg, " - ") s = s.replace(/^#{3} /mg, " - ") s = s.replace(/^#{2} /mg, "- ") s = s.replace(/\n+/g, "\n") s = s.replace(/\n/, "\n\n") } }else{ const d = DataviewAPI.pages('') .filter(x => p == (x.file.folder + "/")) .filter(x => !x.file.name.includes(q)) .filter(x => !x.file.name.includes(MERGE)) .sort(x => x.file.name) .map(x => `- [ ] [[${x.file.name}]] `) s = `[${p}](obsidian://new?file=${encodeURI(p)}) \n\n` s+= d.join("\n") } f = p + q + ".md" p = app.vault.getAbstractFileByPath(f) if(p){ if(t != PLAY && q == PLAY){ s = await app.vault.read(p) if(t != MERGE && s.indexOf(`[[${t}]]`) < 0) s+= `\n- [ ] [[${t}]] ` } await app.vault.modify(p, s) }else{ p = await app.vault.create(f, s) } app.workspace.activeLeaf.openFile(p) %>
不具合を修正しているので、このバージョンをお使いください。
使い方
連結したいファイルをフォルダにまとめます。
その中のファイルを開きPlaylistを実行してください。
するとplaylist.md
という名のフォルダ内リストが作成されます。
リストの順番は並べ替えて構いません。
ファイル名をタップすれば元のファイルが開きます。
そのファイルでPlaylistを実行すればplaylist.md
に戻ります。
チェックボックスをチェックし再度Playlistを実行すると、チェックされたファイルがマージされmerge.md
になります。
このmerge.md
をPDFにすれば一丁上がり。
新規作成
同じフォルダにファイルを作るときは、1行目のフォルダ名をタップしてください。 新規ファイルが開きます。
タイトルを書いてからPlaylistを実行するとplaylist.md
に追加されます。
並べ替え
チェックのないplaylist.md
でPlaylistを実行すると、並べ替えモードになります。
サイドパネルの「アウトライン」で項目をドラッグし、順番を入れ替えることができます。 階層構造をつけても大丈夫。
再度Playlistを実行すると元の状態に戻ります。
まとめ
PWMってコンセプトが今回の発見。 従来「コンポーザー」と呼んでたけど、これからはこっちを使おう。