- Mevcut Markdown sözdizimini genişleterek kitap, makale, slayt, sunum gibi farklı belge türlerini kolayca üretmeyi sağlayan modern bir tipografi sistemi
- Fonksiyon desteği, değişken kullanımı, koşullar/döngüler, standart kütüphane gibi gelişmiş özellikleri doğrudan Markdown içine gömerek, mevcut Markdown veya LaTeX'e kıyasla genişletilebilirlik ve otomasyon açısından farklılaşıyor
- Tek bir kaynak dosyayla HTML, PDF, slaytlar (reveal.js), sayfalı kitap (paged.js) gibi birden fazla çıktı üretilebiliyor; kod tabanlı içerik üretimi için optimize edilmiş
- Betik yazma özellikleri ve ifade gücü yüksek genişletilmiş sözdizimi ile karmaşık veya dinamik içerikler de esnek biçimde oluşturulabiliyor
- REPL, canlı önizleme, hızlı derleme ortamı sunarak gerçek zamanlı belge düzenleme ve hata ayıklamayı mümkün kılıyor
- Mevcut araçlarla karşılaştırıldığında betik yazma, belge denetimi, kolay öğrenme eğrisi gibi alanlarda Markdown, LaTeX, Typst, AsciiDoc, MDX karşısında güçlü yanlara sahip
- Ayrı bir geliştirme ortamı veya karmaşık kurulum gerekmeden yalnızca Java 17 veya üzeri ile başlıca işletim sistemlerinin tamamında kullanılabiliyor
About
- Quarkdown, Markdown'ın temel yapısına fonksiyonlar ve genişletilmiş sözdizimi ekleyerek, kullanıcıların basit metinlerden kitap, makale, slayt gibi farklı biçimlerde yüksek kaliteli çıktıları kolayca üretmesini sağlamak üzere tasarlanmış modern bir dizgi sistemi
- CommonMark ve GFM temel alınarak geliştirilmiştir; kendi sözdizimiyle birlikte fonksiyonları, değişkenleri ve kullanıcı tanımlı kütüphaneleri de destekler
- Quarkdown Flavor adlı özgün bir sözdizimi sunar
- Turing-tam fonksiyon genişletme sözdizimi ile Markdown'a fonksiyonlar, koşullar, döngüler gibi gelişmiş özellikler ekler
- .qmd kütüphanesi sayesinde düzen, giriş/çıkış, matematik, koşullar, döngüler gibi çeşitli işlevler kullanılabilir
- Karmaşık belge yapıları veya dinamik içerik gerektiren durumlarda da genişletilebilirliği ve üretkenliği artırabilir
Başlıca özellikler ve kullanım şekilleri
- HTML, slaytlar, kitap (Paged), PDF gibi çeşitli çıktı biçimlerini destekler
- .doctype {slides}, .doctype {paged} gibi fonksiyon çağrılarıyla belge türü belirlenebilir
- reveal.js, paged.js gibi açık kaynak tabanlı motorlarla entegre olur
- Betik yazma ve dinamik içerik
- Fonksiyonlar, değişkenler, koşullar, döngüler gibi programlama öğelerini içerir
- ör.) .function {greet} ... .greet {world} from:{iamgio}
- Canlı önizleme, hızlı derleme
- Gerçek zamanlı önizleme ve dosya değişikliği izleme (Watch) özelliği sunar
- -p --preview, -w --watch seçenekleriyle çalışma verimliliğini artırır
- Diğer belge araçlarıyla karşılaştırma
- LaTeX'e kıyasla öğrenme eğrisi daha düşüktür; Markdown'a kıyasla ise özellik genişletilebilirliği daha yüksektir
- Typst, AsciiDoc, MDX gibi araçlarla karşılaştırıldığında betik yazma / ifade gücü açısından öne çıkar
Desteklenen hedefler
- HTML
- Genel çıktı (varsayılan)
- Slaytlar (reveal.js kullanır)
- Kitap/makale biçimi (paged.js kullanır, web sunucusu gerekir)
- PDF
- HTML'in desteklediği tüm belge türleri ve özellikler aynen PDF olarak da üretilebilir
- PDF çıktısıyla ilgili ayrıntılar için wiki belgesine bakın
.doctype {slides}, .doctype {paged} gibi fonksiyon çağrılarıyla çıktı biçimi denetlenebilir
Karşılaştırma
|
Quarkdown |
Markdown |
LaTeX |
Typst |
AsciiDoc |
MDX |
| Sadelik · okunabilirlik |
✔ |
✔ |
✗ |
✔ |
✔ |
✔ |
| Tüm belge üzerinde denetim |
✔ |
✗ |
✔ |
✔ |
✗ |
✗ |
| Betik yazma özellikleri |
✔ |
✗ |
Kısmen desteklenir |
✔ |
✗ |
✔ |
| Kitap/makale biçimi çıktı |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Sunum çıktısı |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Öğrenme eğrisi |
düşük |
düşük |
yüksek |
orta |
düşük |
düşük |
| Hedef desteği |
HTML, PDF |
HTML |
PDF, PostScript |
PDF |
HTML, PDF, ePub |
HTML |
5 yorum
Galiba tablo olduğu için mobil düzen bozuluyor.
.topic_contentsöğesinemin-width: 0verince düzeliyor.min-widthyüzünden gerçekten başım ağrıdı...Ah, bunu farklı bir şekilde çözdüm. Teşekkürler!
Hızlı geri bildiriminiz için teşekkürler~
Hacker News görüşleri
Benim FOSS metin editörüm KeenWrite, Markdown'dan XHTML, TeX ve PDF'ye dönüştürmek için benzer bir yaklaşım kullanıyor
Yazılım mimarisi, işlemci zincirinin nasıl tasarlanabileceğini gösteriyor
KeenWrite'ı oluşturma nedenim, bilimkurgu yazarken karakter adları ya da yerler gibi değişkenleri kullanabilmekti
Ayrıntılar için eğiticiye bakın
Hâlâ pandoc ve kabuk betikleri kullananlar için, Typesetting Markdown serisi Markdown'dan PDF'ye dönüştüren betik tabanlı bir altyapının nasıl kurulacağını anlatıyor
KeenWrite hakkında daha fazla bilgiyi burada bulabilirsiniz
Mimari diyagramı buradan inceleyebilirsiniz
Son dönemde çok ilgi gören Typst ile bu projeyi karşılaştırmak ilginç olurdu; ama özellik karşılaştırma matrisinde Typst'ten hiç bahsedilmemesi şaşırtıcı
Genel olarak iki proje birbirine çok benziyor gibi görünüyor
Karşılaştırma tablosunun doğru olup olmadığını merak ediyorum – bağlantı
LaTeX'in kesinlikle tam teşekküllü betik yetenekleri olduğunu düşünüyorum, kullanması ne kadar sancılı olsa da
Quarkdown'un daha esoterik sözdiziminin Typst'ten daha kısa ve okunabilir olduğu iddiasına şüpheyle yaklaşıyorum
Öğrenme eğrisinin de Typst'ten daha kolay olacağını sanmıyorum; ikisi neredeyse aynı görünüyor
LaTeX'in tex4ht ile HTML de üretebildiğini sanıyorum
Bundan daha düşük bir giriş bariyeri olamaz
Elbette öğrenme eğrisi ile giriş bariyeri aynı şey değil, ama büyük ölçüde örtüşüyorlar
Ayrıca "öğrenme eğrisi" öznel bir özellik
Karşılaştırma tablosuna koyarsanız baştan çarpıtılmış olur
Net özellikler daha nesnel olsa da, bazen ürünün doğası gereği bazı özellikler gereksiz olabilir
Karşılaştırma tablosu açıkça hatalı
Örnek çıktılar hoş görünüyor
Ama şablon dilinin fonksiyon çağrılarıyla ya da karmaşıklıkla büyümesinden hiçbir zaman pek hoşlanmıyorum
Elbette bu bağlamda anlamlı olabilir
Ama bunu başka bir dille birlikte kullanmak gerekirse, örneğin sunucu tarafı render etme ya da veri odaklı belge üretimi gibi durumlarda, iki dil arasında gidip gelerek fazla zaman harcanıyor
Şablon dilleri hiçbir zaman "gerçek" bir dil kadar güçlü olmuyor
Bu yüzden JSX ya da JavaScript'in tagged template literal gibi yaklaşımlarını tercih ediyorum
Gerçek bir programlama dili kullanırken aynı zamanda belgenin bağlamını anlayıp kaçış işlemleriyle (XSS gibi) daha az uğraştıran bir yaklaşım daha iyi
Quarto ile bu proje arasındaki farkı merak ediyorum
İsimleri de benziyor, uzantıları da aynı, hedefleri de benzer görünüyor ama özellikleri daha az gibi – Quarto
SSS'de aynı geliştiriciler tarafından yapıldığı belirtiliyor
Bir arkadaşım birkaç gün önce tüm ders notlarını Quarto ile yeniden yazdığını ve içine sunum da gömdüğünü gösterdi; oldukça temiz görünüyordu
Quarto'nun R Studio ve Jupyter Notebook ile de iyi entegre olması büyük avantaj
Bence bu, yakınsak evrim gibi bir durum
Aslında "planet" gibi görünebilecek şeyin bir kuark, özellikle de down kuark olduğuna dair açıklama ilginç
Havalı bir proje ama yayıncılık sektöründeki ünlü marka QuarkXPress yüzünden "Quark" kelimesini bir yayın sistemi adı olarak kullanmak biraz riskli
İlgili ticari marka kayıtlarına buradan ve buradan bakılabilir
(Aynı kelime için neden iki ticari marka kaydı olduğunu da merak ediyorum)
Bu alandaki her tartışma başlığında hep "%70 neden LaTeX kullanmıyorsun?" tarzı yorumlar oluyor; o yüzden en baştan net olayım
Ben kesinlikle modern, Markdown tabanlı bir dizgi sistemine ihtiyaç duyuyorum
LaTeX'in yerini almaya çalışan daha fazla girişim olmasını isterim
LaTeX gerçekten kullanışsız ve eski usul; işaretlemeyi daha serbest verebileceğim bir sistem iyi olurdu
Özellikler arttıkça sözdizimi uzasa bile, Markdown'dan biraz daha güçlü bir alana kesinlikle ihtiyaç var
Ama bu projenin benim aradığım şey olmadığını hissediyorum
Örneklere bakınca, sanki sadece Markdown'dan biraz daha güçlü tarafa kayıyor; tam bir LaTeX (veya Typst) alternatifi gibi durmuyor
Bu tür belge sistemlerinin kullanımı "gerçekten akıcı" olmalı; bunda o hissi alamadım
Bu, yaygınlaşma açısından iyi görünmüyor
Mümkün olduğunca normal Markdown ile uyumlu olmasını isterdim ama fonksiyon argümanları için girinti zorunlu olunca tüm belge girintili olacakmış gibi görünüyor; oysa Markdown'ın uzantı noktası genelde kod bloklarıdır (```plugin-name` gibi) ve bu daha doğal
Sözdizimi farkı yüzünden belgenin tüm yapısını değiştirmek gerekebilir
Eğer belgeyi doğrudan yayımlama amacıyla üretiyorsam, zaten LaTeX ile de çalışabilirim
En faydalı olduğu yer, not alma uygulamalarına iyi entegre edildiği zaman
Bunu Emacs ya da Vim'de yapanlar vardır ama benim gibi eski kafalı biri bile sonunda Obsidian ve benzerlerine geçtiğini itiraf etmeli
Belge yapısını not uygulamasında daha iyi kontrol edebilen veya yayımlama işlevlerine bağlanabilen bir parça olması güzel olurdu
Bağımsız bir araçsa neden kullanayım, emin değilim
Hiç değilse Typst'in bir çevrimiçi editörü var; herkes onu kullanıyor
Önemli olan belgeye gereksiz şeyler eklememesi
Bu tür sistemler (Typst dahil) temelde makale gibi uzun metinlerin dizgisi için yapılmış
Keşke HTML'e bir alternatif olsalar; Typst'i de denedim ama geliştiriciler neredeyse sadece "makaleler ya da uzun metinler" ile ilgileniyor gibi geliyor
Formlar, faturalar, el ilanları, kartvizitler gibi şeyler de yapmak istiyorum ama bunlar ilgi alanlarının dışında
(Aslında aklımda Sile vardı ama Typst de benzer)
Typst ticari olduğu için çok derinlemesine kullanmadım
Özellikle etkileşimli formlar için zaten çalışma yürütüldüğüne dair haberler var (pdf writer arka ucu şimdiden kısmen destekliyor)
Biraz zamanla Typst'te form özellikleri muhtemelen hayata geçer – issue
Fatura, reklam broşürü, kartvizit gibi şeylerde küçük öğeleri sayfanın ortasına ya da kenarlarına hassas biçimde yerleştirmek gerekir; bu da WYSIWYG araçları daha uygun kılar
Sadece metin tabanlı dizgiyle çok fazla deneme-yanılma gerekir
Örneğin tabloid tarzı düzenlerde metin, dikdörtgen olmayan görsellerin ya da kesitlerin etrafından akıp sarılmalı; bunu gerçekten gözle görmeden sadece koordinatlarla yapmak çok zor
Ben Rust ile cargo üzerinden kurup çevrimiçi editör olmadan gayet rahat kullanıyorum
Birçok farklı belge türü üretmek için oldukça kolay
Ben zaten slayt ve dağıtım notu hazırlamakta alternatif olarak kullanıyorum
Görsel etrafına metin sarma ya da metin akışı gibi birkaç özellik henüz yok ama TeX'te de bunlar zor; Typst'e de ileride eklenecek
Poster örneği
Bu neredeyse reStructuredText (rST) ile tamamen aynı görünüyor
Quarkdown'un fonksiyon sözdizimi (.somefunction {argüman} {argüman} body) ile rST'nin fonksiyon sözdizimi (.. somefunction:: {argüman} {argüman} body) çok benzer
Markdown, Quarkdown, Typst derken çok fazla seçenek ve çok az standardizasyon varmış gibi geliyor; bu yüzden sonunda HTML+CSS'ye geri dönüyorum
Hiç doğrudan kullanmadım ama epey ciddi düşünüyorum
Diğer biçimlerin hepsi karmaşık ve öğrenme eğrileri yazının kendisini engelliyor
XML'de kendi etiketlerimi istediğim gibi tanımlayıp, bir ayrıştırıcıyla dipnotların otomatik oluşturulması gibi çeşitli yapılar kurabilirim
Bu yaklaşımı kullanan var mı merak ediyorum
Sorun, çok fazla insanın onun üstüne katmanlar inşa edip en başta "daha karmaşık" bir şeyi çözmeye çalışmasıyla başlıyor
Başlangıçta basit bir amaç için tasarlanmış bir sistemi, onu geliştirdiğini sanarak aslında sınırlarını anlamadan zorlamalarının gereksiz tekrar ve kafa karışıklığını artırdığını düşünüyorum
Eksik olan özellikler değil; mesele tasarım amacının dışına çıkılması
Hatta Windows notepad'e biçimlendirme gelse bile, bunun özünde bir iyileştirme olacağını düşünmüyorum
Çünkü notepad'in zaten kendine ait bir rolü vardı
Emacs'tan nefret etmiyorsanız iyi bir seçenek
Yüzlerce framework ve karmaşık sözdizimi ezberlemek gerekmiyor
Yapay zekaya markdown to html dönüştürücü oluşturması için komut vermek bile yeterli olabilir
2003 tarihli The Art of Unix Programming'de de XML'i doğrudan düzenlemenin acı verici olduğundan ve bu yüzden türlü biçimlerle ayrıştırıcıların ortaya çıktığından bahsediliyor