Quantcast
Channel: Jazzと読書の日々
Viewing all articles
Browse latest Browse all 478

Obsidianで小説や論文をマージする方法

$
0
0

ObsidianはPKM。 つまり「知識 Knowledge」のネットワークを構築するツールなので、実は「執筆 Writing」に弱い。 大リーグボール2号が水に弱いくらい弱い。

それでPWM(Personal Writing Management)には一工夫必要となります。

分割執筆

章立てをファイルに分けて書き、あとから連結する方法。 ScrivenerやUlyssesでお馴染みですが、これをObsidianでもやってしまおう、という作戦です。

TemplaterとDataviewプラグインを使っています。

Playlist.md

下記スクリプトをTemplaterのHotkeyに登録してください。 個人的にはCommanderでTab Barのボタンにしています。 ここが呼び出しやすい。

Import Obsidian: Playlist

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


Viewing all articles
Browse latest Browse all 478

Trending Articles