Typst, alternatif LaTeX yang lebih mudah dipelajari
(github.com/typst)- Typst adalah sistem typesetting berbasis markup yang menargetkan kekuatan setara LaTeX tetapi lebih mudah dipelajari dan digunakan; repositori ini mencakup compiler dan CLI yang diperlukan untuk mengompilasi dokumen secara lokal
- Menyediakan markup bawaan untuk pekerjaan pemformatan dasar, fungsi yang fleksibel, scripting terintegrasi, typesetting rumus, pengelolaan bibliografi, dan pesan kesalahan yang ramah
- Melalui kompilasi inkremental, Typst menargetkan waktu kompilasi yang cepat;
typst watchmemantau perubahan source dan mengompilasi ulang lebih cepat dibanding mengompilasi dari awal setiap kali - CLI dapat dipasang lewat binary rilis, package manager,
cargo, Nix, dan Docker; PDF dibuat dengantypst compile file.typ, dan path font kustom juga dapat ditentukan - Prinsip desainnya adalah memperoleh kesederhanaan lewat konsistensi, kekuatan lewat komposabilitas, dan performa lewat inkrementalitas, dengan target kecepatan yang memungkinkan pratinjau instan
Yang ditawarkan Typst
- Typst adalah sistem typesetting berbasis markup yang dirancang agar sekuat LaTeX tetapi lebih mudah dipelajari dan digunakan
- Fitur utamanya adalah sebagai berikut
- Markup bawaan untuk pekerjaan pemformatan yang sering digunakan
- Fungsi yang fleksibel untuk pekerjaan lainnya
- Sistem scripting yang terintegrasi erat
- Typesetting rumus, pengelolaan bibliografi, dan lainnya
- Waktu kompilasi cepat berbasis kompilasi inkremental
- Pesan kesalahan yang ramah saat terjadi masalah
- Repositori ini berisi compiler dan CLI Typst yang diperlukan untuk mengompilasi dokumen Typst secara lokal
- Jika menginginkan pengalaman menulis yang lebih baik, Anda dapat menggunakan editor online kolaboratif gratis
Sintaks dan model penulisan
- Typst mengatur properti elemen seperti ukuran halaman atau penomoran judul dengan set rule seperti
#set- Jika tinggi
pagediatur keauto, ukurannya akan menyesuaikan dengan konten - Jika membutuhkan kendali yang lebih lengkap, Anda dapat sepenuhnya mendefinisikan ulang tampilan elemen dengan show rules
- Jika tinggi
- Judul ditulis dengan sintaks
= Heading- Satu
=membuat judul tingkat teratas, sementara==membuat subjudul - Daftar lengkap markup ringan dapat dilihat di dokumentasi syntax
- Satu
- Rumus dibungkus dengan tanda dolar
- Jika menambahkan spasi ekstra di sekitar isi rumus, rumus dapat ditempatkan sebagai blok terpisah
- Identifier dengan beberapa huruf akan ditafsirkan sebagai definisi dan fungsi Typst jika tidak dibungkus tanda kutip
- Item seperti
floordansqrttidak memerlukan backslash phi.altmenerapkan modifieraltpadaphiuntuk memilih variasi simbol tertentu
- Scripting memasukkan kode ke dalam dokumen dengan menulis ekspresi setelah hash (
#)- Contohnya menghitung bilangan Fibonacci ke-n dengan 2 variabel dan fungsi rekursif
- Fungsi
tablemenerima sel per baris - Operator spread
..digunakan untuk meneruskan item array sebagai argumen terpisah
Instalasi dan penggunaan CLI
- Typst CLI dapat dipasang melalui beberapa jalur
- Source dan binary pra-bangun dari rilis terbaru dapat diunduh dari releases page
- Letakkan binary di direktori yang termasuk dalam
PATH, lalu perbarui dengantypst update - Versi package manager bisa tertinggal dari rilis terbaru
- Contoh instalasi dengan package manager adalah sebagai berikut
- Linux: Typst on Repology, Typst's Snap
- macOS:
brew install typst - Windows:
winget install --id Typst.Typst
- Jika memiliki toolchain Rust, Typst dapat dipasang dengan
cargo- Rilis terbaru:
cargo install --locked typst-cli - Versi pengembangan:
cargo install --git https://github.com/typst/typst --locked typst-cli
- Rilis terbaru:
- Nix dan Docker juga didukung
- Nix:
nix-shell -p typst - Typst flake:
nix run github:typst/typst-flake -- --version - Docker:
docker run ghcr.io/typst/typst:latest --help
- Nix:
- Perintah kompilasi dasar adalah sebagai berikut
typst compile file.typ: membuatfile.pdfdi direktori kerjatypst compile path/to/source.typ path/to/output.pdf: membuat PDF di path yang ditentukan
- Pemantauan perubahan dijalankan dengan
typst watch file.typ- Karena Typst menggunakan kompilasi inkremental, prosesnya lebih cepat daripada mengompilasi dari awal setiap kali
- Perintah terkait font juga tersedia
typst compile --font-path path/to/fonts file.typ: menentukan direktori pencarian font tambahantypst fonts --font-path path/to/fonts: menampilkan daftar font yang ditemukan di sistem dan direktori yang ditentukanTYPST_FONT_PATHS=path/to/fonts typst fonts: cara menggunakan variabel lingkungan dengan sintaks Linux
- Subperintah dan opsi lain dapat dilihat dengan
typst help, sementara bantuan untuk perintah tertentu dengantypst help watch
Lingkungan penyuntingan dan komunitas
- Jika membutuhkan pengalaman terintegrasi seperti IDE, autocomplete, dan pratinjau instan, Anda dapat menggunakan aplikasi web Typst gratis
- Language server buatan komunitas, Tinymist, telah terintegrasi ke berbagai ekstensi editor
- Ruang komunitas berpusat pada Forum dan Discord server
- Forum cocok untuk bertanya, membantu pengguna lain, dan membagikan hasil karya yang dibuat dengan Typst
- Discord lebih cocok untuk pertanyaan cepat, diskusi terkait kontribusi, dan obrolan
- Typst Universe adalah ruang tempat komunitas berbagi template dan paket
- Paket buatan sendiri dapat diajukan ke package repository
Kontribusi dan build
- Jika mengalami bug, Anda dapat membuka issue, dan jika ingin mengimplementasikan fitur baru atau perbaikan bug, ikuti contribution guide
- Untuk build sendiri, pasang Rust stabil terbaru lalu jalankan perintah berikut
git clone https://github.com/typst/typstcd typstcargo build --release
- Binary yang sudah dioptimalkan disimpan di
target/release/ - Membagikan paket ke komunitas juga merupakan salah satu cara berkontribusi
Pelafalan dan penulisan nama
- Pelafalan IPA Typst adalah
/taɪpst/ "Ty"dilafalkan sepertiTydalam Typesetting, dan"pst"sepertipstdalam Hipster- Saat menulis Typst, anggap sebagai nama diri dan gunakan huruf besar
T
Prinsip desain
- Typst dirancang berpusat pada tiga tujuan: Power, simplicity, performance
- Tujuannya adalah sistem yang menyamai kekuatan LaTeX, mudah dipelajari dan digunakan, serta cukup cepat untuk mewujudkan pratinjau instan
-
Kesederhanaan lewat konsistensi
- Jika Anda tahu cara melakukan satu hal di Typst, pengetahuan itu seharusnya dapat diterapkan ke pekerjaan lain
- Jika ada beberapa cara untuk melakukan hal yang sama, cara-cara tersebut harus berada pada tingkat abstraksi yang berbeda
= Introductiondan#heading[Introduction]adalah contoh yang diperbolehkan meskipun melakukan hal yang sama, karena yang pertama adalah gula sintaksis untuk yang kedua
-
Kekuatan lewat komposabilitas
- Alih-alih menaruh opsi konfigurasi pada segala hal, Typst memilih desain yang menggabungkan sejumlah kecil komponen dengan berbagai cara
- TeX juga merupakan sistem tingkat rendah yang dapat dikomposisikan, tetapi orang-orang justru menggunakan LaTeX
- Dalam LaTeX, banyak kasus akhirnya bergantung pada paket seperti
\usepackage{knob}
-
Performa lewat inkrementalitas
- Semua fitur bahasa Typst harus sesuai dengan kompilasi inkremental
comemomenangani banyak pekerjaan terkait kompilasi inkremental di latar belakang
Sponsor dan dukungan
- Dukungan utama untuk pekerjaan open source Typst mencakup hal-hal berikut
- Posit: pendanaan untuk compiler engineer penuh waktu
- NLnet: mendukung pekerjaan Typst melalui beberapa hibah dari dana NGI Zero Core
- Pekerjaan HTML export
- Pekerjaan PDF accessibility
- Science & Startups: mendanai pengembangan Typst dari Januari hingga Juni 2023 melalui Berlin Startup Scholarship
- Zerodha: sponsor satu kali
- Daftar tersebut hanya mencakup kontribusi untuk pekerjaan open source yang telah melebihi atau diperkirakan akan melebihi €10K
2 komentar
Apakah
LaTeXdibaca "lateks"? Seharusnya dibaca "leytek", kurasa.Pendapat di Hacker News
Typst cukup luar biasa, dan organisasi kami juga sangat puas dengannya
Karena setiap malam kami harus membuat lebih dari 1,5 juta PDF, kami menguji berbagai solusi seperti Puppeteer untuk konversi HTML→PDF, pdflatex, lualatex, dan lainnya; Typst beberapa orde magnitudo lebih cepat dan penggunaan sumber dayanya juga lebih ringan
Pengalaman developer saat membuat template PDF dengan LaTeX tidak bagus, tetapi template Typst cukup intuitif
Saya menulis lebih detail tentang stack pembuatan PDF berskala besar ini di blog: https://zerodha.tech/blog/1-5-million-pdfs-in-25-minutes
Saya sedang membuat produk pelaporan PDF massal berbasis Puppeteer, dan dengan job malam hari, caching, serta pemrosesan paralel, performanya cukup baik
https://www.cx-reports.com
Dulu, saat harus menangani masalah serupa, itu solusi yang bagus
Skalanya memang tidak sebesar itu, tetapi tetap cukup layak dipakai
Saya sudah banyak menulis tugas dengan Typst, dan penulisan akademik jadi lebih ringkas, lebih imersif, dan berani saya katakan, lebih menyenangkan
Berkat sifat fungsional sintaks Typst, saya tidak perlu mengalami perilaku berubah-ubah yang belakangan terlihat di Microsoft Word, dan kadang juga di Google Docs
Jika memakai IDE lokal seperti VSCode, hampir semua fitur yang diinginkan juga bisa didapat
Dibandingkan LaTeX, typesetting keseluruhan dokumen jauh lebih intuitif, tetapi saat menulis panjang penyelesaian persamaan yang membentang beberapa halaman, saya merasa LaTeX lebih mudah diketik
Sintaks LaTeX lebih mirip Markdown daripada bahasa pemrograman fungsional, jadi saat menata rumus dengan banyak fungsi, superskrip, dan subskrip, kita tidak perlu terlalu banyak berpikir di awal
Saat ini sepertinya saya tidak akan menulis makalah dengan Typst
Begitu keluar dari institusi, hampir pasti harus dikonversi, dan arXiv juga meminta source LaTeX
Saat ini tooling di sekitar LaTeX sudah cukup bagus, dan ada banyak IDE yang membantu
Secara pribadi, saya memakai Org-Mode di Emacs yang dikompilasi ke LaTeX
https://github.com/mitex-rs/mitex
Ada beberapa diskusi lama dan materi terkait: https://hn.algolia.com/?q=typst
1 tahun lalu, 146 komentar: https://news.ycombinator.com/item?id=35250210
8 bulan lalu, 34 komentar: https://news.ycombinator.com/item?id=38354422
2 tahun lalu, 53 komentar: https://news.ycombinator.com/item?id=34423590
2 tahun lalu, 30 komentar: https://news.ycombinator.com/item?id=32209794
Mengejutkan bahwa output HTML bukan fitur inti sejak awal dan saat ini masih dalam proses pengerjaan
Hubungan LaTeX yang canggung dengan web tampaknya merupakan bagian yang, jika memulai proyek pesaing baru, semestinya ingin dibereskan dengan benar sejak awal
[0] https://github.com/typst/typst/issues/721
Keduanya menghadapi masalah yang sama: web dan kertas bekerja dengan cara yang benar-benar berbeda, dan ada konsep-konsep yang tidak bisa saling diterjemahkan
Jadi perlu didefinisikan bagaimana hasil typesetting bisa berlabuh secara alami di lingkungan lain
Jika Typst sejak awal menargetkan HTML, pengembangannya akan jauh lebih mudah, tetapi jika begitu ia tidak akan lebih dari sekadar generator situs yang terlalu rumit
Fakta bahwa ia menargetkan PDF terlebih dahulu menurut saya menunjukkan niat untuk benar-benar bersaing dengan LaTeX
Jika memulai sistem markup baru tanpa rencana untuk membuat dokumen yang aksesibel, menurut saya itu keputusan yang sangat buruk
Saya tidak akan memakainya sampai Typst bisa membuat dokumen yang aksesibel
Saya tidak suka PDF
Saya menunggu LaTeX menghilang dan Typst menggantikannya
Pengalaman penggunaannya benar-benar berbeda, dan hasil kerjanya sangat mengesankan
Sampai sekarang saya membuat file TeX dengan template Jinja2, tetapi Typst bisa menerima JSON dari command line, mudah digunakan, dan cukup kuat sehingga tahap Python bisa dihilangkan sepenuhnya
Belum lagi waktu kompilasinya dalam hitungan milidetik
Awalnya, karena terbiasa dengan cara kerja di LaTeX, saya sempat membuat template Typst menggunakan template Go
Namun saya senang ketika tahu bahwa Typst bisa menggunakan JSON secara langsung dengan mudah di engine scripting-nya sendiri
Pada 1999, saat bekerja sebagai intern, saya ditugaskan menulis dokumen standar untuk kelompok kerja standar telepon VoIP TIA
Organisasi standardisasi itu punya templat Word yang dipakai semua orang, tetapi sebagai mahasiswa teknik saya sudah cukup lama memakai LaTeX dan menyukainya, jadi saya berpikir, “toh keluaran akhirnya PDF dan formatnya juga akan lebih bagus, jadi kenapa tidak pakai LaTeX?”
Hasil keluaran LaTeX memang lebih bagus, dan atasan saya menyukai hasilnya tanpa sama sekali tahu bahwa saya tidak memakai Word
Respons anggota kelompok kerja juga bagus, suasananya seperti “anak ini benar-benar berbakat”
Bagi startup, memberi kesan baik kepada perusahaan-perusahaan raksasa yang ikut dalam kelompok kerja itu sangat penting untuk masa depan perusahaan, bahkan mungkin kelangsungan hidupnya
Lalu suatu hari atasan saya berkata, “bisakah dokumen Word itu kita kirim ke seorang petinggi di perusahaan besar yang mungkin akan mengakuisisi kita? Katanya ingin memakainya sebagai templat dokumen baru,” dan saya merasakan perasaan tenggelam yang sama seperti saat, ketika berumur empat tahun, saya dan seorang teman kencing di lemari pakaian sebagai eksperimen lalu ketahuan ibu
Akhirnya saya mempekerjakan seorang teman untuk menulis ulang dengan susah payah di Word sepanjang akhir pekan, dan atasan saya mendapatkan dokumennya
Perusahaan itu diakuisisi 18 bulan kemudian seharga 100 juta dolar
Bagaimanapun, LaTeX tetap terlihat 1000 kali lebih bagus daripada Word
Ini terlihat seperti pesaing layanan seperti Overleaf atau CodiMD
Memang sintaksnya lain lagi, tetapi tampaknya didukung oleh pandoc
Belakangan karena saya memprogram dengan R, saya makin sering memakai Quarto, dan khususnya ia menghasilkan keluaran yang cukup bagus seperti HTML
Namun alat-alat seperti ini juga belum menyelesaikan dua masalah penting untuk penggunaan akademik: menyediakan perbandingan perubahan yang baik bagi reviewer, serta membuatnya mudah dibagikan dan dikomentari bersama kolaborator nonteknis
Jadi setidaknya untuk penulisan ilmiah di bidang saya, sepertinya Word akan sulit digantikan selama bertahun-tahun ke depan
[1] https://github.com/overleaf/overleaf
[2] https://github.com/hackmdio/codimd
[3] https://pandoc.org/typst-property-output.html
[4] https://quarto.org/
Saat memakai GT, keluaran PDF Typst terasa sedikit lebih kasar daripada PDF LaTeX
Semoga diperbaiki
Dibandingkan LaTeX, hal yang paling mengganjal dari Typst adalah ia belum menangani fitur tipografi canggih dasar dengan baik
Misalnya dalam mode matematika, bagian yang menangani jenis spasi (mathop, mathbin, mathrel, dll.) atau ukuran delimiter (big, bigg, dll.) masih kurang
Spasi simbol/operator dalam mode matematika bisa diubah lewat https://typst.app/docs/reference/math/class/, dan ukuran delimiter bisa diubah atau ditangani otomatis lewat https://typst.app/docs/reference/math/lr#functions-lr
Namun sepertinya LaTeX juga sama
Terlihat sangat bagus dan saya berniat mencobanya
Namun saya terus terpikir seperti ini
Probabilitas yang saya perkirakan bahwa 15 tahun lagi LaTeX masih gratis dan terpelihara: 99.9999%
Probabilitas yang saya perkirakan bahwa 15 tahun lagi alat baru lain masih gratis dan terpelihara: 5%
bash dan beberapa hal lain juga begitu
Meski ada banyak alternatif yang lebih baik, titik sakitnya tidak cukup besar sehingga tidak tergantikan
Saya suka Typst
Terutama bagus saat menangani input yang dibuat secara terprogram, dan flag
--inputbisa menerima JSONDi dalam file, JSON bisa diambil dengan mudah lewat fungsi khusus
json.decode()Sangat mudah membuat hasil yang stabil, jadi di proyek saya pun saya beralih dari LaTeX ke Typst
[0] https://typst.app/docs/reference/foundations/sys/
[1] https://resgen.app