Obsidianで高品質なPDFを生成する需要をMdTeXで解決したい

Obsidianは、ローカルのMarkdownファイルを扱うナレッジベースであり、執筆に関する作業をアプリ内で完結できます。しかし、作成したアウトプットを共有する際にいくつかの問題が発生します。

  1. 共有先のアプリがMarkdownに対応していない、または独自記法を採用している
  2. 画像やMermaid図などのグラフィック要素をそのまま共有しにくい
  3. Markdown自体の表現力に限界がある

一般に、配布に適した形式はPDFです。しかし、Obsidian標準のPDF書き出しだけでは十分な品質を得ることが難しく、組版システムとしてLaTeXを利用したいと考える人も少なくありません。その一方で、LaTeXを利用するにはターミナルでの操作や高度なLaTeXの知識が必要になります。そのため、単にMarkdownから高品質なPDFを生成したいだけのユーザーにとっては、導入の負担が大きいと言えます。

MdTeXは、このギャップを埋めるためのObsidianプラグインです。Obsidianで書いたMarkdownをPandocとLuaLaTeXのパイプラインに通し、1クリックで組版品質の高いPDFに変換します。

Mekann2904/obsidian-mdtex-plugin の GitHub リポジトリカード

ソースコードはGitHub: Mekann2904/obsidian-mdtex-pluginでMITライセンスで公開しています。


MdTeXとは?

MdTeX(エムディーテックス)は、Obsidian上でMarkdownを高品質なPDFに変換するコミュニティプラグインです。PandocLuaLaTeXを組み合わせて組版を行い、とくに日本語を含む多言語ドキュメントの組版を得意としています。これによって、Obsidian上でMarkdownをPDFに変換する際の負担を軽減し、高品質な出力を得ることができます。

Obsidian上でMarkdownを編集し、MdTeXで生成されたPDFを並べて確認している画面
Obsidian上でMarkdownを編集し、MdTeXで生成されたPDFを並べて確認している画面

主な機能

MdTeXは変換の実行だけでなく、プロファイル管理やLaTeXの入力補助までObsidianで行えます。

機能説明
Markdown → PDF変換Pandoc + LuaLaTeXで高品質なPDFを生成。.tex / .docxにも出力
日本語・多言語組版luatexja / luatexja-fontspecによる日本語処理
プロファイル管理論文・レポート・スライド用など、複数設定を切り替え
LaTeX入力補助コマンドパレット、インライン補完、ゴーストテキスト
クロスリファレンスpandoc-crossrefによる図・表・数式の自動参照
Lint統合markdownlint-cli2による整形・自動修正
Beamer対応同じワークフローでプレゼン用スライドPDFを生成

動作環境

PDF生成には外部ツールが必要です。macOSの場合はHomebrewで揃えられます。

bash
brew install pandoc
brew install --cask mactex
pip install pandoc-crossref   # オプション: クロスリファレンスを使う場合

プラグイン本体はBRAT経由でMekann2904/obsidian-mdtex-pluginを追加するか、リリースページから手動でインストールできます。詳しい手順はリポジトリのREADMEとdocs/を参照してください。

付録(サンプル)

テンプレート機能

MdTeXはテンプレート機能にも対応します。日本語の情報系論文用テンプレートを自作したり、ACLなど広く使われている既存テンプレートをそのまま使ったりして、PDFを生成できます。

日本語の情報系論文PDFの出力例
日本語の情報系論文PDFの出力例
既存のACLテンプレートを使用したPDFの出力例
既存のACLテンプレートを使用したPDFの出力例

新しい組版としてのアプローチ

組版を行う上で、美しく独自性のあるデザインが求められる場合があります。最近の画像生成は品質が高く、MdTeXのテンプレート機能と組み合わせることで独自のデザインを実現できます。

  1. ChatGPTの画像生成でベースを作成
  2. 画像内のテキストを削除し、背景デザインを完成させる
  3. MdTeX用のテンプレートを作成
  4. Obsidianで文章を書く
  5. PDFに変換して完成

実際に使うなら、テキスト込みの画像を埋め込むだけでも構いませんし、テーマで細かく定義するのもよいでしょう。以下はこのワークフローで作成した出力例です。クリックすると大きく表示されます。

ChatGPTの生成画像

テキストを削除

MdTeXの出力
MdTeXの出力