- Markdownを書くならObsidianが良い
- ただし、HugoとObsidianは食い合わせの悪い部分がある
課題と対策#
/をObsidianのvaultにすると、補完候補に変なものが紛れ込むthemes/にあるmdファイルも候補に含んでしまっていた- とりあえず、
content/をvaultにした
content/をvaultにすると、Obsidianのテンプレートの置き場に困る- テンプレートもMarkdownファイルなので、Hugoが記事にしてしまう
- とりあえず、
templates/にまとめておいて、これらを対象外とするよう、hugo.tomlにignorefiles = ['content/templates/']を加えた
- HugoがWikilink形式のリンクに対応していない
- Hugo側でなんとかするのは大変そう
- ビルド時に該当箇所を書き換えれば良いらしいが、自前でスクリプトを書いたりする必要がある
- Obsidian側はMarkdown形式を使うように設定できる
- オプションの”ファイルとリンク”にある”ウィキリンクを使用”をオフにする
- あとは、Hugo側がRender hooksを使ってパスをURLに変換するようにすれば良い
layouts/_default/_markup/render-link.htmlに以下の内容のファイルを作れば、とりあえず大丈夫だった
- Hugo側でなんとかするのは大変そう
{{- $url := urls.Parse .Destination -}}
<a {{- if eq $url.Scheme "" }} href="{{- relref .Page .Destination | safeURL -}}" {{- else}} href="{{- .Destination -}}" target="_blank" rel="external noopener noreferrer" {{- end -}} {{- with .Title}}
title="{{ . }}" {{- end -}}>
{{- with .Text }}{{ . }}{{ end -}}
</a>{{- /* trim whitspace */ -}}- これで、Markdownのリンクが「リンク先がファイルパス(スキームなし)ならサイト内部に遷移し、そうでなければ外部サイトとして別タブで開く」ようなaタグに変換される
-はその前または後にある空白を取り除くことを示す- 空白や改行もそのままHTMLに現れるので、
-があったりなかったり、末尾の行がなかったりするのも大事 target="_blank"は別タブで開くことを示すnoopenerとnoreferrerはセキュリティやプライバシーの面で外部サイトに遷移するときには必要らしい