ちょっと変更。
分割執筆
章ごとに書いてから連結する。 Obsidianで長い文章を書くためのツールです。 目次ファイルで並び順を変更することができます。
今回の修正点はタイトルづけ。 マージしたとき、元のファイル名を見出しとして挟むことにしました。 アウトラインにも並ぶので推敲しやすい。 これで行きましょう。
Playlist
下記リンクでスクリプトを転送するのでTemplaterに登録してください。
<%* p = tp.file.folder(true) + "/" q = "playlist" const t = tp.file.title if(t == q){ s = tp.file.content 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(/\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{ const d = DataviewAPI.pages("") .filter(x => x.file.path.includes(p)) .filter(x => !x.file.name.includes(q)) .filter(x => !x.file.name.includes("merge")) .sort(x => x.file.name) .map(x => "- [x] [[" + x.file.name + "]] ") s = "<a class=internal-link href='" + p + "new'>" + p + "</a>\n\n" s+= d.join("\n") } f = p + q + ".md" p = app.vault.getAbstractFileByPath(f) if(p){ if(q != "merge"){ s = await app.vault.read(p) if(t!="merge" && s.indexOf("[[" + t + "]]") < 0) s+= "\n- [x] [[" + t +"]] " } await app.vault.modify(p, s) }else{ p = await app.vault.create(f, s) } app.workspace.activeLeaf.openFile(p) %>
使い方
下書き用のフォルダを作り、そこに元となるファイルを集めます。 次にファイルのどれかを開き、Playlistスクリプトを実行してください。 そのフォルダの目次ファイルが作成されます。 この目次ファイル(playlist.md)を「プレイリスト」と呼びます。
プレイリストは、チェックボックスと内部リンクのリストです。 内部リンクの方をタップすると元のファイルが開きます。 プレイリストの1行目にあるフォルダ名をタップすると新規ファイルを作ります。 それぞれのファイルでPlaylistスクリプトを実行すると、またプレイリストに戻ります。 往還しながら全体を推敲する。
プレイリスト上でPlaylistスクリプトを実行すると、プレイリストの並び順に合わせ、連結ファイル(merge.md)を作ります。 これが完成品になります。 このときチェックボックスが外されたファイルは連結の対象としません。 裏設定などのファイルはチェックを外しておいてください。
でんでんコンバーター
merge.mdをでんでんコンバーターに読み込ませたらePubになりました。 目次も表示するので悪くありません。 ObsidianからePubへの経路はこれで確保できそう。
まとめ
タキー・ザ・バキンのペンネームで『シン・八犬伝』に着手すべきか。
追記:15:30
階層化に対応してみました。 見出しの深さが変わります。
チェックボックスまでのスペース4個で判断しています。 Obsidianのインデントがスペース設定になっていれば、インデントで操作できます。
それと、チェックボックスを外してもすぐ有効にならなくて、他の行に移動して確定になります。 これはObsidian自体の仕様である様子。
ファイルを追加するときは、同じフォルダ内にあることが条件です。 新しいファイルでPlaylistスクリプトを実行するとプレイリストに追加されます。 プレイリストの1行目にあるフォルダ名をタップすると、同じフォルダ内に新規ファイルを作成します。
修正:8/12
カタカナが入ると、新規ファイルの登録ができない不具合がありました。 よく見たら不要な正規表現を使ってた。 スクリプトを修正したので再インストールをお願いします。