WordPress 運用だった「無聊写記」を Quartz 5 運用に移行してから、ひと月たった。

Obsidian の Canvas を使ってみる

Obsidian には、Canvas というビジュアルツールが内蔵されている。

『蒲団』 05や「ParrのユニクロTシャツ」のノートで使ってみたところ、自分の思考を整理していくのに役に立つことが分かった。一方で、使っているうちに Canvas の使いにくさも見えてきた。

  • ノードの重なり順(前面・背面)の調整が難しすぎる。現実的には不可能でハック的に解決するしかない。
  • 破線、点線が使えない。
  • テキストだけちょっと載せたいのに、ノードの枠線を非表示にできない。
  • エッジの曲線が曲がり過ぎる。

Advanced Canvas を導入する

調べてみると、Advanced Canvas というコミュニティプラグインの存在を知った。エッジの曲線が曲がり過ぎることは解決できないが、その他の不満はほぼ解決した。標準 Canvas よりも表示やスタイルを細かく調整できるので、今後はこちらを使っていくことにした。

Quartz では、そのまま再現されない

ところが、Advanced Canvas で作った Canvas を Quartz で表示すると、Obsidian 上の見た目がそのまま再現されるわけではなかった。

Advanced Canvas で追加した表示設定の多くは、そのままでは Quartz の canvas-page に反映されない。また、標準の canvas-page 自体も Obsidian の Canvas とは細部の表示が異なる。

Advanced Canvas の設定は .canvas ファイル内の styleAttributes として保存されている。そこで、その情報を Quartz 側でも読み取り、同じ意味になるよう canvas-page の表示処理を追加していくことにした。

canvas-page をフォークする

私の使う機能に合わせて表示させるため、Quartz の Canvas 表示用プラグイン canvas-page をフォークして改造した。

以下は、現在の表示確認用 Canvas である。

CANVAS 表示テスト

グループ
ノード(実線)
ノード(破線)
ノード(点線)

これは、枠非表示(背景透明)のノード

エッジ(実線)エッジ(点線)エッジ(破線)エッジ(破線2)枠線 非表示の場合でも エッジはスナップする
元記事へのリンク

この Canvas では、グループ、ノード、エッジについて、色や枠線、線種などの表示を確認できるようにしている。

改造した内容

グループ

  • ラベルの表示を枠内にした。1
  • 枠内の背景色を指定できるようにした。
  • 枠線は、デフォルトではなぜか破線だったため、非表示を可能にした。2

ノード

  • テキストは上下左右センター表示とした。3
  • 枠内の背景色の表示を可能にした。
  • 枠線を実線だけでなく、破線・点線・非表示にできるようにした。4

エッジ

  • Obsidian Canvas は曲率が高すぎ、Quartz の canvas-page は曲率が低すぎるので、中間をとった。
  • ラベルの背景サイズがテキストと一致していなかったので、文字の実寸に合わせるようにした。
  • ラベル背景は、デフォルトでは半透明でエッジに重なると読みにくかったため、枠線あり・背景不透明にした。
  • エッジの線を実線だけでなく、点線・破線・長い破線から選択できるようにした。

改造した canvas-page

Quartz Community の canvas-page をフォークして使用している。

よろしければ、お試しください。
インストール方法、設定方法については、README.md をお読みください。

脚注

  1. ラベルの文字サイズは、基準サイズの 1.5rem とした。

  2. 私的には破線で十分なので、現在のところ実線・点線に対応していない。グループの枠線を非表示にした場合、枠内の背景色も非表示になる。

  3. ノードの文字サイズは、基準サイズの 1.0rem とした。上下左右センターは、元に戻した方が良いかもしれないと思っている。その場合、Advanced Canvas にはテキストノードの左寄せ・中央・右寄せの機能があるので、それに対応させようと考えている。

  4. ノードの枠線を非表示にした場合、枠内の背景色も非表示になる。