> 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/pl/wiecej-tematow/39-mltex-enctex-and-synctex-tex-extensions.md).

# Rozszerzenia TeX MLTeX, EncTeX i SyncTeX

## Kilka informacji ogólnych o rozszerzeniach TeX-a

TeX ma długą historię rozwoju — już ponad 4 dekady! W tym czasie powstały nowe „wersje” TeX-a — takie jak e-TeX, pdfTeX, XeTeX, LuaTeX i tak dalej. Oprócz całkowicie nowych silników, z całym zestawem dodatkowych funkcji, pojawiły się różne *rozszerzenia* które zazwyczaj koncentrują się na implementacji konkretnej funkcji usprawniającej oryginalne oprogramowanie Knutha.

Wraz z pojawieniem się nowoczesnych silników TeX, takich jak XeTeX i LuaTeX, potrzeba korzystania z niektórych starszych rozszerzeń TeX-a zmalała, ponieważ nowsze silniki TeX oferują potężne dodatkowe możliwości — takie jak wbudowana obsługa tekstu zakodowanego w UTF-8. Celem tej strony jest przedstawienie kilku uwag na temat rozszerzeń, w tym MLTeX i EncTeX, które nadal możesz spotkać w [opcjach wiersza poleceń silnika TeX](/latex/pl/wiecej-tematow/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md). Zarówno MLTeX, jak i EncTeX nie są już rozwijane, ale jedno bardzo przydatne rozszerzenie, SyncTeX, jest nadal aktywnie rozwijane i obsługiwane przez Overleaf.

## MLTeX

*Wielojęzyczny TeX*, czyli MLTeX, został opracowany w latach 1992–5 jako modyfikacja TeX-a umożliwiająca dzielenie wyrazów z literami diakrytycznymi przy użyciu zwykłych czcionek Computer Modern (CM).

### Aktywowanie (włączanie) MLTeX

MLTeX został zaprojektowany do działania jako część tak zwanego `.fmt` (pliku formatu), który w praktyce jest skompilowaną wstępnie binarną wersją zestawu makr TeX-a. Aby tworzyć pliki formatu, uruchamia się silnik TeX w jego tak zwanym `INI` trybie, przetwarza kolekcję makr, a następnie wydaje polecenie `\\dump` polecenie zapisania `.fmt` pliku. Zobacz [ten artykuł](/latex/pl/artykuly-szczegolowe/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md) dla omówienia trybów INI.

Aby włączyć MLTeX, *w tych silnikach, które to obsługują*, takich jak pdfTeX, należy wpisać

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

gdzie `pdfetex.ini` jest plikiem zawartym w dystrybucji TeX Live.

**Dlaczego gwiazdka (`*`)?** Gwiazdka przełącza pdfTeX w tak zwany „tryb rozszerzony”, który włącza obsługę prymitywów e-TeX. Jeśli ją pominiesz i wpiszesz `pdftex -ini -mltex pdfetex.ini` pojawi się błąd:

```
To jest pdfTeX, wersja 3.14159265-2.6-1.40.19 (INITEX)
 \\write18 włączone.
MLTeX v2.2 włączony
(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

! e-TeX: błąd krytyczny: ten plik można przetwarzać tylko w trybie rozszerzonym;
  czy może zapomniałeś o gwiazdce?
```

**Uwaga**: Zamiast używać gwiazdki do włączenia „trybu rozszerzonego” możesz użyć `-etex` zamiast tego opcji wiersza poleceń:

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

**Uwaga**: Użycie `-mltex` opcji w wierszu poleceń z `.fmt` plikiem, który został *nie wygenerowany* z włączonym MLTeX nie będzie *nie* działać: MLTeX musi zostać „uaktywniony” za pomocą odpowiedniego pliku formatu.

Gdy używasz `-mltex` opcji podczas `.fmt` tworzenia pliku, do `.fmt` pliku zapisywana jest zmienna logiczna o wartości „true”, informująca silnik TeX, że rozszerzenia MLTeX zostały aktywowane i powinny być dostępne dla użytkownika. Jeśli nie ustawisz jawnie `-mltex` opcji, odpowiednia zmienna będzie miała wartość „false”. Jeśli wartość tej zmiennej zostanie wykryta jako „false” (gdy ten `.fmt` plik jest ponownie wczytywany podczas przebiegu TeX-a), to próba użycia rozszerzeń MLTeX zakończy się `Nieznane polecenie...` błędem — ponieważ prymitywy MLTeX nie zostały zarejestrowane (załadowane) i dlatego nie są rozpoznawane.

Po uruchomieniu `pdftex -ini -mltex *pdfetex.ini` w wierszu poleceń zobaczysz coś podobnego do poniższego tekstu, wskazującego, że MLTeX v2.2 jest włączony:

```
To jest pdfTeX, wersja 3.14159265-2.6-1.40.19 (INITEX)
\\write18 włączone.
włączanie trybu rozszerzonego
MLTeX v2.2 włączony
....
....
....
Rozpoczynanie zapisu do pliku pdfetex.fmt
....
Brak stron wyjściowych.
Transkrypt zapisano w pdfetex.log.
```

W rezultacie powstaje `.fmt` plik o nazwie `pdfetex.fmt` umożliwiający używanie poleceń MLTeX:

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

gdzie `<yourfile.tex>` może korzystać z charakterystycznych dla MLTeX prymitywów

MLTeX był pierwotnie rozpowszechniany jako oddzielny plik zmian, [mltex.ch](http://tug.ctan.org/systems/generic/mltex/mltex.ch), który można było scalić z głównym kodem źródłowym Knutha ([`tex.web`](https://ctan.org/tex-archive/systems/knuth/dist/tex?lang=en)) aby otrzymać nową wersję TeX-a, zwaną MLTeX, zawierającą szereg nowych prymitywów. Obecnie kod MLTeX z `mltex.ch` jest wchłonięty do głównego `tex.ch` pliku zmian, który służy do budowy niemal wszystkich silników TeX.

### Prymitywy MLTeX

Poniższe uwagi zostały w większości opracowane i odtworzone z pliku `web2c.info` zawartego w [TeX Live](https://tug.org/texlive/) dystrybucji.

* **`\charsubdef`**: Definicje podstawień znaków. Określa, jak skonstruować glif znaku z akcentem (niekoniecznie istniejący w bieżącej czcionce) przy użyciu dwóch glifów znaków (które istnieją).

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

  Każdy z COMPOSITE, ACCENT i BASE jest numerem glifu czcionki, zapisywanym w zwykłej składni TeX-a: \`\\\e symbolicznie, '145 dla oktalnego, "65 dla szesnastkowego, 101 dla dziesiętnego. Zatem określa, czy kod glifu znaku, wpisany jako pojedynczy znak albo przy użyciu `\char` prymitywu, zostanie przypisany do glifu czcionki czy do `\accent` konstrukcji glifu.

  Na przykład, jeśli przyjmiesz kod glifu 138 (dziesiętnie) dla e-circumflex i używasz czcionek Computer Modern, które mają akcent daszka w pozycji 18, a małe „e” w zwykłej pozycji ASCII 101 dziesiętnie, użyjesz `\charsubdef` w następujący sposób:

  ```
  \\charsubdef 138 = 18 101
  ```
* **`\charsubdefmax`**: Ustawia największą wartość w `\charsubdef` liście. Na przykład:

  ```
  \\charsubdefmax=-1 % wyłącz wszystkie podstawienia
  \\charsubdefmax=256 % włącz wszystkie podstawienia
  ```
* **`\tracingcharsubdef`**: Śledzenie podstawień. Aby pomóc w diagnozowaniu problemów z `\charsubdef`, MLTeX udostępnia parametr prymitywny, `\tracingcharsubdef`. Jeśli jest dodatni, każde użycie `\charsubdef` będzie zgłaszane. Może to pomóc ustalić, kiedy znak został przedefiniowany.

## EncTeX

EncTeX został opracowany w latach 1997–2004 jako rozszerzenie TeX-a, które zapewnia elastyczne ponowne kodowanie wejścia/wyjścia poprzez dodanie nowych prymitywów — na przykład mechanizmu tłumaczenia wejścia w drodze do TeX-a. Umożliwia on na przykład translację wielobajtowych sekwencji, takich jak kodowanie UTF-8, do użycia w standardowych 8-bitowych silnikach TeX.

### Aktywowanie (włączanie) EncTeX

Podobnie jak MLTeX, EncTeX został zaprojektowany do działania jako część tak zwanego `.fmt` (pliku formatu) — zobacz [MLTeX](#mltex), powyżej, aby uzyskać wyjaśnienie plików formatu/trybu INI.

Aby włączyć EncTeX, *w tych silnikach, które to obsługują*, takich jak pdfTeX, należy utworzyć plik formatu z włączonym EncTeX, wpisując

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

gdzie `pdfetex.ini` jest plikiem zawartym w dystrybucji TeX Live.

**Dlaczego gwiazdka (`*`)?** Gwiazdka przełącza pdfTeX w tak zwany „tryb rozszerzony”, który włącza obsługę prymitywów e-TeX. Jeśli ją pominiesz i wpiszesz `pdftex -ini -mltex pdfetex.ini` pojawi się błąd:

```
To jest pdfTeX, wersja 3.14159265-2.6-1.40.19 (INITEX)
 \\write18 włączone.
MLTeX v2.2 włączony
(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

! e-TeX: błąd krytyczny: ten plik można przetwarzać tylko w trybie rozszerzonym;
  czy może zapomniałeś o gwiazdce?
```

**Uwaga**: Zamiast używać gwiazdki do włączenia „trybu rozszerzonego” możesz użyć `-etex` zamiast tego opcji wiersza poleceń:

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

Ta `-enc` opcja wiersza poleceń powoduje, że silnik pdfTeX włącza EncTeX, zapisując pewne dane do wynikowego `pdfetex.fmt` pliku formatu.

**Uwaga**: Użycie `-enc` opcji w wierszu poleceń z `.fmt` plikiem, który został *nie wygenerowany* z włączonym EncTeX będzie *nie* działać: EncTeX musi zostać „uaktywniony” za pomocą odpowiednio wygenerowanego pliku formatu.

### Prymitywy EncTeX

EncTeX dodaje do silnika TeX 10 nowych poleceń prymitywnych:

* 3 prymitywy w pierwszym wydaniu (1997):
* `\xordcode`
* `\xchrcode`
* `\xprncode`
* 7 dodatkowych prymitywów (do obsługi UTF-8) w 2003:
* `\mubyte`
* `\endmubyte`
* `\mubytein`
* `\mubyteout`
* `\mubytelog`
* `\specialout`
* `\noconvert`

Zastosowanie i działanie tych prymitywów są dobrze udokumentowane w [podręczniku referencyjnym EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf), napisanym przez autora EncTeX, Petra Olšáka. Aby uniknąć tutaj niepotrzebnego powtarzania, zainteresowanych czytelników odsyła się do tego dokumentu.

### Dalsze informacje o EncTeX

* [Druga wersja EncTeX: obsługa UTF-8](http://mirrors.ctan.org/systems/enctex/eurotex2003-enctex.pdf): artykuł autorstwa Petra Olšáka, twórcy EncTeX.
* [podręczniku referencyjnym EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf) (po angielsku).

### Aktywowanie (włączanie) zarówno MLTeX, jak i EncTeX

Aby włączyć zarówno MLTeX, jak i EncTeX, należy wygenerować odpowiedni plik formatu, używając wiersza poleceń takiego jak

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

gdzie `pdfetex.ini` jest plikiem zawartym w dystrybucji TeX Live.

**Dlaczego gwiazdka (`*`)?** Gwiazdka przełącza pdfTeX w tak zwany „tryb rozszerzony”, który włącza obsługę prymitywów e-TeX. Jeśli ją pominiesz i wpiszesz `pdftex -ini -enc -mltex pdfetex.ini` pojawi się błąd:

```
To jest pdfTeX, wersja 3.14159265-2.6-1.40.19 (INITEX)
 \\write18 włączone.
MLTeX v2.2 włączony
(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

! e-TeX: błąd krytyczny: ten plik można przetwarzać tylko w trybie rozszerzonym;
  czy może zapomniałeś o gwiazdce?
```

**Uwaga**: Zamiast używać gwiazdki do włączenia „trybu rozszerzonego” możesz użyć `-etex` zamiast tego opcji wiersza poleceń:

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

Po uruchomieniu powyższego wiersza poleceń zobaczysz komunikat podobny do poniższego, informujący, że zarówno MLTeX, jak i EncTeX są włączone:

```
To jest pdfTeX, wersja 3.14159265-2.6-1.40.19 (INITEX)
 \\write18 włączone.
włączanie trybu rozszerzonego
MLTeX v2.2 włączony
 encTeX w wersji z czerwca 2004, ponowne kodowanie włączone.
....
....
....
Rozpoczynanie zapisu do pliku pdfetex.fmt
....
Brak stron wyjściowych.
Transkrypt zapisano w pdfetex.log.
```

oraz `pdfetex.fmt` zostanie utworzony plik formatu, włączający zarówno MLTeX, jak i EncTeX.

## SyncTeX

Rozszerzenie SyncTeX jest dostępne od 2008 roku i nadal jest aktywnie rozwijane przez jego twórcę, Jérôme’a Laurensa. Jest szeroko używane, w tym przez Overleaf, i jest obsługiwane przez wszystkie silniki TeX używane obecnie.

### Co robi SyncTeX?

Podczas przeglądania dokumentu składanego przez TeX, na przykład podczas korekty/sprawdzania przed przekazaniem wydawcy, możesz zauważyć błąd i potrzebować poprawić go w kodzie źródłowym TeX. Jednak znalezienie właściwego miejsca w pliku TeX może być trudne, zwłaszcza jeśli dokument jest obszerny. Równie dobrze możesz chcieć zrobić odwrotnie: przeskoczyć z pozycji w pliku źródłowym TeX bezpośrednio do miejsca na stronie w końcowym, złożonym pliku PDF. W obu przypadkach istnieje potrzeba *synchronizować* określone miejsce w pliku TeX i odpowiadające mu miejsce w wyświetleniu jego wyników składu: i właśnie to zapewnia SyncTeX — sposób automatycznego łączenia miejsc w plikach TeX z pozycjami na stronach w złożonych dokumentach.

Jeśli SyncTeX jest włączony, zapisuje specjalny plik z rozszerzeniem `.synctex.gz` (skompresowany gzipem) lub `.synctex` (nieskompresowany), w zależności od [opcji wiersza poleceń przekazanych do SyncTeX](#synoptions). Edytory tekstu obsługujące SyncTeX i (w większości) przeglądarki PDF mogą używać tych plików do wykonywania niezbędnej synchronizacji między wejściem (kodem TeX) a wyjściem (wyświetlaniem złożonego PDF). Oczywiście nie może się to po prostu „zdarzyć” bez odpowiedniej funkcjonalności w edytorze tekstu użytkownika i przeglądarce dokumentów PDF, która umożliwia komunikację lokalizacji w pliku tekstowym/przeglądarce PDF — na podstawie danych zawartych w `.synctex.gz` (lub `.synctex`) pliku zapisywanym przez SyncTeX.

Oprócz funkcjonalności w samym silniku TeX — do generowania `.synctex.gz` plików — SyncTeX udostępnia także specjalny [parser](https://github.com/jlaurens/synctex/) który odczytuje `.synctex.gz` (lub `.synctex`) pliki, aby wyodrębnić odpowiednie informacje o położeniu strony/linii. Aplikacje używają tego parsera, aby zapewnić obsługę SyncTeX.

### Aktywowanie (włączanie) SyncTeX

Silniki TeX obsługujące SyncTeX mają dwa sposoby aktywowania/wyłączania SyncTeX:

* opcja wiersza poleceń: `-synctex=NUMBER`
* polecenie w `.tex` pliku:  `\synctex` prymitywów

### Korzystanie z SyncTeX w wierszu poleceń

Możesz użyć `-synctex=NUMBER` podczas uruchamiania silnika TeX obsługującego SyncTeX, takiego jak pdfTeX.

#### Przykłady

* Włącz SyncTeX: wynik `.synctex.gz` (plik skompresowany gzipem):

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

Generuje `myfile.synctex.gz`

* Włącz SyncTeX: wynik `.synctex` (plik nieskompresowany):

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

Generuje `myfile.synctex`

* Wyłącz SyncTeX:

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

Nie jest generowany żaden wynik SyncTeX.

### Jedyny prymityw SyncTeX

SyncTeX udostępnia jeden prymityw, `\synctex`, który użytkownicy mogą dodać do swoich `.tex` plik:

* Włącz SyncTeX: `\\synctex=1`
* Wyłącz SyncTeX: `\\synctex=0`

### Dalsze informacje o SyncTeX

* [Artykuł TUGBoat autorstwa Jérôme’a Laurensa](http://www.tug.org/TUGboat/tb29-3/tb93laurens.pdf), autora SyncTeX.
* Ta [repozytorium GitHub](https://github.com/jlaurens/synctex) parsera SyncTeX.


---

# 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/pl/wiecej-tematow/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.
