ox-hugo で mermaid.js を使う方法

はじめに このブログは、以下のワークフローで運用されています。 graph LR org-mode -- <a href="https://ox-hugo.scripter.co/">ox-hugo</a> --> markdown -- <a href="https://gohugo.io/">Hugo</a> --> HTML 上のようなフローチャートなどのダイアグラムを載せようとすると、どのような方法が思い浮かぶでしょうか? まさか、パワポ等で作ったダイアグラムを画像としてエクスポートして…なんて方法は考えていませんよね? それ、Dティアです 図1: パワポはまじでDティア それはさておき、私はダイアグラムを作る方法について詳しくなかったので、ox-hugo を使うという前提で Gemini 2.5 Pro に、Deep research してもらいました。 結果、以下のようなTier Listができました。1 表 1: ox-hugo でのダイアグラム作成方法のTier List by Gemini 2.5 Pro & me S HugoレンダーフックによるMermaid.js A Org Babel + Hugo Kroki 純粋なOrg Babel実行 (PlantUML/Ditaa) B GUIツール (Excalidraw等) で作成し、SVG/PNG画像として挿入 レガシーなHugoショートコード C iFrame埋め込み アスキーアート (ditaa, GoAT) D 🤮 M社製品 (PowerPoint, Visio)で作成+バイナリ挿入 🤮 表で示しているように、個人的にはmermaid.js を使うのがベストです。 しかし、方法がそれほどシンプルではなく、 少し面倒だったので、書き残しておきます。 ...

6月 21, 2025 · 2 分 · Kaoru Babasaki

emacs の indirect buffer が便利だった

Emacsを使っていると、「このファイルの一部だけを別のウィンドウで編集したい…」「同じ内容だけど、表示モードを変えて見比べたい…」と思うことはありませんか? 自分は、よくありました。 そんな時に発見して感動した機能が、 Indirect Buffer です! この記事では、Indirect Bufferの基本的な概念から、使い方、注意点までを解説します。 Indirect Bufferとは? Indirect Bufferは、Emacsの特殊なバッファの一種で、別のバッファ(ベースバッファ と呼ばれます)の内容を「共有」するものです。 ファイルシステムのシンボリックリンクのようなもの、と言えばイメージしやすいかもしれません。 内容の共有: Indirect Bufferは、ベースバッファのテキスト内容(文字だけでなく、文字の色やフォントなどの テキストプロパティ も含む)を完全に共有します。一方での変更は、もう一方に即座に反映されます。 独立性: 内容は共有しますが、それ以外の点(バッファ名、カーソル位置、表示モードなど)は、Indirect Bufferとベースバッファでそれぞれ独立して設定できます。 ファイルとの関連: Indirect Buffer自体はファイルを直接開きませんが、ベースバッファはファイルを開くことができます。Indirect Bufferを保存しようとすると、実際にはベースバッファが保存されます。 Indirect Bufferの作り方 自分が調べた限りでは、 Indirect Bufferを作成する方法は、以下の3つでした。 M-x make-indirect-buffer: より汎用的な作成方法です。 ミニバッファを使って、ベースバッファとIndirect Bufferの名前を指定します。 M-x clone-indirect-buffer またはdoom emacs で SPC B c (clone-indirect-buffer-other-window または SPC B c): 現在開いているバッファをベースバッファとするIndirect Bufferを、素早く作成する方法です。 SPC B c は、新しいウィンドウでIndirect Bufferを開きます。 (org-mode内で) M-x org-tree-to-indirect-buffer (z n): 現在の subtree をIndirect Bufferとして開きます。 M-x doom/widen-indirectly-narrowed-buffer (z N)で、元のバッファに戻る 個人的には、1の方法は全く使わず、 2と3をよく使います。 手軽にIndirect Bufferを作れて、とても便利です! ...

3月 28, 2025 · 1 分 · Kaoru Babasaki