3 पॉइंट द्वारा GN⁺ 2024-07-21 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • Typst का लक्ष्य LaTeX जितनी शक्ति देना है, लेकिन यह सीखने और इस्तेमाल करने में अधिक आसान markup-आधारित typesetting system है, और इस repository में local document compilation के लिए ज़रूरी compiler और CLI शामिल हैं
  • यह बुनियादी formatting कार्यों के लिए built-in markup, flexible functions, integrated scripting, math typesetting, bibliography management, और उपयोगी error messages प्रदान करता है
  • incremental compilation के ज़रिए तेज compile time का लक्ष्य रखा गया है, और typst watch source changes को मॉनिटर करके हर बार शुरुआत से compile करने की तुलना में तेज़ी से फिर से compile करता है
  • CLI को release binaries, package manager, cargo, Nix, और Docker से install किया जा सकता है, और typst compile file.typ से PDF बनाया जा सकता है; custom font path भी निर्दिष्ट किया जा सकता है
  • इसके design principles हैं consistency से simplicity, composability से power, और incrementality से performance पाना, तथा ऐसी speed को लक्ष्य बनाना जिसमें instant preview संभव हो

Typst क्या प्रदान करता है

  • Typst एक markup-आधारित typesetting system है, जिसे LaTeX जितना शक्तिशाली होने के साथ-साथ सीखने और उपयोग करने में अधिक आसान बनाने के लिए डिज़ाइन किया गया है
  • मुख्य सुविधाएँ इस प्रकार हैं
    • अक्सर उपयोग होने वाले formatting कार्यों के लिए built-in markup
    • अन्य कार्यों के लिए flexible functions
    • क़रीब से integrated scripting system
    • math typesetting, bibliography management आदि
    • incremental compilation पर आधारित तेज compile time
    • समस्या आने पर उपयोगी error messages
  • इस repository में Typst documents को local में compile करने के लिए आवश्यक Typst compiler और CLI शामिल हैं
  • बेहतर लेखन अनुभव के लिए आप मुफ़्त collaborative online editor का उपयोग कर सकते हैं

Syntax और लेखन मॉडल

  • Typst #set जैसे set rule से page size या heading numbering जैसी element properties सेट करता है
    • page की height को auto पर रखने से उसका आकार content के अनुसार समायोजित होता है
    • यदि अधिक पूर्ण नियंत्रण चाहिए, तो show rules के ज़रिए elements का appearance पूरी तरह redefine किया जा सकता है
  • headings को = Heading syntax से लिखा जाता है
    • एक = top-level heading बनाता है, == subheading बनाता है
    • पूरा lightweight markup list syntax दस्तावेज़ में देखा जा सकता है
  • math को dollar sign के बीच रखा जाता है
    • formula के आसपास अतिरिक्त spaces देने पर उसे अलग block के रूप में रखा जा सकता है
    • कई अक्षरों वाले identifiers को quotes में न लिखने पर Typst उन्हें definitions और functions की तरह समझता है
    • floor, sqrt जैसे items के लिए backslash की ज़रूरत नहीं होती
    • phi.alt में phi पर alt modifier लागू करके किसी विशेष symbol variant को चुना जाता है
  • scripting में hash (#) के बाद expression लिखकर document के भीतर code डाला जाता है
    • उदाहरण में दो variables और recursive function से nवीं Fibonacci संख्या निकाली जाती है
    • table function cells को row-wise लेता है
    • array items को individual arguments के रूप में भेजने के लिए spread operator .. इस्तेमाल होता है

Installation और CLI उपयोग

  • Typst CLI को कई तरीकों से install किया जा सकता है
    • नवीनतम release का source और prebuilt binaries releases page से मिल सकते हैं
    • binary को PATH में शामिल किसी directory में रखकर बाद में typst update से update किया जा सकता है
    • package manager versions नवीनतम release से पीछे हो सकते हैं
  • package manager installation के उदाहरण इस प्रकार हैं
  • यदि Rust toolchain मौजूद है, तो cargo से install किया जा सकता है
    • नवीनतम release: cargo install --locked typst-cli
    • development version: cargo install --git https://github.com/typst/typst --locked typst-cli
  • Nix और Docker भी supported हैं
    • Nix: nix-shell -p typst
    • Typst flake: nix run github:typst/typst-flake -- --version
    • Docker: docker run ghcr.io/typst/typst:latest --help
  • बुनियादी compile commands इस प्रकार हैं
    • typst compile file.typ: working directory में file.pdf बनाता है
    • typst compile path/to/source.typ path/to/output.pdf: निर्दिष्ट path पर PDF बनाता है
  • change watching typst watch file.typ से चलाया जाता है
    • Typst incremental compilation का उपयोग करता है, इसलिए यह हर बार शुरुआत से compile करने की तुलना में तेज़ है
  • fonts से संबंधित commands भी उपलब्ध हैं
    • typst compile --font-path path/to/fonts file.typ: अतिरिक्त font search directory निर्दिष्ट करता है
    • typst fonts --font-path path/to/fonts: system और निर्दिष्ट directory में मिले fonts की सूची दिखाता है
    • TYPST_FONT_PATHS=path/to/fonts typst fonts: Linux syntax में environment variable का तरीका
  • अन्य subcommands और options के लिए typst help, तथा किसी विशेष command की help के लिए typst help watch देखें

Editing environment और community

  • यदि आपको IDE जैसी integrated experience, autocomplete, और instant preview चाहिए, तो आप मुफ़्त Typst web app का उपयोग कर सकते हैं
  • community द्वारा बनाया गया language server Tinymist कई editor extensions में integrated है
  • community spaces में Forum और Discord server प्रमुख हैं
    • Forum सवाल पूछने, अन्य users की मदद करने, और Typst से बने results साझा करने के लिए उपयुक्त है
    • Discord तेज़ सवालों, contributions से जुड़ी चर्चाओं, और chat के लिए अधिक उपयुक्त है
  • Typst Universe वह जगह है जहाँ community templates और packages साझा करती है
  • अपने बनाए packages को package repository में submit किया जा सकता है

Contribution और build

  • यदि bug मिले तो issue खोला जा सकता है, और नई feature या bug fix implement करने के लिए contribution guide का पालन किया जा सकता है
  • स्वयं build करने के लिए नवीनतम stable Rust install करने के बाद ये commands चलाएँ
  • optimized binary target/release/ में संग्रहित होती है
  • community के साथ packages साझा करना भी contribution का एक तरीका है

नाम का उच्चारण और लेखन

  • Typst का IPA उच्चारण /taɪpst/ है
  • "Ty" का उच्चारण Typesetting के Ty की तरह, और "pst" का उच्चारण Hipster के pst की तरह होता है
  • Typst लिखते समय इसे proper noun माना जाता है और uppercase T का उपयोग किया जाता है

Design principles

  • Typst को Power, simplicity, performance इन तीन लक्ष्यों के केंद्र में रखकर डिज़ाइन किया गया है
  • लक्ष्य ऐसा system बनाना है जो LaTeX जितना शक्तिशाली हो, सीखने और उपयोग करने में आसान हो, और इतना तेज़ हो कि instant preview संभव हो सके
  • Consistency से simplicity

    • Typst में यदि आप एक काम करने का तरीका जानते हैं, तो वही ज्ञान दूसरे कामों में भी ले जा सकें
    • यदि एक ही काम करने के कई तरीके हों, तो वे abstraction के अलग-अलग स्तरों पर होने चाहिए
    • = Introduction और #heading[Introduction] इसका उदाहरण हैं, जहाँ पहला दूसरे का syntax sugar है, इसलिए दोनों से एक ही काम होना स्वीकार्य है
  • Composability से power

    • हर चीज़ में settings जोड़ने की बजाय, कम संख्या के building blocks को कई तरीकों से combine करने वाला design चुना गया है
    • TeX भी composable low-level system है, लेकिन लोग अक्सर उसकी जगह LaTeX का उपयोग करते हैं
    • LaTeX में कई मामलों में \\usepackage{knob} जैसे packages पर निर्भर होना पड़ता है
  • Incrementality से performance

    • Typst language की सभी सुविधाएँ incremental compilation के अनुकूल होनी चाहिए
    • comemo background में incremental compilation से जुड़े काम का बड़ा हिस्सा संभालता है

Sponsorship और support

  • Typst के open source काम के लिए मुख्य समर्थन के रूप में निम्नलिखित सूचीबद्ध हैं
    • Posit: full-time compiler engineer के लिए funding
    • NLnet: NGI Zero Core fund के माध्यम से कई grants द्वारा Typst कार्य का समर्थन
    • Science & Startups: Berlin Startup Scholarship के माध्यम से जनवरी 2023 से जून 2023 तक Typst development के लिए funding
    • Zerodha: one-time sponsorship
  • इस सूची में केवल वही योगदान शामिल हैं जो open source काम के लिए €10K से अधिक हैं या जिनके €10K से अधिक होने की उम्मीद है

2 टिप्पणियां

 
sebul 2025-02-28

क्या LeTeX को 라텍스 पढ़ते हैं? इसे 레이텍 पढ़ना चाहिए।

 
GN⁺ 2024-07-21
Hacker News राय
  • Typst काफी शानदार रहा, और हमारे संगठन में भी हम इससे बहुत संतुष्ट हैं
    हमें हर रात 15 लाख से ज़्यादा PDF बनाने होते हैं, इसलिए HTML→PDF conversion के लिए Puppeteer, pdflatex, lualatex वगैरह कई solutions आज़माए, लेकिन Typst कई orders of magnitude तेज़ था और resource usage भी हल्का था
    LaTeX में PDF templates बनाने का developer experience अच्छा नहीं था, लेकिन Typst templates काफी intuitive थे
    इस बड़े पैमाने के PDF generation stack के बारे में ब्लॉग में और विस्तार से लिखा है: https://zerodha.tech/blog/1-5-million-pdfs-in-25-minutes

    • उस speed पर PDF documents generate करने का कोई case मैंने नहीं सुना
      मैं Puppeteer-based bulk PDF reporting product बना रहा हूँ, और nightly jobs, caching, parallel processing तक इस्तेमाल करें तो performance ठीक-ठाक रहती है
      https://www.cx-reports.com
    • जानना चाहूँगा कि क्या आपने ReportLab भी इस्तेमाल करके देखा है
      बहुत पहले जब मुझे इसी तरह की समस्या handle करनी पड़ी थी, तो वह एक अच्छा solution था
      scale इतना बड़ा नहीं था, लेकिन फिर भी usable था
    • उत्सुक हूँ कि क्या आपके संगठन ने project में कुछ वापस contribute किया, या कम-से-कम financially support किया
    • इतने सारे PDF generate करने का use case क्या है, यह जानना चाहूँगा
  • मैंने Typst में बहुत सारे assignments लिखे हैं, और academic writing ज़्यादा concise, immersive और कहूँ तो मज़ेदार हो जाती है
    Typst syntax की functional nature की वजह से Microsoft Word, और कभी-कभी Google Docs में दिखने वाले unpredictable behavior से नहीं जूझना पड़ता
    VSCode जैसी local IDE इस्तेमाल करें तो ज़रूरी features भी लगभग मिल जाते हैं
    LaTeX से तुलना करें तो पूरे document का typesetting कहीं ज़्यादा intuitive है, लेकिन कई pages तक चलने वाले equation derivations लंबे लिखते समय LaTeX टाइप करना ज़्यादा आसान लगता है
    LaTeX syntax functional programming language की बजाय Markdown के ज़्यादा करीब है, इसलिए functions, superscripts और subscripts से भरे formulas typeset करते समय पहले से कम सोचना पड़ता है

    • academic writing कर चुके व्यक्ति के तौर पर, अच्छा होगा अगर journals Typst support करें, या LaTeX/Word तक जाने वाले plugins या bridges अच्छी तरह स्थापित हो जाएँ
      अभी मुझे नहीं लगता कि मैं paper Typst में लिखूँगा
      institution के बाहर जाते ही लगभग निश्चित रूप से conversion करना पड़ेगा, और arXiv भी LaTeX source माँगता है
      आज LaTeX के आसपास के tools काफी अच्छे हैं, और मदद करने वाली IDEs भी बहुत हैं
      व्यक्तिगत रूप से मैं Emacs का Org-Mode इस्तेमाल करता हूँ, जो LaTeX में compile होता है
    • संदर्भ के लिए, Typst में पहले से mitex package के जरिए partial LaTeX support मौजूद है
      https://github.com/mitex-rs/mitex
    • जिन लोगों को formulas की लगभग ज़रूरत नहीं होती, उनके लिए Markdown इस्तेमाल करने की तुलना में इसका क्या फायदा है, जानना चाहूँगा
  • पिछली चर्चाएँ और संबंधित सामग्री कई हैं: https://hn.algolia.com/?q=typst
    1 साल पहले, 146 comments: https://news.ycombinator.com/item?id=35250210
    8 महीने पहले, 34 comments: https://news.ycombinator.com/item?id=38354422
    2 साल पहले, 53 comments: https://news.ycombinator.com/item?id=34423590
    2 साल पहले, 30 comments: https://news.ycombinator.com/item?id=32209794

  • हैरानी है कि HTML output शुरू से core feature नहीं था, बल्कि अभी work in progress है
    LaTeX का web के साथ awkward रिश्ता है; अगर कोई नया competing project शुरू कर रहा हो, तो यह ऐसा हिस्सा लगता है जिसे शुरुआत से ही सही तरीके से solve करने की कोशिश की जाती
    [0] https://github.com/typst/typst/issues/721

    • Typst एक tool है जो LaTeX से compete करना चाहता है
      दोनों एक ही problem face करते हैं: web और paper पूरी तरह अलग तरह से काम करते हैं और कुछ concepts एक-दूसरे में translate नहीं हो सकते
      इसलिए यह define करना पड़ता है कि typeset result दूसरे environment में naturally कैसे fit होगा
      अगर Typst ने शुरुआत से HTML को target किया होता, तो development बहुत आसान होता, लेकिन तब वह शायद एक overly complex site generator से ज़्यादा नहीं होता
      PDF को पहले target करना मुझे सच में LaTeX से compete करने का इरादा लगता है
    • LaTeX का HTML output आजकल काफी ठीक हो गया है, लेकिन यह उस system पर बहुत लोगों की heroic मेहनत का नतीजा है जिसे मूल रूप से support करने का इरादा नहीं था
      नया markup system शुरू करते समय अगर accessible documents बनाने की योजना नहीं थी, तो मेरे हिसाब से यह बहुत खराब decision है
      जब तक Typst accessible documents बना नहीं सकता, मैं इसका इस्तेमाल नहीं करूँगा
    • यह बड़ी problems में से एक है
      मुझे PDF पसंद नहीं हैं
    • सुना है कि इस use case के लिए pandoc काफी अच्छा काम करता है
    • मुझे लगता है आपको पता होगा कि TeX web से कई साल पहले आया था
  • मैं इंतज़ार कर रहा हूँ कि LaTeX हटे और Typst उसकी जगह ले
    user experience पूरी तरह अलग है, और output बहुत impressive है
    अब तक मैं Jinja2 templates से TeX files generate करता था, लेकिन Typst command line से JSON ले सकता है, use करना आसान है और इतना powerful है कि Python step को पूरी तरह हटाया जा सकता है
    compile time milliseconds के order में है, यह तो अलग बात है

    • scripting बहुत अच्छी है
      शुरुआत में LaTeX में किए जाने वाले तरीके की आदत थी, इसलिए मैंने Go templates से Typst templates generate करके देखा
      लेकिन यह जानकर अच्छा लगा कि Typst अपने scripting engine में JSON को सीधे आसानी से use कर सकता है
  • 1999 में इंटर्न के तौर पर काम करते हुए, मुझे TIA के VoIP फोन standard working group के लिए standard documents लिखने का काम मिला था
    standardization body के पास एक Word template था जिसे सभी इस्तेमाल करते थे, लेकिन engineering student होने के नाते मैं कुछ समय से LaTeX इस्तेमाल कर रहा था और उसे पसंद करता था, इसलिए सोचा, “आख़िर final output तो PDF ही है और formatting भी बेहतर होगी, तो LaTeX क्यों न इस्तेमाल करूं?”
    सच में LaTeX का output बेहतर था, और मेरे boss को बिल्कुल पता नहीं चला कि मैंने Word इस्तेमाल नहीं किया है; उन्हें result पसंद आया
    working group के members की प्रतिक्रिया भी अच्छी थी, और माहौल कुछ ऐसा था, “यह बच्चा सच में talented है”
    startup के नजरिए से, working group में शामिल बड़ी कंपनियों पर अच्छा impression छोड़ना कंपनी के future, शायद survival, के लिए बहुत अहम था
    फिर एक दिन boss ने कहा, “क्या तुम वह Word document उस बड़ी कंपनी के senior executive को भेज सकते हो जो शायद हमें acquire कर सकती है? वे इसे नए document template की तरह इस्तेमाल करना चाहते हैं,” और मुझे वैसी ही डूबती हुई feeling हुई जैसी चार साल की उम्र में दोस्त के साथ experiment के तौर पर cupboard में पेशाब कर देने पर मां के पकड़ लेने पर हुई थी
    आखिरकार मैंने एक दोस्त को hire किया और उससे पूरे weekend बड़ी मुश्किल से उसे Word में फिर से बनवाया, और boss को document मिल गया
    कंपनी 18 महीने बाद 100 million dollars में acquire हो गई
    ख़ैर, LaTeX अब भी Word से 1000 गुना बेहतर दिखता है

  • यह Overleaf या CodiMD जैसी services का competitor लगता है
    syntax फिर एक और है, लेकिन लगता है pandoc इसे support करता है
    हाल में मैं R में programming कर रहा हूं, इसलिए Quarto का इस्तेमाल धीरे-धीरे ज़्यादा कर रहा हूं, और यह खासकर HTML जैसा काफी अच्छा output बनाता है
    लेकिन ये tools भी academic use में अहम दो समस्याएं हल नहीं करते: reviewers को अच्छा diff comparison देना, और non-technical collaborators के साथ आसानी से share करके comments करने देना
    इसलिए कम से कम मेरे field की scientific writing में Word को आने वाले कई सालों तक replace करना मुश्किल लगता है
    [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 का काफी इस्तेमाल कर रहा हूं
      GT इस्तेमाल करते समय Typst PDF output LaTeX PDF की तुलना में थोड़ा अधिक rough लगा
      उम्मीद है यह ठीक होगा
  • LaTeX की तुलना में Typst में मुझे सबसे ज्यादा जो बात खटकती है, वह यह है कि यह बुनियादी sophisticated typography features को अच्छी तरह handle नहीं करता
    उदाहरण के लिए, math mode में spacing types (mathop, mathbin, mathrel आदि) या delimiter sizes (big, bigg आदि) को handle करने वाला हिस्सा कमजोर है

    • हो सकता है मैं गलत समझ रहा हूं कि आप exactly क्या खोज रहे हैं
      math mode में symbols/operators की spacing https://typst.app/docs/reference/math/class/ से बदली जा सकती है, और delimiter size https://typst.app/docs/reference/math/lr#functions-lr से बदला जा सकता है या automatically handle किया जा सकता है
    • इस thread को देखें तो accessibility में भी समस्या लगती है: https://github.com/typst/typst/issues/133
      हालांकि लगता है LaTeX के साथ भी यही है
  • वाकई अच्छा दिखता है और मैं इसे एक बार try करने वाला हूं
    हालांकि मेरे मन में बार-बार यह सोच आती है
    15 साल बाद भी LaTeX free और maintained होगा, इसका मेरा अनुमानित probability: 99.9999%
    15 साल बाद भी कोई दूसरा नया tool free और maintained होगा, इसका मेरा अनुमानित probability: 5%

    • यह जल्दी आए और काफी अच्छे system का curse है
      bash और कुछ दूसरी चीज़ों के साथ भी ऐसा ही है
      बेहतर alternatives बहुत हैं, लेकिन pain points इतने बड़े नहीं हैं कि उन्हें replace कर दें
  • मुझे Typst पसंद है
    खासकर programmatically बनाए गए inputs को handle करते समय यह अच्छा है, और --input flag JSON accept कर सकता है
    file के अंदर dedicated json.decode() function से JSON आसानी से लाया जा सकता है
    stable results बनाना बहुत आसान है, इसलिए अपने project में भी मैंने LaTeX से Typst पर switch कर लिया
    [0] https://typst.app/docs/reference/foundations/sys/
    [1] https://resgen.app