ChatGPTはブラウザ上でLaTeX数式を美しくレンダリングします。しかし、その会話を保存しようとすると、数式は生の $$ \int_0^\infty e^{-x^2} dx $$ ソースコードに変わってしまうか、さらに悪いことに、横倒しで印刷されるUnicodeの文字化けになってしまいます。
ここでは、エクスポート中に数式が壊れる理由と、すべてのフォーマットでそれを修正する方法を説明します。
なぜLaTeXはエクスポート時に壊れるのか
ChatGPTのウェブインターフェースはKaTeXを使ってLaTeXをレンダリングしており、各数式は組版されたSVGとHTMLを含む<span>になります。元のLaTeXソースはそのスパンに付加されたdata-属性として存在しています。
レンダリングされたページをコピーしたり、Chromeの「PDFに印刷」を使ったりすると、ブラウザは画面に表示されているものだけをキャプチャします。長いディスプレイ数式は途中で切れてしまいます。\Sigmaのようなインライン記号は、システムフォントにそのグリフがない場合、ランダムなUnicodeとして印刷されます。そして、実際のLaTeXを含むデータ属性は完全に失われます。
コピペでは数式が失われます。PDFに印刷すると壊れます。解決策は、レンダリング前にLaTeXソースを抽出し、エクスポートで明示的に再レンダリングすることです。
フォーマット別対策
ChatExport AIのPDFエクスポートを使用してください。すべてのLaTeXブロックを生のソースとして抽出し、バンドルされたKaTeXで鮮明なSVGにレンダリングし、最終的なPDFを構成します。インライン数式、ディスプレイ数式、行列、ビッグオー記法、積分、すべて完璧に組版されます。
数式を含む会話には、Chromeの組み込み「PDFに印刷」を決して使わないでください。その出力は真面目な用途には使えません。
Word(.docx)
.docxフォーマットにはネイティブの数式タイプ(Office Math)があります。ChatExport AIのWordエクスポートはデフォルトでLaTeXを等幅フォントで囲んだテキストとして出力します。Wordでは挿入 → 数式 → LaTeXを使ってこれを組版数式に変換できます。(直接のOffice Math出力は近日対応予定です。)
文書内ですぐに組版数式が必要な場合は、まずPDFとしてエクスポートし、そのPDFページを画像として.docxファイル内に埋め込んでください。
Markdown
簡単です。区切り文字をそのまま維持するだけです。$inline$と$$display$$は標準のCommonMark数式規則です。ChatExport AIのMarkdownエクスポートはこれらをバイト単位で保持します。
エクスポートされた.mdは以下の環境で数式をレンダリングします:
- Obsidian(v0.10以降ネイティブ対応)
- MkDocs Material(
pymdownx.arithmatex拡張機能使用) - VitePress(
markdown-it-mathjax3プラグイン経由) - Quartz(組み込み)
- GitHub Gist(2022年以降、Gist内の
$..$数式をレンダリング)
HTML(オフライン)
このフォーマットは堅牢です。ChatExport AIのHTMLエクスポートはKaTeXをファイル内に直接バンドルするため、インターネット接続がゼロでも数式がレンダリングされます。メールで送ったり、USBメモリにアーカイブしたり、10年後でも開ける、単一の自己完結型.htmlファイルが手に入ります。
JSON
自動化ワークフロー向け:ChatExport AIのJSONエクスポートは、メッセージごとに専用フィールド(content_latex)としてLaTeXソースを保持し、レンダリングされたフォールバックテキストも併せて出力します。クリーンなLaTeX文字列を必要とするRAGシステムやファインチューニングデータセットに最適です。
よくある落とし穴
落とし穴1:「チャットでは完璧に見えるのに、エクスポートすると壊れる」、その通りです。チャットはレンダリングされた出力を表示し、エクスポートはソースコードを取得します。エクスポートツールが再レンダリングしない場合、生の$$区切り文字がそのまま出てきます。
落とし穴2:「ChatGPTからWordに数式をコピーしたら全部おかしくなった」、WordはLaTeXを自動的にレンダリングしません。変換を処理してくれるエクスポートツールが必要です。
落とし穴3:「ギリシャ文字が□になって表示されるのはなぜ?」、ビューアのフォントにそれらのグリフがありません。HTMLやPDF内のKaTeXは数式をテキスト文字ではなく正しいベクターパスとしてレンダリングするため、この問題を回避できます。
数式が長すぎてレンダリングすらできない場合
中には印刷ページよりも幅の広い行列や証明があります。ChatExport AIのPDFエクスポートは自動的にディスプレイ数式をページ幅に合わせて縮小します。それでも行列が広すぎる場合、そのブロックだけ横長に切り替えます。
Markdownエクスポートでは、巨大な行列を手動で分割する必要があります。静的な文書フォーマットで「水平スクロール」を表現するポータブルな方法はありません。
試してみる
ChatExport AIを無料でインストールして、次の数式だらけのChatGPT会話を、適切に組版された数式とともにエクスポートしましょう。無料枠では1日5回のエクスポートが可能です。
関連リンク
- ChatGPT to PDF ガイド
- ChatGPTをMarkdownにエクスポートする方法
- 学生向け、数式だらけの学習ノートに。
- 研究者向け、LaTeXだらけの研究アーカイブに。