Pandocrafter (formerly Panforge) is a Go-based unified document orchestration system designed to bridge the gap between offline and online static site generation, curriculum vitae generation, distributable single-file e-book generation (based on open HTML5 technologies), literate programming, and scientific and technical publishing.
Functioning as a polyglot command bridge, it synergises the original Pandoc core with sophisticated, distinguished, and high-level Pandoc-based ecosystems, from the dynamic and literate execution of Codebraid to the scientific and technical precision of Quarto, while extending its orchestration capabilities to external development frameworks (such as Angular, Django, Laravel, Vue.js, among others), languages (C#, PHP, Python, among others), and tools (such as Eleventy, Gatsby, Hugo, React, among others). By unifying these distinct instruments with powerful templating engines (Blade, Go Templates, Liquid, Pebble, among others) and* official Pandoc formats and variants (AsciiDoc, Djot, Markdown, Julia Markdown, and R Markdown), Pandocrafter serves as a digital scriptorium where code, prose, and design are built into complex, web and document outputs.
- Static site generation: Converting Markdown structures into static HTML pages for multilingual documentation platforms.
- Multiple content processors: Integrating with Codebraid and Quarto, allowing for the selection of the most suitable processor for technical content.
- Live reload server: Provisioning a local development server via the
pandocrafter servecommand for real-time previewing of changes. - Theming and layout override: Supporting a theming system that allows overriding templates within a local
layoutsdirectory. - Internationalisation (i18n): Facilitating the management of complex, multilingual websites from a single, unified codebase.
- Shortcodes: Enabling the embedding of reusable snippets within Markdown files, processed prior to reaching the Pandoc, Codebraid or Quarto engines.
- SASS or SCSS compilation: Automatically compiling styles into CSS during the build process, inspired by modern web development frameworks.
- Passthrough contents copying: Allowing the direct copy of static assets like images, fonts, and JavaScript without internal processing.
- Post-processing scripts: Offering the flexibility to execute any command-line script after the build, ideal for asset optimisation or deployment.
- Pre-processed filters: Go-written filters compatible with Pandoc, Codebraid and Quarto to enhance document logic without external dependencies.
- Syntax highlighting choice: Disabling default Pandoc highlighting to provide the freedom to select libraries such as Prism.js or Starry Night.
- Sitemap generation: Automatically producing
sitemap.xmlfiles to ensure optimal search engine discoverability.
Pandocrafter employs a multi-engine architecture, allowing the use of various templating languages within the same project:
- Dual-mode templating: Choosing between modern layout engines like Liquid and Pandoc’s native
$variable$syntax. - Go
html/template: INtegrating secure, native Go templating for high-performance rendering. - Liquid: Providing a familiar environment for developers transitioning from Jekyll or Eleventy.
- Nunjucks and Jinja2: Offering a versatile option popular in both JavaScript and Python ecosystems.
- Blade: Using the sophisticated templating engine of the Laravel framework for complex document design.
Expanding the ecosystem to include:
- eRuby
- HAML
- Java Pebble
- Java Thymeleaf
- Mustache
- Pug
- Razor
- Twig
The system provides several integrated filters to handle complex syntax:
- Disabling indented code blocks: Preventing the misinterpretation of raw HTML as code blocks.
- Admonitions: Supporting Codeberg, GitLab, GitHub, MkDocs, and Obsidian-style callouts.
- Wikitext Infobox: Transforming Wikipedia-style biography code into pure HTML.