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

# Dua mode mesin TeX: mode INI dan mode produksi

Semua mesin TeX memiliki dua "mode" operasi: mode "INI" dan mode "produksi"—yang terakhir hanyalah mode default (standar) yang digunakan untuk produksi materi tata letak. Mode INI agak berbeda dan Anda perlu menggunakan opsi baris perintah untuk menempatkan mesin TeX ke mode INI. Anda dapat melihat cara melakukannya dengan menjalankan `--help` di baris perintah. Misalnya, dengan LuaTeX jika Anda menjalankan

`luatex --help`

Anda akan melihat banyak opsi baris perintah yang didukung oleh mesin itu:

```
Penggunaan: luatex --lua=FILE [OPTION]... [TEXNAME[.tex]] [COMMANDS]
   atau: luatex --lua=FILE [OPTION]... \FIRST-LINE
   atau: luatex --lua=FILE [OPTION]... &FMT ARGS
  Jalankan LuaTeX pada TEXNAME, biasanya menghasilkan TEXNAME.pdf.
  COMMANDS yang tersisa diproses sebagai masukan luatex, setelah TEXNAME dibaca.

  Sebagai alternatif, jika argumen non-opsi pertama dimulai dengan garis miring terbalik,
  luatex menafsirkan semua argumen non-opsi sebagai satu baris masukan.

  Sebagai alternatif, jika argumen non-opsi pertama dimulai dengan &,
  kata berikutnya dianggap sebagai FMT yang akan dibaca, menimpa semua yang lain. Setiap
  argumen yang tersisa diproses seperti di atas.

  Jika tidak ada argumen atau opsi yang ditentukan, minta masukan.

  Opsi reguler berikut dipahami:

   --credits                     tampilkan kredit dan keluar
   --debug-format                aktifkan penelusuran kesalahan format
   --draftmode                   aktifkan mode draf (tidak menghasilkan PDF keluaran)
   --[no-]file-line-error        nonaktifkan/aktifkan pesan bergaya file:baris:kesalahan
   --[no-]file-line-error-style  alias dari --[no-]file-line-error
   --fmt=FORMAT                  muat berkas format FORMAT
   --halt-on-error               hentikan pemrosesan pada kesalahan pertama
   --help                        tampilkan bantuan dan keluar
   --ini                         menjadi iniluatex, untuk membuang format
   --interaction=STRING          setel mode interaksi (STRING=batchmode/nonstopmode/scrollmode/errorstopmode)
   --jobname=STRING              setel nama tugas menjadi STRING
   --kpathsea-debug=NUMBER       setel flag penelusuran path sesuai dengan bit-bit NUMBER
   --lua=FILE                    muat dan jalankan skrip inisialisasi lua
   --[no-]mktex=FMT              nonaktifkan/aktifkan pembuatan mktexFMT (FMT=tex/tfm)
   --nosocket                    nonaktifkan pustaka socket lua
   --output-comment=STRING       gunakan STRING untuk komentar berkas DVI sebagai ganti tanggal (tidak berpengaruh untuk PDF)
   --output-directory=DIR        gunakan DIR yang sudah ada sebagai direktori untuk menulis berkas
   --output-format=FORMAT        gunakan FORMAT untuk keluaran tugas; FORMAT adalah 'dvi' atau 'pdf'
   --progname=STRING             setel nama program menjadi STRING
   --recorder                    aktifkan pencatat nama berkas
   --safer                       nonaktifkan perintah lua yang mudah dieksploitasi
   --[no-]shell-escape           nonaktifkan/aktifkan perintah sistem
   --shell-restricted            batasi perintah sistem pada daftar perintah yang diberikan dalam texmf.cnf
   --synctex=NUMBER              aktifkan synctex (lihat man synctex)
   --utc                         inisialisasi waktu ke UTC
   --version                     tampilkan versi dan keluar

Model perilaku alternatif dapat diperoleh dengan sakelar khusus

  --luaonly                      jalankan berkas lua, lalu keluar
  --luaconly                     kompilasikan byte berkas lua, lalu keluar
  --luahashchars                 bit yang digunakan oleh interpreter Lua saat ini untuk hashing string

Lihat manual referensi untuk informasi lebih lanjut tentang proses startup.

Kirim laporan bug melalui email ke dev-luatex@ntg.nl.
```

Di antara banyak opsi itu ada dua yang relevan di sini:

```
--ini              menjadi iniluatex, untuk membuang format
--fmt=FORMAT       muat berkas format FORMAT
```

Di sini, LuaTeX menyebut mode INI-nya dengan nama `iniluatex`. Jadi apa arti `iniluatex` (mode INI) ini sebenarnya? Petunjuk kecilnya adalah opsi baris perintah kedua yang ditunjukkan di atas:

```
--fmt=FORMAT       muat berkas format FORMAT
```

### Mode INI? Berkas format? Saya bingung...

Paket makro, seperti LaTeX, adalah kumpulan besar makro yang kompleks: memuat dan memproses teks mentah dari semua berkas penyusunnya memang memiliki biaya waktu dan komputasi tertentu; misalnya:

* membaca dan memindai puluhan ribu karakter teks satu per satu;
* mengurai, memproses, dan menyimpan ratusan makro/perintah;
* menginisialisasi tabel internal font dan data pemenggalan kata.

Semua ini harus berlangsung, dan hasilnya disimpan dalam memori, sebelum mesin TeX benar-benar siap memproses dokumen TeX pengguna yang memanfaatkan makro yang disediakan oleh, misalnya, koleksi makro Plain TeX atau LaTeX. Anda dapat menganggap ini sebagai proses bootstrapping mesin TeX: persiapan penting sebelum siap memproses dokumen Anda.

Mungkin mencerminkan teknologi pada zamannya, mesin TeX menawarkan jalan pintas untuk memproses berkas teks penuh koleksi makro: memuat biner yang sudah diproses sebelumnya (*format*)

Ketika ditempatkan ke mode INI, tugas sebuah mesin TeX bukan untuk melakukan tata letak, melainkan untuk:

1. memuat dan menginisialisasi semua perintah primitifnya serta menyiapkan seminimal mungkin catcode (dan kode lain) sehingga mesin TeX dapat memulai pemrosesan lebih lanjut.
2. setelah (1) selesai, ia kemudian akan memuat dan memproses koleksi makro yang disediakan pengguna, yang disebut sebagai "format" (mis., Plain TeX atau koleksi makro LaTeX).
3. setelah berhasil menyelesaikan (1) dan (2), TeX akan melakukan "dump otak biner" dari semua yang telah dimuat dan diproses ke dalam memorinya dan menuliskannya ke dalam sebuah biner *format* berkas (mis., `lualatex.fmt`).

Berkas format adalah berkas biner yang menyimpan representasi dari "keadaan pikiran" TeX setelah menginisialisasi banyak tabel data internal (termasuk primitive) dan memproses semua perintah makro yang ada dalam koleksi makro yang disediakan pengguna. Mesin TeX melakukan ini karena lebih cepat memuat berkas biner yang "sudah dikompilasi" daripada memproses ulang makro mentah setiap kali Anda ingin menjalankan mesin TeX menggunakan, misalnya, Plain TeX karya Knuth atau paket makro LaTeX—atau memang paket makro apa pun yang dirancang sebagai "format".

Saat Anda memproses sebuah dokumen yang akan ditata letaknya oleh LaTeX, misalnya, mesin TeX tidak membaca ulang (memproses ulang) semua makro inti LaTeX, melainkan membaca sebuah berkas biner yang disebut, misalnya, `lualatex.fmt`. Rincian internal berkas format bersifat khusus untuk setiap mesin TeX dan setiap versi paket makro yang digunakan untuk menghasilkan sebuah `.fmt` berkas. Misalnya, jika Anda memperbarui distribusi LaTeX Anda (yakni inti LaTeX itu sendiri, bukan paket tambahan) maka Anda mungkin juga perlu membuat sebuah `.fmt` berkas baru.

### Contoh

Di dalam distribusi kode sumber LaTeX Anda akan menemukan berkas dengan ekstensi `.ini` misalnya lualatex.ini, yang digunakan untuk menghasilkan `.fmt` berkas—berkas tersebut `.ini` biasanya berisi kode inisialisasi khusus mesin lalu melanjutkan untuk memasukkan berkas makro inti LaTeX. Misalnya, jika Anda menjalankan LuaTeX dengan baris perintah berikut:

`luatex --ini lualatex.ini`

LuaTeX akan menuliskan sebuah berkas bernama `lualatex.fmt`

Pada saat penulisan ini, `lualatex.ini` berisi kode berikut:

```
% tex-ini-files 2016-04-15: lualatex.ini
% Awalnya ditulis tahun 2008 oleh Karl Berry. Domain publik.

\input luatexconfig.tex

\begingroup
  \catcode`\{=1 %
  \catcode`\}=2 %
  % Atur pengutipan nama tugas sebelum latex.ltx
  % Web2c pdfTeX/XeTeX mengapit nama tugas yang berisi spasi, tetapi LuaTeX
  % tidak melakukan ini pada tingkat mesin. Perilaku ini dapat diubah menggunakan
  % sebuah callback. Awalnya kode ini dimuat melalui lualatexquotejobname.tex
  % tetapi itu memerlukan akal-akalan di sekitar latex.ltx: perilaku telah diubah
  % agar jalur callback dapat digunakan secara langsung.
  \global\everyjob{\directlua{require("lualatexquotejobname.lua")}}
\endgroup

\input latex.ltx
```

`lualatex.ini` dimulai dengan memasukkan sebuah berkas bernama `luatexconfig.tex` yang melakukan beberapa inisialisasi khusus LuaTeX—seperti yang mungkin Anda duga dari sebuah `.ini` berkas (inisialisasi)! Pada baris terakhir ia memasukkan `latex.ltx` yang menyebabkan LuaTeX membaca dan memproses makro inti LaTeX.

Setelah LuaTeX selesai memproses `lualatex.ini` ia akan menuliskan biner *berkas format* bernama `lualatex.fmt`. Setelah kode LaTeX dikompilasi menjadi format biner, LuaTeX (atau mesin TeX lainnya) dapat dengan sangat cepat membaca `.fmt` berkas tersebut untuk melakukan bootstrap dan menginisialisasi tabel internal definisi makro LaTeX, font, dan sebagainya—ia tidak perlu menjalani proses panjang membaca dan memproses ribuan karakter yang terkandung dalam paket makro LaTeX.

Sekarang Anda dapat memerintahkan LuaTeX untuk menata letak dokumen LaTeX Anda `yourfile.tex` (dengan menggunakan `lualatex` berkas format) dengan menjalankan perintah:

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

`.fmt` berkas biasanya khusus untuk mesin tertentu: mis., berkas `.fmt` berkas umumnya tidak portabel untuk digunakan dengan mesin TeX lain: mis., pdfTeX atau XeTeX. Selain itu, jika executable LuaTeX diperbarui dengan fitur baru, sangat mungkin sebuah `.fmt` berkas yang dibuat dengan versi LuaTeX yang lebih lama tidak akan berfungsi dengan mesin baru: Anda perlu membangun ulang (mengompilasi ulang) `.fmt` .

Jika Anda mencoba menggunakan sebuah `.fmt` berkas yang tidak kompatibel, maka mesin TeX akan gagal memuatnya dan merespons dengan kesalahan:

```
Kesalahan berkas format fatal; saya buntu
```

Demikian pula, jika makro inti LaTeX diperbarui Anda mungkin juga perlu membangun ulang `lualatex.fmt` berkas baru.

`.fmt` berkas dapat disiapkan dari paket makro apa pun yang sesuai—bukan hanya LaTeX; misalnya, makro TeX "Plain" asli karya Knuth, yang jauh lebih sederhana, juga dapat diproses untuk menghasilkan sebuah `.fmt` berkas. Jika Anda punya waktu, Anda dapat menulis koleksi makro Anda sendiri dan menghasilkan berkas format untuk paket tersebut—perhatikan bahwa di suatu tempat dalam paket makro Anda, Anda perlu memanggil perintah primitif `\dump` yang memberi tahu mesin TeX untuk melakukan "dump otak biner" dan menuliskan `.fmt` .

Namun, sebagian besar pengguna tidak perlu khawatir tentang mode "INI" mesin TeX, maupun proses menghasilkan `.fmt` berkas: Overleaf dan distribusi TeX Live melindungi Anda dari detail tersebut—kecuali jika Anda perlu mencarinya.


---

# 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/id/artikel-mendalam/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.
