TeX, juga ditulis sebagai TeX, sistem typesetting (penyusunan huruf) yang dirancang dan ditulis oleh Donald Knuth,[1] 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.[2]

TeX
The TeX logo
Tipetypesetting software‎ (en), Bahasa markah, format berkas, perangkat lunak sumber terbuka dan bahasa pemrograman
Versi pertama1978; 46 tahun lalu (1978)
Versi stabil
3.141592653 (Januari 2021)
GenreTypesetting
LisensiPermissive free software
Eponimtechne (en)
Karakteristik teknis
Sistem operasiLintas platform
Bahasa pemrogramanWeb (sistem pemrograman), Pascal dan Stanford Artificial Intelligence Language (en)
Format kode
Informasi pengembang
PembuatDonald Knuth
PengembangDonald Knuth
ProgrammerDonald Knuth
Sumber kode
Informasi tambahan
Situs webtug.org
Sunting di Wikidata Sunting di Wikidata • Sunting kotak info • L • B
Info templat
Bantuan penggunaan templat ini
TeX
Ekstensi berkas.tex
Jenis MIMEapplication/x-tex
Rilis pertama1978; 46 tahun lalu (1978)
Jenis formatFormat berkas dokumen

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,[a] 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 typeface Computer Modern).[3] TeX adalah perangkat lunak gratis, yang membuatnya dapat diakses oleh berbagai pengguna.

Sejarah sunting

Ketika volume pertama dari buku The Art of Computer Programming karya Knuth diterbitkan pada tahun 1968,[4] 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.[5] 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.[6]

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 sunting

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 sunting

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 fixed-point, bukan floating-point, untuk memastikan hasil yang sama di berbagai perangkat keras komputer yang berbeda,[7] dan menyertakan bahasa pemrograman Turing-lengkap yang nyata, setelah lobi intens oleh Guy Steele.[8] Pada tahun 1989, Donald Knuth merilis versi baru TeX dan Metafont.[9] 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.[10] 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.[11] 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.[12] Demikian juga, versi Metafont setelah 2.0 secara asimtotik mendekati e (saat ini di 2.7182818), dan perubahan serupa akan diterapkan setelah kematian Knuth.[11]

Domain publik sunting

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.[13] 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 sunting

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.[14] Sementara banyak publikasi di bidang lain, termasuk kamus dan publikasi hukum, telah diproduksi menggunakan TeX, namun 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),[15] kebanyakan orang telah memperluas TeX hanya dengan menggunakan makro dan TeX tetap menjadi sistem yang terkait dengan penyusunan huruf teknis.[16][17]

Sistem penyusunan huruf sunting

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.[18] 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.[19] Sistem TeX dasar memahami sekitar 300 perintah, yang disebut primitif.[20] 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.[21] 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.[22] Format lain termasuk ConTeXt, yang digunakan terutama untuk penerbitan desktop dan sebagian besar ditulis oleh Hans Hagen di Pragma.

Cara kerja sunting

 
Contoh halaman yang dihasilkan dengan TeX dengan makro LaTeX.

Contoh program Hello world dalam TeX biasa adalah:

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 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, device independent 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 sunting

(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:

Markah Hasil akhir
Rumus kuadrat adalah $-b \pm \sqrt{b^2 - 4ac} \over 2a$
\bye

 

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.[23] 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:

Markah Hasil akhir
The quadratic formula is $$-b \pm \sqrt{b^2 - 4ac} \over 2a$$
\bye
 
 

Aspek sunting

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 sunting

 
Pengetikan teks matematika menggunakan TeX dan font AMS Euler.

Karena tujuan utama dari bahasa TeX adalah penyusunan huruf berkualitas tinggi untuk penerbit buku, Knuth memberikan banyak perhatian pada aturan spasi untuk rumus matematika.[24][25] 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.[26] 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.[27]

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.[28] Spesifikasi font matematika OpenType sebagian besar meminjam dari TeX, tetapi memiliki beberapa fitur/peningkatan baru.[29][30][31]

Lihat pula sunting

Catatan kaki sunting

  1. ^ Meskipun troff masih tetap digunakan sebagai formatter default dari dokumentasi UNIX.

Referensi sunting

  1. ^ "Per Bothner (attendee at TeX Project meetings) discusses authorship". Knuth definitely wrote most of the code himself, at least for the Metafont re-write, for which I have pe[r]sonal knowledge. However, some of his students (such as Michael Plass and John Hobby) did work on the algorithms used in TeX and Metafont. 
  2. ^ Yannis Haralambous. Fonts & Encodings (Translated by P. Scott Horne). Beijing; Sebastopol, Calif: O’Reilly Media, 2007, pp. 235.
  3. ^ Gaudeul, Alexia (27 March 2006). "Do Open Source Developers Respond to Competition?: The (La)TeX Case Study". SSRN 908946 . 
  4. ^ Knuth, Donald E. "Less brief biography". Don Knuth's Home Page. Diakses tanggal 9 January 2017. 
  5. ^ Knuth, Donald E. "Commemorative lecture of the Kyoto Prize, 1996" (PDF). Kyoto Prize. Diarsipkan dari versi asli (PDF) tanggal 27 January 2018. Diakses tanggal 18 August 2018. 
  6. ^ Knuth, Donald Ervin, TEXDR.AFT, diarsipkan dari versi asli tanggal 2015-01-12 
  7. ^ Knuth & Plass 1981, hlm. 144.
  8. ^ Knuth, Donald E. Knuth meets NTG members, NTG: MAPS. 16 (1996), 38–49. Reprinted as Questions and Answers, III, chapter 33 of Digital Typography, p. 648.
  9. ^ Knuth, Donald E. The New Versions of TeX and METAFONT, TUGboat 10 (1989), 325–328; 11 (1990), 12. Reprinted as chapter 29 of Digital Typography.
  10. ^ "TeX 21 release". Diakses tanggal 2022-01-05. 
  11. ^ a b "What is the future of TeX?". The TeX FAQ. 2018-05-27. Diarsipkan dari versi asli tanggal 28 April 2019. Diakses tanggal 2019-07-21. 
  12. ^ Knuth, Donald E. The future of TeX and METAFONT, NTG journal MAPS (1990), 489. Reprinted as chapter 30 of Digital Typography, p. 571.
  13. ^ "TeX Engine development". The TeX FAQ. 2018-05-24. Diarsipkan dari versi asli tanggal 28 April 2019. Diakses tanggal 2019-07-21. 
  14. ^ Beebe 2004, hlm. 10.
  15. ^ Knuth, Donald E; MacKay, Pierre (1987), "Mixing Right-to-Left Texts with Left-to-Right Texts" (PDF), TUGboat, 8: 14–25 . Reprinted as Bigelow, Charles; Day, Donald (1983). "Chapter 4". Digital Typography. Scientific American. 249. hlm. 106. Bibcode:1983SciAm.249b.106B. doi:10.1038/scientificamerican0883-106. 
  16. ^ Knuth, Donald E (1996), "Questions and Answers II", TUGboat, 17: 355–367 . Reprinted as Bigelow, Charles; Day, Donald (1983). "Chapter 32". Digital Typography. Scientific American. 249. hlm. 616–617. Bibcode:1983SciAm.249b.106B. doi:10.1038/scientificamerican0883-106. 
  17. ^ Knuth, Donald E (1996), "Questions and Answers I", TUGboat, 17: 7–22 . Reprinted as Bigelow, Charles; Day, Donald (1983). "Chapter 31". Digital Typography. Scientific American. 249. hlm. 598. Bibcode:1983SciAm.249b.106B. doi:10.1038/scientificamerican0883-106. 
  18. ^ Jeffrey, Alan (1990), "Lists in TeX's Mouth" (PDF), TUGboat, 11 (2): 237–45 
  19. ^ "CTAN: Package pdftex". ctan.org. Diakses tanggal 2019-07-21. 
  20. ^ Knuth 1984, hlm. 9.
  21. ^ Plain TeX (source code), CTAN 
  22. ^ "What are the AMS packages (amsmath, etc.)?". The TeX FAQ. 2018-05-27. Diarsipkan dari versi asli tanggal 28 April 2019. Diakses tanggal 2019-07-21. 
  23. ^ Knuth 1984, hlm. 127, Ch. 16: Typing Math Formulas.
  24. ^ Slater, Robert (1989), Portraits in Silicon, MIT Press, hlm. 349, ISBN 9780262691314 
  25. ^ Syropoulos, Apostolos; Tsolomitis, Antonis; Sofroniou, Nick (2003), Digital Typography Using LaTeX, Springer, hlm. 93, ISBN 9780387952178 
  26. ^ Knuth, Donald E (1996), "Questions and Answers II", TUGboat, 17: 355–367 . Reprinted as Bigelow, Charles; Day, Donald (1983). "Chapter 32". Digital Typography. Scientific American. 249. hlm. 620–624. Bibcode:1983SciAm.249b.106B. doi:10.1038/scientificamerican0883-106. 
  27. ^ Knuth, Donald E. Typesetting Concrete Mathematics, TUGboat 10 (1989), pp. 31–36, 342. Reprinted as chapter 18 of Digital Typography, pp. 367–378.
  28. ^ Ulrik Vieth (2001) Math typesetting in TEX: The good, the bad, the ugly
  29. ^ "High-Quality Editing and Display of Mathematical Text in Office 2007". 
  30. ^ "Map" (PDF). ntg.nl. 
  31. ^ "LineServices". 

Sumber sunting

Pranala luar sunting