ClaudeのLaTeX数式出力をプレーンテキストに固定する方法
Claudeは数式をLaTeX形式で返すのが既定です。プレーンテキストに固定する指示文と、API・Claude Code・Claude.aiでの書き場所、効かないときの切り分けをまとめます。
Claudeの現行モデルは、数式や方程式、技術的な説明を既定でLaTeX形式(\frac{}{}や$...$のような記法)で返します。a/bやa^2のような素のテキスト表記に固定したいなら、プロンプトエンジニアリングガイドに載っている指示文を1つ足すだけです。書く場所は、APIのsystem、Claude CodeのCLAUDE.md、Claude.aiのプロジェクトや個人設定と、利用形態で変わります。
Claudeが数式をLaTeXで返すのは既定の挙動
何も指示しなければ、数式はLaTeX記法で出力されます。たとえば分数は\frac{1}{2}の形です。プロンプトエンジニアリングガイドの「LaTeX output」節は、これを特定のモデルの癖ではなく最新のモデルの既定として書いています。ページ冒頭が現行モデルとして挙げるのは、Claude Fable 5.1・Mythos 5.1・Fable 5・Mythos 5・Opus 5.5・Opus 5・Opus 4.8・Opus 4.7・Opus 4.6・Sonnet 5.5・Sonnet 5・Sonnet 4.6・Haiku 4.5の13モデルです。
チャット画面では組版された数式が読みやすい一方、ターミナルやログにそのまま貼るとバックスラッシュとドル記号が残ります。プレーンテキストのログやLaTeX未対応のUIに出力を流すなら、この既定をプロンプト側で上書きします。逆に、組版そのものを使いたい用途では上書きは不要です(例: Claudeで手書きノートをLaTeX教材に変換する方法)。
プレーンテキストに固定する指示文
ガイドが示す指示文は次のとおりです。
Format your response in plain text only. Do not use LaTeX, MathJax, or any markup
notation such as \( \), $, or \frac{}{}. Write all math expressions using standard text
characters (e.g., "/" for division, "*" for multiplication, and "^" for exponents).指示は3つの要素でできています。1つ目は「プレーンテキストのみで」という出力形式の指定です。2つ目は「LaTeX・MathJax・\( \)・$・\frac{}{}を使わない」という禁止の明示です。3つ目は除算に/、乗算に*、べき乗に^を使うという代替表記です。禁止だけで終わらせず、代わりの書き方まで添えるのがこの文の作りです。
二次方程式の解の公式で、指示の有無による出力の違いを並べます。
同じ質問への出力の違い(一例)
指示なし
$$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$のように、分数や平方根が組版用の記法で返ります。
指示あり
x = (-b ± sqrt(b^2 - 4ac)) / (2a)のように、/・sqrt()・括弧だけの表記になります。
指示文は平方根の書き方を指定していません。表記を揃えたいときは「平方根はsqrt()と書く」の1文を足します。
書き場所は利用形態で変わる
同じ指示文でも、置き場所は面ごとに違います。
面ごとの書き場所
Claude API
リクエストの
systemパラメーターに入れます。リクエスト単位で固定できます。Claude Code
CLAUDE.mdに書くか、起動時に--append-system-promptで渡します。Claude.ai
プロジェクトの指示か、アカウント全体の「Instructions for Claude」に書きます。
APIはsystemパラメーターに入れる
指示文はそのままsystemの値になります。JSONの文字列に入れるので、バックスラッシュは\\と二重に書きます。
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 1024,
"system": "Format your response in plain text only. Do not use LaTeX, MathJax, or any markup notation such as \\( \\), $, or \\frac{}{}. Write all math expressions using standard text characters.",
"messages": [{"role": "user", "content": "二次方程式の解の公式を教えてください"}]
}'Claude.aiのWebやモバイルアプリは、現在の日付を渡したり、コードスニペットを常にMarkdownで出させたりするシステムプロンプトを使っています。このプロンプトはAnthropicが更新するもので、APIには適用されません。API経由の呼び出しでは、数式の方針を呼び出すコードの側でsystemに持たせる設計になります。
Claude CodeはCLAUDE.mdか起動フラグに書く
Claude Codeでは、CLAUDE.mdに数式の方針を書くとセッションの開始時に読み込まれます。
## 出力の表記
- 数式はLaTeX・MathJaxを使わず、/ * ^ を使ったプレーンテキストで書く
- 平方根は sqrt() と書くCLAUDE.mdは強制される設定ではなく、Claudeが読むコンテキストです。公式のメモリのページも、指示は具体的で簡潔なほど守られやすいこと、複数のCLAUDE.mdで指示が食い違うとどちらかが任意に選ばれ得ることを書いています。数式の指示を複数のファイルに書き散らさず、1か所にまとめておくと食い違いを避けられます。
読み込まれる順序にも癖があります。作業ディレクトリとその上位にあるCLAUDE.mdは起動時に連結され、作業ディレクトリに近いものほど後に読まれます。サブディレクトリのCLAUDE.mdは、Claudeがそのディレクトリのファイルを読んだときに初めて加わります。数式の方針を書くなら、リポジトリ直下のファイルに置くのが確実です。個人の好みだけなら、Gitに入れないCLAUDE.local.mdが使えます。どのファイルがいつ読まれたかを調べたいときは、InstructionsLoadedフックでログを取れます。
システムプロンプトの水準で渡したいなら、起動フラグがあります。v2.1.289のヘルプには、次のように載っています。
--append-system-prompt <prompt> Append a system prompt to the default
system prompt
--system-prompt <prompt> System prompt to use for the session--append-system-promptは既定のシステムプロンプトを残したまま末尾に足し、--system-promptは置き換えます。数式の指示だけを足したいなら前者です。起動のたびに渡すので、対話での普段使いよりスクリプトや自動化に向いています。
同じヘルプには、--system-prompt-snapshotというフラグもあります。説明は「会話ごとにシステムプロンプトを1度だけ記録し、すべてのリクエストと再開でそのまま使い回す」です。指示文を書き換えながら--continueで同じ会話を続けると、直したはずの文が反映されないことがあります。公式のCLIリファレンスは、--append-system-promptの文面を調整している間は--system-prompt-snapshot offを使う例を挙げています。
Claude.aiはプロジェクトの指示か個人設定に書く
Claude.aiのチャットでは、書き場所が2つあります。プロジェクトの指示はそのプロジェクトのチャットにだけ効きます。アカウント全体に効くのは、左下のイニシャルから「Settings」を開いた先の「Instructions for Claude」で、書いた内容はすべての会話に反映されます。
同じヘルプは、プロジェクトは無料アカウントでも最大5つ作れるとしています。一方で、プロジェクトの指示を使い分ける節では、有料プラン向けの機能として書いています。無料プランでプロジェクトごとに数式の方針を分けるときは、指示欄が使えるかを画面で確かめます。
数式の表記を常にプレーンテキストにしたいなら個人設定、特定の教材づくりだけなら該当プロジェクトの指示、という分け方になります。応答言語の固定と同じ置き場所の考え方は、Claudeの応答言語をシステムプロンプトで固定する方法にもあります。
出力形式を制御する4つの原則を数式に当てはめる
ガイドの出力形式の節は、書式を誘導する方法を4つ挙げています。LaTeX抑制にも同じ原則が使えます。
| 原則 | 数式での当てはめ方 |
|---|---|
| 禁止ではなく望む形を伝える | 数式での当てはめ方「LaTeXを使わない」に加え、「標準的なテキスト文字で書く」と書く |
| XMLタグで出力範囲を区切る | 数式での当てはめ方<plain_text_math>のような独自タグで数式部分を挟み、中は/・*・^だけにすると指示する |
| プロンプトの書き方を望む出力に寄せる | 数式での当てはめ方プロンプト自身が数式をLaTeXなしで書く |
| 書式にこだわるなら具体的に書く | 数式での当てはめ方除算・乗算・べき乗・平方根の記号まで指定する |
数式を含む長い文書の一部だけをプレーンテキストにしたいなら、タグで区切る方法が合います。文書全体を縛る指示より、対象範囲が明示されるぶん、他の書式まで巻き込まずに済みます。
Claude Fable 5.1には別の注意があります。ガイドによれば、Fable 5.1は以前のモデルより装飾が少ないため、Markdownを抑える長い指示ブロックを重ねると必要な構造まで消えかねません。LaTeX抑制の1文は数式の記法だけが対象なので問題になりませんが、書式抑制の指示を何本も積むときは、モデルごとの既定の傾向を見ます。
Fable 5.1向けのガイドは、抑制の指示を消すか、「どんなときにどの書式を使うか」を述べる規則に置き換えることを案内しています。公式の例は「依頼されたとき、または内容が多面的で役立つときに箇条書きを使い、最小限の書式を求められたら見出しも箇条書きも太字も使わない」という趣旨です。数式にこの型を借りるなら、「数式を書くときは常に/・*・^のプレーンテキストで書き、それ以外の書式の判断は通常どおり行う」のように、数式の記法だけを範囲にした規則にします。範囲を数式に絞れば、見出しや表のような構造まで抑える指示にはなりません。
指示を入れてもLaTeXが混じるときの切り分け
LaTeXが残るときは、次の順に原因を絞ります。
LaTeXが残るときの確認順
- 1
プロンプトにLaTeXが残っていないか見る
プロンプト中の数式が
$や\frac{}{}で書かれていると、指示と食い違う見本を渡すことになります。指示文が禁止する記号を挙げる1文を除いて、プロンプトの数式をすべて/・*・^の表記に直してから再試行します。 - 2
実際の出力を機械的に検査する
目視では見落とすので、出力をファイルに保存して記法を検索します。次の例は、
\frac・\sqrt・\(・\[・$のいずれかを含む行を番号付きで出します。 - 3
指示が複数箇所に分かれていないか見る
Claude Codeなら、
CLAUDE.mdが複数階層にないか、起動フラグと内容が食い違っていないかを見ます。Claude.aiなら、個人設定とプロジェクトの指示に別々の数式方針が入っていないかを見ます。
grep -nE '\\(frac|sqrt|\(|\[)|\$' out.txt\frac{-b}{2a}や\(a\)を含む行は一致し、x = (-b + sqrt(b^2)) / (2a)のような整形済みの行は一致しません。$は金額の表記にも一致するので、価格を含む文書では出た行を目で確かめます。
プロンプトによる制御は出力の傾向を変える指示であって、機械的な保証ではありません。重要な出力は、上のような検査を通してから使います。
Claude Desktopの表示バグとは別の問題
この指示文が対象にするのは、Claudeが生成する数式の記法そのものです。一方、Claude Desktopの一部の面には、$...$形式のインライン数式が正しくレンダリングされない既知のissueがあります。こちらは生成物ではなく表示側の不具合で、原因と対処はClaude Desktopでインライン数式(LaTeX)が表示されない原因と対処法にまとめています。
数式をプレーンテキストにすれば、レンダリング対象の記法が出力されないので、この表示バグの影響も受けません。ただし組版された見た目は失われます。見た目を残したいなら、区切り記号を\(...\)に切り替える表示バグ側の回避策のほうが合います。どちらもCLAUDE.mdやシステムプロンプトに書く点は共通ですが、「表示を直す」のか「LaTeXを出さない」のかで、書く指示の中身が変わります。
まとめ
プレーンテキストへの固定は、指示文1つと書き場所の選択で済みます。ただし記法が消えても計算結果の正しさは保証されないため、重要な計算は専用の数学ソフトや手計算で検算してください。公式ヘルプも同じ注意を書いています(詳しくはClaude数式・計算の精度と検算が必要な理由)。