> 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/ko/latex-1/25-missing-inserted.md).

# Missing $ inserted

## 이 오류를 수정하는 방법

이 오류는 여러 가지 방식으로 발생할 수 있으며, 특히 LaTeX를 처음 접하는 사람들에게는 항상 *즉시* 왜 발생했는지, 더 중요하게는 어떻게 해결해야 하는지 분명하지 않습니다. 먼저 다음에 대한 개요부터 살펴보겠습니다. *일반적인* 이 오류를 유발하는 조건들을 살펴본 다음, 보다 일반적인 원인들과 그 해결 방법을 나열하겠습니다. 이 [이 글의 후반부는](#background-to-the-missing-inserted-error) 더 깊이 있는 내용을 제공하여 이해를 넓히고자 하는 독자들에게 도움이 됩니다.

**참고**: 이 글에서는 “TeX”, “LaTeX”, “TeX 엔진”이라는 용어를 사용하지만, 각각의 의미가 확실하지 않다면 Overleaf의 다음 글에서 확인할 수 있습니다 [이름에 담긴 의미: TeX의 다양한 종류를 위한 가이드](/latex/ko/in-depth-articles/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md).

### Missing $ inserted의 주요 원인

(La)TeX이 이 오류를 생성하는 주된 이유는 세 가지입니다:

1. 수학 마크업에 명백한 오류가 있습니다. 예를 들어 다음처럼 작성한 경우: `$y=f(x)$$`—이 글의 뒤에서 다른 예를 살펴보겠습니다.
2. TeX가 사용하도록 설계된 문자 또는 명령을 감지했습니다 **만** TeX가 수학을 조판할 때 사용되어야 하는데, 그 문자나 명령이 TeX가 **작동하지** 수학을 조판하는 동안 사용되었습니다.
   * **기술적으로 말하면**: TeX가 작동하도록 설계된 문자 또는 명령을 감지했습니다 *내부* [*수학 모드*](#math-mode) 하지만 이를 사용하려고 했습니다 *밖에서* [*수학 모드*](#math-mode). “...에서 작동하도록 설계된” 문자에 대한 문제를 분명히 하자면 [수학 모드](#math-mode), 실제로는 특정 [카테고리 코드](/latex/ko/more-topics/43-table-of-tex-category-codes.md) 가 할당된 문자를 사용해 수학 자료 내부에서 동작하도록 설계된 것을 뜻합니다.
3. 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/acff4d9b3f7a9194a41a7169c164444e2723f7da)

**LaTeX 기호 명령으로 인해 발생한 오류 수정하기**

문장 안에서 수식 보조자나 그리스 수학 기호를 사용하려면 항상 한 쌍의 달러 기호로 감싸야 합니다 `$...$`, 또는 LaTeX의 `\(...\)` 구문을 사용해야 TeX가 이를 *인라인 수학 모드에서*, 아래와 같이 처리할 수 있습니다.

```latex
문장 속에서 그리스 문자 알파를 쓸 때는 \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/ko/mathematics/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/ko/more-topics/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` 및 `식으로 요약할 수 있습니다` 환경은 수학을 다음으로 감쌀 필요가 없습니다 `$` 기호나 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)

## Missing $ inserted 오류의 배경

다음 섹션은 오류의 배경 원인을 더 잘 이해하고자 하는 독자를 위한 것입니다 `누락된 $가 삽입되었습니다`. 이것은 *필수적인* 읽을거리는 아니지만, 오류를 찾고 수정하는 데 도움이 될 수 있습니다.

### 빠진 $ 기호는 없지만 여전히 오류가 발생합니다

어떤 경우에는 `누락된 $가 삽입되었습니다` 오류가 매우 혼란스러울 수 있는데, 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` 수학 안에서!

```
! Missing $ inserted.
<inserted text>
                $
l.12 $$y=f(x)\par
                 $$
수학 시작/종료 기호를 삽입했습니다. 왜냐하면 제가 보기에는
하나를 빠뜨리신 것 같습니다. 행운을 빌며 진행하세요.

! 표시 수학은 $$로 끝나야 합니다.
<to be read again>
                   \par
l.12 $$y=f(x)\par
                 $$
제가 방금 본 `$'는 이전의 `$$'와 짝을 이루는 것으로 보입니다.
그러므로 두 번 모두 `$$'를 입력했다고 가정하겠습니다.

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

수학 시작/종료 기호를 삽입했습니다. 왜냐하면 제가 보기에는
하나를 빠뜨리신 것 같습니다. 행운을 빌며 진행하세요.

! 표시 수학은 $$로 끝나야 합니다.
<to be read again>
                   \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 구문: `\(...\)` 을 *들어가게* `\(` 그런 다음 *벗어나게* `\)` 인라인 수학 모드로, 또는 `\[...\]` 을 *들어가게* `\[` 그런 다음 벗어나게 `\]` 표시 수학 모드;
  * (전통적인) TeX 구문: `$...$` 들어가게 하려면(첫 번째 `$`) 그런 다음 벗어나게 하려면(두 번째 `$`쌍 `$$...$$` 들어가게 하려면(첫 번째 `$$` *) 표시 수학 모드;*) 그런 다음 벗어나게 하려면(두 번째 `$$` *) 표시 수학 모드;*&#xB610;는 다음 LaTeX 수학 환경 중 하나:
* \begin{align}...\end{align}
  * `등. 내부적으로 이러한 환경이 수학 모드의 진입과 종료를 처리합니다.` 실제

메시지의 *text* ( `누락된 $가 삽입되었습니다` 는 *내장된* “하드코딩된”） TeX 엔진 소프트웨어에 있으며, 그래서 여전히 다음을 보게 됩니다 `Missing $` 비록 사용하지 않더라도 `$` 문자를 사용해 수학을 조판하거나 문서의 수학을 마크업하기 위해 순수한 LaTeX 구문만 사용하더라도 말입니다. 이는 LaTeX 초보자에게 혼란스러울 수 있지만, TeX 엔진의 소스 코드를 수정하지 않고는 이 오류 메시지 문구를 바꾸기 어렵습니다!

#### 매크로: 수학 모드 검사

원시 명령을 사용해 TeX가 현재 수학 모드에 있는지 검사할 수 있습니다 `\ifmmode`; 그렇게 하면 모드 관련 오류가 발생하지 않도록 동작을 조정하는 매크로를 작성할 수 있습니다. 원리를 보여주는 매우 기본적인 예는 다음과 같이 출력합니다 `예.` 또는 `아니요.` 매크로를 “실행”하는 시점에 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/808af04090288677b6d2521b36ac2f7decb96d82)

## 고급: TeX의 오류 복구 메커니즘 설명

오류 메시지는 `누락된 $가 삽입되었습니다` Overleaf, LaTeX 또는 LaTeX 패키지가 출력하는 것이 아닙니다. 실제로는 다음에서 나옵니다 *실행 프로그램 내부의* LaTeX 문서를 조판하는 역할을 하는 프로그램이며, 그 실행 프로그램은 TeX *엔진*—조판 과정을 “운전”하는 것으로 생각할 수 있습니다.

TeX 소스 코드에서 저자(도널드 크누스)는 다음을 생성하는 코드에 대해 이렇게 설명합니다 `누락된 $가 삽입되었습니다` 오류:

> 사용자가 실수로 수학 모드에 들어가거나 벗어난 경우의 목록입니다. TeX는 달러 기호를 삽입하고 현재 토큰을 다시 검사할 것입니다.

핵심에는 `누락된 $가 삽입되었습니다` 오류는 수학 모드 안에서 사용되어서는 안 되는 “무언가”를 TeX가 감지하거나, 수학 조판용으로 명확히 설계된 “무언가”가 수학 모드 밖에서 사용되는 것을 TeX가 감지하는 데 있습니다.

TeX 앞의 과제는: 이것에서 어떻게 복구할 것인가입니다? TeX는 크누스가 쓴 그대로 정확히 수행합니다: 달러 기호를 삽입하고 현재 토큰을 다시 검사합니다— [“토큰”](/latex/ko/in-depth-articles/53-what-is-a-tex-token.md) 는 TeX가 방금 읽은 문자나 명령을 나타내는 내부 숫자(정수) 값입니다. 그러나 오류의 정확한 맥락에 따라, 이 전략이 성공할 수도 있고 그렇지 않을 수도 있습니다. 오류 문구가 이어서 “행운을 빌며 진행하세요.”라고 말하는 것처럼요!

### 작동 예시

다음 예를 자세히 살펴보며 크누스의 설명을 탐구해 보겠습니다: $$\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|$$ 하지만 TeX는 인라인 수학 모드에 있습니다: $$\verb|\vskip|$$ 거기서는 허용되지 않으므로, 크누스가 설명한 대로 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/ko/latex-1/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.
