TeX

**TeX**, juga ditulis sebagai TeX, sistem typesetting (penyusunan huruf) yang dirancang dan ditulis oleh Donald Knuth, dan pertama kali dirilis pada tahun 1978. TeX adalah cara populer untuk menyusun rumus matematika yang kompleks; TeX telah dicatat sebagai salah satu sistem tipografi digital yang paling canggih.

TeX banyak digunakan dalam dunia akademis, terutama dalam matematika, ilmu komputer, ekonomi, ilmu politik, teknik, linguistik, fisika, statistika, dan psikologi kuantitatif. TeX telah lama menggantikan troff Unix, sistem pemformatan yang sebelumnya disukai di sebagian besar instalasi Unix. TeX juga digunakan untuk banyak tugas penyusunan huruf lainnya, terutama dalam bentuk LaTeX, ConTeXt, dan paket makro lainnya.

TeX dirancang dengan dua tujuan utama: untuk memungkinkan siapa pun menghasilkan buku berkualitas tinggi dengan usaha yang minimal, dan untuk menyediakan sistem yang akan memberikan hasil yang persis sama di semua komputer  kapanpun (bersama dengan bahasa Metafont untuk deskripsi font dan keluarga *[[Rupa huruf|typeface]]* Computer Modern). TeX adalah perangkat lunak gratis, yang membuatnya dapat diakses oleh berbagai pengguna.

## Sejarah
Ketika volume pertama dari buku *[[The Art of Computer Programming]]* karya Knuth diterbitkan pada tahun 1968, buku ini diketik dengan menggunakan *[[hot metal typesetting]]* pada mesin Monotype. Metode ini, yang berasal dari abad ke-19, menghasilkan "gaya klasik" yang disukai oleh Knuth. Ketika edisi kedua diterbitkan, pada tahun 1976, seluruh buku harus diketik lagi karena teknologi Monotype sebagian besar telah digantikan oleh phototypesetting, dan font asli tidak lagi tersedia. Ketika Knuth menerima cetak coba dari buku baru pada tanggal 30 Maret 1977, dia menemukan bahwa kualitas buku tersebut lebih rendah.

Kecewa dengan cetak coba edisi kedua dari jilid kedua, dia termotivasi untuk merancang sistem penyusunan hurufnya sendiri. Knuth melihat untuk pertama kalinya output dari sistem penyusunan huruf digital berkualitas tinggi, dan menjadi tertarik pada tipografi digital. Pada tanggal 13 Mei 1977, ia menulis memo untuk dirinya sendiri yang menjelaskan fitur dasar TeX.

Dia berencana untuk menyelesaikannya pada masa cuti panjangnya pada tahun 1978, tetapi bahasa tersebut tidak sempat "*frozen*" (siap digunakan) sampai tahun 1989, lebih dari sepuluh tahun kemudian. Guy Steele kebetulan berada di Universitas Stanford selama musim panas 1978, ketika Knuth mengembangkan versi pertama TeX. Ketika Steele kembali ke Institut Teknologi Massachusetts pada musim gugur itu, dia menulis ulang *input/output* (I/O) TeX untuk dijalankan di sistem operasi Incompatible Timesharing System (ITS). Versi pertama TeX, yang disebut TeX78, ditulis dalam bahasa pemrograman SAIL untuk dijalankan pada PDP-10 di bawah sistem operasi WAITS milik Stanford.

### WEB dan pemrograman literasi
Untuk versi TeX yang lebih baru, Knuth menemukan konsep pemrograman literasi (*literate programming*), sebuah cara untuk menghasilkan kode sumber yang dapat dikompilasi dan dokumentasi cross-linked yang diketik dalam TeX, dari berkas asli yang sama. Bahasa yang digunakan disebut WEB dan menghasilkan program dalam DEC PDP-10 Pascal.

### TeX82
TeX82, versi baru TeX yang ditulis ulang dari awal, diterbitkan pada tahun 1982. Di antara perubahan lainnya, algoritma tanda hubung (*hypenation*) yang asli digantikan oleh algoritma baru yang ditulis oleh Frank Liang. TeX82 juga menggunakan aritmetika *[[Aritmetika titik tetap|fixed-point]]*, bukan ''floating-point'', untuk memastikan hasil yang sama di berbagai perangkat keras komputer yang berbeda, dan menyertakan bahasa pemrograman Turing-lengkap yang nyata, setelah lobi intens oleh Guy Steele. Pada tahun 1989, Donald Knuth merilis versi baru TeX dan Metafont. Terlepas dari keinginannya untuk menjaga kestabilan program, Knuth menyadari bahwa 128 karakter yang berbeda untuk input teks tidak cukup untuk mengakomodasi bahasa asing; perubahan utama dalam TeX versi 3.0 (juga disebut TeX90) adalah kemampuan untuk bekerja dengan input 8-bit, memungkinkan 256 karakter berbeda dalam input teks.

Sejak versi 3, TeX telah menggunakan sistem penomoran versi yang istimewa, yakni pembaruan ditunjukkan dengan menambahkan digit ekstra di akhir desimal, sehingga nomor versi secara asimtotik mendekati . Ini adalah cerminan dari fakta bahwa TeX sekarang sangat stabil, dan hanya pembaruan kecil yang diantisipasi. Versi TeX saat ini adalah 3.141592653; terakhir diperbarui pada tahun 2021. Desainnya dibekukan (*frozen*) setelah versi 3.0, dan tidak ada fitur baru atau perubahan mendasar yang akan ditambahkan, jadi semua versi yang lebih baru hanya akan berisi perbaikan kutu. Meskipun Donald Knuth sendiri telah menyarankan beberapa area di mana TeX dapat ditingkatkan, dia mengindikasikan bahwa dia sangat yakin bahwa memiliki sistem yang tidak berubah dan yang akan menghasilkan output yang sama sekarang juga di masa depan, lebih penting daripada memperkenalkan fitur baru. Untuk alasan ini, dia telah menyatakan bahwa "perubahan yang benar-benar terakhir (yang akan dilakukan setelah kematian saya)" adalah mengubah nomor versi menjadi , di mana semua bug yang tersisa akan menjadi fitur. Demikian juga, versi Metafont setelah 2.0 secara asimtotik mendekati  (saat ini di 2.7182818), dan perubahan serupa akan diterapkan setelah kematian Knuth.

### Domain publik
Karena kode sumber TeX pada dasarnya berada dalam domain publik (lihat di bawah), programmer lain diperbolehkan (dan secara eksplisit didorong) untuk meningkatkan sistem, tetapi diharuskan menggunakan nama lain untuk mendistribusikan TeX yang dimodifikasi, yang berarti bahwa kode sumber masih dapat berkembang. Sebagai contoh, proyek Omega dikembangkan setelah tahun 1991, terutama untuk meningkatkan kemampuan typesetting multibahasa TeX. Knuth menciptakan versi modifikasi "tidak resmi", seperti TeX-XeT, yang memungkinkan pengguna untuk mencampur teks yang ditulis dalam sistem penulisan kiri-ke-kanan dan kanan-ke-kiri dalam dokumen yang sama.

## Penggunaan TeX
Dalam beberapa bidang teknis seperti ilmu komputer, matematika, teknik dan fisika, TeX telah menjadi standar de facto. Ribuan buku telah diterbitkan menggunakan TeX, termasuk buku-buku yang diterbitkan oleh Addison-Wesley, Cambridge University Press, Elsevier, Oxford University Press, dan Springer. Banyak jurnal di bidang ini diproduksi menggunakan TeX atau LaTeX, yang memungkinkan penulis untuk mengirimkan naskah mentah mereka yang ditulis dalam TeX. Sementara banyak publikasi di bidang lain, termasuk kamus dan publikasi hukum, telah diproduksi menggunakan TeX, tetapi belum sesukses di bidang yang lebih teknis, karena TeX terutama dirancang untuk mengetik matematika.

Ketika dia mendesain TeX, Donald Knuth tidak percaya bahwa satu sistem penyusunan huruf tunggal akan sesuai dengan kebutuhan semua orang; sebagai gantinya, dia mendesain banyak pengait di dalam program sehingga memungkinkan untuk menulis ekstensi, dan merilis kode sumbernya, dengan harapan bahwa penerbit akan merancang versi yang menyesuaikan dengan kebutuhan mereka sendiri. Meskipun ekstensi semacam itu telah dibuat (termasuk beberapa oleh Knuth sendiri), kebanyakan orang telah memperluas TeX hanya dengan menggunakan makro dan TeX tetap menjadi sistem yang terkait dengan penyusunan huruf teknis.

## Sistem penyusunan huruf
Perintah TeX biasanya dimulai dengan garis miring terbalik dan dikelompokkan dengan kurung kurawal. Hampir semua sifat sintaksis TeX dapat diubah dengan cepat (*on the fly*), yang membuat input TeX sulit diurai oleh apa pun kecuali TeX itu sendiri. TeX adalah bahasa berbasis makro dan token: banyak perintah, termasuk sebagian besar perintah yang ditentukan pengguna, diperluas (*expanded*) dengan cepat sampai hanya token yang tidak dapat diekspansi yang tersisa, yang kemudian dieksekusi. Ekspansi itu sendiri praktis bebas dari efek samping. Rekursi ekor dari makro tidak membutuhkan memori, dan konstruksi if-then-else tersedia. Hal ini membuat TeX menjadi bahasa Turing-lengkap bahkan pada tingkat ekspansi. Sistem ini dapat dibagi menjadi empat tingkat: yang pertama, karakter dibaca dari *file* input dan diberi kode kategori (kadang-kadang disebut dengan "catcode"). Kombinasi garis miring terbalik (sebenarnya, karakter apa pun dari kategori nol) yang diikuti oleh huruf (karakter kategori 11) atau satu karakter lain digantikan oleh token *control-sequence*. Dalam hal ini, tahap ini seperti analisis leksikal, meskipun tidak membentuk angka dari digit. Pada tahap berikutnya, urutan kontrol yang dapat diperluas (seperti kondisional atau makro yang didefinisikan) digantikan oleh teks penggantinya. Masukan untuk tahap ketiga adalah aliran karakter (termasuk yang memiliki makna khusus) dan urutan kontrol yang tidak dapat diperluas (biasanya tugas dan perintah visual). Di sini, karakter-karakter tersebut dirangkai menjadi sebuah paragraf, dan algoritma pemecah paragraf TeX bekerja dengan mengoptimalkan *breakpoints* di seluruh paragraf. Tahap keempat memecah daftar vertikal baris dan materi lainnya ke dalam halaman.

Sistem TeX memiliki pengetahuan yang tepat tentang ukuran semua karakter dan simbol, dan dengan menggunakan informasi ini, sistem ini menghitung pengaturan optimal huruf per baris dan baris per halaman. Kemudian sistem menghasilkan *file* DVI ("*DeVice Independent*") yang berisi lokasi akhir dari semua karakter. File DVI ini kemudian dapat dicetak langsung dengan *driver* printer yang sesuai, atau dapat dikonversi ke format lain. Saat ini, pdfTeX sering digunakan, yang melewati pembuatan DVI sama sekali. Sistem TeX dasar memahami sekitar 300 perintah, yang disebut *primitif*. Perintah-perintah tingkat rendah ini jarang digunakan secara langsung oleh pengguna, dan sebagian besar fungsionalitas disediakan oleh file format (*memory image* TeX yang di-*predump* setelah koleksi makro besar telah dimuat). Format default asli Knuth, yang menambahkan sekitar 600 perintah, adalah Plain TeX. Format yang paling banyak digunakan adalah LaTeX, awalnya dikembangkan oleh Leslie Lamport, yang menggabungkan gaya dokumen untuk buku, surat, slide, dll.; juga menambahkan dukungan untuk referensi dan penomoran otomatis bagian dan persamaan. Format lain yang banyak digunakan, AMS-TeX, diproduksi oleh American Mathematical Society dan menyediakan banyak perintah yang lebih ramah pengguna, yang dapat diubah oleh jurnal-jurnal agar sesuai dengan format gaya mereka. Sebagian besar fitur AMS-TeX dapat digunakan di LaTeX dengan menggunakan "paket AMS" (misalnya, `amsmath`, `amssymb`) dan "kelas dokumen AMS" (misalnya, `amsart`, `amsbook`). Hal ini kemudian disebut sebagai AMS-LaTeX. Format lain termasuk ConTeXt, yang digunakan terutama untuk penerbitan desktop dan sebagian besar ditulis oleh Hans Hagen di Pragma.

### Cara kerja

Contoh program Hello world dalam TeX biasa adalah:
```latex
Hello, World
\bye          % menandai akhir file; tidak ditampilkan dalam output akhir
```
Teks program ini mungkin berada dalam file *myfile.tex*, karena *.tex* adalah ekstensi file yang umum untuk file TeX biasa. Secara default, semua yang mengikuti tanda persen pada suatu baris adalah komentar, dan diabaikan oleh TeX. Menjalankan TeX pada file ini (misalnya, dengan mengetik  tex&nbsp;myfile.tex dalam antarmuka baris perintah, atau dengan memanggilnya dari antarmuka pengguna grafis) akan membuat file output yang disebut *myfile.dvi*, yang mewakili konten halaman dalam format independen perangkat (DVI, **''d**e**v**ice **i**ndependent format*). File DVI kemudian dapat dilihat di layar atau dikonversi ke format yang sesuai untuk salah satu dari berbagai printer yang driver perangkatnya ada (dukungan printer umumnya bukan fitur sistem operasi pada saat TeX dibuat). Knuth mengatakan bahwa tidak ada yang melekat pada TeX yang membutuhkan DVI sebagai format output, dan versi TeX yang lebih baru, terutama [[pdfTeX]], [[XeTeX]] dan [[LuaTeX]], semuanya mendukung output langsung ke [[PDF]].

=== Contoh matematika ===
(*Contoh-contoh di sini tidak benar-benar di-*render *dengan TeX; jarak spasi, ukuran karakter, dan yang lainnya mungkin berbeda*).

TeX menyediakan sintaks teks yang berbeda khusus untuk rumus matematika. Misalnya, [[rumus kuadrat]] (yang merupakan solusi dari [[persamaan kuadrat]]) ditulis:Rumus dicetak dengan cara seseorang akan menulisnya dengan tangan, atau dengan mengetik persamaan. Dalam dokumen, *mode matematika* dimulai dengan simbol $, kemudian memasukkan rumus dalam sintaks TeX, dan ditutup lagi dengan $. Knuth menjelaskan dengan bercanda bahwa dia memilih tanda dolar untuk menunjukkan awal dan akhir mode matematika di TeX biasa karena *typesetting* matematika secara tradisional seharusnya mahal. *Tampilan matematika* (matematika yang disajikan rata-tengah pada baris baru) dihasilkan dengan cara serupa tetapi menggunakan $$ bukan simbol $ tunggal. Sebagai contoh, di atas dengan rumus kuadratik dalam tampilan matematika:

== Aspek ==
Perangkat lunak TeX menggabungkan beberapa aspek yang tidak tersedia, atau kualitasnya lebih rendah, dalam program penyusunan huruf (*typesetting*) lainnya pada saat TeX dirilis. Beberapa inovasi didasarkan pada [[algoritma]] yang menarik, dan telah menghasilkan beberapa tesis untuk mahasiswa Knuth. Walaupun beberapa penemuan ini sekarang telah disertakan ke dalam program *typesetting* lainnya; yang lain, seperti aturan untuk spasi matematis, masih unik.

=== Spasi matematika ===

Karena tujuan utama dari bahasa TeX adalah penyusunan huruf berkualitas tinggi untuk penerbit buku, Knuth memberikan banyak perhatian pada aturan spasi untuk rumus matematika. Dia mengambil tiga sistem yang dia anggap sebagai standar keunggulan untuk tipografi matematika: buku-buku yang disusun oleh penerbit [[Addison-Wesley Publishing]] (penerbit *The Art of Computer Programming*) di bawah pengawasan [[Hans Wolf]]; edisi jurnal matematika *Acta Mathematica* yang berasal dari sekitar tahun 1910; dan salinan *Indagationes Mathematicae*, sebuah jurnal matematika [[Belanda]]. Knuth mencermati kertas-kertas cetak ini untuk memilah dan mencari seperangkat aturan untuk spasi. Sementara TeX menyediakan beberapa aturan dasar dan alat yang diperlukan untuk menentukan spasi yang tepat, parameter yang-tepat bergantung pada font yang digunakan untuk mengeset rumus. Misalnya, jarak spasi untuk font [[Computer Modern]] telah disetel dengan tepat selama bertahun-tahun dan sekarang sudah diatur; tetapi ketika font lain digunakan oleh Knuth untuk pertama kalinya (seperti [[AMS Euler]]), parameter jarak spasi baru harus ditentukan.

Penyusunan huruf matematika di TeX menuai beberapa kritik, terutama yang berkaitan dengan detail teknis metrik font, yang dirancang di era ketika perhatian yang signifikan diperlukan pada persyaratan penyimpanan data. Hal ini mengakibatkan beberapa "hack" di beberapa lokasi, yang pada gilirannya membutuhkan "hack" lainnya. Pada tingkat estetika, hasil *render* bentuk akar (*radical*) juga dikritik. Spesifikasi font matematika [[OpenType]] sebagian besar meminjam dari TeX, tetapi memiliki beberapa fitur/peningkatan baru.

== Lihat pula ==

* [[LaTeX]]
* [[MathTime]]
* [[PGF/TikZ]]
* [[PSTricks]]
* [[MakeIndex]]
* [[xdvi]] – Sebuah program untuk melihat berkas .dvi


== Catatan kaki ==


== Referensi ==


=== Sumber ===

* .
* .  The [http://www.ctan.org/tex-archive/systems/knuth/dist/tex/texbook.tex source code of the book in TeX] (and a needed set of macros [ftp://tug.ctan.org/pub/tex-archive/systems/knuth/dist/lib/manmac.tex]) is available online on [[CTAN]]. It is provided only as an example and its use to prepare a book like The TeXbook is not allowed.
* . The full source code of TeX; also [ftp://tug.ctan.org/pub/tex-archive/systems/knuth/dist/tex/tex.web available] on [[CTAN]]. Being written using [[literate programming]], it contains plenty of human-readable documentation.
* .
* . Reprinted as .
*  contains extensive documentation about the algorithms used in TeX.
* .
* .
* .
*  on AMS-TeX.
* .


== Pranala luar ==


* [http://www.tug.org/ TeX Users' Group]
* .
* Eijkhout, Victor. [http://www.eijkhout.net/tbt/ *TeX by Topic*] 
* [http://ftp.gwdg.de/pub/ctan/info/impatient/book.pdf *TeX for the Impatient'']
* Donald Knuth membahas pengembangan perangkat lunak untuk TEX di Xerox PARC 2/21/1980  https://archive.org/details/xerox-parc-tapes-v49