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ってコンセプトが今回の発見。 従来「コンポーザー」と呼んでたけど、これからはこっちを使おう。