3 puan yazan GN⁺ 2024-07-21 | 2 yorum | WhatsApp'ta paylaş
  • Typst, LaTeX düzeyinde güçlü olmayı hedeflerken öğrenmesi ve kullanması daha kolay olan işaretleme tabanlı bir dizgi sistemidir; bu depo, yerelde belge derlemek için gereken derleyici ve CLI’yi içerir
  • Temel biçimlendirme işleri için yerleşik işaretleme, esnek fonksiyonlar, entegre betik yazımı, matematik dizgisi, kaynakça yönetimi ve anlaşılır hata mesajları sunar
  • Artımlı derleme ile hızlı derleme sürelerini hedefler; typst watch, kaynak değişikliklerini izleyerek her seferinde baştan derlemekten daha hızlı yeniden derler
  • CLI; sürüm ikilileri, paket yöneticileri, cargo, Nix ve Docker ile kurulabilir ve typst compile file.typ komutuyla PDF üretir; ayrıca özel font yolları da belirtilebilir
  • Tasarım ilkeleri, tutarlılıkla sadelik, birleşebilirlikle güç ve artımlılıkla performans elde etmektir; hedef, anında önizleme sağlayabilecek kadar hızlı olmaktır

Typst ne sunuyor?

  • Typst, LaTeX kadar güçlü olurken öğrenmesi ve kullanması daha kolay olacak şekilde tasarlanmış işaretleme tabanlı bir dizgi sistemidir
  • Başlıca özellikleri şunlardır
    • Sık kullanılan biçimlendirme işleri için yerleşik işaretleme
    • Diğer işler için esnek fonksiyonlar
    • Sıkı biçimde entegre bir betik sistemi
    • Matematik dizgisi, kaynakça yönetimi vb.
    • Artımlı derlemeye dayalı hızlı derleme süreleri
    • Sorun çıktığında anlaşılır hata mesajları
  • Bu depo, Typst belgelerini yerelde derlemek için gereken Typst derleyicisi ve CLI’yi içerir
  • Daha iyi bir yazım deneyimi istiyorsanız ücretsiz işbirlikçi çevrimiçi düzenleyiciyi kullanabilirsiniz

Söz dizimi ve yazım modeli

  • Typst, sayfa boyutu veya başlık numaralandırması gibi öğe özelliklerini #set gibi set rule ile ayarlar
    • page yüksekliği auto olarak bırakılırsa içerikle uyumlu olacak şekilde boyutlanır
    • Daha kapsamlı denetim gerekiyorsa show rules ile öğenin görünümü tamamen yeniden tanımlanabilir
  • Başlıklar = Heading söz dizimiyle yazılır
    • Tek = en üst düzey başlığı, == ise alt başlığı oluşturur
    • Hafif işaretleme söz diziminin tamamı syntax belgesinde görülebilir
  • Matematik ifadeleri dolar işaretleriyle çevrelenir
    • İfade çevresine ek boşluk koyarsanız ayrı bir blok olarak yerleştirilebilir
    • Birden çok harfli tanımlayıcılar tırnak içine alınmazsa Typst tanımları ve fonksiyonları olarak yorumlanır
    • floor, sqrt gibi öğeler için ters eğik çizgi gerekmez
    • phi.alt, phi üzerine alt değiştiricisini uygulayarak belirli bir sembol varyantını seçer
  • Betik yazımı için belge içine hash (#) sonrasında ifade yazarak kod eklenir
    • Örnek, iki değişken ve özyinelemeli bir fonksiyonla n’inci Fibonacci sayısını hesaplar
    • table fonksiyonu hücreleri satır bazında alır
    • Dizi öğelerini ayrı bağımsız değişkenler olarak geçirmek için yayma işleci .. kullanılır

Kurulum ve CLI kullanımı

  • Typst CLI çeşitli yollarla kurulabilir
    • En güncel sürümün kaynak kodu ve önceden derlenmiş ikilileri releases page üzerinden alınabilir
    • İkili dosyayı PATH içindeki bir dizine koyabilir, ardından typst update ile güncelleyebilirsiniz
    • Paket yöneticisi sürümleri en son sürümün gerisinde kalabilir
  • Paket yöneticisiyle kurulum örnekleri şunlardır
  • Rust araç zinciriniz varsa cargo ile kurabilirsiniz
  • Nix ve Docker da desteklenir
    • Nix: nix-shell -p typst
    • Typst flake: nix run github:typst/typst-flake -- --version
    • Docker: docker run ghcr.io/typst/typst:latest --help
  • Temel derleme komutları şunlardır
    • typst compile file.typ: çalışma dizininde file.pdf oluşturur
    • typst compile path/to/source.typ path/to/output.pdf: belirtilen yolda PDF oluşturur
  • Değişiklik izleme typst watch file.typ ile çalıştırılır
    • Typst artımlı derleme kullandığı için her seferinde baştan derlemekten daha hızlıdır
  • Font ile ilgili komutlar da sunulur
    • typst compile --font-path path/to/fonts file.typ: ek font arama dizinini belirtir
    • typst fonts --font-path path/to/fonts: sistemde ve belirtilen dizinde bulunan fontların listesini gösterir
    • TYPST_FONT_PATHS=path/to/fonts typst fonts: Linux söz dizimiyle ortam değişkeni kullanımı
  • Diğer alt komutlar ve seçenekler için typst help, belirli bir komutun yardımı için typst help watch kullanılabilir

Düzenleme ortamı ve topluluk

  • IDE benzeri bütünleşik deneyim, otomatik tamamlama ve anında önizleme istiyorsanız ücretsiz Typst web uygulamasını kullanabilirsiniz
  • Topluluğun geliştirdiği dil sunucusu Tinymist, çeşitli editör eklentilerine entegre edilmiştir
  • Topluluk alanlarının merkezi Forum ve Discord server’dır
    • Forum; soru sormak, diğer kullanıcılara yardımcı olmak ve Typst ile üretilen işleri paylaşmak için uygundur
    • Discord, hızlı sorular, katkı tartışmaları ve sohbet için daha uygundur
  • Typst Universe, topluluğun şablonlar ve paketler paylaştığı alandır
  • Kendi yaptığınız paketleri package repository içine gönderebilirsiniz

Katkı ve derleme

  • Bir hatayla karşılaşırsanız issue açabilirsiniz; yeni özellik veya hata düzeltmesi geliştirmek istiyorsanız contribution guide’u takip edebilirsiniz
  • Kendiniz derlemek için en güncel kararlı Rust sürümünü kurduktan sonra şu komutları çalıştırın
  • Optimize edilmiş ikili dosyalar target/release/ içine kaydedilir
  • Toplulukla paket paylaşmak da katkı vermenin bir yoludur

İsmin telaffuzu ve yazımı

  • Typst’in IPA telaffuzu /taɪpst/ şeklindedir
  • "Ty", Typesetting içindeki Ty gibi; "pst" ise Hipster içindeki pst gibi telaffuz edilir
  • Typst yazarken özel ad olarak değerlendirilir ve büyük T kullanılır

Tasarım ilkeleri

  • Typst, Power, simplicity, performance olmak üzere üç hedef etrafında tasarlanmıştır
  • Amaç; LaTeX’in gücüne denk, öğrenmesi ve kullanması kolay, anında önizlemeyi mümkün kılacak kadar hızlı bir sistem oluşturmaktır
  • Tutarlılıkla sadelik

    • Typst’te bir şeyi nasıl yapacağınızı öğrendiğinizde, bu bilgiyi başka işlere de aktarabilmeniz gerekir
    • Aynı şeyi yapmanın birden fazla yolu varsa bunlar farklı soyutlama düzeylerinde olmalıdır
    • = Introduction ile #heading[Introduction], ilkinin ikincisinin söz dizimsel şekeri olması nedeniyle aynı işi yapmalarına rağmen izin verilen bir örnektir
  • Birleşebilirlikle güç

    • Her şeye ayar eklemek yerine, az sayıdaki bileşeni farklı şekillerde birleştiren bir tasarım tercih edilir
    • TeX de birleşebilir düşük seviyeli bir sistemdir, ancak insanlar bunun yerine LaTeX kullanır
    • LaTeX’te çoğu durumda \\usepackage{knob} gibi paketlere bağımlı kalındığı düşünülür
  • Artımlılıkla performans

    • Typst dilinin tüm özellikleri artımlı derlemeye uygun olmalıdır
    • comemo, arka planda artımlı derlemeyle ilgili işlerin büyük bölümünü yürütür

Sponsorluk ve destek

  • Typst açık kaynak çalışmaları için başlıca destekler olarak şunlar listelenir
  • Bu liste yalnızca açık kaynak çalışmalara €10K’yi aşan ya da aşması beklenen katkıları içerir

2 yorum

 
sebul 2025-02-28

LeTeX, LaTeX diye mi okunuyor? Ben Laytek diye okunur sanırdım.

 
GN⁺ 2024-07-21
Hacker News görüşleri
  • Typst oldukça iyiydi ve bizim organizasyonda da çok memnunuz
    Her gece 1,5 milyondan fazla PDF üretmemiz gerektiği için HTML→PDF dönüşümü için Puppeteer, pdflatex, lualatex gibi çeşitli çözümleri denedik; Typst birkaç mertebe daha hızlıydı ve kaynak kullanımı da daha hafifti
    LaTeX ile PDF şablonları oluşturmanın geliştirici deneyimi iyi değildi, ancak Typst şablonları epey sezgiseldi
    Bu büyük ölçekli PDF üretim yığını hakkında blogda daha ayrıntılı yazdım: https://zerodha.tech/blog/1-5-million-pdfs-in-25-minutes

    • PDF belgelerini bu hızda üretme örneğini hiç duymamıştım
      Puppeteer tabanlı bir toplu PDF raporlama ürünü geliştiriyorum; gece işleri, önbellekleme ve paralel işleme kullanınca performans fena değil
      https://www.cx-reports.com
    • ReportLab’i de denediniz mi merak ediyorum
      Uzun zaman önce benzer bir problemle uğraşmam gerektiğinde iyi bir çözümdü
      Ölçek bu kadar değildi ama yine de işe yarıyordu
    • Organizasyonun projeye bir şekilde katkı verip vermediğini, ya da en azından finansal olarak destek olup olmadığını merak ediyorum
    • Bu kadar çok PDF üretmenin kullanım senaryosunun ne olduğunu merak ediyorum
  • Typst ile çok sayıda ödev yazdım; akademik yazım daha kısa, daha sürükleyici ve hatta söylemeye cüret edersem daha eğlenceli hale geliyor
    Typst sözdiziminin fonksiyonel niteliği sayesinde bugünlerde Microsoft Word’de, bazen Google Docs’ta da görülen kaprisli davranışlarla uğraşmak zorunda kalmıyorsunuz
    VSCode gibi yerel bir IDE kullanınca istediğiniz özelliklerin de neredeyse tamamına sahip olabiliyorsunuz
    LaTeX ile karşılaştırınca tüm belge dizgisi çok daha sezgisel, ancak birden fazla sayfaya yayılan uzun denklem çözümleri yazarken LaTeX’in daha kolay yazıldığını hissediyorum
    LaTeX sözdizimi fonksiyonel bir programlama dilinden çok Markdown’a benzediği için, fonksiyon, üst simge ve alt simge içeren çok sayıda formülü dizerken önceden daha az düşünmek gerekiyor

    • Akademik yazı yazmış biri olarak dergilerin Typst’i desteklemesini, ya da LaTeX/Word’e uzanan eklenti veya köprülerin yerleşmesini isterdim
      Şu an bir makaleyi Typst ile yazacağımı sanmıyorum
      Kurum dışına çıktığınızda neredeyse mutlaka dönüştürmeniz gerekiyor ve arXiv de LaTeX kaynaklarını istiyor
      Günümüzde LaTeX çevresindeki araçlar oldukça iyi ve yardımcı olan çok sayıda IDE var
      Kişisel olarak LaTeX’e derlenen Emacs Org-Mode kullanıyorum
    • Bu arada Typst’te mitex paketi aracılığıyla hâlihazırda kısmi LaTeX desteği var
      https://github.com/mitex-rs/mitex
    • Neredeyse hiç formüle ihtiyaç duymayan biri için Markdown kullanmaya kıyasla ne avantajı olduğunu merak ediyorum
  • Geçmiş tartışmalar ve ilgili kaynaklar var: https://hn.algolia.com/?q=typst
    1 yıl önce, 146 yorum: https://news.ycombinator.com/item?id=35250210
    8 ay önce, 34 yorum: https://news.ycombinator.com/item?id=38354422
    2 yıl önce, 53 yorum: https://news.ycombinator.com/item?id=34423590
    2 yıl önce, 30 yorum: https://news.ycombinator.com/item?id=32209794

  • HTML çıktısının baştan itibaren temel bir özellik olmayıp şu anda geliştirilmekte olması şaşırtıcı
    LaTeX’in web ile sorunlu bir ilişkisi olması, sıfırdan başlayan rakip bir projenin başlardan itibaren doğru çözmeye çalışacağı bir konu gibi görünüyor
    [0] https://github.com/typst/typst/issues/721

    • Typst, LaTeX ile rekabet etmeyi amaçlayan bir araç
      İkisi de aynı sorunla karşılaşıyor: web ve kâğıt tamamen farklı çalışıyor ve birbirine çevrilemeyen kavramlar var
      Bu yüzden dizgi sonucunun başka ortamlara doğal biçimde nasıl yerleşeceğini tanımlamak gerekiyor
      Typst en baştan HTML’i hedefleseydi geliştirmesi çok daha kolay olurdu; ama o zaman da aşırı karmaşık bir site üreticisinden fazlası olmazdı
      Önce PDF’i hedeflemesi, bence gerçekten LaTeX ile rekabet etme niyetini gösteriyor
    • LaTeX’in HTML çıktısı bugünlerde oldukça iyi hale geldi, ancak bu, başta desteklemeyi düşünmeyen bir sisteme birçok kişinin kahramanca emek vermesinin sonucu
      Yeni bir işaretleme sistemi başlatırken erişilebilir belgeler üretme planı yoksa bunu çok kötü bir karar olarak görürüm
      Typst erişilebilir belgeler üretebilir hale gelene kadar kullanmayacağım
    • Bu büyük sorunlardan biri
      PDF’leri sevmiyorum
    • Bu amaç için pandoc’un oldukça iyi çalıştığını duydum
    • TeX’in web’den yıllar önce çıktığını biliyorsunuzdur diye düşünüyorum
  • LaTeX’in ortadan kalkıp Typst’in onun yerini almasını bekliyorum
    Kullanım deneyimi tamamen farklı ve ortaya çıkan sonuç çok etkileyici
    Şimdiye kadar Jinja2 şablonlarıyla TeX dosyaları üretiyordum; ama Typst komut satırından JSON alabiliyor, kullanımı kolay ve yeterince güçlü olduğu için Python adımını tamamen ortadan kaldırabiliyor
    Derleme süresinin milisaniye düzeyinde olmasından bahsetmiyorum bile

    • Betikleme çok iyi
      Başta LaTeX’teki yönteme alışık olduğum için Go şablonlarıyla Typst şablonu üretmeyi denedim
      Ama Typst’in kendi betikleme motorunda JSON’u doğrudan kolayca kullanabildiğini görmek hoşuma gitti
  • 1999'da stajyer olarak çalışırken, TIA'nın VoIP telefon standardı çalışma grubu için standart dokümanları yazma işi bana verilmişti.
    Standardizasyon kuruluşunda herkesin kullandığı bir Word şablonu vardı ama mühendislik öğrencisi olarak bir süredir LaTeX kullanıyor ve seviyordum; bu yüzden “son çıktı nasılsa PDF olacak, biçimlendirme de daha iyi olur; neden LaTeX kullanmıyoruz?” diye düşündüm.
    Gerçekten de LaTeX çıktısı daha iyiydi; müdürüm benim Word kullanmadığımı hiç fark etmeden sonucu beğendi.
    Çalışma grubu üyelerinin tepkisi de iyiydi; “bu çocuk gerçekten yetenekli” havası vardı.
    Bir startup açısından, çalışma grubuna katılan dev şirketler üzerinde iyi bir izlenim bırakmak şirketin geleceği, hatta belki de hayatta kalması için çok önemliydi.
    Derken bir gün müdürüm, “O Word dokümanını, bizi satın alabilecek büyük şirketin üst düzey yöneticilerinden birine gönderebilir misin? Yeni doküman şablonu olarak kullanmak istiyormuş” dedi; dört yaşındayken bir arkadaşımla deneme olsun diye dolaba işeyip anneme yakalandığım zamanki gibi içime çöken bir his geldi.
    Sonunda bir arkadaşımı tutup tüm hafta sonu boyunca Word'de zorlukla yeniden hazırlattım ve müdürüm dokümanı aldı.
    Şirket 18 ay sonra 100 milyon dolara satın alındı.
    Her hâlükârda LaTeX hâlâ Word'den 1000 kat daha iyi görünüyor.

  • Bu, Overleaf ya da CodiMD gibi servislerin rakibi gibi görünüyor.
    Yine de başka bir sözdizimi ama pandoc destekliyor gibi.
    Son zamanlarda R ile programlama yaptığım için Quarto'yu giderek daha çok kullanıyorum; özellikle HTML gibi oldukça iyi çıktılar üretiyor.
    Ancak bu araçlar da akademik kullanımda önemli olan iki sorunu çözmüyor: hakemlere iyi bir diff/karşılaştırma sunmak ve teknik olmayan iş ortaklarıyla kolayca paylaşım yapıp yorum ekleyebilmeyi sağlamak.
    Bu yüzden, en azından benim alanımdaki bilimsel yazımda Word'ün daha uzun yıllar boyunca kolay kolay değiştirilemeyeceğini düşünüyorum.
    [1] https://github.com/overleaf/overleaf
    [2] https://github.com/hackmdio/codimd
    [3] https://pandoc.org/typst-property-output.html
    [4] https://quarto.org/

    • Quarto'yu çok kullanıyorum.
      GT kullanırken Typst PDF çıktısı, LaTeX PDF'inden biraz daha pürüzlü hissettirdi.
      Düzeltilmesini umuyorum.
  • LaTeX ile karşılaştırıldığında Typst'te beni en çok rahatsız eden şey, temel gelişmiş tipografi özelliklerini iyi ele alamaması.
    Örneğin matematik modunda aralık türlerini (mathop, mathbin, mathrel vb.) ya da ayraç boyutlarını (big, bigg vb.) işleme tarafı eksik.

  • Gerçekten iyi görünüyor ve bir denemeyi düşünüyorum.
    Yine de aklımdan şu geçip duruyor:
    LaTeX'in 15 yıl sonra da ücretsiz ve bakımlı olacağına dair tahmini olasılık: %99.9999
    Başka yeni bir aracın 15 yıl sonra da ücretsiz ve bakımlı olacağına dair tahmini olasılık: %5

    • Erken çıkmış ve yeterince iyi sistemlerin laneti bu.
      bash ve birkaç başka şey için de aynısı geçerli.
      Daha iyi birçok alternatif olsa da acı noktaları yeterince büyük olmadığı için yerlerini alamıyorlar.
  • Typst'i seviyorum.
    Özellikle programatik olarak üretilmiş girdilerle çalışırken iyi; --input bayrağı JSON alabiliyor.
    Dosya içinde özel json.decode() fonksiyonuyla JSON'u kolayca içeri alabiliyorsunuz.
    Kararlı sonuçlar üretmek çok kolay olduğu için kendi projemde de LaTeX'ten Typst'e geçtim.
    [0] https://typst.app/docs/reference/foundations/sys/
    [1] https://resgen.app