You are on page 1of 50

Pandoc User’s Guide

1 of 50

Pandoc User’s Guide
John MacFarlane
August 30, 2014

Synopsis
pandoc [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. It can read markdown and (subsets of) Textile, reStructuredText, HTML, LaTeX, MediaWiki
markup, TWiki markup, Haddock markup, OPML, Emacs Org-mode, DocBook, txt2tags, EPUB and Word
docx; and it can write plain text, markdown, reStructuredText, XHTML, HTML 5, LaTeX (including beamer
slide shows), ConTeXt, RTF, OPML, DocBook, OpenDocument, ODT, Word docx, GNU Texinfo,
MediaWiki markup, DokuWiki markup, Haddock markup, EPUB (v2 or v3), FictionBook2, Textile, groff
man pages, Emacs Org-Mode, AsciiDoc, InDesign ICML, and Slidy, Slideous, DZSlides, reveal.js or S5
HTML slide shows. It can also produce PDF output on systems where LaTeX is installed.
Pandoc’s enhanced version of markdown includes syntax for footnotes, tables, flexible ordered lists,
definition lists, fenced code blocks, superscript, subscript, strikeout, title blocks, automatic tables of contents,
embedded LaTeX math, citations, and markdown inside HTML block elements. (These enhancements,
described below under Pandoc’s markdown, can be disabled using the markdown_strict input or output
format.)
In contrast to most existing tools for converting markdown to HTML, which use regex substitutions, 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, 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.

Using pandoc
If no input-file is specified, input is read from stdin. Otherwise, the input-files are concatenated (with a blank
line between each) and used as input. Output goes to stdout by default (though output to stdout is disabled for
the odt, docx, epub, and epub3 output formats). For output to a file, use the -o option:
pandoc -o output.html input.txt

By default, pandoc produces a document fragment, not a standalone document with a proper header and
footer. To produce a standalone document, use the -s or --standalone flag:
pandoc -s -o output.html input.txt

03/03/2015 01:46 p.m.

Pandoc User’s Guide

2 of 50

For more information on how standalone documents are produced, see Templates, below.
Instead of a file, an absolute URI may be given. In this case pandoc will fetch the content using HTTP:
pandoc -f html -t markdown http://www.fsf.org

If multiple input files are given, pandoc will concatenate them all (with blank lines between them) before
parsing. This feature is disabled for binary input formats such as EPUB and docx.
The format of the input and output can be specified explicitly using command-line options. The input format
can be specified using the -r/--read or -f/--from options, the output format using the -w/--write or
-t/--to options. 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 output formats are listed below under the -t/--to option. Supported input formats are listed
below under the -f/--from option. Note that the rst, textile, latex, and html readers are not complete;
there are some constructs that they do not parse.
If the input or output format is not specified explicitly, pandoc will attempt to guess it from the extensions of
the input and output 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 unless explicitly specified.
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
Earlier versions of pandoc came with a program, markdown2pdf, that used pandoc and pdflatex to produce a
PDF. This is no longer needed, since pandoc can now produce pdf output itself. To produce a PDF, simply
specify an output file with a .pdf extension. Pandoc will create a latex file and use pdflatex (or another
engine, see --latex-engine) to convert it to PDF:
pandoc test.txt -o test.pdf

Production of a PDF requires that a LaTeX engine be installed (see --latex-engine, below), and assumes

03/03/2015 01:46 p.m.

Pandoc User’s Guide

3 of 50

that the following LaTeX packages are available: amssymb, amsmath, ifxetex, ifluatex, listings (if the
--listings option is used), fancyvrb, longtable, booktabs, url, graphicx, hyperref, ulem, babel (if the
lang variable is set), fontspec (if xelatex or lualatex is used as the LaTeX engine), xltxtra and
xunicode (if xelatex is used).

hsmarkdown
A user who wants a drop-in replacement for Markdown.pl may create a symbolic link to the pandoc
executable called hsmarkdown. When invoked under the name hsmarkdown, pandoc will behave as if invoked
with -f markdown_strict --email-obfuscation=references, and all command-line options will be
treated as regular arguments. However, this approach does not work under Cygwin, due to problems with its
simulation of symbolic links.

Options
General options
FORMAT, -r FORMAT, --from=FORMAT, --read=FORMAT
Specify input format. FORMAT can be native (native Haskell), json (JSON version of native AST),
markdown (pandoc’s extended markdown), markdown_strict (original unextended markdown),
markdown_phpextra (PHP Markdown Extra extended markdown), markdown_github (github extended
markdown), textile (Textile), rst (reStructuredText), html (HTML), docbook (DocBook), t2t
(txt2tags), docx (docx), epub (EPUB), opml (OPML), org (Emacs Org-mode), mediawiki (MediaWiki
markup), twiki (TWiki markup), haddock (Haddock markup), or latex (LaTeX). If +lhs is appended
to markdown, rst, latex, or html, the input will be treated as literate Haskell source: see Literate
Haskell support, below. Markdown syntax extensions can be individually enabled or disabled by
appending +EXTENSION or -EXTENSION to the format name. So, for example,
markdown_strict+footnotes+definition_lists is strict markdown with footnotes and definition
lists enabled, and markdown-pipe_tables+hard_line_breaks is pandoc’s markdown without pipe
tables and with hard line breaks. See Pandoc’s markdown, below, for a list of extensions and their
names.
-t FORMAT, -w FORMAT, --to=FORMAT, --write=FORMAT
Specify output format. FORMAT can be native (native Haskell), json (JSON version of native AST),
plain (plain text), markdown (pandoc’s extended markdown), markdown_strict (original unextended
markdown), markdown_phpextra (PHP Markdown extra extended markdown), markdown_github
(github extended markdown), rst (reStructuredText), html (XHTML 1), html5 (HTML 5), latex
(LaTeX), beamer (LaTeX beamer slide show), context (ConTeXt), man (groff man), mediawiki
(MediaWiki markup), dokuwiki (DokuWiki markup), textile (Textile), org (Emacs Org-Mode),
texinfo (GNU Texinfo), opml (OPML), docbook (DocBook), opendocument (OpenDocument), odt
(OpenOffice text document), docx (Word docx), haddock (Haddock markup), rtf (rich text format),
epub (EPUB v2 book), epub3 (EPUB v3), fb2 (FictionBook2 e-book), asciidoc (AsciiDoc), icml
(InDesign ICML), slidy (Slidy HTML and javascript slide show), slideous (Slideous 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), or the path of a custom lua
writer (see Custom writers, below). Note that odt, epub, and epub3 output will not be directed to
stdout; an output filename must be specified using the -o/--output option. If +lhs is appended to
-f

03/03/2015 01:46 p.m.

Pandoc User’s Guide

4 of 50

markdown, rst, latex, beamer, html,

or html5, the output will be rendered as literate Haskell source:
see Literate Haskell support, below. Markdown syntax extensions can be individually enabled or
disabled by appending +EXTENSION or -EXTENSION to the format name, as described above under -f.
-o FILE, --output=FILE
Write output to FILE instead of stdout. If FILE is -, output will go to stdout. (Exception: if the output
format is odt, docx, epub, or epub3, output to stdout is disabled.)
--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. This is
$HOME/.pandoc

in unix,
C:\Documents And Settings\USERNAME\Application Data\pandoc

in Windows XP, and
C:\Users\USERNAME\AppData\Roaming\pandoc

in Windows 7. (You can find the default user data directory on your system by looking at the output of
pandoc --version.) A reference.odt, reference.docx, default.csl, epub.css, templates,
slidy, slideous, or s5 directory placed in this directory will override pandoc’s normal defaults.
-v, --version

Print version.
-h, --help

Show usage message.

Reader options
-R, --parse-raw

Parse untranslatable HTML codes and LaTeX environments as raw HTML or LaTeX, instead of
ignoring them. Affects only HTML and LaTeX input. Raw HTML can be printed in markdown,
reStructuredText, HTML, Slidy, Slideous, DZSlides, reveal.js, and S5 output; raw LaTeX can be
printed in markdown, reStructuredText, LaTeX, and ConTeXt output. The default is for the readers to
omit untranslatable HTML codes and LaTeX environments. (The LaTeX reader does pass through
untranslatable LaTeX commands, even if -R is not specified.)
-S, --smart

Produce typographically correct output, converting straight quotes to curly quotes, --- to em-dashes,
-- to en-dashes, and ... to ellipses. Nonbreaking spaces are inserted after certain abbreviations, such
as “Mr.” (Note: This option is significant only when the input format is markdown, markdown_strict,
textile or twiki. It is selected automatically when the input format is textile or the output format is
latex or context, unless --no-tex-ligatures is used.)
--old-dashes

Selects the pandoc <= 1.8.2.1 behavior for parsing smart dashes: - before a numeral is an en-dash, and
-- is an em-dash. This option is selected automatically for textile input.
--base-header-level=NUMBER

03/03/2015 01:46 p.m.

Pandoc User’s Guide

5 of 50

Specify the base level for headers (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.
--filter=EXECUTABLE
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. See http://github.com/jgm/pandocfilters for the module and
several examples. Note that the EXECUTABLE will be sought in the user’s PATH, and not in the
working directory, if no directory is provided. If you want to run a script in the working directory,
preface the filename with ./.
-M

KEY[=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. 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).

--normalize

Normalize the document after reading: merge adjacent Str or Emph elements, for example, and remove
repeated Spaces.
-p, --preserve-tabs

Preserve tabs instead of converting them to spaces (the default). Note that this will only affect tabs in
literal code spans and code blocks; tabs in regular text will be 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 and deletions produced by the MS Word “track-changes” feature.
accept (the default), inserts all insertions, and ignores all deletions. reject inserts all deletions and
ignores insertions. all puts in both insertions and deletions, wrapped in spans with insertion and
deletion classes, respectively. The author and time of change is included. all is useful for scripting:

03/03/2015 01:46 p.m.

This option only affects the docx reader. If the template is not found. or RTF file. If this option is not used.m. an instruction to create one) in the output document. say. . creating it if necessary. kate. --variable=KEY[:VAL] Set the template variable KEY to the value VAL when rendering the document in standalone mode. and tango. --toc.) --print-default-data-file=FILE Print a default data file. The default is 3 (which means that level 1. slidy. 2. even when a language attribute is given. --template=FILE Use FILE as a custom template for the generated document. docbook. By default. This option only affects the docx and epub readers. docx. or odt output. in the case of latex. --include-in-header=FILE Include contents of FILE. and adjust the images references in the document so they point to the extracted files. General writer options -s. This option has no effect on man. Implies --standalone.g. context. monochrome. This option can be used repeatedly to include multiple 03/03/2015 01:46 p. --print-default-template=FORMAT Print the default template for an output FORMAT. --standalone Produce output with an appropriate header and footer (e. text is wrapped appropriately for the output format. an extension corresponding to the writer will be added. and odt output. since pandoc automatically sets the variables used in the default templates. -H FILE. to include special CSS or javascript in HTML documents. --toc-depth=NUMBER Specify the number of section levels to include in the table of contents. --no-highlight Disables syntax highlighting for code blocks and inlines. s5. fb2. at the end of the header. If no extension is specified. -D FORMAT. --highlight-style=STYLE Specifies the coloring style to be used in highlighted source code. pandoc will search for it in the user data directory (see --data-dir). This option is set automatically for pdf. for example. epub3. --table-of-contents Include an automatically generated table of contents (or.Pandoc User’s Guide 6 of 50 only accepting changes from a certain reviewer. If no VAL is specified. espresso. (See -t for a list of possible FORMATs. zenburn. This is generally only useful when the --template option is used to specify a custom template. -V KEY[=VAL]. --no-wrap Disable text wrapping in output. slideous. Options are pygments (the default). This can be used. See Templates below for a description of template syntax. not a fragment). or before a certain date. verbatim. a standalone HTML. epub. a default template appropriate for the output format will be used (see -D/--print-default-template). docx. the key will be given the value true. --extract-media=DIR Extract images and other media contained in a docx or epub container to the path DIR. and rst. and 3 headers will be listed in the contents). --columns=NUMBER Specify length of lines in characters (for text wrapping). LaTeX. haddock. so that --template=special looks for special.html for HTML output.

Currently supported only for HTML output (which uses numerical entities instead of UTF-8 when this option is selected). verbatim. ConTeXt. s5. including html. and then ATX headers. --number-offset=NUMBER[. 03/03/2015 01:46 p. or EPUB output. -A FILE. Implies --standalone. rather than inline links. images. images. --self-contained does not work with --mathjax. -N. . Options affecting specific writers --self-contained Produce a standalone HTML file with no external dependencies. stylesheets. or the \end{document} command in LaTeX). They will be included in the order specified. (Deprecated: Use the html5 output format instead. --chapters Treat top-level headers as chapters in LaTeX.NUMBER. --reference-links Use reference-style links. or the \begin{document} command in LaTeX).. Implies --standalone. and videos.Pandoc User’s Guide 7 of 50 files in the header. html5. This option can be be used repeatedly to include multiple files. after the <body> tag in HTML. --include-before-body=FILE Include contents of FILE. This option has no effect for writers other than html. or memoir class. at the beginning of the document body (e. Scripts. When the LaTeX template uses the report. in writing markdown or reStructuredText. html5+lhs. By default inline links are used. This option can be used repeatedly to include multiple files. This can be used to include navigation bars or banners in HTML documents. book. this option is implied. Implies --standalone. ConTeXt. top-level headers will become \part{.) --html-q-tags Use <q> tags for quotes in HTML. HTML. The default is to use setext-style headers for levels 1-2. and DocBook output. dzslides. html+lhs. This option works only with HTML output formats. The resulting file should be “selfcontained. and revealjs. slidy. verbatim. If beamer is the output format.m.}. --offline Deprecated synonym for --self-contained. --atx-headers Use ATX style headers in markdown and asciidoc output. Sections with class unnumbered will never be numbered. at the end of the document body (before the </body> tag in HTML.…]. -5. even if --number-sections is specified. --html5 Produce HTML5 instead of HTML4. and stylesheets at absolute URLs will be downloaded. --number-sections Number section headings in LaTeX. They will be included in the order specified. using data: URIs to incorporate the contents of linked scripts. sections are not numbered. They will be included in the order specified.g. 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). --ascii Use only ascii characters in output. By default. --include-after-body=FILE Include contents of FILE.” in the sense that it needs no external files and no net access to be displayed properly by a browser. -B FILE. slideous.

the second for second-level headers. --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). Instead. but its stylesheets are used in the new ODT. s5. specify --number-offset=1. --css=URL Link to a CSS style sheet.5”. --reference-odt=FILE Use the specified file as a style reference in producing an ODT. apostrophes. If you use literal curly quotes. Implies --number-sections. specify --number-offset=5. Implies --standalone. Headers above this level in the hierarchy are used to divide the slide show into sections. The default is for lists to be displayed all at once. --incremental Make list items in slide shows display incrementally (one by one). --email-obfuscation=none|javascript|references Specify a method for obfuscating mailto: links in HTML documents. dzslides). below. -c URL. --id-prefix=STRING Specify a prefix to be added to all automatically generated identifiers in HTML and DocBook output.m. for example. The default is to set the slide level based on the contents of the document. The first number is added to the section number for top-level headers. and dashes to the TeX ligatures when writing LaTeX or ConTeXt. and attach identifiers to the enclosing (or <section>) rather than the header itself. references obfuscates them by printing their letters as decimal or hexadecimal character references. sensible defaults will be used. --slide-level=NUMBER Specifies that headers with the specified level create slides (for beamer. If your document starts with a level-2 header which you want to be numbered “1. The contents of the reference ODT are ignored. This is useful for preventing duplicate identifiers when generating fragments to be included in other pages. The contents of the reference docx <div> 03/03/2015 01:46 p. just use literal unicode characters. For best results. Note: normally --smart is selected automatically for LaTeX and ConTeXt output. If this is not found either. See Section identifiers. pandoc will look for a file reference. slideous. then you may want to use --no-tex-ligatures without --smart. If no reference ODT is specified on the command line. --reference-docx=FILE Use the specified file as a style reference in producing a docx file. none leaves mailto: links as they are. . below.odt in the user data directory (see --data-dir). the reference docx should be a modified version of a docx file produced using pandoc. javascript obfuscates them using javascript. the reference ODT should be a modified version of an ODT produced using pandoc.4. if you want the first top-level header in your document to be numbered “6”. --no-tex-ligatures Do not convert quotation marks. dashes. -T STRING. headers below this level create subheads within a slide. They will be included in the order specified. For best results. --section-divs Wrap sections in <div> tags (or <section> tags in HTML5). This is needed for using advanced OpenType features with XeLaTeX and LuaLaTeX. but it must be specified explicitly if --no-tex-ligatures is selected.Pandoc User’s Guide 8 of 50 Offset for section headings in HTML output (ignored in other output formats). --listings Use listings package for LaTeX code blocks -i. slidy. This option can be be used repeatedly to include multiple files. So. see Structuring the slide show. and ellipses in your source. and to footnote numbers in markdown output. Offsets are 0 by default. and so on.

<dc:language> (from the lang variable. } @font-face { font-family: DejaVuSans. . a YAML metadata block in the document can be used instead. [character] Default Paragraph Font. header. The following styles are used by pandoc: [paragraph] Normal. This option can be repeated to embed multiple fonts. sensible defaults will be used. Title. Body Text. or. Bibliography. It is recommended that the image be less than 1000px in width and height. Note: if the source document is markdown. 03/03/2015 01:46 p. Note that in a markdown source document you can also specify cover-image in a YAML metadata block (see EPUB Metadata. The file should contain a series of Dublin Core elements. sensible defaults will be used. if is not set. and footer) are used in the new docx. To use embedded fonts.docx in the user data directory (see --data-dir).org/documents/dces/.ttf"). src:url("DejaVuSans-Regular. src:url("DejaVuSans-Bold.Pandoc User’s Guide 9 of 50 are ignored. } @font-face { font-family: DejaVuSans. Definition Term. Authors. <dc:date> (from the document date. If it is not found there. Abstract. font-weight: normal.css in the user data directory (see --data-dir). Heading 1. font-style: normal. If no stylesheet is specified. For example: <dc:rights>Creative Commons</dc:rights> <dc:language>es-AR</dc:language> By default. you will need to add declarations like the following to your CSS (see --epub-stylesheet): @font-face { font-family: DejaVuSans. the locale). as documented at http://dublincore. --epub-stylesheet=FILE Use the specified CSS file to style the EPUB. Compact. Image Caption. Table Caption. --epub-metadata=FILE Look in the specified XML file for metadata for the EPUB. Footnote Ref. Link. pandoc will look for a file reference. If no reference docx is specified on the command line. Heading 5. Block Quote.m. Date. pandoc will look for a file epub.ttf"). Definition. Any of these may be overridden by elements in the metadata file. Body Text Char. and <dc:identifier id="BookId"> (a randomly generated UUID). font-weight: bold. below). Heading 4. See below under EPUB Metadata. font-style: normal. --epub-cover-image=FILE Use the specified image as the EPUB cover. --epub-embed-font=FILE Embed the specified font in the EPUB. Heading 3. Heading 2. If this is not found either. but its stylesheets and document properties (including margins. Subtitle. pandoc will include the following metadata elements: <dc:title> (from the document title). Verbatim Char. font-style: italic. which should be in ISO 8601 format). <dc:creator> (from the document authors). page size.

It is intended for use in producing a LaTeX file that can be processed with pdflatex and bibtex or biber. --latexmathml[=URL] Use the LaTeXMathML script to display embedded TeX math in HTML output. } --epub-chapter-level=NUMBER Specify the header level at which to split the EPUB into separate “chapter” files. This option only affects the internal composition of the EPUB. 03/03/2015 01:46 p.) --citation-abbreviations=FILE Set the citation-abbreviations field in the document’s metadata to FILE. and process citations using pandoc-citeproc.) --natbib Use natbib for citations in LaTeX output. } body { font-family: "DejaVuSans". the contents of the script will be inserted directly into the HTML header. font-style: italic. provide a URL. This option is not for use with the pandoc-citeproc filter or with PDF output. font-weight: bold.js script. . --biblatex Use biblatex for citations in LaTeX output.) --csl=FILE Set the csl field in the document’s metadata to FILE. one might want to use a chapter level of 2 or 3. src:url("DejaVuSans-BoldOblique. so for large documents with few level 1 headers. The default is to split into chapters at level 1 headers. To insert a link to a local copy of the LaTeXMathML. the full path of the engine may be specified here. src:url("DejaVuSans-Oblique. overriding any value set in the metadata.Pandoc User’s Guide 10 of 50 font-weight: normal. The default is pdflatex. preserving portability at the price of efficiency. not the way chapters and sections are displayed to users. Math rendering in HTML -m [URL]. } @font-face { font-family: DejaVuSans. overriding any value set in the metadata. If no URL is provided. (This is equivalent to --metadata csl=FILE. it is much better to link to a copy of the script. overriding any value set in the metadata.ttf"). If you plan to use math on several pages. Citation rendering --bibliography=FILE Set the bibliography field in the document’s metadata to FILE. Some readers may be slow if the chapter files are too large. (This is equivalent to --metadata bibliography=FILE --filter pandoc-citeproc.ttf"). This option is not for use with the pandoc-citeproc filter or with PDF output. --latex-engine=pdflatex|lualatex|xelatex Use the specified LaTeX engine when producing PDF output. If the engine is not in your PATH. (This is equivalent to --metadata citation-abbreviations=FILE. so it can be cached.m. It is intended for use in producing a LaTeX file that can be processed with pdflatex and bibtex.

--mathjax[=URL] Use MathJax to display embedded TeX math in HTML output. If a URL is not provided. a link to the KaTeX CDN will be inserted. pandoc --ignore-args -o foo. : Use KaTeX to display embedded TeX math in HTML output. one per line. --mimetex[=URL] Render TeX math using the mimeTeX CGI script. a link to the KaTeX CDN will be inserted. it is then up to the author to provide such a link in the HTML template.m. . --webtex[=URL] Render TeX formulas using an external script that converts TeX formulas to images. Thus. or . Options for wrapper scripts --dump-args Print information about command-line arguments to stdout.-e latin1 is equivalent to pandoc -o foo. it is assumed that the script is at /cgi-bin/mimetex. --katex[=URL] --katex-stylesheet=*URL* : The URL should point to the katex. --gladtex Enclose TeX math in <eq> tags in HTML output.txt -. If a URL is not provided. If this option is not specified. it will be linked to in the header of standalone HTML documents. These do not include regular Pandoc options and their arguments.g. then exit. The remaining lines contain the command-line arguments.separator at the end of the line. If URL is not specified. no link to the jsMath load script will be inserted. for example. a link to the MathJax CDN will be inserted. --ignore-args Ignore command-line arguments (for use in wrapper scripts).js load script. This option is intended primarily for use in wrapper scripts. the Google Chart API will be used. If a URL is not provided.css stylesheet. Regular Pandoc options are not ignored. but do include any options appearing after a -. if provided. The formula will be concatenated with the URL provided. Note that this option does not imply --katex.html -s 03/03/2015 01:46 p. The URL should point to the MathJax. a small javascript (or a link to such a script if a URL is supplied) will be inserted that allows the MathML to be viewed on some browsers.(for stdout) if no output file was specified. The first line of output contains the name of the output file specified with the -o option. If URL is not specified.js load script.Pandoc User’s Guide 11 of 50 --mathml[=URL] Convert TeX math to MathML (in docbook as well as html and html5).html -s foo. jsMath/easy/load. In standalone html output. --jsmath[=URL] Use jsMath to display embedded TeX math in HTML output. in the order they appear. The URL should point to the jsMath load script (e.js). These can then be processed by gladTeX to produce links to images of the typeset formulas.cgi. The URL should point to the katex.

just type pandoc -D FORMAT where FORMAT is the name of the output format. A custom template can be specified using the --template option.Pandoc User’s Guide 12 of 50 Templates When the -s/--standalone option is used. For pdf output.w3.js transition 03/03/2015 01:46 p. . A variable name surrounded by $ signs will be replaced by its value. To see the default template that is used.opendocument template. starting with a letter.js) theme reveal. author. customize the default.FORMAT in the user data directory (see --data-dir. Exceptions: For odt output. above).js documents (defaults to reveal. and date) as well as the following: header-includes contents specified by -H/--include-in-header (may have multiple values) toc non-null value if --toc/--table-of-contents was specified 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) body body of document lang language code for HTML or LaTeX documents slidy-url base URL for Slidy documents (defaults to http://www. Some variables are set automatically by pandoc.org/Talks/Tools/Slidy2) slideous-url base URL for Slideous documents (defaults to slideous) s5-url base URL for S5 documents (defaults to s5/default) revealjs-url base URL for reveal. -. the string $title$ in <title>$title$</title> will be replaced by the document title. and _. You can also override the system default templates for a given output format FORMAT by putting a file templates/default. These vary somewhat depending on the output format.m. For example.js or LaTeX beamer theme transition reveal. Templates may contain variables. pandoc uses a template to add header and footer material that is needed for a self-standing document. use $$. but include metadata fields (such as title. To write a literal $ in a template. customize the default. Variable names are sequences of alphanumerics.latex template.

e. . blue.Pandoc User’s Guide 13 of 50 fontsize font size (10pt. when used with --natbib biblio-files bibliography files to use in LaTeX. among others. with --natbib or --biblatex section section number in man pages header header in man pages footer footer in man pages 03/03/2015 01:46 p. mathpazo or pxfonts or mathpple (Palatino). arev (Arev Sans). and the default lmodern. utopia or fourier (Utopia).g.m. magenta. sansfont. times or txfonts (Times).g. fouriernc (New Century Schoolbook). libertine (Linux Libertine). may be repeated for multiple options linestretch adjusts line spacing (requires the setspace package) fontfamily font package to use for LaTeX documents (with pdflatex): TeXLive has bookman (Bookman). green. e. 12pt) for LaTeX documents documentclass document class for LaTeX documents classoption option for LaTeX documentclass. black) urlcolor color for external links in LaTeX documents citecolor color for citation links in LaTeX documents links-as-notes causes links to be printed as footnotes in LaTeX documents toc include table of contents in LaTeX documents toc-depth level of section to include in table of contents in LaTeX documents lof include list of figures in LaTeX documents lot include list of tables in LaTeX documents biblio-style bibliography style in LaTeX. may be repeated for multiple options geometry options for LaTeX geometry class. mathfont fonts for LaTeX documents (works only with xelatex and lualatex) colortheme colortheme for LaTeX beamer documents fonttheme fonttheme for LaTeX beamer documents linkcolor color for internal links in LaTeX documents (red. oneside. monofont. 11pt. margin=1in. mainfont. cyan.

. Philosophy Markdown is designed to be easy to write. Templates may contain conditionals. while markdown-footnotes-pipe_tables is pandoc’s markdown without footnotes or pipe tables. otherwise it will include Y. and.com/jgm/pandoc-templates) and merge in changes after each pandoc release.Pandoc User’s Guide 14 of 50 Variables may be set at the command line using the -V/--variable option. For example. even more importantly. and may include interpolated variables or other conditionals. An easy way to do this is to fork the pandoc-templates repository (http://github. Pandoc’s markdown Pandoc understands an extended and slightly revised version of John Gruber’s markdown syntax. as plain text. you can use the $for$ keyword: $for(author)$ <meta name="author" content="$author$" /> $endfor$ You can optionally specify a separator to be used between consecutive items: $for(author)$$author$$sep$. and modifying your custom templates accordingly.m. This document explains the syntax. An extensions can be enabled by adding +EXTENSION to the format name and disabled by adding -EXTENSION. you may need to revise them as pandoc changes. We recommend tracking the changes in the default templates. these differences can be suppressed by using the markdown_strict format instead of markdown. noting differences from standard markdown. The syntax is as follows: $if(variable)$ X $else$ Y $endif$ This will include X in the template if variable has a non-null value. The $else$ section may be omitted. X and Y are placeholders for any valid template text. for example: $author. Except where noted. easy to read: A Markdown-formatted document should be publishable as-is. $endfor$ A dot can be used to select a field of a variable that takes an object as its value. So. without looking like it’s been marked up with tags or formatting instructions.affiliation$) If you use custom templates. markdown_strict+footnotes is strict markdown with footnotes enabled. Variables set in this way override metadata fields with the same name. author in a multi-author document). When variables can have multiple values (for example. – John Gruber 03/03/2015 01:46 p.name$ ($author.

Newlines are treated as spaces. tables. Extension: escaped_line_breaks A backslash followed by a newline is also a hard line break.signs (for a level two header): A level-one header ================== A level-two header ------------------ The header text can contain inline formatting. pandoc is designed for multiple output formats. The number of # signs at the beginning of the line is the header level: ## A level-two header ### A level-three header ### As with setext-style headers. Note: in multiline and grid table cells. Atx-style headers An Atx-style header consists of one to six # signs and a line of text. put two or more spaces at the end of a line. Paragraphs A paragraph is one or more lines of text followed by one or more blank line. Whereas markdown was originally designed with HTML generation in mind. below). such as emphasis (see Inline formatting. mathematics. the header text can contain formatting: # A level-one header with a [link](/url) and *emphasis* Extension: blank_before_header 03/03/2015 01:46 p. Setext-style headers A setext-style header is a line of text “underlined” with a row of = signs (for a level one header) or . Headers There are two kinds of headers. Setext and atx.m. If you need a hard line break. so you can reflow your paragraphs as you like. however. footnotes. and footnotes. non-HTMLish ways of representing important document elements like definition lists. There is. since trailing spaces in the cells are ignored. while pandoc allows the embedding of raw HTML.Pandoc User’s Guide 15 of 50 This principle has guided pandoc’s decisions in finding syntax for tables. and provides other. Thus. and other extensions. this is the only way to create a hard line break. . it discourages it. optionally followed by any number of # signs. one respect in which pandoc’s aims are different from the original aims of markdown.

for example. Header identifiers in HTML. Identifiers are used for labels and link anchors in the LaTeX. hyphens. # My header {-} is just the same as # My header {. at the beginning of the document). and #5. The reason for the requirement is that it is all too easy for a # to end up at the beginning of a line by accident (perhaps through line wrapping).m. writers generally don’t use all of this information. . Replace all spaces and newlines with hyphens. of course. ConTeXt. Consider. Textile.class .unnumbered. and preferable in non-English documents. Headers with the class unnumbered will not be numbered. LaTeX. etc.class key=value key=value} Thus. for example. the following headers will all be assigned the identifier foo: # My header {#foo} ## My header ## My other header --------------- {#foo} {#foo} (This syntax is compatible with PHP Markdown Extra. links. So.) Note that although this syntax allows assignment of classes and key/value attributes. Identifiers. 03/03/2015 01:46 p. To derive the identifier from the header text. Remove everything up to the first letter (identifiers may not begin with a number or punctuation mark). Convert all alphabetic characters to lowercase. Remove all footnotes. for example: I like several of their flavors of ice cream: #22. and ConTeXt Extension: header_attributes Headers can be assigned attributes using this syntax at the end of the line containing the header text: {#identifier .Pandoc User’s Guide 16 of 50 Standard markdown syntax does not require a blank line before a header. Pandoc does require this (except. classes.unnumbered} Extension: auto_identifiers A header without an explicitly specified identifier will be automatically assigned a unique identifier based on the header text. even if --number-sections is specified. Remove all formatting. except underscores. A single hyphen (-) in an attribute context is equivalent to . Remove all punctuation. and key/value attributes are used in HTML and HTML-based formats such as EPUB and slidy. and AsciiDoc writers. and periods.

If the --section-divs option is specified. instead of [header identifiers](#header-identifiers-in-html) you can simply write [header identifiers] or [header identifiers][] or [the section on header identifiers][header identifiers] If there are multiple headers with identical text. for example. LaTeX. if --html5 was specified). the third with -2. and ConTeXt formats. the second will get the same identifier with -1 appended. however.m. This allows entire sections to be manipulated using javascript or treated differently in CSS. that this method of providing links to sections works only in HTML. and so on. So. S5. allow one to determine the identifier from the header text. Header Identifier Header identifiers in HTML header-identifiers-in-html dogs--in-my-house Dogs?–in my house? html-s5-or-rtf HTML. 03/03/2015 01:46 p. Extension: implicit_header_references Pandoc behaves as if reference links have been defined for each header. as described above. the first will get an identifier as described above. in this case. These identifiers are used to provide link targets in the table of contents generated by the --toc|--table-of-contents option. then each section will be wrapped in a div (or a section. Note. Applications section 33 These rules should. use the identifier section. for example. the corresponding reference will link to the first one only. might look like this: See the section on [header identifiers](#header-identifiers-in-html-latex-and-context).Pandoc User’s Guide 17 of 50 If nothing is left after this. in most cases. or RTF? applications 3. . Thus. The exception is when several headers have the same text. They also make it easy to provide links from one section of a document to another. and the identifier will be attached to the enclosing <div> (or <section>) tag rather than the header itself. and you will need to use explicit links to link to the others. A link to this section.

} 03/03/2015 01:46 p. special characters do not trigger special formatting. the following does not produce a nested block quote in pandoc: > This is a block quote. of course. That is. > > > A block quote within a block quote. Verbatim (code) blocks Indented code blocks A block of text indented four spaces (or one tab) is treated as verbatim text: that is. 2. This paragraph has two lines. if (a > 3) { moveShip(5 * gravity. This is a list inside a block quote. 1. Extension: blank_before_blockquote Standard markdown syntax does not require a blank line before a block quote. 2. Among the block elements that can be contained in a block quote are other block quotes. Second item. The reason for the requirement is that it is all too easy for a > to end up at the beginning of a line by accident (perhaps through line wrapping). these references are case-sensitive. > 1. unless the markdown_strict format is used. A “lazy” form. is also allowed: > This is a block quote.Pandoc User’s Guide 18 of 50 Unlike regular reference links. This paragraph has two lines. (The > need not start at the left margin. and all spaces and line breaks are preserved. block quotes can be nested: > This is a block quote. >> Nested.m. DOWN). For example. Note: if you have defined an explicit identifier for a header. with each line preceded by a > character and a space. So. then implicit references to it will not work. Block quotations Markdown uses email conventions for quoting blocks of text.) > > > > > This is a block quote. . A block quotation is one or more paragraphs or other block elements (such as lists or headers). at the beginning of the document). which requires the > character only on the first line of each block. but it should not be indented more than three spaces. Pandoc does require this (except. This is a list inside a block quote. Second item.

with numbered lines. Everything between these lines is treated as code.haskell . do pandoc --version. DOWN). just use a longer row of tildes or backticks at the start and end: ~~~~~~~~~~~~~~~~ ~~~~~~~~~~ code including tildes ~~~~~~~~~~ ~~~~~~~~~~~~~~~~ Extension: fenced_code_attributes Optionally.. </code> </pre> A shortcut form can also be used for specifying the language of the code block: 03/03/2015 01:46 p. These begin with a row of three or more tildes (~) or backticks (`) and end with a row of tildes or backticks that must be at least as long as the starting row. If highlighting is supported for your output format and language.m. No indentation is necessary: ~~~~~~~ if (a > 3) { moveShip(5 * gravity. and startFrom is an attribute with value 100. (To see which languages are supported. Note: blank lines in the verbatim text need not begin with four spaces. Fenced code blocks Extension: fenced_code_blocks In addition to standard indented code blocks. and is removed in the output. } ~~~~~~~ Like regular code blocks.. haskell and numberLines are classes.Pandoc User’s Guide 19 of 50 The initial (four space or one tab) indentation is not considered part of the verbatim text. Currently. If the code itself contains a row of tildes or backticks.) Otherwise. the code block above will appear as follows: <pre id="mycode" class="haskell numberLines" startFrom="100"> <code> . . fenced code blocks must be separated from surrounding text by blank lines. Pandoc supports fenced code blocks. the only output formats that uses this information are HTML and LaTeX. Some output formats can use this information to do syntax highlighting. then the code block above will appear highlighted. you may attach attributes to the code block using this syntax: ~~~~ {#mycode .numberLines startFrom="100"} qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Here mycode is an identifier.

Here is a simple example: * one * two * three 03/03/2015 01:46 p. Constable. . To set the highlighting style. the lines will be formatted as markdown. but the continuation line must begin with a space.Pandoc User’s Guide 20 of 50 ```haskell qsort [] = [] ``` This is equivalent to: ``` {.m. use --highlight-style. CA 94718 The lines can be hard-wrapped if needed. | 200 Main St. otherwise. or -). +. | The Right Honorable Most Venerable and Righteous Samuel L. This is useful for verse and addresses: | The limerick packs laughs anatomical | In space that is quite economical. Jr. | Berkeley. use the --no-highlight flag.haskell} qsort [] = [] ``` If the fenced_code_attributes extension is disabled. Lists Bullet lists A bullet list is a list of bulleted list items. To prevent all highlighting. The division into lines will be preserved in the output. | But the good ones I've seen | So seldom are clean | And the clean ones so seldom are comical | 200 Main St. CA 94718 This syntax is borrowed from reStructuredText. | Berkeley. A bulleted list item begins with a bullet (*. the first class attribute will be printed after the opening fence as a bare word. but input contains class attribute(s) for the codeblock. Line blocks Extension: line_blocks A line block is a sequence of lines beginning with a vertical bar (|) followed by a space. as will any leading spaces.

red delicious + pears + peaches * vegetables + broccoli + chard As noted above. in which each item is formatted as a paragraph. or three spaces. Continued. * Second paragraph. The nested list must be indented four spaces or one tab: * fruits + apples . 03/03/2015 01:46 p. The list will look better if the first paragraph is aligned with the rest: * First paragraph. However.” instead of indenting continuation lines. + A lazy.macintosh . list item. If you want a “loose” list. In this case the preceding blank line is optional. With a code block. put spaces between the items: * one * two * three The bullets need not be flush with the left margin. markdown allows you to write list items “lazily.m. But markdown also allows a “lazy” format: * here is my first list item. subsequent paragraphs must be preceded by a blank line and indented four spaces or a tab. two. . they may be indented one. * and my second.Pandoc User’s Guide 21 of 50 This will produce a “compact” list. if there are multiple paragraphs or other blocks in a list item. However. The four-space rule A list item may contain multiple paragraphs and other block-level content. The bullet must be followed by whitespace. which must be indented eight spaces: { code } List items may include other lists. lazy. the first line of each must be indented. List items look best if subsequent lines are flush with the first line (after the bullet): * here is my first list item. * and my second.

and a sublist with lowercase roman numerals: 9) 10) 11) Ninth Tenth Eleventh 03/03/2015 01:46 p. if the list marker is a capital letter with a period. the reference implementation. by at least two spaces. the following yields a list with numbers followed by a single parenthesis. . They must be separated from the text that follows by at least one space. 7. one two three and this one: 5. and to the starting number.Pandoc User’s Guide 22 of 50 + Another one. Markdown. Thus. enumerators are decimal numbers followed by a period and a space. 1. 3. one two three Extension: fancy_lists Unlike standard markdown. so there is no difference between this list: 1. So pandoc will give different results than Markdown. one #. this looks bad but is legal. Second paragraph of second list item. and. The markdown syntax guide is not explicit whether the four-space rule applies to all block-level content in a list item.pl when authors have indented continuation paragraphs fewer than four spaces. two Extension: startnum Pandoc also pays attention to the type of list marker used. starting with 9. In standard markdown.pl. does not follow it.m. except that the items begin with enumerators rather than bullets. List markers may be enclosed in parentheses or followed by a single right-parentheses or period.1 The fancy_lists extension also allows ‘#’ to be used as an ordered list marker in place of a numeral: #. and both of these are preserved where possible in the output format. and pandoc interprets it that way. it only mentions paragraphs and code blocks. in addition to arabic numerals. Note: Although the four-space rule for continuation paragraphs comes from the official markdown syntax guide. The numbers themselves are ignored. But it implies that the rule applies to all block-level content (including nested lists). Pandoc allows ordered list items to be marked with uppercase and lowercase letters and roman numerals. 2. Ordered lists Ordered lists work just like bulleted lists.

which may optionally be followed by a blank line. aside from the colon or tilde) should be indented four spaces. part of Definition 2 } Third paragraph of definition 2. #. you can “lazily” omit indentation except at the beginning of a paragraph or other block element: Term 1 : Definition with lazy continuation. the text of the definition will be treated as a paragraph. one two three Definition lists Extension: definition_lists Pandoc supports definition lists. Each term must fit on one line. the following will create three lists: (2) (5) 1. However. subthree Pandoc will start a new list each time a different type of list marker is used. use #. omit the space before the definition: 03/03/2015 01:46 p. this will mean greater spacing between term/definition pairs. code block. and must be followed by one or more definitions. In some output formats. If you leave space before the definition (as in the example above). subtwo iii.).m. etc. A term may have multiple definitions. For a more compact definition list. So.Pandoc User’s Guide 23 of 50 i. subone ii. and each definition may consist of one or more block elements (paragraph. using the syntax of PHP Markdown Extra with some extensions. each indented four spaces or one tab stop. which may be indented one or two spaces.: #. The body of the definition (including the first line. #. Second paragraph of the definition. A definition begins with a colon or tilde. as with other markdown lists. . * Two Three Four Five If default list markers are desired.2 Term 1 : Definition 1 Term 2 with *inline markup* : Definition 2 { some code. list.

. Pandoc follows a simple rule: if the text is followed by a blank line. because of the blank space around “Third”. or hyphens. even though it is different from that of Markdown. for example: (@) (@) My first example will be numbered (1). while markdown puts <p> tags around “Second” and “Third” (but not “First”). underscores. but disallows “lazy” hard wrapping.Pandoc User’s Guide 24 of 50 Term 1 ~ Definition 1 Term 2 ~ Definition 2a ~ Definition 2b Note that space between items in a definition list is required. Explanation of examples. (Note: Pandoc works this way even when the markdown_strict format is specified.pl on some “edge cases” involving lists. or “Third”). and so on. throughout the document. .pl. As (@good) illustrates. The first list item with a @ marker will be numbered ‘1’.m. it is treated as a paragraph. below. Since “Second” is followed by a list.. it isn’t treated as a paragraph. (@) My third example will be numbered (3). Numbered examples can be labeled and referred to elsewhere in the document: (@good) This is a good example. The label can be any string of alphanumeric characters. So. each new list using @ will take up where the last stopped. The fact that the list is followed by a blank line is irrelevant. This behavior is consistent with the official markdown syntax description. can be activated with compact_definition_lists: see Non-pandoc extensions. and not a blank line. “Second”. Compact and loose lists Pandoc behaves differently from Markdown. the next ‘2’. My second example will be numbered (2). (A variant that loosens this requirement. The numbered examples need not occur in a single list.) Numbered example lists Extension: example_lists The special list marker @ can be used for sequentially numbered examples. Consider this source: + + First Second: Fee Fie Foe + Third Pandoc transforms this into a “compact list” (with no <p> tags around “First”.) 03/03/2015 01:46 p..

Pandoc User’s Guide 25 of 50 Ending a list What if you want to put an indented code block after a list? - item one item two { my code block } Trouble! Here pandoc (like other markdown implementations) will treat { my code block } as the second paragraph of item two. 3.--> 1. and not as a code block. The fourth kind can be used with proportionally spaced fonts. which won’t produce visible output in any format: - item one item two <!-. one two three <!-. A caption is a paragraph beginning with the string Table: (or just :). 3. -. as it does not require lining up columns. such as Courier. like an HTML comment. which will be stripped off. or _ characters (optionally separated by spaces) produces a horizontal rule: * * * * --------------- Tables Four kinds of tables may be used. To “cut off” the list after item two. The first three kinds presuppose the use of a fixed-width font.end of list --> { my code block } You can use the same trick if you want two consecutive lists instead of one big list: 1.m. 2. 2. you can insert some non-indented content. It may appear 03/03/2015 01:46 p. uno dos tres Horizontal rules A line containing a row of three or more *. . Extension: table_captions A caption may optionally be provided with all 4 kinds of tables (as illustrated in the examples below).

For example: ------12 123 1 ------- -----.m. So. center. or a line of dashes followed by a blank line. If the dashed line is flush with the header text on the left side but extends beyond it on the right. the column is left-aligned. Here is an example: ------------------------------------------------------------Centered Default Right Left Header Aligned Aligned Aligned ----------.--------------. column alignments are determined on the basis of the first line of the table body. in the tables above. this will be left). the column is centered. ------------------------------------------------------------- 03/03/2015 01:46 p. Second row 5. provided a dashed line is used to end the table.---------- ------12 123 1 ------- When headers are omitted. .------------------------First row 12.0 Example of a row that spans multiple lines. Extension: simple_tables Simple tables look like this: Right ------12 123 1 Table: Left Center -----. the default alignment is used (in most cases. left.0 Here's another one. Note the blank line between rows. and right aligned.---------12 12 123 123 1 1 -----. the column is right-aligned.------. Extension: multiline_tables Multiline tables allow headers and table rows to span multiple lines of text (but cells that span multiple columns or rows of the table are not supported). The headers and table rows must each fit on one line. the columns would be right. Column alignments are determined by the position of the header text relative to the dashed line below it:3 If the dashed line is flush with the header text on the right side but extends beyond it on the left.---------12 12 123 123 1 1 Default ------12 123 1 Demonstration of simple table syntax. The column headers may be omitted. respectively. The table must end with a blank line.Pandoc User’s Guide 26 of 50 either before or after the table. If the dashed line is flush with the header text on both sides. If the dashed line extends beyond the header text on both sides.

Headers may be omitted in multiline tables as well as simple tables: ----------.--------------. too. So. if you find that one of the columns is too narrow in the output.0 Example of a row that spans multiple lines. lists.bright color | +---------------+---------------+--------------------+ | Oranges | $2. Grid tables can be created easily using Emacs table mode. Second row 5.------. try widening it in the markdown source.). Note the blank line between rows.Pandoc User’s Guide 27 of 50 Table: Here's the caption. then a blank line. the table parser pays attention to the widths of the columns. or the table may be interpreted as a simple table. and the writers try to reproduce these relative widths in the output. etc. +---------------+---------------+--------------------+ | Fruit | Price | Advantages | +===============+===============+====================+ | Bananas | $1.cures scurvy | | | | . but the row should be followed by a blank line (and then the row of dashes that ends the table). ----------. .m. Alignments are not supported.34 | .------------------------: Here's a multiline table without headers.0 Here's another one. Extension: grid_tables Grid tables look like this: : Sample grid table.10 | . before the header text (unless the headers are omitted). and can be omitted for a headerless table. It. Extension: pipe_tables Pipe tables look like this: 03/03/2015 01:46 p. The rows must be separated by blank lines.------------------------First row 12.built-in wrapper | | | | . but with the following differences: They must begin with a row of dashes.------.--------------. They must end with a row of dashes. It is possible for a multiline table to have just one row. The cells of grid tables may contain arbitrary block elements (multiple paragraphs. code blocks. These work like simple tables.tasty | +---------------+---------------+--------------------+ The row of =s separates the header from the table body. nor are cells that span multiple columns or rows. In multiline tables. may span multiple lines.

37 orange|3. If you want to include an author but no title. to get non-default column alignment. for example. since there is no information available about relative widths. this is a perfectly legal (though ugly) pipe table: fruit| price -----|-----: apple|2.09 The cells of pipe tables cannot contain block elements like paragraphs and lists. Note also that in LaTeX/PDF output. but the horizontal line must still be included. or a title and a date but no author.) The block may contain just a title. . The header can be omitted. (It will be used. The colons indicate column alignment as shown. as they are in the above example. you need a blank line: % % Author 03/03/2015 01:46 p. Since the pipes indicate column boundaries. and cannot span multiple lines. If you want content to wrap within cells.05 pear|1. In particular. The beginning and ending pipe characters are optional. Note: Pandoc also recognizes pipe tables of the following form. columns need not be vertically aligned. a title and an author. Metadata blocks Extension: pandoc_title_block If the file begins with a title block % title % author(s) (separated by semicolons) % date it will be parsed as bibliographic information. The syntax is the same as in PHP markdown extra. in the title of standalone LaTeX or HTML output. Other orgtbl features are not supported. use multiline or grid tables. not regular text. the cells produced by pipe tables will not wrap.Pandoc User’s Guide 28 of 50 | Right | Left | Default | Center | |------:|:-----|---------|:------:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | : Demonstration of pipe table syntax.m. as can produced by Emacs’ orgtbl-mode: | One | Two | |-----+-------| | my | table | | is | nice | The difference is that + is used instead of |. or all three elements. So. but pipes are required between all columns. you’ll need to add colons as above. as it defines column alignments.

etc. The title in the body appears as an H1 element with class “title”. If a title prefix is specified with -T and no title block appears in the document.. In HTML output.Pandoc User’s Guide 29 of 50 % My title % % June 15. all of the following are equivalent: % Author One Author Two % Author One. Author Two % Author One. The man page writer extracts a title.0 will also have “Version 4. or both. (There should be no space between the title and the parentheses. % PANDOC(1) will yield a man page with the title PANDOC and section 1.0” in the header. Thus. A YAML metadata block may occur anywhere 03/03/2015 01:46 p. man page section number. thus: % My title on multiple lines If a document has multiple authors. which may optionally end with a (single-digit) section number in parentheses. Author Two The date must fit on one line.. the authors may be put on separate lines with leading space. Title blocks will always be parsed. Extension: yaml_metadata_block A YAML metadata block is a valid YAML object. links. So. or separated by semicolons. and other header and footer information from the title line. the title prefix will be used by itself as the HTML title. % PANDOC(1) Pandoc User Manuals will also have “Pandoc User Manuals” in the footer. All three metadata fields may contain standard inline formatting (italics. The title is assumed to be the first word on the title line.) at the bottom. % PANDOC(1) Pandoc User Manuals | Version 4.).) Anything after this is assumed to be additional footer and header text. footnotes. 2006 The title may occupy multiple lines. A single pipe character (|) should be used to separate the footer text from the header text. . The title in the document head can have an optional prefix attached (--title-prefix or -T option).m. delimited by a line of three hyphens (---) at the top and a line of three hyphens (---) or three dots (. titles will appear twice: once in the document head – this is the title that will appear at the top of the window in a browser – and once at the beginning of the document body. so it can be suppressed or reformatted with CSS. but continuation lines must begin with leading space. but they will affect the output only when the --standalone (-s) option is chosen.

name: Author One affiliation: University of Somewhere . The pipe character (|) can be used to begin an indented block that will be interpreted literally. you would need a custom template.md chap2.and ends with --. This form is necessary when the field contains blank lines: --title: 'This is the title: it contains a colon' author: .md chap3. The metadata fields will be combined through a left-biased union: if two metadata blocks attempt to set the same field.md metadata.m. a YAML metadata block will be produced only if the -s/--standalone option is used. the value from the first block will be taken.name$$if(author. To use the structured authors in the example. without need for escaping.yaml -s -o book.</p> Note: The author variable in the default templates expects a simple list or string. (They may be given a role by external processors.. because of the way pandoc concatenates input files when several are provided. ..Pandoc User’s Guide 30 of 50 in the document. When pandoc is used with -t markdown to create a markdown document. Metadata can contain lists and objects (nested arbitrarily). but all string scalars will be interpreted as markdown. if a title contains a colon.name: Author Two affiliation: University of Nowhere tags: [nothing. All of the metadata will appear in a single block at the beginning of the document. along with your markdown files: pandoc chap1.</p> <p>It consists of two paragraphs. Note that YAML escaping rules must be followed. Thus. you may also keep the metadata in a separate YAML file and pass it to pandoc as an argument. For example: $for(author)$ $if(author. it must be quoted. but if it is not at the beginning.html Just be sure that the YAML file begins with --. (Note that. it must be preceded by a blank line.affiliation)$ ($author.) A document may contain multiple metadata blocks. Thus. Fields with names ending in an underscore will be ignored by pandoc. It consists of two paragraphs.) Metadata will be taken from the fields of the YAML object and added to any existing document metadata. nothingness] abstract: | This is the abstract. ...or . in writing HTML. for example.affiliation$)$endif$ $else$ $author$ $endif$ $endfor$ 03/03/2015 01:46 p. Template variables will be set automatically from the metadata.name)$ $author. the variable abstract will be set to the HTML equivalent of the markdown in the abstract field: <p>This is the abstract.. for example.

” Note: if your LaTeX template uses the csquotes package..to em-dashes. It will appear in TeX output as ~ and in HTML and XML as \&#160. or \&nbsp. Thus. to ellipses. -. . --. the standard markdown rule will be used.. It will appear in TeX output as \\ and in HTML as <br />. like this: 03/03/2015 01:46 p. even if it would normally indicate formatting. converting straight quotes to curly quotes.. Inline formatting Emphasis To emphasize some text.Pandoc User’s Guide 31 of 50 Backslash escapes Extension: all_symbols_escapable Except inside a code block or inline code. any punctuation or space character preceded by a backslash will be treated literally.) A backslash-escaped space is parsed as a nonbreaking space. if one writes *\*hello\** one will get <em>*hello*</em> instead of <strong>hello</strong> This rule is easier to remember than standard markdown’s rule. Backslash escapes do not work in verbatim contexts. Smart punctuation Extension If the --smart option is specified.. This is a nice alternative to markdown’s “invisible” way of indicating hard line breaks using two trailing spaces on a line. pandoc will detect automatically this and use \enquote{. for example. pandoc will produce typographically correct output.e.! (However. surround it with *s or _.to en-dashes. which allows only the following characters to be backslash-escaped: \`*_{}[]()>#+-. Nonbreaking spaces are inserted after certain abbreviations. a backslash occurring at the end of a line) is parsed as a hard line break.. A backslash-escaped newline (i. and . if the markdown_strict format is used. such as “Mr.} for quoted text.m.

Double * or _ produces strong emphasis: This is **strong emphasis** and __with underscores__.Pandoc User’s Guide 32 of 50 This text is _emphasized with underscores_. (This is to prevent accidental superscripting and subscripting through the ordinary use of ~ and ^. not feas*able*. Extension: intraword_underscores Because _ is sometimes used inside words and identifiers. This ~~is deleted text. 2^10^ is 1024. or backslash-escaped. for example. if you want the letter P with ‘a cat’ in subscripts. for example. and \*neither is this\*. If you want to emphasize just part of a word. subscripts may be written by surrounding the subscripted text by ~ characters. subscript Superscripts may be written by surrounding the superscripted text by ^ characters. (The spaces after the opening backticks and before the closing backticks will be ignored. these spaces must be escaped with backslashes. Thus.~~ Superscripts and subscripts Extension: superscript. begin and end it with ~~. Strikeout Extension: strikeout To strikeout a section of text with a horizontal line. Thus. If the superscripted or subscripted text contains spaces.) Thus. will not trigger emphasis: This is * not emphasized *.) The general rule is that a verbatim span starts with a string of consecutive backticks (optionally followed by a 03/03/2015 01:46 p. and this is *emphasized with asterisks*.m. H~2~O is a liquid. pandoc does not interpret a _ surrounded by alphanumeric characters as an emphasis marker. . use *: feas*ible*. Verbatim To make a short span of text verbatim. use double backticks: Here is a literal backtick `` ` ``. A * or _ character surrounded by spaces. not P~a cat~. put it inside backticks: What is the difference between `>>=` and `>>`? If the verbatim text includes a backtick. use P~a\ cat~.

MediaWiki.) This will work in all output formats that support small caps.. Note that backslash-escapes (and other markdown constructs) do not work in verbatim contexts: This is a backslash followed by an asterisk: `\*`.000 and $30. OpenDocument.haskell} Small caps To write small caps.. ConTeXt It will appear verbatim between $ characters. reStructuredText It will be rendered using an interpreted text role :math:. Texinfo It will be rendered inside a @math command. Extension: inline_code_attributes Attributes can be attached to verbatim text.Pandoc User’s Guide 33 of 50 space) and ends with a string of the same number of backticks (optionally preceded by a space). TeX math will be printed in all output formats. and must not be followed immediately by a digit. groff man It will be rendered verbatim without $’s. backslash-escape them and they won’t be treated as math delimiters. as described here AsciiDoc It will be rendered as latexmath:[. RTF. while the closing $ must have a non-space character immediately to its left.000 won’t parse as math.m. Org-Mode.]. How it is rendered depends on the output format: Markdown. ODT It will be rendered. LaTeX. . just as with fenced code blocks: `<$>`{. you can use an HTML span tag: <span style="font-variant:small-caps. 03/03/2015 01:46 p. The opening $ must have a non-space character immediately to its right. Thus. Textile It will be rendered inside <span class="math"> tags. If for some reason you need to enclose text in literal $ characters. DokuWiki It will be rendered inside <math> tags. and will otherwise appear verbatim. Math Extension: tex_math_dollars Anything between two $ characters will be treated as TeX math. if possible. using unicode characters.">Small caps</span> (The semicolon is optional and there may be space after the colon. $20.

google. it will be rendered using mathml in an inlineequation or informalequation tag. If the --latexmathml option is used.html and images in myfile-images 6. TeX math will appear verbatim between $ characters.m. In browsers that do not support LaTeXMathML. 7. formulas are rendered as images using Google Charts or other compatible web service. DocBook. The MathJax script will be used to render it as formulas. as with RTF. so that they may be styled differently from the surrounding text if needed. If the --gladtex option is used..) 3.Pandoc User’s Guide 34 of 50 Docbook If the --mathml flag is used. If the --mathjax option is used. Slidy. 5. Formulas are put inside a span with class="math". DZSlides.. but it works in Firefox. So.txt -o myfile. they will appear verbatim. If the --webtex option is used. TeX math will be put inside <span> tags (for inline math) or <div> tags (for display math) with class math.htex # produces myfile.. (This trick does not work in all browsers. This should work in all browsers. TeX formulas will be enclosed in <eq> tags in the HTML output. downloaded and embedded in the e-book. The resulting htex file may then be processed by gladTeX. HTML.cgi. The jsMath script will be used to render it. Raw HTML Extension: raw_html 03/03/2015 01:46 p.apis. Otherwise it will be rendered. the Google Chart API will be used (http://chart. 2. The default is to render TeX math as far as possible using unicode characters. S5. 4. . the mimeTeX CGI script will be called to generate images for each TeX formula. The --mimetex option takes an optional URL as argument. The LaTeXMathML script will be used to render it as formulas. Otherwise. the procedure is: pandoc -s --gladtex myfile. and OpenDocument output. if possible. using unicode characters. it will be assumed that the mimeTeX CGI script is at /cgi-bin/mimetex. Docx It will be rendered using OMML math markup. If the --jsmath option is used. If no URL is specified. TeX math will be displayed between $ or $$ characters and put in <span> tags with class LaTeX. If the --mimetex option is used.com/chart?cht=tx&chl=). TeX math will be displayed between \(. If no URL is specified.htex gladtex -d myfile-images myfile.. TeX formulas will be converted to <img> tags that link to an external script that converts formulas to images. EPUB The way math is rendered in HTML will depend on the command-line options selected: 1. The formula will be URL-encoded and concatenated with the URL provided.\) (for inline math) or \[. which will produce image files for each formula and an html file with links to these images.\] (for display math) and put in <span> tags with class math. FictionBook2 If the --webtex option is used.

but it has been made an extension so that it can be disabled if desired. Thus. S5. Extension: native_spans Use native pandoc Span blocks for content inside <span> tags. Pandoc will turn <table> <tr> <td>*one*</td> <td>[a link](http://google. EPUB.com)</td> </tr> </table> into <table> <tr> <td><em>one</em></td> <td><a href="http://google. one can surround a block of markdown text with <div> tags without preventing it from being interpreted as markdown. Extension: native_divs Use native pandoc Div blocks for content inside <div> tags. * does not signify emphasis. Slideous. so (for example). and Textile output. pandoc interprets material between HTML block tags as markdown. For the most part this should give the same output as raw_html. Within these blocks. and suppressed in other formats. This departure from standard markdown should make it easier to mix markdown with HTML block elements.com">a link</a></td> </tr> </table> whereas Markdown. Extension: markdown_in_html_blocks Standard markdown allows you to include HTML “blocks”: blocks of HTML between balanced tags that are separated from the surrounding text with blank lines. For example. For the most part this should give the same output as markdown_in_html_blocks. Slidy. not markdown. everything is interpreted as HTML. Pandoc behaves this way when the markdown_strict format is used.Pandoc User’s Guide 35 of 50 Markdown allows you to insert raw HTML (or DocBook) anywhere in a document (except verbatim contexts. (Technically this is not an extension. >.) The raw HTML is passed through unchanged in HTML. Markdown. DZSlides. since standard markdown allows it. 03/03/2015 01:46 p.m. There is one exception to this rule: text between <script> and <style> tags is not interpreted as markdown. but it makes it easier to write pandoc filters to manipulate groups of blocks. where <. but by default. and & are interpreted literally). for example. and start and end at the left margin. but it makes it easier to write pandoc filters to manipulate groups of inlines.pl will preserve it as is. .

LaTeX. Inline TeX commands will be preserved and passed unchanged to the LaTeX and ConTeXt writers. Links Markdown allows links to be specified in several ways. you can use LaTeX to include BibTeX citations: This result was proved in \cite{jones. c⟩ In LaTeX output. for example. and ConTeXt. it will become a link: <http://google. 03/03/2015 01:46 p. b. the following will work in all output formats.ham> Inline links An inline link consists of the link text in square brackets. So. Inline LaTeX is ignored in output formats other than Markdown. . pandoc allows raw LaTeX.Pandoc User’s Guide 36 of 50 Raw TeX Extension: raw_tex In addition to raw HTML. and ConTeXt to be included in a document. (Optionally. LaTeX macros Extension: latex_macros For output formats other than LaTeX. Automatic links If you enclose a URL or email address in pointy brackets. the \newcommand definition will simply be passed unchanged to the output. for example. TeX. like \begin{tabular}{|l|l|}\hline Age & Frequency \\ \hline 18--25 & 15 \\ 26--35 & 33 \\ 36--45 & 22 \\ \hline \end{tabular} the material between the begin and end tags will be interpreted as raw LaTeX.m. pandoc will parse LaTeX \newcommand and \renewcommand definitions and apply the resulting macros to all LaTeX math.com> <sam@green. Note that in LaTeX environments. followed by the URL in parentheses.eggs. Thus.1967}. not as markdown. not just LaTeX: ⟨a.

The link consists of link text in square brackets. The link text can contain formatting (such as emphasis).Pandoc User’s Guide 37 of 50 the URL can be followed by a link title. and optionally (after a space) a link title either in quotes or in parentheses.org "click here for a good time!"). .m. which may occur elsewhere in the document (either before or after the link).org "The free software foundation" Note that link labels are not case sensitive. reference link definitions cannot occur in nested constructions such as list items or block quotes. or omitted entirely: See [my website][]. or [my website]. followed by a colon and a space. but the title cannot. (There can be space between the two.pl and most other markdown implementations. The label must not be parseable as a citation (assuming the citations extension is enabled): citations take precedence over link labels. optional" /foo http://fsf. in quotes. So the following is fine in pandoc. [my website]: http://foo. So.baz Note: In Markdown. the link itself and the link definition.ham) Reference links An explicit reference link has two parts. Email addresses in inline links are not autodetected. Pandoc lifts this arbitrary seeming restriction.org (The free software foundation) /bar#special 'A title in single quotes' The URL may optionally be surrounded by angle brackets: [my label 5]: <http://foo.) The link definition consists of the bracketed label.bar. the second pair of brackets is empty. so they have to be prefixed with mailto: [Write me!](mailto:sam@green.baz> The title may go on the next line: [my label 3]: http://fsf.eggs. followed by a label in square brackets. Here are some examples: [my [my [my [my label label label label 1]: 2]: 3]: 4]: /foo/bar. though not in most other implementations: 03/03/2015 01:46 p. and here's [one with a title](http://fsf.bar. There can be no space between the bracketed part and the parenthesized part.) This is an [inline link](/url).html "My title. this will work: Here is [my link][FOO] [Foo]: /bar/baz In an implicit reference link. followed by the URL.

For example: See the [Introduction](#introduction). just make sure it is not the only thing in the paragraph.gif Extension: implicit_figures An image occurring by itself in a paragraph will be rendered as a figure with a caption.) The image’s alt text will be used as the caption. and ConTeXt. ![This is the caption](/url/of/image. below). together with a caption in a p with class caption. [Introduction]: #introduction Internal links are currently supported for HTML formats (including HTML slide shows and EPUB). in HTML. use the automatically generated identifier (see Header identifiers in HTML. LaTeX. The link text will be used as the image’s alt text: ![la lune](lalune. One way to do this is to insert a nonbreaking space after the image: ![This image won't be a figure](/url/of/image. a figure environment will be used. using the following syntax: Here is a footnote reference. > > [quote]: /foo Internal links To link to another section of the same document. the image will be placed in a div with class figure. .png) If you just want a regular inline image. and ConTeXt.m.Pandoc User’s Guide 38 of 50 > My block [quote].[^longnote] 03/03/2015 01:46 p. Images A link immediately preceded by a ! will be treated as an image.png)\ Footnotes Extension: footnotes Pandoc’s markdown allows footnotes. or See the [Introduction].jpg "Voyage to the moon") ![movie reel] [movie reel]: movie.[^1] and another.4 (In LaTeX. LaTeX.

^[Inlines notes are easier to write. . because it isn't indented. since you don't have to pick an identifier and move down to type the note. { some. These identifiers are used only to correlate the footnote reference with the note itself. This paragraph won't be part of the note. etc. The bibliography may have any of these formats: Format MODS BibLaTeX BibTeX RIS File extension . Extension: inline_notes Inline footnotes are also allowed (though. Basic usage is pandoc --filter pandoc-citeproc myinput. multi-paragraph footnotes work like multi-paragraph list items. tables. pandoc can automatically generate citations and a bibliography in a number of styles.] Inline and regular footnotes may be mixed freely.code } The whole paragraph can be indented. in the output. unlike regular notes. pandoc-citeproc. or newlines.m.ris 03/03/2015 01:46 p. They may appear anywhere except inside other block elements (lists. The identifiers in footnote references may not contain spaces. Citations Extension: citations Using an external filter.Pandoc User’s Guide 39 of 50 [^1]: Here is the footnote. they cannot contain multiple paragraphs). The footnotes themselves need not be placed at the end of the document. In this way.txt In order to use this feature. footnotes will be numbered sequentially.mods . or just the first line.bib .bibtex . tabs.). [^longnote]: Here's one with multiple blocks. Subsequent paragraphs are indented to show that they belong to the previous footnote. block quotes. The syntax is as follows: Here is an inline note. you will need to specify a bibliography file using the bibliography metadata field in a YAML metadata section.

enl EndNote XML .org/styles for easy browsing. and internal punctuation characters (:.bibtex to force BibTeX.1038/nmat3283' DOI: 10. Each citation must have a key.. which comes with pandoc-citeproc. A primer on creating and modifying CSL styles can be found at http://citationstyles. A repository of CSL styles can be found at https://github. also @smith04. you will need to specify a CSL 1.org/10.m. a locator. 33-35.copac JSON citeproc .doi.bib can generally be used with both BibTeX and BibLaTeX files. and may contain alphanumerics. . See also http://zotero.id: fenner2012a title: One-click science marketing author: . can help produce these from a MODS reference collection.xml ISI . 03/03/2015 01:46 p.family: Fenner given: Martin container-title: Nature Materials volume: 11 URL: 'http://dx. for example: --references: .org/downloads/primer. 1]. composed of ‘@’ + the citation identifier from the database. (The program mods2yaml. Here are some examples: Blah blah [see @doe99.#$%&-+?<>~/). To use another style. Citations go inside square brackets and are separated by semicolons. 38-39 and *passim*].) By default. and a suffix. Blah blah [@doe99.html. The citation key must begin with a letter or _. As an alternative to specifying a bibliography file. pp.1038/nmat3283 issue: 4 publisher: Nature Publishing Group page: 261-263 type: article-journal issued: year: 2012 month: 3 ..wos MEDLINE . but you can use .com/citation-style-language/styles.Pandoc User’s Guide 40 of 50 Format File extension EndNote . pp. and may optionally have a prefix. pandoc-citeproc will use a Chicago author-date format for citations and references. The field should contain an array of YAML-encoded references.0 style file in the csl metadata field. 33-35. you can include the citation data directly in the references field of the document’s YAML metadata.json Note that . ch.medline Copac . _.

Extension: ignore_line_breaks 03/03/2015 01:46 p.. as follows: @smith04 says blah. Non-pandoc extensions The following markdown syntax extensions are not enabled by default in pandoc.. If you want to include items in the bibliography without actually citing them in the body text. If the style calls for a list of works cited. it will be placed at the end of the document. item2.. with no intervening blank space. the document will contain a citation for item3 only. # References The bibliography will be inserted after this header. for example. so that the section will not be numbered. . but may be enabled by adding +EXTENSION to the format name. Extension: hard_line_breaks Causes all newlines within a paragraph to be interpreted as hard line breaks instead of spaces. but the bibliography will contain entries for item1. Thus. Note that the unnumbered class will be added to this header. markdown+hard_line_breaks is markdown with hard line breaks. Normally. @item3 In this example. you will want to end your document with an appropriate header: last paragraph.m. You can also write an in-text citation.Pandoc User’s Guide 41 of 50 Blah blah [@smith04. This can be useful when the author is already mentioned in the text: Smith says blah [-@smith04]. @smith04 [p.. @item2 . @doe99]. where EXTENSION is the name of the extension. and item3. Extension: lists_without_preceding_blankline Allow a list to occur right after a paragraph. A minus sign (-) before the @ will suppress mention of the author in the citation. you can define a dummy nocite metadata field and put the citations there: --nocite: | @item1. 33] says blah.

. Extension: abbreviations Parses PHP Markdown Extra abbreviation keys. This option is intended for use with East Asian languages where spaces are not used between words. Extension: tex_math_single_backslash Causes anything between \( and \) to be interpreted as inline TeX math. Extension: autolink_bare_uris Makes all absolute URIs into links. Extension: ascii_identifiers Causes the identifiers produced by auto_identifiers to be pure ASCII. and non-latin letters are omitted.. 2008 This is a sample mmd title block. If pandoc_title_block or yaml_metadata_block is enabled..m. abbreviation keys are simply skipped (as opposed to being parsed as paragraphs). so if this extension is enabled. like *[HTML]: Hyper Text Markup Language Note that the pandoc document model does not support abbreviations. Extension: mmd_title_block Enables a MultiMarkdown style title block at the top of the document. for example: Title: Author: Date: Comment: My title John Doe September 1. and anything between \[ and \] to be interpreted as display TeX math. pandoc interprets material inside block-level tags as markdown.>. it will take precedence over mmd_title_block. but text is divided into lines for readability. Note: a drawback of this extension is that it precludes escaping ( and [. See the MultiMarkdown documentation for details. This extension changes the behavior so that markdown is only parsed inside block-level tags if the tags have the attribute markdown=1. with a field spanning multiple lines. and anything between \\[ and \\] to be interpreted as display TeX math. Accents are stripped off of accented latin letters. Extension: markdown_attribute By default. even when not surrounded by pointy braces <. 03/03/2015 01:46 p.Pandoc User’s Guide 42 of 50 Causes newlines within a paragraph to be ignored. rather than being treated as spaces or as hard line breaks. Extension: tex_math_double_backslash Causes anything between \\( and \\) to be interpreted as inline TeX math.

pl) raw_html Extensions with formats other than markdown Some of the extensions discussed above can be used with formats other than markdown: auto_identifiers can be used with latex.12. footnotes. intraword_underscores. all_symbols_escapable. Extension: compact_definition_lists Activates the definition list syntax of pandoc 1. the space between a term and its definition does not affect anything. tex_math_double_backslash. rst. and textile input (and is used by default). raw_tex. header_attributes. Lazy wrapping of paragraphs is not allowed: the entire definition must be indented four spaces. intraword_underscores. tex_math_dollars. raw_html. mediawiki. so they are presently just ignored. Extension: mmd_header_identifiers Parses multimarkdown style header identifiers (in square brackets. fenced_code_blocks. markdown_attribute. ascii_identifiers. tex_math_single_backslash. implicit_header_references. To get a “tight” or “compact” list. .x and earlier.Pandoc User’s Guide 43 of 50 Extension: link_attributes Parses multimarkdown style key-value attributes on link and image references. intraword_underscores. markdown_github (Github-flavored Markdown) pipe_tables. definition_lists. strikeout. autolink_bare_uris. hard_line_breaks markdown_mmd (MultiMarkdown) pipe_tables raw_html. abbreviations. tex_math_single_backslash. Note that pandoc’s internal document model provides nowhere to put these. This syntax differs from the one described above in several respects: No blank line is required between consecutive items of the definition list. link_attributes. and tex_math_double_backslash can be used 03/03/2015 01:46 p.5 Markdown variants In addition to pandoc’s extended markdown. pipe_tables. auto_identifiers. definition_lists. backtick_code_blocks. markdown_attribute. mmd_title_block. fenced_code_blocks. markdown_phpextra mmd_header_identifiers markdown_strict (Markdown.m. the following markdown variants are supported: (PHP Markdown Extra) footnotes. auto_identifiers. after the header but before any trailing #s in an ATX header). omit space between consecutive items. raw_html.

reveal.Eat eggs . simply type pandoc -t FORMAT -s habits. dzslides.js).jpg) ## Going to sleep . Slideous. the file produced by pandoc with the -s/--standalone option embeds a link to javascripts and CSS files.js (for reveal. 2005 # In the morning ## Getting up . slideous-url. slideous. habits. revealjs-url. (These paths can be changed by setting the slidy-url.html where FORMAT is either s5.Eat spaghetti . Slideous. above. or s5-url variables. the (relatively short) javascript and css are included in the file by default. DZSlides. or at the Slidy website at w3.Count sheep To produce an HTML/javascript slide show.Get out of bed ## Breakfast . (This is handy for reading web pages formatted using MathJax. the --self-contained option can be used to produce a single file that contains 03/03/2015 01:46 p. .js. You can also produce a PDF slide show using LaTeX beamer. slidy. reveal. and S5.Drink wine -----------------![picture of spaghetti](images/spaghetti.txt: % Habits % John Doe % March 22.Drink coffee # In the evening ## Dinner .txt -o habits. With all HTML slide formats. or reveal.Turn off alarm . using S5. see --variable. which are assumed to be available at the relative path s5/default (for S5).org (for Slidy).js. There are five ways to do this. slideous (for Slideous). Slidy.) Producing slide shows with Pandoc You can use Pandoc to produce an HTML + javascript slide presentation that can be viewed via a web browser.Get in bed . for example.m. or revealjs. For Slidy. Here’s the markdown source for a simple slide show.Pandoc User’s Guide 44 of 50 with html input.) For DZSlides.

03/03/2015 01:46 p.js slide show can also be converted to a PDF by printing it to a file from the browser.) These rules are designed to support many different styles of slide show. you can just use level 1 headers for all each slide. this can be disabled by commenting out some lines in the default template. if slide level is 2. Note: in reveal.Eat spaghetti > . Structuring the slide show By default. Incremental lists By default. The document is carved up into slides according to the following rules: A horizontal rule always starts a new slide. to display incrementally without the -i option and all at once with the -i option). use the -i option.” If you want your lists to display incrementally (one item at a time). as in the example above. and not another header. so 2 is the slide level. Headers below the slide level in the hierarchy create headers within a slide. with level 1 headers building horizontally and level 2 headers building vertically. images. these writers produces lists that display “all at once.” which just contain the section title and help to break the slide show into sections. and videos.) But you can also structure the slide show into sections. (In the case of beamer. level 1 headers are always followed by level 2 headers.js. . (In that case. level 1 will be the slide level. It is not recommended that you use deeper nesting of section levels with reveal. A title page is constructed automatically from the document’s title block. Headers above the slide level in the hierarchy create “title slides.js slide shows. a two-dimensional layout will be produced. To produce a PDF slide show using beamer.m. A header at the slide level always starts a new slide. If you don’t care about structuring your slides into sections and subsections.txt -o habits. stylesheets. somewhere in the document. if present.Pandoc User’s Guide 45 of 50 all of the data necessary to display the slide show. including linked scripts. This default can be overridden using the --slide-level option.Drink wine In this way incremental and nonincremental lists can be mixed in a single document. the slide level is the highest header level in the hierarchy that is followed immediately by content. which are followed by content.pdf Note that a reveal. If you want a particular list to depart from the default (that is. type pandoc -t beamer habits. In the example above. put it in a block quote: > .

For reveal.allowframebreaks} Speaker notes reveal. allowing you to style individual slides.like this list </div> To show the notes window. you can specify a beamer “theme” or “colortheme” using the -V option: pandoc -t beamer habits. Pandoc will look there for any files it does not find in the user data directory. for example: -V theme=moon Or you can specify a custom stylesheet using the --css option. In Beamer. To style beamer slides. causing multiple slides to be created if the content overfills the frame. which sets the allowframebreaks option. the CSS is included in the HTML file itself. You can add notes to your markdown document thus: <div class="notes"> This is my note. The originals may be found in pandoc’s system data directory (generally $CABALDIR/pandoc-VERSION/s5/default). . the only header attribute that affects slides is the allowframebreaks class.txt -V theme:Warsaw -o habits. . press s while viewing the presentation.m. $DATADIR/slidy (for Slidy). content after the pause Styling the slides You can change the style of HTML slides by putting customized CSS files in $DATADIR/s5/default (for S5). This is recommended especially for bibliographies: # References {. above).Pandoc User’s Guide 46 of 50 Inserting pauses You can add “pauses” within a slide by including a paragraph containing three dots. and may be modified there. or $DATADIR/slideous (for Slideous).js has good support for speaker notes. Notes are not yet supported for other slide 03/03/2015 01:46 p. separated by spaces: # Slide with a pause content before the pause .js.It can contain markdown .pdf Note that header attributes will turn into slide attributes (on a <div> or <section>) in HTML slide formats. For dzslides. . themes can be used by setting the theme variable. . where $DATADIR is the user data directory (see --data-dir.

role: author text: John Smith . and text. OLCC. but pandoc will attempt to translate the human-readable versions (like “author” and “editor”) to the appropriate marc relators. or an object with fields file-as and type.role: editor text: Sarah Jones identifier: . 03/03/2015 01:46 p. or a list of such objects. Here is an example: --title: . or a list of such objects. (Only the year is necessary.234234. OCLC. edition.m. ISMN-13.234/33 publisher: My Press rights: © 2007 John Smith. ISBN-A. or an object with fields role. subtitle. subject A string value or a list of such values. creator Either a string value. date A string value in YYYY-MM-DD format. DOI. The following fields are recognized: identifier Either a string value or an object with fields text and scheme. language A string value in RFC5646 format. contributor Same format as creator. collection. JP. type A string value. but if the source document is markdown. description A string value. EPUB Metadata EPUB metadata may be specified using the --epub-metadata option. Pandoc will default to the local language if nothing is specified. GTIN-13. extended. ISMN-10. short. title Either a string value. UPC. Valid values for role are marc relators.Pandoc User’s Guide 47 of 50 formats. it is better to use a YAML metadata block. URN.type: main text: My Book . Valid values for type are main. LCCN. but the notes will not appear on the slides themselves.scheme: DOI text: doi:10.type: subtitle text: An investigation of metadata creator: . Legal deposit number. ... CC BY-NC . Valid values for scheme are ISBN-10. ISBN-13. file-as.) Pandoc will attempt to convert other common date formats. GTIN-14.

code blocks with class haskell will be rendered inside code environments. relation A string value. (This is because ghc treats ‘#’ characters in column 1 as introducing line numbers. so they will not be treated as Haskell code. text in code environments will be parsed as Haskell code. Text between \begin{code} and \end{code} will also be treated as Haskell code. Specifies the page-progression-direction spine attribute. . code blocks with class haskell will be rendered with class literatehaskell and bird tracks. or latex for input or output. pandoc will treat the document as literate Haskell source. In markdown output. cover-image A string value (path to cover image). “bird track” sections will be parsed as Haskell code. html or html5 for output only).m. “bird track” sections will be parsed as Haskell code rather than block quotations. In LaTeX output. Literate Haskell support If you append +lhs (or +literate_haskell) to an appropriate input or output format (markdown.) In restructured text input. In addition. rst. pandoc -f markdown+lhs -t html+lhs 03/03/2015 01:46 p. This means that In markdown input. In restructured text output. In HTML output. Examples: pandoc -f markdown+lhs -t html reads literate Haskell source formatted with markdown conventions and writes ordinary HTML (without bird tracks). page-progression-direction Either ltr or rtl. In LaTeX input. coverage A string value. beamer. headers will be rendered setext-style (with underlines) rather than atx-style (with ‘#’ characters). rights A string value. and block quotations will be indented one space.Pandoc User’s Guide 48 of 50 format A string value. code blocks with class haskell will be rendered using bird tracks. markdown_strict. code blocks with classes haskell and literate will be rendered using bird tracks. stylesheet A string value (path to CSS stylesheet).

Jonathan Daugherty. (See COPYRIGHT for full copyright and warranty notices. The point of this rule is to ensure that normal paragraphs starting with people’s initials.) Other contributors include Recai Oktaş. Jamie F.lua Creating a custom writer requires writing a lua function for each possible element in a pandoc document.lua Authors © 2006-2013 John MacFarlane (jgm at berkeley dot edu). Masayoshi Takahashi. Olson. Andrea Rossato. To get a documented example which you can modify according to your needs. Released under the GPL. 1. I have been influenced by the suggestions of David Wheeler. Denis Laxalde. Brent Yorgey.Pandoc User’s Guide 49 of 50 writes HTML with the Haskell code in bird tracks. who proposed it on the Markdown discussion list. like B. Peter Wang. This rule will not prevent (C) 2007 Joe Smith from being interpreted as a list item. Antoine Latter. This software carries no warranty of any kind. Custom writers Pandoc can be extended with custom writers written in lua. or ODT. so it can be copied and pasted as literate Haskell source. Jérémy Bobbio. This feature is not yet implemented for RTF. a backslash escape can be used: (C\) 2007 Joe Smith ↩ 2. Paul Rivier. Kelsey Hightower. version 2 or greater. Luke Plant. Paulo Tanimoto. shreevatsa. so lua need not be installed separately. Matthew Pickering. mb21.↩ 3. Jesse Rosenthal.m. do pandoc --print-default-data-file sample.trappe. (Pandoc includes a lua interpreter. Russell was an English philosopher. B. simply specify the path to the lua script in place of the output format. you’ll just get 03/03/2015 01:46 p. Eric Seidel. Eric Kow. Ralf Stephan. Arlo O’Keeffe. Christopher Sawicki.↩ 4. Gavin Beatty. This scheme is due to Michel Fortin. In those formats.public.) To use a custom writer. do not get treated as list items. Albert Krewinkel. Bradley Kuhn. Sergey Astanin. Nathan Gass. Scott Michel. For example: pandoc -t data/sample. Puneeth Chaganti. . thsutton. qerub. In this case. OpenDocument. rodja. David Lazar. Justin Bogner. infinity0x.

↩ 5.” the first of which is lazily wrapped. consider the following example: bar : foo : definition definition Is this a single list item with two definitions of “bar. . or two list items? To remove the ambiguity we must either disallow lazy wrapping or require a blank line between list items.m. with no caption.Pandoc User’s Guide 50 of 50 an image in a paragraph by itself.↩ 03/03/2015 01:46 p. To see why laziness is incompatible with relaxing the requirement of a blank line between items.