> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ja/latexer/25-missing-inserted.md).

# Missing $ inserted

## このエラーの修正方法

このエラーはさまざまな方法で発生し、特にLaTeX初心者にとっては、必ずしも *すぐに* なぜ起きたのか、そしてより重要なこととして、どう解決すればよいのかが明らかではありません。まずは、 *一般的な* このエラーを引き起こす条件の概要を示し、その後、より一般的な原因とその修正方法をいくつか挙げます。 [この記事の後半では](#background-to-the-missing-inserted-error) 理解を広げたい読者向けに、より詳しい内容を提供します。

**注**: この記事では「TeX」「LaTeX」「TeXエンジン」という用語を使いますが、それらの意味の違いが不明な場合は、Overleafの記事 [名前には何がある？: TeXのさまざまな味わいへのガイド](/latex/ja/xiang-xi-ji-shi/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md).

### Missing $ inserted の主な原因

(La)TeXがこのエラーを生成する主な理由は3つあります:

1. たとえば次のように、数式マークアップで明示的な誤りを犯している: `$y=f(x)$$`—この記事の後半で他の例を見ます。
2. TeXは、 **のみ** TeXが数式を組版しているときに使うために設計された文字またはコマンドを検出しましたが、その文字またはコマンドがTeXが **、** 数式を組版しているときに使われていました。
   * **TeX的に言えば**: TeXは、次のように動作するよう設計された文字またはコマンドを検出しました *内側で* [*数式モード*](#math-mode) を使おうとした *外側で* [*数式モード*](#math-mode)。数式モードで動作するように設計された「文字」の問題を明確にすると、ここで本当に意味しているのは、特定の [数式モード](#math-mode)カテゴリコード [が割り当てられた文字を使っている、ということです](/latex/ja/sononotopikku/43-table-of-tex-category-codes.md) 。それらは数式用の内容の内側で動作するよう設計されています。
3. TeXが使うためにのみ設計されたコマンドを検出しました **、** が数式を組版している間にそのコマンドが検出（使用）されたため、 **は** 数式的な सामग्रीを組版していました。
   * **TeX的に言えば**: TeXは、次のように動作するよう設計されたコマンドを検出しました *外側で* [*数式モード*](#math-mode) を使おうとした *内側で* [*数式モード*](#math-mode).

### エラーとその解決例

以下の例では、 `Missing $ inserted` エラーがどのように発生しうるかを示し、あわせてその解決方法も示します。

#### 記号コマンドは数式モードで使う必要がある

LaTeXの多くの数式記号は、TeXが数式を組版しているとき、つまりTeXが数式モードにあるときにのみ使うべきコマンドで参照します。

よく使われる記号コマンドの例には、ギリシャ文字のコマンドがあります: `\alpha` $$(\alpha)$$, `\beta` $$(\beta)$$, `\gamma` ($$\gamma)$$, `\delta` $$(\delta)$$, `\Delta` $$(\Delta)$$ などです。修飾子のような他の多くのLaTeXコマンドも: `\vec{x}` $$(\vec{x})$$, `\tilde{x}` $$(\tilde{x})$$, `\hat{x}` $$(\hat{x})$$ などは、数式モードで使うために設計されています。

修飾子、記号コマンド、そして他の多くの数式関連コマンドを、数式内容の組版以外の場面で使うと、 `Missing $ inserted` エラーが発生し、コンパイラは数式モードに入ることを強制されます。

次の例は、コマンド `\alpha` $$(\alpha)$$ を数式（モード）の外で使おうとすると何が起こるかを示しています:

```latex
\verb|\alpha| を数式モード外で書くとエラーが発生します: \alpha。そのため、このテキストは正しく組版されません...
```

[これを開く ***エラーを生じさせる*** Overleafでの例](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Incorrect+use+of+LaTeX+symbols\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AWriting+%5Cverb%7C%5Calpha%7C+outside+math+mode+will+generate+an+error%3A+%5Calpha+and+so+this+text+will+not+be+typeset+correctly...%0A%5Cend%7Bdocument%7D)

次の画像は、上のLaTeXコードによって生成された出力の一部を示しており、 `\alpha` を数式モード外で使ったことによるエラーを示しています:

![数式モード外の \alpha](/files/34bed46c16025550b58c9c39c11910dc7c17e4be)

**LaTeXの記号コマンドによるエラーの修正**

修飾子やギリシャ文字の数式記号を文中で使うには、必ず単一のドル記号で囲む必要があります `$...$`、またはLaTeXの `\(...\)` 構文を使って、TeXがそれらを *インライン数式モード*で処理できるようにします。以下に示します。

```latex
文中でギリシャ文字のアルファを書くときは、$\alpha$ を生成するには \verb|$\alpha$| と書くか、\(\alpha\) を生成する \verb|\(\alpha\)| と書く必要があります。

文中でベクトル x を書くときは、$\vec{x}$ を出力するには \verb|$\vec{x}$| と書くか、\(\vec{x}\) を出力する \verb|\(\vec{x}\)| と書く必要があります。
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+LaTeX+symbols\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AWhen+writing+the+Greek+letter+alpha+in+a+sentence%2C+it+must+be+written+as+%5Cverb%7C%24%5Calpha%24%7C+to+generate+%24%5Calpha%24%2C++or+as+%5Cverb%7C%5C%28%5Calpha%5C%29%7C+which+also+generates+%5C%28%5Calpha%5C%29.%0A+%0AWhen+writing+a+vector+x+in+a+sentence%2C+it+must+be+written+as+%5Cverb%7C%24%5Cvec%7Bx%7D%24%7C+to+produce+%24%5Cvec%7Bx%7D%24+or+as+%5Cverb%7C%5C%28%5Cvec%7Bx%7D%5C%29%7C+which+also+yields+%5C%28%5Cvec%7Bx%7D%5C%29.%0A%5Cend%7Bdocument%7D)

**LaTeXの記号一覧**

Overleafの記事 [ギリシャ文字と数式記号の一覧](/latex/ja/shu-xue/11-list-of-greek-letters-and-math-symbols.md) では、数式モード専用の記号一覧と、さらに役立つリソースへのリンクを紹介しています。

#### 数式モード専用文字を数式モード外で使う

伝統的に、TeX/LaTeXでは、いくつかの一般的な文字を数式モード内で使うために予約しています:

* `^`: 上付き文字を作るために予約されています
* `_`: 下付き文字を作るために予約されています
* `$`: 数式モードの開始/終了に予約されています

それらを数式モード外で直接使うとエラーになります。

* を入力するには `$` を数式モード外で使うには `\$`
* を入力するには `_` を数式モード外で使うには `\_`
* を入力する複数の方法 `^` を数式モード外で。一覧は次で提供されています: [tex.stackexchange](https://tex.stackexchange.com/a/77647)

**数式モード外でアンダースコアを使う**

よくある原因の1つは、 `Missing $ inserted` エラーが、アンダースコア（`_`）という数式モードの文字を数式モード外で使ってしまうことです。たとえばファイル名に含まれるアンダースコアがそれです。以下に例を示します。

```latex
ファイル名で数式文字、たとえばアンダースコアを使う: math_example.tex。
```

[これを開く ***エラーを発生させる*** Overleafのコード](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+code+error\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AUsing+a+math+character%2C+such+as+an+underscore%2C+in+a+file+name%3A+math_example.tex.%0A%5Cend%7Bdocument%7D)

アンダースコア文字には [カテゴリーコード8](/latex/ja/sononotopikku/43-table-of-tex-category-codes.md) が割り当てられているため、TeXエンジンが数式モードにあるときは下付き文字を作るために予約されています。その結果、(La)TeXが `_` を検出すると、 `math_example.tex` それを数式モード外で行うため、エラーが発生し、その後続のテキストの組版が誤ってしまいます:

$$\text{Using a math character, such as an underscore, in a file name: math}\_example.tex.$$

その `_` 文字（技術的にはカテゴリーコード8）がエラーを引き起こし、TeXを数式モードに入らせます: その直後の文字 `e` は、 `_` の下付き文字として組版される文字として扱われます。その後の処理は数式モードで続行されるため、斜体のテキストになります。さらに、ここではTeXが数式モードをきれいに終了する方法がないため、追加のエラーが発生します。

この特定のエラーを避けるには、必ず `_` を数式モードで使う必要があります—つまり、 `$..$`, `$$...$$` の中で、あるいはできればLaTeXの記法である `\(...\)` と `\[...\]`.

数式モード外では、 `\_` と書いてアンダースコアを使うか、表示する必要があります。修正版の例に示すとおりです:

```latex
ファイル名で数式モードのアンダースコア文字を使うには、このように書きます: math\_example.tex。
```

[これを開く ***修正版*** Overleafで](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Fixed+math+code+error\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0ATo+use+the+math-mode+underscore+character+in+a+file+name%2C+write+it+like+this%3A+math%5C_example.tex.%0A%5Cend%7Bdocument%7D)

**URLでアンダースコアを使う**

アンダースコアを含むURLを組版しようとしたときにも、このエラーに遭遇することがあります。たとえば `[https://www.overleaf.com/learn/latex/Subscripts_and_superscripts](../02-mathematics/02-subscripts-and-superscripts.md)`。各アンダースコアをエスケープする代わりに、 `url` または `hyperref` パッケージを読み込み、その後 `\url` コマンドを次のように使うとよいでしょう:

```latex
\documentclass{article}
\usepackage{url}
\begin{document}
\url{https://www.overleaf.com/learn/latex/Subscripts_and_superscripts}
\end{document}
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=URL+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Burl%7D+%0A%5Cbegin%7Bdocument%7D%0A%5Curl%7Bhttps%3A%2F%2Fwww.overleaf.com%2Flearn%2Flatex%2FSubscripts_and_superscripts%7D%0A%5Cend%7Bdocument%7D)

**.bibファイル内のURLのアンダースコア**

そのようなURLが参考文献 `.bib` ファイルに含まれており、そのため `.bbl` ファイルからエラーが報告される場合は、 `url` または `doi` フィールドを使って、これらの項目を `.bib` ファイルに記録していることを確認してください:

```
doi = {10.1007/978-94-015-6859-3_4},
url = {https://abc.com/latest_news_1.html}
```

を読み込み、必要であればプリアンブルで `url` または `hyperref` パッケージも読み込んでください。そうすれば、たいていの文献スタイルファイルはこれらの値を自動的に `\url{...}` コマンドで囲めるようになります。

#### 数式モードで許可されていないコマンドを使う

いくつかの低レベルのTeX組み込みコマンド（ *プリミティブ*と呼ばれる）は数式モードでは許可されておらず、数式モードで使うと `Missing $ inserted` エラーが発生します。通常、日常的なLaTeXコードでこれらのコマンドを使うことは少ないですが、数式モードで使われるLaTeXコマンド（マクロ）の中に含まれている可能性があるため、ここで触れておきます。

次の例では、TeXコマンド `\vskip` を数式的な内容の内側で使おうとしています。これは許可されておらず、エラーを生成します。

```latex
\documentclass{article}
\begin{document}
少し空白を入れたいのですが、これがそのやり方ではありません...
\[y=f(x) \vskip5pt z=f(y)\]
$y=f(x) \vskip5pt z=f(y)$
\end{document}
```

[これを開く ***エラーを発生させる*** Overleafのコード](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AI+want+to+add+some+space%2C+but+this+is+not+the+way+to+do+it...%0A%5C%5By%3Df%28x%29+%5Cvskip5pt+z%3Df%28y%29%5C%5D%0A%24y%3Df%28x%29+%5Cvskip5pt+z%3Df%28y%29%24%0A%5Cend%7Bdocument%7D)

TeXが数式モードにあるときに許可されていない他のTeX（プリミティブ）コマンドには `\par`, `\hrule`, `\unvbox`, `\unvcopy` と `\valign`.

#### 数式中の空行

```latex
\documentclass{article}
\begin{document}
\begin{equation}
y=x^3,

z=x^3
\end{equation}
\end{document}
```

[これを開く ***エラーを発生させる*** Overleafのコード](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bequation%7D%0Ay%3Dx%5E3%2C%0A%0Az%3Dx%5E3%0A%5Cend%7Bequation%7D%0A%5Cend%7Bdocument%7D)

**原因**: 式の間の空行は、数式モードでは許可されていない `\par` コマンドに変換されます。これを確かめるには、次のように書いてもわかります

```latex
\documentclass{article}
\begin{document}
\[y=x^3,\par z=x^3\]
\end{document}
```

[これを開く ***エラーを発生させる*** Overleafのコード](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5C%5By%3Dx%5E3%2C%5Cpar+z%3Dx%5E3%5C%5D%0A%5Cend%7Bdocument%7D)

これを修正するには、空行を削除するかコメントアウトします:

```latex
\documentclass{article}
\begin{document}
\begin{equation}
y=x^3,
% これで空行は抑制されます
z=x^3
\end{equation}
\end{document}
```

[これを開く ***修正版*** Overleafで](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bequation%7D%0Ay%3Dx%5E3%2C%0A%25+This+will+suppress+the+blank+line%0Az%3Dx%5E3%0A%5Cend%7Bequation%7D%0A%5Cend%7Bdocument%7D)

#### 数式環境内で $ を使う

いくつかのLaTeX環境、たとえば `align` と `equation` 環境では、数式を `$` 記号で囲む必要も、LaTeXの数式構文を使う必要もありません: `\(...\)` または `\[...\]`それらの環境を実装するLaTeXコードが、数式モードへの出入りを担当しているからです。

次の例は、 `$` 記号を `amsmath` `align` 環境内で使った例を示しており、 `Missing $ inserted` エラーが、他にも多数発生します....

```latex
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
$2x - 5y &=  8 \\
3x + 9y &=  -12$
\end{align*}
\end{document}
```

[これを開く ***エラーを発生させる*** Overleafのコード](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+4\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bamsmath%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Balign%2A%7D%0A%242x+-+5y+%26%3D++8+%5C%5C+%0A3x+%2B+9y+%26%3D++-12%24%0A%5Cend%7Balign%2A%7D%0A%5Cend%7Bdocument%7D)

これらの方程式の正しい書き方は次のとおりです:

```latex
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
2x - 5y &=  8 \\
3x + 9y &=  -12
\end{align*}
\end{document}
```

[これを開く ***修正版*** Overleafで](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+5\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bamsmath%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Balign%2A%7D%0A2x+-+5y+%26%3D++8+%5C%5C+%0A3x+%2B+9y+%26%3D++-12%0A%5Cend%7Balign%2A%7D%0A%5Cend%7Bdocument%7D)

## Missing $ inserted エラーの背景

次のセクションは、エラーの背後にある理由をよりよく理解したい読者向けです `Missing $ inserted`。必須の *内容ではありません* が、エラーの発見と修正に役立つかもしれません。

### 不足している $ 記号はないのに、それでもエラーが出る

場合によっては、 `Missing $ inserted` エラーはとても紛らわしく、LaTeXコード自体には実際には *目に見えて欠けている* `$` 文字の問題がないように見えることがあります。たとえば、LaTeXの断片 $$\verb|$$y=f(x)\par$$|$$ 一見すると正しく見えます: $$\verb|$$|$$ の組はバランスしていますが、「`Missing $`」エラーを引き起こします。ここでは、 `\par` コマンドが数式モードでは許可されていないことが原因です:

```latex
\documentclass{article}
\begin{document}
この例では、\verb|Missing $ inserted| エラーが発生します:
$$y=f(x)\par$$
\end{document}
```

[これを開くと Missing $ inserted エラーが見られます](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AThis+example+generates+the+error+%5Cverb%7CMissing+%24+inserted%7C%3A+%0A%24%24y%3Df%28x%29%5Cpar%24%24%0A%5Cend%7Bdocument%7D)

上のLaTeXコードは実際には *連鎖的な* エラーを引き起こします。以下に示すとおりです。したがって、明らかに `\par` を数式の中で使ってはいけません!

```
! Missing $ inserted.
<inserted text>
                $
l.12 $$y=f(x)\par
                 $$
私は begin-math/end-math の記号を挿入しました。なぜなら
あなたが1つ抜かしたのだと思うからです。どうか無事に進みますように。

! Display math should end with $$.
<to be read again>
                   \par
l.12 $$y=f(x)\par
                 $$
たった今見た `$' は、前の `$$' と対応しているはずです。
ですから、両方とも `$$' と入力したのだと仮定します。

! Missing $ inserted.
<inserted text>
                $
l.13 \end{document}

私は begin-math/end-math の記号を挿入しました。なぜなら
あなたが1つ抜かしたのだと思うからです。どうか無事に進みますように。

! Display math should end with $$.
<to be read again>
                   \par
l.13 \end{document}

たった今見た `$' は、前の `$$' と対応しているはずです。
ですから、両方とも `$$' と入力したのだと仮定します。
```

その `Missing $ inserted` エラーが発生するとき、TeXエンジンのソフトウェアは、そのエラーが起きた箇所以降の処理を続けられるように回復し、「元の軌道に戻そう」としています。セクション [上級編: TeXのエラー回復機構の説明](#advanced-an-explanation-of-texs-error-recovery-mechanism) は、TeXが最初のエラーを修正しようとした結果として、なぜこのようなエラーの連鎖が起きるのかを理解する助けになります。

### モードについて、そして

内部では、TeXエンジンは *モード*と呼ばれる3つの「心の状態」を使って動作しており、それらはTeXエンジンが *現在* 組版している内容の種類によって決まります。TeXエンジンが組版の途中でどの状態にあるかを、その *ページ* モードと呼びます。このモードは、LaTeX文書の内容を組版する過程で変化します。

TeXエンジンの各モードには、現在のTeXのモードと「互換性のない」コマンドや文字（より正確にはカテゴリーコード）があり、それらはTeXがその特定のモードにある間は使うべきではありません。そうした不適切な文字やコマンドを使おうとすると、TeXは `Missing $ inserted` のようなエラーを出して、何かおかしいことを知らせます。

#### 数式モード

このエラーは `Missing $ inserted` TeXの *数式モード*—つまり、LaTeXに数式を組版させようとしたときにTeXエンジンがいるモード—に関係しています。

念のため付け加えると、 *2つ* の数式モードがあり、インライン数式とディスプレイ数式の作成に対応しています:

* インライン数式モード
* ディスプレイ数式モード

TeXがこの2種類の数式モードを必要とするのは、インライン用とディスプレイ用の数式を組版するときに、間隔や記号サイズなどに異なる規則を適用するからです。

#### TeXの数式モードを発動する

TeXエンジンを *数式モードに入らせる* その後 *数式モードから出させる* 方法は複数あります。

* たとえば、次のような明示的なマークアップを使えます:
  * LaTeX構文: `\(...\)` を *数式モードに入らせる* `\(` その後 *数式モードから出させる* `\)` でインライン数式モードに入り、あるいは `\[...\]` を *数式モードに入らせる* `\[` その後に出る `\]` ディスプレイ数式モード;
  * (歴史的な) TeX構文: `$...$` に入るには（最初の `$`）次に出るには（2つ目の `$`）インライン数式モード、または `$$...$$` に入るには（最初の `$$` *の組*）次に出るには（2つ目の `$$` *の組*）ディスプレイ数式モード;
* または、LaTeXの任意の数式環境:
  * `\begin{align}...\end{align}` など。内部的には、これらの環境が数式モードへの出入りを処理してくれます。

実際の *テキスト* はメッセージの `Missing $ inserted` は *組み込まれて* TeXエンジンソフトウェアに（「ハードコード」された）もので、そのため `Missing $` を使っていなくても、 `$` 数式を組版する文字を使わず、文書中の数式を純粋にLaTeX構文でマークアップしていても、これが表示されます。LaTeXの新しい利用者には紛らわしいかもしれませんが、TeXエンジンのソースコードを変更しない限り、このエラーメッセージの文言を変えることはほとんどできません!

#### マクロ: 数式モードの判定

プリミティブコマンド `\ifmmode`を使えば、TeXが現在数式モードにあるかどうかを判定できます。そのようにして、モード関連のエラーを避けるよう挙動を変えられるマクロを書けます。以下は原理を示すごく基本的な例で、 `はい。` または `いいえ。` を出力します。これは、マクロを「実行」する時点でTeXが数式モードにあるかどうかによって変わります。

```latex
\documentclass{article}
\begin{document}
\newcommand{\mytest}{\ifmmode \mathrm{Yes}\else No\fi.}

このマクロは数式モードで使われていますか? $\mytest$

このマクロは数式モードで使われていますか? $$\mytest$$

このマクロは数式モードで使われていますか? \(\mytest\)

このマクロは数式モードで使われていますか? \[\mytest\]

このマクロは数式モードで使われていますか? \mytest
\end{document}
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Testing+for+math+mode\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cnewcommand%7B%5Cmytest%7D%7B%5Cifmmode+%5Cmathrm%7BYes%7D%5Celse+No%5Cfi.%7D%0A%0AIs+the+macro+being+used+in+math+mode%3F+%24%5Cmytest%24%0A%0AIs+the+macro+being+used+in+math+mode%3F+%24%24%5Cmytest%24%24%0A%0AIs+the+macro+being+used+in+math+mode%3F+%5C%28%5Cmytest%5C%29+%0A%0AIs+the+macro+being+used+in+math+mode%3F+%5C%5B%5Cmytest%5C%5D%0A%0AIs+the+macro+being+used+in+math+mode%3F+%5Cmytest%0A%5Cend%7Bdocument%7D)

次の図は、上の例によって生成された出力を示しています:

![数式モードをテストするLaTeXマクロ](/files/9bfc3de38c7f2947c73868aaee683e086d43e246)

## 上級編: TeXのエラー回復機構の説明

このエラーメッセージは `Missing $ inserted` Overleaf、LaTeX、またはLaTeXパッケージが出力しているのではありません。実際には *実行可能プログラムの内部から* あなたのLaTeX文書の組版を担当する実行可能プログラムから来ています: その実行可能プログラムはTeX *エンジン*と呼ばれます—これは組版プロセスを「動かしている」と考えるとよいでしょう。

TeXソフトウェアのソースコードの中で、その作者（Donald Knuth）は、 `Missing $ inserted` エラー:

> ユーザーが誤って数式モードに入ったり出たりしたと思われるケースの一覧です。TeXはドル記号を挿入し、現在のトークンを再スキャンします。

の核心にあるのは `Missing $ inserted` 、TeXが数式モード内で使われるべきではない「何か」または、数式組版用に明確に設計された「何か」が数式モード外で使われていることを検出する点です。

TeXにとっての課題は、これをどう回復するか、です。TeXはKnuthが書いたとおりに動きます。ドル記号を挿入し、現在のトークンを再スキャンします— [「トークン」](/latex/ja/xiang-xi-ji-shi/53-what-is-a-tex-token.md) とは、TeXが直前に読み込んだ文字やコマンドを表す、TeX内部の数値（整数）値のことです。ただし、エラーの厳密な文脈によって、この戦略がうまくいく場合もあれば、いかない場合もあります—エラー文が言うように「どうか無事に進みますように。」です!

### 実例

次の例を詳しく見ながら、Knuthのコメントを探ってみましょう: $$\verb|$y=f(x)$$\vskip3pt|$$。下のコードを開くと、次のエラーが発生することがわかります `Missing $ inserted`.

```latex
\verb|$y=f(x)$$\vskip3pt| と書くと...$y=f(x)$$\vskip3pt 新しい行を開始...
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=A+missing+%24+inserted+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AWriting+%5Cverb%7C%24y%3Df%28x%29%24%24%5Cvskip3pt%7C+produces...%24y%3Df%28x%29%24%24%5Cvskip3pt+Start+new+line...%0A%5Cend%7Bdocument%7D)

なぜこれでエラーになるのかを確認するために、各 $$\verb|$|$$ を識別するための下付き文字を式に付けて、 $$\verb|$|*{\mathtt1}\verb|y=f(x)|\verb|$|*{\mathtt2}\verb|$|*{\mathtt3}\verb|\vskip3pt|$$を得ます。TeXは最初の部分を正しく処理できます $$\verb|$|*{\mathtt1}\verb|y=f(x)|\verb|$|*{\mathtt2}$$ これは正しく整形されたインライン数式として扱われ、 $$y=f(x)$$を生成します。 $$\verb|$|*{\mathtt2}$$ それを処理した直後、TeXはいったんインライン数式モードを抜けます—この例では、段落内でインライン数式を作っているので、いわゆる *水平モード*.

に一時的に入ります。 $$\verb|$|\_{\mathtt3}$$ 次に起こることがエラーを引き起こします。TeXは $$\verb|\vskip|$$ を処理し続け、それがTeXを再びインライン数式モードに入らせます。TeXは次のトークンを読みますが、それは $$\verb|3pt|$$コマンドです—まだ $$\verb|\vskip|$$ を読んではいません。ここでTeXは $$\verb|\vskip|$$ を見ますが、インライン数式モードにいます:

> はそこでは許可されていないため、Knuthが述べたTeXのエラー処理が発動します:

ここで現在のトークンは $$\verb|\vskip|$$ コマンドなので、TeXが行うのは1つの *新しい* `$` その入力に、これを入れるとしましょう $$\verb|$|*{\mathtt4}$$。この時点では、TeX はまだインライン数式モードだが、今度は再び、〜に相当するものを読み取る $$\verb|$|*{\mathtt4}\verb|\vskip|$$ これはインライン数式モードで読み取られる。 $$\verb|$|\_{\mathtt4}$$、TeX 自身が挿入したものが、今では *閉じる* 現在のインライン数式モードを終了し、TeX は続けてその $$\verb|\vskip|$$ コマンド *外側で* インライン数式モード—ここでは、TeX は段落中にあるので、 $$\verb|\vskip3pt|$$ 現在の段落を終了させ、 $$\verb|3pt|$$ その後に置かれる空白の量。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ja/latexer/25-missing-inserted.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
