Jazzと読書の日々

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

Obsidian:アウトライナーをブロックに変換(納得版)

空行をどう扱うか。

liner

同じネタをこねくり回していますが、 昨日気づいた「トピック問題」。

アウトライナーとブロックでは第一階層の意味づけが異なる。 アウトライナーは第一階層にトピックが来るが、 ブロックだとトピックが第二階層に移行する。

これにどう対処するか、一晩寝てひらめきました。 空リストを使う方法です。

liner.md

Templaterに登録しコマンドパレットで呼び出します。

<%*
// 見出しレベル
HEAD = "#### "

s = tp.file.content
front = ""
if(/^---\n/.test(s)) {
  d = s.split("\n---\n")
  front = d.shift() + "\n---\n"
  s = d.join("\n---\n")
}
if(/^\n*- /.test(s)) {
  s = s.replace(/^- +/mg, HEAD)
  s = s.replace(/^ {1,4}- +/mg, "")
  s = s.replace(/^ {5,8}/mg, "")
  s = s.replace(/^#+ +$/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(front + s)
%>

見出しレベルを4にしてますが、変数HEADでカスタマイズできます。

使い方

アウトライナー形式をブロック形式に変換します。

ブロック形式とは「見出し+内容」のMarkdownです。

  • 第一階層が見出しになります。
  • 第二階層は平文。
  • 第三階層以下はリストに変換されます。

ブロック形式で実行するとアウトライナーに戻ります。

これでテキストを練り上げていく。

今回の特徴

空行が空リストになる。

この空リストが区切りになるので Outlinerの「Move list and sublists up/down」で 段落単位の並び替えが可能になります。

段落にハンドルがついた状態になり、 並べ替えできます。 今までなかった操作なので重宝するかもしれない。

まとめ

テキストをアウトライナーとブロックの二側面で見る。

とくにアウトライナー形式は「段落」に焦点が当たるので、 テキストの見え方が変わります。 悪くないですね。