> 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/artykuly-szczegolowe/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md).

# Dwa tryby silników TeX: tryb INI i tryb produkcyjny

Wszystkie silniki TeX-a mają dwa „tryby” działania: tryb „INI” i tryb „produkcyjny” — ten drugi to po prostu domyślny (standardowy) tryb używany do tworzenia składu. Tryb INI jest dość inny i aby przełączyć silnik TeX-a w tryb INI, trzeba użyć opcji wiersza poleceń. Możesz zobaczyć, jak to zrobić, wpisując `--help` w wierszu poleceń. Na przykład, w LuaTeX, jeśli wpiszesz

`luatex --help`

zobaczysz wiele opcji wiersza poleceń obsługiwanych przez ten silnik:

```
Użycie: luatex --lua=FILE [OPTION]... [TEXNAME[.tex]] [COMMANDS]
   lub: luatex --lua=FILE [OPTION]... \\FIRST-LINE
   lub: luatex --lua=FILE [OPTION]... &FMT ARGS
  Uruchom LuaTeX na TEXNAME, zazwyczaj tworząc TEXNAME.pdf.
  Wszelkie pozostałe COMMANDS są przetwarzane jako dane wejściowe luatex po odczytaniu TEXNAME.

  Alternatywnie, jeśli pierwszy argument niebędący opcją zaczyna się od ukośnika odwrotnego,
  luatex interpretuje wszystkie argumenty niebędące opcjami jako linię wejściową.

  Alternatywnie, jeśli pierwszy argument niebędący opcją zaczyna się od &, to
  następne słowo jest brane jako FMT do odczytania, zastępując wszystko inne.  Wszelkie
  pozostałe argumenty są przetwarzane jak wyżej.

  Jeśli nie podano żadnych argumentów ani opcji, wyświetl monit o dane wejściowe.

  Rozumiane są następujące zwykłe opcje:

   --credits                     wyświetl podziękowania i zakończ
   --debug-format                włącz debugowanie formatu
   --draftmode                   włącz tryb roboczy (nie generuje wyjściowego pliku PDF)
   --[no-]file-line-error        wyłącz/włącz komunikaty w stylu file:line:error
   --[no-]file-line-error-style  aliasy --[no-]file-line-error
   --fmt=FORMAT                  wczytaj plik formatu FORMAT
   --halt-on-error               zatrzymaj przetwarzanie przy pierwszym błędzie
   --help                        wyświetl pomoc i zakończ
   --ini                         uruchom iniluatex, aby tworzyć zrzuty formatów
   --interaction=STRING          ustaw tryb interakcji (STRING=batchmode/nonstopmode/scrollmode/errorstopmode)
   --jobname=STRING              ustaw nazwę zadania na STRING
   --kpathsea-debug=NUMBER       ustaw flagi debugowania wyszukiwania ścieżek zgodnie z bitami NUMBER
   --lua=FILE                    wczytaj i wykonaj skrypt inicjalizacyjny Lua
   --[no-]mktex=FMT              wyłącz/włącz generowanie mktexFMT (FMT=tex/tfm)
   --nosocket                    wyłącz bibliotekę gniazd Lua
   --output-comment=STRING       użyj STRING jako komentarza pliku DVI zamiast daty (bez wpływu na PDF)
   --output-directory=DIR        użyj istniejącego DIR jako katalogu do zapisu plików
   --output-format=FORMAT        użyj FORMAT jako formatu wyjściowego zadania; FORMAT to 'dvi' lub 'pdf'
   --progname=STRING             ustaw nazwę programu na STRING
   --recorder                    włącz rejestrator nazw plików
   --safer                       wyłącz łatwe do wykorzystania polecenia Lua
   --[no-]shell-escape           wyłącz/włącz polecenia systemowe
   --shell-restricted            ogranicz polecenia systemowe do listy poleceń podanych w texmf.cnf
   --synctex=NUMBER              włącz synctex (zob. man synctex)
   --utc                         ustaw czas inicjalizacji na UTC
   --version                     wyświetl wersję i zakończ

Alternatywne modele zachowania można uzyskać za pomocą specjalnych przełączników

  --luaonly                      uruchom plik Lua, a następnie zakończ
  --luaconly                     skompiluj bajtowo plik Lua, a następnie zakończ
  --luahashchars                 bity używane przez bieżący interpreter Lua do haszowania łańcuchów

Więcej informacji o procesie uruchamiania można znaleźć w podręczniku referencyjnym.

Zgłoszenia błędów wysyłaj na adres dev-luatex@ntg.nl.
```

Wśród tych wielu opcji są dwie istotne tutaj:

```
--ini              uruchom iniluatex, aby tworzyć zrzuty formatów
--fmt=FORMAT       wczytaj plik formatu FORMAT
```

Tutaj LuaTeX odnosi się do swojego trybu INI pod nazwą `iniluatex`. Więc co to `iniluatex` (tryb INI) właściwie oznacza? Niewielką wskazówką jest druga opcja wiersza poleceń pokazana powyżej:

```
--fmt=FORMAT       wczytaj plik formatu FORMAT
```

### Tryb INI? Pliki formatu? Jestem zdezorientowany...

Pakiety makr, takie jak LaTeX, są dużymi zbiorami złożonych makr: wczytywanie i przetwarzanie surowego tekstu wszystkich składowych plików wiąże się z pewnym nakładem czasu i obliczeń; na przykład:

* czytanie i skanowanie dziesiątek tysięcy pojedynczych znaków tekstu;
* analizowanie, przetwarzanie i przechowywanie setek makr/poleceń;
* inicjalizacja wewnętrznych tablic czcionek i danych dzielenia wyrazów.

Wszystko to musi się odbyć, a wyniki muszą zostać zapisane w pamięci, zanim silnik TeX-a będzie faktycznie gotowy do przetwarzania dokumentu TeX użytkownika, który korzysta z makr dostarczanych na przykład przez zbiory makr Plain TeX lub LaTeX. Możesz to traktować jako proces bootstrappingu silnika TeX-a: niezbędne przygotowania, zanim będzie gotowy do przetwarzania twojego dokumentu.

Być może odzwierciedlając technologię swoich czasów, silniki TeX-a oferują skrót do przetwarzania plików tekstowych pełnych kolekcji makr: wczytywanie wstępnie przetworzonych binarnych (*format*) plików.

Gdy silnik TeX-a zostaje uruchomiony w trybie INI, jego zadaniem nie jest wykonywanie składu, lecz:

1. wczytanie i zainicjalizowanie wszystkich swoich poleceń pierwotnych oraz ustawienie absolutnego minimum catcode’ów (i innych kodów), aby silnik TeX mógł rozpocząć dalsze przetwarzanie.
2. gdy (1) zostanie wykonane, wczyta i przetworzy dostarczoną przez użytkownika kolekcję makr, określaną jako „format” (np. Plain TeX lub kolekcja makr LaTeX).
3. po pomyślnym ukończeniu (1) i (2) TeX wykona „binarny zrzut mózgu” wszystkiego, co zostało wczytane i przetworzone do jego pamięci, i zapisze to do binarnego *format* pliku (np., `lualatex.fmt`).

Plik formatu jest plikiem binarnym przechowującym reprezentację „stanu umysłu” TeX-a po zainicjalizowaniu licznych wewnętrznych tablic danych (w tym prymitywów) i przetworzeniu wszystkich poleceń makr obecnych w dostarczonej przez użytkownika kolekcji makr. Silniki TeX-a robią to, ponieważ szybciej jest wczytać „wstępnie skompilowany” plik binarny niż ponownie przetwarzać surowe makra za każdym razem, gdy chcesz uruchomić silnik TeX-a, korzystając na przykład z Plain TeX Knutha lub pakietu makr LaTeX — albo w istocie dowolnego pakietu makr zaprojektowanego jako „format”.

Gdy przetwarzasz dokument, który ma być złożony przez LaTeX, na przykład, silnik TeX nie odczytuje ponownie (nie przetwarza ponownie) wszystkich podstawowych makr LaTeX-a, lecz zamiast tego wczytuje plik binarny o nazwie na przykład `lualatex.fmt`. Wewnętrzne szczegóły plików formatu są specyficzne dla każdego silnika TeX i każdej wersji pakietu makr użytej do wygenerowania `.fmt` pliku. Na przykład, jeśli zaktualizujesz swoją dystrybucję LaTeX-a (tj. sam rdzeń LaTeX-a, nie pakiety dodatkowe), możesz również potrzebować wygenerowania nowego `.fmt` pliku.

### Przykład

W dystrybucji kodu źródłowego LaTeX-a znajdziesz pliki z rozszerzeniem `.ini` na przykład lualatex.ini, które są używane do generowania `.fmt` plików — te `.ini` pliki zazwyczaj zawierają kod inicjalizacyjny specyficzny dla silnika, a następnie przechodzą do wczytania podstawowych plików makr LaTeX-a. Na przykład, jeśli uruchomisz LuaTeX z następującym wierszem poleceń:

`luatex --ini lualatex.ini`

LuaTeX zapisze plik o nazwie `lualatex.fmt`

W chwili pisania tego tekstu `lualatex.ini` zawiera następujący kod:

```
% tex-ini-files 2016-04-15: lualatex.ini
% Pierwotnie napisane w 2008 przez Karla Berry’ego. Domena publiczna.

\\input luatexconfig.tex

\begingroup
  \\catcode`\\{=1 %
  \\catcode`\\}=2 %
  % Ustawianie cytowania nazwy zadania przed latex.ltx
  % Web2c pdfTeX/XeTeX ujmują w cudzysłów nazwy zadań zawierające spacje, ale LuaTeX
  % nie robi tego na poziomie silnika. Zachowanie można zmienić za pomocą
  % wywołania zwrotnego. Początkowo ten kod był wczytywany przez lualatexquotejobname.tex
  % ale wymagało to obejścia wokół latex.ltx: zachowanie zostało zmienione
  % tak, aby można było bezpośrednio używać ścieżki wywołania zwrotnego.
  \\global\\everyjob{\\directlua{require("lualatexquotejobname.lua")}}
\endgroup

\\input latex.ltx
```

`lualatex.ini` zaczyna od wczytania pliku o nazwie `luatexconfig.tex` który wykonuje pewną inicjalizację specyficzną dla LuaTeX-a — jak można się spodziewać po pliku `.ini` (inicjalizacyjnym)! W ostatnim wierszu wczytuje `latex.ltx` co powoduje, że LuaTeX odczytuje i przetwarza podstawowe makra LaTeX-a.

Po zakończeniu przetwarzania przez LuaTeX `lualatex.ini` zapisze binarny *plik formatu* o nazwie `lualatex.fmt`. Gdy kod LaTeX-a zostanie skompilowany do binarnego formatu, LuaTeX (lub dowolny inny silnik TeX-a) może bardzo szybko odczytać `.fmt` plik, aby zbootstrapować i zainicjalizować swoje wewnętrzne tablice definicji makr LaTeX-a, czcionek i tak dalej — nie musi przechodzić przez długi proces czytania i przetwarzania wielu tysięcy znaków zawartych w pakiecie makr LaTeX.

Teraz możesz polecić LuaTeX-owi złożenie twojego dokumentu LaTeX `yourfile.tex` (używając `lualatex` pliku formatu) za pomocą polecenia:

```
luatex --fmt=lualatex yourfile.tex
```

`.fmt` pliki są zwykle specyficzne dla konkretnego silnika: np. pliki LuaTeX-a `.fmt` pliki generalnie nie są przenośne do użycia z innym silnikiem TeX-a: np. pdfTeX lub XeTeX. Co więcej, jeśli plik wykonywalny LuaTeX zostanie zaktualizowany o nowe funkcje, całkiem możliwe jest, że plik `.fmt` utworzony za pomocą starszej wersji LuaTeX-a nie zadziała z nowym silnikiem: trzeba by przebudować (ponownie skompilować) `.fmt` pliku.

Jeśli spróbujesz użyć niekompatybilnego `.fmt` pliku, silnik TeX-a nie będzie w stanie go wczytać i odpowie błędem:

```
Krytyczny błąd pliku formatu; jestem zakłopotany
```

Podobnie, jeśli podstawowe makra LaTeX-a zostaną zaktualizowane, może być również konieczne przebudowanie `lualatex.fmt` pliku.

`.fmt` pliki mogą być przygotowane z dowolnego odpowiedniego pakietu makr — nie tylko LaTeX-a; na przykład oryginalne, i znacznie prostsze, makra TeX-a „Plain” Knutha również mogą zostać przetworzone, aby wygenerować `.fmt` plik. Możesz, jeśli masz czas, napisać własną kolekcję makr i utworzyć dla tego pakietu plik formatu — zauważ, że gdzieś w swoim pakiecie makr musiałbyś wywołać prymitywne polecenie `\\dump` które mówi silnikowi TeX-a, aby wykonał swój „binarny zrzut mózgu” i zapisał `.fmt` pliku.

Jednak zdecydowana większość użytkowników nigdy nie musi martwić się o tryb „INI” silników TeX-a ani o proces generowania `.fmt` plików: Overleaf i dystrybucja TeX Live chronią cię przed tymi szczegółami — chyba że będziesz musiał ich poszukać.


---

# 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/artykuly-szczegolowe/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.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.
