🪐 Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.
  • Kotlin 79.7%
  • TypeScript 11.4%
  • SCSS 4.7%
  • HTML 3.1%
  • Java 0.5%
  • Other 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Giorgio Garofalo ce8f656040
feat(pm): add templates (#739)
- [x] I have read the [contributing guidelines](https://github.com/iamgio/quarkdown/blob/main/CONTRIBUTING.md).
- [x] I have tested the changes locally.
- [ ] An issue for this change exists, and it was discussed with maintainers. This is required for new features and non-trivial changes. If present, append `Closes #ISSUE_NUMBER` at the end of this PR description.
- [x] (Optional) I have added necessary documentation to [`docs`](https://github.com/iamgio/quarkdown/tree/main/docs) and [`CHANGELOG.md`](https://github.com/iamgio/quarkdown/blob/main/CHANGELOG.md)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Create projects from packages that provide templates using `quarkdown create --template`.
  * Templates can specify a document type, starting content, and additional files. Their document type and theme settings are used when generating a project unless overridden.
  * The CLI supports `docs` as a project type and can prompt for a document type when needed.
  * Project creation supports shared setup includes and optional page counters.
* **Documentation**
  * Added guidance for creating projects from templates and declaring template packages.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-15 00:04:09 -07:00
.github fix(ci): fix failing homebrew/scoop bump 2026-09-21 20:26:31 -07:00
.run test(e2e): add split-code-after-table test 2026-09-13 17:39:57 -07:00
build-logic refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
demo feat: remove @lambda from inline lambdas 2026-07-11 08:48:36 -07:00
docs feat(pm): add templates 2026-10-14 23:49:30 -07:00
gradle feat(pm): add fetcher and parser 2026-10-10 18:42:12 -07:00
mock feat(theme): add 'focus' theme 2026-09-07 21:34:29 +00:00
quarkdown-cli feat(pm): add templates 2026-10-14 23:49:30 -07:00
quarkdown-core feat(pm): add templates 2026-10-14 23:49:30 -07:00
quarkdown-core-test-fixtures refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-html fix(html): repeat table headers for element continuations 2026-10-07 09:20:45 -10:00
quarkdown-html-pdf refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-install-layout-navigator refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-interaction refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-libs feat(libs): add latex-siunitx macro library 2026-10-02 23:03:18 -07:00
quarkdown-locale-table-processor refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-lsp perf(lexer): migrate from regex to scanner tokenization 2026-09-28 22:52:58 -07:00
quarkdown-markdown refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-native-library-annotations refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-native-library-processor refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-package-manager feat(pm): add templates 2026-10-14 23:49:30 -07:00
quarkdown-plaintext refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-quarkdoc refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
quarkdown-quarkdoc-reader refactor: migrate lsp to kmp 2026-09-25 21:24:43 -07:00
quarkdown-server fix(server): run pdf export on next free port when busy 2026-09-24 19:32:17 -07:00
quarkdown-stdlib fix(stdlib): escape } in CSS property lookahead for Android ICU 2026-10-13 18:21:10 +02:00
quarkdown-template feat(pm): add templates 2026-10-14 23:49:30 -07:00
quarkdown-test feat(pm): add .include linking 2026-10-11 01:52:11 -07:00
scripts build: bundle minimal jvm 2026-05-19 20:53:30 -07:00
skills/quarkdown feat(pdf): drop node+puppeteer deps 2026-09-04 19:13:13 -07:00
.dockerignore feat(pdf): drop node+puppeteer deps 2026-09-04 19:13:13 -07:00
.editorconfig chore(nlp): disable ktlint on all ksp generated files 2026-07-02 04:45:47 -07:00
.gitattributes perf(lexer): migrate from regex to scanner tokenization 2026-09-28 22:52:58 -07:00
.gitignore build(deps): bump kotlin, move to quarkdown-lab's better-parse 2026-09-18 23:57:18 -07:00
build.gradle.kts refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
CHANGELOG.md feat(pm): add templates 2026-10-14 23:49:30 -07:00
CLAUDE.md refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
CONTRIBUTING.md docs(contributing): add AI-assisted contribution guidelines 2026-10-08 18:27:01 -07:00
Dockerfile feat(pdf): drop node+puppeteer deps 2026-09-04 19:13:13 -07:00
gradle.properties fix(build): fix executable inherited permissions from gradle 9 2026-09-13 22:15:25 -07:00
gradlew build: upgrade gradle to 9.7.1 2026-09-11 05:28:29 +00:00
gradlew.bat build: upgrade gradle to 9.7.1 2026-09-11 05:28:29 +00:00
LICENSE Update license 2025-08-27 13:21:50 +02:00
README.md refactor!: migrate to kotlin multiplatform 2026-09-23 19:52:10 -07:00
settings.gradle.kts feat(pm): set up package model 2026-10-10 10:11:14 -07:00
SPONSORS.md chore: update sponsors 2026-07-26 11:13:56 -07:00
version.txt chore: release v2.6.4 2026-10-09 01:40:42 +00:00

Quarkdown banner
Wiki Docs Release Visual Studio Code Extension Version FMT: Ktlint CodeFactor

iamgio%2Fquarkdown | Trendshift iamgio%2Fquarkdown | Trendshift
Quarkdown - Markdown with superpowers: from ideas to stunning documents. | Product Hunt

Releases
Latest   |   Stable 


Table of contents

  1. About
  2. Demo
  3. Editor extensions
  4. Targets
  5. Comparison
  6. Getting started
    1. Installation
    2. Quickstart
    3. Creating a project
    4. Compiling
  7. Mock document
  8. Contributing
  9. Sponsors
  10. Concept
  11. License

 

About

Quarkdown is a modern Markdown-based typesetting system designed for versatility. It allows a single project to compile seamlessly into a print-ready book, academic paper, knowledge base, or interactive presentation. All through an incredibly powerful Turing-complete extension of Markdown, ensuring your ideas flow automatically into paper.

 

Paper demo

Original credits: Attention Is All You Need


Born as an extension of CommonMark and GFM, the Quarkdown Flavor brings functions to Markdown, along with many other syntax extensions.


This is a function call:

.somefunction {arg1} {arg2}
    Body argument

Possibilities are unlimited thanks to an ever-expanding standard library, which offers layout builders, I/O, math, conditional statements and loops.

Not enough? You can still define your own functions and variables, all within Markdown. You can even create awesome libraries for everyone to use.


.function {greet}
    to from:
    **Hello, .to** from .from!

.greet {world} from:{iamgio}

Result: Hello, world from iamgio!


This out-of-the-box scripting support opens doors to complex and dynamic content that would be otherwise impossible to achieve with vanilla Markdown.

Combined with live preview, ⚡ fast compilation speed and great editor support, Quarkdown simply gets the work done, whether it's an academic paper, book, knowledge base or interactive presentation.

 

Live preview

 

In a nutshell, Quarkdown is...

  • Familiar: built on the well-known Markdown syntax, for a flat learning curve
  • Elegant: produces output that matches the quality of industry-leading tools
  • Agent-friendly: comes with a built-in skill for idiomatic fluency of your coding agents (read the eval)
  • Customizable: full control over document layout, aesthetics, and properties
  • Secure by default: a restrictive permission system limits access to system resources
  • Versatile: a single source compiles to multiple targets
  • Reactive: low-latency live previews for rapid iteration. The official wiki (100+ subdocuments) compiles in ~2 seconds
  • Reusable: repeated content can be turned into one-line function calls
  • Easily deployable: set a CD workflow up in under 3 minutes (example)

 


Looking for something?

Check out the wiki to get started and learn more about the language and its features!


 

As simple as you expect...

Paper code demo

Inspired by: X-ray flashes from a nearby supermassive black hole accelerate mysteriously

 

...as complex as you need.

Chart code demo

Editor extensions

 

Targets

  • HTML

    • Plain
      Continuous flow like Notion/Obsidian, perfect for static websites and knowledge management - check out the author's personal website.

    • Paged via paged.js
      Perfect for papers, articles and books - check out the demo document.

    • Slides via reveal.js
      Perfect for interactive presentations.

    • Docs
      Perfect for wikis, technical documentation and large knowledge bases - check out Quarkdown's wiki.

  • PDF

    • All document types and features supported by HTML are also supported when exporting to PDF.
  • Markdown

    • GFM export.
  • Plain text

The desired document type can be set by calling the .doctype function within the source itself:

  • .doctype {plain} (default)
  • .doctype {paged}
  • .doctype {slides}
  • .doctype {docs}

 

Comparison

Quarkdown LaTeX Typst AsciiDoc MDX
Concise and readable ✅ ❌ ✅ ✅ ✅
Full document control1 ✅ ✅ ✅ ❌ ❌
Scripting ✅ Partial ✅ ❌ ✅
Book/article export ✅ ✅ ✅ ✅ Third-party
Presentation export ✅ ✅ ✅ ✅ Third-party
Static site export ✅ ❌ Experimental ✅ ✅
Docs/wiki export ✅ ❌ ❌ ✅ ✅
Learning curve 🟢 🔴 🟠 🟢 🟢
Targets HTML, PDF, MD, TXT PDF, PostScript HTML, PDF HTML, PDF, ePub HTML
LaTeX Quarkdown
\tableofcontents

\section{Section}

\subsection{Subsection}

\begin{enumerate}
    \item \textbf{First} item
    \item \textbf{Second} item
\end{itemize}

\begin{center}
    This text is \textit{centered}.
\end{center}

\begin{figure}[!h]
    \centering
    \begin{subfigure}[b]
        \includegraphics[width=0.3\linewidth]{img1.png}
    \end{subfigure}
    \begin{subfigure}[b]
        \includegraphics[width=0.3\linewidth]{img2.png}
    \end{subfigure}
    \begin{subfigure}[b]
        \includegraphics[width=0.3\linewidth]{img3.png}
    \end{subfigure}
\end{figure}
.tableofcontents

# Section

## Subsection

1. **First** item
2. **Second** item

.center
    This text is _centered_.

.row alignment:{spacebetween}
    ![Image 1](img1.png)

    ![Image 2](img2.png)
    
    ![Image 3](img3.png)

 

Getting started

Installation

Install script (Linux/macOS)

curl -fsSL https://raw.githubusercontent.com/quarkdown-labs/get-quarkdown/refs/heads/main/install.sh | sudo env "PATH=$PATH" bash

Root privileges let the script install Quarkdown into /opt/quarkdown and its wrapper script into /usr/local/bin/quarkdown.
The browser required for PDF export is installed automatically.

For more installation options, check out get-quarkdown.

Homebrew (Linux/macOS)

brew install quarkdown-labs/quarkdown/quarkdown

Install script (Windows)

irm https://raw.githubusercontent.com/quarkdown-labs/get-quarkdown/refs/heads/main/install.ps1 | iex

Scoop (Windows)

scoop bucket add quarkdown https://github.com/quarkdown-labs/scoop-quarkdown; scoop install quarkdown

GitHub Actions

See setup-quarkdown to easily integrate Quarkdown into your GitHub Actions workflows.

Manual installation

Instructions for manual installation

Download quarkdown.zip from the latest stable release and unzip it, or build it with gradlew installDist.

Optionally, adding <install_dir>/bin to your PATH allows you easier access Quarkdown.

Requirements:

  • (Only for PDF export) A Chromium-family browser, such as chrome-headless-shell. See PDF export for details.

 

Quickstart

New user? You'll find everything you need in the Quickstart guide to bring your first document to life!

 

Creating a project

quarkdown create [directory] will launch the prompt-based project wizard, making it quicker than ever to set up a new Quarkdown project, with all metadata and initial content already present.

 

Compiling

Running quarkdown c file.qd will compile the given file and save the output to file.

If the project is composed by multiple source files, the target file must be the root one, i.e. the one that includes the other files.

If you would like to familiarize yourself with Quarkdown instead, quarkdown repl lets you play with an interactive REPL mode.

Options

The most commonly used options are:

  • -p or --preview: enables automatic content reloading after compiling.

  • -w or --watch: recompiles the source every time a file from the source directory is changed.

Tip

Combine -p -w to achieve live preview!

  • --pdf: produces a PDF file. Learn more in the wiki's PDF export page.

For the full list of options, check out the CLI options wiki page.

 


 

Mock document

 

Mock document demo

Mock, written in Quarkdown, is a comprehensive collection of visual elements offered by the language, making it ideal for exploring and understanding its key features — all while playing and experimenting hands-on with a concrete outcome in the form of pages or slides.

  • The document's source files are available in the mock directory, and can be compiled via quarkdown c mock/main.qd -p.
  • The PDF artifacts generated for all possible theme combinations are available and can be viewed in the generated repo.

Contributing

Contributions are welcome! Please check CONTRIBUTING.md to know how contribute via issues or pull requests.

Sponsors

A special thanks to all the sponsors who supported this project!

Falconer

RayOffiah

vitto4 aaditkamat

LunaBluee  dcopia Pallandos imogenxingren serkonda7

Concept

The logo resembles the original Markdown icon, with focus on Quarkdown's completeness, richness of features and customization options, emphasized by the revolving arrow all around the sphere.

Quarkdown icon

What could be mistaken for a planet is actually a quark or, more specifically, a down quark, an elementary particle that is a major constituent of matter: they give life to every complex structure we know of, while also being one of the lightest objects in existence.

This is, indeed, the concept Quarkdown is built upon.

License

By default, Quarkdown and its modules are licensed under GNU GPLv3, except for modules that include their own LICENSE file: the CLI (quarkdown-cli) and Language Server (quarkdown-lsp) modules and binaries are licensed under GNU AGPLv3.

Footnotes


  1. The ability to customize the properties of the document and of its output artifact through the language itself. ↩︎