以下の内容はhttps://wineroses.hatenablog.com/entry/2024/09/07/143130より取得しました。


Obsidian:見出しを抜き出し目次を作る

たとえばこんな感じに。

【目次】
TOC
mokuji.md
使い方
バリエーション
まとめ

TOC

もしObsidianに目次用のコールアウトを作るとしたら上記記事を参照してください。

mokuji.md

ただ、上記のままだとはてなブログに使えないので、普通のリンクにしたのが下記スクリプトです。

<%*
  s = tp.file.content
  d = s.split("\n")
        .filter(x => x.match(/^#+\s/))
        .map(x => {
            s = x.replace(/^#+\s/, "")
            return `>[${s}](#${s})`
        }).join("  \n")
  tp.file.cursor_append(`>【目次】  \n${d}`)
%>

使い方

単に、文章の先頭で実行するだけ。

バリエーション

もっと単純に見出しだけ抜き出すなら、こうかな。

<%*
  s = tp.file.content
  d = s.split("\n")
        .filter(x => x.match(/^#+\s/))
        .map(x => {
            s = x.replace(/^#+\s/, "")
            return `>${s}`
        }).join("  \n")
  tp.file.cursor_append(`>【目次】  \n${d}`)
%>

段差もつけるとしたら、こんな感じで。

<%*
  s = tp.file.content
  d = s.split("\n")
        .filter(x => x.match(/^#+\s/))
        .map(x => {
            s = x.replace(/#\s/, " ")
            s = s.replace(/#/g, "..")
            return `>${s}`
        }).join("  \n")
  tp.file.cursor_append(`>【目次】  \n${d}`)
%>

まとめ

detailsとsummaryで作ろうとしたら、Markdownリンクに対応してなかった。

追記

段差付きリストはこう?

<%*
  s = tp.file.content
  d = s.split("\n")
        .filter(x => x.match(/^#+\s/))
        .map(x => {
            s = x.replace(/#\s/, "- ")
            s = s.replace(/#/g, " ")
            return s
        }).join("  \n")
  tp.file.cursor_append(`【目次】\n${d}`)
%>

半角スペースだとコード表記と解釈するので、全角スペースで段差をつけました。




以上の内容はhttps://wineroses.hatenablog.com/entry/2024/09/07/143130より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14