- 既存の Markdown 構文を拡張し、書籍、論文、スライド、プレゼンテーション など多様な形式の文書を手軽に制作できる モダンなタイポグラフィシステム
- 関数対応、変数利用、条件分岐/ループ、標準ライブラリ などの高度な機能をMarkdownに直接組み込み、従来のMarkdownやLaTeXより 拡張性と自動化 で差別化
- 1つのソースファイルから HTML、PDF、スライド(reveal.js)、ページング書籍(paged.js) など複数の出力物を生成可能で、コードベースのコンテンツ制作に特化
- スクリプティング機能 と 表現力の高い拡張構文 により、複雑または動的なコンテンツも自由に実装可能
- REPL、ライブプレビュー、高速コンパイル 環境を提供し、リアルタイムの文書編集とデバッグが可能
- 既存ツールと比べて スクリプティング機能、文書制御、学習しやすさ などの点で Markdown、LaTeX、Typst、AsciiDoc、MDX に対する強みを持つ
- 別途開発環境や複雑な設定なしに Java 17以上 があれば主要OSで利用可能
About
- Quarkdown は、Markdown の基本構造に関数と拡張構文を追加することで、単純なテキストから 書籍、論文、スライド まで、多様な形式の完成度の高い成果物を簡単に作成できるよう設計された最新の組版システム
- CommonMark と GFM をベースに開発されており、独自構文に加えて、関数、変数、ユーザー定義ライブラリまで幅広くサポート
- Quarkdown Flavor という独自構文を提供
- チューリング完全な関数拡張構文 により、Markdownに関数、条件分岐、ループなどの高度な機能を追加
- .qmd ライブラリで、レイアウト、入出力、数学、条件分岐、ループなど多様な機能を利用可能
- 複雑な文書構造や動的コンテンツが必要な場合でも、拡張性と生産性を高められる
主な特徴と活用方法
- HTML、スライド、書籍(Paged)、PDF など多様な出力フォーマットに対応
.doctype {slides}、.doctype {paged} などの関数呼び出しで文書タイプを指定可能
- reveal.js、paged.js などのオープンソースベースのエンジンと連携
- スクリプティングと動的コンテンツ
- 関数、変数、条件分岐、ループなどのプログラミング要素を導入
- 例)
.function {greet} ... .greet {world} from:{iamgio}
- ライブプレビュー、高速コンパイル
- リアルタイムプレビューとファイル変更監視(Watch)機能を提供
-p --preview、-w --watch オプションで作業効率を向上
- 他の文書ツールとの比較
- LaTeXより学習コストが低く、Markdownより機能拡張性に優れる
- Typst、AsciiDoc、MDX などと比べてもスクリプティング/表現力で強み
対応ターゲット
- HTML
- 通常出力(デフォルト)
- スライド(reveal.js を活用)
- 書籍/論文形式(paged.js を活用、Webサーバーが必要)
- PDF
- HTMLが対応するすべての文書タイプ・機能をそのままPDFとして出力可能
- PDF出力の詳細は wiki ドキュメント を参照
.doctype {slides}、`.doctype {paged}`` のような関数呼び出しで出力フォーマットを制御
比較
|
Quarkdown |
Markdown |
LaTeX |
Typst |
AsciiDoc |
MDX |
| 簡潔さ・可読性 |
✔ |
✔ |
✗ |
✔ |
✔ |
✔ |
| 文書全体の制御 |
✔ |
✗ |
✔ |
✔ |
✗ |
✗ |
| スクリプティング機能 |
✔ |
✗ |
一部対応 |
✔ |
✗ |
✔ |
| 書籍/記事形式の出力 |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| プレゼンテーション出力 |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| 学習曲線 |
緑 |
緑 |
赤 |
オレンジ |
緑 |
緑 |
| ターゲット対応 |
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 に変換する似た方式を使っています
このソフトウェアアーキテクチャは、プロセッサチェーンをどう設計できるかを示しています
私が KeenWrite を作った理由は、SF小説を書くときに登場人物の名前や地域のような変数を使えるようにするためでした
詳しくはチュートリアルを参照してください
いまだに pandoc とシェルスクリプトを使っている人向けには、Typesetting Markdown のシリーズで、Markdown を PDF に変換するスクリプトベースのインフラの構築方法を説明しています
KeenWrite 自体の情報はこちらで見られます
アーキテクチャ図はこちらで確認できます
最近大きな注目を集めた Typst とこのプロジェクトを比較すると面白そうですが、機能比較マトリクスに Typst がまったく言及されていないのは意外です
全体として、両プロジェクトは非常によく似ているように見えます
比較チャートが正確なのか気になります – リンク
LaTeX には明らかに完全なスクリプティング機能があると思います。もちろん使うのはつらいですが
Quarkdown の難解な文法が Typst より簡潔で読みやすいという主張には懐疑的です
学習曲線も Typst より易しいとは思えません。ほぼ同じに見えます
LaTeX も tex4ht で HTML を作れると思います
これ以上参入障壁を下げるのは無理でしょう
もちろん学習曲線と参入障壁は同じ意味ではありませんが、かなり重なっています
そして「学習曲線」は主観的な特性です
比較表に入れた時点で、最初から歪むしかありません
明確な機能の方がより客観的ですが、製品の性質上、ある機能が不要な場合もあります
比較表は明らかに不正確です
サンプル出力は見栄えがします
ただ、テンプレート言語が関数呼び出しや複雑さで膨らんでいくのは、私はあまり好きではありません
もちろんこの文脈では意味があるのかもしれませんが
もし別の言語と一緒に使わなければならないなら、たとえばサーバーサイドレンダリングやデータ駆動の文書生成などでは、2つの言語を行き来するのに時間を使いすぎてしまいます
テンプレート言語は常に「本物の」言語ほど強力ではありません
だから私は JSX や JavaScript の tagged template literal のような方式を好みます
実際のプログラミング言語を使いながら、文書のコンテキストを理解していればエスケープ(XSS のようなもの)の心配を減らせるやり方の方が良いです
Quarto とこのプロジェクトはどう違うのでしょうか
名前も似ていて、拡張子も同じで、目指している方向も似ていますが、機能はむしろ少なく見えます – Quarto
同じ開発者たちが作ったとFAQに書かれています
数日前、友人がすべての講義原稿を Quarto で書き直し、プレゼンテーションまで埋め込んでいるのを見せてくれましたが、かなりきれいに見えました
Quarto が R Studio や Jupyter Notebook ともうまく連携する点は大きな強みです
こういうのは収斂進化のような現象だと思います
「planet」のように見えるものが、実はクォーク、特にダウンクォークだという説明は興味深いです
クールなプロジェクトですが、QuarkXPress という出版業界の有名ブランドがあるので、「Quark」という単語を出版システムの名称に使うのは少し危ういです
関連する商標登録情報はこちら、こちらで確認できます
(なぜ同じ単語で2つの商標が登録されているのかも気になります)
この分野の議論スレッドでは、いつも「なんで LaTeX を使わないの?」系のコメントが 70% を占めるので、まず最初に私の立場をはっきりさせておくと
私は確実にモダンな Markdown ベースの組版システムが必要だと思っています
LaTeX を置き換えるさまざまな試みがもっとあってほしいです
LaTeX は本当に不便で古いやり方ですし、マークアップをもっと自由に書けるシステムがあってほしいです
たとえ機能が増えて文法が長くなるとしても、Markdown より少し強力な領域は確実に必要です
でもこのプロジェクトは、私が探していたものではない気がします
例を見る限り、単なる Markdown より少し強力な方向に寄っているだけで、完全な LaTeX(あるいは Typst)の代替としては物足りません
この種の文書システムは「本当に滑らかに」使えなければならないのに、これはそういう感じがしません
こういう点は普及性の面でよくありません
できるだけノーマルな Markdown と互換であってほしいのですが、関数引数のインデントが必須なので、文書全体がインデントされることになりそうですし、実際 Markdown の拡張ポイントとしては、一般にコードブロック(```plugin-name` のような形)の方が自然です
文法の違いのせいで、文書全体の構造を変えなければならないかもしれません
文書を出版目的で作るのなら、LaTeX でそのまま作業すればいいでしょう
一番役に立つのは、ノートテイキングアプリにうまく統合されているときです
Emacs や Vim を使う人もいるでしょうが、私のようなレトロ派でさえ結局 Obsidian などに移ったと白状します
文書構造をメモアプリでよりよく制御したり、公開機能にもつなげられる部分が良さそうです
スタンドアロンなら、なぜ使うべきなのか疑問です
せめて Typst にはオンラインエディタがありますし、みんなそれを使っています
文書に余計なものを加えないことが重要です
この手のシステム(Typst を含む)は、基本的に論文のような長文テキストの組版のためのものです
HTML の代替になってほしいのですが、Typst も使ってみたものの、作者たちはほとんど「論文や長文」にしか関心がないように感じます
フォーム、請求書、チラシ、名刺のようなものも作りたいのですが、そういう要素は関心の外にあります
(実際には Sile のことを考えていたのですが、Typst も似ています)
Typst は商用だと思って、深くは使っていませんでした
特にインタラクティブフォームについては、すでに作業中だという話もありますし(pdf writer のバックエンドではすでに一部サポート済み)、
しばらくすれば Typst にフォーム機能が実装されそうです – イシューを参照
請求書や広告、名刺などは、小さな要素をページ中央や端に正確に配置しなければなりませんが、これは WYSIWYG ツールの方が向いています
テキストベースの組版だけでは試行錯誤が多くなりすぎます
たとえばタブロイドでは、テキストが長方形ではない画像や切り抜きに合わせて流れたり回り込んだりする必要がありますが、実際に目で確認せず座標だけ書いて作業するのは非常に大変です
私は Rust で cargo 経由でインストールして、オンラインエディタなしで十分使っています
さまざまな種類の文書を作るのにかなり簡単です
私はすでにスライドや配布資料の作成に代替として使っています
画像の回り込みやテキストフローなど、まだいくつか機能はありませんが、TeX でもこれは難しく、Typst にも今後追加予定です
ポスターの例
これは reStructuredText(rST) とほとんど同じに見えます
Quarkdown の関数構文(
.somefunction {引数} {引数} 本文)と rST の関数構文(.. somefunction:: {引数} {引数} 本文)は非常によく似ていますMarkdown、Quarkdown、Typst などが多すぎて標準化もされていないように見えるので、結局 HTML+CSS に戻っています
実際に書いたことはありませんが、かなり真剣に検討しています
ほかのフォーマットは複雑で学習曲線があり、文章を書くこと自体を妨げます
XML なら自分でタグを自由に定義できて、パーサーで脚注の自動生成などさまざまな構造を作れます
こういうアプローチを使ったことがある人がいるのか気になります
問題は、あまりに多くの人がその上にシステムを積み重ねて、そもそも「もっと複雑なもの」を解決しようとし始めるときに起きます
もともと単純な用途向けのシステムを自分なりに改善しているつもりで、実際には限界を理解できておらず、かえって不要な繰り返しと混乱を増やしているだけだと思います
機能不足なのではなく、設計目的に合った範囲を超えていることが問題です
たとえ Windows の notepad に書式機能が入ったとしても、本質的には改善ではないと思います
notepad には本来の役割があったからです
Emacs が嫌いでなければ良い選択です
何百ものフレームワークや複雑な文法をそれだけ覚える必要はありません
AI に markdown to html 変換器を生成するよう命じるだけでも十分です
2003 年の The Art of Unix Programming にも、XML を直接編集するのは苦痛なので各種フォーマットやパーサーを新しく作る必要があった、という話が出てきます