Skip to content

The Markdown Help Template System

The Markdown help template system supports authoring driver help with Markdown and the Mustache template language, and generating the documentation in several output formats — including a complete web site — from a single set of templates. It is the recommended way to author driver help.

A help template is a folder of Markdown files that use the Mustache template language to insert values from the driver:

  • Markdown templates are concise to read, write, and maintain, and raw HTML may be used inline wherever a topic requires custom layout.
  • Mustache ({{ }}) provides variables, sections, loops, conditionals, and partials.
  • A single manifest.yaml defines the template metadata and the table of contents.

From one set of templates, a help build can emit any combination of six output formats:

FormatWhat it is
CHM (Microsoft Help 1)The classic compiled HTML Help format.
Microsoft Help Viewer (MSHC)Packaged help for the Visual Studio Help Viewer.
MarkdownClean GitHub-Flavored Markdown files for hosting on GitHub, GitLab, or any Markdown-native platform.
Semantic HTMLChrome-free HTML with stable class names, for integration into another web site or toolchain.
MadCap Flare HTMLContent prepared for import into a MadCap Flare project.
Starlight website (Astro Starlight)A complete, ready-to-deploy documentation site with search, responsive layout, dark/light mode, and syntax highlighting.

The formats to build are selected in the help project settings. See Output Formats for details.

All three driver flavors are supported: IVI-COM, IVI-C, and IVI.NET.

A Markdown template is a folder containing:

manifest.yaml Template metadata, page header/footer, table of contents, layout map
layouts/ Templates for each API entity (method, property, class, enum, …)
conceptual/ Hand-authored topics (getting started, overviews, etc.)
styles/ CSS for the CHM/Help Viewer output (base.css)
assets/ Custom images and other static files referenced from topics

Layouts for entity types that have custom fields live in their own folder (layouts/method/method.md plus sibling custom-field files like layouts/method/remarks.md); simpler entity types are a single file (layouts/enum/enum.md).