Releases: iamgio/quarkdown
Development build
Full Changelog: https://github.com/iamgio/quarkdown/commits/latest
v2.0.1
Added
Execution timeout
The new --timeout flag sets the maximum time, in seconds, allowed for the entire program execution to complete. Defaults to 30 seconds; 0 disables the timeout.
quarkdown c main.qd --pdf --timeout 120
New locales
New locales have been added: Polish, Portuguese, Russian and Ukrainian.
Thanks @emsspree!
Changed
Added link-to-root in new docs projects
When creating a docs project, quarkdown create now links the top-left title to the root document, for easier navigation back to the home page.
Fixed
Fixed trailing \ in Quarkdoc multiline signatures
When a function signature in Quarkdoc was long enough to split across multiple lines, the last parameter line incorrectly displayed a trailing \ before the return type.
Sponsors
Thanks to our sponsors! 🎉
v2.0.0
Added
Permission system
Quarkdown's permission system controls what a document can access during compilation, for increased safety.
If the compiler attempts an action that requires a permission it doesn't have, an error is raised.
You can grant or revoke permissions with the --allow and --deny flags:
quarkdown c main.qd --allow global-read --deny native-contentAvailable permissions: project-read (default), global-read, network, native-content (default), all. See the wiki page for more details.
Line continuation in function calls
A backslash (\) at the end of a line lets you split a function call's arguments across multiple lines.
This improves readability for calls with many parameters:
.container alignment:{center} \
background:{red} \
padding:{1px}
HTML static assets
A public/ directory in your project root lets you ship arbitrary files, such as robots.txt or CNAME, alongside the compiled output. Quarkdown copies the entire contents into the root of the output directory, preserving the original structure, without any processing.
HTML options, sitemap and canonical links
The new .htmloptions function configures HTML-specific generation settings. It accepts a baseurl parameter which, when set:
- Emits a
<link rel="canonical">tag in each page's<head>, pointing to the canonical URL of the root document or subdocument. - Generates a
sitemap.xmlwith absolute URLs for the root and all subdocuments, enabling search engine discovery.
.htmloptions baseurl:{https://quarkdown.com/wiki}
Keybindings
The new .keybinding {keys} function displays a keyboard shortcut as styled key labels.
Modifier keys are platform-aware: on macOS, they automatically display native symbols (e.g. ⌘ instead of Ctrl).
Press .keybinding {Mod+Shift+K} to delete the line.
Linked cross-references for all referenceable types
Cross-references (.ref) to figures, tables, code blocks, math equations, and custom numbered blocks are now rendered as clickable links that navigate to the referenced element. Previously, only heading references were linked.
Root path symbol (@) in links and images
When compiling to HTML, the @ symbol at the start of a URL resolves to the root of the output, where the main HTML file is located. This makes it easy to reference shared assets from any subdocument, particularly useful in combination with the new public/ directory.
[Home](@)
In the previous example, @/assets/logo.png resolves to ./assets/logo.png, which is where public/assets/logo.png is copied from the source to the output.
This @ symbol is internally called media passthrough prefix, as it prevents the media storage system from registering the path as a media reference, and instead treats it as a passthrough to be copied verbatim.
.image primitive function
The new .image function creates images with fine-grained control over their properties, including media storage opt-out. The mediastorage:{no} parameter lets an image reference a fixed relative path, useful in combination with the new public/ directory for shared assets.
.image {photo.jpg} label:{A photo} title:{A caption} width:{200px} mediastorage:{no}
Changed
Changed default output directory to ./quarkdown-output (breaking change)
The default output directory (--out) was changed from ./output to ./quarkdown-output to avoid conflicts and ambiguity. If you were relying on the old default, please update your workflow accordingly or compile with --out ./output explicitly.
Fully offline HTML output
HTML documents now render entirely offline. Assets such as fonts, opt-in libraries and code highlighting themes, are now bundled in the Quarkdown installation and copied to each generated document. Previously, the output relied on CDNs and Google Fonts, which meant that opening a document without an internet connection could lead to broken styling and missing features.
With this change, output directory size is larger, but it comes with more predictable rendering and significantly faster page loads. First-time compilations may take slightly longer due to the additional copying step, but subsequent compilation times should be unaffected thanks to checksum validation.
As before, opt-in libraries, such as Mermaid and KaTeX, are still only included if used in the document, so they don't affect performance or output size if not needed.
Note
Due to the excessive file size, Chinese-specific fonts (loaded from .doclang {zh}) are still loaded remotely.
Note
User-picked fonts from Google Fonts are still loaded remotely.
Parallel rendering
Rendering now runs in parallel across sibling elements, improving performance on large documents.
Static preview output file name (breaking change)
When launching with --preview (without --out-name), the output directory name no longer matches .docname, because its dynamic nature may easily break the preview. Instead, it's now preview-<mainfile>-<hash>.
In order to get the .docname-based output name, consider compiling without --preview.
Lightweight media storage IO
IO over the media storage system is now more lightweight and secure, as media files are now copied by reference rather than by content. Each media export now also comes with a checksum that's validated on subsequent exports to avoid unnecessary copying.
Renamed Injection stdlib module to Html
The Injection module, which contains functions related to raw HTML injection, was renamed to Html.
This change breaks previous references to the documentation of the module and its functions.
Fixed
Fixed live preview flashing with dark themes
Fixed an issue that caused live preview to display white flashes when using dark color themes, during the crossfade transition.
The transition background now matches the target's background color.
Fixed broken wiki links in Quarkdoc
Wiki links at /docs now correctly point to the new wiki.
Sponsors
Thanks to our sponsors! 🎉
v1.15.1
Changed
Subdocument link to nonexistent file now produces a visual error
A subdocument link pointing to a nonexistent file now produces a clear visual error in the output document, rather than silently rendering [???].
Reduced code block font size on small screens
Code blocks in plain and docs documents now use a smaller font size when viewed on small screens, improving readability on mobile devices.
Plain documents are start-aligned on small screens
Text alignment in plain documents switches from justified to start-aligned on small screens.
Reduced caption font size on small screens
Captions for figures and tables in plain and docs documents now use a smaller font size on small screens.
Upgraded to Reveal.js 6
Upgraded Reveal.js, the library powering slides documents, to v6.0.0.
No breaking changes are expected in the rendered output.
Fixed
Split paragraphs in paged documents now justify the last line correctly
When a paragraph is auto-split across a page break in a paged document, the last line of the first part is now correctly justified, rather than start-aligned.
Thanks @OverSamu!
Fixed live preview not updating when an anchor is present
Fixed an issue that caused live preview to skip updates when navigating to an anchor link of the same document, e.g. from the navigation sidebar.
Thanks @OverSamu!
Fixed .filetree's 'ellipsis' text color
Ellipsis (...) items in file trees now display the correct color.
Thanks @cyphercodes!
Fixed captions not following global line spacing
Captions now follow the global configuration for line spacing and letter spacing.
Fixed Quarkdoc Wiki page broken links if they contain anchors
The @wiki documentation tag now correctly preserves # anchor separators in wiki URLs.
Sponsors
Thanks to our sponsors! 🎉
v1.15.0
Added
CSL bibliography styles (breaking change)
Quarkdown's internal bibliography management is now powered by CSL (Citation Style Language).
-
A curated selection of citation styles from the CSL Style Repository is now supported. The
styleparameter now accepts a CSL style identifier (e.g.ieee,apa,chicago-author-date,nature). The default style is nowieee.Breaking change:
plainandieeetrstyles do not exist anymore, and have been replaced byieee. -
Along with BibTeX (
.bib) files, the following file formats are now accepted:- CSL JSON (
.json) - YAML (
.yaml/.yml) - EndNote (
.enl) - RIS (
.ris)
- CSL JSON (
-
Rendered bibliography entries are now localized to the document locale, set via
.doclang.
Multi-key citations
.cite now accepts a comma-separated list of keys (e.g. .cite {einstein, hawking}) to produce a single combined citation label, whose format depends on the active citation style (e.g. [1], [2] for IEEE, (Einstein, 1905; Hawking, 1988) for APA).
Formatted captions
Captions for all supported elements now accept inline formatting (including inline function calls), rather than plain text.

Scoped page formatting
.pageformat now supports scoping formats to specific pages in paged documents via two combinable parameters:
side(leftorright): restricts formatting to recto or verso pages, enabling mirrored margins and other asymmetric layouts.pages(e.g.2..5): restricts formatting to an inclusive range of page indices.
.pageformat size:{A4}
.pageformat side:{left} margin:{2cm 3cm 2cm 1cm}
.pageformat side:{right} margin:{2cm 1cm 2cm 3cm}.pageformat pages:{1..3} borderbottom:{4px}
New syntax: Tight function calls
Inline function calls can now be wrapped in curly braces to delimit them from surrounding content, without relying on whitespace.
abc{.uppercase {def}}ghi
.heading primitive function
The new .heading function creates headings with granular control over their behavior, unlike standard Markdown headings (#, ##, ...).
It allows explicit control over numbering (numbered), table of contents indexing (indexed), page breaks (breakpage), depth, and reference ID (ref).
.pagebreak primitive function
The new .pagebreak function provides an explicit way to insert a page break as an alternative to the <<< syntax.
File tree
The new .filetree function renders a visual file tree from a Markdown list.
.filetree
- src
- main.ts
- ...
- README.mdBold entries (**name**) are highlighted with a distinct background color, useful for drawing attention to specific items.
.filetree
- src
- **main.ts**
- utils.ts
- README.md
Better heading configuration for table of contents and bibliography
Both .tableofcontents and .bibliography now accept the following optional parameters to control the heading that precedes them:
breakpage: controls whether the heading triggers an automatic page break.headingdepth: the depth of the heading (1-6).numberheading: controls whether the heading is numbered in the document hierarchy.indexheading: when enabled, the heading is included in the document's own table of contents.
Subscript and superscript text
The .text function now accepts a script parameter with sub and sup values for subscript and superscript text.
Changed
Removed includeunnumbered parameter from .tableofcontents (breaking change)
The includeunnumbered parameter has been removed, in favor of the more granular heading configuration previously mentioned.
Now all indexable headings are included in the ToC by default, regardless of their numbering.
.container's margin now suppresses children's margins
When an explicit margin is applied to a .container, it now suppresses the margins of its direct children, for a more intuitive and flexible layout configuration.
.fullspan now relies on .container
.fullspan, used to create a block spanning over multiple columns in a multi-column layout, is now shorthand for .container fullspan:{yes}.
Fixed
Stabilized multi-column layout
The multi-column layout via .pageformat columns:{N} is no longer experimental, and now works reliably across all document types.
Added call stack limit
Infinite recursion in function calls is now detected and reported as a clear error.
Fixed default browser not opening on Linux (Wayland and XDG environments)
On Linux systems where the Java AWT Desktop API does not support the BROWSE action (e.g., Wayland), --browser default now falls back to xdg-open automatically.
Additionally, --browser xdg is now a supported named choice for the --browser CLI option.
Thanks @szy1840!
Fixed scroll position not fully restored during live preview on long paged documents
When editing long paged documents with live preview, the scroll position could sometimes be restored only partially because of long paged.js load times. The swap now reliably waits for the content to be fully loaded.
Fixed Mermaid diagrams preventing page breaks
Fixed an issue that caused Mermaid diagrams in paged documents to cause subsequent content to overflow instead of being pushed to the next page.
Fixed tree traversal not reaching non-body nodes
Fixed an issue that caused tree traversal-dependent features, such as cross-references, to not work in titles of .box and .collapse, and in block quote attributions.
Improved lexer performance
The lexer has been optimized to reduce regex builds to a minimum, resulting in significantly improved performance for large documents.
Sponsors
Thanks to our sponsors! 🎉
v1.14.1
Added
Escaped characters in numbering formats
A backslash (\) in a numbering format string now escapes the next character, treating it as a fixed symbol. For example, \1 produces a literal 1 instead of a decimal counter.
Fixed
Fixed live preview sometimes timing out on Windows
Fixed an IPv6-related issue that caused connections to Quarkdown's server to time out on Windows. Please also update to the latest version of the VS Code extension to v1.1.2 or later.
Fixed block function call incorrectly matching lines with trailing content
Fixed an issue that caused a line like .sum {1} {2} .sum {3} {4} to be incorrectly lexed as two block function calls rather than a single paragraph with two inline function calls.
Changed
Improved lexer performance
The lexer no longer restarts its regex search from scratch when a function call advances the scan position, resulting in slightly improved performance, especially for documents with many function calls.
Sponsors
Shout out to our sponsors! 🎉
v1.14.0
This version is the biggest release to date, with a large number of new features and improvements, and a new official wiki, written in Quarkdown, that fully replaces the GitHub wiki for a better experience.
Going forward, next minor releases will be smaller and more frequent.
Thank you for using Quarkdown!
Added
docs document type
docs is the fourth document type available in Quarkdown, alongside plain, paged and slides. It is designed for technical documentation, wikis and knowledge bases.
It derives from plain, and adds a customizable navigation sidebar, a ToC sidebar, a header, accurate client-side search, and next/previous page navigation buttons.
You can see it in action in the new official wiki! To get started with a new docs document, you can rely on quarkdown create as usual.
New themes: Galactic (color) and Hyperlegible (layout)
Inspired by Astro, this new theme combination is the one used in the new wiki for improved readability and modern look.
GitHub-style alerts
GitHub's alert syntax is now supported, making it easier to migrate from other tools:
> [!NOTE]
> This is a noteNote that Quarkdown's original syntax is still supported and recommended, especially for English documents:
> Note: This is a note
Subdocument links now allow anchors
Links to Quarkdown subdocuments now support anchors, to link to specific sections:
[Page](page.qd#section)
Customizable page numbering format
The .formatpagenumber {format} function overrides the page numbering format from the current page onward. It accepts the same format specifiers as .numbering, and applies to both page counters and table of contents.
.pagemargin {topcenter}
.currentpage
# First page
.formatpagenumber {i}
# Second page
# Third pageThanks @OverSamu!
Horizontal/vertical gap customization of .grid
The .grid function now accepts hgap and vgap parameters to customize the horizontal and vertical gaps between grid items. gap still works as a shorthand for both.
Thanks @OverSamu!
none is now converted to null
When invoking a native function from the stdlib, none is now supported by nullable parameters, and converted to null.
Before:
.function {rectangle}
width height background?:
.if {.background::isnone}
.container width:{.width} height:{.height}
.ifnot {.background::isnone}
.container width:{.width} height:{.height} background:{.background}After:
.function {rectangle}
width height background?:
.container width:{.width} height:{.height} background:{.background}
Icons
The new .icon {name} function relies on Bootstrap Icons to display pixel-perfect icons in your documents.
Quarkdown is on .icon {github}
New output target: plain text
Quarkdown can now render to plain text (.txt) via --render plaintext.
This has no particular use case. It was needed to implement the docs search feature in the first place.
Get path to root directory
The new .pathtoroot {granularity?} function returns the relative path from the current source file to the parent directory of:
- the root document, if
granularityisproject(default) - the subdocument, if
granularityissubdocument
Changed
.css doesn't require !important anymore
The .css function now applies !important automatically at the end of each rule.
Revised navigation sidebar
The navigation sidebar, visible in plain and paged documents on web view, is now easier to navigate, with all entries visible at once, and more accessible for screen readers.
Additionally, its generation is now performed at compile time rather than runtime, providing major performance improvements for large documents.
Flexible naming strategy for subdocument output files
--no-subdoc-collisions was removed in favor of --subdoc-naming <strategy>, which is a flexible way to choose how subdocument output files are named:
file-name(default): each subdocument output file is named after its source filedocument-name: each subdocument output file is named after its.docnamevaluecollision-proof: former--no-subdoc-collisions
Revamped create CLI
The quarkdown create command is now more intuitive, for a smoother onboarding experience.
Libraries now include content
.include {library} now also includes top-level Markdown content from the library, just like .include {file.qd} does for regular files.
Page content border adjustments
Page content border (.pageformat bordercolor) is now supported in plain documents, and refined for slides documents, especially in PDF output.
Improved code diff styling
Code blocks using the diff language now have improved and clearer styling for added and removed lines.
Fixed
Major improvements to live preview
Live preview has undergone major performance improvements and increased reliability, especially in combination with the new VS Code extension update.
Live reloading not being performed when editing subdocuments has also been fixed.
Fixed subdocument resolution from included files
Linking to subdocuments from files included via .include from a different directory now correctly resolves the subdocument path.
Fixed unresolved reference of local variables in body arguments
The following snippet used to cause an unresolved reference error for y:
.function {a}
x:
.x
.function {b}
y:
.a
.y
.b {hello}
Fixed paragraph spacing with floating element
Fixed an issue that caused no spacing to be present between two paragraphs if a floating element was in-between, via .float.
Fixed ToC with no level 1 headings
Table of contents are no longer empty if no level 1 headings are present, or if all are decorative.
Fixed line spacing in table cells
Table cells now correctly apply the same line spacing as paragraphs and lists.
Sponsors
Shout out to our sponsors! 🎉
v1.13.0
🎄 This release focuses on Quarkdown as a reliable static site generator. The HTML output is now ready to be deployed straight out of the compiler, with enhanced SEO, polished responsiveness, and better support for multi-page (subdocuments) projects.
Check out iamgio.eu, my new personal website, for an example of a website fully powered by Quarkdown, with even a blog!
The sources are available here, and its deployment on GitHub Pages uses the brand-new Quarkdown GitHub Action.
Main features and changes
Enhanced metadata
Quarkdown now takes better care of HTML metadata for an improved SEO, to let your websites rank higher in search engines.
Additionally, new metadata functions are introduced: .docdescription and .dockeywords.
.docname {Quarkdown}
.docdescription {A Markdown-based typesetting system}
.dockeywords
- markdown
- typesetting
- papers
Improved viewport for plain documents
Plain documents are now more beautifully responsive than ever, for portable websites.
- On small (mobile) screens, the navigation sidebar is hidden, spacing is refined, font size is slightly increased, and footnotes appear at the bottom.
- On very large screens, the maximum width of the content area is capped to improve readability.
Scoped page margins
When used in paged and slides documents, the .pagemargin function now takes effect only from the page where it's declared onward. This allows for different page margin settings in different parts of the document.
If you used to call the function at the start of the document to set global margins, this behavior is unchanged.
.pagemargin {topcenter}
On all pages
# First page
# Second page
.pagemargin {topleft}
From second page
# Third page
Thanks @sanoakr!
Page number resets
The new .resetpagenumber {from?} function allows overwriting the current page number at any point in a paged or slides document.
These changes are reflected in .currentpage and page numbers in the table of contents.
.pagemargin {topcenter}
.currentpage
# First page
# Second page
.resetpagenumber from:{20}
# Third page
Thanks @sanoakr!
Page numbers in slides' table of contents
Along with paged documents, table of contents in slides documents now also shows page numbers for each entry.
List files in a directory
The new .listfiles function returns a collection of the files in a directory on the file system. It's unordered by default, or can be sorted by name or date.
The output can be iterated upon, or supplied to other functions. For example, it's possible to perform automatic bulk inclusions:
.includeall {.listfiles {somedirectory} sortby:{name}}
Subdocument function
A new .subdocument {path} {label?} function has been added as a more flexible alternative to the [Label](path.qd) syntax to register subdocuments to the knowledge graph and link to them.
As opposed to the static link syntax, the function accepts dynamic paths. Thus, it's possible to use .listfiles to automatically link all documents in a directory.
Great for blogs!
.foreach {.listfiles {somedirectory}}
path:
.path::subdocument label:{.path::filename extension:{no}}
The example also shows the new .filename {path} function, which allows retrieving a file name from its path.
Control over .include's sandbox
The main difference between inclusion and subdocuments is how the included document is sandboxed:
by default, .include lets all changes propagate to the parent document, while subdocuments isolate them.
Now, .include accepts an optional sandbox parameter to control this behavior. In ascending order of isolation:
share(default): all changes propagate to the parent document.scope: likeshare, but function and variable declarations do not propagate.subdocument: changes, including metadata and layout options, do not propagate.
Rich content in CSV
mode:{markdown} can now be used in .csv to parse cell content as inline Quarkdown source code. This allows for formatting, rich content, and even function calls inside CSV.
Alphanumeric sorting
String sorting operations performed in the stdlib now prefer alphanumeric comparisons. This applies to .tablesort and .listfiles.
- Before:
abc120<abc30 - Now:
abc120>abc30
This is more natural and correct. .tablesort can now be used for real-world leaderboards!
Changed text replacement for em-dashes
Up to now, a dash (-) surrounded by spaces was replaced by an em-dash (—). Now, it produces an en-dash (–) instead.
To get an em-dash, use two dashes (--), not necessarily surrounded by spaces.
Sidebar now ignores decorative headings
Decorative headings (#! Title) are now ignored in the navigation sidebar.
Document modifications in a subdocument do not affect the parent document
When importing a subdocument, modifications to document metadata, layout, or other properties no longer propagate to the parent document.
This allows, for instance, to call .docname in a subdocument to set its own title, which will be shown in the browser tab when viewing that subdocument.
Unset properties will still fall back to the parent document's values.
Working directory now correctly updates on .include
When including documents from different directories via .include, the working directory is now updated accordingly. This allows relative paths to work as expected inside included documents.
Consider the tree:
main.qd
dir/
| other.qd
| image.png
From main.qd:
.include {dir/other.qd}
Previously, in order to access image.png from other.qd:

Now, with the updated working directory:

Changes to subdocument HTML export
When exporting multi-document projects as HTML:
- Subdocuments are now directories rather than HTML files, for better URLs (
example.com/subdocrather thanexample.com/subdoc.html). - Each subdocument now has its own media storage (
mediasubdirectory), rather than having a shared one for all subdocuments.
What's Changed
- feat(postrenderer): export authors to html metadata by @iamgio in #248
- feat(postrenderer): always set viewport meta by @iamgio in #249
- feat(postrenderer): add document description metadata by @iamgio in #250
- feat(project-creator): add document description by @iamgio in #251
- feat: add .dockeywords metadata function by @iamgio in #252
- feat(project-creator): add keywords metadata by @iamgio in #253
- fix(theme): improve mobile responsiveness of plain doc margins by @iamgio in #255
- feat(stdlib): add
.listfilesby @iamgio in #260 - feat(stdlib): add
.subdocumentby @iamgio in #261 - feat(stdlib): add alphanumeric sorting by @iamgio in #262
- feat!: let
.includechange the working directory by @iamgio in #266 - fix(parser): trim initial spaces from fenced code block by @iamgio in #274
- feat(stdlib): allow parsing inline Markdown in csv by @iamgio in #277
- feat: let subdocuments edit their own document metadata by @iamgio in #278
- feat!: add en-dash text replacement, change em-dash by @iamgio in #279
- feat: Page number reset support with TOC integration by @sanoakr in #280
- feat: Scoped page margins with reset support by @sanoakr in #281
- feat: change subdocument HTML generation by @iamgio in #282
- feat(stdlib): add
sandboxparameter to.includeby @iamgio in #283
Full Changelog: v1.12.1...v1.13.0
Sponsors
Shout out to our sponsors! 🎉
<a href="https://f...
v1.12.1
This version fixes two issues related to table parsing:
- Escaping the cell separator (
\|) now correctly renders|only, even inside inline code. ||is now parsed as a valid cell.
What's Changed
- fix(parser): fix empty table header
||being skipped by @iamgio in #245 - fix(parser): unescape escaped table cell separators by @iamgio in #247
Full Changelog: v1.12.0...v1.12.1
Sponsors
Shout out to our sponsors! 🎉
v1.12.0
Important
If you're using the VS Code extension, please update it to v1.0.4. The preview will fail to launch on previous versions.
Author's message
I, @iamgio, am currently relocating to a new country. I won't be able to dedicate much time to Quarkdown development for the next few weeks, so little patches will be most common.
Thank you for your understanding and support! Active development will resume as soon as I am fully settled.
Main features and changes
This small release comes with some quality-of-life improvements, especially for the CLI.
Pipe mode (--pipe)
The HTML output is no longer printed to stdout by default, and it's now replaced by a short message:
-
For normal compilation:
Success @ <output path> -
For live preview:
Success in <elapsed time>
A new pipe mode has been introduced, which can be enabled with the --pipe option. In this mode, the HTML output is printed to stdout as before, files are not generated, and all other logs are suppressed.
This mode is useful for piping the output to other commands or files. For example:
quarkdown c input.qd --pipe > output.html
Enhanced error reporting
Error boxes now show a snippet of the affected source code.
Runtime errors, such as unresolved files in .read, now show more detailed information.
Improved browser selection
The --browser (-b) option of quarkdown c and quarkdown start has been improved to support more flexible browser selection:
-
Lookup by name is no longer fixed to a predefined set. You can now specify any browser whose path is present in the environment variable
BROWSER_<NAME>(e.g.BROWSER_OPERAfor-b opera).
The previous predefined names are still supported. -
You can now also specify the full path to the browser executable (e.g.
-b /usr/bin/firefox).
Note
Browser processes are launched as <path> <url>.
It must be the user's responsibility to ensure the genuinity of the executable.
Unnumbered headings in table of contents
The .tableofcontents function now accepts an optional includeunnumbered boolean parameter.
When set to true, decorative headings (#! Heading) are also included in the generated table of contents.
Thanks @sanoakr!
What's Changed
- [dev] chore(deps): bump dependencies by @iamgio in #235
- Add option to include unnumbered sections in table of contents by @sanoakr in #232
- feat(cli): enhance browser selection by @iamgio in #236
- [dev] refactor: make pipeline stages composable by @iamgio in #238
- feat(cli): add
--pipeoption by @iamgio in #239 - feat: enhance errors by @iamgio in #240
Full Changelog: v1.11.0...v1.12.0
Sponsors
Shout out to our new sponsor: @vitto4 🎉

