- मौजूदा Markdown सिंटैक्स का विस्तार करके किताबें, शोधपत्र, स्लाइड्स, प्रेज़ेंटेशन आदि कई प्रकार के दस्तावेज़ आसानी से बनाने वाला एक आधुनिक typography सिस्टम
- function support, variables, conditional statements/loops, standard library जैसी उन्नत सुविधाएँ सीधे Markdown में शामिल हैं, जिससे पारंपरिक Markdown या LaTeX की तुलना में extensibility और automation में अलग पहचान मिलती है
- एक ही source file से HTML, PDF, slides (reveal.js), paged book (paged.js) जैसे कई outputs बनाए जा सकते हैं, इसलिए यह code-based content creation के लिए उपयुक्त है
- scripting features और expressive extended syntax की मदद से जटिल या dynamic content भी स्वतंत्र रूप से बनाया जा सकता है
- REPL, live preview, fast compilation वातावरण उपलब्ध है, जिससे real-time document editing और debugging संभव है
- मौजूदा tools की तुलना में scripting features, document control, आसान learning curve जैसे क्षेत्रों में Markdown, LaTeX, Typst, AsciiDoc, MDX पर बढ़त रखता है
- अलग development environment या जटिल configuration के बिना केवल Java 17 या उससे ऊपर होने पर प्रमुख operating systems पर इस्तेमाल किया जा सकता है
About
- Quarkdown एक आधुनिक typesetting सिस्टम है, जिसे Markdown की मूल संरचना में functions और extended syntax जोड़कर इस तरह बनाया गया है कि उपयोगकर्ता साधारण text से लेकर किताबें, शोधपत्र, स्लाइड्स जैसे विभिन्न फ़ॉर्मैट में उच्च-गुणवत्ता वाले परिणाम आसानी से बना सकें
- यह CommonMark और GFM पर आधारित है, और अपना सिंटैक्स, functions, variables, यहाँ तक कि user-defined libraries भी सपोर्ट करता है
- यह Quarkdown Flavor नाम का अपना स्वतंत्र सिंटैक्स प्रदान करता है
- Turing-complete function extension syntax के माध्यम से Markdown में functions, conditionals, loops जैसी उन्नत क्षमताएँ जोड़ी जाती हैं
- .qmd libraries के ज़रिए layout, input/output, mathematics, conditionals, loops जैसी कई सुविधाओं का उपयोग किया जा सकता है
- जटिल document structures या dynamic content की आवश्यकता होने पर भी extensibility और productivity बढ़ाई जा सकती है
प्रमुख विशेषताएँ और उपयोग
- HTML, slides, books (Paged), PDF जैसे कई output formats का समर्थन
.doctype {slides}, .doctype {paged} जैसी function calls से document type निर्धारित किया जा सकता है
- reveal.js, paged.js जैसे open source-आधारित engines के साथ एकीकरण
- scripting और dynamic content
- functions, variables, conditionals, loops जैसे programming elements शामिल
- ex) .function {greet} ... .greet {world} from:{iamgio}
- live preview, fast compilation
- real-time preview और file change detection (Watch) सुविधा उपलब्ध
-p --preview, -w --watch options से काम की दक्षता बढ़ती है
- अन्य document tools से तुलना
- LaTeX की तुलना में learning curve कम है, और Markdown की तुलना में feature extensibility बेहतर है
- Typst, AsciiDoc, MDX आदि की तुलना में भी scripting/expressiveness में मजबूती
समर्थित targets
- HTML
- सामान्य output (default)
- slides (reveal.js का उपयोग)
- book/research paper format (paged.js का उपयोग, web server आवश्यक)
- PDF
- HTML द्वारा समर्थित सभी document types और features को उसी तरह PDF में output किया जा सकता है
- PDF output के विस्तृत विवरण के लिए wiki दस्तावेज़ देखें
.doctype {slides}, .doctype {paged} जैसी function calls से output format नियंत्रित किया जा सकता है
तुलना
|
Quarkdown |
Markdown |
LaTeX |
Typst |
AsciiDoc |
MDX |
| संक्षिप्तता·पठनीयता |
✔ |
✔ |
✗ |
✔ |
✔ |
✔ |
| पूरे दस्तावेज़ पर नियंत्रण |
✔ |
✗ |
✔ |
✔ |
✗ |
✗ |
| scripting सुविधाएँ |
✔ |
✗ |
आंशिक समर्थन |
✔ |
✗ |
✔ |
| किताब/लेख फ़ॉर्मैट output |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| presentation output |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| learning curve |
हरा |
हरा |
लाल |
नारंगी |
हरा |
हरा |
| target support |
HTML, PDF |
HTML |
PDF, PostScript |
PDF |
HTML, PDF, ePub |
HTML |
5 टिप्पणियां
शायद टेबल होने की वजह से मोबाइल लेआउट टूट रहा है।
.topic_contentsमेंmin-width: 0देने पर यह ठीक हो जाता है।min-widthकी वजह से सच में काफी सिरदर्द है...अरे, मैंने इसे एक अलग तरीके से हल कर लिया। धन्यवाद!
तेज़ फीडबैक के लिए धन्यवाद~
Hacker News की राय
मेरा FOSS टेक्स्ट एडिटर KeenWrite Markdown से XHTML, TeX, और PDF में कन्वर्ट करने के लिए इसी तरह का तरीका इस्तेमाल करता है
इसका software architecture दिखाता है कि processor chain को कैसे डिज़ाइन किया जा सकता है
मैंने KeenWrite इसलिए बनाया था ताकि sci-fi उपन्यास लिखते समय पात्रों के नाम या स्थान जैसे variables इस्तेमाल कर सकूँ
ज़्यादा जानकारी के लिए tutorial देखें
जो लोग अभी भी pandoc और shell scripts इस्तेमाल करते हैं, उनके लिए Typesetting Markdown series में Markdown को PDF में बदलने के लिए script-based infrastructure बनाने का तरीका समझाया गया है
KeenWrite के बारे में जानकारी यहाँ मिल सकती है
architecture diagram यहाँ देखा जा सकता है
हाल में काफ़ी ध्यान पाने वाले Typst की इस प्रोजेक्ट से तुलना करना दिलचस्प होगा, लेकिन यह हैरानी की बात है कि feature comparison matrix में Typst का बिल्कुल ज़िक्र नहीं था
कुल मिलाकर दोनों प्रोजेक्ट काफ़ी समान लगते हैं
मुझे जानना है कि comparison chart सही है या नहीं – लिंक
मेरा तो साफ़ मानना है कि LaTeX में पूरा scripting capability है, भले ही उसे इस्तेमाल करना कष्टदायक हो
मुझे इस दावे पर संदेह है कि Quarkdown का रहस्यमय syntax Typst से ज़्यादा संक्षिप्त और पढ़ने में आसान है
learning curve भी Typst से आसान नहीं होगी, दोनों लगभग एक जैसे लगते हैं
मेरा मानना है कि LaTeX भी tex4ht से HTML बना सकता है
इससे कम entry barrier होना मुश्किल है
हाँ, learning curve और entry barrier एक ही चीज़ नहीं हैं, लेकिन इनमें काफ़ी overlap है
और 'learning curve' एक subjective गुण है
इसे comparison table में डालते ही वह शुरू से ही biased हो जाता है
साफ़ features ज़्यादा objective होते हैं, लेकिन कभी-कभी product की प्रकृति ऐसी होती है कि कुछ features की ज़रूरत ही नहीं होती
comparison table साफ़ तौर पर inaccurate है
sample outputs शानदार लगते हैं
लेकिन मुझे हमेशा यह बात ज़्यादा पसंद नहीं आती कि template language function calls या complexity से बढ़ती चली जाए
बेशक इस context में इसका मतलब हो सकता है
लेकिन अगर इसे किसी दूसरी language के साथ इस्तेमाल करना पड़े, जैसे server-side rendering या data-driven document generation में, तो दो भाषाओं के बीच आना-जाना करने में बहुत समय निकल जाता है
template languages कभी भी 'real' language जितनी powerful नहीं होतीं
इसलिए मैं JSX या JavaScript के tagged template literal जैसे तरीकों को पसंद करता हूँ
अगर किसी असली programming language का इस्तेमाल करते हुए document context समझा जा सके, तो escape handling (जैसे XSS) की चिंता भी कम होती है
यह प्रोजेक्ट Quarto से कैसे अलग है, यह जानने की जिज्ञासा है
नाम भी मिलता-जुलता है, extension भी वही है, और दिशा भी समान लगती है, लेकिन features उल्टा कम दिखते हैं – Quarto
FAQ के अनुसार इसे वही developers बना रहे हैं
कुछ दिन पहले मेरे एक दोस्त ने दिखाया कि वह अपने सारे lecture scripts को Quarto में फिर से लिख रहा है और presentations भी embed कर रहा है, और वह काफ़ी साफ़-सुथरा लगा
Quarto का R Studio और Jupyter Notebook के साथ अच्छा integration होना बड़ा फ़ायदा है
मुझे लगता है यह convergent evolution जैसा मामला है
यह दिलचस्प है कि जो चीज़ "planet" जैसी दिख सकती है, वह दरअसल quark है, ख़ासकर down quark
project काफ़ी cool है, लेकिन publishing industry के मशहूर brand QuarkXPress की वजह से publishing system के नाम में 'Quark' शब्द इस्तेमाल करना थोड़ा risky है
संबंधित trademark registration की जानकारी यहाँ, यहाँ मिल सकती है
(यह भी जानने की जिज्ञासा है कि एक ही शब्द के लिए दो trademarks क्यों registered हैं)
इस क्षेत्र की हर discussion thread में हमेशा 70% comments "LaTeX क्यों नहीं इस्तेमाल करते?" जैसे होते हैं, इसलिए मैं पहले ही साफ़ कह दूँ
मुझे निश्चित रूप से एक modern Markdown-based typesetting system चाहिए
LaTeX को replace करने की और कोशिशें देखना अच्छा लगेगा
LaTeX सचमुच असुविधाजनक और पुराना है, और ऐसा system अच्छा होगा जो markup को ज़्यादा स्वतंत्रता से इस्तेमाल करने दे
अगर feature-rich बनने से syntax लंबा भी हो जाए, तब भी Markdown से थोड़ा अधिक शक्तिशाली क्षेत्र की स्पष्ट ज़रूरत है
लेकिन मुझे नहीं लगता कि यह project वही है जिसे मैं ढूँढ रहा था
examples देखकर लगता है कि यह बस plain Markdown से थोड़ा ज़्यादा powerful दिशा में झुका हुआ है, पूरी तरह LaTeX (या Typst) replacement जैसा नहीं
इस तरह के document systems को इस्तेमाल में 'वाकई बहुत smooth' होना चाहिए, और यह वैसा महसूस नहीं होता
adoption के लिहाज़ से यह अच्छी बात नहीं है
काश यह सामान्य Markdown के साथ जितना हो सके उतना compatible होता, लेकिन अगर function arguments के लिए indentation ज़रूरी है, तो लगता है पूरी document को indent करना पड़ेगा, जबकि Markdown के extension points आम तौर पर code blocks (```plugin-name` जैसे) ज़्यादा स्वाभाविक लगते हैं
syntax के फ़र्क की वजह से पूरी document structure बदलनी पड़ सकती है
अगर document शुरू से publishing purpose के लिए बन रहा है, तो सीधे LaTeX में काम किया जा सकता है
यह सबसे उपयोगी तब होगा जब note-taking apps में अच्छी तरह integrated हो
कुछ लोग Emacs या Vim इस्तेमाल करते होंगे, लेकिन मेरे जैसे retro पसंद लोग भी आख़िरकार Obsidian वगैरह पर आ गए हैं, यह मानना पड़ेगा
अगर note app के भीतर document structure को बेहतर control किया जा सके, या publishing feature से जोड़ने वाला कोई हिस्सा हो, तो वह बेहतर होगा
अगर यह standalone है, तो इसे क्यों इस्तेमाल किया जाए, यह सवाल बनता है
कम-से-कम Typst के पास online editor तो है, और सब लोग वही इस्तेमाल करते हैं
इसकी असली ख़ासियत यह है कि यह document में बेकार चीज़ें नहीं जोड़ता
ऐसे systems (Typst सहित) मूल रूप से papers जैसे लंबे texts की typesetting के लिए बने होते हैं
मैं चाहता हूँ कि यह HTML का विकल्प बने, लेकिन Typst इस्तेमाल करने पर भी लगता है कि लेखक लगभग सिर्फ़ 'papers या long-form text' पर ही ध्यान देते हैं
मैं forms, invoices, flyers, business cards जैसी चीज़ें भी बनाना चाहता हूँ, लेकिन ऐसी चीज़ें इनके interest से बाहर लगती हैं
(असल में मैं Sile के बारे में सोच रहा था, लेकिन Typst भी मिलता-जुलता है)
Typst commercial है, इसलिए मैंने उसे गहराई से इस्तेमाल नहीं किया
ख़ासकर interactive forms पर तो पहले से काम चल रहा है (pdf writer backend में कुछ support पहले से मौजूद है)
थोड़ा समय बीतने पर Typst में forms feature आ जाना चाहिए – issue देखें
invoices, विज्ञापन पत्रक, business cards वगैरह में छोटे elements को page के केंद्र या किनारों पर बहुत सटीक ढंग से रखना पड़ता है, और इसके लिए WYSIWYG tools ज़्यादा सुविधाजनक होते हैं
सिर्फ़ text-based typesetting से trial and error बहुत बढ़ जाता है
उदाहरण के लिए tabloid में text को rectangle नहीं बल्कि image या cut के अनुसार flow और wrap करना पड़ता है, और यह काम वास्तव में देखे बिना सिर्फ़ coordinates लिखकर करना बहुत मुश्किल है
मैं इसे Rust में cargo के ज़रिए install करके online editor के बिना ही अच्छी तरह इस्तेमाल कर रहा हूँ
कई तरह के documents बनाने के लिए यह काफ़ी आसान है
मैं पहले से slides और handouts बनाने में इसे replacement की तरह इस्तेमाल कर रहा हूँ
image wrapping या text flow जैसी कुछ features अभी नहीं हैं, लेकिन TeX में भी यह कठिन है और Typst में आगे जोड़ी जाने वाली हैं
poster example
यह लगभग reStructuredText(rST) जैसा ही लगता है
Quarkdown का function syntax (.somefunction {argument} {argument} body) और rST का function syntax (.. somefunction:: {argument} {argument} body) बहुत मिलते-जुलते हैं
Markdown, Quarkdown, Typst वगैरह बहुत ज़्यादा हो गए हैं और कोई standardization नहीं दिखती, इसलिए आख़िरकार मैं HTML+CSS पर लौट आया
मैंने इसे सीधे इस्तेमाल नहीं किया है, लेकिन काफ़ी गंभीरता से सोच रहा हूँ
बाकी formats जटिल हैं और उनकी learning curve लिखने के काम में ही बाधा बनती है
XML में मैं अपने tags मनचाहे तरीके से define कर सकता हूँ, और parser के ज़रिए footnotes अपने-आप बनाना जैसी कई संरचनाएँ तैयार कर सकता हूँ
जानना चाहता हूँ कि क्या किसी ने ऐसा approach इस्तेमाल किया है
समस्या तब शुरू होती है जब बहुत से लोग उसके ऊपर एक पूरा system चढ़ा देते हैं और शुरू से ही 'कुछ और जटिल' हल करने की कोशिश करते हैं
वे उस system को, जो मूल रूप से सरल उपयोग के लिए बना था, अपनी नज़र में improve करते हैं, लेकिन वास्तव में उसकी सीमाओं को समझे बिना सिर्फ़ अनावश्यक दोहराव और भ्रम बढ़ा देते हैं
यह feature की कमी का मामला नहीं है, बल्कि design purpose की सीमा से बाहर जाकर इस्तेमाल करने का मामला है
यहाँ तक कि अगर Windows Notepad में formatting जोड़ दी जाए, तब भी वह मूल रूप से सुधार नहीं कहलाएगा
क्योंकि Notepad की अपनी मूल भूमिका थी
अगर आपको Emacs से परेशानी नहीं है, तो यह अच्छा विकल्प है
सैकड़ों frameworks और जटिल syntax याद रखने की ज़रूरत नहीं पड़ती
AI को markdown to html converter बनाने का command दे दो, इतना काफ़ी है
2003 में आई The Art of Unix Programming में भी यह बात कही गई थी कि XML को सीधे edit करना कष्टदायक है, इसलिए तरह-तरह के formats और parsers नए सिरे से बनाने पड़े