Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidian:アウトライナーをブロック形式に変換

アウトライナーで下書き。

箇条書き

Markdownは箇条書きである。

とすれば、初めからリストで書いて、 リストを「見出し+内容」に変換すればいいんじゃないか。 そんな空想をしちゃいますよね。

そういう人のためのスクリプトです。

liner.md

Templaterスクリプトです。 フロントマターは変換の対象外になります。

<%*
s = tp.file.content
head = ""
if(/^---\n/.test(s)) {
  d = s.split("\n---\n")
  head = d.shift() + "\n---\n"
  s = d.join("\n---\n")
}
if(s[0] == "-" && s[1] == " ") {
  s = s.replace(/^-\s+/mg, "#### ")
  s = s.replace(/^    -\s+/mg, "")
  s = s.replace(/^        /mg, "")
} else {
  s = s.replace(/^(\s*-)/mg, "        $1")
  s = s.replace(/^([^\s-#])/mg, "    - $1")
  s = s.replace(/^#### /mg, "- ")
}
e = app.workspace.activeLeaf.view.editor
e.setValue(head + s)
%>

コマンドパレットにピン留めしておくと良いでしょう。

使い方

アウトライナーのつもりで書いてください。 どんどん箇条書きする。

それから liner を走らせるとブロック形式に変換されます。

  • 第一階層が見出し。
  • 第二階層は平文。
  • 第三階層はリストになります。

これで記事の下絵ができる仕組み。

再度 liner を実行するとアウトライナーに戻ります。 1行目がリストか見出しかで判定しています。

アウトライナー

アウトライナーは思考を止めません。 時間のあるときアイデアを並べていく。 「文章にしなきゃ」という圧力がかかりにくい。 段落は空行を入れるだけです。 これは後からでもできる。 書くときは気にしなくて構わない。

アウトライナーなので箇条書きの並べ替えがしやすい。 行間に追記するのも簡単です。 テキストがテキストを発想させる。 そんな力が宿っています。

見出しを作るときは平文用のアウトデントがいいでしょう。 アウトライナー用のアウトデントは区切りに使えません。 別の階層の作り初めになります。 使い分けてください。

まとめ

アウトライナーを基本とするライティング作法。 形が定まったらブロック形式に変換する。 すると今度は「箱」として扱えるわけです。

というか、ちょっとずつ書き足してたら記事ができた。 忙しいときに便利。

修正版

空行が入ると変換が壊れた。 ちょっと修正。

<%*
s = tp.file.content
head = ""
if(/^---\n/.test(s)) {
  d = s.split("\n---\n")
  head = d.shift() + "\n---\n"
  s = d.join("\n---\n")
}
if(/^\n*- /.test(s)) {
  s = s.replace(/^-\s+/mg, "#### ")
  s = s.replace(/^ {4}- +/mg, "")
  s = s.replace(/^ {8}/mg, "")
} else {
  s = s.replace(/^(\s*-)/mg, "        $1")
  s = s.replace(/^([^\s-#])/mg, "    - $1")
  s = s.replace(/^#+ /mg, "- ")
  s = s.replace(/^$/mg, "    - ")
  s = s.replace(/^    /, "")
}
e = app.workspace.activeLeaf.view.editor
e.setValue(head + s)
%>

見出しレベルは4にしてますが、お好きにカスタマイズしてください。

Obsidian:アウトライナーをブロックに変換(Zoom対応版) - Jazzと読書の日々