> 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/dalsi-temata/39-mltex-enctex-and-synctex-tex-extensions.md).

# Rozšíření TeXu MLTeX EncTeX a SyncTeX

## Několik základních informací o rozšířeních TeXu

TeX má za sebou dlouhou historii vývoje — už přes 4 desetiletí! Během té doby byly vyvinuty nové „verze“ TeXu — například e-TeX, pdfTeX, XeTeX, LuaTeX a tak dále. Kromě zcela nových enginů s celou sadou doplňkových funkcí existovala různá *rozšíření* která se obvykle zaměřují na implementaci konkrétní funkce, která vylepšuje původní Knuthův software.

S nástupem moderních TeXových enginů, jako jsou XeTeX a LuaTeX, potřeba některých starších TeXových rozšíření i jejich používání ustoupily do pozadí, protože novější TeXové enginy přinášejí výkonnou dodatečnou funkcionalitu — například vestavěnou podporu textu kódovaného v UTF-8. Účelem této stránky je poskytnout několik poznámek k rozšířením, včetně MLTeXu a EncTeXu, na které můžete stále narazit v [možnostech příkazové řádky enginu TeXu](/latex/cs/dalsi-temata/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md). MLTeX i EncTeX se již dále nevyvíjejí, ale jedno velmi užitečné rozšíření, SyncTeX, se nadále aktivně vyvíjí a je podporováno Overleafem.

## MLTeX

*Vícejazyčný TeX*, neboli MLTeX, byl vyvinut v letech 1992–5 jako úprava TeXu umožňující dělení slov s diakritikou pomocí běžných fontů Computer Modern (CM).

### Aktivace (povolení) MLTeXu

MLTeX je navržen tak, aby fungoval jako součást takzvaného `.fmt` (souboru formátu), což je ve skutečnosti předkompilovaná binární verze sady TeXových maker. Chcete-li vytvářet soubory formátu, přepnete TeXový engine do takzvaného `INI` režimu, zpracujete kolekci maker a poté zadáte `\dump` příkaz k zápisu `.fmt` souboru. Viz [tento článek](/latex/cs/clanky-do-hloubky/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md) pro diskusi o režimech INI.

Chcete-li povolit MLTeX, *u těch enginů, které jej podporují*, například pdfTeX, napíšete

```
pdftex -ini -mltex *pdfetex.ini
```

kde `pdfetex.ini` je soubor obsažený v distribuci TeX Live.

**Proč ta hvězdička (`*`)?** Hvězdička přepne pdfTeX do takzvaného „rozšířeného režimu“, který povolí podporu e-TeXových primitiv. Pokud ji vynecháte a zadáte `pdftex -ini -mltex pdfetex.ini` obdržíte chybu:

```
Toto je pdfTeX, verze 3.14159265-2.6-1.40.19 (INITEX)
 \write18 povoleno.
MLTeX v2.2 povolen
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! fatální chyba e-TeXu: tento soubor lze zpracovat pouze v rozšířeném režimu;
  nezapomněli jste náhodou na hvězdičku?
```

**Poznámka**: Místo použití hvězdičky k povolení „rozšířeného režimu“ můžete použít `-etex` místo toho volbu příkazové řádky:

```
pdftex -ini -etex -mltex pdfetex.ini
```

**Poznámka**: Použitím `-mltex` přepínače na příkazové řádce s `.fmt` soubor, který *nebyl vygenerován* s povoleným MLTeXem *ne* nebude fungovat: MLTeX musí být „aktivován“ prostřednictvím příslušného souboru formátu.

Když použijete `-mltex` přepínač během `.fmt` vytváření souboru, do `.fmt` souboru se zapíše booleovská proměnná s hodnotou „true“, která enginu TeXu sdělí, že rozšíření MLTeX byla aktivována a mají být uživateli zpřístupněna. Pokud výslovně nenastavíte `-mltex` přepínač, pak bude odpovídající proměnná „false“. Je-li hodnota této proměnné zjištěna jako „false“ (když je tento `.fmt` soubor znovu načítán během běhu TeXu), pak pokus o použití rozšíření MLTeX povede k `Neznámý příkaz...` chybě — protože primitiva MLTeXu nebudou zaregistrována (načtena), a proto nebudou rozpoznána.

Po spuštění `pdftex -ini -mltex *pdfetex.ini` na příkazové řádce uvidíte něco podobného následujícímu textu, ukazujícího, že MLTeX v2.2 je povolen:

```
Toto je pdfTeX, verze 3.14159265-2.6-1.40.19 (INITEX)
\write18 povoleno.
vstup do rozšířeného režimu
MLTeX v2.2 povolen
....
....
....
Začíná se ukládat do souboru pdfetex.fmt
....
Nebyl vytvořen žádný výstupní stránkový soubor.
Protokol zapsán do pdfetex.log.
```

To má za následek `.fmt` soubor s názvem `pdfetex.fmt` který vám umožňuje používat příkazy MLTeXu:

```
pdftex -fmt=pdfetex <yourfile.tex>
```

kde `<yourfile.tex>` může používat primitiva specifická pro MLTeX

MLTeX byl původně distribuován jako samostatný změnový soubor, [mltex.ch](http://tug.ctan.org/systems/generic/mltex/mltex.ch), který bylo možné sloučit s hlavním zdrojovým kódem Knutha ([`tex.web`](https://ctan.org/tex-archive/systems/knuth/dist/tex?lang=en)) a odvodit tak novou verzi TeXu zvanou MLTeX, která obsahovala řadu nových primitiv. Dnes je kód MLTeXu z `mltex.ch` je zahrnut do hlavního `tex.ch` změnového souboru, který se používá ke kompilaci téměř všech TeXových enginů.

### Primitiva MLTeXu

Následující poznámky jsou převážně připraveny a reprodukovány ze souboru `web2c.info` obsaženého v [TeX Live](https://tug.org/texlive/) distribuci.

* **`\charsubdef`**: Definice substituce znaků. Určuje, jak sestavit glyf s diakritikou (nemusí nutně existovat v aktuálním fontu) pomocí dvou znakových glyfů (které existují).

  ```
  \charsubdef COMPOSITE [=] ACCENT BASE
  ```

  COMPOSITE, ACCENT i BASE jsou čísla glyfů fontu, vyjádřená v obvyklé TeXové syntaxi: \`\e symbolicky, '145 pro osmičkovou soustavu, "65 pro šestnáctkovou a 101 pro desítkovou. Tím se tedy určuje, zda bude kód znakového glyfu, zadaný buď jako jediný znak, nebo pomocí `\char` primitiva, namapován na glyf fontu nebo na `\accent` konstrukci glyfu.

  Například pokud předpokládáte kód glyfu 138 (v desítkové soustavě) pro e s cirkumflexem a používáte fonty Computer Modern, které mají znak cirkumflexu na pozici 18 a malé „e“ v obvyklé ASCII pozici 101 v desítkové soustavě, použijete `\charsubdef` takto:

  ```
  \charsubdef 138 = 18 101
  ```
* **`\charsubdefmax`**: Nastavuje nejvyšší hodnotu v `\charsubdef` seznamu. Například:

  ```
  \charsubdefmax=-1 % zakáže všechny substituce
  \charsubdefmax=256 % povolí všechny substituce
  ```
* **`\tracingcharsubdef`**: Sledování substitucí. Pro pomoc při diagnostice problémů s `\charsubdef`, poskytuje MLTeX primitivní parametr `\tracingcharsubdef`. Je-li kladný, bude nahlášeno každé použití `\charsubdef` . To může pomoci dohledat, kdy je znak redefinován.

## EncTeX

EncTeX byl vyvinut v letech 1997–2004 jako TeXové rozšíření, které poskytuje flexibilní pře-kódování vstupu/výstupu prostřednictvím přidání nových primitiv — například prostředek k překladu vstupu na cestě do TeXu. Umožňuje například převod vícestavových sekvencí, jako je kódování UTF-8, pro použití ve standardních 8bitových TeXových enginech.

### Aktivace (povolení) EncTeXu

Stejně jako MLTeX je i EncTeX navržen tak, aby fungoval jako součást takzvaného `.fmt` (souboru formátu) — viz [MLTeX](#mltex)výše, pro vysvětlení souborů formátu/režimu INI.

Chcete-li povolit EncTeX, *u těch enginů, které jej podporují*, například pdfTeX, vytvoříte soubor formátu s povoleným EncTeXem tak, že napíšete

```
pdftex -ini -enc *pdfetex.ini
```

kde `pdfetex.ini` je soubor obsažený v distribuci TeX Live.

**Proč ta hvězdička (`*`)?** Hvězdička přepne pdfTeX do takzvaného „rozšířeného režimu“, který povolí podporu e-TeXových primitiv. Pokud ji vynecháte a zadáte `pdftex -ini -mltex pdfetex.ini` obdržíte chybu:

```
Toto je pdfTeX, verze 3.14159265-2.6-1.40.19 (INITEX)
 \write18 povoleno.
MLTeX v2.2 povolen
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! fatální chyba e-TeXu: tento soubor lze zpracovat pouze v rozšířeném režimu;
  nezapomněli jste náhodou na hvězdičku?
```

**Poznámka**: Místo použití hvězdičky k povolení „rozšířeného režimu“ můžete použít `-etex` místo toho volbu příkazové řádky:

```
pdftex -ini -etex -mltex pdfetex.ini
```

Ta `-enc` přepínač příkazové řádky přiměje engine pdfTeX povolit EncTeX tím, že zapíše některá data do výsledného `pdfetex.fmt` souboru formátu.

**Poznámka**: Použitím `-enc` přepínače na příkazové řádce s `.fmt` soubor, který *nebyl vygenerován* s povoleným EncTeXem bude *ne* fungovat: EncTeX musí být „aktivován“ prostřednictvím vhodně vygenerovaného souboru formátu.

### Primitiva EncTeXu

EncTeX přidává do TeXového enginu 10 nových primitivních příkazů:

* 3 primitiva v počátečním vydání (1997):
* `\xordcode`
* `\xchrcode`
* `\xprncode`
* 7 dalších primitiv (pro podporu UTF-8) v roce 2003:
* `\mubyte`
* `\endmubyte`
* `\mubytein`
* `\mubyteout`
* `\mubytelog`
* `\specialout`
* `\noconvert`

Použití a chování těchto primitiv je dobře zdokumentováno v [referenční příručce EncTeXu](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf), kterou napsal autor EncTeXu Petr Olšák. Aby se zde zbytečně neopakovalo totéž, odkazujeme zájemce na tento dokument.

### Další informace o EncTeXu

* [Druhá verze EncTeXu: podpora UTF-8](http://mirrors.ctan.org/systems/enctex/eurotex2003-enctex.pdf): článek od autora EncTeXu Petra Olšáka.
* [referenční příručce EncTeXu](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf) (v angličtině).

### Aktivace (povolení) MLTeXu i EncTeXu současně

Chcete-li povolit MLTeX i EncTeX, vygenerujete vhodný soubor formátu pomocí příkazu jako

```
pdftex -ini -enc -mltex *pdfetex.ini
```

kde `pdfetex.ini` je soubor obsažený v distribuci TeX Live.

**Proč ta hvězdička (`*`)?** Hvězdička přepne pdfTeX do takzvaného „rozšířeného režimu“, který povolí podporu e-TeXových primitiv. Pokud ji vynecháte a zadáte `pdftex -ini -enc -mltex pdfetex.ini` obdržíte chybu:

```
Toto je pdfTeX, verze 3.14159265-2.6-1.40.19 (INITEX)
 \write18 povoleno.
MLTeX v2.2 povolen
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! fatální chyba e-TeXu: tento soubor lze zpracovat pouze v rozšířeném režimu;
  nezapomněli jste náhodou na hvězdičku?
```

**Poznámka**: Místo použití hvězdičky k povolení „rozšířeného režimu“ můžete použít `-etex` místo toho volbu příkazové řádky:

```
pdftex -ini -etex -enc -mltex pdfetex.ini
```

Po spuštění výše uvedeného příkazu byste viděli zprávu, podobnou následující, která vás informuje, že MLTeX i EncTeX jsou povoleny:

```
Toto je pdfTeX, verze 3.14159265-2.6-1.40.19 (INITEX)
 \write18 povoleno.
vstup do rozšířeného režimu
MLTeX v2.2 povolen
 encTeX v. Jun. 2004, překódování povoleno.
....
....
....
Začíná se ukládat do souboru pdfetex.fmt
....
Nebyl vytvořen žádný výstupní stránkový soubor.
Protokol zapsán do pdfetex.log.
```

a `pdfetex.fmt` soubor formátu, povolující jak MLTeX, tak EncTeX, by byl vytvořen.

## SyncTeX

Rozšíření SyncTeX je k dispozici od roku 2008 a jeho tvůrce Jérôme Laurens jej nadále aktivně vyvíjí. Je široce používané, včetně Overleafu, a podporují je všechny TeXové enginy používané dnes.

### Co SyncTeX dělá?

Při prohlížení dokumentu vysázeného v TeXu, třeba kvůli korektuře/kontrole před odesláním vydavateli, si můžete všimnout chyby a potřebovat ji opravit ve zdrojovém kódu TeXu. Najít správné místo v souboru TeXu však může být obtížné, zejména pokud jde o rozsáhlý dokument. Stejně tak můžete chtít postupovat opačně: přeskočit z určitého místa ve zdrojovém souboru TeXu přímo na místo na stránce ve výsledném vysázeném PDF. V obou případech je třeba *synchronizovat* určité místo v souboru TeXu a jeho odpovídající místo v zobrazení jeho vysázených výsledků: a právě to SyncTeX poskytuje — způsob, jak automaticky propojit místa v souborech TeXu s pozicemi na stránce ve vysázených dokumentech.

Je-li SyncTeX povolen, zapisuje speciální soubor s příponou `.synctex.gz` (komprimovaný pomocí gz) nebo `.synctex` (nekomprimovaný) v závislosti na [možnostech příkazové řádky zadaných pro SyncTeX](#synoptions). Editory textu s podporou SyncTeXu a (většinou) PDF prohlížeče mohou tyto soubory použít k provedení potřebné synchronizace mezi vstupem (kódem TeXu) a výstupem (zobrazením vysázeného PDF). Je zřejmé, že to nemůže jen tak „nastat“ bez toho, aby textový editor a prohlížeč PDF dokumentu měly odpovídající funkčnost, která umožňuje komunikaci mezi místy v textovém souboru a v prohlížeči PDF — na základě dat obsažených v souboru `.synctex.gz` (nebo `.synctex`) souboru zapisovaném SyncTeXem.

Kromě funkcionality v rámci TeXového enginu — k vytváření `.synctex.gz` souborů — poskytuje SyncTeX také speciální [parser](https://github.com/jlaurens/synctex/) který čte `.synctex.gz` (nebo `.synctex`) soubory a extrahuje příslušné informace o umístění stránky/řádku. Aplikace používají tento parser k zajištění podpory pro SyncTeX.

### Aktivace (povolení) SyncTeXu

TeXové enginy s podporou SyncTeXu mají dva způsoby, jak SyncTeX aktivovat/deaktivovat:

* volbu příkazové řádky: `-synctex=NUMBER`
* příkaz v `.tex` souboru: `\synctex` primitivních

### Použití SyncTeXu na příkazové řádce

Můžete použít `-synctex=NUMBER` volbu při spuštění TeXového enginu, který podporuje SyncTeX, například pdfTeX.

#### Příklady

* Povolit SyncTeX: výstup `.synctex.gz` (komprimovaný soubor gz):

```
pdftex -synctex=1 myfile.tex
```

Vytváří `myfile.synctex.gz`

* Povolit SyncTeX: výstup `.synctex` (nekomprimovaný soubor):

```
pdftex -synctex=-1 myfile.tex
```

Vytváří `myfile.synctex`

* Zakázat SyncTeX:

```
pdftex -synctex=0 myfile.tex
```

Nevytvoří se žádný výstup SyncTeXu.

### Jediné primitivum SyncTeXu

SyncTeX poskytuje jedno primitivum, `\synctex`, které mohou uživatelé přidat do svých `.tex` souboru:

* Povolit SyncTeX: `\synctex=1`
* Zakázat SyncTeX: `\synctex=0`

### Další informace o SyncTeXu

* [Článek v TUGBoat od Jérôma Laurense](http://www.tug.org/TUGboat/tb29-3/tb93laurens.pdf), autora SyncTeXu.
* Ta [Úložiště GitHub](https://github.com/jlaurens/synctex) parseru SyncTeXu.


---

# 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/dalsi-temata/39-mltex-enctex-and-synctex-tex-extensions.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.
