前書き

  • Hugoでは Render hooks を利用してObisidianのCallouts記法をそのまま採用できる。
  • この機能はデフォルトでONになっているわけではなく、使用者が自分で対応する必要がある。
  • もしくは有志が作成したHugo-admonitionsというモジュールを使う手もある。今回はこちらを選択した。
  • Hugo-admonitionsには豊富な[!TIP]や[!CAUTION]だけでなく、[!TASK]や[!CODE]など、21種類のCalloutsに対応している。詳しくは作者であるKKKZOZ氏の GitHub をチェック。
  • Multi-language SupportにJapaneseは含まれていないが、今のところ問題はなさそう。

Hugo-admonitionsをGit submoduleとしてインストールする

Info
  • Hugoのバージョン:v0.166+extend
  • Hugoで使用しているテーマ:PaperMod
  • 使用しているホスティングサービス:GitHub Pages
  • Hugo-admonitionsをテーマとしてではなくGit submoduleとしてインストールする理由は以下
    • テーマやモジュールをサイト本体のリポジトリにコピーせず、それぞれのバージョンをGitで管理しやすくするため
  1. 使っているHugoサイトのルートディレクトリで、Powershellなどからgit submodule add --depth 1 https://github.com/KKKZOZ/hugo-admonitions.git themes/hugo-admonitionsを実行
  2. git submodule statusでHugo-admonitionsがsubmoduleとして登録され、コミットIDが表示されていることを確認
  3. 適当なテキストエディタでhugo.tomlを開き、使用しているテーマを記入している箇所にhugo-admonitionsを追加。たとえば、theme = ‘PaperMod’ であれば、その行を theme = [‘hugo-admonitions’, ‘PaperMod’] に差し替える(hugo-admonitionsが、使用しているテーマよりも必ず先=左側に来るようにする)。
  4. ローカルでCalloutsが動作していることを確認したら、変更をgit addしてcommitしてpush

 これでおそらくコールアウトがHugoでも使えるようになるはず。

Calloutsの開閉がうまく機能しない

  • ObsidianのCalloutsでは[!TIP]+や[!INFO]-のようにして、コールアウトが「デフォルトで展開した状態にするか、折りたたんだ状態にするか」を制御できる。
  • hugo-admonitionsのGitHubにも、Foldable Admonitionsとして紹介されているのだが、自分の環境では+-どちらを置いても閉じたままで表示されてしまった。
  • おま環か仕様かは不明(たしかにGitHubの当該箇所にあるサンプル画像をみると、+と-のどちらでもコールアウトは閉じている)。

対策

  • コールアウトに+がつけられている場合だけ、デフォルトで展開した状態にするように指定する。
  • Hugoではサイト側のレイアウトに同名のファイルを置くことで、テーマ側のテンプレートを上書きできる。
  1. themes\hugo-admonitions\layouts\_default\_markupにある、render-blockquote-alert.htmlを、サイト側のlayouts/_default/_markup/にコピー
  2. コピーした方のrender-blockquote-alert.htmlをテキストエディタで開いて、<details class="admonition {{ $type }}">を、<details class="admonition {{ $type }}"{{ if eq .AlertSign "+" }} open{{ end }}>に変更
  3. ローカルでCalloutsの開閉が動作していることを確認したら、変更をgit addしてcommitしてpush
デフォルトでOpenにできました🎊

やったね🎉