deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

TeXbrain, LaTeX'i tamamen tarayıcıda, sunucusuz ve hesapsız olarak PDF'e derliyor

TeXbrain, pdfTeX'i WebAssembly aracılığıyla tarayıcıda çalıştıran, ücretsiz ve açık kaynak bir LaTeX editörü; CTAN paketlerini isteğe bağlı indiriyor, git entegrasyonu sunuyor ve hiçbir backend kullanmıyor.

TeXbrain, LaTeX'i tamamen tarayıcıda, sunucusuz ve hesapsız olarak PDF'e derliyor

TeXbrain ne yapıyor

Braian Plaku tarafından geliştirilen ücretsiz ve açık kaynak LaTeX editörü TeXbrain, .tex dosyalarını herhangi bir sunucu tarafı işlem olmadan PDF'e dönüştürüyor. Hacker News'te görünen projenin GitHub README'sine göre editör, derleyici ve git client dahil tüm bileşenler istemci tarafında çalışıyor; hesap açmak veya kurulum yapmak gerekmiyor. Uygulama GitHub Pages üzerinde statik dosyalar olarak dağıtılıyor ve MIT lisansıyla yayınlanıyor.

Geliştiricinin belirttiği motivasyon, LaTeX ile bir tez yazarken yazmaktan çok araçlarla uğraşmakla geçirilen zamandı: barındırılan servisler git senkronizasyonunu ücret duvarının ardına koyarken, yerel kurulumlar makineden makineye bozuluyordu.

Tembel yüklenen paketlerle WebAssembly pdfTeX

Derleme işlemi, pdfTeX'in SwiftLaTeX tarafından yapılmış WebAssembly portuna dayanıyor. Her derlemeden önce proje dosyaları, motorun üzerinde çalıştığı bellek içi bir dosya sistemine yazılıyor. Motor, elinde olmayan bir dosya istediğinde — bir class, package veya font — bir service worker bunu bir fallback zinciriyle çözüyor: önceden önbelleğe alınmış dosyalar, ardından uygulamayla birlikte gelen paket alt kümesi, sonra jsDelivr üzerindeki bir TeX Live aynası ve son çare olarak topluluk tarafından işletilen bir SwiftLaTeX sunucusu. Çözülen her dosya tarayıcının önbelleğine giriyor, böylece her paket en fazla bir kez indiriliyor.

Yaygın paketler uygulamayla birlikte geliyor ve CTAN'ın büyük kısmı, bir belgeye ilk ihtiyaç duyulduğunda otomatik olarak çözülüyor. Yeniden derlemelerin proje karmaşıklığına bağlı olarak bir ile beş saniye arasında sürdüğü bildiriliyor. Paketler önbelleğe alındıktan sonra uygulama tamamen çevrimdışı çalışıyor; yalnızca daha önce hiç kullanılmamış bir paket için ağa bir kez ihtiyaç duyuluyor. Çıktı pdf.js ile canlı olarak önizleniyor; çok sayfalı render, yakınlaştırma ve seçim ile arama için bir metin katmanı sunuluyor.

Düzenleme, git ve yerel dosyalar

Editör CodeMirror 6 üzerine kurulu; Lezer parser olarak yazılmış özel bir LaTeX dil bilgisi, 70'ten fazla komutu kapsayan otomatik tamamlama, code folding, snippet'ler ve bir komut paleti içeriyor. Çok dosyalı projelerde dosya ağacı, sekmeler ve .tex, .bib, .sty ile .cls dosyaları arasında sürükle-bırak bulunuyor; ayrıca makale, tez, beamer sunumu, rapor, CV ve mektup için şablonlar mevcut.

Git desteği, saf JavaScript bir git uygulaması olan isomorphic-git üzerinde çalışıyor; depo bellekte tutuluyor ve IndexedDB ile yedekleniyor. Kullanıcılar aynı sekmeden clone, branch, stage, commit, push, pull ve merge yapabiliyor. Tarayıcılar git protokolünü doğrudan konuşamadığı için uzak işlemler bir CORS proxy'sinden geçiyor — varsayılan, isomorphic-git projesinin herkese açık proxy'si ve kendi sunucunuzda barındırılan bir proxy ile değiştirilebilir.

Yerel projeler, Chrome, Edge, Arc, Brave veya Opera gibi Chromium tabanlı bir tarayıcı gerektiren File System Access API ile okunup yazılıyor. Firefox ve Safari sanal bir dosya sistemine (OPFS) geri düşüyor.

Belirtilen sınırlamalar

README eksikler konusunda açık sözlü. Yalnızca pdfTeX mevcut — XeTeX veya LuaTeX yok — bu yüzden fontspec veya polyglossia'ya bağlı belgeler derlenmiyor. Ne bibtex ne de biber bulunuyor: biblatex belgeleri .bib dosyasından üretilmiş düz bir thebibliography alıyor, yani kaynaklar görünüyor ama atıf stilleri yok sayılıyor; klasik iş akışları ise depoya işlenmiş bir .bbl dosyası gerektiriyor. Bir WebAssembly bibtex, yol haritasındaki sıradaki adım. Paketler ayrıca motorun format dosyalarıyla uyumlu olacak şekilde TeX Live 2020 dönemine sabitlenmiş durumda.

Gizlilik konusunda proje telemetri, analitik veya izleme olmadığını belirtiyor; git token'ları tarayıcının localStorage'ında kalıyor ve derleme, hiçbir shell komutu çalıştırılmadan WASM sandbox içinde gerçekleşiyor. İsteğe bağlı paket indirme yalnızca dosya adlarını gönderiyor, belge içeriğini asla.

Neden önemli

LaTeX araçları uzun süredir ağır yerel kurulumlar ile kolaylığı paraya çeviren barındırılan servisler arasında bölünmüş durumda. TeXbrain, eksiksiz bir pdflatex iş akışının — derleyici, paket yönetimi, editör ve sürüm kontrolü — bir hesap ve backend olmadan tamamen bir tarayıcı sekmesinde yaşayabileceğini gösteriyor. Bu, kilitli veya paylaşılan makinelerdeki öğrenciler ve araştırmacılar ile belgelerinin cihazından asla çıkmamasını isteyen herkes için önemli.

Paket çözümü tasarımı ayrıca daha geniş bir örüntüyü gözler önüne seriyor: onlarca yıllık bir derleyiciyi istemciye taşırken TeX Live gibi bir dağıtımı tembel yükleme problemi olarak ele almak. Mevcut eksikler — XeTeX olmaması, gerçek bir biber olmaması, 2020 dönemine ait paket donması — bu yaklaşımın sınırlarını çiziyor ve kaynakçalı tez yazarlarını en çok bunlar etkiliyor. MIT lisansı altında kendi sunucunuzda barındırılabilen bir statik site olduğundan, aynı zamanda başkalarının forklayabileceği bir yapı taşı ve bağımlı olunacak bir servis değil.

  • #latex
  • #webassembly
  • #open-source
  • #browser
  • #pdf

İlgili yazılar