Skip to content
Go back

Obsidianで数式にリンクするには?

  • Obsidianの数式はラベルを付けられないのだろうか?
  • LaTeXなら\labelを付けて\eqrefで参照できるけど、Obsidianではダメみたい
    • 参考:https://forum.obsidian.md/t/referencing-equations/9413
    • 書き換えると参照が???になったり数式がエラーになったりするので、サポートしていないわけではないけど、キャッシュとの兼ね合いでバグっているように見える
  • Hugoの数式エンジンはKaTeXなので、こちらはそもそもサポートしていない
  • \tagで数式に番号を振ることはできるので、“数式への参照”を表現することはとりあえずできる
    • 数式に\tag{1}で番号を付けて、“式1”と言及すれば良さそう
    • とても便利とは言えないけど
  • 数式へのリンクはブロック単位でなら現状でもできそう
    • Obsidianでは”ブロックへのリンク”機能で要素にIDを付与できる
    • Hugoでは、そのIDを読み取って直前の<math>にIDを付与するようなテンプレートを作れば良さそう?
  • 以下のテンプレートでコンテンツを書き換えることで、Hugoでもとりあえず数式ブロックだけリンクを張れるようになりました
    • 当初の目的とは違うけど、やりたいことはできてるので、とりあえずこれで様子を見ましょう
{{- /* Obsidianの"ブロックへのリンク"記法をHTML要素のIDに置き換える */ -}}
{{- /* とりあえず数式ブロックだけ */ -}}
{{- .Content | replaceRE `(<span) (class="katex"><math(?:.|\n)*?</math></span>)<p>\^(.+?)</p>` `$1 id="$3" $2` | safeHTML -}}

#

c2=a2+b2(1)c^2 = a^2 + b^2 \tag{1}

数式ブロックのすぐ後ろに^eq-1と書くと、そのHTML要素がid="eq-1"となります。

#^eq-1

すると、[[#^eq-1]]がその数式ブロックに飛ぶようになります。