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

# Вставлено відсутній $

## Як виправити цю помилку

Цю помилку можна викликати різними способами, і, особливо для тих, хто лише починає працювати з LaTeX, не завжди *одразу* зрозуміло, чому вона виникла, або, що важливіше, як її виправити. Спочатку ми подамо огляд *загальних* умов, які викликають цю помилку, а потім перелічимо деякі з найпоширеніших причин і способи їх виправлення.  [Останні частини цієї статті](#background-to-the-missing-inserted-error) містять докладніший матеріал для читачів, які хочуть ширше зрозуміти тему.

**Примітка**: У цій статті ми використовуємо терміни «TeX», «LaTeX» і «TeX engine», але якщо ви не впевнені в їхніх різних значеннях, дізнатися про це можна в статті Overleaf [Що в імені: путівник по багатьох різновидах TeX](/latex/uk/dokladni-statti/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/uk/inshi-temi/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/bc7993478e57ab43b590dcea06cdae24520ab943)

**Виправлення помилок, спричинених символьними командами 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/uk/matematika/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/uk/inshi-temi/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)

**Підкреслення в URL-адресах у .bib-файлах**

Якщо такі 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, який реалізує ці оточення, сам дбає про вхід і вихід із математичного режиму.

Наведений нижче приклад показує використання `$` знака в `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|$$|$$ збалансована, але це викличе помилку «`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
                 $$
Я вставив символ початку/кінця математики, оскільки думаю,
що ви пропустили один із них. Продовжуйте, схрестивши пальці.

! Відображувана математика повинна закінчуватися на $$.
<читати ще раз>
                   \par
l.12 $$y=f(x)\par
                 $$
Знак `$', який я щойно побачив, нібито відповідає попередньому `$$'.
Отже, я припущу, що ви двічі ввели `$$'.

! Missing $ inserted.
<inserted text>
                $
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, тобто режимом, у якому перебуває рушій TeX, коли ви просите LaTeX набрати якусь математику.

Для повноти зазначимо, що існує *два* типи математичного режиму, що відображають створення вбудованої або відображуваної математики:

* вбудованому математичному режимі
* режим відображуваної математики

TeX потрібні ці два різні математичні режими, оскільки він застосовує різні правила для відступів, розмірів символів тощо під час набору математики, призначеної для вбудованого або відображуваного подання.

#### Виклик математичних режимів TeX

Існує кілька способів змусити рушій TeX *увійти* а потім *вийти* з математичного режиму.

* Ви можете використовувати явну розмітку, наприклад:
  * Синтаксис LaTeX: `\(...\)` на *увійти* `\(` потім *вийти* `\)` вбудований математичний режим або `\[...\]` на *увійти* `\[` потім вийти з `\]` режиму відображуваної математики;
  * (історичний) синтаксис TeX: `$...$` щоб увійти (спочатку `$`) потім вийти (другий `$`) у вбудований математичний режим або `$$...$$` щоб увійти (спочатку `$$` *пара*) потім вийти (другий `$$` *пара*) у режим відображуваної математики;
* або будь-яке з математичних оточень LaTeX:
  * `\begin{align}...\end{align}` тощо. За лаштунками ці оточення самі дбають про вхід і вихід із математичного режиму.

Справжній *текст* текст повідомлення `Вставлено пропущений $` є *вбудовані в* («жорстко закодоване») у програмному забезпеченні рушія TeX, саме тому ви все одно побачите `Missing $` навіть якщо ви не використовуєте `$` символи для набору математики і використовуєте суто синтаксис LaTeX для розмітки математики у вашому документі. Це може збивати з пантелику нових користувачів LaTeX, але мало що можна зробити, щоб змінити текст цього повідомлення про помилку без модифікації вихідного коду рушіїв TeX!

#### Макроси: перевірка математичного режиму

Можна перевірити, чи перебуває TeX зараз у математичному режимі, за допомогою примітивної команди `\ifmmode`; таким чином можна писати макроси, поведінка яких може адаптуватися, щоб уникати помилок, пов’язаних із режимом. Ось дуже базовий приклад для демонстрації принципу, який виводить `Так.` або `Ні.` залежно від того, чи перебуває TeX у математичному режимі в момент «виконання» макроса.

```latex
\documentclass{article}
\begin{document}
\newcommand{\mytest}{\ifmmode \mathrm{Так}\else Ні\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/1fd012354ca11ff11361087b8d7a94b94cc5bb2a)

## Просунуто: Пояснення механізму відновлення після помилок TeX

Повідомлення про помилку `Вставлено пропущений $` не виводиться Overleaf, LaTeX або пакетами LaTeX; насправді воно походить від *всередині виконуваної програми* відповідальної за набір вашого документа LaTeX: ця виконувана програма називається TeX *engine*— її можна уявити як таку, що «керує» процесом набору.

У вихідному коді програмного забезпечення TeX його автор (Дональд Кнут) робить таке зауваження щодо коду, відповідального за генерування `Вставлено пропущений $` помилки:

> Ось список випадків, коли користувач, ймовірно, помилково увійшов у математичний режим або вийшов із нього. TeX вставить знак долара і повторно просканує поточний токен.

У самому серці `Вставлено пропущений $` помилки лежить виявлення TeX «чогось», що не слід було використовувати всередині математичного режиму, або «чогось», що явно призначено для математичного набору, але використовується поза математичним режимом.

Завдання, яке стоїть перед TeX, таке: як мені з цього відновитися? TeX робить саме те, про що пише Кнут: він вставляє знак долара і повторно сканує поточний токен — [«токен»](/latex/uk/dokladni-statti/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|$$ але він перебуває у вбудованому математичному режимі: $$\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/uk/pomilki-latex/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.
