> 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/zh-tw/latex-cuo-wu/25-missing-inserted.md).

# 已插入缺少的 $

## 如何修正這個錯誤

這個錯誤可能以不同方式觸發，尤其對 LaTeX 新手而言，這並不總是 *立刻* 顯而易見為什麼會發生，或者更重要的是，如何解決。我們先從 *一般* 會觸發此錯誤的條件開始，然後列出一些較常見的原因以及如何修正它們。 [本文後半部分](#background-to-the-missing-inserted-error) 為希望加深理解的讀者提供更深入的內容。

**注意**：在本文中我們使用「TeX」、「LaTeX」和「TeX 引擎」這些詞語，但如果你不確定它們各自的不同含義，可以在 Overleaf 文章中了解 [名稱有什麼玄機：TeX 各種風味指南](/latex/zh-tw/shen-ru-wen-zhang/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md).

### 遺失 $ 插入的主要原因

（La）TeX 產生此錯誤有三個主要原因：

1. 你在數學標記中犯了明顯的錯誤，例如寫成 `$y=f(x)$$`——我們稍後會在本文中查看其他範例。
2. TeX 已偵測到一個設計用來在 **僅** 當 TeX 正在排版數學內容時使用的字元或命令，但該字元或命令卻被用在 TeX **不是** 正在排版數學內容時。
   * **從 TeX 的角度來說**：TeX 偵測到一個設計用來在 *內* [*數學模式*](#math-mode) 但你卻試著在 *外* [*數學模式*](#math-mode)。為了澄清「字元」在 [數學模式](#math-mode)中被設計用來運作的字元，我們真正的意思是使用被指定某些 [類別碼](/latex/zh-tw/geng-duo-zhu-ti/43-table-of-tex-category-codes.md) 、且設計用於在數學內容內運作的字元。
3. TeX 已偵測到一個設計為只在 TeX **不是** 正在排版數學內容時使用的命令，但該命令是在 TeX **正在** 排版數學內容時被偵測到（使用到）。
   * **從 TeX 的角度來說**：TeX 偵測到一個設計用來在 *外* [*數學模式*](#math-mode) 但你卻試著在 *內* [*數學模式*](#math-mode).

### 錯誤與其解法範例

以下範例示範了這個 `缺少插入的 $` 錯誤如何被觸發，以及如何提供解決錯誤的方法。

#### 符號命令必須在數學模式中使用

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})$$ 等，也都設計為在數學模式中使用。

在排版數學內容之外使用修飾符、符號命令——以及許多其他與數學相關的命令——將會產生一個 `缺少插入的 $` 錯誤，並迫使編譯器進入數學模式。

以下範例顯示如果你嘗試使用命令 `\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/c4caf036b939783b7cabe12853f2cba4d19e0809)

**修正由 LaTeX 符號命令造成的錯誤**

若要在句子中使用修飾符或希臘數學符號，必須始終將它們包在單個美元符號 `$...$`中，或者使用 LaTeX 的 `\(...\)` 語法，讓 TeX 以 *行內數學模式*處理它們，如下所示。

```latex
在句子中寫希臘字母 alpha 時，必須寫成 \verb|$\alpha$| 才能產生 $\alpha$，或寫成 \verb|\(\alpha\)|，也同樣會產生 \(\alpha\)。

在句子中寫向量 x 時，必須寫成 \verb|$\vec{x}$| 才能產生 $\vec{x}$，或寫成 \verb|\(\vec{x}\)|，也同樣會產生 \(\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/zh-tw/shu-xue/11-list-of-greek-letters-and-math-symbols.md) 提供僅限於數學模式的符號清單，以及進一步實用資源的連結。

#### 在數學模式之外使用僅限數學模式的字元

傳統上，TeX/LaTeX 會保留某些常見字元供數學模式中使用：

* `^`：保留用於建立上標
* `_`：保留用於建立下標
* `$`：保留用於開始／停止數學模式

直接在數學模式之外使用它們會引發錯誤。

* 若要輸入 `$` 在數學模式之外請使用 `\$`
* 若要輸入 `_` 在數學模式之外請使用 `\_`
* 輸入 `^` 在數學模式之外的多種方式。清單可見於 [tex.stackexchange](https://tex.stackexchange.com/a/77647)

**在數學模式之外使用底線**

常見的 `缺少插入的 $` 錯誤原因之一，是在數學模式之外使用底線（`_`），這是數學模式字元，例如檔名中出現的底線：下方示範了一個例子。

```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/zh-tw/geng-duo-zhu-ti/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 命令（稱為 *原始指令*）在數學模式中是不允許的，而在數學模式中使用它們將觸發 `缺少插入的 $` 錯誤。雖然大多數使用者在日常 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 的表示法`。實作這些環境的 LaTeX 程式碼會負責進入與離開數學模式。

以下範例顯示在 `$` 環境中使用 `amsmath` `align` 符號，這會觸發一個 `缺少插入的 $` 錯誤，以及其他許多錯誤……

```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)

## 遺失 $ 插入錯誤的背景

以下章節供希望更深入理解 `缺少插入的 $`此錯誤背後原因的讀者閱讀 *。它不是* 必讀內容，但可能有助於你尋找並修正錯誤。

### 沒有缺少 $ 符號，但我仍然得到這個錯誤

在某些情況下， `缺少插入的 $` 錯誤可能非常令人困惑，因為你的 LaTeX 程式碼實際上可能沒有任何 *明顯遺失* `$` 字元的問題。例如，LaTeX 片段 $$\verb|$$y=f(x)\par$$|$$ 表面上看起來正確： $$\verb|$$|$$ 對是平衡的，但它會觸發「`遺失 $`」錯誤。在這裡，原因是 `\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` 數學中使用

```
! 遺失 $ 插入。
<插入的文字>
                $
l.12 $$y=f(x)\par
                 $$
我已插入一個數學開始／數學結束符號，因為我認為
你漏掉了一個。請繼續，希望一切順利。

! 顯示數學應以 $$ 結束。
<待再次讀取>
                   \par
l.12 $$y=f(x)\par
                 $$
我剛才看到的 `$' 據稱與先前的 `$$' 相符。
所以我將假設你兩次都輸入了 `$$'。

! 遺失 $ 插入。
<插入的文字>
                $
l.13 \end{document}

我已插入一個數學開始／數學結束符號，因為我認為
你漏掉了一個。請繼續，希望一切順利。

! 顯示數學應以 $$ 結束。
<待再次讀取>
                   \par
l.13 \end{document}

我剛才看到的 `$' 據稱與先前的 `$$' 相符。
所以我將假設你兩次都輸入了 `$$'。
```

當 `缺少插入的 $` 錯誤發生時，TeX 引擎軟體正在嘗試復原並「回到正軌」，以便在錯誤發生點之後繼續處理。章節 [進階：TeX 錯誤復原機制的解釋](#advanced-an-explanation-of-texs-error-recovery-mechanism) 將幫助你理解，為什麼這種連鎖錯誤會因 TeX 試圖修正最初錯誤而產生。

### 關於模式，以及何時

在內部，TeX 引擎以三種「心理狀態」運作，稱為 *模式*，這取決於 TeX 引擎目前正在排版的材料類型。 *目前* TeX 引擎在排版過程中的任何時刻所處的模式稱為其 *目前的* 模式，而這會在排版你的 LaTeX 文件內容的過程中不斷改變。

對於 TeX 引擎的每一種模式，都有某些命令與字元（更準確地說，是類別碼）與 TeX 目前的模式「不相容」：當 TeX 處於該特定模式時，不應使用它們。如果你嘗試使用這些不適當的字元或命令，TeX 會發出例如 `缺少插入的 $` 的錯誤，告訴你有些地方出了問題。

#### 數學模式

這個錯誤 `缺少插入的 $` 與 TeX 的 *數學模式*有關——也就是說，當你要求 LaTeX 排版某些數學內容時，TeX 引擎所處的模式。

僅為完整起見，我們要指出有 *兩種* 數學模式，反映了行內或顯示數學的建立：

* 行內數學模式
* 顯示數學模式

TeX 需要這兩種不同的數學模式，因為它在排版供行內或顯示使用的數學時，會套用不同的間距、符號大小等規則。

#### 觸發 TeX 數學模式

有多種方式可以讓 TeX 引擎 *進入* ，然後 *離開* 數學模式。

* 你可以使用明確的標記，例如：
  * LaTeX 語法： `\(...\)` 到 *進入* `\(` 然後 *離開* `\)` 行內數學模式，或 `或更理想地，在 LaTeX 的表示法` 到 *進入* `\[` 然後離開 `\]` 顯示數學模式；
  * （歷史上的）TeX 語法： `$...$` 以進入（第一個 `$`）然後離開（第二個 `$`）行內數學模式，或 `$$...$$` 以進入（第一個 `$$` *配對*）然後離開（第二個 `$$` *配對*）顯示數學模式；
* 或任何一種 LaTeX 數學環境：
  * `\begin{align}...\end{align}` 等等。這些環境在幕後會負責進入與離開數學模式。

該訊息的實際 *文字* 文字 `缺少插入的 $` 是 *內建於* （「硬編碼」在）TeX 引擎軟體中，這就是為什麼你仍然會看到 `遺失 $` 即使你沒有使用 `$` 字元來排版數學內容，而是純粹使用 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/9ce6a80e87a31ea7831884b6a65ac35a650fc143)

## 進階：TeX 錯誤復原機制的解釋

錯誤訊息 `缺少插入的 $` 並不是由 Overleaf、LaTeX 或 LaTeX 套件輸出的；它其實來自 *可執行程式內部* ，該程式負責排版你的 LaTeX 文件：那個可執行程式稱為 TeX *引擎*——你可以把它想成是「驅動」排版過程。

在 TeX 軟體的原始碼中，其作者（Donald Knuth）針對產生該 `缺少插入的 $` 錯誤的程式碼做了這樣的說明：

> 這裡列出一些案例，在這些情況下使用者很可能不小心進入或離開了數學模式。TeX 會插入一個美元符號並重新掃描目前的詞元。

在 `缺少插入的 $` 錯誤的核心是 TeX 偵測到「某物」不應該在數學模式中使用，或是「某物」明確為數學排版設計卻被用在數學模式之外。

TeX 面臨的任務是：我該如何從這裡復原？TeX 的確會照 Knuth 所寫的做：它插入一個美元符號並重新掃描目前的詞元——一個 [「token」](/latex/zh-tw/shen-ru-wen-zhang/53-what-is-a-tex-token.md) 是 TeX 的內部數值（整數）值，用來表示它剛讀入的字元或命令。然而，由於錯誤的精確上下文，這個策略可能成功，也可能不成功——正如錯誤文字所說的「請繼續，希望一切順利。」！

### 實作範例

讓我們透過仔細查看以下範例來探究 Knuth 的註解： $$\verb|$y=f(x)$$\vskip3pt|$$。如果你打開下面的程式碼，你會看到它觸發了錯誤 `缺少插入的 $`.

```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 暫時離開行內數學模式——在我們的例子中，我們是在段落中建立行內數學，所以它短暫進入所謂的 *水平模式*.

接下來發生的事情才引發錯誤。TeX 繼續處理 $$\verb|$|\_{\mathtt3}$$ ，這會觸發 TeX 重新進入行內數學模式。TeX 現在讀取下一個詞元，也就是 $$\verb|\vskip|$$ 命令——它尚未讀到 $$\verb|3pt|$$。此時，TeX 看到 $$\verb|\vskip|$$ ，但它處於行內數學模式： $$\verb|\vskip|$$ 在那裡是不允許的，因此它會觸發 Knuth 所描述的 TeX 錯誤處理流程：

> TeX 會插入一個美元符號並重新掃描目前的詞元。

在這裡，目前的詞元是 $$\verb|\vskip|$$ 命令，因此 TeX 所做的是放入一個 *新的* `$` 到其輸入中，讓我們稱之為 $$\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/zh-tw/latex-cuo-wu/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.
