> 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/01-a-new-series-of-articles-tex-tokens-and-related-concepts-but-why-and-how.md).

# Seri artikel baru: Token TeX dan konsep terkait—tetapi mengapa (dan bagaimana)?

Artikel pengantar ini bertujuan menjelaskan mengapa seri ini ditulis, apa yang saya harapkan untuk dicapai, dan memberikan informasi latar belakang tentang teknik yang digunakan untuk mengeksplorasi token TeX melalui pengamatan terhadap cara kerja internal mesin TeX. Halaman artikel ini juga dirancang untuk memuat tautan ke semua artikel dalam seri ini dan akan diperbarui untuk menyediakan tautan-tautan tersebut seiring terbitnya setiap artikel baru.

### Tautan ke artikel-artikel

Setiap artikel akan berisi sejumlah tautan ke artikel-artikel lain dalam seri ini.

* [Apa itu “token TeX”?](/latex/id/artikel-mendalam/53-what-is-a-tex-token.md)
* [Apa itu “daftar token TeX”?](/latex/id/artikel-mendalam/54-what-is-a-tex-token-list.md)

## Latar belakang seri artikel ini

Motivasi untuk menulis seri artikel ini muncul setelah membaca materi tentang TeX yang menjelaskan banyak aktivitas TeX melalui konsep “token” beserta “proses tokenisasi” TeX, “daftar token”, dan konsep terkait seperti “ekspansi makro” dan “perintah yang dapat diekspansi”. Setiap kali saya menemukan penjelasan terkait TeX yang dirumuskan dalam istilah “token TeX”, pertanyaan yang sama terus terlintas di benak saya: Apa, tepatnya, *adalah* sebuah token TeX? Saya perlu mencari tahu.

Ruang lingkup dan isi artikel pertama, [Apa itu “token TeX”?](/latex/id/artikel-mendalam/53-what-is-a-tex-token.md), pada hakikatnya, sangat “dekat dengan perangkat keras”, seperti kata para pemrogram, dan tidak diragukan lagi bahwa “token TeX” dapat diklasifikasikan sebagai topik yang cukup esoteris untuk ditulis: jadi mengapa repot? Pada akhirnya, Anda mengambil pandangan—atau mungkin lompatan iman—bahwa orang lain mungkin juga telah memikirkan topik yang sama dan bahwa ada ruang untuk satu atau dua artikel guna mengisi beberapa celah. Tujuan saya adalah memberikan beberapa penjelasan latar belakang yang berguna yang dapat melengkapi materi lain yang mungkin Anda baca dan, semoga, dapat membantu memahami lebih baik beberapa konsep kunci yang muncul saat Anda belajar tentang TeX dan menjelajahi makro serta pemrograman.

Jelas, dalam batas-batas artikel blog kita hanya bisa melihat permukaannya—sangat tidak praktis untuk mencoba menjelaskan semua topik penting atau menyelam ke perairan yang paling keruh. Karena keharusan, saya akan melewati banyak detail dan berjalan di garis tipis antara penyederhanaan berlebihan dan mendorong analogi sampai titik patah.

“Tulis artikel yang ingin Anda baca” adalah panduan yang berguna dan yang telah saya upayakan keras untuk diterapkan saat menulis seri ini.

## Setelah mengajukan pertanyaan, lalu apa?

Tantangan langsungnya jelas: bagaimana Anda mengetahui tentang token TeX karena rincian semacam itu (tentang token, tokenisasi, dll.) terkubur jauh di dalam kode perangkat lunak mesin TeX—sebenarnya Anda tidak perlu terlalu memikirkannya kecuali, tentu saja, Anda memang tertarik pada rincian tersebut.

Salah satu cara untuk menjajaki jawaban atas pertanyaan-pertanyaan ini adalah dengan mencoba membaca kode sumber asli TeX dalam [`tex.web`](https://www.ctan.org/tex-archive/systems/knuth/dist/tex)—melalui menjalankan [WEAVE](http://tug.org/texinfohtml/web2c.html#weave-invocation) untuk mengekstrak dokumentasi TeX—atau dengan membeli salinan buku [Computers & Typesetting, Volume B: TeX: The Program](https://www.amazon.co.uk/Computers-Typesetting-TEX-Program-v/dp/0201134373). Saya membeli salinan buku cetaknya! Tentu sangat membantu memiliki kode sumber TeX yang diterbitkan dalam bentuk buku dan, tentu saja, ada banyak penjelasan berguna di sepanjang buku. Namun, TeX karya Knuth ditulis dalam Pascal dan, secara alami, kode sumber Pascal didokumentasikan menggunakan metodologi pemrograman literat Knuth—menyajikan kode dalam potongan-potongan kecil yang mudah dicerna. Mudah untuk menghargai bagaimana pendekatan Knuth terhadap dokumentasi benar-benar membantu untuk perangkat lunak sekompleks TeX, tetapi membaca buku itu memang mengharuskan cukup banyak silang-referensi dan bolak-balik halaman.

Meskipun membantu, buku itu saja belum cukup (bagi saya) untuk memperoleh pemahaman yang lebih baik tentang apa yang terjadi saat TeX membuat “token”—topik yang secara khusus saya minati. Hanya ada satu cara untuk benar-benar mengetahuinya: membangun program TeX, menjalankannya pada file TeX kecil, dan secara harfiah menyaksikan kode dijalankan saat TeX memindai dan membaca input. Rincian membangun TeX dari sumber agak esoteris—mengonversi Pascal ke C—tetapi ada deskripsi singkat di bagian berikut bersama dengan tautan ke sebuah tulisan blog pribadi yang membahasnya lebih rinci.

Tidak seperti XeTeX dan LuaTeX—yang dapat memproses teks dalam format UTF-8 dan mendukung penyandian teks Unicode—TeX karya Knuth adalah mesin 8-bit, yang berarti bahwa ia mengasumsikan karakter masukan berada dalam rentang 0 hingga 255. Meskipun ini merupakan perbedaan penting, hal itu tidak *secara material* mempengaruhi pembahasan kita tentang token TeX karena kita membahas topik dan prinsip yang umum bagi semua mesin TeX: semuanya adalah inti dari perangkat lunak itu.

## Bagaimana Anda dapat mempelajari token TeX?

Mengurai jalur dari teks masukan ke token TeX telah, bagi saya, menjadi sebuah perjalanan yang cukup panjang—saya harus mengakui bahwa berbagai tingkat kebingungan telah menjadi teman semi-permanen di sepanjang jalan: TeX adalah perangkat lunak yang sangat kompleks.

Selama beberapa tahun (sejak sekitar 2009) saya secara rutin mengompilasi versi terbaru LuaTeX dari kode sumbernya—sebuah proses yang cukup langsung berkat cara distribusi kode sumber LuaTeX yang sungguh luar biasa. Berdasarkan pengalaman itu, saya menjadi tertarik untuk lebih memahami bagaimana membangun TeX asli karya Knuth dari kode sumbernya—sebuah *sangat* proposisi yang berbeda karena TeX ditulis menggunakan metodologi pemrograman literat Knuth. Pembangunan TeX secara pribadi itu, di Windows tetapi menggunakan kompilator dan perangkat alat sumber terbuka, dilakukan di luar distribusi TeX Live dan merupakan proyek mandiri. Itu juga memerlukan pembangunan rantai alat yang diperlukan untuk mengonversi `tex.web` menjadi program C yang dapat dikompilasi dan kemudian dijalankan dalam debugger untuk melihat apa yang sebenarnya dilakukan TeX saat memproses karakter-karakter masukan.

TeX asli karya Knuth digunakan alih-alih pdfTeX, XeTeX, atau LuaTeX karena saya membutuhkan versi TeX yang paling dekat dengan kode sumber tercetak di buku TeX: The Program. Buku itu pertama kali diterbitkan pada tahun 1986 dan meskipun TeX telah mengalami beberapa pembaruan sejak saat itu, versi terbaru TeX (3.14159265, dirilis pada Januari 2014) tentu cukup dekat dengan kode sumber yang terdapat dalam buku itu.

Mencerminkan metodologi pemrograman literat Knuth, kode sumber TeX didistribusikan dalam format teks yang disebut WEB: campuran dokumentasi TeX dan kode sumber Pascal. Gagasan dasarnya adalah Anda menggunakan dua utilitas bernama TANGLE dan WEAVE yang memproses berkas WEB untuk mengekstrak dokumentasi TeX atau kode sumber Pascal:

* [TANGLE](http://tug.org/texinfohtml/web2c.html#tangle-invocation) mengekstrak kode sumber Pascal dari berkas WEB
* [WEAVE](http://tug.org/texinfohtml/web2c.html#weave-invocation) mengekstrak dokumentasi TeX dari berkas WEB

Namun, sebelum Anda mengekstrak kode sumber Pascal, Anda harus melakukan pra-pemrosesan terhadap `tex.web` berkas Knuth untuk menerapkan sejumlah perubahan yang memungkinkan konversi kode Pascal TeX menjadi kode C menggunakan proses yang disebut Web2C. Langkah pra-pemrosesan ini disebut *penerapan berkas perubahan*.

berkas kode asli Knuth (tex.web) tidak boleh diubah secara langsung dengan cara apa pun; sebaliknya, Anda menerapkan modifikasi menggunakan apa yang disebut berkas perubahan (ekstensi `.ch`) `.web` berkas utama—seperti `tex.web`. Berkas perubahan digabungkan dengan kode sumber asli Knuth—menggunakan program utilitas tambahan bernama TIE—untuk membuat sebuah berkas yang, misalnya, `mytex.web` yang kemudian Anda proses dengan TANGLE untuk mengekstrak kode Pascal ke dalam `mytex.pas`. Setelah Anda memiliki berkas sumber Pascal yang sesuai, Anda dapat menerapkan langkah-langkah akhir dalam proses Web2C untuk mengubahnya menjadi berkas kode sumber C yang dapat Anda kompilasi menjadi program TeX yang dapat dieksekusi. Jika Anda ingin membaca tentang proses konversi Web2C yang cukup berbelit-belit itu, ada rincian lebih lanjut di [situs blog pribadi penulis ini](http://www.readytext.co.uk/?p=2529).

Hasil akhirnya adalah program TeX yang dapat dijalankan menggunakan [Eclipse IDE untuk C/C++](http://www.eclipse.org/home/index.php) untuk menelusuri kode sumber TeX selangkah demi selangkah (dalam C) dan melihat apa yang terjadi saat ia memindai masukan Anda. Ini jelas bukan kegiatan yang paling menghibur karena kode C-nya dihasilkan oleh mesin dan, di beberapa tempat, sangat sulit diikuti (kode sumber TeX sangat banyak menggunakan GOTO dan variabel global). Buku TeX: The Program tetap sangat berharga untuk membantu menavigasi sumber C, meskipun buku itu memuat kode sumber TeX dalam kode Pascal yang ditata dengan indah.

Sebagai penutup pembahasan, berikut adalah contoh tangkapan layar yang menunjukkan TeX dijalankan melalui Eclipse IDE dengan eksekusi dijeda pada fungsi `getnext()`—yang merupakan inti dari proses pembangkitan token TeX.

![Tangkapan layar yang menunjukkan TeX dijalankan melalui Eclipse IDE](/files/287bc83d27d6f6c93770d516c65dc7610ba121a1)

Menelusuri kode sumber C TeX menggunakan Eclipse IDE sumber terbuka untuk C/C++.

## Kesimpulan dan Terima Kasih

Menulis artikel pertama dan menyusun gagasan untuk posting blog mendatang dalam seri ini tentu telah memakan banyak waktu. Saya sangat berterima kasih kepada John Hammersley dan Mary Anne Baynes di Overleaf atas dukungan mereka terhadap ide seri ini dan karena telah memberi saya waktu yang diperlukan untuk penelitian latar belakang tambahan. Harapan saya adalah bahwa seri artikel ini berhasil mengidentifikasi dan membahas topik-topik yang menjadi perhatian umum dan terbukti bernilai bagi mereka yang membacanya.


---

# 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/01-a-new-series-of-articles-tex-tokens-and-related-concepts-but-why-and-how.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.
