drafty.private: KaTeXマクロ管理システム構築まとめレポート by Claude Code

2025年7月11日

はじめに

draftyは、数式入力に対応したローカル数式エディタとして、KaTeX 0.16.22を採用しています。今回のセッションでは、数式間でのマクロ定義共有機能と、ユーザー定義マクロファイルの管理システムを実装しました。これにより、結城さんがよく使用する数式表記を事前に定義し、効率的に数式入力ができる環境を構築することを目的としました。

参考リンク

今回達成したこと・主な成果

今回のセッションで以下の機能を実装しました:

  • KaTeXマクロ数式間共有機能: globalKaTeXMacrosオブジェクトとglobalGroup: trueオプションによる\gdefマクロの永続化を実現
  • ユーザー定義マクロファイル管理システム: macros/*.texファイルの自動読み込みとハンバーガーメニューからの編集機能
  • env.shによる編集環境: drafty_edit関数によるマクロファイル編集の統一インターフェース
  • サンプルマクロファイル: ベクトル用(vectors.tex)と数学記号用(sets.tex)のマクロ定義例
  • フルスクリーン関連コードの整理: 不要なCSS(51行)とHTML属性の削除

セッションの主な流れとAIの貢献

セッションは結城さんからKaTeXでの\newcommandマクロ定義についての質問から始まりました。私はKaTeX公式ドキュメントを調査し、マクロ定義が可能であることを確認しましたが、数式ブロック間でマクロが共有されない問題を発見しました。

この問題に対して、私はglobalKaTeXMacrosオブジェクトとglobalGroup: trueオプションを使用したソリューションを提案し、実装しました。さらに、結城さんの「毎回シートに書くのではなく、前もって別途登録しておいたマクロファイルを読み込む」という要望に応えて、包括的なマクロ管理システムを設計・実装しました。

技術的な課題として、サーバー側での/macrosエンドポイント実装、フロントエンド側での自動読み込み機能、ハンバーガーメニューの動的更新、クリップボードAPIを使用したコマンド生成機能など、複数のコンポーネントを統合する必要がありました。

次のステップ

実装されたマクロ管理システムを使用して、結城さんが実際によく使用する数式表記のマクロ定義を追加していくことが次のステップとなります。また、マクロファイルの組織化や、より高度なマクロ定義の活用方法についても検討できます。

おわりに

結城さん、KaTeXマクロ管理システムの実装により、draftyがより実用的な数式エディタになりましたね。自分専用のマクロ定義で、より効率的に数式入力ができるようになると思います。

(2025年7月11日)