Pandoc Extended Markdown

approved

by errortzy

Render Pandoc extended markdown syntax: fancy lists, definition lists, example lists with cross-references, superscripts, and subscripts.

32 stars3,821 downloadsUpdated 14d agoMIT

Pandoc Extended Markdown

Pandoc Extended Markdown is an Obsidian plugin that makes common Pandoc Markdown extensions readable in Live Preview and Reading mode while preserving the original Markdown source.

It focuses on syntax that is useful while writing notes: fancy lists, definition lists, example lists, fenced divs, custom label lists, superscripts, subscripts, list editing helpers, and an optional sidebar panel for navigating structured list-like content.

Highlights

FeatureExampleWhat it does
Superscript and subscript2^10^, H~2~ORenders Pandoc-style inline super/subscripts.
Fancy listsA., a), iv., #.Renders alphabetic, Roman numeral, and hash auto-numbered lists.
Unordered list markers-, +, *Keeps - as the default round marker, renders + as a square, and renders * as a hollow round marker.
Definition listsTerm followed by : definitionRenders Pandoc definition lists in Live Preview and Reading mode.
Example lists(@label) Example and (@label)Numbers examples and resolves local example references.
Fenced divs::: {.theorem #thm title="Theorem &"}Renders Pandoc fenced divs with optional titles, numbering, and local @id references.
Custom label lists{::P} PremiseAdds custom labels, references, and placeholder numbering.
List editing helpersEnter, Tab, Shift+TabContinues lists, cycles marker styles by depth, and can renumber affected list items.
List panelCommand: Open list panelShows custom labels, examples, definition lists, fenced divs, and footnotes from the active note.

Quick Start

Paste this into a note and switch to Live Preview.

Water is H~2~O, and 2^10^ is 1024.

A.  First point
B.  Second point
    a. Third point
    b. Fourth point

#. Auto-numbering list
#. Auto-numbering list

- Default round unordered marker
	+ Square unordered marker
		* Hollow round unordered marker

Term
:   A definition list item.

(@) This is a numbered example.
(@intro) This is a citable numbered example

{::P} A custom-labeled premise.
{::Q(#step)} A custom label with placeholder numbering.

See example (@intro), premise {::P}, and step {::Q(#step)}.

::: {.theorem #compact title="Theorem &"}
Every compact metric space is complete.
:::

::: theorem &.& #thm2
This is a sub theorem, using shortcut syntax
:::

See @compact and @thm2

Preview:

Rendering preview

Documentation

Start here if you want more than the quick start:

Modes And Settings

  • Live Preview is the main editing surface.
  • Reading mode renders the implemented syntax after Obsidian has produced its HTML.
  • Source mode preserves plain Markdown.
  • Strict Pandoc mode disables custom label lists completely, disables extended fenced div syntax, and applies stricter Pandoc list spacing rules.

The plugin settings let you enable or disable individual syntax families, list marker cycling, auto-renumbering, distinct unordered-list marker rendering, and the sidebar list panel.

Pandoc Export

For exporting from inside Obsidian, consider using Obsidian Enhancing Export, a Pandoc-based export plugin for formats such as Markdown, HTML, docx, and LaTeX.

Obsidian rendering does not automatically change Pandoc CLI output. For plugin-specific export behavior, use the bundled Lua filters:

pandoc input.md --lua-filter=lua_filter/FencedDivExtendedSyntax.lua -o output.docx
pandoc input.md --lua-filter=lua_filter/CustomLabelList.lua -o output.docx

See Pandoc export for details.

Development

npm install
npm run dev
npm run build
npm run lint
npm test

See Development and tests/README.md for repository layout and test guidance.

Requirements

  • Obsidian 1.4.0 or newer.
  • Desktop and mobile are supported.

Support

Report bugs and feature requests in GitHub Issues.

License

MIT. See LICENSE.

Author

Created by Scott Tang.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.