3 poin oleh GN⁺ 2024-07-21 | 2 komentar | Bagikan ke WhatsApp
  • 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 watch memantau 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 dengan typst 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 page diatur ke auto, ukurannya akan menyesuaikan dengan konten
    • Jika membutuhkan kendali yang lebih lengkap, Anda dapat sepenuhnya mendefinisikan ulang tampilan elemen dengan show rules
  • Judul ditulis dengan sintaks = Heading
    • Satu = membuat judul tingkat teratas, sementara == membuat subjudul
    • Daftar lengkap markup ringan dapat dilihat di dokumentasi syntax
  • 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 floor dan sqrt tidak memerlukan backslash
    • phi.alt menerapkan modifier alt pada phi untuk 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 table menerima 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 dengan typst update
    • Versi package manager bisa tertinggal dari rilis terbaru
  • Contoh instalasi dengan package manager adalah sebagai berikut
  • Jika memiliki toolchain Rust, Typst dapat dipasang dengan cargo
  • 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
  • Perintah kompilasi dasar adalah sebagai berikut
    • typst compile file.typ: membuat file.pdf di direktori kerja
    • typst 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 tambahan
    • typst fonts --font-path path/to/fonts: menampilkan daftar font yang ditemukan di sistem dan direktori yang ditentukan
    • TYPST_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 dengan typst 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
  • 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 seperti Ty dalam Typesetting, dan "pst" seperti pst dalam 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
    • = Introduction dan #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
    • comemo menangani banyak pekerjaan terkait kompilasi inkremental di latar belakang

Sponsor dan dukungan

  • Dukungan utama untuk pekerjaan open source Typst mencakup hal-hal berikut
  • Daftar tersebut hanya mencakup kontribusi untuk pekerjaan open source yang telah melebihi atau diperkirakan akan melebihi €10K

2 komentar

 
sebul 2025-02-28

Apakah LaTeX dibaca "lateks"? Seharusnya dibaca "leytek", kurasa.

 
GN⁺ 2024-07-21
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 belum pernah mendengar kasus pembuatan dokumen PDF dengan kecepatan seperti itu
      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
    • Saya penasaran apakah Anda juga pernah mencoba ReportLab
      Dulu, saat harus menangani masalah serupa, itu solusi yang bagus
      Skalanya memang tidak sebesar itu, tetapi tetap cukup layak dipakai
    • Saya penasaran apakah organisasi Anda mengembalikan kontribusi ke proyeknya, atau setidaknya mendukungnya secara finansial
    • Saya penasaran apa use case untuk membuat PDF sebanyak itu
  • 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

    • Sebagai seseorang yang pernah menulis akademik, saya berharap jurnal-jurnal mendukung Typst, atau ada plugin maupun bridge menuju LaTeX/Word yang sudah mapan
      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
    • Sebagai referensi, Typst sudah memiliki dukungan parsial untuk LaTeX melalui paket mitex
      https://github.com/mitex-rs/mitex
    • Untuk orang yang hampir tidak membutuhkan rumus, saya penasaran apa keunggulannya dibanding memakai Markdown
  • 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

    • Typst adalah alat yang ingin bersaing dengan LaTeX
      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
    • Output HTML LaTeX belakangan sudah cukup bagus, tetapi itu hasil upaya heroik banyak orang pada sistem yang awalnya tidak pernah berniat mendukungnya
      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
    • Ini salah satu masalah besarnya
      Saya tidak suka PDF
    • Saya dengar pandoc bekerja cukup baik untuk keperluan ini
    • Saya yakin Anda tahu bahwa TeX muncul beberapa tahun lebih awal daripada web
  • 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

    • Scripting-nya sangat bagus
      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/

    • Saya banyak memakai Quarto
      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

  • 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%

    • Ini kutukan sistem yang muncul lebih awal dan sudah cukup bagus
      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 --input bisa menerima JSON
    Di 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