Pandoc Types Quick Reference

General Notes

  • Most common elements are listed here, but not all.

  • Quarto has some custom node types too: Callout, Tabset, ConditionalBlock, FloatRefTarget

  • The syntax [, arg] indicates an optional argument

  • All types have a t/tag field to access the type as a string (e.g. pandoc.Space().t returns Space)

  • Any type with the attr field also has shortcuts for: identifier, classes, and attributes

  • attr is an Attr object. Create one with pandoc.Attr():

    pandoc.Attr(
      "my-id",                       --identifier
      {"class-one", "class-two"},    --classes
      {key="value", key2="value2"}   --attributes
    )

Document Structure

Type Constructor Fields
Pandoc pandoc.Pandoc(blocks, meta) blocks, meta
Meta pandoc.Meta(table) key-value pairs of document metadata

Block Elements

Paragraphs and Headings

content is an Inlines object (a list of Inline elements)

Type Constructor Fields
Para pandoc.Para(content)
content: Inlines
content
Plain pandoc.Plain(content)
content: Inlines
content
Header pandoc.Header (level, content[, attr]))
content: Inlines
level: integer
level, content, attr

Lists

content is a list of Blocks, or for DefinitionList something complicated.

Type Constructor Fields
BulletList pandoc.BulletList(items)
items: {Blocks, ... }
content
OrderedList pandoc.OrderedList(items[, listAttributes])
items: {Blocks, ... }
content, listAttributes, start, style, delimiter
DefinitionList pandoc.DefinitionList(content)
content: {Inlines, {Blocks, ...}, ...}
content (list of definition pairs)

Code and raw blocks

text is a simple Lua string (not a Str)

Type Constructor Fields
CodeBlock pandoc.CodeBlock(text[, attr])
text: string
text, attr
RawBlock pandoc.RawBlock(format, text)
text: string
format, text

Divs, BlockQuotes, Figures

content is a Blocks object (a list of Block elements)

Type Constructor Fields
Div pandoc.Div(content[, attr])
content: Blocks
content, attr
BlockQuote pandoc.BlockQuote(content)
content: Blocks
content
Figure pandoc.Figure(content[, caption[, attr]])
content: Blocks
content, caption, attr

Other

Type Constructor Fields
Table pandoc.Table(caption, colspecs, head, bodies, foot[, attr]) caption, colspecs, head, bodies, foot, attr
LineBlock pandoc.LineBlock(content)
content: {Inlines, ...}
content

Inline Elements

Whitespace

Takes no arguments, has no fields.

Type Constructor
Space pandoc.Space()
SoftBreak pandoc.SoftBreak()
LineBreak pandoc.LineBreak()

Basic Elements

text is a simple Lua string (not a Str)

Type Constructor Fields
Str pandoc.Str(text) text
Code pandoc.Code(code[, attr]) text, attr
Math pandoc.Math(mathtype, text)
mathtype: 'InlineMath' or 'DisplayMath'
mathtype, text
RawInline pandoc.RawInline(format, text)
format: 'html', 'latex' etc.
format, text

Text Formatting

content is an Inlines object (a list of Inline elements).

Type Constructor Fields
Emph pandoc.Emph(content) content
SmallCaps pandoc.SmallCaps(content) content
Strikeout pandoc.Strikeout(content) content
Strong pandoc.Strong(content) content
Subscript pandoc.Subscript(content) content
Superscript pandoc.Superscript(content) content
Underline pandoc.Underline(content) content
Quoted pandoc.Quoted(quotetype, content)
quotetype: 'SingleQuote' or 'DoubleQuote'
quotetype, content

Other

content and title are Inlines unless otherwise noted.

src, target are simple Lua strings.

attr is an Attr object.

Type Constructor Fields
Span pandoc.Span(content[, attr]) content, attr
Image pandoc.Image(caption, src[, title[, attr]]) caption, src, title, attr
Link pandoc.Link(content, target[, title[, attr]]) content, target, title, attr
Cite pandoc.Cite(content, citations) content, citations
Note pandoc.Note(content)
content: Blocks
content