Pandoc User’s GuideJohnMacFarlane2025-09-29Synopsispandoc [options]
[input-file]…
Description
Pandoc is a
Haskell library
for converting from one markup format to another, and a
command-line tool that uses this library.
Pandoc can convert between numerous markup and word processing
formats, including, but not limited to, various flavors of
Markdown,
HTML,
LaTeX and
Word
docx. For the full lists of input and output formats, see
the --from and --to
options below. Pandoc can
also produce
PDF output:
see creating a PDF, below.
Pandoc’s enhanced version of Markdown includes syntax for
tables,
definition lists,
metadata blocks,
footnotes,
citations,
math, and much more. See below under
Pandoc’s Markdown.
Pandoc has a modular design: it consists of a set of readers,
which parse text in a given format and produce a native
representation of the document (an abstract syntax
tree or AST), and a set of writers, which convert this
native representation into a target format. Thus, adding an input
or output format requires only adding a reader or writer. Users
can also run custom
pandoc
filters to modify the intermediate AST.
Because pandoc’s intermediate representation of a document is less
expressive than many of the formats it converts between, one
should not expect perfect conversions between every format and
every other. Pandoc attempts to preserve the structural elements
of a document, but not formatting details such as margin size. And
some document elements, such as complex tables, may not fit into
pandoc’s simple document model. While conversions from pandoc’s
Markdown to all formats aspire to be perfect, conversions from
formats more expressive than pandoc’s Markdown can be expected to
be lossy.
Using pandoc
If no input-files are specified, input is
read from stdin. Output goes to
stdout by default. For output to a file,
use the -o option:
pandoc -o output.html input.txt
By default, pandoc produces a document fragment. To produce a
standalone document (e.g. a valid HTML file including
<head> and
<body>), use the -s
or --standalone flag:
pandoc -s -o output.html input.txt
For more information on how standalone documents are produced,
see Templates below.
If multiple input files are given, pandoc will concatenate them
all (with blank lines between them) before parsing. (Use
--file-scope to parse files individually.)
Specifying formats
The format of the input and output can be specified explicitly
using command-line options. The input format can be specified
using the -f/--from option, the output format
using the -t/--to option. Thus, to convert
hello.txt from Markdown to LaTeX, you could
type:
pandoc -f markdown -t latex hello.txt
To convert hello.html from HTML to Markdown:
pandoc -f html -t markdown hello.html
Supported input and output formats are listed below under
Options (see
-f for input formats and
-t for output formats). You can also use
pandoc --list-input-formats and
pandoc --list-output-formats to print lists
of supported formats.
If the input or output format is not specified explicitly,
pandoc will attempt to guess it from the extensions of the
filenames. Thus, for example,
pandoc -o hello.tex hello.txt
will convert hello.txt from Markdown to
LaTeX. If no output file is specified (so that output goes to
stdout), or if the output file’s extension
is unknown, the output format will default to HTML. If no input
file is specified (so that input comes from
stdin), or if the input files’ extensions
are unknown, the input format will be assumed to be Markdown.
Character encoding
Pandoc uses the UTF-8 character encoding for both input and
output. If your local character encoding is not UTF-8, you
should pipe input and output through
iconv:
iconv -t utf-8 input.txt | pandoc | iconv -f utf-8
Note that in some output formats (such as HTML, LaTeX, ConTeXt,
RTF, OPML, DocBook, and Texinfo), information about the
character encoding is included in the document header, which
will only be included if you use the
-s/--standalone option.
Creating a PDF
To produce a PDF, specify an output file with a
.pdf extension:
pandoc test.txt -o test.pdf
By default, pandoc will use LaTeX to create the PDF, which
requires that a LaTeX engine be installed (see
--pdf-engine below). Alternatively, pandoc
can use ConTeXt, roff ms, or HTML as an intermediate format. To
do this, specify an output file with a .pdf
extension, as before, but add the
--pdf-engine option or
-t context, -t html, or
-t ms to the command line. The tool used to
generate the PDF from the intermediate format may be specified
using --pdf-engine.
You can control the PDF style using variables, depending on the
intermediate format used: see
variables for LaTeX,
variables for
ConTeXt,
variables for
wkhtmltopdf,
variables for ms. When
HTML is used as an intermediate format, the output can be styled
using --css.
To debug the PDF creation, it can be useful to look at the
intermediate representation: instead of
-o test.pdf, use for example
-s -o test.tex to output the generated LaTeX.
You can then test it with pdflatex test.tex.
When using LaTeX, the following packages need to be available
(they are included with all recent versions of
TeX
Live):
amsfonts,
amsmath,
lm,
unicode-math,
iftex,
listings
(if the --listings option is used),
fancyvrb,
longtable,
booktabs,
[multirow] (if the document contains a table
with cells that cross multiple rows),
graphicx
(if the document contains images),
bookmark,
xcolor,
soul,
geometry
(with the geometry variable set),
setspace
(with linestretch), and
babel
(with lang). If
CJKmainfont is set,
xeCJK
is needed if xelatex is used, else
luatexja
is needed if lualatex is used.
framed
is required if code is highlighted in a scheme that use a
colored background. The use of xelatex or
lualatex as the PDF engine requires
fontspec.
lualatex uses
selnolig
and
lua-ul.
xelatex uses
bidi
(with the dir variable set). If the
mathspec variable is set,
xelatex will use
mathspec
instead of
unicode-math.
The
upquote
and
microtype
packages are used if available, and
csquotes
will be used for typography if
the csquotes variable or metadata field is
set to a true value. The
natbib,
biblatex,
bibtex,
and
biber
packages can optionally be used for
citation rendering. If
math with \cancel,
\bcancel, or \xcancel is
used, the
cancel
package is needed. The following packages will be used to
improve output quality if present, but pandoc does not require
them to be present:
upquote
(for straight quotes in verbatim environments),
microtype
(for better spacing adjustments),
parskip
(for better inter-paragraph spaces),
xurl
(for better line breaks in URLs), and
footnotehyper
or
footnote
(to allow footnotes in tables).
Reading from the Web
Instead of an input file, an absolute URI may be given. In this
case pandoc will fetch the content using HTTP:
pandoc -f html -t markdown https://www.fsf.org
It is possible to supply a custom User-Agent string or other
header when requesting a document from a URL:
pandoc -f html -t markdown --request-header User-Agent:"Mozilla/5.0" \
https://www.fsf.org
OptionsGeneral options-fFORMAT,
-rFORMAT,
--from=FORMAT,
--read=FORMAT
Specify input format. FORMAT can be:
bibtex
(BibTeX
bibliography)
biblatex
(BibLaTeX
bibliography)
bits
(BITS
XML, alias for jats)
commonmark
(CommonMark
Markdown)
commonmark_x
(CommonMark
Markdown with extensions)
creole
(Creole
1.0)
csljson
(CSL
JSON bibliography)
csv
(CSV
table)
tsv
(TSV
table)
djot
(Djot
markup)
docbook
(DocBook)
docx
(Word
docx)
dokuwiki
(DokuWiki
markup)
endnotexml
(EndNote
XML bibliography)
epub
(EPUB)
fb2
(FictionBook2
e-book)
gfm
(GitHub-Flavored
Markdown), or the deprecated and less accurate
markdown_github; use
markdown_github
only if you need extensions not supported in
gfm.
haddock
(Haddock
markup)
html
(HTML)
ipynb
(Jupyter
notebook)
jats
(JATS
XML)
jira
(Jira/Confluence
wiki markup)
json (JSON version of native AST)
latex
(LaTeX)
markdown
(Pandoc’s
Markdown)
markdown_mmd
(MultiMarkdown)
markdown_phpextra
(PHP
Markdown Extra)
markdown_strict (original
unextended
Markdown)
mediawiki
(MediaWiki
markup)
man
(roff
man)
mdoc
(mdoc
manual page markup)
muse
(Muse)
native (native Haskell)
odt
(OpenDocument
text document)
opml
(OPML)
org
(Emacs Org
mode)
pod (Perl’s
Plain
Old Documentation)
ris
(RIS
bibliography)
rtf
(Rich
Text Format)
rst
(reStructuredText)
t2t
(txt2tags)
textile
(Textile)
tikiwiki
(TikiWiki
markup)
twiki
(TWiki
markup)
typst
(typst)
vimwiki
(Vimwiki)
xml (XML version of native AST)
the path of a custom Lua reader, see
Custom
readers and writers below
Extensions can be individually enabled or disabled by
appending +EXTENSION or
-EXTENSION to the format name. See
Extensions below, for a
list of extensions and their names. See
--list-input-formats and
--list-extensions, below.
-tFORMAT,
-wFORMAT,
--to=FORMAT,
--write=FORMAT
Specify output format. FORMAT can be:
ansi (text with
ANSI
escape codes, for terminal viewing)
asciidoc (modern
AsciiDoc
as interpreted by
AsciiDoctor)
asciidoc_legacy
(AsciiDoc
as interpreted by
asciidoc-py).
asciidoctor (deprecated synonym for
asciidoc)
beamer
(LaTeX
beamer slide show)
bibtex
(BibTeX
bibliography)
biblatex
(BibLaTeX
bibliography)
chunkedhtml (zip archive of
multiple linked HTML files)
commonmark
(CommonMark
Markdown)
commonmark_x
(CommonMark
Markdown with extensions)
context
(ConTeXt)
csljson
(CSL
JSON bibliography)
djot
(Djot
markup)
docbook or
docbook4
(DocBook
4)
docbook5 (DocBook 5)
docx
(Word
docx)
dokuwiki
(DokuWiki
markup)
epub or epub3
(EPUB
v3 book)
epub2 (EPUB v2)
fb2
(FictionBook2
e-book)
gfm
(GitHub-Flavored
Markdown), or the deprecated and less accurate
markdown_github; use
markdown_github
only if you need extensions not supported in
gfm.
haddock
(Haddock
markup)
html or html5
(HTML,
i.e. HTML5/XHTML
polyglot
markup)
html4
(XHTML
1.0 Transitional)
icml
(InDesign
ICML)
ipynb
(Jupyter
notebook)
jats_archiving
(JATS
XML, Archiving and Interchange Tag Set)
jats_articleauthoring
(JATS
XML, Article Authoring Tag Set)
jats_publishing
(JATS
XML, Journal Publishing Tag Set)
jats (alias for
jats_archiving)
jira
(Jira/Confluence
wiki markup)
json (JSON version of native AST)
latex
(LaTeX)
man
(roff
man)
markdown
(Pandoc’s
Markdown)
markdown_mmd
(MultiMarkdown)
markdown_phpextra
(PHP
Markdown Extra)
markdown_strict (original
unextended
Markdown)
markua
(Markua)
mediawiki
(MediaWiki
markup)
ms
(roff
ms)
muse
(Muse)
native (native Haskell)
odt
(OpenDocument
text document)
opml
(OPML)
opendocument
(OpenDocument
XML)
org
(Emacs Org
mode)
pdf
(PDF)
plain (plain text)
pptx
(PowerPoint
slide show)
rst
(reStructuredText)
rtf
(Rich
Text Format)
texinfo
(GNU
Texinfo)
textile
(Textile)
slideous
(Slideous
HTML and JavaScript slide show)
slidy
(Slidy
HTML and JavaScript slide show)
dzslides
(DZSlides
HTML5 + JavaScript slide show)
revealjs
(reveal.js
HTML5 + JavaScript slide show)
s5
(S5
HTML and JavaScript slide show)
tei
(TEI
Simple)
typst
(typst)
vimdoc
(Vimdoc)
xml (XML version of native AST)
xwiki
(XWiki
markup)
zimwiki
(ZimWiki
markup)
the path of a custom Lua writer, see
Custom
readers and writers below
Note that odt, docx,
epub, and pdf output
will not be directed to stdout unless
forced with -o -.
Extensions can be individually enabled or disabled by
appending +EXTENSION or
-EXTENSION to the format name. See
Extensions below, for a
list of extensions and their names. See
--list-output-formats and
--list-extensions, below.
-oFILE,
--output=FILE
Write output to FILE instead of
stdout. If FILE
is -, output will go to
stdout, even if a non-textual format
(docx, odt,
epub2, epub3) is
specified. If the output format is
chunkedhtml and
FILE has no extension, then instead
of producing a .zip file pandoc will
create a directory FILE and unpack
the zip archive there (unless FILE
already exists, in which case an error will be raised).
--data-dir=DIRECTORY
Specify the user data directory to search for pandoc data
files. If this option is not specified, the default user
data directory will be used. On *nix and macOS systems
this will be the pandoc subdirectory of
the XDG data directory (by default,
$HOME/.local/share, overridable by
setting the XDG_DATA_HOME environment
variable). If that directory does not exist and
$HOME/.pandoc exists, it will be used
(for backwards compatibility). On Windows the default user
data directory is %APPDATA%\pandoc. You
can find the default user data directory on your system by
looking at the output of
pandoc --version. Data files placed in
this directory (for example,
reference.odt,
reference.docx,
epub.css, templates)
will override pandoc’s normal defaults. (Note that the
user data directory is not created by pandoc, so you will
need to create it yourself if you want to make use of it.)
-dFILE,
--defaults=FILE
Specify a set of default option settings.
FILE is a YAML file whose fields
correspond to command-line option settings. All options
for document conversion, including input and output files,
can be set using a defaults file. The file will be
searched for first in the working directory, and then in
the defaults subdirectory of the user
data directory (see --data-dir). The
.yaml extension may be omitted. See the
section Defaults
files for more information on the file format.
Settings from the defaults file may be overridden or
extended by subsequent options on the command line.
--bash-completion
Generate a bash completion script. To enable bash
completion with pandoc, add this to your
.bashrc:
eval "$(pandoc --bash-completion)"
--verbose
Give verbose debugging output.
--quiet
Suppress warning messages.
--fail-if-warnings[=true|false]
Exit with error status if there are any warnings.
--log=FILE
Write log messages in machine-readable JSON format to
FILE. All messages above DEBUG level
will be written, regardless of verbosity settings
(--verbose,
--quiet).
--list-input-formats
List supported input formats, one per line.
--list-output-formats
List supported output formats, one per line.
--list-extensions[=FORMAT]
List supported extensions for FORMAT,
one per line, preceded by a + or
- indicating whether it is enabled by
default in FORMAT. If
FORMAT is not specified, defaults for
pandoc’s Markdown are given.
--list-highlight-languages
List supported languages for syntax highlighting, one per
line.
--list-highlight-styles
List supported styles for syntax highlighting, one per
line. See --syntax-highlighting.
-v, --version
Print version.
-h, --help
Show usage message.
Reader options--shift-heading-level-by=NUMBER
Shift heading levels by a positive or negative integer.
For example, with
--shift-heading-level-by=-1, level 2
headings become level 1 headings, and level 3 headings
become level 2 headings. Headings cannot have a level less
than 1, so a heading that would be shifted below level 1
becomes a regular paragraph. Exception: with a shift of
-N, a level-N heading at the beginning of the document
replaces the metadata title.
--shift-heading-level-by=-1 is a good
choice when converting HTML or Markdown documents that use
an initial level-1 heading for the document title and
level-2+ headings for sections.
--shift-heading-level-by=1 may be a
good choice for converting Markdown documents that use
level-1 headings for sections to HTML, since pandoc uses a
level-1 heading to render the document title.
--base-header-level=NUMBERDeprecated. Use
--shift-heading-level-by=X instead,
where X = NUMBER - 1. Specify the base level
for headings (defaults to 1).
--indented-code-classes=CLASSES
Specify classes to use for indented code blocks—for
example, perl,numberLines or
haskell. Multiple classes may be
separated by spaces or commas.
--default-image-extension=EXTENSION
Specify a default extension to use when image paths/URLs
have no extension. This allows you to use the same source
for formats that require different kinds of images.
Currently this option only affects the Markdown and LaTeX
readers.
--file-scope[=true|false]
Parse each file individually before combining for
multifile documents. This will allow footnotes in
different files with the same identifiers to work as
expected. If this option is set, footnotes and links will
not work across files. Reading binary files (docx, odt,
epub) implies --file-scope.
If two or more files are processed using
--file-scope, prefixes based on the
filenames will be added to identifiers in order to
disambiguate them, and internal links will be adjusted
accordingly. For example, a header with identifier
foo in
subdir/file1.txt will have its
identifier changed to
subdir__file1.txt__foo.
-FPROGRAM,
--filter=PROGRAM
Specify an executable to be used as a filter transforming
the pandoc AST after the input is parsed and before the
output is written. The executable should read JSON from
stdin and write JSON to stdout. The JSON must be formatted
like pandoc’s own JSON input and output. The name of the
output format will be passed to the filter as the first
argument. Hence,
pandoc --filter ./caps.py -t latex
is equivalent to
pandoc -t json | ./caps.py latex | pandoc -f json -t latex
The latter form may be useful for debugging filters.
Filters may be written in any language.
Text.Pandoc.JSON exports
toJSONFilter to facilitate writing
filters in Haskell. Those who would prefer to write
filters in python can use the module
pandocfilters,
installable from PyPI. There are also pandoc filter
libraries in
PHP,
perl,
and
JavaScript/node.js.
In order of preference, pandoc will look for filters in
a specified full or relative path (executable or
non-executable),
$DATADIR/filters (executable or
non-executable) where $DATADIR is
the user data directory (see
--data-dir, above),
$PATH (executable only).
Filters, Lua-filters, and citeproc processing are applied
in the order specified on the command line.
-LSCRIPT,
--lua-filter=SCRIPT
Transform the document in a similar fashion as JSON
filters (see --filter), but use
pandoc’s built-in Lua filtering system. The given Lua
script is expected to return a list of Lua filters which
will be applied in order. Each Lua filter must contain
element-transforming functions indexed by the name of the
AST element on which the filter function should be
applied.
The pandoc Lua module provides helper
functions for element creation. It is always loaded into
the script’s Lua environment.
See the
Lua
filters documentation for further details.
In order of preference, pandoc will look for Lua filters
in
a specified full or relative path,
$DATADIR/filters where
$DATADIR is the user data directory
(see --data-dir, above).
Filters, Lua filters, and citeproc processing are applied
in the order specified on the command line.
-MKEY[=VAL],
--metadata=KEY[:VAL]
Set the metadata field KEY to the
value VAL. A value specified on the
command line overrides a value specified in the document
using YAML
metadata blocks. Values will be parsed as YAML
boolean or string values. If no value is specified, the
value will be treated as Boolean true. Like
--variable,
--metadata causes template variables to
be set. But unlike --variable,
--metadata affects the metadata of the
underlying document (which is accessible from filters and
may be printed in some output formats) and metadata values
will be escaped when inserted into the template.
--metadata-file=FILE
Read metadata from the supplied YAML (or JSON) file. This
option can be used with every input format, but string
scalars in the metadata file will always be parsed as
Markdown. (If the input format is Markdown or a Markdown
variant, then the same variant will be used to parse the
metadata file; if it is a non-Markdown format, pandoc’s
default Markdown extensions will be used.) This option can
be used repeatedly to include multiple metadata files;
values in files specified later on the command line will
be preferred over those specified in earlier files.
Metadata values specified inside the document, or by using
-M, overwrite values specified with
this option. The file will be searched for first in the
working directory, and then in the
metadata subdirectory of the user data
directory (see --data-dir).
-p,
--preserve-tabs[=true|false]
Preserve tabs instead of converting them to spaces. (By
default, pandoc converts tabs to spaces before parsing its
input.) Note that this will only affect tabs in literal
code spans and code blocks. Tabs in regular text are
always treated as spaces.
--tab-stop=NUMBER
Specify the number of spaces per tab (default is 4).
--track-changes=accept|reject|all
Specifies what to do with insertions, deletions, and
comments produced by the MS Word Track
Changes feature. accept (the
default) processes all the insertions and deletions.
reject ignores them. Both
accept and reject
ignore comments. all includes all
insertions, deletions, and comments, wrapped in spans with
insertion, deletion,
comment-start, and
comment-end classes, respectively. The
author and time of change is included.
all is useful for scripting: only
accepting changes from a certain reviewer, say, or before
a certain date. If a paragraph is inserted or deleted,
track-changes=all produces a span with
the class
paragraph-insertion/paragraph-deletion
before the affected paragraph break. This option only
affects the docx reader.
--extract-media=DIR
Extract images and other media contained in or linked from
the source document to the path DIR,
creating it if necessary, and adjust the images references
in the document so they point to the extracted files.
Media are downloaded, read from the file system, or
extracted from a binary container (e.g. docx), as needed.
The original file paths are used if they are relative
paths not containing ... Otherwise
filenames are constructed from the SHA1 hash of the
contents.
--abbreviations=FILE
Specifies a custom abbreviations file, with abbreviations
one to a line. If this option is not specified, pandoc
will read the data file abbreviations
from the user data directory or fall back on a system
default. To see the system default, use
pandoc --print-default-data-file=abbreviations.
The only use pandoc makes of this list is in the Markdown
reader. Strings found in this list will be followed by a
nonbreaking space, and the period will not produce
sentence-ending space in formats like LaTeX. The strings
may not contain spaces.
--trace[=true|false]
Print diagnostic output tracing parser progress to stderr.
This option is intended for use by developers in
diagnosing performance issues.
General writer options-s, --standalone
Produce output with an appropriate header and footer
(e.g. a standalone HTML, LaTeX, TEI, or RTF file, not a
fragment). This option is set automatically for
pdf, epub,
epub3, fb2,
docx, and odt
output. For native output, this option
causes metadata to be included; otherwise, metadata is
suppressed.
--template=FILE|URL
Use the specified file as a custom template for the
generated document. Implies
--standalone. See
Templates, below, for a
description of template syntax. If the template is not
found, pandoc will search for it in the
templates subdirectory of the user data
directory (see --data-dir). If no
extension is specified and an extensionless template is
not found, pandoc will look for a template with an
extension corresponding to the writer, so that
--template=special looks for
special.html for HTML output. If this
option is not used, a default template appropriate for the
output format will be used (see
-D/--print-default-template).
-VKEY[=VAL],
--variable=KEY[=VAL]
Set the template variable KEY to the
string value VAL when rendering the
document in standalone mode. Either :
or = may be used to separate
KEY from VAL. If
no VAL is specified, the key will be
given the value true. Structured values
(lists, maps) cannot be assigned using this option, but
they can be assigned in the variables
section of a defaults
file or using the
--variable-json option. If the variable
already has a list value, the value
will be added to the list. If it already has another kind
of value, it will be made into a list containing the
previous and the new value. For example,
-V keyword=Joe -V author=Sue makes
author contain a list of strings:
Joe and Sue.
--variable-json=KEY[=:JSON]
Set the template variable KEY to the
value specified by a JSON string (this may be a boolean, a
string, a list, or a mapping; a number will be treated as
a string). For example,
--variable-json foo=false will give
foo the boolean false value, while
--variable-json foo='"false"'
will give it the string value
"false". Either
: or = may be used
to separate KEY from
VAL. If the variable already has a
value, this value will be replaced.
--sandbox[=true|false]
Run pandoc in a sandbox, limiting IO operations in readers
and writers to reading the files specified on the command
line. Note that this option does not limit IO operations
by filters or in the production of PDF documents. But it
does offer security against, for example, disclosure of
files through the use of include
directives. Anyone using pandoc on untrusted user input
should use this option.
Note: some readers and writers (e.g.,
docx) need access to data files. If
these are stored on the file system, then pandoc will not
be able to find them when run in
--sandbox mode and will raise an error.
For these applications, we recommend using a pandoc binary
compiled with the embed_data_files
option, which causes the data files to be baked into the
binary instead of being stored on the file system.
-DFORMAT,
--print-default-template=FORMAT
Print the system default template for an output
FORMAT. (See -t
for a list of possible FORMATs.)
Templates in the user data directory are ignored. This
option may be used with
-o/--output to
redirect output to a file, but
-o/--output must
come before --print-default-template on
the command line.
Note that some of the default templates use partials, for
example styles.html. To print the
partials, use
--print-default-data-file: for example,
--print-default-data-file=templates/styles.html.
--print-default-data-file=FILE
Print a system default data file. Files in the user data
directory are ignored. This option may be used with
-o/--output to
redirect output to a file, but
-o/--output must
come before --print-default-data-file
on the command line.
--eol=crlf|lf|native
Manually specify line endings: crlf
(Windows), lf (macOS/Linux/UNIX), or
native (line endings appropriate to the
OS on which pandoc is being run). The default is
native.
--dpi=NUMBER
Specify the default dpi (dots per inch) value for
conversion from pixels to inch/centimeters and vice versa.
(Technically, the correct term would be ppi: pixels per
inch.) The default is 96dpi. When images contain
information about dpi internally, the encoded value is
used instead of the default specified by this option.
--wrap=auto|none|preserve
Determine how text is wrapped in the output (the source
code, not the rendered version). With
auto (the default), pandoc will attempt
to wrap lines to the column width specified by
--columns (default 72). With
none, pandoc will not wrap lines at
all. With preserve, pandoc will attempt
to preserve the wrapping from the source document (that
is, where there are nonsemantic newlines in the source,
there will be nonsemantic newlines in the output as well).
In ipynb output, this option affects
wrapping of the contents of Markdown cells.
--columns=NUMBER
Specify length of lines in characters. This affects text
wrapping in the generated source code (see
--wrap). It also affects calculation of
column widths for plain text tables (see
Tables below).
--toc[=true|false],
--table-of-contents[=true|false]
Include an automatically generated table of contents (or,
in the case of latex,
context, docx,
odt, opendocument,
rst, or ms, an
instruction to create one) in the output document. This
option has no effect unless
-s/--standalone is used, and it has no
effect on man,
docbook4, docbook5,
or jats output.
Note that if you are producing a PDF via
ms and using (the default)
pdfroff as a
--pdf-engine, the table of contents
will appear at the beginning of the document, before the
title. If you would prefer it to be at the end of the
document, use the option
--pdf-engine-opt=--no-toc-relocation.
If groff is used as the
--pdf-engine, the table of contents
will always appear at the end of the document.
--toc-depth=NUMBER
Specify the number of section levels to include in the
table of contents. The default is 3 (which means that
level-1, 2, and 3 headings will be listed in the
contents).
--lof[=true|false],
--list-of-figures[=true|false]
Include an automatically generated list of figures (or, in
some formats, an instruction to create one) in the output
document. This option has no effect unless
-s/--standalone is used, and it only
has an effect on latex,
context, and docx
output.
--lot[=true|false],
--list-of-tables[=true|false]
Include an automatically generated list of tables (or, in
some formats, an instruction to create one) in the output
document. This option has no effect unless
-s/--standalone is used, and it only
has an effect on latex,
context, and docx
output.
--strip-comments[=true|false]
Strip out HTML comments in the Markdown or Textile source,
rather than passing them on to Markdown, Textile or HTML
output as raw HTML. This does not apply to HTML comments
inside raw HTML blocks when the
markdown_in_html_blocks extension is
not set.
--syntax-highlighting="default"|"none"|"idiomatic"|STYLE|FILE
The method to use for code syntax highlighting. Setting a
specific STYLE causes highlighting to
be performed with the internal highlighting engine, using
KDE syntax definitions and styles. The
"idiomatic" method uses a
format-specific highlighter if one is available, or the
default style if the target format has no idiomatic
highlighting method. Setting this option to
none disables all syntax highlighting.
The "default" method uses a
format-specific default.
The default for HTML, EPUB, Docx, Ms, Man, and LaTeX
output is to use the internal highlighter with the default
style; Typst output relies on Typst’s own syntax
highlighting system by default.
The
listings
LaTeX package is used for idiomatic highlighting in LaTeX.
The package does not support multi-byte encoding for
source code. To handle UTF-8 you would need to use a
custom template. This issue is fully documented here:
Encoding
issue with the listings package.
Style options are pygments (the
default), kate,
monochrome,
breezeDark,
espresso, zenburn,
haddock, and tango.
For more information on syntax highlighting in pandoc, see
Syntax
highlighting, below. See also
--list-highlight-styles.
Instead of a STYLE name, a JSON file
with extension .theme may be supplied.
This will be parsed as a KDE syntax highlighting theme and
(if valid) used as the highlighting style.
To generate the JSON version of an existing style, use
--print-highlight-style.
--no-highlightDeprecated, use
--syntax-highlighting=none
instead.
Disables syntax highlighting for code blocks and inlines,
even when a language attribute is given.
--highlight-style=STYLE|FILEDeprecated, use
--syntax-highlighting=STYLE|FILE
instead.
Specifies the coloring style to be used in highlighted
source code.
--print-highlight-style=STYLE|FILE
Prints a JSON version of a highlighting style, which can
be modified, saved with a .theme
extension, and used with
--syntax-highlighting. This option may
be used with
-o/--output to
redirect output to a file, but
-o/--output must
come before --print-highlight-style on
the command line.
--syntax-definition=FILE
Instructs pandoc to load a KDE XML syntax definition file,
which will be used for syntax highlighting of
appropriately marked code blocks. This can be used to add
support for new languages or to use altered syntax
definitions for existing languages. This option may be
repeated to add multiple syntax definitions.
-HFILE,
--include-in-header=FILE|URL
Include contents of FILE, verbatim,
at the end of the header. This can be used, for example,
to include special CSS or JavaScript in HTML documents.
This option can be used repeatedly to include multiple
files in the header. They will be included in the order
specified. Implies --standalone.
-BFILE,
--include-before-body=FILE|URL
Include contents of FILE, verbatim,
at the beginning of the document body (e.g. after the
<body> tag in HTML, or the
\begin{document} command in LaTeX).
This can be used to include navigation bars or banners in
HTML documents. This option can be used repeatedly to
include multiple files. They will be included in the order
specified. Implies --standalone. Note
that if the output format is odt, this
file must be in OpenDocument XML format suitable for
insertion into the body of the document, and if the output
is docx, this file must be in
appropriate OpenXML format.
-AFILE,
--include-after-body=FILE|URL
Include contents of FILE, verbatim,
at the end of the document body (before the
</body> tag in HTML, or the
\end{document} command in LaTeX). This
option can be used repeatedly to include multiple files.
They will be included in the order specified. Implies
--standalone. Note that if the output
format is odt, this file must be in
OpenDocument XML format suitable for insertion into the
body of the document, and if the output is
docx, this file must be in appropriate
OpenXML format.
--resource-path=SEARCHPATH
List of paths to search for images and other resources.
The paths should be separated by : on
Linux, UNIX, and macOS systems, and by
; on Windows. If
--resource-path is not specified, the
default resource path is the working directory. Note that,
if --resource-path is specified, the
working directory must be explicitly listed or it will not
be searched. For example:
--resource-path=.:test will search the
working directory and the test
subdirectory, in that order. This option can be used
repeatedly. Search path components that come later on the
command line will be searched before those that come
earlier, so
--resource-path foo:bar --resource-path baz:bim
is equivalent to
--resource-path baz:bim:foo:bar. Note
that this option only has an effect when pandoc itself
needs to find an image (e.g., in producing a PDF or docx,
or when --embed-resources is used.) It
will not cause image paths to be rewritten in other cases
(e.g., when pandoc is generating LaTeX or HTML).
--request-header=NAME:VAL
Set the request header NAME to the
value VAL when making HTTP requests
(for example, when a URL is given on the command line, or
when resources used in a document must be downloaded). If
you’re behind a proxy, you also need to set the
environment variable http_proxy to
http://....
--no-check-certificate[=true|false]
Disable the certificate verification to allow access to
unsecure HTTP resources (for example when the certificate
is no longer valid or self signed).
Options affecting specific writers--self-contained[=true|false]Deprecated synonym for
--embed-resources --standalone.--embed-resources[=true|false]
Produce a standalone HTML file with no external
dependencies, using data: URIs to
incorporate the contents of linked scripts, stylesheets,
images, and videos. The resulting file should be
self-contained, in the sense that it needs
no external files and no net access to be displayed
properly by a browser. This option works only with HTML
output formats, including html4,
html5, html+lhs,
html5+lhs, s5,
slidy, slideous,
dzslides, and
revealjs. Scripts, images, and
stylesheets at absolute URLs will be downloaded; those at
relative URLs will be sought relative to the working
directory (if the first source file is local) or relative
to the base URL (if the first source file is remote).
Elements with the attribute
data-external="1" will be
left alone; the documents they link to will not be
incorporated in the document. Limitation: resources that
are loaded dynamically through JavaScript cannot be
incorporated; as a result, fonts may be missing when
--mathjax is used, and some advanced
features (e.g. zoom or speaker notes) may not work in an
offline self-containedreveal.js slide show.
For SVG images, img tags with
data: URIs are used, unless the image
has the class inline-svg, in which case
an inline SVG element is inserted. This approach is
recommended when there are many occurrences of the same
SVG in a document, as <use>
elements will be used to reduce duplication.
--link-images[=true|false]
Include links to images instead of embedding the images in
ODT. (This option currently only affects ODT output.)
--html-q-tags[=true|false]
Use <q> tags for quotes in HTML.
(This option only has an effect if the
smart extension is enabled for the
input format used.)
--ascii[=true|false]
Use only ASCII characters in output. Currently supported
for XML and HTML formats (which use entities instead of
UTF-8 when this option is selected), CommonMark, gfm, and
Markdown (which use entities), roff man and ms (which use
hexadecimal escapes), and to a limited degree LaTeX (which
uses standard commands for accented characters when
possible).
--reference-links[=true|false]
Use reference-style links, rather than inline links, in
writing Markdown or reStructuredText. By default inline
links are used. The placement of link references is
affected by the --reference-location
option.
--reference-location=block|section|document
Specify whether footnotes (and references, if
reference-links is set) are placed at
the end of the current (top-level) block, the current
section, or the document. The default is
document. Currently this option only
affects the markdown,
muse, html,
epub, slidy,
s5, slideous,
dzslides, and
revealjs writers. In slide formats,
specifying --reference-location=section
will cause notes to be rendered at the bottom of a slide.
--figure-caption-position=above|below
Specify whether figure captions go above or below figures
(default is below). This option only
affects HTML, LaTeX, Docx, ODT, and Typst output.
--table-caption-position=above|below
Specify whether table captions go above or below tables
(default is above). This option only
affects HTML, LaTeX, Docx, ODT, and Typst output.
--markdown-headings=setext|atx
Specify whether to use ATX-style
(#-prefixed) or Setext-style
(underlined) headings for level 1 and 2 headings in
Markdown output. (The default is atx.)
ATX-style headings are always used for levels 3+. This
option also affects Markdown cells in
ipynb output.
--list-tables[=true|false]
Render tables as list tables in RST output.
--top-level-division=default|section|chapter|part
Treat top-level headings as the given division type in
LaTeX, ConTeXt, DocBook, and TEI output. The hierarchy
order is part, chapter, then section; all headings are
shifted such that the top-level heading becomes the
specified type. The default behavior is to determine the
best division type via heuristics: unless other conditions
apply, section is chosen. When the
documentclass variable is set to
report, book, or
memoir (unless the
article option is specified),
chapter is implied as the setting for
this option. If beamer is the output
format, specifying either chapter or
part will cause top-level headings to
become \part{..}, while second-level
headings remain as their default type.
In Docx output, this option adds section breaks before
first-level headings if chapter is
selected, and before first- and second-level headings if
part is selected. Footnote numbers will
restart with each section break unless the reference doc
modifies this.
-N,
--number-sections=[true|false]
Number section headings in LaTeX, ConTeXt, HTML, Docx, ms,
or EPUB output. By default, sections are not numbered.
Sections with class unnumbered will
never be numbered, even if
--number-sections is specified.
--number-offset=NUMBER[,NUMBER,…]
Offsets for section heading numbers. The first number is
added to the section number for level-1 headings, the
second for level-2 headings, and so on. So, for example,
if you want the first level-1 heading in your document to
be numbered 6 instead of 1,
specify --number-offset=5. If your
document starts with a level-2 heading which you want to
be numbered 1.5, specify
--number-offset=1,4.
--number-offset only directly affects
the number of the first section heading in a document;
subsequent numbers increment in the normal way. Implies
--number-sections. Currently this
feature only affects HTML and Docx output.
--listings[=true|false]
*Deprecated, use
--syntax-highlighting=idiomatic or
--syntax-highlighting=default instead.
Use the
listings
package for LaTeX code blocks. The package does not
support multi-byte encoding for source code. To handle
UTF-8 you would need to use a custom template. This issue
is fully documented here:
Encoding
issue with the listings package.
-i,
--incremental[=true|false]
Make list items in slide shows display incrementally (one
by one). The default is for lists to be displayed all at
once.
--slide-level=NUMBER
Specifies that headings with the specified level create
slides (for beamer,
revealjs, pptx,
s5, slidy,
slideous, dzslides).
Headings above this level in the hierarchy are used to
divide the slide show into sections; headings below this
level create subheads within a slide. Valid values are
0-6. If a slide level of 0 is specified, slides will not
be split automatically on headings, and horizontal rules
must be used to indicate slide boundaries. If a slide
level is not specified explicitly, the slide level will be
set automatically based on the contents of the document;
see Structuring
the slide show.
--section-divs[=true|false]
Wrap sections in <section> tags
(or <div> tags for
html4), and attach identifiers to the
enclosing <section> (or
<div>) rather than the heading
itself (see Heading
identifiers, below). This option only affects HTML
output (and does not affect HTML slide formats).
--email-obfuscation=none|javascript|references
Specify a method for obfuscating
mailto: links in HTML documents.
none leaves mailto:
links as they are. javascript
obfuscates them using JavaScript.
references obfuscates them by printing
their letters as decimal or hexadecimal character
references. The default is none.
--id-prefix=STRING
Specify a prefix to be added to all identifiers and
internal links in HTML and DocBook output, and to footnote
numbers in Markdown and Haddock output. This is useful for
preventing duplicate identifiers when generating fragments
to be included in other pages.
-TSTRING,
--title-prefix=STRING
Specify STRING as a prefix at the
beginning of the title that appears in the HTML header
(but not in the title as it appears at the beginning of
the HTML body). Implies --standalone.
-cURL,
--css=URL
Link to a CSS style sheet. This option can be used
repeatedly to include multiple files. They will be
included in the order specified. This option only affects
HTML (including HTML slide shows) and EPUB output. It
should be used together with
-s/--standalone, because the link to
the stylesheet goes in the document header.
A stylesheet is required for generating EPUB. If none is
provided using this option (or the css
or stylesheet metadata fields), pandoc
will look for a file epub.css in the
user data directory (see --data-dir).
If it is not found there, sensible defaults will be used.
--reference-doc=FILE|URL
Use the specified file as a style reference in producing a
docx or ODT file.
Docx
For best results, the reference docx should be a
modified version of a docx file produced using
pandoc. The contents of the reference docx are
ignored, but its stylesheets and document properties
(including margins, page size, header, and footer)
are used in the new docx. If no reference docx is
specified on the command line, pandoc will look for
a file reference.docx in the user
data directory (see --data-dir).
If this is not found either, sensible defaults will
be used.
To produce a custom
reference.docx, first get a copy
of the default reference.docx:
pandoc -o custom-reference.docx --print-default-data-file reference.docx.
Then open custom-reference.docx
in Word, modify the styles as you wish, and save the
file. For best results, do not make changes to this
file other than modifying the styles used by pandoc:
Paragraph styles:
Normal
Body Text
First Paragraph
Compact
Title
Subtitle
Author
Date
Abstract
AbstractTitle
Bibliography
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Heading 7
Heading 8
Heading 9
Block Text [for block quotes]
Footnote Block Text [for block quotes in
footnotes]
Source Code
Footnote Text
Definition Term
Definition
Caption
Table Caption
Image Caption
Figure
Captioned Figure
TOC Heading
Character styles:
Default Paragraph Font
Verbatim Char
Footnote Reference
Hyperlink
Section Number
Table style:
Table
ODT
For best results, the reference ODT should be a
modified version of an ODT produced using pandoc.
The contents of the reference ODT are ignored, but
its stylesheets are used in the new ODT. If no
reference ODT is specified on the command line,
pandoc will look for a file
reference.odt in the user data
directory (see --data-dir). If
this is not found either, sensible defaults will be
used.
To produce a custom
reference.odt, first get a copy
of the default reference.odt:
pandoc -o custom-reference.odt --print-default-data-file reference.odt.
Then open custom-reference.odt in
LibreOffice, modify the styles as you wish, and save
the file.
PowerPoint
Templates included with Microsoft PowerPoint 2013
(either with .pptx or
.potx extension) are known to
work, as are most templates derived from these.
The specific requirement is that the template should
contain layouts with the following names (as seen
within PowerPoint):
Title Slide
Title and Content
Section Header
Two Content
Comparison
Content with Caption
Blank
For each name, the first layout found with that name
will be used. If no layout is found with one of the
names, pandoc will output a warning and use the
layout with that name from the default reference doc
instead. (How these layouts are used is described in
PowerPoint
layout choice.)
All templates included with a recent version of MS
PowerPoint will fit these criteria. (You can click
on Layout under the
Home menu to check.)
You can also modify the default
reference.pptx: first run
pandoc -o custom-reference.pptx --print-default-data-file reference.pptx,
and then modify
custom-reference.pptx in MS
PowerPoint (pandoc will use the layouts with the
names listed above).
--split-level=NUMBER
Specify the heading level at which to split an EPUB or
chunked HTML document into separate files. The default is
to split into chapters at level-1 headings. In the case of
EPUB, this option only affects the internal composition of
the EPUB, not the way chapters and sections are displayed
to users. Some readers may be slow if the chapter files
are too large, so for large documents with few level-1
headings, one might want to use a chapter level of 2 or 3.
For chunked HTML, this option determines how much content
goes in each chunk.--chunk-template=PATHTEMPLATE
Specify a template for the filenames in a
chunkedhtml document. In the template,
%n will be replaced by the chunk number
(padded with leading 0s to 3 digits),
%s with the section number of the
chunk, %h with the heading text (with
formatting removed), %i with the
section identifier. For example,
%section-%s-%i.html might be resolved
to section-1.1-introduction.html. The
characters / and \
are not allowed in chunk templates and will be ignored.
The default is %s-%i.html.
--epub-chapter-level=NUMBERDeprecated synonym for
--split-level.--epub-cover-image=FILE
Use the specified image as the EPUB cover. It is
recommended that the image be less than 1000px in width
and height. Note that in a Markdown source document you
can also specify cover-image in a YAML
metadata block (see EPUB
Metadata, below).
--epub-title-page=true|false
Determines whether a the title page is included in the
EPUB (default is true).
--epub-metadata=FILE
Look in the specified XML file for metadata for the EPUB.
The file should contain a series of
Dublin
Core elements. For example:
<dc:rights>Creative Commons</dc:rights>
<dc:language>es-AR</dc:language>
By default, pandoc will include the following metadata
elements: <dc:title> (from the
document title), <dc:creator>
(from the document authors),
<dc:date> (from the document
date, which should be in
ISO
8601 format),
<dc:language> (from the
lang variable, or, if is not set, the
locale), and
<dc:identifier id="BookId">
(a randomly generated UUID). Any of these may be
overridden by elements in the metadata file.
Note: if the source document is Markdown, a YAML metadata
block in the document can be used instead. See below under
EPUB Metadata.
--epub-embed-font=FILE
Embed the specified font in the EPUB. This option can be
repeated to embed multiple fonts. Wildcards can also be
used: for example, DejaVuSans-*.ttf.
However, if you use wildcards on the command line, be sure
to escape them or put the whole filename in single quotes,
to prevent them from being interpreted by the shell. To
use the embedded fonts, you will need to add declarations
like the following to your CSS (see
--css):
@font-face {
font-family: DejaVuSans;
font-style: normal;
font-weight: normal;
src:url(/demo/"../fonts/DejaVuSans-Regular.ttf");
}
@font-face {
font-family: DejaVuSans;
font-style: normal;
font-weight: bold;
src:url(/demo/"../fonts/DejaVuSans-Bold.ttf");
}
@font-face {
font-family: DejaVuSans;
font-style: italic;
font-weight: normal;
src:url(/demo/"../fonts/DejaVuSans-Oblique.ttf");
}
@font-face {
font-family: DejaVuSans;
font-style: italic;
font-weight: bold;
src:url(/demo/"../fonts/DejaVuSans-BoldOblique.ttf");
}
body { font-family: "DejaVuSans"; }
--epub-subdirectory=DIRNAME
Specify the subdirectory in the OCF container that is to
hold the EPUB-specific contents. The default is
EPUB. To put the EPUB contents in the
top level, use an empty string.
--ipynb-output=all|none|best
Determines how ipynb output cells are treated.
all means that all of the data formats
included in the original are preserved.
none means that the contents of data
cells are omitted. best causes pandoc
to try to pick the richest data block in each output cell
that is compatible with the output format. The default is
best.
--pdf-engine=PROGRAM
Use the specified engine when producing PDF output. Valid
values are pdflatex,
lualatex, xelatex,
latexmk, tectonic,
wkhtmltopdf,
weasyprint,
pagedjs-cli, prince,
context, groff,
pdfroff, and typst.
If the engine is not in your PATH, the full path of the
engine may be specified here. If this option is not
specified, pandoc uses the following defaults depending on
the output format specified using
-t/--to:
-t latex or none:
pdflatex (other options:
xelatex,
lualatex,
tectonic,
latexmk)
-t context:
context-t html:
weasyprint (other options:
prince,
wkhtmltopdf,
pagedjs-cli; see
print-css.rocks
for a good introduction to PDF generation from
HTML/CSS)
-t ms: pdfroff-t typst: typst
This option is normally intended to be used when a PDF
file is specified as -o/--output.
However, it may still have an effect when other output
formats are requested. For example, ms
output will include .pdfhref macros
only if a --pdf-engine is selected, and
the macros will be differently encoded depending on
whether groff or
pdfroff is specified.
--pdf-engine-opt=STRING
Use the given string as a command-line argument to the
pdf-engine. For example, to use a
persistent directory foo for
latexmk’s auxiliary files, use
--pdf-engine-opt=-outdir=foo. Note that
no check for duplicate options is done.
Citation rendering-C, --citeproc
Process the citations in the file, replacing them with
rendered citations and adding a bibliography. Citation
processing will not take place unless bibliographic data
is supplied, either through an external file specified
using the --bibliography option or the
bibliography field in metadata, or via
a references section in metadata
containing a list of citations in CSL YAML format with
Markdown formatting. The style is controlled by a
CSL
stylesheet specified using the --csl
option or the csl field in metadata.
(If no stylesheet is specified, the
chicago-author-date style will be used
by default.) The citation processing transformation may be
applied before or after filters or Lua filters (see
--filter,
--lua-filter): these transformations
are applied in the order they appear on the command line.
For more information, see the section on
Citations.
Note: if this option is specified, the
citations extension will be disabled
automatically in the writer, to ensure that the
citeproc-generated citations will be rendered instead of
the format’s own citation syntax.
--bibliography=FILE
Set the bibliography field in the
document’s metadata to FILE,
overriding any value set in the metadata. If you supply
this argument multiple times, each
FILE will be added to bibliography.
If FILE is a URL, it will be fetched
via HTTP. If FILE is not found
relative to the working directory, it will be sought in
the resource path (see
--resource-path).
--csl=FILE
Set the csl field in the document’s
metadata to FILE, overriding any
value set in the metadata. (This is equivalent to
--metadata csl=FILE.) If
FILE is a URL, it will be fetched via
HTTP. If FILE is not found relative
to the working directory, it will be sought in the
resource path (see --resource-path) and
finally in the csl subdirectory of the
pandoc user data directory.
--citation-abbreviations=FILE
Set the citation-abbreviations field in
the document’s metadata to FILE,
overriding any value set in the metadata. (This is
equivalent to
--metadata citation-abbreviations=FILE.)
If FILE is a URL, it will be fetched
via HTTP. If FILE is not found
relative to the working directory, it will be sought in
the resource path (see --resource-path)
and finally in the csl subdirectory of
the pandoc user data directory.
--natbib
Use
natbib
for citations in LaTeX output. This option is not for use
with the --citeproc option or with PDF
output. It is intended for use in producing a LaTeX file
that can be processed with
bibtex.
--biblatex
Use
biblatex
for citations in LaTeX output. This option is not for use
with the --citeproc option or with PDF
output. It is intended for use in producing a LaTeX file
that can be processed with
bibtex
or
biber.
Math rendering in HTML
The default is to render TeX math as far as possible using
Unicode characters. Formulas are put inside a
span with
class="math", so that they may be
styled differently from the surrounding text if needed. However,
this gives acceptable results only for basic math, usually you
will want to use --mathjax or another of the
following options.
--mathjax[=URL]
Use
MathJax
to display embedded TeX math in HTML output. TeX math will
be put between \(...\) (for inline
math) or \[...\] (for display math) and
wrapped in <span> tags with class
math. Then the MathJax JavaScript will
render it. The URL should point to
the MathJax.js load script. If a
URL is not provided, a link to the
Cloudflare CDN will be inserted.
--mathml
Convert TeX math to
MathML
(in epub3, docbook4,
docbook5, jats,
html4 and html5).
This is the default in odt output.
MathML is supported natively by the main web browsers and
select e-book readers.
--webtex[=URL]
Convert TeX formulas to <img>
tags that link to an external script that converts
formulas to images. The formula will be URL-encoded and
concatenated with the URL provided. For SVG images you can
for example use
--webtex https://latex.codecogs.com/svg.latex?.
If no URL is specified, the CodeCogs URL generating PNGs
will be used
(https://latex.codecogs.com/png.latex?).
Note: the --webtex option will affect
Markdown output as well as HTML, which is useful if you’re
targeting a version of Markdown without native math
support.
--katex[=URL]
Use
KaTeX
to display embedded TeX math in HTML output. The
URL is the base URL for the KaTeX
library. That directory should contain a
katex.min.js and a
katex.min.css file. If a
URL is not provided, a link to the
KaTeX CDN will be inserted.
--gladtex
Enclose TeX math in <eq> tags in
HTML output. The resulting HTML can then be processed by
GladTeX
to produce SVG images of the typeset formulas and an HTML
file with these images embedded.
pandoc -s --gladtex input.md -o myfile.htex
gladtex -d image_dir myfile.htex
# produces myfile.html and images in image_dir
Options for wrapper scripts--dump-args[=true|false]
Print information about command-line arguments to
stdout, then exit. This option is
intended primarily for use in wrapper scripts. The first
line of output contains the name of the output file
specified with the -o option, or
- (for stdout) if
no output file was specified. The remaining lines contain
the command-line arguments, one per line, in the order
they appear. These do not include regular pandoc options
and their arguments, but do include any options appearing
after a -- separator at the end of the
line.
--ignore-args[=true|false]
Ignore command-line arguments (for use in wrapper
scripts). Regular pandoc options are not ignored. Thus,
for example,
pandoc --ignore-args -o foo.html -s foo.txt -- -e latin1
is equivalent to
pandoc -o foo.html -s
Exit codes
If pandoc completes successfully, it will return exit code 0.
Nonzero exit codes have the following meanings:
Code
Error
1
PandocIOError
3
PandocFailOnWarningError
4
PandocAppError
5
PandocTemplateError
6
PandocOptionError
21
PandocUnknownReaderError
22
PandocUnknownWriterError
23
PandocUnsupportedExtensionError
24
PandocCiteprocError
25
PandocBibliographyError
31
PandocEpubSubdirectoryError
43
PandocPDFError
44
PandocXMLError
47
PandocPDFProgramNotFoundError
61
PandocHttpError
62
PandocShouldNeverHappenError
63
PandocSomeError
64
PandocParseError
66
PandocMakePDFError
67
PandocSyntaxMapError
83
PandocFilterError
84
PandocLuaError
89
PandocNoScriptingEngine
91
PandocMacroLoop
92
PandocUTF8DecodingError
93
PandocIpynbDecodingError
94
PandocUnsupportedCharsetError
95
PandocInputNotTextError
97
PandocCouldNotFindDataFileError
98
PandocCouldNotFindMetadataFileError
99
PandocResourceNotFound
Defaults files
The --defaults option may be used to specify a
package of options, in the form of a YAML file.
Fields that are omitted will just have their regular default
values. So a defaults file can be as simple as one line:
verbosity: INFO
In fields that expect a file path (or list of file paths), the
following syntax may be used to interpolate environment variables:
csl: ${HOME}/mycsldir/special.csl
${USERDATA} may also be used; this will always
resolve to the user data directory that is current when the
defaults file is parsed, regardless of the setting of the
environment variable USERDATA.
${.} will resolve to the directory containing
the defaults file itself. This allows you to refer to resources
contained in that directory:
epub-cover-image: ${.}/cover.jpg
epub-metadata: ${.}/meta.xml
resource-path:
- . # the working directory from which pandoc is run
- ${.}/images # the images subdirectory of the directory
# containing this defaults file
This environment variable interpolation syntax
only works in fields that expect file paths.
Defaults files can be placed in the defaults
subdirectory of the user data directory and used from any
directory. For example, one could create a file specifying
defaults for writing letters, save it as
letter.yaml in the defaults
subdirectory of the user data directory, and then invoke these
defaults from any directory using
pandoc --defaults letter or
pandoc -dletter.
When multiple defaults are used, their contents will be combined.
Note that, where command-line arguments may be repeated
(--metadata-file, --css,
--include-in-header,
--include-before-body,
--include-after-body,
--variable, --metadata,
--syntax-definition), the values specified on
the command line will combine with values specified in the
defaults file, rather than replacing them.
The following tables show the mapping between the command line and
defaults file entries.
command line
defaults file
foo.md
input-file: foo.md
foo.md bar.md
input-files:
- foo.md
- bar.md
The value of input-files may be left empty to
indicate input from stdin, and it can be an empty sequence
[] for no input.
General options
command line
defaults file
--from markdown+emoji
from: markdown+emoji
reader: markdown+emoji
--to markdown+hard_line_breaks
to: markdown+hard_line_breaks
writer: markdown+hard_line_breaks
--output foo.pdf
output-file: foo.pdf
--output -
output-file:
--data-dir dir
data-dir: dir
--defaults file
defaults:
- file
--verbose
verbosity: INFO
--quiet
verbosity: ERROR
--fail-if-warnings
fail-if-warnings: true
--sandbox
sandbox: true
--log=FILE
log-file: FILE
Options specified in a defaults file itself always have priority
over those in another file included with a
defaults: entry.
verbosity can have the values
ERROR, WARNING, or
INFO.
Reader options
command line
defaults file
--shift-heading-level-by -1
shift-heading-level-by: -1
--indented-code-classes python
indented-code-classes:
- python
--default-image-extension ".jpg"
default-image-extension: '.jpg'
--file-scope
file-scope: true
--citeproc \
--lua-filter count-words.lua \
--filter special.lua
filters:
- citeproc
- count-words.lua
- type: json
path: special.lua
--metadata key=value \
--metadata key2
metadata:
key: value
key2: true
--metadata-file meta.yaml
metadata-files:
- meta.yaml
metadata-file: meta.yaml
--preserve-tabs
preserve-tabs: true
--tab-stop 8
tab-stop: 8
--track-changes accept
track-changes: accept
--extract-media dir
extract-media: dir
--abbreviations abbrevs.txt
abbreviations: abbrevs.txt
--trace
trace: true
Metadata values specified in a defaults file are parsed as
literal string text, not Markdown.
Filters will be assumed to be Lua filters if they have the
.lua extension, and JSON filters otherwise.
But the filter type can also be specified explicitly, as shown.
Filters are run in the order specified. To include the built-in
citeproc filter, use either citeproc or
{type: citeproc}.
General writer options
command line
defaults file
--standalone
standalone: true
--template letter
template: letter
--variable key=val \
--variable key2
variables:
key: val
key2: true
--eol nl
eol: nl
--dpi 300
dpi: 300
--wrap 60
wrap: 60
--columns 72
columns: 72
--table-of-contents
table-of-contents: true
--toc
toc: true
--toc-depth 3
toc-depth: 3
--strip-comments
strip-comments: true
--no-highlight
syntax-highlighting: 'none'
--syntax-highlighting kate
syntax-highlighting: kate
--syntax-definition mylang.xml
syntax-definitions:
- mylang.xml
syntax-definition: mylang.xml
--include-in-header inc.tex
include-in-header:
- inc.tex
--include-before-body inc.tex
include-before-body:
- inc.tex
--include-after-body inc.tex
include-after-body:
- inc.tex
--resource-path .:foo
resource-path: ['.','foo']
--request-header foo:bar
request-headers:
- ["User-Agent", "Mozilla/5.0"]
--no-check-certificate
no-check-certificate: true
Options affecting specific writers
command line
defaults file
--self-contained
self-contained: true
--link-images
link-images: true
--html-q-tags
html-q-tags: true
--ascii
ascii: true
--reference-links
reference-links: true
--reference-location block
reference-location: block
--figure-caption-position=above
figure-caption-position: above
--table-caption-position=below
table-caption-position: below
--markdown-headings atx
markdown-headings: atx
--list-tables
list-tables: true
--top-level-division chapter
top-level-division: chapter
--number-sections
number-sections: true
--number-offset=1,4
number-offset: \[1,4\]
--listings
listings: true
--list-of-figures
list-of-figures: true
--lof
lof: true
--list-of-tables
list-of-tables: true
--lot
lot: true
--incremental
incremental: true
--slide-level 2
slide-level: 2
--section-divs
section-divs: true
--email-obfuscation references
email-obfuscation: references
--id-prefix ch1
identifier-prefix: ch1
--title-prefix MySite
title-prefix: MySite
--css styles/screen.css \
--css styles/special.css
css:
- styles/screen.css
- styles/special.css
--reference-doc my.docx
reference-doc: my.docx
--epub-cover-image cover.jpg
epub-cover-image: cover.jpg
--epub-title-page=false
epub-title-page: false
--epub-metadata meta.xml
epub-metadata: meta.xml
--epub-embed-font special.otf \
--epub-embed-font headline.otf
epub-fonts:
- special.otf
- headline.otf
--split-level 2
split-level: 2
--chunk-template="%i.html"
chunk-template: "%i.html"
--epub-subdirectory=""
epub-subdirectory: ''
--ipynb-output best
ipynb-output: best
--pdf-engine xelatex
pdf-engine: xelatex
--pdf-engine-opt=--shell-escape
pdf-engine-opts:
- '-shell-escape'
pdf-engine-opt: '-shell-escape'
Citation rendering
command line
defaults file
--citeproc
citeproc: true
--bibliography logic.bib
bibliography: logic.bib
--csl ieee.csl
csl: ieee.csl
--citation-abbreviations ab.json
citation-abbreviations: ab.json
--natbib
cite-method: natbib
--biblatex
cite-method: biblatex
cite-method can be
citeproc, natbib, or
biblatex. This only affects LaTeX output. If
you want to use citeproc to format citations, you should also
set citeproc: true.
If you need control over when the citeproc processing is done
relative to other filters, you should instead use
citeproc in the list of
filters (see
Reader options).
Math rendering in HTML
command line
defaults file
--mathjax
html-math-method:
method: mathjax
--mathml
html-math-method:
method: mathml
--webtex
html-math-method:
method: webtex
--katex
html-math-method:
method: katex
--gladtex
html-math-method:
method: gladtex
In addition to the values listed above,
method can have the value
plain.
If the command line option accepts a URL argument, an
url: field can be added to
html-math-method:.
Options for wrapper scripts
command line
defaults file
--dump-args
dump-args: true
--ignore-args
ignore-args: true
Templates
When the -s/--standalone option is used, pandoc
uses a template to add header and footer material that is needed
for a self-standing document. To see the default template that is
used, just type
pandoc -D *FORMAT*
where FORMAT is the name of the output
format. A custom template can be specified using the
--template option. You can also override the
system default templates for a given output format
FORMAT by putting a file
templates/default.*FORMAT* in the user data
directory (see --data-dir, above).
Exceptions:
For odt output, customize the
default.opendocument template.
For docx output, customize the
default.openxml template.
For pdf output, customize the
default.latex template (or the
default.context template, if you use
-t context, or the
default.ms template, if you use
-t ms, or the
default.html template, if you use
-t html).
pptx has no template.
Note that docx, odt, and
pptx output can also be customized using
--reference-doc. Use a reference doc to adjust
the styles in your document; use a template to handle variable
interpolation and customize the presentation of metadata, the
position of the table of contents, boilerplate text, etc.
Templates contain variables, which allow for
the inclusion of arbitrary information at any point in the file.
They may be set at the command line using the
-V/--variable option. If a variable is not set,
pandoc will look for the key in the document’s metadata, which can
be set using either
YAML metadata
blocks or with the -M/--metadata option.
In addition, some variables are given default values by pandoc.
See Variables below for a list of
variables used in pandoc’s default templates.
If you use custom templates, you may need to revise them as pandoc
changes. We recommend tracking the changes in the default
templates, and modifying your custom templates accordingly. An
easy way to do this is to fork the
pandoc-templates
repository and merge in changes after each pandoc release.
Template syntaxComments
Anything between the sequence $-- and the
end of the line will be treated as a comment and omitted from
the output.
Delimiters
To mark variables and control structures in the template,
either $…$ or
${…} may be used as
delimiters. The styles may also be mixed in the same template,
but the opening and closing delimiter must match in each case.
The opening delimiter may be followed by one or more spaces or
tabs, which will be ignored. The closing delimiter may be
preceded by one or more spaces or tabs, which will be ignored.
To include a literal $ in the document, use
$$.
Interpolated variables
A slot for an interpolated variable is a variable name
surrounded by matched delimiters. Variable names must begin
with a letter and can contain letters, numbers,
_, -, and
.. The keywords it,
if, else,
endif, for,
sep, and endfor may not
be used as variable names. Examples:
$foo$
$foo.bar.baz$
$foo_bar.baz-bim$
$ foo $
${foo}
${foo.bar.baz}
${foo_bar.baz-bim}
${ foo }
Variable names with periods are used to get at structured
variable values. So, for example,
employee.salary will return the value of
the salary field of the object that is the
value of the employee field.
If the value of the variable is a simple value, it will be
rendered verbatim. (Note that no escaping is done; the
assumption is that the calling program will escape the
strings appropriately for the output format.)
If the value is a list, the values will be concatenated.
If the value is a map, the string true
will be rendered.
Every other value will be rendered as the empty string.
Conditionals
A conditional begins with if(variable)
(enclosed in matched delimiters) and ends with
endif (enclosed in matched delimiters). It
may optionally contain an else (enclosed in
matched delimiters). The if section is used
if variable has a true value, otherwise the
else section is used (if present). The
following values count as true:
any map
any array containing at least one true value
any nonempty string
boolean True
Note that in YAML metadata (and metadata specified on the
command line using -M/--metadata), unquoted
true and false will be
interpreted as Boolean values. But a variable specified on the
command line using -V/--variable will
always be given a string value. Hence a conditional
if(foo) will be triggered if you use
-V foo=false, but not if you use
-M foo=false.
Examples:
$if(foo)$bar$endif$
$if(foo)$
$foo$
$endif$
$if(foo)$
part one
$else$
part two
$endif$
${if(foo)}bar${endif}
${if(foo)}
${foo}
${endif}
${if(foo)}
${ foo.bar }
${else}
no foo!
${endif}
The keyword elseif may be used to simplify
complex nested conditionals:
$if(foo)$
XXX
$elseif(bar)$
YYY
$else$
ZZZ
$endif$
For loops
A for loop begins with for(variable)
(enclosed in matched delimiters) and ends with
endfor (enclosed in matched delimiters).
If variable is an array, the material
inside the loop will be evaluated repeatedly, with
variable being set to each value of the
array in turn, and concatenated.
If variable is a map, the material
inside will be set to the map.
If the value of the associated variable is not an array or
a map, a single iteration will be performed on its value.
Examples:
$for(foo)$$foo$$sep$, $endfor$
$for(foo)$
- $foo.last$, $foo.first$
$endfor$
${ for(foo.bar) }
- ${ foo.bar.last }, ${ foo.bar.first }
${ endfor }
$for(mymap)$
$it.name$: $it.office$
$endfor$
You may optionally specify a separator between consecutive
values using sep (enclosed in matched
delimiters). The material between sep and
the endfor is the separator.
${ for(foo) }${ foo }${ sep }, ${ endfor }
Instead of using variable inside the loop,
the special anaphoric keyword it may be
used.
${ for(foo.bar) }
- ${ it.last }, ${ it.first }
${ endfor }
Partials
Partials (subtemplates stored in different files) may be
included by using the name of the partial, followed by
(), for example:
${ styles() }
Partials will be sought in the directory containing the main
template. The file name will be assumed to have the same
extension as the main template if it lacks an extension. When
calling the partial, the full name including file extension
can also be used:
${ styles.html() }
(If a partial is not found in the directory of the template
and the template path is given as a relative path, it will
also be sought in the templates
subdirectory of the user data directory.)
Partials may optionally be applied to variables using a colon:
${ date:fancy() }
${ articles:bibentry() }
If articles is an array, this will iterate
over its values, applying the partial
bibentry() to each one. So the second
example above is equivalent to
${ for(articles) }
${ it:bibentry() }
${ endfor }
Note that the anaphoric keyword it must be
used when iterating over partials. In the above examples, the
bibentry partial should contain
it.title (and so on) instead of
articles.title.
Final newlines are omitted from included partials.
Partials may include other partials.
A separator between values of an array may be specified in
square brackets, immediately after the variable name or
partial:
${months[, ]}
${articles:bibentry()[; ]}
The separator in this case is literal and (unlike with
sep in an explicit for
loop) cannot contain interpolated variables or other template
directives.
Nesting
To ensure that content is nested, that is,
subsequent lines indented, use the ^
directive:
$item.number$ $^$$item.description$ ($item.price$)
In this example, if item.description has
multiple lines, they will all be indented to line up with the
first line:
00123 A fine bottle of 18-year old
Oban whiskey. ($148)
To nest multiple lines to the same level, align them with the
^ directive in the template. For example:
$item.number$ $^$$item.description$ ($item.price$)
(Available til $item.sellby$.)
will produce
00123 A fine bottle of 18-year old
Oban whiskey. ($148)
(Available til March 30, 2020.)
If a variable occurs by itself on a line, preceded by
whitespace and not followed by further text or directives on
the same line, and the variable’s value contains multiple
lines, it will be nested automatically.
Breakable spaces
Normally, spaces in the template itself (as opposed to values
of the interpolated variables) are not breakable, but they can
be made breakable in part of the template by using the
~ keyword (ended with another
~).
$~$This long line may break if the document is rendered
with a short line length.$~$
Pipes
A pipe transforms the value of a variable or partial. Pipes
are specified using a slash (/) between the
variable name (or partial) and the pipe name. Example:
$for(name)$
$name/uppercase$
$endfor$
$for(metadata/pairs)$
- $it.key$: $it.value$
$endfor$
$employee:name()/uppercase$
Pipes may be chained:
$for(employees/pairs)$
$it.key/alpha/uppercase$. $it.name$
$endfor$
Some pipes take parameters:
|----------------------|------------|
$for(employee)$
$it.name.first/uppercase/left 20 "| "$$it.name.salary/right 10 " | " " |"$
$endfor$
|----------------------|------------|
Currently the following pipes are predefined:
pairs: Converts a map or array to an
array of maps, each with key and
value fields. If the original value was
an array, the key will be the array
index, starting with 1.
uppercase: Converts text to uppercase.
lowercase: Converts text to lowercase.
length: Returns the length of the
value: number of characters for a textual value, number of
elements for a map or array.
reverse: Reverses a textual value or
array, and has no effect on other values.
first: Returns the first value of an
array, if applied to a non-empty array; otherwise returns
the original value.
last: Returns the last value of an
array, if applied to a non-empty array; otherwise returns
the original value.
rest: Returns all but the first value
of an array, if applied to a non-empty array; otherwise
returns the original value.
allbutlast: Returns all but the last
value of an array, if applied to a non-empty array;
otherwise returns the original value.
chomp: Removes trailing newlines (and
breakable space).
nowrap: Disables line wrapping on
breakable spaces.
alpha: Converts textual values that can
be read as an integer into lowercase alphabetic characters
a..z (mod 26). This can be used to get
lettered enumeration from array indices. To get uppercase
letters, chain with uppercase.
roman: Converts textual values that can
be read as an integer into lowercase roman numerals. This
can be used to get lettered enumeration from array
indices. To get uppercase roman, chain with
uppercase.
left n "leftborder" "rightborder":
Renders a textual value in a block of width
n, aligned to the left, with an
optional left and right border. Has no effect on other
values. This can be used to align material in tables.
Widths are positive integers indicating the number of
characters. Borders are strings inside double quotes;
literal " and \
characters must be backslash-escaped.
right n "leftborder" "rightborder":
Renders a textual value in a block of width
n, aligned to the right, and has no
effect on other values.
center n "leftborder" "rightborder":
Renders a textual value in a block of width
n, aligned to the center, and has no
effect on other values.
VariablesMetadata variablestitle, author,
date
allow identification of basic aspects of the document.
Included in PDF metadata through LaTeX and ConTeXt.
These can be set through a
pandoc
title block, which allows for multiple authors,
or through a
YAML
metadata block:
---
author:
- Aristotle
- Peter Abelard
...
Note that if you just want to set PDF or HTML metadata,
without including a title block in the document itself,
you can set the title-meta,
author-meta, and
date-meta variables. (By default
these are set automatically, based on
title, author, and
date.) The page title in HTML is set
by pagetitle, which is equal to
title by default.
subtitle
document subtitle, included in HTML, EPUB, LaTeX,
ConTeXt, and docx documents
abstract
document summary, included in HTML, LaTeX, ConTeXt,
AsciiDoc, and docx documents
abstract-title
title of abstract, currently used only in HTML, EPUB,
docx, and Typst. This will be set automatically to a
localized value, depending on lang,
but can be manually overridden.
keywords
list of keywords to be included in HTML, PDF, ODT, pptx,
docx and AsciiDoc metadata; repeat as for
author, above
subject
document subject, included in ODT, PDF, docx, EPUB, and
pptx metadata
description
document description, included in ODT, docx and pptx
metadata. Some applications show this as
Comments metadata.
category
document category, included in docx and pptx metadata
Additionally, any root-level string metadata, not included in
ODT, docx or pptx metadata is added as a custom
property. The following
YAML
metadata block for instance:
---
title: 'This is the title'
subtitle: "This is the subtitle"
author:
- Author One
- Author Two
description: |
This is a long
description.
It consists of two paragraphs
...
will include title,
author and description
as standard document properties and
subtitle as a custom property when
converting to docx, ODT or pptx.
Language variableslang
identifies the main language of the document using IETF
language tags (following the
BCP
47 standard), such as en or
en-GB. The
Language
subtag lookup tool can look up or verify these
tags. This affects most formats, and controls
hyphenation in PDF output when using LaTeX (through
babel
and
polyglossia)
or ConTeXt.
Use native pandoc Divs
and Spans with the lang
attribute to switch the language:
---
lang: en-GB
...
Text in the main document language (British English).
::: {lang=fr-CA}
> Cette citation est écrite en français canadien.
:::
More text in English. ['Zitat auf Deutsch.']{lang=de}
dir
the base script direction, either rtl
(right-to-left) or ltr
(left-to-right).
For bidirectional documents, native pandoc
spans and divs
with the dir attribute (value
rtl or ltr) can be
used to override the base direction in some output
formats. This may not always be necessary if the final
renderer (e.g. the browser, when generating HTML)
supports the
Unicode
Bidirectional Algorithm.
When using LaTeX for bidirectional documents, only the
xelatex engine is fully supported
(use --pdf-engine=xelatex).
Variables for HTMLdocument-css
Enables inclusion of most of the
CSS
in the styles.html
partial (have a look
with
pandoc --print-default-data-file=templates/styles.html).
Unless you use --css, this variable
is set to true by default. You can
disable it with
e.g. pandoc -M document-css=false.
mainfont
sets the CSS font-family property on
the html element.
fontsize
sets the base CSS font-size, which
you’d usually set to e.g. 20px, but
it also accepts pt (12pt = 16px in
most browsers).
fontcolor
sets the CSS color property on the
html element.
linkcolor
sets the CSS color property on all
links.
monofont
sets the CSS font-family property on
code elements.
monobackgroundcolor
sets the CSS background-color
property on code elements and adds
extra padding.
linestretch
sets the CSS line-height property on
the html element, which is preferred
to be unitless.
maxwidth
sets the CSS max-width property
(default is 36em).
backgroundcolor
sets the CSS background-color
property on the html element.
margin-left,
margin-right,
margin-top,
margin-bottom
sets the corresponding CSS padding
properties on the body element.
To override or extend some
CSS
for just one document, include for example:
---
header-includes: |
<style>
blockquote {
font-style: italic;
}
tr.even {
background-color: #f0f0f0;
}
td, th {
padding: 0.5em 2em 0.5em 0.5em;
}
tbody {
border-bottom: none;
}
</style>
---
Variables for HTML mathclassoption
when using --katex, you can render
display math equations flush left using
YAML metadata or with
-M classoption=fleqn.
Variables for HTML slides
These affect HTML output when
producing slide shows with
pandoc.
institute
author affiliations: can be a list when there are
multiple authors
revealjs-url
base URL for reveal.js documents (defaults to
https://unpkg.com/reveal.js@^5)
s5-url
base URL for S5 documents (defaults to
s5/default)
slidy-url
base URL for Slidy documents (defaults to
https://www.w3.org/Talks/Tools/Slidy2)
slideous-url
base URL for Slideous documents (defaults to
slideous)
title-slide-attributes
additional attributes for the title slide of reveal.js
slide shows. See
background
in reveal.js, beamer, and pptx for an example.
All reveal.js
configuration options are available as variables. To
turn off boolean flags that default to true in reveal.js, use
0.
Variables for Beamer slides
These variables change the appearance of PDF slides using
beamer.
aspectratio
slide aspect ratio (43 for 4:3
[default], 169 for 16:9,
1610 for 16:10,
149 for 14:9, 141
for 1.41:1, 54 for 5:4,
32 for 3:2)
beameroption
add extra beamer option with
\setbeameroption{}institute
author affiliations: can be a list when there are
multiple authors
logo
logo image for slides
navigation
controls navigation symbols (default is
empty for no navigation symbols;
other valid values are frame,
vertical, and
horizontal)
section-titles
enables title pages for new sections
(default is true)
theme, colortheme,
fonttheme,
innertheme,
outertheme
beamer themes
themeoptions,
colorthemeoptions,
fontthemeoptions,
innerthemeoptions,
outerthemeoptions
options for LaTeX beamer themes (lists)
titlegraphic
image for title slide: can be a list
titlegraphicoptions
options for title slide image
shorttitle,
shortsubtitle,
shortauthor,
shortinstitute,
shortdate
some beamer themes use short versions of the title,
subtitle, author, institute, date
Variables for PowerPoint
These variables control the visual aspects of a slide show
that are not easily controlled via templates.
monofont
font to use for code.
Variables for LaTeX
Pandoc uses these variables when
creating a PDF with a
LaTeX engine.
Layoutblock-headings
make \paragraph and
\subparagraph (fourth- and
fifth-level headings, or fifth- and sixth-level with
book classes) free-standing rather than run-in;
requires further formatting to distinguish from
\subsubsection (third- or
fourth-level headings). Instead of using this option,
KOMA-Script
can adjust headings more extensively:
---
documentclass: scrartcl
header-includes: |
\RedeclareSectionCommand[
beforeskip=-10pt plus -2pt minus -1pt,
afterskip=1sp plus -1sp minus 1sp,
font=\normalfont\itshape]{paragraph}
\RedeclareSectionCommand[
beforeskip=-10pt plus -2pt minus -1pt,
afterskip=1sp plus -1sp minus 1sp,
font=\normalfont\scshape,
indent=0pt]{subparagraph}
...
classoption
option for document class,
e.g. oneside; repeat for multiple
options:
---
classoption:
- twocolumn
- landscape
...
documentclass
document class: usually one of the standard classes,
article,
book,
and
report;
the
KOMA-Script
equivalents, scrartcl,
scrbook, and
scrreprt, which default to smaller
margins; or
memoirgeometry
option for
geometry
package, e.g. margin=1in; repeat
for multiple options:
---
geometry:
- top=30mm
- left=20mm
- heightrounded
...
shorthands
Enable language-specific shorthands when loading
babel. (By default, pandoc includes
shorthands=off when loading
babel, disabling language-specific
shorthands.)
hyperrefoptions
option for
hyperref
package, e.g. linktoc=all; repeat
for multiple options:
---
hyperrefoptions:
- linktoc=all
- pdfwindowui
- pdfpagemode=FullScreen
...
indent
if true, pandoc will use document class settings for
indentation (the default LaTeX template otherwise
removes indentation and adds space between paragraphs)
linestretch
adjusts line spacing using the
setspace
package, e.g. 1.25,
1.5margin-left,
margin-right,
margin-top,
margin-bottom
sets margins if geometry is not
used (otherwise geometry overrides
these)
pagestyle
control \pagestyle{}: the default
article class supports plain
(default), empty (no running heads
or page numbers), and headings
(section titles in running heads)
papersize
paper size, e.g. letter,
a4secnumdepth
numbering depth for sections (with
--number-sections option or
numbersections variable)
beamerarticle
produce an article from Beamer slides. Note: if you
set this variable, you must specify the beamer writer
but use the default LaTeX
template: for example,
pandoc -Vbeamerarticle -t beamer --template default.latex.
handout
produce a handout version of Beamer slides (with
overlays condensed into single slides)
csquotes
load csquotes package and use
\enquote or
\enquote* for quoted text.
csquotesoptions
options to use for csquotes package
(repeat for multiple options).
babeloptions
options to pass to the babel package (may be repeated
for multiple options). This defaults to
provide=* if the main language
isn’t a European language written with Latin or
Cyrillic script or Vietnamese. Most users will not
need to adjust the default setting.
Fontsfontenc
allows font encoding to be specified through
fontenc package (with
pdflatex); default is
T1 (see
LaTeX
font encodings guide)
fontfamily
font package for use with pdflatex:
TeX
Live includes many options, documented in the
LaTeX
Font Catalogue. The default is
Latin
Modern.
fontfamilyoptions
options for package used as
fontfamily; repeat for multiple
options. For example, to use the Libertine font with
proportional lowercase (old-style) figures through the
libertinus
package:
---
fontfamily: libertinus
fontfamilyoptions:
- osf
- p
...
fontsize
font size for body text. The standard classes allow
10pt, 11pt, and 12pt. To use another size, set
documentclass to one of the
KOMA-Script
classes, such as scrartcl or
scrbook.
mainfont,
sansfont,
monofont,
mathfont,
CJKmainfont,
CJKsansfont,
CJKmonofont
font families for use with xelatex
or lualatex: take the name of any
system font, using the
fontspec
package. CJKmainfont uses the
xecjk
package if xelatex is used, or the
luatexja
package if lualatex is used.
mainfontoptions,
sansfontoptions,
monofontoptions,
mathfontoptions,
CJKoptions,
luatexjapresetoptions
options to use with mainfont,
sansfont,
monofont,
mathfont,
CJKmainfont in
xelatex and
lualatex. Allow for any choices
available through
fontspec;
repeat for multiple options. For example, to use the
TeX
Gyre version of Palatino with lowercase
figures:
---
mainfont: TeX Gyre Pagella
mainfontoptions:
- Numbers=Lowercase
- Numbers=Proportional
...
mainfontfallback,
sansfontfallback,
monofontfallback
fonts to try if a glyph isn’t found in
mainfont,
sansfont, or
monofont respectively. These are
lists. The font name must be followed by a colon and
optionally a set of options, for example:
---
mainfontfallback:
- "FreeSans:"
- "NotoColorEmoji:mode=harf"
...
Font fallbacks currently only work with
lualatex.
babelfonts
a map of Babel language names
(e.g. chinese) to the font to be
used with the language:
---
babelfonts:
chinese-hant: "Noto Serif CJK TC"
russian: "Noto Serif"
...
microtypeoptions
options to pass to the microtype package
Linkscolorlinks
add color to link text; automatically enabled if any
of linkcolor,
filecolor,
citecolor,
urlcolor, or
toccolor are set
boxlinks
add visible box around links (has no effect if
colorlinks is set)
linkcolor,
filecolor,
citecolor,
urlcolor, toccolor
color for internal links, external links, citation
links, linked URLs, and links in table of contents,
respectively: uses options allowed by
xcolor,
including the dvipsnames,
svgnames, and
x11names lists
links-as-notes
causes links to be printed as footnotes
urlstyle
style for URLs (e.g., tt,
rm, sf, and, the
default, same)
Front matterlof, lot
include list of figures, list of tables (can also be
set using --lof/--list-of-figures,
--lot/--list-of-tables)
thanks
contents of acknowledgments footnote after document
title
toc
include table of contents (can also be set using
--toc/--table-of-contents)
toc-depth
level of section to include in table of contents
BibLaTeX Bibliographies
These variables function when using BibLaTeX for
citation
rendering.
biblatexoptions
list of options for biblatex
biblio-style
bibliography style, when used with
--natbib and
--biblatexbiblio-title
bibliography title, when used with
--natbib and
--biblatexbibliography
bibliography to use for resolving references
natbiboptions
list of options for natbib
Otherpdf-trailer-id
the PDF trailer ID; must be two PDF byte strings if
set, conventionally with 16 bytes each. E.g.,
<00112233445566778899aabbccddeeff> <00112233445566778899aabbccddeeff>.
See the section on
reproducible
builds.
Variables for ConTeXt
Pandoc uses these variables when
creating a PDF with
ConTeXt.
fontsize
font size for body text (e.g. 10pt,
12pt)
headertext,
footertext
text to be placed in running header or footer (see
ConTeXt
Headers and Footers); repeat up to four times for
different placement
indenting
controls indentation of paragraphs,
e.g. yes,small,next (see
ConTeXt
Indentation); repeat for multiple options
interlinespace
adjusts line spacing, e.g. 4ex (using
setupinterlinespace);
repeat for multiple options
layout
options for page margins and text arrangement (see
ConTeXt
Layout); repeat for multiple options
linkcolor,
contrastcolor
color for links outside and inside a page,
e.g. red, blue
(see
ConTeXt
Color)
linkstyle
typeface style for links,
e.g. normal, bold,
slanted,
boldslanted, type,
cap, smalllof, lot
include list of figures, list of tables
mainfont, sansfont,
monofont, mathfont
font families: take the name of any system font (see
ConTeXt
Font Switching)
mainfontfallback,
sansfontfallback,
monofontfallback
list of fonts to try, in order, if a glyph is not found
in the main font. Use
\definefallbackfamily-compatible font
name syntax. Emoji fonts are unsupported.
margin-left,
margin-right,
margin-top,
margin-bottom
sets margins, if layout is not used
(otherwise layout overrides these)
pagenumbering
page number style and location (using
setuppagenumbering);
repeat for multiple options
papersize
paper size, e.g. letter,
A4, landscape (see
ConTeXt
Paper Setup); repeat for multiple options
pdfa
adds to the preamble the setup necessary to generate
PDF/A of the type specified,
e.g. 1a:2005, 2a.
If no type is specified (i.e. the value is set to True,
by e.g. --metadata=pdfa or
pdfa: true in a YAML metadata block),
1b:2005 will be used as default, for
reasons of backwards compatibility. Using
--variable=pdfa without specified
value is not supported. To successfully generate PDF/A
the required ICC color profiles have to be available and
the content and all included files (such as images) have
to be standard-conforming. The ICC profiles and output
intent may be specified using the variables
pdfaiccprofile and
pdfaintent. See also
ConTeXt
PDFA for more details.
pdfaiccprofile
when used in conjunction with pdfa,
specifies the ICC profile to use in the PDF,
e.g. default.cmyk. If left
unspecified, sRGB.icc is used as
default. May be repeated to include multiple profiles.
Note that the profiles have to be available on the
system. They can be obtained from
ConTeXt
ICC Profiles.
pdfaintent
when used in conjunction with pdfa,
specifies the output intent for the colors,
e.g. ISO coated v2 300\letterpercent\space (ECI)
If left unspecified,
sRGB IEC61966-2.1 is used as default.
toc
include table of contents (can also be set using
--toc/--table-of-contents)
urlstyle
typeface style for links without link text,
e.g. normal, bold,
slanted,
boldslanted, type,
cap, smallwhitespace
spacing between paragraphs,
e.g. none, small
(using
setupwhitespace)
includesource
include all source documents as file attachments in the
PDF file
Variables for wkhtmltopdf
Pandoc uses these variables when
creating a PDF with
wkhtmltopdf.
The --css option also affects the output.
footer-html,
header-html
add information to the header and footer
margin-left,
margin-right,
margin-top,
margin-bottom
set the page margins
papersize
sets the PDF paper size
Variables for man pagesadjusting
adjusts text to left (l), right
(r), center (c),
or both (b) margins
footer
footer in man pages
header
header in man pages
section
section number in man pages
Variables for Texinfoversion
version of software (used in title and title page)
filename
name of info file to be generated (defaults to a name
based on the texi filename)
Variables for Typsttemplate
Typst template to use.
margin
A dictionary with the fields defined in the Typst
documentation: x,
y, top,
bottom, left,
right.
papersize
Paper size: a4,
us-letter, etc.
mainfont
Name of system font to use for the main font.
fontsize
Font size (e.g., 12pt).
section-numbering
Schema to use for numbering sections,
e.g. 1.A.1.
page-numbering
Schema to use for numbering pages,
e.g. 1 or i, or an
empty string to omit page numbering.
columns
Number of columns for body text.
thanks
contents of acknowledgments footnote after document
title
mathfont, codefont
Name of system font to use for math and code,
respectively.
linestretch
adjusts line spacing, e.g. 1.25,
1.5linkcolor,
filecolor, citecolor
color for external links, internal links, and citation
links, respectively: expects a hexadecimal color code
Variables for msfontfamilyA (Avant Garde), B
(Bookman), C (Helvetica),
HN (Helvetica Narrow),
P (Palatino), or T
(Times New Roman). This setting does not affect source
code, which is always displayed using monospace Courier.
These built-in fonts are limited in their coverage of
characters. Additional fonts may be installed using the
script
install-font.sh
provided by Peter Schaffter and documented in detail on
his
web site.
indent
paragraph indent (e.g. 2m)
lineheight
line height (e.g. 12p)
pointsize
point size (e.g. 10p)
Variables set automatically
Pandoc sets these variables automatically in response to
options or document contents;
users can also modify them. These vary depending on the output
format, and include the following:
body
body of document
date-meta
the date variable converted to ISO
8601 YYYY-MM-DD, included in all HTML based formats
(dzslides, epub, html, html4, html5, revealjs, s5,
slideous, slidy). The recognized formats for
date are:
mm/dd/yyyy,
mm/dd/yy,
yyyy-mm-dd (ISO 8601),
dd MM yyyy (e.g. either
02 Apr 2018 or
02 April 2018),
MM dd, yyyy
(e.g. Apr. 02, 2018 or
April 02, 2018),yyyy[mm[dd]](e.g.20180402,
201804 or 2018).
header-includes
contents specified by
-H/--include-in-header (may have
multiple values)
include-before
contents specified by
-B/--include-before-body (may have
multiple values)
include-after
contents specified by
-A/--include-after-body (may have
multiple values)
meta-json
JSON representation of all of the document’s metadata.
Field values are transformed to the selected output
format.
numbersections
non-null value if
-N/--number-sections was specified
sourcefile,
outputfile
source and destination filenames, as given on the
command line. sourcefile can also be
a list if input comes from multiple files, or empty if
input is from stdin. You can use the following snippet
in your template to distinguish them:
$if(sourcefile)$
$for(sourcefile)$
$sourcefile$
$endfor$
$else$
(stdin)
$endif$
Similarly, outputfile can be
- if output goes to the terminal.
If you need absolute paths, use
e.g. $curdir$/$sourcefile$.
pdf-engine
name of PDF engine if provided using
--pdf-engine, or the default engine
for the format if PDF output is requested.
curdir
working directory from which pandoc is run.
pandoc-version
pandoc version.
toc
non-null value if
--toc/--table-of-contents was
specified
toc-title
title of table of contents (works only with EPUB, HTML,
revealjs, opendocument, odt, docx, pptx, beamer, LaTeX).
Note that in docx and pptx a custom
toc-title will be picked up from
metadata, but cannot be set as a variable.
Extensions
The behavior of some of the readers and writers can be adjusted by
enabling or disabling various extensions.
An extension can be enabled by adding
+EXTENSION to the format name and disabled by
adding -EXTENSION. For example,
--from markdown_strict+footnotes is strict
Markdown with footnotes enabled, while
--from markdown-footnotes-pipe_tables is
pandoc’s Markdown without footnotes or pipe tables.
The Markdown reader and writer make by far the most use of
extensions. Extensions only used by them are therefore covered in
the section Pandoc’s
Markdown below (see
Markdown variants for
commonmark and gfm). In the
following, extensions that also work for other formats are
covered.
Note that Markdown extensions added to the
ipynb format affect Markdown cells in Jupyter
notebooks (as do command-line options like
--markdown-headings).
TypographyExtension: smart
Interpret straight quotes as curly quotes,
--- as em-dashes, -- as
en-dashes, and ... as ellipses. Nonbreaking
spaces are inserted after certain abbreviations, such as
Mr.
This extension can be enabled/disabled for the following
formats:
input formats
markdown,
commonmark, latex,
mediawiki, org,
rst, twiki,
html
output formats
markdown, latex,
context, org,
rst
enabled by default in
markdown, latex,
context (both input and output)
Note: If you are writing Markdown, then
the smart extension has the reverse effect:
what would have been curly quotes comes out straight.
In LaTeX, smart means to use the standard
TeX ligatures for quotation marks (`` and
'' for double quotes, `
and ' for single quotes) and dashes
(-- for en-dash and ---
for em-dash). If smart is disabled, then in
reading LaTeX pandoc will parse these characters literally. In
writing LaTeX, enabling smart tells pandoc
to use the ligatures when possible; if
smart is disabled pandoc will use unicode
quotation mark and dash characters.
Headings and sectionsExtension: auto_identifiers
A heading without an explicitly specified identifier will be
automatically assigned a unique identifier based on the
heading text.
This extension can be enabled/disabled for the following
formats:
input formats
markdown, latex,
rst, mediawiki,
textile
output formats
markdown, muse
enabled by default in
markdown, muse
The default algorithm used to derive the identifier from the
heading text is:
Remove all formatting, links, etc.
Remove all footnotes.
Remove all non-alphanumeric characters, except
underscores, hyphens, and periods.
Replace all spaces and newlines with hyphens.
Convert all alphabetic characters to lowercase.
Remove everything up to the first letter (identifiers may
not begin with a number or punctuation mark).
If nothing is left after this, use the identifier
section.
Thus, for example,
Heading
Identifier
Heading identifiers in HTMLheading-identifiers-in-htmlMaître d'hôtelmaître-dhtel*Dogs*?--in *my* house?dogs--in-my-house[HTML], [S5], or [RTF]?html-s5-or-rtf3. Applicationsapplications33section
These rules should, in most cases, allow one to determine the
identifier from the heading text. The exception is when
several headings have the same text; in this case, the first
will get an identifier as described above; the second will get
the same identifier with -1 appended; the
third with -2; and so on.
(However, a different algorithm is used if
gfm_auto_identifiers is enabled; see
below.)
These identifiers are used to provide link targets in the
table of contents generated by the
--toc|--table-of-contents option. They also
make it easy to provide links from one section of a document
to another. A link to this section, for example, might look
like this:
See the section on
[heading identifiers](#heading-identifiers-in-html-latex-and-context).
Note, however, that this method of providing links to sections
works only in HTML, LaTeX, and ConTeXt formats.
If the --section-divs option is specified,
then each section will be wrapped in a
section (or a div, if
html4 was specified), and the identifier
will be attached to the enclosing
<section> (or
<div>) tag rather than the heading
itself. This allows entire sections to be manipulated using
JavaScript or treated differently in CSS.
Extension: ascii_identifiers
Causes the identifiers produced by
auto_identifiers to be pure ASCII. Accents
are stripped off of accented Latin letters, and non-Latin
letters are omitted.
Extension:
gfm_auto_identifiers
Changes the algorithm used by
auto_identifiers to conform to GitHub’s
method. Spaces are converted to dashes (-),
uppercase characters to lowercase characters, and punctuation
characters other than - and
_ are removed. Emojis are replaced by their
names.
Math Input
The extensions
tex_math_dollars,
tex_math_gfm,
tex_math_single_backslash,
and
tex_math_double_backslash
are described in the section about Pandoc’s Markdown.
However, they can also be used with HTML input. This is handy
for reading web pages formatted using MathJax, for example.
Raw HTML/TeX
The following extensions are described in more detail in their
respective sections of Pandoc’s
Markdown:
raw_html
allows HTML elements which are not representable in pandoc’s
AST to be parsed as raw HTML. By default, this is disabled
for HTML input.
raw_tex
allows raw LaTeX, TeX, and ConTeXt to be included in a
document. This extension can be enabled/disabled for the
following formats (in addition to
markdown):
input formats
latex, textile,
html (environments,
\ref, and \eqref
only), ipynb
output formats
textile,
commonmark
Note: as applied to ipynb,
raw_html and raw_tex
affect not only raw TeX in Markdown cells, but data with
mime type text/html in output cells.
Since the ipynb reader attempts to
preserve the richest possible outputs when several options
are given, you will get best results if you disable
raw_html and raw_tex
when converting to formats like docx
which don’t allow raw html or
tex.
native_divs
causes HTML div elements to be parsed as
native pandoc Div blocks. If you want them to be parsed as
raw HTML, use
-f html-native_divs+raw_html.
native_spans
causes HTML span elements to be parsed as
native pandoc Span inlines. If you want them to be parsed as
raw HTML, use
-f html-native_spans+raw_html. If you
want to drop all divs and
spans when converting HTML to Markdown,
you can use
pandoc -f html-native_divs-native_spans -t markdown.
Literate Haskell supportExtension: literate_haskell
Treat the document as literate Haskell source.
This extension can be enabled/disabled for the following
formats:
input formats
markdown, rst,
latex
output formats
markdown, rst,
latex, html
If you append +lhs (or
+literate_haskell) to one of the formats
above, pandoc will treat the document as literate Haskell
source. This means that
In Markdown input, bird track sections will
be parsed as Haskell code rather than block quotations.
Text between \begin{code} and
\end{code} will also be treated as
Haskell code. For ATX-style headings the character
= will be used instead of #.
In Markdown output, code blocks with classes
haskell and literate
will be rendered using bird tracks, and block quotations
will be indented one space, so they will not be treated as
Haskell code. In addition, headings will be rendered
setext-style (with underlines) rather than ATX-style (with
# characters). (This is because ghc treats
# characters in column 1 as introducing
line numbers.)
In restructured text input, bird track
sections will be parsed as Haskell code.
In restructured text output, code blocks with class
haskell will be rendered using bird
tracks.
In LaTeX input, text in code
environments will be parsed as Haskell code.
In LaTeX output, code blocks with class
haskell will be rendered inside
code environments.
In HTML output, code blocks with class
haskell will be rendered with class
literatehaskell and bird tracks.
Examples:
pandoc -f markdown+lhs -t html
reads literate Haskell source formatted with Markdown
conventions and writes ordinary HTML (without bird tracks).
pandoc -f markdown+lhs -t html+lhs
writes HTML with the Haskell code in bird tracks, so it can be
copied and pasted as literate Haskell source.
Note that GHC expects the bird tracks in the first column, so
indented literate code blocks (e.g. inside an itemized
environment) will not be picked up by the Haskell compiler.
Other extensionsExtension: empty_paragraphs
Allows empty paragraphs. By default empty paragraphs are
omitted.
This extension can be enabled/disabled for the following
formats:
input formats
docx, html
output formats
docx, odt,
opendocument,
html, latexExtension: native_numbering
Enables native numbering of figures and tables. Enumeration
starts at 1.
This extension can be enabled/disabled for the following
formats:
output formats
odt, opendocument,
docxExtension: xrefs_name
Links to headings, figures and tables inside the document are
substituted with cross-references that will use the name or
caption of the referenced item. The original link text is
replaced once the generated document is refreshed. This
extension can be combined with xrefs_number
in which case numbers will appear before the name.
Text in cross-references is only made consistent with the
referenced item once the document has been refreshed.
This extension can be enabled/disabled for the following
formats:
output formats
odt, opendocumentExtension: xrefs_number
Links to headings, figures and tables inside the document are
substituted with cross-references that will use the number of
the referenced item. The original link text is discarded. This
extension can be combined with xrefs_name
in which case the name or caption numbers will appear after
the number.
For the xrefs_number to be useful heading
numbers must be enabled in the generated document, also table
and figure captions must be enabled using for example the
native_numbering extension.
Numbers in cross-references are only visible in the final
document once it has been refreshed.
This extension can be enabled/disabled for the following
formats:
output formats
odt, opendocumentExtension: styles
When converting from docx, add
custom-styles attributes for all docx
styles, regardless of whether pandoc understands the meanings
of these styles. Because attributes cannot be added directly
to paragraphs or text in the pandoc AST, paragraph styles will
cause Divs to be created and character styles will cause Spans
to be created to hold the attributes. (Table styles will be
added to the Table elements directly.) This extension can be
used with docx custom
styles.
input formats
docxExtension: amuse
In the muse input format, this enables
Text::Amuse extensions to Emacs Muse markup.
Extension: raw_markdown
In the ipynb input format, this causes
Markdown cells to be included as raw Markdown blocks (allowing
lossless round-tripping) rather than being parsed. Use this
only when you are targeting ipynb or a
Markdown-based output format.
Extension: citations (typst)
When the citations extension is enabled in
typst (as it is by default),
typst citations will be parsed as native
pandoc citations, and native pandoc citations will be rendered
as typst citations.
Extension: citations (org)
When the citations extension is enabled in
org, org-cite and org-ref style citations
will be parsed as native pandoc citations, and org-cite
citations will be used to render native pandoc citations.
Extension: citations (docx)
When citations is enabled in
docx, citations inserted by Zotero or
Mendeley or EndNote plugins will be parsed as native pandoc
citations. (Otherwise, the formatted citations generated by
the bibliographic software will be parsed as regular text.)
Extension: fancy_lists (org)
Some aspects of Pandoc’s
Markdown fancy lists are also accepted in
org input, mimicking the option
org-list-allow-alphabetical in Emacs. As in
Org Mode, enabling this extension allows lowercase and
uppercase alphabetical markers for ordered lists to be parsed
in addition to arabic ones. Note that for Org, this does not
include roman numerals or the # placeholder
that are enabled by the extension in Pandoc’s Markdown.
Extension: element_citations
In the jats output formats, this causes
reference items to be replaced with
<element-citation> elements. These
elements are not influenced by CSL styles, but all information
on the item is included in tags.
Extension: ntb
In the context output format this enables
the use of
Natural
Tables (TABLE) instead of the default
Extreme
Tables (xtables). Natural tables allow more
fine-grained global customization but come at a performance
penalty compared to extreme tables.
Extension: smart_quotes (org)
Interpret straight quotes as curly quotes during parsing. When
writing Org, then the
smart_quotes extension has the reverse
effect: what would have been curly quotes comes out straight.
This extension is implied if smart is
enabled.
Extension: special_strings
(org)
Interpret --- as em-dashes,
-- as en-dashes, \- as
shy hyphen, and ... as ellipses.
This extension is implied if smart is
enabled.
Extension: tagging
Enabling this extension with context output
will produce markup suitable for the production of tagged
PDFs. This includes additional markers for paragraphs and
alternative markup for emphasized text. The
emphasis-command template variable is set
if the extension is enabled.
Pandoc’s Markdown
Pandoc understands an extended and slightly revised version of
John Gruber’s
Markdown
syntax. This document explains the syntax, noting differences from
original Markdown. Except where noted, these differences can be
suppressed by using the markdown_strict format
instead of markdown. Extensions can be enabled
or disabled to specify the behavior more granularly. They are
described in the following. See also
Extensions above, for extensions
that work also on other formats.
Philosophy
Markdown is designed to be easy to write, and, even more
importantly, easy to read:
A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.
– John Gruber