アウトライナーで下書き。
箇条書き
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にしてますが、お好きにカスタマイズしてください。