> 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/cs/chyby-latexu/25-missing-inserted.md).

# Byl vložen chybějící $

## Jak tuto chybu opravit

Tuto chybu lze vyvolat různými způsoby a zejména pro ty, kteří s LaTeXem začínají, není vždy *na první pohled* zřejmé, proč k ní došlo, nebo důležitěji, jak ji vyřešit. Začneme přehledem *obecných* podmínek, které tuto chybu vyvolávají, a poté uvedeme některé z častějších příčin a jak je opravit. Z [dalších částí tohoto článku](#background-to-the-missing-inserted-error) si čtenáři, kteří si chtějí rozšířit porozumění, odnesou podrobnější materiál.

**Poznámka**: V tomto článku používáme termíny „TeX“, „LaTeX“ a „TeX engine“, ale pokud si nejste jisti jejich odlišným významem, můžete se o tom dozvědět v článku Overleafu [Co je v názvu: Průvodce mnoha podobami TeXu](/latex/cs/clanky-do-hloubky/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md).

### Hlavní příčiny chyby Missing $ inserted

Existují tři hlavní důvody, proč (La)TeX tuto chybu generuje:

1. Udělali jste explicitní chybu v zápisu matematiky, například když jste napsali `$y=f(x)$$`—na další příklady se podíváme později v tomto článku.
2. TeX rozpoznal znak nebo příkaz určený k použití **pouze** v době, kdy TeX sazí matematiku, ale tento znak nebo příkaz byl použit, když TeX **ne** sázel matematiku.
   * **Technicky vzato**: TeX rozpoznal znak nebo příkaz určený k práci *uvnitř* [*matematického režimu*](#math-mode) ale pokusili jste se jej použít *mimo* [*matematického režimu*](#math-mode). Aby bylo jasné, co máme na mysli „znaky“ určené pro práci v [matematického režimu](#math-mode), skutečně máme na mysli používání znaků přiřazených určitým [kategoriálním kódům](/latex/cs/dalsi-temata/43-table-of-tex-category-codes.md) navrženým pro práci uvnitř matematického materiálu.
3. TeX rozpoznal příkaz určený k použití pouze tehdy, když TeX **ne** sází matematiku, ale tento příkaz byl rozpoznán (použit), zatímco TeX **byl** při sazbě matematického materiálu.
   * **Technicky vzato**: TeX rozpoznal příkaz určený k práci *mimo* [*matematického režimu*](#math-mode) ale pokusili jste se jej použít *uvnitř* [*matematického režimu*](#math-mode).

### Příklady chyb a jejich řešení

Následující příklady ukazují některé způsoby, jak lze `Chybí vložený $` chybu vyvolat, a zároveň nabízejí řešení, jak ji odstranit.

#### Symbolové příkazy se musí používat v matematickém režimu

Mnoho matematických symbolů v LaTeXu se používá prostřednictvím příkazů, které se smějí používat jen tehdy, když TeX sází matematiku; tj. v době, kdy je TeX v matematickém režimu.

Mezi běžně používané symbolové příkazy patří ty pro řecká písmena: `\alpha` $$(\alpha)$$, `\beta` $$(\beta)$$, `\gamma` ($$\gamma)$$, `\delta` $$(\delta)$$, `\Delta` $$(\Delta)$$ a tak dále. Mnoho dalších příkazů LaTeXu, například pro modifikátory: `\vec{x}` $$(\vec{x})$$, `\tilde{x}` $$(\tilde{x})$$, `\hat{x}` $$(\hat{x})$$ apod., je rovněž určeno pro použití v matematickém režimu.

Použití modifikátorů, symbolových příkazů — a mnoha dalších příkazů souvisejících s matematikou — mimo sazbu matematického obsahu vyvolá `Chybí vložený $` chybu a přinutí kompilátor vstoupit do matematického režimu.

Následující příklad ukazuje, co se stane, když se pokusíte použít příkaz `\alpha` $$(\alpha)$$ mimo matematický režim:

```latex
Zápis \verb|\alpha| mimo matematický režim vyvolá chybu: \alpha a tento text proto nebude vysázen správně...
```

[Otevřete tento ***vyvolávající chybu*** příklad v Overleafu](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)

Následující obrázek ukazuje část výstupu vytvořeného výše uvedeným kódem LaTeXu a demonstruje chybu způsobenou použitím `\alpha` mimo matematický režim:

![\alpha mimo matematický režim](/files/6b4dc3102cf1efbd1dd93850ba170f26ee3e3676)

**Oprava chyb způsobených symbolovými příkazy LaTeXu**

Chcete-li v rámci vět použít modifikátory nebo řecké matematické symboly, musí být vždy uzavřeny do jedné dvojice znaků dolaru `$...$`, nebo do LaTeXovy `\(...\)` syntaxe, aby je TeX zpracoval v *inline matematickém režimu*, jak je uvedeno níže.

```latex
Při zápisu řeckého písmene alfa ve větě musí být napsáno jako \verb|$\alpha$|, aby se vygenerovalo $\alpha$, nebo jako \verb|\(\alpha\)|, které také vygeneruje \(\alpha\).

Při zápisu vektoru x ve větě musí být napsán jako \verb|$\vec{x}$|, aby vzniklo $\vec{x}$, nebo jako \verb|\(\vec{x}\)|, což také dá \(\vec{x}\).
```

[Otevřete tento příklad v Overleafu](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)

**Seznam symbolů LaTeXu**

Článek Overleafu [Seznam řeckých písmen a matematických symbolů](/latex/cs/matematika/11-list-of-greek-letters-and-math-symbols.md) poskytuje seznam symbolů, které jsou výhradně pro matematický režim, spolu s odkazy na další užitečné zdroje.

#### Používání znaků určených pouze pro matematický režim mimo matematický režim

TeX/LaTeX tradičně vyhrazuje některé běžné znaky pro použití v matematickém režimu:

* `^`: vyhrazeno pro vytváření mocnin
* `_`: vyhrazeno pro vytváření dolních indexů
* `$`: vyhrazeno pro spuštění/ukončení matematického režimu

Jejich přímé použití mimo matematický režim vyvolá chyby.

* Chcete-li napsat `$` mimo matematický režim, použijte `\$`
* Chcete-li napsat `_` mimo matematický režim, použijte `\_`
* Více způsobů, jak napsat `^` mimo matematický režim. Seznam je uveden na [tex.stackexchange](https://tex.stackexchange.com/a/77647)

**Používání podtržítek mimo matematický režim**

Častou příčinou `Chybí vložený $` chyby je použití podtržítek (`_`), znaku matematického režimu, mimo matematický režim — například podtržítek obsažených v názvech souborů: příklad je uveden níže.

```latex
Použití matematického znaku, například podtržítka, v názvu souboru: math_example.tex.
```

[Otevřete tento ***chybový*** kód na Overleafu](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)

Protože je znak podtržítka přiřazen [kategoriálnímu kódu 8](/latex/cs/dalsi-temata/43-table-of-tex-category-codes.md) je v matematickém režimu vyhrazen pro vytváření dolních indexů. Když tedy (La)TeX rozpozná `_` v názvu souboru `math_example.tex` činí tak mimo matematický režim, což vyvolá chybu a způsobí nesprávnou sazbu následujícího textu:

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

Ta `_` znak (technicky jeho kategoriální kód 8) vyvolá chybu a způsobí, že TeX vstoupí do matematického režimu: písmeno `e` bezprostředně následující po `_` je považováno za znak, který se má vysázet jako dolní index. Zpracování pak pokračuje v matematickém režimu, což vede k kurzívnímu textu a navíc zde není žádný způsob, jak TeX bezpečně dostat z matematického režimu, což vyvolá další chyby.

Abyste se této konkrétní chybě vyhnuli, musíte vždy používat `_` v matematickém režimu — tj. uvnitř `$..$`, `$$...$$` nebo, lépe, uvnitř LaTeXovy notace `\(...\)` a `\[...\]`.

Mimo matematický režim je třeba napsat `\_` pro použití nebo sazbu podtržítka, jak je ukázáno v opravené verzi příkladu:

```latex
Chcete-li použít znak podtržítka určený pro matematický režim v názvu souboru, napište jej takto: math\_example.tex.
```

[Otevřete tento ***opravená verze*** na Overleafu](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)

**Použití podtržítek v adresách URL**

S touto chybou se můžete setkat také při pokusu vysázet adresy URL s podtržítky, např. `[https://www.overleaf.com/learn/latex/Subscripts_and_superscripts](../02-mathematics/02-subscripts-and-superscripts.md)`. Místo escapování každého znaku podtržítka můžete načíst balíček `url` nebo `hyperref` a poté použít `\url` tento příkaz:

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

[Otevřete tento příklad v Overleafu](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)

**Podtržítka v adresách URL v souborech .bib**

Pokud jsou takové adresy URL ve vašem bibliografickém `.bib` souboru, což způsobuje hlášení chyb z `.bbl` souboru, pak se ujistěte, že používáte `url` nebo `doi` pole k záznamu těchto položek v `.bib` souboru:

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

a načtěte balíček `url` nebo `hyperref` ve své preambuli, je-li to potřeba. Většina souborů se styly bibliografie pak bude schopna tyto hodnoty automaticky zabalit do `\url{...}` příkaz.

#### Používání příkazů, které nejsou v matematickém režimu povoleny

Řada nízkoúrovňových vestavěných příkazů TeXu (nazývaných *primitivy*) není v matematickém režimu povolena a jejich použití v matematickém režimu vyvolá `Chybí vložený $` chybu. Přestože většina uživatelů tyto příkazy v každodenním kódu LaTeXu pravděpodobně nepoužije, uvádíme to zde, protože je možné, že se mohou vyskytovat uvnitř příkazů LaTeXu (maker), které jsou používány v matematickém režimu.

Následující příklad se pokouší použít příkaz TeXu `\vskip` uvnitř matematického materiálu. To není dovoleno a generuje chybu.

```latex
\documentclass{article}
\begin{document}
Chci přidat trochu prostoru, ale takhle se to nedělá...
\[y=f(x) \vskip5pt z=f(y)\]
$y=f(x) \vskip5pt z=f(y)$
\end{document}
```

[Otevřete tento ***chybový*** kód na Overleafu](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)

Mezi další příkazy TeXu (primitive), které nejsou povoleny, když je TeX v matematickém režimu, patří `\par`, `\hrule`, `\unvbox`, `\unvcopy` a `\valign`.

#### Prázdné řádky v matematice

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

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

[Otevřete tento ***chybový*** kód na Overleafu](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)

**Příčina**: Prázdný řádek mezi vzorci je převeden na `\par` příkaz, který není v matematickém režimu povolen. Můžete to také vidět zápisem

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

[Otevřete tento ***chybový*** kód na Overleafu](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)

Chcete-li to opravit, prázdné řádky buď smažte, nebo je zakomentujte:

```latex
\documentclass{article}
\begin{document}
\begin{equation}
y=x^3,
% Tímto se potlačí prázdný řádek
z=x^3
\end{equation}
\end{document}
```

[Otevřete tento ***opravená verze*** na Overleafu](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)

#### Použití $ uvnitř matematických prostředí

Některá prostředí LaTeXu, například `align` a `equation` prostředí, nevyžadují, aby byla matematika uzavřena do `$` znaků, ani aby se používala LaTeXova matematická syntaxe: `\(...\)` nebo `\[...\]`. Kód LaTeXu, který tato prostředí implementuje, se postará o vstup a výstup z matematického režimu.

Následující příklad ukazuje použití znaku `$` uvnitř `amsmath` `align` prostředí, což vyvolá `Chybí vložený $` chybu mimo jiné....

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

[Otevřete tento ***chybový*** kód na Overleafu](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)

Správný způsob zápisu těchto rovnic je:

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

[Otevřete tento ***opravená verze*** na Overleafu](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)

## Pozadí chyby Missing $ inserted

Následující část je určena čtenářům, kteří chtějí lépe porozumět důvodům této chyby `Chybí vložený $`. Není to *nezbytné* čtení, ale může vám pomoci při hledání a opravování chyb.

### Nechybí žádné znaky $ , ale chybu stále dostávám

V některých situacích může být `Chybí vložený $` chyba velmi matoucí, protože váš kód LaTeXu ve skutečnosti nemusí mít žádné problémy s *zjevně chybějícími* `$` znaky. Například úryvek LaTeXu $$\verb|$$y=f(x)\par$$|$$ navenek vypadá správně: dvojice $$\verb|$$|$$ jsou vyvážené, ale vyvolá chybu „`chybějící $`“. Zde je to způsobeno `\par` příkazem, který není v matematickém režimu povolen:

```latex
\documentclass{article}
\begin{document}
Tento příklad generuje chybu \verb|Missing $ inserted|:
$$y=f(x)\par$$
\end{document}
```

[Otevřete toto a podívejte se na chybu 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)

Výše uvedený kód LaTeXu ve skutečnosti vyvolá *řetězec* chyb, jak je vidět níže, takže zjevně byste neměli používat `\par` uvnitř matematiky!

```
! Vložen chybějící $.
<vložený text>
                $
l.12 $$y=f(x)\par
                 $$
Vložil jsem symbol začátku/konce matematiky, protože si myslím, že
jste nějaký vynechali. Pokračujte se sevřenými prsty.

! Zobrazovaná matematika by měla končit symbolem $$.
<má být přečteno znovu>
                   \par
l.12 $$y=f(x)\par
                 $$
Ten `$', který jsem právě viděl, údajně odpovídá předchozímu `$$'.
Takže budu předpokládat, že jste oběmakrát napsali `$$'.

! Vložen chybějící $.
<vložený text>
                $
l.13 \end{document}

Vložil jsem symbol začátku/konce matematiky, protože si myslím, že
jste nějaký vynechali. Pokračujte se sevřenými prsty.

! Zobrazovaná matematika by měla končit symbolem $$.
<má být přečteno znovu>
                   \par
l.13 \end{document}

Ten `$', který jsem právě viděl, údajně odpovídá předchozímu `$$'.
Takže budu předpokládat, že jste oběmakrát napsali `$$'.
```

Když je `Chybí vložený $` k chybě dochází, se software TeX engine snaží zotavit a „vrátit se na správnou cestu“, aby mohl pokračovat ve zpracování od místa, kde chyba nastala. Sekce [Pokročilé: Vysvětlení mechanismu obnovy chyb TeXu](#advanced-an-explanation-of-texs-error-recovery-mechanism) vám pomůže pochopit, proč tento řetězec chyb vzniká kvůli snaze TeXu opravit počáteční chybu.

### O režimech a kdy

Interně pracují enginy TeXu pomocí tří „stavů mysli“, nazývaných *režimy*, které závisí na typu materiálu, který TeX engine *aktuálně* sází. Režim, ve kterém se TeX engine v daném okamžiku při sazbě nachází, se nazývá jeho *aktuální* režim, který se v průběhu sazby obsahu vašeho dokumentu LaTeX mění.

Pro každý z režimů TeX enginu existují určité příkazy a znaky (přesněji kategoriální kódy), které jsou s aktuálním režimem TeXu „nekompatibilní“: neměly by být používány, zatímco je TeX v tomto konkrétním režimu. Pokud se pokusíte použít tyto nevhodné znaky nebo příkazy, TeX vydá chybu, například `Chybí vložený $` aby vám řekl, že je něco špatně.

#### Matematický režim

Tato chyba `Chybí vložený $` souvisí s TeXovým *matematického režimu*—tj. s režimem, ve kterém je TeX engine, když požádáte LaTeX o sazbu nějaké matematiky.

Jen pro úplnost poznamenáme, že existují *dva* dva typy matematického režimu, které odrážejí tvorbu inline nebo zobrazené matematiky:

* inline matematickém režimu
* režim zobrazené matematiky

TeX potřebuje tyto dva různé matematické režimy, protože při sazbě matematiky určené pro text nebo zobrazení používá různá pravidla pro mezery, velikosti symbolů atd.

#### Vyvolání TeXových matematických režimů

Existuje více způsobů, jak přimět TeX engine *vstoupit* a poté *opustit* matematický režim.

* Můžete použít explicitní zápis, například:
  * Syntaxe LaTeXu: `\(...\)` na *vstoupit* `\(` pak *opustit* `\)` inline matematický režim nebo `\[...\]` na *vstoupit* `\[` poté opustit `\]` režim zobrazené matematiky;
  * (historická) syntaxe TeXu: `$...$` pro vstup (první `$`) a poté opuštění (druhá `$`) inline matematického režimu nebo `$$...$$` pro vstup (první `$$` *pár*) a poté opuštění (druhá `$$` *pár*) režimu zobrazené matematiky;
* nebo některé z LaTeXových matematických prostředí:
  * `\begin{align}...\end{align}` atd. V zákulisí se tato prostředí postarají o vstup do matematického režimu a jeho opuštění.

Skutečný *text* zprávy `Chybí vložený $` je *vestavěné do* je (předem „natvrdo“) zakódován v softwaru TeX enginu, a proto stále uvidíte `Missing $` i když nepoužíváte `$` znaky pro sazbu matematiky a pro zápis matematiky ve svém dokumentu používáte čistě LaTeXovou syntaxi. To může být pro nové uživatele LaTeXu matoucí, ale s textem této chybové zprávy se dá udělat jen málo, aniž by se upravoval zdrojový kód TeX engine!

#### Makra: testování matematického režimu

Je možné otestovat, zda je TeX aktuálně v matematickém režimu, pomocí primitivního příkazu `\ifmmode`; tímto způsobem můžete psát makra, jejichž chování se může přizpůsobit tak, aby se předešlo chybám souvisejícím s režimem. Zde je velmi jednoduchý příklad k demonstrování principu, který vytiskne `Ano.` nebo `Ne.` podle toho, zda je či není TeX v okamžiku „provedení“ makra v matematickém režimu.

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

Je makro používáno v matematickém režimu? $\mytest$

Je makro používáno v matematickém režimu? $$\mytest$$

Je makro používáno v matematickém režimu? \(\mytest\)

Je makro používáno v matematickém režimu? \[\mytest\]

Je makro používáno v matematickém režimu? \mytest
\end{document}
```

[Otevřete tento příklad v Overleafu](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)

Následující grafika ukazuje výstup vytvořený výše uvedeným příkladem:

![Makro LaTeXu pro testování matematického režimu](/files/42051d992ec09914cd9607ccae412d14d5a0a9ed)

## Pokročilé: Vysvětlení mechanismu obnovy chyb TeXu

Chybová zpráva `Chybí vložený $` není výstupem Overleafu, LaTeXu ani balíčků LaTeXu; ve skutečnosti pochází *ze spustitelného programu* odpovědného za sazbu vašeho dokumentu LaTeX: tento spustitelný program se nazývá TeX *engine*—můžete si ho představit jako to, co „řídí“ proces sazby.

V zdrojovém kódu softwaru TeX jeho autor (Donald Knuth) kódu odpovědnému za generování `Chybí vložený $` chyby poznamenává:

> Zde je seznam případů, kdy se uživatel pravděpodobně omylem dostal do nebo z matematického režimu. TeX vloží znak dolaru a znovu načte aktuální token.

V jádru `Chybí vložený $` chyby je to, že TeX rozpozná „něco“, co nemělo být použito uvnitř matematického režimu, nebo „něco“ výslovně určené pro sazbu matematiky, použité mimo matematický režim.

Úkol před TeXem zní: Jak se z toho zotavím? TeX udělá přesně to, co píše Knuth: vloží znak dolaru a znovu načte aktuální token — [„token“](/latex/cs/clanky-do-hloubky/53-what-is-a-tex-token.md) je vnitřní číselná (celá) hodnota TeXu, která představuje znak nebo příkaz, který právě přečetl. Avšak vzhledem k přesnému kontextu chyby může být, ale také nemusí být, tato strategie úspěšná — jak pokračuje text chyby: „Pokračujte se sevřenými prsty.“!

### Vyřešený příklad

Pojďme prozkoumat Knuthovy poznámky a podívejme se blíže na následující příklad: $$\verb|$y=f(x)$$\vskip3pt|$$. Pokud otevřete níže uvedený kód, uvidíte, že vyvolá chybu `Chybí vložený $`.

```latex
Zápis \verb|$y=f(x)$$\vskip3pt| vytvoří...$y=f(x)$$\vskip3pt Nový řádek...
```

[Otevřete tento příklad v Overleafu](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)

Abychom si ověřili, proč to vyvolá chybu, zapíšeme si indexy k identifikaci každého $$\verb|$|$$ ve výrazu, abychom získali $$\verb|$|*{\mathtt1}\verb|y=f(x)|\verb|$|*{\mathtt2}\verb|$|*{\mathtt3}\verb|\vskip3pt|$$. TeX je schopen správně zpracovat první část $$\verb|$|*{\mathtt1}\verb|y=f(x)|\verb|$|*{\mathtt2}$$ která je považována za správně formátovaný úsek inline matematiky a vytváří $$y=f(x)$$. Ihned po zpracování $$\verb|$|*{\mathtt2}$$ TeX dočasně opustí inline matematický režim — v našem příkladu vytváříme inline matematiku v odstavci, takže krátce vstoupí do tzv. *horizontálního režimu*.

Právě to, co se stane potom, vyvolá chybu. TeX pokračuje ve zpracování $$\verb|$|\_{\mathtt3}$$ což způsobí, že TeX znovu vstoupí do inline matematického režimu. TeX nyní čte další token, kterým je $$\verb|\vskip|$$ příkaz — dosud nepřečetl $$\verb|3pt|$$. V této chvíli TeX vidí $$\verb|\vskip|$$ ale je v inline matematickém režimu: $$\verb|\vskip|$$ tam není povolen, takže spustí proces zpracování chyby TeXu, jak jej popisuje Knuth:

> TeX vloží znak dolaru a znovu načte aktuální token.

Zde je aktuálním tokenem $$\verb|\vskip|$$ příkaz, takže TeX udělá to, že vloží *nový* `$` do svého vstupu, nazvěme ho $$\verb|$|*{\mathtt4}$$. V této chvíli je TeX stále v inline matematickém režimu, ale nyní se vrací k načtení ekvivalentu $$\verb|$|*{\mathtt4}\verb|\vskip|$$ který se načítá v inline matematickém režimu. Vložený $$\verb|$|\_{\mathtt4}$$, vložený samotným TeXem, nyní *uzavírá* aktuální inline matematický režim a TeX pokračuje ve čtení $$\verb|\vskip|$$ příkaz *mimo* inline matematického režimu — zde je TeX v odstavci, takže $$\verb|\vskip3pt|$$ způsobí ukončení aktuálního odstavce a $$\verb|3pt|$$ zanechá za ním mezeru.


---

# 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/cs/chyby-latexu/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.
