git.iko.soy/typeable/pandoc
on issue5354 help sign in
typeable/pandoc/MANUAL.txt
5229 lines 180 kB history raw
1% Pandoc User's Guide
2% John MacFarlane
3% March 2, 2019
5Synopsis
6========
8`pandoc` [*options*] [*input-file*]...
10Description
11===========
13Pandoc is a [Haskell] library for converting from one markup format to
14another, and a command-line tool that uses this library.
16Pandoc can convert between numerous markup and word processing formats,
17including, but not limited to, various flavors of [Markdown], [HTML],
18[LaTeX] and [Word docx]. For the full lists of input and output formats,
19see the `--from` and `--to` [options below][General options].
20Pandoc can also produce [PDF] output: see [creating a PDF], below.
22Pandoc's enhanced version of Markdown includes syntax for [tables],
23[definition lists], [metadata blocks], [footnotes], [citations], [math],
24and much more. See below under [Pandoc's Markdown].
26Pandoc has a modular design: it consists of a set of readers, which parse
27text in a given format and produce a native representation of the document
28(an _abstract syntax tree_ or AST), and a set of writers, which convert
29this native representation into a target format. Thus, adding an input
30or output format requires only adding a reader or writer. Users can also
31run custom [pandoc filters] to modify the intermediate AST.
33Because pandoc's intermediate representation of a document is less
34expressive than many of the formats it converts between, one should
35not expect perfect conversions between every format and every other.
36Pandoc attempts to preserve the structural elements of a document, but
37not formatting details such as margin size. And some document elements,
38such as complex tables, may not fit into pandoc's simple document
39model. While conversions from pandoc's Markdown to all formats aspire
40to be perfect, conversions from formats more expressive than pandoc's
41Markdown can be expected to be lossy.
43Using pandoc
44------------
46If no *input-files* are specified, input is read from *stdin*.
47Output goes to *stdout* by default. For output to a file,
48use the `-o` option:
50 pandoc -o output.html input.txt
52By default, pandoc produces a document fragment. To produce a standalone
53document (e.g. a valid HTML file including `<head>` and `<body>`),
54use the `-s` or `--standalone` flag:
56 pandoc -s -o output.html input.txt
58For more information on how standalone documents are produced, see
59[Templates] below.
61If multiple input files are given, `pandoc` will concatenate them all (with
62blank lines between them) before parsing. (Use `--file-scope` to parse files
63individually.)
65Specifying formats
66------------------
68The format of the input and output can be specified explicitly using
69command-line options. The input format can be specified using the
70`-f/--from` option, the output format using the `-t/--to` option.
71Thus, to convert `hello.txt` from Markdown to LaTeX, you could type:
73 pandoc -f markdown -t latex hello.txt
75To convert `hello.html` from HTML to Markdown:
77 pandoc -f html -t markdown hello.html
79Supported input and output formats are listed below under [Options]
80(see `-f` for input formats and `-t` for output formats). You
81can also use `pandoc --list-input-formats` and
82`pandoc --list-output-formats` to print lists of supported
83formats.
85If the input or output format is not specified explicitly, `pandoc`
86will attempt to guess it from the extensions of the filenames.
87Thus, for example,
89 pandoc -o hello.tex hello.txt
91will convert `hello.txt` from Markdown to LaTeX. If no output file
92is specified (so that output goes to *stdout*), or if the output file's
93extension is unknown, the output format will default to HTML.
94If no input file is specified (so that input comes from *stdin*), or
95if the input files' extensions are unknown, the input format will
96be assumed to be Markdown.
98Character encoding
99------------------
101Pandoc uses the UTF-8 character encoding for both input and output.
102If your local character encoding is not UTF-8, you
103should pipe input and output through [`iconv`]:
105 iconv -t utf-8 input.txt | pandoc | iconv -f utf-8
107Note that in some output formats (such as HTML, LaTeX, ConTeXt,
108RTF, OPML, DocBook, and Texinfo), information about
109the character encoding is included in the document header, which
110will only be included if you use the `-s/--standalone` option.
112[`iconv`]: http://www.gnu.org/software/libiconv/
114Creating a PDF
115--------------
117To produce a PDF, specify an output file with a `.pdf` extension:
119 pandoc test.txt -o test.pdf
121By default, pandoc will use LaTeX to create the PDF, which requires
122that a LaTeX engine be installed (see `--pdf-engine` below).
124Alternatively, pandoc can use [ConTeXt], `pdfroff`, or any of the
125following HTML/CSS-to-PDF-engines, to create a PDF: [`wkhtmltopdf`],
126[`weasyprint`] or [`prince`].
127To do this, specify an output file with a `.pdf` extension, as before,
128but add the `--pdf-engine` option or `-t context`, `-t html`, or `-t ms`
129to the command line (`-t html` defaults to `--pdf-engine=wkhtmltopdf`).
131PDF output uses [variables for LaTeX] (with a LaTeX engine);
132[variables for ConTeXt] (with ConTeXt); or [variables for `wkhtmltopdf`]
133(an HTML/CSS-to-PDF engine; `--css` also affects the output).
135To debug the PDF creation, it can be useful to look at the intermediate
136representation: instead of `-o test.pdf`, use for example `-s -o test.tex`
137to output the generated LaTeX. You can then test it with `pdflatex test.tex`.
139When using LaTeX, the following packages need to be available
140(they are included with all recent versions of [TeX Live]):
141[`amsfonts`], [`amsmath`], [`lm`], [`unicode-math`],
142[`ifxetex`], [`ifluatex`], [`listings`] (if the
143`--listings` option is used), [`fancyvrb`], [`longtable`],
144[`booktabs`], [`graphicx`] and [`grffile`] (if the document
145contains images), [`hyperref`], [`xcolor`],
146[`ulem`], [`geometry`] (with the `geometry` variable set),
147[`setspace`] (with `linestretch`), and
148[`babel`] (with `lang`). The use of `xelatex` or `lualatex` as
149the PDF engine requires [`fontspec`]. `xelatex` uses
150[`polyglossia`] (with `lang`), [`xecjk`], and [`bidi`] (with the
151`dir` variable set). If the `mathspec` variable is set,
152`xelatex` will use [`mathspec`] instead of [`unicode-math`].
153The [`upquote`] and [`microtype`] packages are used if
154available, and [`csquotes`] will be used for [typography]
155if `\usepackage{csquotes}` is present in the template or
156included via `/H/--include-in-header`. The [`natbib`],
157[`biblatex`], [`bibtex`], and [`biber`] packages can optionally
158be used for [citation rendering]. The following packages
159will be used to improve output quality if present, but
160pandoc does not require them to be present:
161[`upquote`] (for straight quotes in verbatim environments),
162[`microtype`] (for better spacing adjustments),
163[`parskip`] (for better inter-paragraph spaces),
164[`xurl`] (for better line breaks in URLs),
165[`bookmark`] (for better PDF bookmarks),
166and [`footnotehyper`] or [`footnote`] (to allow footnotes in tables).
168[TeX Live]: http://www.tug.org/texlive/
169[`amsfonts`]: https://ctan.org/pkg/amsfonts
170[`amsmath`]: https://ctan.org/pkg/amsmath
171[`babel`]: https://ctan.org/pkg/babel
172[`biber`]: https://ctan.org/pkg/biber
173[`biblatex`]: https://ctan.org/pkg/biblatex
174[`bibtex`]: https://ctan.org/pkg/bibtex
175[`bidi`]: https://ctan.org/pkg/bidi
176[`bookmark`]: https://ctan.org/pkg/bookmark
177[`booktabs`]: https://ctan.org/pkg/booktabs
178[`csquotes`]: https://ctan.org/pkg/csquotes
179[`fancyvrb`]: https://ctan.org/pkg/fancyvrb
180[`fontspec`]: https://ctan.org/pkg/fontspec
181[`footnote`]: https://ctan.org/pkg/footnote
182[`footnotehyper`]: https://ctan.org/pkg/footnotehyper
183[`geometry`]: https://ctan.org/pkg/geometry
184[`graphicx`]: https://ctan.org/pkg/graphicx
185[`grffile`]: https://ctan.org/pkg/grffile
186[`hyperref`]: https://ctan.org/pkg/hyperref
187[`ifluatex`]: https://ctan.org/pkg/ifluatex
188[`ifxetex`]: https://ctan.org/pkg/ifxetex
189[`listings`]: https://ctan.org/pkg/listings
190[`lm`]: https://ctan.org/pkg/lm
191[`longtable`]: https://ctan.org/pkg/longtable
192[`mathspec`]: https://ctan.org/pkg/mathspec
193[`microtype`]: https://ctan.org/pkg/microtype
194[`natbib`]: https://ctan.org/pkg/natbib
195[`parskip`]: https://ctan.org/pkg/parskip
196[`polyglossia`]: https://ctan.org/pkg/polyglossia
197[`prince`]: https://www.princexml.com/
198[`setspace`]: https://ctan.org/pkg/setspace
199[`ulem`]: https://ctan.org/pkg/ulem
200[`unicode-math`]: https://ctan.org/pkg/unicode-math
201[`upquote`]: https://ctan.org/pkg/upquote
202[`weasyprint`]: http://weasyprint.org
203[`wkhtmltopdf`]: https://wkhtmltopdf.org
204[`xcolor`]: https://ctan.org/pkg/xcolor
205[`xecjk`]: https://ctan.org/pkg/xecjk
206[`xurl`]: https://ctan.org/pkg/xurl
210Reading from the Web
211--------------------
213Instead of an input file, an absolute URI may be given. In this case
214pandoc will fetch the content using HTTP:
216 pandoc -f html -t markdown http://www.fsf.org
218It is possible to supply a custom User-Agent string or other
219header when requesting a document from a URL:
221 pandoc -f html -t markdown --request-header User-Agent:"Mozilla/5.0" \
222 http://www.fsf.org
224Options
225=======
227General options {.options}
228---------------
230`-f` *FORMAT*, `-r` *FORMAT*, `--from=`*FORMAT*, `--read=`*FORMAT*
232: Specify input format. *FORMAT* can be:
234 ::: {#input-formats}
235 - `commonmark` ([CommonMark] Markdown)
236 - `creole` ([Creole 1.0])
237 - `docbook` ([DocBook])
238 - `docx` ([Word docx])
239 - `dokuwiki` ([DokuWiki markup])
240 - `epub` ([EPUB])
241 - `fb2` ([FictionBook2] e-book)
242 - `gfm` ([GitHub-Flavored Markdown]),
243 or the deprecated and less accurate `markdown_github`;
244 use [`markdown_github`](#markdown-variants) only
245 if you need extensions not supported in [`gfm`](#markdown-variants).
246 - `haddock` ([Haddock markup])
247 - `html` ([HTML])
248 - `ipynb` ([Jupyter notebook])
249 - `jats` ([JATS] XML)
250 - `json` (JSON version of native AST)
251 - `latex` ([LaTeX])
252 - `markdown` ([Pandoc's Markdown])
253 - `markdown_mmd` ([MultiMarkdown])
254 - `markdown_phpextra` ([PHP Markdown Extra])
255 - `markdown_strict` (original unextended [Markdown])
256 - `mediawiki` ([MediaWiki markup])
257 - `man` ([roff man])
258 - `muse` ([Muse])
259 - `native` (native Haskell)
260 - `odt` ([ODT])
261 - `opml` ([OPML])
262 - `org` ([Emacs Org mode])
263 - `rst` ([reStructuredText])
264 - `t2t` ([txt2tags])
265 - `textile` ([Textile])
266 - `tikiwiki` ([TikiWiki markup])
267 - `twiki` ([TWiki markup])
268 - `vimwiki` ([Vimwiki])
269 :::
271 Extensions can be individually enabled or disabled by
272 appending `+EXTENSION` or `-EXTENSION` to the format name.
273 See [Extensions] below, for a list of extensions and
274 their names. See `--list-input-formats` and `--list-extensions`,
275 below.
277`-t` *FORMAT*, `-w` *FORMAT*, `--to=`*FORMAT*, `--write=`*FORMAT*
279: Specify output format. *FORMAT* can be:
281 ::: {#output-formats}
282 - `asciidoc` ([AsciiDoc]) or `asciidoctor` ([AsciiDoctor])
283 - `beamer` ([LaTeX beamer][`beamer`] slide show)
284 - `commonmark` ([CommonMark] Markdown)
285 - `context` ([ConTeXt])
286 - `docbook` or `docbook4` ([DocBook] 4)
287 - `docbook5` (DocBook 5)
288 - `docx` ([Word docx])
289 - `dokuwiki` ([DokuWiki markup])
290 - `epub` or `epub3` ([EPUB] v3 book)
291 - `epub2` (EPUB v2)
292 - `fb2` ([FictionBook2] e-book)
293 - `gfm` ([GitHub-Flavored Markdown]),
294 or the deprecated and less accurate `markdown_github`;
295 use [`markdown_github`](#markdown-variants) only
296 if you need extensions not supported in [`gfm`](#markdown-variants).
297 - `haddock` ([Haddock markup])
298 - `html` or `html5` ([HTML], i.e. [HTML5]/XHTML [polyglot markup])
299 - `html4` ([XHTML] 1.0 Transitional)
300 - `icml` ([InDesign ICML])
301 - `ipynb` ([Jupyter notebook])
302 - `jats` ([JATS] XML)
303 - `json` (JSON version of native AST)
304 - `latex` ([LaTeX])
305 - `man` ([roff man])
306 - `markdown` ([Pandoc's Markdown])
307 - `markdown_mmd` ([MultiMarkdown])
308 - `markdown_phpextra` ([PHP Markdown Extra])
309 - `markdown_strict` (original unextended [Markdown])
310 - `mediawiki` ([MediaWiki markup])
311 - `ms` ([roff ms])
312 - `muse` ([Muse]),
313 - `native` (native Haskell),
314 - `odt` ([OpenOffice text document][ODT])
315 - `opml` ([OPML])
316 - `opendocument` ([OpenDocument])
317 - `org` ([Emacs Org mode])
318 - `plain` (plain text),
319 - `pptx` ([PowerPoint] slide show)
320 - `rst` ([reStructuredText])
321 - `rtf` ([Rich Text Format])
322 - `texinfo` ([GNU Texinfo])
323 - `textile` ([Textile])
324 - `slideous` ([Slideous] HTML and JavaScript slide show)
325 - `slidy` ([Slidy] HTML and JavaScript slide show)
326 - `dzslides` ([DZSlides] HTML5 + JavaScript slide show),
327 - `revealjs` ([reveal.js] HTML5 + JavaScript slide show)
328 - `s5` ([S5] HTML and JavaScript slide show)
329 - `tei` ([TEI Simple])
330 - `zimwiki` ([ZimWiki markup])
331 - the path of a custom lua writer, see [Custom writers] below
332 :::
334 Note that `odt`, `docx`, and `epub` output will not be directed
335 to *stdout* unless forced with `-o -`.
337 Extensions can be individually enabled or
338 disabled by appending `+EXTENSION` or `-EXTENSION` to the format
339 name. See [Extensions] below, for a list of extensions and their
340 names. See `--list-output-formats` and `--list-extensions`, below.
342`-o` *FILE*, `--output=`*FILE*
344: Write output to *FILE* instead of *stdout*. If *FILE* is
345 `-`, output will go to *stdout*, even if a non-textual format
346 (`docx`, `odt`, `epub2`, `epub3`) is specified.
348`--data-dir=`*DIRECTORY*
350: Specify the user data directory to search for pandoc data files.
351 If this option is not specified, the default user data directory
352 will be used. On \*nix and macOS systems this will be the `pandoc`
353 subdirectory of the XDG data directory (by default,
354 `$HOME/.local/share`, overridable by setting the `XDG_DATA_HOME`
355 environment variable). If that directory does not exist,
356 `$HOME/.pandoc` will be used (for backwards compatibility).
357 In Windows the default user data directory is
358 `C:\Users\USERNAME\AppData\Roaming\pandoc`.
359 You can find the default user data directory on your system by
360 looking at the output of `pandoc --version`.
361 A `reference.odt`, `reference.docx`, `epub.css`, `templates`,
362 `slidy`, `slideous`, or `s5` directory
363 placed in this directory will override pandoc's normal defaults.
365`--bash-completion`
367: Generate a bash completion script. To enable bash completion
368 with pandoc, add this to your `.bashrc`:
370 eval "$(pandoc --bash-completion)"
372`--verbose`
374: Give verbose debugging output. Currently this only has an effect
375 with PDF output.
377`--quiet`
379: Suppress warning messages.
381`--fail-if-warnings`
383: Exit with error status if there are any warnings.
385`--log=`*FILE*
387: Write log messages in machine-readable JSON format to
388 *FILE*. All messages above DEBUG level will be written,
389 regardless of verbosity settings (`--verbose`, `--quiet`).
391`--list-input-formats`
393: List supported input formats, one per line.
395`--list-output-formats`
397: List supported output formats, one per line.
399`--list-extensions`[`=`*FORMAT*]
401: List supported extensions, one per line, preceded
402 by a `+` or `-` indicating whether it is enabled by default
403 in *FORMAT*. If *FORMAT* is not specified, defaults for
404 pandoc's Markdown are given.
406`--list-highlight-languages`
408: List supported languages for syntax highlighting, one per
409 line.
411`--list-highlight-styles`
413: List supported styles for syntax highlighting, one per line.
414 See `--highlight-style`.
416`-v`, `--version`
418: Print version.
420`-h`, `--help`
422: Show usage message.
424[Markdown]: http://daringfireball.net/projects/markdown/
425[CommonMark]: http://commonmark.org
426[PHP Markdown Extra]: https://michelf.ca/projects/php-markdown/extra/
427[GitHub-Flavored Markdown]: https://help.github.com/articles/github-flavored-markdown/
428[MultiMarkdown]: http://fletcherpenney.net/multimarkdown/
429[reStructuredText]: http://docutils.sourceforge.net/docs/ref/rst/introduction.html
430[S5]: http://meyerweb.com/eric/tools/s5/
431[Slidy]: http://www.w3.org/Talks/Tools/Slidy/
432[Slideous]: http://goessner.net/articles/slideous/
433[HTML]: http://www.w3.org/html/
434[HTML5]: http://www.w3.org/TR/html5/
435[polyglot markup]: https://www.w3.org/TR/html-polyglot/
436[XHTML]: http://www.w3.org/TR/xhtml1/
437[LaTeX]: http://latex-project.org
438[`beamer`]: https://ctan.org/pkg/beamer
439[Beamer User's Guide]: http://ctan.math.utah.edu/ctan/tex-archive/macros/latex/contrib/beamer/doc/beameruserguide.pdf
440[ConTeXt]: http://www.contextgarden.net/
441[Rich Text Format]: http://en.wikipedia.org/wiki/Rich_Text_Format
442[DocBook]: http://docbook.org
443[JATS]: https://jats.nlm.nih.gov
444[txt2tags]: http://txt2tags.org
445[EPUB]: http://idpf.org/epub
446[OPML]: http://dev.opml.org/spec2.html
447[OpenDocument]: http://opendocument.xml.org
448[ODT]: http://en.wikipedia.org/wiki/OpenDocument
449[Textile]: http://redcloth.org/textile
450[MediaWiki markup]: https://www.mediawiki.org/wiki/Help:Formatting
451[DokuWiki markup]: https://www.dokuwiki.org/dokuwiki
452[ZimWiki markup]: http://zim-wiki.org/manual/Help/Wiki_Syntax.html
453[TWiki markup]: http://twiki.org/cgi-bin/view/TWiki/TextFormattingRules
454[TikiWiki markup]: https://doc.tiki.org/Wiki-Syntax-Text#The_Markup_Language_Wiki-Syntax
455[Haddock markup]: https://www.haskell.org/haddock/doc/html/ch03s08.html
456[Creole 1.0]: http://www.wikicreole.org/wiki/Creole1.0
457[roff man]: http://man7.org/linux/man-pages/man7/groff_man.7.html
458[roff ms]: http://man7.org/linux/man-pages/man7/groff_ms.7.html
459[Haskell]: https://www.haskell.org
460[GNU Texinfo]: http://www.gnu.org/software/texinfo/
461[Emacs Org mode]: http://orgmode.org
462[AsciiDoc]: http://www.methods.co.nz/asciidoc/
463[AsciiDoctor]: https://asciidoctor.org/
464[DZSlides]: http://paulrouget.com/dzslides/
465[Word docx]: https://en.wikipedia.org/wiki/Office_Open_XML
466[PDF]: https://www.adobe.com/pdf/
467[reveal.js]: http://lab.hakim.se/reveal-js/
468[FictionBook2]: http://www.fictionbook.org/index.php/Eng:XML_Schema_Fictionbook_2.1
469[Jupyter notebook]: https://nbformat.readthedocs.io/en/latest/
470[InDesign ICML]: http://wwwimages.adobe.com/www.adobe.com/content/dam/acom/en/devnet/indesign/sdk/cs6/idml/idml-cookbook.pdf
471[TEI Simple]: https://github.com/TEIC/TEI-Simple
472[Muse]: https://amusewiki.org/library/manual
473[PowerPoint]: https://en.wikipedia.org/wiki/Microsoft_PowerPoint
474[Vimwiki]: https://vimwiki.github.io
476Reader options {.options}
477--------------
479`--base-header-level=`*NUMBER*
481: Specify the base level for headers (defaults to 1).
483`--strip-empty-paragraphs`
485: *Deprecated. Use the `+empty_paragraphs` extension instead.*
486 Ignore paragraphs with no content. This option is useful
487 for converting word processing documents where users have
488 used empty paragraphs to create inter-paragraph space.
490`--indented-code-classes=`*CLASSES*
492: Specify classes to use for indented code blocks--for example,
493 `perl,numberLines` or `haskell`. Multiple classes may be separated
494 by spaces or commas.
496`--default-image-extension=`*EXTENSION*
498: Specify a default extension to use when image paths/URLs have no
499 extension. This allows you to use the same source for formats that
500 require different kinds of images. Currently this option only affects
501 the Markdown and LaTeX readers.
503`--file-scope`
505: Parse each file individually before combining for multifile
506 documents. This will allow footnotes in different files with the
507 same identifiers to work as expected. If this option is set,
508 footnotes and links will not work across files. Reading binary
509 files (docx, odt, epub) implies `--file-scope`.
511`-F` *PROGRAM*, `--filter=`*PROGRAM*
513: Specify an executable to be used as a filter transforming the
514 pandoc AST after the input is parsed and before the output is
515 written. The executable should read JSON from stdin and write
516 JSON to stdout. The JSON must be formatted like pandoc's own
517 JSON input and output. The name of the output format will be
518 passed to the filter as the first argument. Hence,
520 pandoc --filter ./caps.py -t latex
522 is equivalent to
524 pandoc -t json | ./caps.py latex | pandoc -f json -t latex
526 The latter form may be useful for debugging filters.
528 Filters may be written in any language. `Text.Pandoc.JSON`
529 exports `toJSONFilter` to facilitate writing filters in Haskell.
530 Those who would prefer to write filters in python can use the
531 module [`pandocfilters`], installable from PyPI. There are also
532 pandoc filter libraries in [PHP], [perl], and
533 [JavaScript/node.js].
535 In order of preference, pandoc will look for filters in
537 1. a specified full or relative path (executable or
538 non-executable)
540 2. `$DATADIR/filters` (executable or non-executable)
541 where `$DATADIR` is the user data directory (see
542 `--data-dir`, above).
544 3. `$PATH` (executable only)
546 Filters and lua-filters are applied in the order specified
547 on the command line.
549`--lua-filter=`*SCRIPT*
551: Transform the document in a similar fashion as JSON filters (see
552 `--filter`), but use pandoc's build-in lua filtering system. The given
553 lua script is expected to return a list of lua filters which will be
554 applied in order. Each lua filter must contain element-transforming
555 functions indexed by the name of the AST element on which the filter
556 function should be applied.
558 The `pandoc` lua module provides helper functions for element
559 creation. It is always loaded into the script's lua environment.
561 The following is an example lua script for macro-expansion:
563 function expand_hello_world(inline)
564 if inline.c == '{{helloworld}}' then
565 return pandoc.Emph{ pandoc.Str "Hello, World" }
566 else
567 return inline
568 end
569 end
571 return {{Str = expand_hello_world}}
573 In order of preference, pandoc will look for lua filters in
575 1. a specified full or relative path (executable or
576 non-executable)
578 2. `$DATADIR/filters` (executable or non-executable)
579 where `$DATADIR` is the user data directory (see
580 `--data-dir`, above).
582`-M` *KEY*[`=`*VAL*], `--metadata=`*KEY*[`:`*VAL*]
584: Set the metadata field *KEY* to the value *VAL*. A value specified
585 on the command line overrides a value specified in the document
586 using [YAML metadata blocks][Extension: `yaml_metadata_block`].
587 Values will be parsed as YAML boolean or string values. If no value is
588 specified, the value will be treated as Boolean true. Like
589 `--variable`, `--metadata` causes template variables to be set.
590 But unlike `--variable`, `--metadata` affects the metadata of the
591 underlying document (which is accessible from filters and may be
592 printed in some output formats) and metadata values will be escaped
593 when inserted into the template.
595`--metadata-file=`*FILE*
597: Read metadata from the supplied YAML (or JSON) file.
598 This option can be used with every input format, but string
599 scalars in the YAML file will always be parsed as Markdown.
600 Generally, the input will be handled the same as in
601 [YAML metadata blocks][Extension: `yaml_metadata_block`].
602 Metadata values specified inside the document, or by using `-M`,
603 overwrite values specified with this option.
605`-p`, `--preserve-tabs`
607: Preserve tabs instead of converting them to spaces (the default).
608 Note that this will only affect tabs in literal code spans and code
609 blocks; tabs in regular text will be treated as spaces.
611`--tab-stop=`*NUMBER*
613: Specify the number of spaces per tab (default is 4).
615`--track-changes=accept`|`reject`|`all`
617: Specifies what to do with insertions, deletions, and comments
618 produced by the MS Word "Track Changes" feature. `accept` (the
619 default), inserts all insertions, and ignores all
620 deletions. `reject` inserts all deletions and ignores
621 insertions. Both `accept` and `reject` ignore comments. `all` puts
622 in insertions, deletions, and comments, wrapped in spans with
623 `insertion`, `deletion`, `comment-start`, and `comment-end`
624 classes, respectively. The author and time of change is
625 included. `all` is useful for scripting: only accepting changes
626 from a certain reviewer, say, or before a certain date. If a
627 paragraph is inserted or deleted, `track-changes=all` produces a
628 span with the class `paragraph-insertion`/`paragraph-deletion`
629 before the affected paragraph break. This option only affects the
630 docx reader.
632`--extract-media=`*DIR*
634: Extract images and other media contained in or linked from
635 the source document to the path *DIR*, creating it if
636 necessary, and adjust the images references in the document
637 so they point to the extracted files. If the source format is
638 a binary container (docx, epub, or odt), the media is
639 extracted from the container and the original
640 filenames are used. Otherwise the media is read from the
641 file system or downloaded, and new filenames are constructed
642 based on SHA1 hashes of the contents.
644`--abbreviations=`*FILE*
646: Specifies a custom abbreviations file, with abbreviations
647 one to a line. If this option is not specified, pandoc will
648 read the data file `abbreviations` from the user data
649 directory or fall back on a system default. To see the
650 system default, use
651 `pandoc --print-default-data-file=abbreviations`. The only
652 use pandoc makes of this list is in the Markdown reader.
653 Strings ending in a period that are found in this list will
654 be followed by a nonbreaking space, so that the period will
655 not produce sentence-ending space in formats like LaTeX.
657[`pandocfilters`]: https://github.com/jgm/pandocfilters
658[PHP]: https://github.com/vinai/pandocfilters-php
659[perl]: https://metacpan.org/pod/Pandoc::Filter
660[JavaScript/node.js]: https://github.com/mvhenderson/pandoc-filter-node
662General writer options {.options}
663----------------------
665`-s`, `--standalone`
667: Produce output with an appropriate header and footer (e.g. a
668 standalone HTML, LaTeX, TEI, or RTF file, not a fragment). This option
669 is set automatically for `pdf`, `epub`, `epub3`, `fb2`, `docx`, and `odt`
670 output. For `native` output, this option causes metadata to
671 be included; otherwise, metadata is suppressed.
673`--template=`*FILE*|*URL*
675: Use the specified file as a custom template for the generated document.
676 Implies `--standalone`. See [Templates], below, for a description
677 of template syntax. If no extension is specified, an extension
678 corresponding to the writer will be added, so that `--template=special`
679 looks for `special.html` for HTML output. If the template is not
680 found, pandoc will search for it in the `templates` subdirectory of
681 the user data directory (see `--data-dir`). If this option is not used,
682 a default template appropriate for the output format will be used (see
683 `-D/--print-default-template`).
685`-V` *KEY*[`=`*VAL*], `--variable=`*KEY*[`:`*VAL*]
687: Set the template variable *KEY* to the value *VAL* when rendering the
688 document in standalone mode. This is generally only useful when the
689 `--template` option is used to specify a custom template, since
690 pandoc automatically sets the variables used in the default
691 templates. If no *VAL* is specified, the key will be given the
692 value `true`.
694`-D` *FORMAT*, `--print-default-template=`*FORMAT*
696: Print the system default template for an output *FORMAT*. (See `-t`
697 for a list of possible *FORMAT*s.) Templates in the user data
698 directory are ignored.
700`--print-default-data-file=`*FILE*
702: Print a system default data file. Files in the user data directory
703 are ignored.
705`--eol=crlf`|`lf`|`native`
707: Manually specify line endings: `crlf` (Windows), `lf`
708 (macOS/Linux/UNIX), or `native` (line endings appropriate
709 to the OS on which pandoc is being run). The default is
710 `native`.
712`--dpi`=*NUMBER*
714: Specify the dpi (dots per inch) value for conversion from pixels
715 to inch/centimeters and vice versa. The default is 96dpi.
716 Technically, the correct term would be ppi (pixels per inch).
718`--wrap=auto`|`none`|`preserve`
720: Determine how text is wrapped in the output (the source
721 code, not the rendered version). With `auto` (the default),
722 pandoc will attempt to wrap lines to the column width specified by
723 `--columns` (default 72). With `none`, pandoc will not wrap
724 lines at all. With `preserve`, pandoc will attempt to
725 preserve the wrapping from the source document (that is,
726 where there are nonsemantic newlines in the source, there
727 will be nonsemantic newlines in the output as well).
728 Automatic wrapping does not currently work in HTML output.
729 In `ipynb` output, this option affects wrapping of the
730 contents of markdown cells.
732`--columns=`*NUMBER*
734: Specify length of lines in characters. This affects text wrapping
735 in the generated source code (see `--wrap`). It also affects
736 calculation of column widths for plain text tables (see [Tables] below).
738`--toc`, `--table-of-contents`
740: Include an automatically generated table of contents (or, in
741 the case of `latex`, `context`, `docx`, `odt`,
742 `opendocument`, `rst`, or `ms`, an instruction to create
743 one) in the output document. This option has no effect
744 unless `-s/--standalone` is used, and it has no effect
745 on `man`, `docbook4`, `docbook5`, or `jats` output.
747`--toc-depth=`*NUMBER*
749: Specify the number of section levels to include in the table
750 of contents. The default is 3 (which means that level 1, 2, and 3
751 headers will be listed in the contents).
753`--strip-comments`
755: Strip out HTML comments in the Markdown or Textile source,
756 rather than passing them on to Markdown, Textile or HTML
757 output as raw HTML. This does not apply to HTML comments
758 inside raw HTML blocks when the `markdown_in_html_blocks`
759 extension is not set.
761`--no-highlight`
763: Disables syntax highlighting for code blocks and inlines, even when
764 a language attribute is given.
766`--highlight-style=`*STYLE*|*FILE*
768: Specifies the coloring style to be used in highlighted source code.
769 Options are `pygments` (the default), `kate`, `monochrome`,
770 `breezeDark`, `espresso`, `zenburn`, `haddock`, and `tango`.
771 For more information on syntax highlighting in pandoc, see
772 [Syntax highlighting], below. See also
773 `--list-highlight-styles`.
775 Instead of a *STYLE* name, a JSON file with extension
776 `.theme` may be supplied. This will be parsed as a KDE
777 syntax highlighting theme and (if valid) used as the
778 highlighting style.
780 To generate the JSON version of an existing style,
781 use `--print-highlight-style`.
783`--print-highlight-style=`*STYLE*|*FILE*
785: Prints a JSON version of a highlighting style, which can
786 be modified, saved with a `.theme` extension, and used
787 with `--highlight-style`.
789`--syntax-definition=`*FILE*
791: Instructs pandoc to load a KDE XML syntax definition file,
792 which will be used for syntax highlighting of appropriately
793 marked code blocks. This can be used to add support for
794 new languages or to use altered syntax definitions for
795 existing languages.
797`-H` *FILE*, `--include-in-header=`*FILE*|*URL*
799: Include contents of *FILE*, verbatim, at the end of the header.
800 This can be used, for example, to include special
801 CSS or JavaScript in HTML documents. This option can be used
802 repeatedly to include multiple files in the header. They will be
803 included in the order specified. Implies `--standalone`.
805`-B` *FILE*, `--include-before-body=`*FILE*|*URL*
807: Include contents of *FILE*, verbatim, at the beginning of the
808 document body (e.g. after the `<body>` tag in HTML, or the
809 `\begin{document}` command in LaTeX). This can be used to include
810 navigation bars or banners in HTML documents. This option can be
811 used repeatedly to include multiple files. They will be included in
812 the order specified. Implies `--standalone`.
814`-A` *FILE*, `--include-after-body=`*FILE*|*URL*
816: Include contents of *FILE*, verbatim, at the end of the document
817 body (before the `</body>` tag in HTML, or the
818 `\end{document}` command in LaTeX). This option can be used
819 repeatedly to include multiple files. They will be included in the
820 order specified. Implies `--standalone`.
822`--resource-path=`*SEARCHPATH*
824: List of paths to search for images and other resources.
825 The paths should be separated by `:` on Linux, UNIX, and
826 macOS systems, and by `;` on Windows. If `--resource-path`
827 is not specified, the default resource path is the working
828 directory. Note that, if `--resource-path` is specified,
829 the working directory must be explicitly listed or it
830 will not be searched. For example:
831 `--resource-path=.:test` will search the working directory
832 and the `test` subdirectory, in that order.
834 `--resource-path` only has an effect if (a) the output
835 format embeds images (for example, `docx`, `pdf`, or `html`
836 with `--self-contained`) or (b) it is used together with
837 `--extract-media`.
839`--request-header=`*NAME*`:`*VAL*
841: Set the request header *NAME* to the value *VAL* when making
842 HTTP requests (for example, when a URL is given on the
843 command line, or when resources used in a document must be
844 downloaded). If you're behind a proxy, you also need to set
845 the environment variable `http_proxy` to `http://...`.
847Options affecting specific writers {.options}
848----------------------------------
850`--self-contained`
852: Produce a standalone HTML file with no external dependencies, using
853 `data:` URIs to incorporate the contents of linked scripts, stylesheets,
854 images, and videos. Implies `--standalone`. The resulting file should be
855 "self-contained," in the sense that it needs no external files and no net
856 access to be displayed properly by a browser. This option works only with
857 HTML output formats, including `html4`, `html5`, `html+lhs`, `html5+lhs`,
858 `s5`, `slidy`, `slideous`, `dzslides`, and `revealjs`. Scripts, images,
859 and stylesheets at absolute URLs will be downloaded; those at relative
860 URLs will be sought relative to the working directory (if the first source
861 file is local) or relative to the base URL (if the first source
862 file is remote). Elements with the attribute
863 `data-external="1"` will be left alone; the documents they
864 link to will not be incorporated in the document.
865 Limitation: resources that are loaded dynamically through
866 JavaScript cannot be incorporated; as a result,
867 `--self-contained` does not work with `--mathjax`, and some
868 advanced features (e.g. zoom or speaker notes) may not work
869 in an offline "self-contained" `reveal.js` slide show.
871`--html-q-tags`
873: Use `<q>` tags for quotes in HTML.
875`--ascii`
877: Use only ASCII characters in output. Currently supported for XML
878 and HTML formats (which use entities instead of UTF-8 when this
879 option is selected), CommonMark, gfm, and Markdown (which use
880 entities), roff ms (which use hexadecimal escapes), and to a
881 limited degree LaTeX (which uses standard commands for accented
882 characters when possible). roff man output uses ASCII by default.
884`--reference-links`
886: Use reference-style links, rather than inline links, in writing Markdown
887 or reStructuredText. By default inline links are used. The
888 placement of link references is affected by the
889 `--reference-location` option.
891`--reference-location = block`|`section`|`document`
893: Specify whether footnotes (and references, if `reference-links` is
894 set) are placed at the end of the current (top-level) block, the
895 current section, or the document. The default is
896 `document`. Currently only affects the markdown writer.
898`--atx-headers`
900: Use ATX-style headers in Markdown output. The default is
901 to use setext-style headers for levels 1-2, and then ATX headers.
902 (Note: for `gfm` output, ATX headers are always used.)
903 This option also affects markdown cells in `ipynb` output.
905`--top-level-division=[default|section|chapter|part]`
907: Treat top-level headers as the given division type in LaTeX, ConTeXt,
908 DocBook, and TEI output. The hierarchy order is part, chapter, then section;
909 all headers are shifted such that the top-level header becomes the specified
910 type. The default behavior is to determine the best division type via
911 heuristics: unless other conditions apply, `section` is chosen. When the
912 LaTeX document class is set to `report`, `book`, or `memoir` (unless the
913 `article` option is specified), `chapter` is implied as the setting for this
914 option. If `beamer` is the output format, specifying either `chapter` or
915 `part` will cause top-level headers to become `\part{..}`, while
916 second-level headers remain as their default type.
918`-N`, `--number-sections`
920: Number section headings in LaTeX, ConTeXt, HTML, or EPUB output.
921 By default, sections are not numbered. Sections with class
922 `unnumbered` will never be numbered, even if `--number-sections`
923 is specified.
925`--number-offset=`*NUMBER*[`,`*NUMBER*`,`*...*]
927: Offset for section headings in HTML output (ignored in other
928 output formats). The first number is added to the section number for
929 top-level headers, the second for second-level headers, and so on.
930 So, for example, if you want the first top-level header in your
931 document to be numbered "6", specify `--number-offset=5`.
932 If your document starts with a level-2 header which you want to
933 be numbered "1.5", specify `--number-offset=1,4`.
934 Offsets are 0 by default. Implies `--number-sections`.
936`--listings`
938: Use the [`listings`] package for LaTeX code blocks. The package
939 does not support multi-byte encoding for source code. To handle UTF-8
940 you would need to use a custom template. This issue is fully
941 documented here: [Encoding issue with the listings package].
943`-i`, `--incremental`
945: Make list items in slide shows display incrementally (one by one).
946 The default is for lists to be displayed all at once.
948`--slide-level=`*NUMBER*
950: Specifies that headers with the specified level create
951 slides (for `beamer`, `s5`, `slidy`, `slideous`, `dzslides`). Headers
952 above this level in the hierarchy are used to divide the
953 slide show into sections; headers below this level create
954 subheads within a slide. Note that content that is
955 not contained under slide-level headers will not appear in
956 the slide show. The default is to set the slide level based
957 on the contents of the document; see [Structuring the slide
958 show].
960`--section-divs`
962: Wrap sections in `<section>` tags (or `<div>` tags for `html4`),
963 and attach identifiers to the enclosing `<section>` (or `<div>`)
964 rather than the header itself. See
965 [Header identifiers], below.
967`--email-obfuscation=none`|`javascript`|`references`
969: Specify a method for obfuscating `mailto:` links in HTML documents.
970 `none` leaves `mailto:` links as they are. `javascript` obfuscates
971 them using JavaScript. `references` obfuscates them by printing their
972 letters as decimal or hexadecimal character references. The default
973 is `none`.
975`--id-prefix=`*STRING*
977: Specify a prefix to be added to all identifiers and internal links
978 in HTML and DocBook output, and to footnote numbers in Markdown
979 and Haddock output. This is useful for preventing duplicate
980 identifiers when generating fragments to be included in other pages.
982`-T` *STRING*, `--title-prefix=`*STRING*
984: Specify *STRING* as a prefix at the beginning of the title
985 that appears in the HTML header (but not in the title as it
986 appears at the beginning of the HTML body). Implies
987 `--standalone`.
989`-c` *URL*, `--css=`*URL*
991: Link to a CSS style sheet. This option can be used repeatedly to
992 include multiple files. They will be included in the order specified.
994 A stylesheet is required for generating EPUB. If none is
995 provided using this option (or the `css` or `stylesheet`
996 metadata fields), pandoc will look for a file `epub.css` in the
997 user data directory (see `--data-dir`). If it is not
998 found there, sensible defaults will be used.
1000`--reference-doc=`*FILE*
1002: Use the specified file as a style reference in producing a
1003 docx or ODT file.
1005 Docx
1007 : For best results, the reference docx should be a modified
1008 version of a docx file produced using pandoc. The contents
1009 of the reference docx are ignored, but its stylesheets and
1010 document properties (including margins, page size, header,
1011 and footer) are used in the new docx. If no reference docx
1012 is specified on the command line, pandoc will look for a
1013 file `reference.docx` in the user data directory (see
1014 `--data-dir`). If this is not found either, sensible
1015 defaults will be used.
1017 To produce a custom `reference.docx`, first get a copy of
1018 the default `reference.docx`: `pandoc
1019 --print-default-data-file reference.docx >
1020 custom-reference.docx`. Then open `custom-reference.docx`
1021 in Word, modify the styles as you wish, and save the file.
1022 For best results, do not make changes to this file other
1023 than modifying the styles used by pandoc:
1025 Paragraph styles:
1027 - Normal
1028 - Body Text
1029 - First Paragraph
1030 - Compact
1031 - Title
1032 - Subtitle
1033 - Author
1034 - Date
1035 - Abstract
1036 - Bibliography
1037 - Heading 1
1038 - Heading 2
1039 - Heading 3
1040 - Heading 4
1041 - Heading 5
1042 - Heading 6
1043 - Heading 7
1044 - Heading 8
1045 - Heading 9
1046 - Block Text
1047 - Footnote Text
1048 - Definition Term
1049 - Definition
1050 - Caption
1051 - Table Caption
1052 - Image Caption
1053 - Figure
1054 - Captioned Figure
1055 - TOC Heading
1057 Character styles:
1059 - Default Paragraph Font
1060 - Body Text Char
1061 - Verbatim Char
1062 - Footnote Reference
1063 - Hyperlink
1065 Table style:
1067 - Table
1069 ODT
1071 : For best results, the reference ODT should be a modified
1072 version of an ODT produced using pandoc. The contents of
1073 the reference ODT are ignored, but its stylesheets are used
1074 in the new ODT. If no reference ODT is specified on the
1075 command line, pandoc will look for a file `reference.odt` in
1076 the user data directory (see `--data-dir`). If this is not
1077 found either, sensible defaults will be used.
1079 To produce a custom `reference.odt`, first get a copy of
1080 the default `reference.odt`: `pandoc
1081 --print-default-data-file reference.odt >
1082 custom-reference.odt`. Then open `custom-reference.odt` in
1083 LibreOffice, modify the styles as you wish, and save the
1084 file.
1086 PowerPoint
1088 : Any template included with a recent install of Microsoft
1089 PowerPoint (either with `.pptx` or `.potx` extension) should
1090 work, as will most templates derived from these.
1092 The specific requirement is that the template should contain
1093 the following four layouts as its first four layouts:
1095 1. Title Slide
1096 2. Title and Content
1097 3. Section Header
1098 4. Two Content
1100 All templates included with a recent version of MS PowerPoint
1101 will fit these criteria. (You can click on `Layout` under the
1102 `Home` menu to check.)
1104 You can also modify the default `reference.pptx`: first run
1105 `pandoc --print-default-data-file reference.pptx >
1106 custom-reference.pptx`, and then modify
1107 `custom-reference.pptx` in MS PowerPoint (pandoc will use the
1108 first four layout slides, as mentioned above).
1110`--epub-cover-image=`*FILE*
1112: Use the specified image as the EPUB cover. It is recommended
1113 that the image be less than 1000px in width and height. Note that
1114 in a Markdown source document you can also specify `cover-image`
1115 in a YAML metadata block (see [EPUB Metadata], below).
1117`--epub-metadata=`*FILE*
1119: Look in the specified XML file for metadata for the EPUB.
1120 The file should contain a series of [Dublin Core elements].
1121 For example:
1123 <dc:rights>Creative Commons</dc:rights>
1124 <dc:language>es-AR</dc:language>
1126 By default, pandoc will include the following metadata elements:
1127 `<dc:title>` (from the document title), `<dc:creator>` (from the
1128 document authors), `<dc:date>` (from the document date, which should
1129 be in [ISO 8601 format]), `<dc:language>` (from the `lang`
1130 variable, or, if is not set, the locale), and `<dc:identifier
1131 id="BookId">` (a randomly generated UUID). Any of these may be
1132 overridden by elements in the metadata file.
1134 Note: if the source document is Markdown, a YAML metadata block
1135 in the document can be used instead. See below under
1136 [EPUB Metadata].
1138`--epub-embed-font=`*FILE*
1140: Embed the specified font in the EPUB. This option can be repeated
1141 to embed multiple fonts. Wildcards can also be used: for example,
1142 `DejaVuSans-*.ttf`. However, if you use wildcards on the command
1143 line, be sure to escape them or put the whole filename in single quotes,
1144 to prevent them from being interpreted by the shell. To use the
1145 embedded fonts, you will need to add declarations like the following
1146 to your CSS (see `--css`):
1148 @font-face {
1149 font-family: DejaVuSans;
1150 font-style: normal;
1151 font-weight: normal;
1152 src:url("DejaVuSans-Regular.ttf");
1154 @font-face {
1155 font-family: DejaVuSans;
1156 font-style: normal;
1157 font-weight: bold;
1158 src:url("DejaVuSans-Bold.ttf");
1160 @font-face {
1161 font-family: DejaVuSans;
1162 font-style: italic;
1163 font-weight: normal;
1164 src:url("DejaVuSans-Oblique.ttf");
1166 @font-face {
1167 font-family: DejaVuSans;
1168 font-style: italic;
1169 font-weight: bold;
1170 src:url("DejaVuSans-BoldOblique.ttf");
1172 body { font-family: "DejaVuSans"; }
1174`--epub-chapter-level=`*NUMBER*
1176: Specify the header level at which to split the EPUB into separate
1177 "chapter" files. The default is to split into chapters at level 1
1178 headers. This option only affects the internal composition of the
1179 EPUB, not the way chapters and sections are displayed to users. Some
1180 readers may be slow if the chapter files are too large, so for large
1181 documents with few level 1 headers, one might want to use a chapter
1182 level of 2 or 3.
1184`--epub-subdirectory=`*DIRNAME*
1186: Specify the subdirectory in the OCF container that is to hold
1187 the EPUB-specific contents. The default is `EPUB`. To put
1188 the EPUB contents in the top level, use an empty string.
1190`--ipynb-output=all|none|best`
1192: Determines how ipynb output cells are treated. `all` means
1193 that all of the data formats included in the original are
1194 preserved. `none` means that the contents of data cells
1195 are omitted. `best` causes pandoc to try to pick the
1196 richest data block in each output cell that is compatible
1197 with the output format. The default is `best`.
1199`--pdf-engine=`*PROGRAM*
1201: Use the specified engine when producing PDF output.
1202 Valid values are `pdflatex`, `lualatex`, `xelatex`, `latexmk`,
1203 `wkhtmltopdf`, `weasyprint`, `prince`, `context`, and `pdfroff`.
1204 The default is `pdflatex`. If the engine is not in your PATH,
1205 the full path of the engine may be specified here.
1207`--pdf-engine-opt=`*STRING*
1209: Use the given string as a command-line argument to the `pdf-engine`.
1210 For example, to use a persistent directory `foo` for `latexmk`'s
1211 auxiliary files, use `--pdf-engine-opt=-outdir=foo`.
1212 Note that no check for duplicate options is done.
1214[Dublin Core elements]: http://dublincore.org/documents/dces/
1215[ISO 8601 format]: http://www.w3.org/TR/NOTE-datetime
1216[Encoding issue with the listings package]:
1217 https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue
1219Citation rendering {.options}
1220------------------
1222`--bibliography=`*FILE*
1224: Set the `bibliography` field in the document's metadata to *FILE*,
1225 overriding any value set in the metadata, and process citations
1226 using `pandoc-citeproc`. (This is equivalent to
1227 `--metadata bibliography=FILE --filter pandoc-citeproc`.)
1228 If `--natbib` or `--biblatex` is also supplied, `pandoc-citeproc` is not
1229 used, making this equivalent to `--metadata bibliography=FILE`.
1230 If you supply this argument multiple times, each *FILE* will be added
1231 to bibliography.
1233`--csl=`*FILE*
1235: Set the `csl` field in the document's metadata to *FILE*,
1236 overriding any value set in the metadata. (This is equivalent to
1237 `--metadata csl=FILE`.)
1238 This option is only relevant with `pandoc-citeproc`.
1240`--citation-abbreviations=`*FILE*
1242: Set the `citation-abbreviations` field in the document's metadata to
1243 *FILE*, overriding any value set in the metadata. (This is equivalent to
1244 `--metadata citation-abbreviations=FILE`.)
1245 This option is only relevant with `pandoc-citeproc`.
1247`--natbib`
1249: Use [`natbib`] for citations in LaTeX output. This option is not for use
1250 with the `pandoc-citeproc` filter or with PDF output. It is intended for
1251 use in producing a LaTeX file that can be processed with [`bibtex`].
1253`--biblatex`
1255: Use [`biblatex`] for citations in LaTeX output. This option is not for use
1256 with the `pandoc-citeproc` filter or with PDF output. It is intended for
1257 use in producing a LaTeX file that can be processed with [`bibtex`] or [`biber`].
1259Math rendering in HTML {.options}
1260----------------------
1262The default is to render TeX math as far as possible using Unicode characters.
1263Formulas are put inside a `span` with `class="math"`, so that they may be styled
1264differently from the surrounding text if needed. However, this gives acceptable
1265results only for basic math, usually you will want to use `--mathjax` or another
1266of the following options.
1268`--mathjax`[`=`*URL*]
1270: Use [MathJax] to display embedded TeX math in HTML output.
1271 TeX math will be put between `\(...\)` (for inline math)
1272 or `\[...\]` (for display math) and wrapped in `<span>` tags
1273 with class `math`. Then the MathJax JavaScript will render it.
1274 The *URL* should point to the `MathJax.js` load script.
1275 If a *URL* is not provided, a link to the Cloudflare CDN will
1276 be inserted.
1278`--mathml`
1280: Convert TeX math to [MathML] (in `epub3`, `docbook4`, `docbook5`, `jats`,
1281 `html4` and `html5`). This is the default in `odt` output. Note that
1282 currently only Firefox and Safari (and select e-book readers) natively
1283 support MathML.
1285`--webtex`[`=`*URL*]
1287: Convert TeX formulas to `<img>` tags that link to an external script
1288 that converts formulas to images. The formula will be URL-encoded
1289 and concatenated with the URL provided. For SVG images you can for
1290 example use `--webtex https://latex.codecogs.com/svg.latex?`.
1291 If no URL is specified, the CodeCogs URL generating PNGs
1292 will be used (`https://latex.codecogs.com/png.latex?`).
1293 Note: the `--webtex` option will affect Markdown output
1294 as well as HTML, which is useful if you're targeting a
1295 version of Markdown without native math support.
1297`--katex`[`=`*URL*]
1299: Use [KaTeX] to display embedded TeX math in HTML output.
1300 The *URL* is the base URL for the KaTeX library. That directory
1301 should contain a `katex.min.js` and a `katex.min.css` file.
1302 If a *URL* is not provided, a link to the KaTeX CDN will be inserted.
1304`--gladtex`
1306: Enclose TeX math in `<eq>` tags in HTML output. The resulting HTML
1307 can then be processed by [GladTeX] to produce images of the typeset
1308 formulas and an HTML file with links to these images.
1309 So, the procedure is:
1311 pandoc -s --gladtex input.md -o myfile.htex
1312 gladtex -d myfile-images myfile.htex
1313 # produces myfile.html and images in myfile-images
1315[MathML]: http://www.w3.org/Math/
1316[MathJax]: https://www.mathjax.org
1317[KaTeX]: https://github.com/Khan/KaTeX
1318[GladTeX]: http://humenda.github.io/GladTeX/
1320Options for wrapper scripts {.options}
1321---------------------------
1323`--dump-args`
1325: Print information about command-line arguments to *stdout*, then exit.
1326 This option is intended primarily for use in wrapper scripts.
1327 The first line of output contains the name of the output file specified
1328 with the `-o` option, or `-` (for *stdout*) if no output file was
1329 specified. The remaining lines contain the command-line arguments,
1330 one per line, in the order they appear. These do not include regular
1331 pandoc options and their arguments, but do include any options appearing
1332 after a `--` separator at the end of the line.
1334`--ignore-args`
1336: Ignore command-line arguments (for use in wrapper scripts).
1337 Regular pandoc options are not ignored. Thus, for example,
1339 pandoc --ignore-args -o foo.html -s foo.txt -- -e latin1
1341 is equivalent to
1343 pandoc -o foo.html -s
1345Templates
1346=========
1348When the `-s/--standalone` option is used, pandoc uses a template to
1349add header and footer material that is needed for a self-standing
1350document. To see the default template that is used, just type
1352 pandoc -D *FORMAT*
1354where *FORMAT* is the name of the output format. A custom template
1355can be specified using the `--template` option. You can also override
1356the system default templates for a given output format *FORMAT*
1357by putting a file `templates/default.*FORMAT*` in the user data
1358directory (see `--data-dir`, above). *Exceptions:*
1360- For `odt` output, customize the `default.opendocument`
1361 template.
1362- For `pdf` output, customize the `default.latex` template
1363 (or the `default.context` template, if you use `-t context`,
1364 or the `default.ms` template, if you use `-t ms`, or the
1365 `default.html` template, if you use `-t html`).
1366- `docx` and `pptx` have no template (however, you can use
1367 `--reference-doc` to customize the output).
1369Templates contain *variables*, which allow for the inclusion of
1370arbitrary information at any point in the file. They may be set at the
1371command line using the `-V/--variable` option. If a variable is not set,
1372pandoc will look for the key in the document's metadata – which can be set
1373using either [YAML metadata blocks][Extension: `yaml_metadata_block`]
1374or with the `-M/--metadata` option.
1376Metadata variables
1377------------------
1379`title`, `author`, `date`
1380: allow identification of basic aspects of the document. Included
1381 in PDF metadata through LaTeX and ConTeXt. These can be set
1382 through a [pandoc title block][Extension: `pandoc_title_block`],
1383 which allows for multiple authors, or through a YAML metadata block:
1385 ---
1386 author:
1387 - Aristotle
1388 - Peter Abelard
1389 ...
1391`subtitle`
1392: document subtitle, included in HTML, EPUB, LaTeX, ConTeXt, and docx
1393 documents
1395`abstract`
1396: document summary, included in LaTeX, ConTeXt, AsciiDoc, and docx
1397 documents
1399`keywords`
1400: list of keywords to be included in HTML, PDF, ODT, pptx, docx
1401 and AsciiDoc metadata; repeat as for `author`, above
1403`subject`
1404: document subject, included in ODT, PDF, docx and pptx metadata
1406`description`
1407: document description, included in ODT, docx and pptx metadata. Some
1408 applications show this as `Comments` metadata.
1410`category`
1411: document category, included in docx and pptx metadata
1413Additionally,
1414any root-level string metadata, not included in ODT, docx
1415or pptx metadata is added as a *custom property*.
1416The following YAML metadata block for instance:
1418 ---
1419 title: 'This is the title'
1420 subtitle: "This is the subtitle"
1421 author:
1422 - Author One
1423 - Author Two
1424 description: |
1425 This is a long
1426 description.
1428 It consists of two paragraphs
1429 ...
1431will include `title`, `author` and `description` as standard document
1432properties and `subtitle` as a custom property when converting to docx,
1433ODT or pptx.
1435Language variables
1436------------------
1438`lang`
1439: identifies the main language of the document using IETF language
1440 tags (following the [BCP 47] standard), such as `en` or `en-GB`.
1441 The [Language subtag lookup] tool can look up or verify these tags.
1442 This affects most formats, and controls hyphenation in PDF output
1443 when using LaTeX (through [`babel`] and [`polyglossia`]) or ConTeXt.
1445 Use native pandoc [Divs and Spans] with the `lang` attribute to
1446 switch the language:
1448 ---
1449 lang: en-GB
1450 ...
1452 Text in the main document language (British English).
1454 ::: {lang=fr-CA}
1455 > Cette citation est écrite en français canadien.
1456 :::
1458 More text in English. ['Zitat auf Deutsch.']{lang=de}
1460`dir`
1461: the base script direction, either `rtl` (right-to-left)
1462 or `ltr` (left-to-right).
1464 For bidirectional documents, native pandoc `span`s and `div`s
1465 with the `dir` attribute (value `rtl` or `ltr`) can be used to
1466 override the base direction in some output formats.
1467 This may not always be necessary if the final renderer
1468 (e.g. the browser, when generating HTML) supports the
1469 [Unicode Bidirectional Algorithm].
1471 When using LaTeX for bidirectional documents, only the `xelatex` engine
1472 is fully supported (use `--pdf-engine=xelatex`).
1474[BCP 47]: https://tools.ietf.org/html/bcp47
1475[Unicode Bidirectional Algorithm]: http://www.w3.org/International/articles/inline-bidi-markup/uba-basics
1476[Language subtag lookup]: https://r12a.github.io/app-subtags/
1478Variables for HTML slides
1479-------------------------
1481These affect HTML output when [producing slide shows with pandoc].
1482All [reveal.js configuration options] are available as variables.
1484`revealjs-url`
1485: base URL for reveal.js documents (defaults to `reveal.js`)
1487`s5-url`
1488: base URL for S5 documents (defaults to `s5/default`)
1490`slidy-url`
1491: base URL for Slidy documents (defaults to
1492 `https://www.w3.org/Talks/Tools/Slidy2`)
1494`slideous-url`
1495: base URL for Slideous documents (defaults to `slideous`)
1497[reveal.js configuration options]: https://github.com/hakimel/reveal.js#configuration
1499Variables for Beamer slides
1500---------------------------
1502These variables change the appearance of PDF slides using [`beamer`].
1504`aspectratio`
1505: slide aspect ratio (`43` for 4:3 [default], `169` for 16:9,
1506 `1610` for 16:10, `149` for 14:9, `141` for 1.41:1, `54` for 5:4,
1507 `32` for 3:2)
1509`beamerarticle`
1510: produce an article from Beamer slides
1512`beameroption`
1513: add extra beamer option with `\setbeameroption{}`
1515`institute`
1516: author affiliations: can be a list when there are multiple authors
1518`logo`
1519: logo image for slides
1521`navigation`
1522: controls navigation symbols (default is `empty` for no navigation
1523 symbols; other valid values are `frame`, `vertical`, and `horizontal`)
1525`section-titles`
1526: enables "title pages" for new sections (default is true)
1528`theme`, `colortheme`, `fonttheme`, `innertheme`, `outertheme`
1529: beamer themes:
1531`themeoptions`
1532: options for LaTeX beamer themes (a list).
1534`titlegraphic`
1535: image for title slide
1537Variables for LaTeX
1538-------------------
1540Pandoc uses these variables when [creating a PDF] with a LaTeX engine.
1542### Layout
1544`classoption`
1545: option for document class, e.g. `oneside`; repeat for multiple options
1547`documentclass`
1548: document class: usually one of the standard classes, [`article`], [`report`],
1549 and [`book`]; the [KOMA-Script] equivalents, `scrartcl`, `scrreprt`,
1550 and `scrbook`, which default to smaller margins; or [`memoir`]
1552`geometry`
1553: option for [`geometry`] package, e.g. `margin=1in`;
1554 repeat for multiple options
1556`indent`
1557: uses document class settings for indentation (the default LaTeX template
1558 otherwise removes indentation and adds space between paragraphs)
1560`linestretch`
1561: adjusts line spacing using the [`setspace`]
1562 package, e.g. `1.25`, `1.5`
1564`margin-left`, `margin-right`, `margin-top`, `margin-bottom`
1565: sets margins if `geometry` is not used (otherwise `geometry`
1566 overrides these)
1568`pagestyle`
1569: control `\pagestyle{}`: the default article class
1570 supports `plain` (default), `empty` (no running heads or page numbers),
1571 and `headings` (section titles in running heads)
1573`papersize`
1574: paper size, e.g. `letter`, `a4`
1576`secnumdepth`
1577: numbering depth for sections (with `--number-sections` option
1578 or `numbersections` variable)
1580`subparagraph`
1581: disables default behavior of LaTeX template that redefines (sub)paragraphs
1582 as sections, changing the appearance of nested headings in some classes
1584### Fonts
1586`fontenc`
1587: allows font encoding to be specified through `fontenc` package (with `pdflatex`);
1588 default is `T1` (see [LaTeX font encodings guide])
1590`fontfamily`
1591: font package for use with `pdflatex`:
1592 [TeX Live] includes many options, documented in the [LaTeX Font Catalogue].
1593 The default is [Latin Modern][`lm`].
1595`fontfamilyoptions`
1596: options for package used as `fontfamily`; repeat for multiple options.
1597 For example, to use the Libertine font with proportional lowercase
1598 (old-style) figures through the [`libertinus`] package:
1600 ---
1601 fontfamily: libertinus
1602 fontfamilyoptions:
1603 - osf
1604 - p
1605 ...
1607`fontsize`
1608: font size for body text. The standard classes allow 10pt, 11pt, and 12pt.
1609 To use another size, set `documentclass` to one of the [KOMA-Script] classes,
1610 such as `scrartcl` or `scrbook`.
1612`mainfont`, `sansfont`, `monofont`, `mathfont`, `CJKmainfont`
1613: font families for use with `xelatex` or
1614 `lualatex`: take the name of any system font, using the
1615 [`fontspec`] package. `CJKmainfont` uses the [`xecjk`] package.
1617`mainfontoptions`, `sansfontoptions`, `monofontoptions`, `mathfontoptions`, `CJKoptions`
1618: options to use with `mainfont`, `sansfont`, `monofont`, `mathfont`,
1619 `CJKmainfont` in `xelatex` and `lualatex`. Allow for any choices
1620 available through [`fontspec`]; repeat for multiple options. For example,
1621 to use the [TeX Gyre] version of Palatino with lowercase figures:
1623 ---
1624 mainfont: TeX Gyre Pagella
1625 mainfontoptions:
1626 - Numbers=Lowercase
1627 - Numbers=Proportional
1628 ...
1630`microtypeoptions`
1631: options to pass to the microtype package
1633### Links
1635`colorlinks`
1636: add color to link text; automatically enabled if any of
1637 `linkcolor`, `filecolor`, `citecolor`, `urlcolor`, or `toccolor` are set
1639`linkcolor`, `filecolor`, `citecolor`, `urlcolor`, `toccolor`
1640: color for internal links, external links, citation links, linked
1641 URLs, and links in table of contents, respectively: uses options
1642 allowed by [`xcolor`], including the `dvipsnames`, `svgnames`, and
1643 `x11names` lists
1645`links-as-notes`
1646: causes links to be printed as footnotes
1648### Front matter
1650`lof`, `lot`
1651: include list of figures, list of tables
1653`thanks`
1654: contents of acknowledgments footnote after document title
1656`toc`
1657: include table of contents (can also be set using `--toc/--table-of-contents`)
1659`toc-depth`
1660: level of section to include in table of contents
1662### BibLaTeX Bibliographies
1664These variables function when using BibLaTeX for [citation rendering].
1666`biblatexoptions`
1667: list of options for biblatex
1669`biblio-style`
1670: bibliography style, when used with `--natbib` and `--biblatex`.
1672`biblio-title`
1673: bibliography title, when used with `--natbib` and `--biblatex`.
1675`bibliography`
1676: bibliography to use for resolving references
1678`natbiboptions`
1679: list of options for natbib
1681[KOMA-Script]: https://ctan.org/pkg/koma-script
1682[LaTeX Font Catalogue]: http://www.tug.dk/FontCatalogue/
1683[LaTeX font encodings guide]: https://ctan.org/pkg/encguide
1684[TeX Gyre]: http://www.gust.org.pl/projects/e-foundry/tex-gyre
1685[`article`]: https://ctan.org/pkg/article
1686[`book`]: https://ctan.org/pkg/book
1687[`libertinus`]: https://ctan.org/pkg/libertinus
1688[`memoir`]: https://ctan.org/pkg/memoir
1689[`report`]: https://ctan.org/pkg/report
1691Variables for ConTeXt
1692---------------------
1694Pandoc uses these variables when [creating a PDF] with ConTeXt.
1696`fontsize`
1697: font size for body text (e.g. `10pt`, `12pt`)
1699`headertext`, `footertext`
1700: text to be placed in running header or footer (see [ConTeXt Headers and Footers]);
1701 repeat up to four times for different placement
1703`indenting`
1704: controls indentation of paragraphs, e.g. `yes,small,next` (see [ConTeXt Indentation]);
1705 repeat for multiple options
1707`interlinespace`
1708: adjusts line spacing, e.g. `4ex` (using [`setupinterlinespace`]);
1709 repeat for multiple options
1711`layout`
1712: options for page margins and text arrangement (see [ConTeXt Layout]);
1713 repeat for multiple options
1715`linkcolor`, `contrastcolor`
1716: color for links outside and inside a page, e.g. `red`, `blue` (see [ConTeXt Color])
1718`linkstyle`
1719: typeface style for links, e.g. `normal`, `bold`, `slanted`, `boldslanted`, `type`, `cap`, `small`
1721`lof`, `lot`
1722: include list of figures, list of tables
1724`mainfont`, `sansfont`, `monofont`, `mathfont`
1725: font families: take the name of any system font (see [ConTeXt Font Switching])
1727`margin-left`, `margin-right`, `margin-top`, `margin-bottom`
1728: sets margins, if `layout` is not used (otherwise `layout`
1729 overrides these)
1731`pagenumbering`
1732: page number style and location (using [`setuppagenumbering`]);
1733 repeat for multiple options
1735`papersize`
1736: paper size, e.g. `letter`, `A4`, `landscape` (see [ConTeXt Paper Setup]);
1737 repeat for multiple options
1739`pdfa`
1740: adds to the preamble the setup necessary to generate PDF/A-1b:2005.
1741 To successfully generate PDF/A the required ICC color profiles have to
1742 be available and the content and all included files (such as images)
1743 have to be standard conforming. The ICC profiles can be obtained
1744 from [ConTeXt ICC Profiles]. See also [ConTeXt PDFA] for more
1745 details.
1747`toc`
1748: include table of contents (can also be set using `--toc/--table-of-contents`)
1750`whitespace`
1751: spacing between paragraphs, e.g. `none`, `small` (using [`setupwhitespace`])
1753[ConTeXt Paper Setup]: https://wiki.contextgarden.net/PaperSetup
1754[ConTeXt Layout]: https://wiki.contextgarden.net/Layout
1755[ConTeXt Font Switching]: https://wiki.contextgarden.net/Font_Switching
1756[ConTeXt Color]: https://wiki.contextgarden.net/Color
1757[ConTeXt Headers and Footers]: https://wiki.contextgarden.net/Headers_and_Footers
1758[ConTeXt Indentation]: https://wiki.contextgarden.net/Indentation
1759[ConTeXt ICC Profiles]: https://wiki.contextgarden.net/PDFX#ICC_profiles
1760[ConTeXt PDFA]: https://wiki.contextgarden.net/PDF/A
1761[`setupwhitespace`]: https://wiki.contextgarden.net/Command/setupwhitespace
1762[`setupinterlinespace`]: https://wiki.contextgarden.net/Command/setupinterlinespace
1763[`setuppagenumbering`]: https://wiki.contextgarden.net/Command/setuppagenumbering
1765Variables for `wkhtmltopdf`
1766---------------------------
1768Pandoc uses these variables when [creating a PDF] with [`wkhtmltopdf`].
1769The `--css` option also affects the output.
1771`footer-html`, `header-html`
1772: add information to the header and footer
1774`margin-left`, `margin-right`, `margin-top`, `margin-bottom`
1775: set the page margins
1777`papersize`
1778: sets the PDF paper size
1780Variables for man pages
1781-----------------------
1783`adjusting`
1784: adjusts text to left (`l`), right (`r`), center (`c`),
1785 or both (`b`) margins
1787`footer`
1788: footer in man pages
1790`header`
1791: header in man pages
1793`hyphenate`
1794: if `true` (the default), hyphenation will be used
1796`section`
1797: section number in man pages
1799Variables for ms
1800----------------
1802`fontfamily`
1803: font family (e.g. `T` or `P`)
1805`indent`
1806: paragraph indent (e.g. `2m`)
1808`lineheight`
1809: line height (e.g. `12p`)
1811`pointsize`
1812: point size (e.g. `10p`)
1814Structural variables
1815--------------------
1817Pandoc sets these variables automatically in response to [options] or
1818document contents; users can also modify them. These vary depending
1819on the output format, and include the following:
1821`body`
1822: body of document
1824`date-meta`
1825: the `date` variable converted to ISO 8601 YYYY-MM-DD,
1826 included in all HTML based formats (dzslides, epub,
1827 html, html4, html5, revealjs, s5, slideous, slidy).
1828 The recognized formats for `date` are: `mm/dd/yyyy`,
1829 `mm/dd/yy`, `yyyy-mm-dd` (ISO 8601), `dd MM yyyy`
1830 (e.g. either `02 Apr 2018` or `02 April 2018`),
1831 `MM dd, yyyy` (e.g. `Apr. 02, 2018` or `April 02, 2018),
1832 `yyyy[mm[dd]]]` (e.g. `20180402, `201804` or `2018`).
1834`header-includes`
1835: contents specified by `-H/--include-in-header` (may have multiple
1836 values)
1838`include-before`
1839: contents specified by `-B/--include-before-body` (may have
1840 multiple values)
1842`include-after`
1843: contents specified by `-A/--include-after-body` (may have
1844 multiple values)
1846`meta-json`
1847: JSON representation of all of the document's metadata. Field
1848 values are transformed to the selected output format.
1850`numbersections`
1851: non-null value if `-N/--number-sections` was specified
1853`sourcefile`, `outputfile`
1854: source and destination filenames, as given on the command line.
1855 `sourcefile` can also be a list if input comes from multiple files, or empty
1856 if input is from stdin. You can use the following snippet in your template
1857 to distinguish them:
1859 $if(sourcefile)$
1860 $for(sourcefile)$
1861 $sourcefile$
1862 $endfor$
1863 $else$
1864 (stdin)
1865 $endif$
1867 Similarly, `outputfile` can be `-` if output goes to the terminal.
1869`toc`
1870: non-null value if `--toc/--table-of-contents` was specified
1872`toc-title`
1873: title of table of contents (works only with EPUB,
1874 opendocument, odt, docx, pptx, beamer, LaTeX)
1876Using variables in templates
1877----------------------------
1879Variable names are sequences of alphanumerics, `-`, and `_`,
1880starting with a letter. A variable name surrounded by `$` signs
1881will be replaced by its value. For example, the string `$title$` in
1883 <title>$title$</title>
1885will be replaced by the document title.
1887To write a literal `$` in a template, use `$$`.
1889Templates may contain conditionals. The syntax is as follows:
1891 $if(variable)$
1893 $else$
1895 $endif$
1897This will include `X` in the template if `variable` has a truthy
1898value; otherwise it will include `Y`. Here a truthy value is any
1899of the following:
1901- a string that is not entirely white space,
1902- a non-empty array where the first value is truthy,
1903- any number (including zero),
1904- any object,
1905- the boolean `true` (to specify the boolean `true`
1906 value using YAML metadata or the `--metadata` flag,
1907 use `true`, `True`, or `TRUE`; with the `--variable`
1908 flag, simply omit a value for the variable, e.g.
1909 `--variable draft`).
1911`X` and `Y` are placeholders for any valid template text,
1912and may include interpolated variables or other conditionals.
1913The `$else$` section may be omitted.
1915When variables can have multiple values (for example, `author` in
1916a multi-author document), you can use the `$for$` keyword:
1918 $for(author)$
1919 <meta name="author" content="$author$" />
1920 $endfor$
1922You can optionally specify a separator to be used between
1923consecutive items:
1925 $for(author)$$author$$sep$, $endfor$
1927Note that the separator needs to be specified immediately before the `$endfor`
1928keyword.
1930A dot can be used to select a field of a variable that takes
1931an object as its value. So, for example:
1933 $author.name$ ($author.affiliation$)
1935The value of a variable will be indented to the same level as the variable.
1937If you use custom templates, you may need to revise them as pandoc
1938changes. We recommend tracking the changes in the default templates,
1939and modifying your custom templates accordingly. An easy way to do this
1940is to fork the [pandoc-templates] repository and merge in changes after each
1941pandoc release.
1943Templates may contain comments: anything on a line after `$--`
1944will be treated as a comment and ignored.
1946[pandoc-templates]: https://github.com/jgm/pandoc-templates
1948Extensions
1949==========
1951The behavior of some of the readers and writers can be adjusted by
1952enabling or disabling various extensions.
1954An extension can be enabled by adding `+EXTENSION`
1955to the format name and disabled by adding `-EXTENSION`. For example,
1956`--from markdown_strict+footnotes` is strict Markdown with footnotes
1957enabled, while `--from markdown-footnotes-pipe_tables` is pandoc's
1958Markdown without footnotes or pipe tables.
1960The markdown reader and writer make by far the most use of extensions.
1961Extensions only used by them are therefore covered in the
1962section [Pandoc's Markdown] below (See [Markdown variants] for
1963`commonmark` and `gfm`.) In the following, extensions that also work
1964for other formats are covered.
1966Note that markdown extensions added to the `ipynb` format
1967affect Markdown cells in Jupyter notebooks (as do command-line
1968options like `--atx-headers`).
1970Typography
1971----------
1973#### Extension: `smart` ####
1975Interpret straight quotes as curly quotes, `---` as em-dashes,
1976`--` as en-dashes, and `...` as ellipses. Nonbreaking spaces are
1977inserted after certain abbreviations, such as "Mr."
1979This extension can be enabled/disabled for the following formats:
1981input formats
1982: `markdown`, `commonmark`, `latex`, `mediawiki`, `org`, `rst`, `twiki`
1984output formats
1985: `markdown`, `latex`, `context`, `rst`
1987enabled by default in
1988: `markdown`, `latex`, `context` (both input and output)
1990Note: If you are *writing* Markdown, then the `smart` extension
1991has the reverse effect: what would have been curly quotes comes
1992out straight.
1994In LaTeX, `smart` means to use the standard TeX ligatures
1995for quotation marks (` `` ` and ` '' ` for double quotes,
1996`` ` `` and `` ' `` for single quotes) and dashes (`--` for
1997en-dash and `---` for em-dash). If `smart` is disabled,
1998then in reading LaTeX pandoc will parse these characters
1999literally. In writing LaTeX, enabling `smart` tells pandoc
2000to use the ligatures when possible; if `smart` is disabled
2001pandoc will use unicode quotation mark and dash characters.
2003Headers and sections
2004--------------------
2006#### Extension: `auto_identifiers` ####
2008A header without an explicitly specified identifier will be
2009automatically assigned a unique identifier based on the header text.
2011This extension can be enabled/disabled for the following formats:
2013input formats
2014: `markdown`, `latex`, `rst`, `mediawiki`, `textile`
2016output formats
2017: `markdown`, `muse`
2019enabled by default in
2020: `markdown`, `muse`
2022The default algorithm used to derive the identifier from the
2023header text is:
2025 - Remove all formatting, links, etc.
2026 - Remove all footnotes.
2027 - Remove all non-alphanumeric characters,
2028 except underscores, hyphens, and periods.
2029 - Replace all spaces and newlines with hyphens.
2030 - Convert all alphabetic characters to lowercase.
2031 - Remove everything up to the first letter (identifiers may
2032 not begin with a number or punctuation mark).
2033 - If nothing is left after this, use the identifier `section`.
2035Thus, for example,
2037 Header Identifier
2038 ------------------------------- ----------------------------
2039 `Header identifiers in HTML` `header-identifiers-in-html`
2040 `Maître d'hôtel` `maître-dhôtel`
2041 `*Dogs*?--in *my* house?` `dogs--in-my-house`
2042 `[HTML], [S5], or [RTF]?` `html-s5-or-rtf`
2043 `3. Applications` `applications`
2044 `33` `section`
2046These rules should, in most cases, allow one to determine the identifier
2047from the header text. The exception is when several headers have the
2048same text; in this case, the first will get an identifier as described
2049above; the second will get the same identifier with `-1` appended; the
2050third with `-2`; and so on.
2052(However, a different algorithm is used if
2053`gfm_auto_identifiers` is enabled; see below.)
2055These identifiers are used to provide link targets in the table of
2056contents generated by the `--toc|--table-of-contents` option. They
2057also make it easy to provide links from one section of a document to
2058another. A link to this section, for example, might look like this:
2060 See the section on
2061 [header identifiers](#header-identifiers-in-html-latex-and-context).
2063Note, however, that this method of providing links to sections works
2064only in HTML, LaTeX, and ConTeXt formats.
2066If the `--section-divs` option is specified, then each section will
2067be wrapped in a `section` (or a `div`, if `html4` was specified),
2068and the identifier will be attached to the enclosing `<section>`
2069(or `<div>`) tag rather than the header itself. This allows entire
2070sections to be manipulated using JavaScript or treated differently in
2071CSS.
2073#### Extension: `ascii_identifiers` ####
2075Causes the identifiers produced by `auto_identifiers` to be pure ASCII.
2076Accents are stripped off of accented Latin letters, and non-Latin
2077letters are omitted.
2079#### Extension: `gfm_auto_identifiers` ####
2081Changes the algorithm used by `auto_identifiers` to conform to
2082GitHub's method. Spaces are converted to dashes (`-`),
2083uppercase characters to lowercase characters, and punctuation
2084characters other than `-` and `_` are removed.
2086Math Input
2087----------
2089The extensions [`tex_math_dollars`](#extension-tex_math_dollars),
2090[`tex_math_single_backslash`](#extension-tex_math_single_backslash), and
2091[`tex_math_double_backslash`](#extension-tex_math_double_backslash)
2092are described in the section about Pandoc's Markdown.
2094However, they can also be used with HTML input. This is handy for
2095reading web pages formatted using MathJax, for example.
2097Raw HTML/TeX
2098------------
2100The following extensions (especially how they affect Markdown
2101input/output) are also described in more detail in their respective
2102sections of [Pandoc's Markdown].
2104#### Extension: `raw_html` {#raw_html}
2106When converting from HTML, parse elements to raw HTML which are not
2107representable in pandoc's AST.
2108By default, this is disabled for HTML input.
2110#### Extension: `raw_tex` {#raw_tex}
2112Allows raw LaTeX, TeX, and ConTeXt to be included in a document.
2114This extension can be enabled/disabled for the following formats
2115(in addition to `markdown`):
2117input formats
2118: `latex`, `org`, `textile`, `html` (environments, `\ref`, and
2119 `\eqref` only), `ipynb`
2121output formats
2122: `textile`, `commonmark`
2124Note: as applied to `ipynb`, `raw_html` and `raw_tex` affect not
2125only raw TeX in markdown cells, but data with mime type
2126`text/html` in output cells. Since the `ipynb` reader attempts
2127to preserve the richest possible outputs when several options
2128are given, you will get best results if you disable `raw_html`
2129and `raw_tex` when converting to formats like `docx` which don't
2130allow raw `html` or `tex`.
2132#### Extension: `native_divs` {#native_divs}
2134This extension is enabled by default for HTML input. This means that
2135`div`s are parsed to pandoc native elements. (Alternatively, you
2136can parse them to raw HTML using `-f html-native_divs+raw_html`.)
2138When converting HTML to Markdown, for example, you may want to drop all
2139`div`s and `span`s:
2141 pandoc -f html-native_divs-native_spans -t markdown
2143#### Extension: `native_spans` {#native_spans}
2145Analogous to `native_divs` above.
2148Literate Haskell support
2149------------------------
2151#### Extension: `literate_haskell` ####
2153Treat the document as literate Haskell source.
2155This extension can be enabled/disabled for the following formats:
2157input formats
2158: `markdown`, `rst`, `latex`
2160output formats
2161: `markdown`, `rst`, `latex`, `html`
2163If you append `+lhs` (or `+literate_haskell`) to one of the formats
2164above, pandoc will treat the document as literate Haskell source.
2165This means that
2167 - In Markdown input, "bird track" sections will be parsed as Haskell
2168 code rather than block quotations. Text between `\begin{code}`
2169 and `\end{code}` will also be treated as Haskell code. For
2170 ATX-style headers the character '=' will be used instead of '#'.
2172 - In Markdown output, code blocks with classes `haskell` and `literate`
2173 will be rendered using bird tracks, and block quotations will be
2174 indented one space, so they will not be treated as Haskell code.
2175 In addition, headers will be rendered setext-style (with underlines)
2176 rather than ATX-style (with '#' characters). (This is because ghc
2177 treats '#' characters in column 1 as introducing line numbers.)
2179 - In restructured text input, "bird track" sections will be parsed
2180 as Haskell code.
2182 - In restructured text output, code blocks with class `haskell` will
2183 be rendered using bird tracks.
2185 - In LaTeX input, text in `code` environments will be parsed as
2186 Haskell code.
2188 - In LaTeX output, code blocks with class `haskell` will be rendered
2189 inside `code` environments.
2191 - In HTML output, code blocks with class `haskell` will be rendered
2192 with class `literatehaskell` and bird tracks.
2194Examples:
2196 pandoc -f markdown+lhs -t html
2198reads literate Haskell source formatted with Markdown conventions and writes
2199ordinary HTML (without bird tracks).
2201 pandoc -f markdown+lhs -t html+lhs
2203writes HTML with the Haskell code in bird tracks, so it can be copied
2204and pasted as literate Haskell source.
2206Note that GHC expects the bird tracks in the first column, so indented
2207literate code blocks (e.g. inside an itemized environment) will not be
2208picked up by the Haskell compiler.
2210Other extensions
2211----------------
2213#### Extension: `empty_paragraphs` ####
2215Allows empty paragraphs. By default empty paragraphs are
2216omitted.
2218This extension can be enabled/disabled for the following formats:
2220input formats
2221: `docx`, `html`
2223output formats
2224: `docx`, `odt`, `opendocument`, `html`
2226#### Extension: `styles` #### {#ext-styles}
2228When converting from docx, read all docx styles as divs (for
2229paragraph styles) and spans (for character styles) regardless
2230of whether pandoc understands the meaning of these styles.
2231This can be used with [docx custom styles](#custom-styles).
2232Disabled by default.
2234input formats
2235: `docx`
2237#### Extension: `amuse` ####
2239In the `muse` input format, this enables Text::Amuse
2240extensions to Emacs Muse markup.
2242#### Extension: `citations` {#org-citations}
2244Some aspects of [Pandoc's Markdown citation syntax](#citations) are also accepted
2245in `org` input.
2247#### Extension: `ntb` ####
2249In the `context` output format this enables the use of [Natural Tables
2250(TABLE)](http://wiki.contextgarden.net/TABLE) instead of the default
2251[Extreme Tables (xtables)](http://wiki.contextgarden.net/xtables).
2252Natural tables allow more fine-grained global customization but come
2253at a performance penalty compared to extreme tables.
2256Pandoc's Markdown
2257=================
2259Pandoc understands an extended and slightly revised version of
2260John Gruber's [Markdown] syntax. This document explains the syntax,
2261noting differences from standard Markdown. Except where noted, these
2262differences can be suppressed by using the `markdown_strict` format instead
2263of `markdown`. Extensions can be enabled or disabled to specify the
2264behavior more granularly. They are described in the following. See also
2265[Extensions] above, for extensions that work also on other formats.
2267Philosophy
2268----------
2270Markdown is designed to be easy to write, and, even more importantly,
2271easy to read:
2273> A Markdown-formatted document should be publishable as-is, as plain
2274> text, without looking like it's been marked up with tags or formatting
2275> instructions.
2276> -- [John Gruber](http://daringfireball.net/projects/markdown/syntax#philosophy)
2278This principle has guided pandoc's decisions in finding syntax for
2279tables, footnotes, and other extensions.
2281There is, however, one respect in which pandoc's aims are different
2282from the original aims of Markdown. Whereas Markdown was originally
2283designed with HTML generation in mind, pandoc is designed for multiple
2284output formats. Thus, while pandoc allows the embedding of raw HTML,
2285it discourages it, and provides other, non-HTMLish ways of representing
2286important document elements like definition lists, tables, mathematics, and
2287footnotes.
2289Paragraphs
2290----------
2292A paragraph is one or more lines of text followed by one or more blank lines.
2293Newlines are treated as spaces, so you can reflow your paragraphs as you like.
2294If you need a hard line break, put two or more spaces at the end of a line.
2296#### Extension: `escaped_line_breaks` ####
2298A backslash followed by a newline is also a hard line break.
2299Note: in multiline and grid table cells, this is the only way
2300to create a hard line break, since trailing spaces in the cells
2301are ignored.
2303Headers
2304-------
2306There are two kinds of headers: Setext and ATX.
2308### Setext-style headers ###
2310A setext-style header is a line of text "underlined" with a row of `=` signs
2311(for a level one header) or `-` signs (for a level two header):
2313 A level-one header
2314 ==================
2316 A level-two header
2317 ------------------
2319The header text can contain inline formatting, such as emphasis (see
2320[Inline formatting], below).
2323### ATX-style headers ###
2325An ATX-style header consists of one to six `#` signs and a line of
2326text, optionally followed by any number of `#` signs. The number of
2327`#` signs at the beginning of the line is the header level:
2329 ## A level-two header
2331 ### A level-three header ###
2333As with setext-style headers, the header text can contain formatting:
2335 # A level-one header with a [link](/url) and *emphasis*
2337#### Extension: `blank_before_header` ####
2339Standard Markdown syntax does not require a blank line before a header.
2340Pandoc does require this (except, of course, at the beginning of the
2341document). The reason for the requirement is that it is all too easy for a
2342`#` to end up at the beginning of a line by accident (perhaps through line
2343wrapping). Consider, for example:
2345 I like several of their flavors of ice cream:
2346 #22, for example, and #5.
2348#### Extension: `space_in_atx_header` ####
2350Many Markdown implementations do not require a space between the
2351opening `#`s of an ATX header and the header text, so that
2352`#5 bolt` and `#hashtag` count as headers. With this extension,
2353pandoc does require the space.
2355### Header identifiers ###
2357See also the [`auto_identifiers` extension](#extension-auto_identifiers) above.
2359#### Extension: `header_attributes` ####
2361Headers can be assigned attributes using this syntax at the end
2362of the line containing the header text:
2364 {#identifier .class .class key=value key=value}
2366Thus, for example, the following headers will all be assigned the identifier
2367`foo`:
2369 # My header {#foo}
2371 ## My header ## {#foo}
2373 My other header {#foo}
2374 ---------------
2376(This syntax is compatible with [PHP Markdown Extra].)
2378Note that although this syntax allows assignment of classes and key/value
2379attributes, writers generally don't use all of this information. Identifiers,
2380classes, and key/value attributes are used in HTML and HTML-based formats such
2381as EPUB and slidy. Identifiers are used for labels and link anchors in the
2382LaTeX, ConTeXt, Textile, and AsciiDoc writers.
2384Headers with the class `unnumbered` will not be numbered, even if
2385`--number-sections` is specified. A single hyphen (`-`) in an attribute
2386context is equivalent to `.unnumbered`, and preferable in non-English
2387documents. So,
2389 # My header {-}
2391is just the same as
2393 # My header {.unnumbered}
2395#### Extension: `implicit_header_references` ####
2397Pandoc behaves as if reference links have been defined for each header.
2398So, to link to a header
2400 # Header identifiers in HTML
2402you can simply write
2404 [Header identifiers in HTML]
2408 [Header identifiers in HTML][]
2412 [the section on header identifiers][header identifiers in
2413 HTML]
2415instead of giving the identifier explicitly:
2417 [Header identifiers in HTML](#header-identifiers-in-html)
2419If there are multiple headers with identical text, the corresponding
2420reference will link to the first one only, and you will need to use explicit
2421links to link to the others, as described above.
2423Like regular reference links, these references are case-insensitive.
2425Explicit link reference definitions always take priority over
2426implicit header references. So, in the following example, the
2427link will point to `bar`, not to `#foo`:
2429 # Foo
2431 [foo]: bar
2433 See [foo]
2435Block quotations
2436----------------
2438Markdown uses email conventions for quoting blocks of text.
2439A block quotation is one or more paragraphs or other block elements
2440(such as lists or headers), with each line preceded by a `>` character
2441and an optional space. (The `>` need not start at the left margin, but
2442it should not be indented more than three spaces.)
2444 > This is a block quote. This
2445 > paragraph has two lines.
2447 > 1. This is a list inside a block quote.
2448 > 2. Second item.
2450A "lazy" form, which requires the `>` character only on the first
2451line of each block, is also allowed:
2453 > This is a block quote. This
2454 paragraph has two lines.
2456 > 1. This is a list inside a block quote.
2457 2. Second item.
2459Among the block elements that can be contained in a block quote are
2460other block quotes. That is, block quotes can be nested:
2462 > This is a block quote.
2464 > > A block quote within a block quote.
2466If the `>` character is followed by an optional space, that space
2467will be considered part of the block quote marker and not part of
2468the indentation of the contents. Thus, to put an indented code
2469block in a block quote, you need five spaces after the `>`:
2471 > code
2473#### Extension: `blank_before_blockquote` ####
2475Standard Markdown syntax does not require a blank line before a block
2476quote. Pandoc does require this (except, of course, at the beginning of the
2477document). The reason for the requirement is that it is all too easy for a
2478`>` to end up at the beginning of a line by accident (perhaps through line
2479wrapping). So, unless the `markdown_strict` format is used, the following does
2480not produce a nested block quote in pandoc:
2482 > This is a block quote.
2483 >> Nested.
2486Verbatim (code) blocks
2487----------------------
2489### Indented code blocks ###
2491A block of text indented four spaces (or one tab) is treated as verbatim
2492text: that is, special characters do not trigger special formatting,
2493and all spaces and line breaks are preserved. For example,
2495 if (a > 3) {
2496 moveShip(5 * gravity, DOWN);
2499The initial (four space or one tab) indentation is not considered part
2500of the verbatim text, and is removed in the output.
2502Note: blank lines in the verbatim text need not begin with four spaces.
2505### Fenced code blocks ###
2507#### Extension: `fenced_code_blocks` ####
2509In addition to standard indented code blocks, pandoc supports
2510*fenced* code blocks. These begin with a row of three or more
2511tildes (`~`) and end with a row of tildes that must be at least as long as
2512the starting row. Everything between these lines is treated as code. No
2513indentation is necessary:
2515 ~~~~~~~
2516 if (a > 3) {
2517 moveShip(5 * gravity, DOWN);
2519 ~~~~~~~
2521Like regular code blocks, fenced code blocks must be separated
2522from surrounding text by blank lines.
2524If the code itself contains a row of tildes or backticks, just use a longer
2525row of tildes or backticks at the start and end:
2527 ~~~~~~~~~~~~~~~~
2528 ~~~~~~~~~~
2529 code including tildes
2530 ~~~~~~~~~~
2531 ~~~~~~~~~~~~~~~~
2533#### Extension: `backtick_code_blocks` ####
2535Same as `fenced_code_blocks`, but uses backticks (`` ` ``) instead of tildes
2536(`~`).
2538#### Extension: `fenced_code_attributes` ####
2540Optionally, you may attach attributes to fenced or backtick code block using
2541this syntax:
2543 ~~~~ {#mycode .haskell .numberLines startFrom="100"}
2544 qsort [] = []
2545 qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++
2546 qsort (filter (>= x) xs)
2547 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2549Here `mycode` is an identifier, `haskell` and `numberLines` are classes, and
2550`startFrom` is an attribute with value `100`. Some output formats can use this
2551information to do syntax highlighting. Currently, the only output formats
2552that uses this information are HTML, LaTeX, Docx, Ms, and PowerPoint. If
2553highlighting is supported for your output format and language, then the code
2554block above will appear highlighted, with numbered lines. (To see which
2555languages are supported, type `pandoc --list-highlight-languages`.) Otherwise,
2556the code block above will appear as follows:
2558 <pre id="mycode" class="haskell numberLines" startFrom="100">
2559 <code>
2560 ...
2561 </code>
2562 </pre>
2564The `numberLines` (or `number-lines`) class will cause the lines
2565of the code block to be numbered, starting with `1` or the value
2566of the `startFrom` attribute. The `lineAnchors` (or
2567`line-anchors`) class will cause the lines to be clickable
2568anchors in HTML output.
2570A shortcut form can also be used for specifying the language of
2571the code block:
2573 ```haskell
2574 qsort [] = []
2575 ```
2577This is equivalent to:
2579 ``` {.haskell}
2580 qsort [] = []
2581 ```
2583If the `fenced_code_attributes` extension is disabled, but
2584input contains class attribute(s) for the code block, the first
2585class attribute will be printed after the opening fence as a bare
2586word.
2588To prevent all highlighting, use the `--no-highlight` flag.
2589To set the highlighting style, use `--highlight-style`.
2590For more information on highlighting, see [Syntax highlighting],
2591below.
2593Line blocks
2594-----------
2596#### Extension: `line_blocks` ####
2598A line block is a sequence of lines beginning with a vertical bar (`|`)
2599followed by a space. The division into lines will be preserved in
2600the output, as will any leading spaces; otherwise, the lines will
2601be formatted as Markdown. This is useful for verse and addresses:
2603 | The limerick packs laughs anatomical
2604 | In space that is quite economical.
2605 | But the good ones I've seen
2606 | So seldom are clean
2607 | And the clean ones so seldom are comical
2609 | 200 Main St.
2610 | Berkeley, CA 94718
2612The lines can be hard-wrapped if needed, but the continuation
2613line must begin with a space.
2615 | The Right Honorable Most Venerable and Righteous Samuel L.
2616 Constable, Jr.
2617 | 200 Main St.
2618 | Berkeley, CA 94718
2620This syntax is borrowed from [reStructuredText].
2622Lists
2623-----
2625### Bullet lists ###
2627A bullet list is a list of bulleted list items. A bulleted list
2628item begins with a bullet (`*`, `+`, or `-`). Here is a simple
2629example:
2631 * one
2632 * two
2633 * three
2635This will produce a "compact" list. If you want a "loose" list, in which
2636each item is formatted as a paragraph, put spaces between the items:
2638 * one
2640 * two
2642 * three
2644The bullets need not be flush with the left margin; they may be
2645indented one, two, or three spaces. The bullet must be followed
2646by whitespace.
2648List items look best if subsequent lines are flush with the first
2649line (after the bullet):
2651 * here is my first
2652 list item.
2653 * and my second.
2655But Markdown also allows a "lazy" format:
2657 * here is my first
2658 list item.
2659 * and my second.
2661### Block content in list items ###
2663A list item may contain multiple paragraphs and other block-level
2664content. However, subsequent paragraphs must be preceded by a blank line
2665and indented to line up with the first non-space content after
2666the list marker.
2668 * First paragraph.
2670 Continued.
2672 * Second paragraph. With a code block, which must be indented
2673 eight spaces:
2675 { code }
2677Exception: if the list marker is followed by an indented code
2678block, which must begin 5 spaces after the list marker, then
2679subsequent paragraphs must begin two columns after the last
2680character of the list marker:
2682 * code
2684 continuation paragraph
2686List items may include other lists. In this case the preceding blank
2687line is optional. The nested list must be indented to line up with
2688the first non-space character after the list marker of the
2689containing list item.
2691 * fruits
2692 + apples
2693 - macintosh
2694 - red delicious
2695 + pears
2696 + peaches
2697 * vegetables
2698 + broccoli
2699 + chard
2701As noted above, Markdown allows you to write list items "lazily," instead of
2702indenting continuation lines. However, if there are multiple paragraphs or
2703other blocks in a list item, the first line of each must be indented.
2705 + A lazy, lazy, list
2706 item.
2708 + Another one; this looks
2709 bad but is legal.
2711 Second paragraph of second
2712 list item.
2714### Ordered lists ###
2716Ordered lists work just like bulleted lists, except that the items
2717begin with enumerators rather than bullets.
2719In standard Markdown, enumerators are decimal numbers followed
2720by a period and a space. The numbers themselves are ignored, so
2721there is no difference between this list:
2723 1. one
2724 2. two
2725 3. three
2727and this one:
2729 5. one
2730 7. two
2731 1. three
2733#### Extension: `fancy_lists` ####
2735Unlike standard Markdown, pandoc allows ordered list items to be marked
2736with uppercase and lowercase letters and roman numerals, in addition to
2737Arabic numerals. List markers may be enclosed in parentheses or followed by a
2738single right-parentheses or period. They must be separated from the
2739text that follows by at least one space, and, if the list marker is a
2740capital letter with a period, by at least two spaces.[^2]
2742[^2]: The point of this rule is to ensure that normal paragraphs
2743 starting with people's initials, like
2745 B. Russell was an English philosopher.
2747 do not get treated as list items.
2749 This rule will not prevent
2751 (C) 2007 Joe Smith
2753 from being interpreted as a list item. In this case, a backslash
2754 escape can be used:
2756 (C\) 2007 Joe Smith
2758The `fancy_lists` extension also allows '`#`' to be used as an
2759ordered list marker in place of a numeral:
2761 #. one
2762 #. two
2764#### Extension: `startnum` ####
2766Pandoc also pays attention to the type of list marker used, and to the
2767starting number, and both of these are preserved where possible in the
2768output format. Thus, the following yields a list with numbers followed
2769by a single parenthesis, starting with 9, and a sublist with lowercase
2770roman numerals:
2772 9) Ninth
2773 10) Tenth
2774 11) Eleventh
2775 i. subone
2776 ii. subtwo
2777 iii. subthree
2779Pandoc will start a new list each time a different type of list
2780marker is used. So, the following will create three lists:
2782 (2) Two
2783 (5) Three
2784 1. Four
2785 * Five
2787If default list markers are desired, use `#.`:
2789 #. one
2790 #. two
2791 #. three
2793#### Extension: `task_lists` ####
2795Pandoc supports task lists, using the syntax of GitHub-Flavored Markdown.
2797 - [ ] an unchecked task list item
2798 - [x] checked item
2800### Definition lists ###
2802#### Extension: `definition_lists` ####
2804Pandoc supports definition lists, using the syntax of
2805[PHP Markdown Extra] with some extensions.[^3]
2807 Term 1
2809 : Definition 1
2811 Term 2 with *inline markup*
2813 : Definition 2
2815 { some code, part of Definition 2 }
2817 Third paragraph of definition 2.
2819Each term must fit on one line, which may optionally be followed by
2820a blank line, and must be followed by one or more definitions.
2821A definition begins with a colon or tilde, which may be indented one
2822or two spaces.
2824A term may have multiple definitions, and each definition may consist of one or
2825more block elements (paragraph, code block, list, etc.), each indented four
2826spaces or one tab stop. The body of the definition (including the first line,
2827aside from the colon or tilde) should be indented four spaces. However,
2828as with other Markdown lists, you can "lazily" omit indentation except
2829at the beginning of a paragraph or other block element:
2831 Term 1
2833 : Definition
2834 with lazy continuation.
2836 Second paragraph of the definition.
2838If you leave space before the definition (as in the example above),
2839the text of the definition will be treated as a paragraph. In some
2840output formats, this will mean greater spacing between term/definition
2841pairs. For a more compact definition list, omit the space before the
2842definition:
2844 Term 1
2845 ~ Definition 1
2847 Term 2
2848 ~ Definition 2a
2849 ~ Definition 2b
2851Note that space between items in a definition list is required.
2852(A variant that loosens this requirement, but disallows "lazy"
2853hard wrapping, can be activated with `compact_definition_lists`: see
2854[Non-pandoc extensions], below.)
2856[^3]: I have been influenced by the suggestions of [David Wheeler](http://www.justatheory.com/computers/markup/modest-markdown-proposal.html).
2858### Numbered example lists ###
2860#### Extension: `example_lists` ####
2862The special list marker `@` can be used for sequentially numbered
2863examples. The first list item with a `@` marker will be numbered '1',
2864the next '2', and so on, throughout the document. The numbered examples
2865need not occur in a single list; each new list using `@` will take up
2866where the last stopped. So, for example:
2868 (@) My first example will be numbered (1).
2869 (@) My second example will be numbered (2).
2871 Explanation of examples.
2873 (@) My third example will be numbered (3).
2875Numbered examples can be labeled and referred to elsewhere in the
2876document:
2878 (@good) This is a good example.
2880 As (@good) illustrates, ...
2882The label can be any string of alphanumeric characters, underscores,
2883or hyphens.
2885Note: continuation paragraphs in example lists must always
2886be indented four spaces, regardless of the length of the
2887list marker. That is, example lists always behave as if the
2888`four_space_rule` extension is set. This is because example
2889labels tend to be long, and indenting content to the
2890first non-space character after the label would be awkward.
2892### Compact and loose lists ###
2894Pandoc behaves differently from `Markdown.pl` on some "edge
2895cases" involving lists. Consider this source:
2897 + First
2898 + Second:
2899 - Fee
2900 - Fie
2901 - Foe
2903 + Third
2905Pandoc transforms this into a "compact list" (with no `<p>` tags around
2906"First", "Second", or "Third"), while Markdown puts `<p>` tags around
2907"Second" and "Third" (but not "First"), because of the blank space
2908around "Third". Pandoc follows a simple rule: if the text is followed by
2909a blank line, it is treated as a paragraph. Since "Second" is followed
2910by a list, and not a blank line, it isn't treated as a paragraph. The
2911fact that the list is followed by a blank line is irrelevant. (Note:
2912Pandoc works this way even when the `markdown_strict` format is specified. This
2913behavior is consistent with the official Markdown syntax description,
2914even though it is different from that of `Markdown.pl`.)
2917### Ending a list ###
2919What if you want to put an indented code block after a list?
2921 - item one
2922 - item two
2924 { my code block }
2926Trouble! Here pandoc (like other Markdown implementations) will treat
2927`{ my code block }` as the second paragraph of item two, and not as
2928a code block.
2930To "cut off" the list after item two, you can insert some non-indented
2931content, like an HTML comment, which won't produce visible output in
2932any format:
2934 - item one
2935 - item two
2937 <!-- end of list -->
2939 { my code block }
2941You can use the same trick if you want two consecutive lists instead
2942of one big list:
2944 1. one
2945 2. two
2946 3. three
2948 <!-- -->
2950 1. uno
2951 2. dos
2952 3. tres
2954Horizontal rules
2955----------------
2957A line containing a row of three or more `*`, `-`, or `_` characters
2958(optionally separated by spaces) produces a horizontal rule:
2960 * * * *
2962 ---------------
2965Tables
2966------
2968Four kinds of tables may be used. The first three kinds presuppose the use of
2969a fixed-width font, such as Courier. The fourth kind can be used with
2970proportionally spaced fonts, as it does not require lining up columns.
2972#### Extension: `table_captions` ####
2974A caption may optionally be provided with all 4 kinds of tables (as
2975illustrated in the examples below). A caption is a paragraph beginning
2976with the string `Table:` (or just `:`), which will be stripped off.
2977It may appear either before or after the table.
2979#### Extension: `simple_tables` ####
2981Simple tables look like this:
2983 Right Left Center Default
2984 ------- ------ ---------- -------
2985 12 12 12 12
2986 123 123 123 123
2987 1 1 1 1
2989 Table: Demonstration of simple table syntax.
2991The headers and table rows must each fit on one line. Column
2992alignments are determined by the position of the header text relative
2993to the dashed line below it:[^4]
2995 - If the dashed line is flush with the header text on the right side
2996 but extends beyond it on the left, the column is right-aligned.
2997 - If the dashed line is flush with the header text on the left side
2998 but extends beyond it on the right, the column is left-aligned.
2999 - If the dashed line extends beyond the header text on both sides,
3000 the column is centered.
3001 - If the dashed line is flush with the header text on both sides,
3002 the default alignment is used (in most cases, this will be left).
3004[^4]: This scheme is due to Michel Fortin, who proposed it on the
3005 [Markdown discussion list](http://six.pairlist.net/pipermail/markdown-discuss/2005-March/001097.html).
3007The table must end with a blank line, or a line of dashes followed by
3008a blank line.
3010The column headers may be omitted, provided a dashed line is used
3011to end the table. For example:
3013 ------- ------ ---------- -------
3014 12 12 12 12
3015 123 123 123 123
3016 1 1 1 1
3017 ------- ------ ---------- -------
3019When headers are omitted, column alignments are determined on the basis
3020of the first line of the table body. So, in the tables above, the columns
3021would be right, left, center, and right aligned, respectively.
3023#### Extension: `multiline_tables` ####
3025Multiline tables allow headers and table rows to span multiple lines
3026of text (but cells that span multiple columns or rows of the table are
3027not supported). Here is an example:
3029 -------------------------------------------------------------
3030 Centered Default Right Left
3031 Header Aligned Aligned Aligned
3032 ----------- ------- --------------- -------------------------
3033 First row 12.0 Example of a row that
3034 spans multiple lines.
3036 Second row 5.0 Here's another one. Note
3037 the blank line between
3038 rows.
3039 -------------------------------------------------------------
3041 Table: Here's the caption. It, too, may span
3042 multiple lines.
3044These work like simple tables, but with the following differences:
3046 - They must begin with a row of dashes, before the header text
3047 (unless the headers are omitted).
3048 - They must end with a row of dashes, then a blank line.
3049 - The rows must be separated by blank lines.
3051In multiline tables, the table parser pays attention to the widths of
3052the columns, and the writers try to reproduce these relative widths in
3053the output. So, if you find that one of the columns is too narrow in the
3054output, try widening it in the Markdown source.
3056Headers may be omitted in multiline tables as well as simple tables:
3058 ----------- ------- --------------- -------------------------
3059 First row 12.0 Example of a row that
3060 spans multiple lines.
3062 Second row 5.0 Here's another one. Note
3063 the blank line between
3064 rows.
3065 ----------- ------- --------------- -------------------------
3067 : Here's a multiline table without headers.
3069It is possible for a multiline table to have just one row, but the row
3070should be followed by a blank line (and then the row of dashes that ends
3071the table), or the table may be interpreted as a simple table.
3073#### Extension: `grid_tables` ####
3075Grid tables look like this:
3077 : Sample grid table.
3079 +---------------+---------------+--------------------+
3080 | Fruit | Price | Advantages |
3081 +===============+===============+====================+
3082 | Bananas | $1.34 | - built-in wrapper |
3083 | | | - bright color |
3084 +---------------+---------------+--------------------+
3085 | Oranges | $2.10 | - cures scurvy |
3086 | | | - tasty |
3087 +---------------+---------------+--------------------+
3089The row of `=`s separates the header from the table body, and can be
3090omitted for a headerless table. The cells of grid tables may contain
3091arbitrary block elements (multiple paragraphs, code blocks, lists,
3092etc.). Cells that span multiple columns or rows are not
3093supported. Grid tables can be created easily using [Emacs table mode].
3095[Emacs table mode]: http://table.sourceforge.net/
3097Alignments can be specified as with pipe tables, by putting
3098colons at the boundaries of the separator line after the
3099header:
3101 +---------------+---------------+--------------------+
3102 | Right | Left | Centered |
3103 +==============:+:==============+:==================:+
3104 | Bananas | $1.34 | built-in wrapper |
3105 +---------------+---------------+--------------------+
3107For headerless tables, the colons go on the top line instead:
3109 +--------------:+:--------------+:------------------:+
3110 | Right | Left | Centered |
3111 +---------------+---------------+--------------------+
3113##### Grid Table Limitations #####
3115Pandoc does not support grid tables with row spans or column spans.
3116This means that neither variable numbers of columns across rows nor
3117variable numbers of rows across columns are supported by Pandoc.
3118All grid tables must have the same number of columns in each row,
3119and the same number of rows in each column. For example, the
3120Docutils [sample grid tables] will not render as expected with
3121Pandoc.
3123[sample grid tables]: http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#grid-tables
3126#### Extension: `pipe_tables` ####
3128Pipe tables look like this:
3130 | Right | Left | Default | Center |
3131 |------:|:-----|---------|:------:|
3132 | 12 | 12 | 12 | 12 |
3133 | 123 | 123 | 123 | 123 |
3134 | 1 | 1 | 1 | 1 |
3136 : Demonstration of pipe table syntax.
3138The syntax is identical to [PHP Markdown Extra tables]. The beginning and
3139ending pipe characters are optional, but pipes are required between all
3140columns. The colons indicate column alignment as shown. The header
3141cannot be omitted. To simulate a headerless table, include a header
3142with blank cells.
3144Since the pipes indicate column boundaries, columns need not be vertically
3145aligned, as they are in the above example. So, this is a perfectly
3146legal (though ugly) pipe table:
3148 fruit| price
3149 -----|-----:
3150 apple|2.05
3151 pear|1.37
3152 orange|3.09
3154The cells of pipe tables cannot contain block elements like paragraphs
3155and lists, and cannot span multiple lines. If a pipe table contains a
3156row whose printable content is wider than the column width (see
3157`--columns`), then the table will take up the full text width and
3158the cell contents will wrap, with the relative cell widths determined
3159by the number of dashes in the line separating the table header from
3160the table body. (For example `---|-` would make the first column 3/4
3161and the second column 1/4 of the full text width.)
3162On the other hand, if no lines are wider than column width, then
3163cell contents will not be wrapped, and the cells will be sized
3164to their contents.
3166Note: pandoc also recognizes pipe tables of the following
3167form, as can be produced by Emacs' orgtbl-mode:
3169 | One | Two |
3170 |-----+-------|
3171 | my | table |
3172 | is | nice |
3174The difference is that `+` is used instead of `|`. Other orgtbl features
3175are not supported. In particular, to get non-default column alignment,
3176you'll need to add colons as above.
3178[PHP Markdown Extra tables]: https://michelf.ca/projects/php-markdown/extra/#table
3180Metadata blocks
3181---------------
3183#### Extension: `pandoc_title_block` ####
3185If the file begins with a title block
3187 % title
3188 % author(s) (separated by semicolons)
3189 % date
3191it will be parsed as bibliographic information, not regular text. (It
3192will be used, for example, in the title of standalone LaTeX or HTML
3193output.) The block may contain just a title, a title and an author,
3194or all three elements. If you want to include an author but no
3195title, or a title and a date but no author, you need a blank line:
3198 % Author
3200 % My title
3202 % June 15, 2006
3204The title may occupy multiple lines, but continuation lines must
3205begin with leading space, thus:
3207 % My title
3208 on multiple lines
3210If a document has multiple authors, the authors may be put on
3211separate lines with leading space, or separated by semicolons, or
3212both. So, all of the following are equivalent:
3214 % Author One
3215 Author Two
3217 % Author One; Author Two
3219 % Author One;
3220 Author Two
3222The date must fit on one line.
3224All three metadata fields may contain standard inline formatting
3225(italics, links, footnotes, etc.).
3227Title blocks will always be parsed, but they will affect the output only
3228when the `--standalone` (`-s`) option is chosen. In HTML output, titles
3229will appear twice: once in the document head -- this is the title that
3230will appear at the top of the window in a browser -- and once at the
3231beginning of the document body. The title in the document head can have
3232an optional prefix attached (`--title-prefix` or `-T` option). The title
3233in the body appears as an H1 element with class "title", so it can be
3234suppressed or reformatted with CSS. If a title prefix is specified with
3235`-T` and no title block appears in the document, the title prefix will
3236be used by itself as the HTML title.
3238The man page writer extracts a title, man page section number, and
3239other header and footer information from the title line. The title
3240is assumed to be the first word on the title line, which may optionally
3241end with a (single-digit) section number in parentheses. (There should
3242be no space between the title and the parentheses.) Anything after
3243this is assumed to be additional footer and header text. A single pipe
3244character (`|`) should be used to separate the footer text from the header
3245text. Thus,
3247 % PANDOC(1)
3249will yield a man page with the title `PANDOC` and section 1.
3251 % PANDOC(1) Pandoc User Manuals
3253will also have "Pandoc User Manuals" in the footer.
3255 % PANDOC(1) Pandoc User Manuals | Version 4.0
3257will also have "Version 4.0" in the header.
3259#### Extension: `yaml_metadata_block` ####
3261A YAML metadata block is a valid YAML object, delimited by a line of three
3262hyphens (`---`) at the top and a line of three hyphens (`---`) or three dots
3263(`...`) at the bottom. A YAML metadata block may occur anywhere in the
3264document, but if it is not at the beginning, it must be preceded by a blank
3265line. (Note that, because of the way pandoc concatenates input files when
3266several are provided, you may also keep the metadata in a separate YAML file
3267and pass it to pandoc as an argument, along with your Markdown files:
3269 pandoc chap1.md chap2.md chap3.md metadata.yaml -s -o book.html
3271Just be sure that the YAML file begins with `---` and ends with `---` or
3272`...`.) Alternatively, you can use the `--metadata-file` option. Using
3273that approach however, you cannot reference content (like footnotes)
3274from the main markdown input document.
3276Metadata will be taken from the fields of the YAML object and added to any
3277existing document metadata. Metadata can contain lists and objects (nested
3278arbitrarily), but all string scalars will be interpreted as Markdown. Fields
3279with names ending in an underscore will be ignored by pandoc. (They may be
3280given a role by external processors.) Field names must not be
3281interpretable as YAML numbers or boolean values (so, for
3282example, `yes`, `True`, and `15` cannot be used as field names).
3284A document may contain multiple metadata blocks. The metadata fields will
3285be combined through a *left-biased union*: if two metadata blocks attempt
3286to set the same field, the value from the first block will be taken.
3288When pandoc is used with `-t markdown` to create a Markdown document,
3289a YAML metadata block will be produced only if the `-s/--standalone`
3290option is used. All of the metadata will appear in a single block
3291at the beginning of the document.
3293Note that YAML escaping rules must be followed. Thus, for example,
3294if a title contains a colon, it must be quoted. The pipe character
3295(`|`) can be used to begin an indented block that will be interpreted
3296literally, without need for escaping. This form is necessary
3297when the field contains blank lines or block-level formatting:
3299 ---
3300 title: 'This is the title: it contains a colon'
3301 author:
3302 - Author One
3303 - Author Two
3304 keywords: [nothing, nothingness]
3305 abstract: |
3306 This is the abstract.
3308 It consists of two paragraphs.
3309 ...
3311Template variables will be set automatically from the metadata. Thus, for
3312example, in writing HTML, the variable `abstract` will be set to the HTML
3313equivalent of the Markdown in the `abstract` field:
3315 <p>This is the abstract.</p>
3316 <p>It consists of two paragraphs.</p>
3318Variables can contain arbitrary YAML structures, but the template must match
3319this structure. The `author` variable in the default templates expects a
3320simple list or string, but can be changed to support more complicated
3321structures. The following combination, for example, would add an affiliation
3322to the author if one is given:
3324 ---
3325 title: The document title
3326 author:
3327 - name: Author One
3328 affiliation: University of Somewhere
3329 - name: Author Two
3330 affiliation: University of Nowhere
3331 ...
3333To use the structured authors in the example above, you would need a custom
3334template:
3336 $for(author)$
3337 $if(author.name)$
3338 $author.name$$if(author.affiliation)$ ($author.affiliation$)$endif$
3339 $else$
3340 $author$
3341 $endif$
3342 $endfor$
3344Raw content to include in the document's header may be specified
3345using `header-includes`; however, it is important to mark up
3346this content as raw code for a particular output format, using
3347the [`raw_attribute` extension](#extension-raw_attribute)), or it
3348will be interpreted as markdown. For example:
3350 header-includes:
3351 - |
3352 ```{=latex}
3353 \let\oldsection\section
3354 \renewcommand{\section}[1]{\clearpage\oldsection{#1}}
3355 ```
3357Backslash escapes
3358-----------------
3360#### Extension: `all_symbols_escapable` ####
3362Except inside a code block or inline code, any punctuation or space
3363character preceded by a backslash will be treated literally, even if it
3364would normally indicate formatting. Thus, for example, if one writes
3366 *\*hello\**
3368one will get
3370 <em>*hello*</em>
3372instead of
3374 <strong>hello</strong>
3376This rule is easier to remember than standard Markdown's rule,
3377which allows only the following characters to be backslash-escaped:
3379 \`*_{}[]()>#+-.!
3381(However, if the `markdown_strict` format is used, the standard Markdown rule
3382will be used.)
3384A backslash-escaped space is parsed as a nonbreaking space. It will
3385appear in TeX output as `~` and in HTML and XML as `\&#160;` or
3386`\&nbsp;`.
3388A backslash-escaped newline (i.e. a backslash occurring at the end of
3389a line) is parsed as a hard line break. It will appear in TeX output as
3390`\\` and in HTML as `<br />`. This is a nice alternative to
3391Markdown's "invisible" way of indicating hard line breaks using
3392two trailing spaces on a line.
3394Backslash escapes do not work in verbatim contexts.
3396Inline formatting
3397-----------------
3399### Emphasis ###
3401To *emphasize* some text, surround it with `*`s or `_`, like this:
3403 This text is _emphasized with underscores_, and this
3404 is *emphasized with asterisks*.
3406Double `*` or `_` produces **strong emphasis**:
3408 This is **strong emphasis** and __with underscores__.
3410A `*` or `_` character surrounded by spaces, or backslash-escaped,
3411will not trigger emphasis:
3413 This is * not emphasized *, and \*neither is this\*.
3415#### Extension: `intraword_underscores` ####
3417Because `_` is sometimes used inside words and identifiers,
3418pandoc does not interpret a `_` surrounded by alphanumeric
3419characters as an emphasis marker. If you want to emphasize
3420just part of a word, use `*`:
3422 feas*ible*, not feas*able*.
3425### Strikeout ###
3427#### Extension: `strikeout` ####
3429To strikeout a section of text with a horizontal line, begin and end it
3430with `~~`. Thus, for example,
3432 This ~~is deleted text.~~
3435### Superscripts and subscripts ###
3437#### Extension: `superscript`, `subscript` ####
3439Superscripts may be written by surrounding the superscripted text by `^`
3440characters; subscripts may be written by surrounding the subscripted
3441text by `~` characters. Thus, for example,
3443 H~2~O is a liquid. 2^10^ is 1024.
3445If the superscripted or subscripted text contains spaces, these spaces
3446must be escaped with backslashes. (This is to prevent accidental
3447superscripting and subscripting through the ordinary use of `~` and `^`.)
3448Thus, if you want the letter P with 'a cat' in subscripts, use
3449`P~a\ cat~`, not `P~a cat~`.
3452### Verbatim ###
3454To make a short span of text verbatim, put it inside backticks:
3456 What is the difference between `>>=` and `>>`?
3458If the verbatim text includes a backtick, use double backticks:
3460 Here is a literal backtick `` ` ``.
3462(The spaces after the opening backticks and before the closing
3463backticks will be ignored.)
3465The general rule is that a verbatim span starts with a string
3466of consecutive backticks (optionally followed by a space)
3467and ends with a string of the same number of backticks (optionally
3468preceded by a space).
3470Note that backslash-escapes (and other Markdown constructs) do not
3471work in verbatim contexts:
3473 This is a backslash followed by an asterisk: `\*`.
3475#### Extension: `inline_code_attributes` ####
3477Attributes can be attached to verbatim text, just as with
3478[fenced code blocks]:
3480 `<$>`{.haskell}
3482### Small caps ###
3484To write small caps, use the `smallcaps` class:
3486 [Small caps]{.smallcaps}
3488Or, without the `bracketed_spans` extension:
3490 <span class="smallcaps">Small caps</span>
3492For compatibility with other Markdown flavors, CSS is also supported:
3494 <span style="font-variant:small-caps;">Small caps</span>
3496This will work in all output formats that support small caps.
3499Math
3500----
3502#### Extension: `tex_math_dollars` ####
3504Anything between two `$` characters will be treated as TeX math. The
3505opening `$` must have a non-space character immediately to its right,
3506while the closing `$` must have a non-space character immediately to its
3507left, and must not be followed immediately by a digit. Thus,
3508`$20,000 and $30,000` won't parse as math. If for some reason
3509you need to enclose text in literal `$` characters, backslash-escape
3510them and they won't be treated as math delimiters.
3512TeX math will be printed in all output formats. How it is rendered
3513depends on the output format:
3515LaTeX
3516 ~ It will appear verbatim surrounded by `\(...\)` (for inline
3517 math) or `\[...\]` (for display math).
3519Markdown, Emacs Org mode, ConTeXt, ZimWiki
3520 ~ It will appear verbatim surrounded by `$...$` (for inline
3521 math) or `$$...$$` (for display math).
3523reStructuredText
3524 ~ It will be rendered using an [interpreted text role `:math:`].
3526AsciiDoc
3527 ~ For AsciiDoc output format (`-t asciidoc`) it will appear verbatim
3528 surrounded by `latexmath:[$...$]` (for inline math) or
3529 `[latexmath]++++\[...\]+++` (for display math).
3530 For AsciiDoctor output format (`-t asciidoctor`) the LaTex delimiters
3531 (`$..$` and `\[..\]`) are omitted.
3533Texinfo
3534 ~ It will be rendered inside a `@math` command.
3536roff man
3537 ~ It will be rendered verbatim without `$`'s.
3539MediaWiki, DokuWiki
3540 ~ It will be rendered inside `<math>` tags.
3542Textile
3543 ~ It will be rendered inside `<span class="math">` tags.
3545RTF, OpenDocument
3546 ~ It will be rendered, if possible, using Unicode characters,
3547 and will otherwise appear verbatim.
3549ODT
3550 ~ It will be rendered, if possible, using MathML.
3552DocBook
3553 ~ If the `--mathml` flag is used, it will be rendered using MathML
3554 in an `inlineequation` or `informalequation` tag. Otherwise it
3555 will be rendered, if possible, using Unicode characters.
3557Docx
3558 ~ It will be rendered using OMML math markup.
3560FictionBook2
3561 ~ If the `--webtex` option is used, formulas are rendered as images
3562 using CodeCogs or other compatible web service, downloaded
3563 and embedded in the e-book. Otherwise, they will appear verbatim.
3565HTML, Slidy, DZSlides, S5, EPUB
3566 ~ The way math is rendered in HTML will depend on the
3567 command-line options selected. Therefore see [Math rendering in HTML]
3568 above.
3570[interpreted text role `:math:`]: http://docutils.sourceforge.net/docs/ref/rst/roles.html#math
3572Raw HTML
3573--------
3575#### Extension: `raw_html` ####
3577Markdown allows you to insert raw HTML (or DocBook) anywhere in a document
3578(except verbatim contexts, where `<`, `>`, and `&` are interpreted
3579literally). (Technically this is not an extension, since standard
3580Markdown allows it, but it has been made an extension so that it can
3581be disabled if desired.)
3583The raw HTML is passed through unchanged in HTML, S5, Slidy, Slideous,
3584DZSlides, EPUB, Markdown, CommonMark, Emacs Org mode, and Textile
3585output, and suppressed in other formats.
3587For a more explicit way of including raw HTML in a Markdown
3588document, see the [`raw_attribute` extension][Extension: `raw_attribute`].
3590In the CommonMark format, if `raw_html` is enabled, superscripts,
3591subscripts, strikeouts and small capitals will be represented as HTML.
3592Otherwise, plain-text fallbacks will be used. Note that even if
3593`raw_html` is disabled, tables will be rendered with HTML syntax if
3594they cannot use pipe syntax.
3596#### Extension: `markdown_in_html_blocks` ####
3598Standard Markdown allows you to include HTML "blocks": blocks
3599of HTML between balanced tags that are separated from the surrounding text
3600with blank lines, and start and end at the left margin. Within
3601these blocks, everything is interpreted as HTML, not Markdown;
3602so (for example), `*` does not signify emphasis.
3604Pandoc behaves this way when the `markdown_strict` format is used; but
3605by default, pandoc interprets material between HTML block tags as Markdown.
3606Thus, for example, pandoc will turn
3608 <table>
3609 <tr>
3610 <td>*one*</td>
3611 <td>[a link](http://google.com)</td>
3612 </tr>
3613 </table>
3615into
3617 <table>
3618 <tr>
3619 <td><em>one</em></td>
3620 <td><a href="http://google.com">a link</a></td>
3621 </tr>
3622 </table>
3624whereas `Markdown.pl` will preserve it as is.
3626There is one exception to this rule: text between `<script>` and
3627`<style>` tags is not interpreted as Markdown.
3629This departure from standard Markdown should make it easier to mix
3630Markdown with HTML block elements. For example, one can surround
3631a block of Markdown text with `<div>` tags without preventing it
3632from being interpreted as Markdown.
3634#### Extension: `native_divs` ####
3636Use native pandoc `Div` blocks for content inside `<div>` tags.
3637For the most part this should give the same output as
3638`markdown_in_html_blocks`, but it makes it easier to write pandoc
3639filters to manipulate groups of blocks.
3641#### Extension: `native_spans` ####
3643Use native pandoc `Span` blocks for content inside `<span>` tags.
3644For the most part this should give the same output as `raw_html`,
3645but it makes it easier to write pandoc filters to manipulate groups
3646of inlines.
3648#### Extension: `raw_tex` ####
3650In addition to raw HTML, pandoc allows raw LaTeX, TeX, and ConTeXt to be
3651included in a document. Inline TeX commands will be preserved and passed
3652unchanged to the LaTeX and ConTeXt writers. Thus, for example, you can use
3653LaTeX to include BibTeX citations:
3655 This result was proved in \cite{jones.1967}.
3657Note that in LaTeX environments, like
3659 \begin{tabular}{|l|l|}\hline
3660 Age & Frequency \\ \hline
3661 18--25 & 15 \\
3662 26--35 & 33 \\
3663 36--45 & 22 \\ \hline
3664 \end{tabular}
3666the material between the begin and end tags will be interpreted as raw
3667LaTeX, not as Markdown.
3669For a more explicit and flexible way of including raw TeX in a
3670Markdown document, see the [`raw_attribute`
3671extension][Extension: `raw_attribute`].
3673Inline LaTeX is ignored in output formats other than Markdown, LaTeX,
3674Emacs Org mode, and ConTeXt.
3676### Generic raw attribute ###
3678#### Extension: `raw_attribute` ####
3680Inline spans and fenced code blocks with a special
3681kind of attribute will be parsed as raw content with the
3682designated format. For example, the following produces a raw
3683roff `ms` block:
3685 ```{=ms}
3686 .MYMACRO
3687 blah blah
3688 ```
3689And the following produces a raw `html` inline element:
3691 This is `<a>html</a>`{=html}
3693This can be useful to insert raw xml into `docx` documents, e.g.
3694a pagebreak:
3696 ```{=openxml}
3697 <w:p>
3698 <w:r>
3699 <w:br w:type="page"/>
3700 </w:r>
3701 </w:p>
3702 ```
3704The format name should match the target format name (see
3705`-t/--to`, above, for a list, or use `pandoc
3706--list-output-formats`). Use `openxml` for `docx` output,
3707`opendocument` for `odt` output, `html5` for `epub3` output,
3708`html4` for `epub2` output, and `latex`, `beamer`,
3709`ms`, or `html5` for `pdf` output (depending on what you
3710use for `--pdf-engine`).
3712This extension presupposes that the relevant kind of
3713inline code or fenced code block is enabled. Thus, for
3714example, to use a raw attribute with a backtick code block,
3715`backtick_code_blocks` must be enabled.
3717The raw attribute cannot be combined with regular attributes.
3719LaTeX macros
3720------------
3722#### Extension: `latex_macros` ####
3724When this extension is enabled, pandoc will parse LaTeX
3725macro definitions and apply the resulting macros to all LaTeX
3726math and raw LaTeX. So, for example, the following will work in
3727all output formats, not just LaTeX:
3729 \newcommand{\tuple}[1]{\langle #1 \rangle}
3731 $\tuple{a, b, c}$
3733Note that LaTeX macros will not be applied if they occur
3734inside inside a raw span or block marked with the
3735[`raw_attribute` extension](#extension-raw_attribute).
3737When `latex_macros` is disabled, the raw LaTeX and math will
3738not have macros applied. This is usually a better approach when
3739you are targeting LaTeX or PDF.
3741Whether or not `latex_macros` is enabled, the macro definitions
3742will still be passed through as raw LaTeX.
3744Links
3745-----
3747Markdown allows links to be specified in several ways.
3749### Automatic links ###
3751If you enclose a URL or email address in pointy brackets, it
3752will become a link:
3754 <http://google.com>
3755 <sam@green.eggs.ham>
3757### Inline links ###
3759An inline link consists of the link text in square brackets,
3760followed by the URL in parentheses. (Optionally, the URL can
3761be followed by a link title, in quotes.)
3763 This is an [inline link](/url), and here's [one with
3764 a title](http://fsf.org "click here for a good time!").
3766There can be no space between the bracketed part and the parenthesized part.
3767The link text can contain formatting (such as emphasis), but the title cannot.
3769Email addresses in inline links are not autodetected, so they have to be
3770prefixed with `mailto`:
3772 [Write me!](mailto:sam@green.eggs.ham)
3774### Reference links ###
3776An *explicit* reference link has two parts, the link itself and the link
3777definition, which may occur elsewhere in the document (either
3778before or after the link).
3780The link consists of link text in square brackets, followed by a label in
3781square brackets. (There cannot be space between the two unless the
3782`spaced_reference_links` extension is enabled.) The link definition
3783consists of the bracketed label, followed by a colon and a space, followed by
3784the URL, and optionally (after a space) a link title either in quotes or in
3785parentheses. The label must not be parseable as a citation (assuming
3786the `citations` extension is enabled): citations take precedence over
3787link labels.
3789Here are some examples:
3791 [my label 1]: /foo/bar.html "My title, optional"
3792 [my label 2]: /foo
3793 [my label 3]: http://fsf.org (The free software foundation)
3794 [my label 4]: /bar#special 'A title in single quotes'
3796The URL may optionally be surrounded by angle brackets:
3798 [my label 5]: <http://foo.bar.baz>
3800The title may go on the next line:
3802 [my label 3]: http://fsf.org
3803 "The free software foundation"
3805Note that link labels are not case sensitive. So, this will work:
3807 Here is [my link][FOO]
3809 [Foo]: /bar/baz
3811In an *implicit* reference link, the second pair of brackets is
3812empty:
3814 See [my website][].
3816 [my website]: http://foo.bar.baz
3818Note: In `Markdown.pl` and most other Markdown implementations,
3819reference link definitions cannot occur in nested constructions
3820such as list items or block quotes. Pandoc lifts this arbitrary
3821seeming restriction. So the following is fine in pandoc, though
3822not in most other implementations:
3824 > My block [quote].
3826 > [quote]: /foo
3828#### Extension: `shortcut_reference_links` ####
3830In a *shortcut* reference link, the second pair of brackets may
3831be omitted entirely:
3833 See [my website].
3835 [my website]: http://foo.bar.baz
3837### Internal links ###
3839To link to another section of the same document, use the automatically
3840generated identifier (see [Header identifiers]). For example:
3842 See the [Introduction](#introduction).
3846 See the [Introduction].
3848 [Introduction]: #introduction
3850Internal links are currently supported for HTML formats (including
3851HTML slide shows and EPUB), LaTeX, and ConTeXt.
3853Images
3854------
3856A link immediately preceded by a `!` will be treated as an image.
3857The link text will be used as the image's alt text:
3859 ![la lune](lalune.jpg "Voyage to the moon")
3861 ![movie reel]
3863 [movie reel]: movie.gif
3865#### Extension: `implicit_figures` ####
3867An image with nonempty alt text, occurring by itself in a
3868paragraph, will be rendered as a figure with a caption. The
3869image's alt text will be used as the caption.
3871 ![This is the caption](/url/of/image.png)
3873How this is rendered depends on the output format. Some output
3874formats (e.g. RTF) do not yet support figures. In those
3875formats, you'll just get an image in a paragraph by itself, with
3876no caption.
3878If you just want a regular inline image, just make sure it is not
3879the only thing in the paragraph. One way to do this is to insert a
3880nonbreaking space after the image:
3882 ![This image won't be a figure](/url/of/image.png)\
3884Note that in reveal.js slide shows, an image in a paragraph
3885by itself that has the `stretch` class will fill the screen,
3886and the caption and figure tags will be omitted.
3888#### Extension: `link_attributes` ####
3890Attributes can be set on links and images:
3892 An inline ![image](foo.jpg){#id .class width=30 height=20px}
3893 and a reference ![image][ref] with attributes.
3895 [ref]: foo.jpg "optional title" {#id .class key=val key2="val 2"}
3897(This syntax is compatible with [PHP Markdown Extra] when only `#id`
3898and `.class` are used.)
3900For HTML and EPUB, all attributes except `width` and `height` (but
3901including `srcset` and `sizes`) are passed through as is. The other
3902writers ignore attributes that are not supported by their output
3903format.
3905The `width` and `height` attributes on images are treated specially. When
3906used without a unit, the unit is assumed to be pixels. However, any of
3907the following unit identifiers can be used: `px`, `cm`, `mm`, `in`, `inch`
3908and `%`. There must not be any spaces between the number and the unit.
3909For example:
3911```
3912![](file.jpg){ width=50% }
3913```
3915- Dimensions are converted to inches for output in page-based formats like
3916 LaTeX. Dimensions are converted to pixels for output in HTML-like
3917 formats. Use the `--dpi` option to specify the number of pixels per
3918 inch. The default is 96dpi.
3919- The `%` unit is generally relative to some available space.
3920 For example the above example will render to the following.
3921 - HTML: `<img href="file.jpg" style="width: 50%;" />`
3922 - LaTeX: `\includegraphics[width=0.5\textwidth,height=\textheight]{file.jpg}`
3923 (If you're using a custom template, you need to configure `graphicx`
3924 as in the default template.)
3925 - ConTeXt: `\externalfigure[file.jpg][width=0.5\textwidth]`
3926- Some output formats have a notion of a class
3927 ([ConTeXt](http://wiki.contextgarden.net/Using_Graphics#Multiple_Image_Settings))
3928 or a unique identifier (LaTeX `\caption`), or both (HTML).
3929- When no `width` or `height` attributes are specified, the fallback
3930 is to look at the image resolution and the dpi metadata embedded in
3931 the image file.
3933Divs and Spans
3934--------------
3936Using the `native_divs` and `native_spans` extensions
3937(see [above][Extension: `native_divs`]), HTML syntax can
3938be used as part of markdown to create native `Div` and `Span`
3939elements in the pandoc AST (as opposed to raw HTML).
3940However, there is also nicer syntax available:
3942#### Extension: `fenced_divs` ####
3944Allow special fenced syntax for native `Div` blocks. A Div
3945starts with a fence containing at least three consecutive
3946colons plus some attributes. The attributes may optionally
3947be followed by another string of consecutive colons.
3948The attribute syntax is exactly as in fenced code blocks (see
3949[Extension: `fenced_code_attributes`]). As with fenced
3950code blocks, one can use either attributes in curly braces
3951or a single unbraced word, which will be treated as a class
3952name. The Div ends with another line containing a string of at
3953least three consecutive colons. The fenced Div should be
3954separated by blank lines from preceding and following blocks.
3956Example:
3958 ::::: {#special .sidebar}
3959 Here is a paragraph.
3961 And another.
3962 :::::
3964Fenced divs can be nested. Opening fences are distinguished
3965because they *must* have attributes:
3967 ::: Warning ::::::
3968 This is a warning.
3970 ::: Danger
3971 This is a warning within a warning.
3972 :::
3973 ::::::::::::::::::
3975Fences without attributes are always closing fences. Unlike
3976with fenced code blocks, the number of colons in the closing
3977fence need not match the number in the opening fence. However,
3978it can be helpful for visual clarity to use fences of different
3979lengths to distinguish nested divs from their parents.
3982#### Extension: `bracketed_spans` ####
3984A bracketed sequence of inlines, as one would use to begin
3985a link, will be treated as a `Span` with attributes if it is
3986followed immediately by attributes:
3988 [This is *some text*]{.class key="val"}
3990Footnotes
3991---------
3993#### Extension: `footnotes` ####
3995Pandoc's Markdown allows footnotes, using the following syntax:
3997 Here is a footnote reference,[^1] and another.[^longnote]
3999 [^1]: Here is the footnote.
4001 [^longnote]: Here's one with multiple blocks.
4003 Subsequent paragraphs are indented to show that they
4004 belong to the previous footnote.
4006 { some.code }
4008 The whole paragraph can be indented, or just the first
4009 line. In this way, multi-paragraph footnotes work like
4010 multi-paragraph list items.
4012 This paragraph won't be part of the note, because it
4013 isn't indented.
4015The identifiers in footnote references may not contain spaces, tabs,
4016or newlines. These identifiers are used only to correlate the
4017footnote reference with the note itself; in the output, footnotes
4018will be numbered sequentially.
4020The footnotes themselves need not be placed at the end of the
4021document. They may appear anywhere except inside other block elements
4022(lists, block quotes, tables, etc.). Each footnote should be
4023separated from surrounding content (including other footnotes)
4024by blank lines.
4026#### Extension: `inline_notes` ####
4028Inline footnotes are also allowed (though, unlike regular notes,
4029they cannot contain multiple paragraphs). The syntax is as follows:
4031 Here is an inline note.^[Inlines notes are easier to write, since
4032 you don't have to pick an identifier and move down to type the
4033 note.]
4035Inline and regular footnotes may be mixed freely.
4037Citations
4038---------
4040#### Extension: `citations` ####
4042Using an external filter, `pandoc-citeproc`, pandoc can automatically generate
4043citations and a bibliography in a number of styles. Basic usage is
4045 pandoc --filter pandoc-citeproc myinput.txt
4047In order to use this feature, you will need to specify a bibliography file
4048using the `bibliography` metadata field in a YAML metadata section, or
4049`--bibliography` command line argument. You can supply multiple `--bibliography`
4050arguments or set `bibliography` metadata field to YAML array, if you want to
4051use multiple bibliography files. The bibliography may have any of these
4052formats:
4054 Format File extension
4055 ------------ --------------
4056 BibLaTeX .bib
4057 BibTeX .bibtex
4058 Copac .copac
4059 CSL JSON .json
4060 CSL YAML .yaml
4061 EndNote .enl
4062 EndNote XML .xml
4063 ISI .wos
4064 MEDLINE .medline
4065 MODS .mods
4066 RIS .ris
4068Note that `.bib` can be used with both BibTeX and BibLaTeX files;
4069use `.bibtex` to force BibTeX.
4071Note that `pandoc-citeproc --bib2json` and `pandoc-citeproc --bib2yaml`
4072can produce `.json` and `.yaml` files from any of the supported formats.
4074In-field markup: In BibTeX and BibLaTeX databases,
4075pandoc-citeproc parses a subset of LaTeX markup; in CSL YAML
4076databases, pandoc Markdown; and in CSL JSON databases, an
4077[HTML-like markup][CSL markup specs]:
4079`<i>...</i>`
4080: italics
4082`<b>...</b>`
4083: bold
4085`<span style="font-variant:small-caps;">...</span>` or `<sc>...</sc>`
4086: small capitals
4088`<sub>...</sub>`
4089: subscript
4091`<sup>...</sup>`
4092: superscript
4094`<span class="nocase">...</span>`
4095: prevent a phrase from being capitalized as title case
4097`pandoc-citeproc -j` and `-y` interconvert the CSL JSON
4098and CSL YAML formats as far as possible.
4100As an alternative to specifying a bibliography file using `--bibliography`
4101or the YAML metadata field `bibliography`, you can include
4102the citation data directly in the `references` field of the
4103document's YAML metadata. The field should contain an array of
4104YAML-encoded references, for example:
4106 ---
4107 references:
4108 - type: article-journal
4109 id: WatsonCrick1953
4110 author:
4111 - family: Watson
4112 given: J. D.
4113 - family: Crick
4114 given: F. H. C.
4115 issued:
4116 date-parts:
4117 - - 1953
4118 - 4
4119 - 25
4120 title: 'Molecular structure of nucleic acids: a structure for deoxyribose
4121 nucleic acid'
4122 title-short: Molecular structure of nucleic acids
4123 container-title: Nature
4124 volume: 171
4125 issue: 4356
4126 page: 737-738
4127 DOI: 10.1038/171737a0
4128 URL: http://www.nature.com/nature/journal/v171/n4356/abs/171737a0.html
4129 language: en-GB
4130 ...
4132(`pandoc-citeproc --bib2yaml` can produce these from a bibliography file in one
4133of the supported formats.)
4135Citations and references can be formatted using any style supported by the
4136[Citation Style Language], listed in the [Zotero Style Repository].
4137These files are specified using the `--csl` option or the `csl` metadata field.
4138By default, `pandoc-citeproc` will use the [Chicago Manual of Style] author-date
4139format. The CSL project provides further information on [finding and editing styles].
4141To make your citations hyperlinks to the corresponding bibliography
4142entries, add `link-citations: true` to your YAML metadata.
4144Citations go inside square brackets and are separated by semicolons.
4145Each citation must have a key, composed of '@' + the citation
4146identifier from the database, and may optionally have a prefix,
4147a locator, and a suffix. The citation key must begin with a letter, digit,
4148or `_`, and may contain alphanumerics, `_`, and internal punctuation
4149characters (`:.#$%&-+?<>~/`). Here are some examples:
4151 Blah blah [see @doe99, pp. 33-35; also @smith04, chap. 1].
4153 Blah blah [@doe99, pp. 33-35, 38-39 and *passim*].
4155 Blah blah [@smith04; @doe99].
4157`pandoc-citeproc` detects locator terms in the [CSL locale files].
4158Either abbreviated or unabbreviated forms are accepted. In the `en-US`
4159locale, locator terms can be written in either singular or plural forms,
4160as `book`, `bk.`/`bks.`; `chapter`, `chap.`/`chaps.`; `column`,
4161`col.`/`cols.`; `figure`, `fig.`/`figs.`; `folio`, `fol.`/`fols.`;
4162`number`, `no.`/`nos.`; `line`, `l.`/`ll.`; `note`, `n.`/`nn.`; `opus`,
4163`op.`/`opp.`; `page`, `p.`/`pp.`; `paragraph`, `para.`/`paras.`; `part`,
4164`pt.`/`pts.`; `section`, `sec.`/`secs.`; `sub verbo`, `s.v.`/`s.vv.`;
4165`verse`, `v.`/`vv.`; `volume`, `vol.`/`vols.`; `¶`/`¶¶`; `§`/`§§`. If no
4166locator term is used, "page" is assumed.
4168`pandoc-citeproc` will use heuristics to distinguish the locator
4169from the suffix. In complex cases, the locator can be enclosed
4170in curly braces (using `pandoc-citeproc` 0.15 and higher only):
4172 [@smith{ii, A, D-Z}, with a suffix]
4173 [@smith, {pp. iv, vi-xi, (xv)-(xvii)} with suffix here]
4175A minus sign (`-`) before the `@` will suppress mention of
4176the author in the citation. This can be useful when the
4177author is already mentioned in the text:
4179 Smith says blah [-@smith04].
4181You can also write an in-text citation, as follows:
4183 @smith04 says blah.
4185 @smith04 [p. 33] says blah.
4187If the style calls for a list of works cited, it will be placed
4188in a div with id `refs`, if one exists:
4190 ::: {#refs}
4191 :::
4193Otherwise, it will be placed at the end of the document.
4194Generation of the bibliography can be suppressed by setting
4195`suppress-bibliography: true` in the YAML metadata.
4197If you wish the bibliography to have a section header, you can
4198set `reference-section-title` in the metadata, or put the header
4199at the beginning of the div with id `refs` (if you are using it)
4200or at the end of your document:
4202 last paragraph...
4204 # References
4206The bibliography will be inserted after this header. Note that
4207the `unnumbered` class will be added to this header, so that the
4208section will not be numbered.
4210If you want to include items in the bibliography without actually
4211citing them in the body text, you can define a dummy `nocite` metadata
4212field and put the citations there:
4214 ---
4215 nocite: |
4216 @item1, @item2
4217 ...
4219 @item3
4221In this example, the document will contain a citation for `item3`
4222only, but the bibliography will contain entries for `item1`, `item2`, and
4223`item3`.
4225It is possible to create a bibliography with all the citations,
4226whether or not they appear in the document, by using a wildcard:
4228 ---
4229 nocite: |
4230 @*
4231 ...
4233For LaTeX output, you can also use [`natbib`] or [`biblatex`] to
4234render the bibliography. In order to do so, specify bibliography
4235files as outlined above, and add `--natbib` or `--biblatex`
4236argument to `pandoc` invocation. Bear in mind that bibliography
4237files have to be in respective format (either BibTeX or
4238BibLaTeX).
4240For more information, see the [pandoc-citeproc man page].
4242[CSL markup specs]: http://docs.citationstyles.org/en/1.0/release-notes.html#rich-text-markup-within-fields
4243[Chicago Manual of Style]: http://chicagomanualofstyle.org
4244[Citation Style Language]: http://citationstyles.org
4245[Zotero Style Repository]: https://www.zotero.org/styles
4246[finding and editing styles]: https://citationstyles.org/authors/
4247[CSL locale files]: https://github.com/citation-style-language/locales
4248[pandoc-citeproc man page]: https://github.com/jgm/pandoc-citeproc/blob/master/man/pandoc-citeproc.1.md
4250Non-pandoc extensions
4251---------------------
4253The following Markdown syntax extensions are not enabled by default
4254in pandoc, but may be enabled by adding `+EXTENSION` to the format
4255name, where `EXTENSION` is the name of the extension. Thus, for
4256example, `markdown+hard_line_breaks` is Markdown with hard line breaks.
4258#### Extension: `old_dashes` ####
4260Selects the pandoc <= 1.8.2.1 behavior for parsing smart dashes:
4261`-` before a numeral is an en-dash, and `--` is an em-dash.
4262This option only has an effect if `smart` is enabled. It is
4263selected automatically for `textile` input.
4265#### Extension: `angle_brackets_escapable` ####
4267Allow `<` and `>` to be backslash-escaped, as they can be in
4268GitHub flavored Markdown but not original Markdown. This is
4269implied by pandoc's default `all_symbols_escapable`.
4271#### Extension: `lists_without_preceding_blankline` ####
4273Allow a list to occur right after a paragraph, with no intervening
4274blank space.
4276#### Extension: `four_space_rule` ####
4278Selects the pandoc <= 2.0 behavior for parsing lists, so that
4279four spaces indent are needed for list item continuation
4280paragraphs.
4282#### Extension: `spaced_reference_links` ####
4284Allow whitespace between the two components of a reference link,
4285for example,
4287 [foo] [bar].
4289#### Extension: `hard_line_breaks` ####
4291Causes all newlines within a paragraph to be interpreted as hard line
4292breaks instead of spaces.
4294#### Extension: `ignore_line_breaks` ####
4296Causes newlines within a paragraph to be ignored, rather than being
4297treated as spaces or as hard line breaks. This option is intended for
4298use with East Asian languages where spaces are not used between words,
4299but text is divided into lines for readability.
4301#### Extension: `east_asian_line_breaks` ####
4303Causes newlines within a paragraph to be ignored, rather than
4304being treated as spaces or as hard line breaks, when they occur
4305between two East Asian wide characters. This is a better choice
4306than `ignore_line_breaks` for texts that include a mix of East
4307Asian wide characters and other characters.
4309#### Extension: `emoji` ####
4311Parses textual emojis like `:smile:` as Unicode emoticons.
4313#### Extension: `tex_math_single_backslash` ####
4315Causes anything between `\(` and `\)` to be interpreted as inline
4316TeX math, and anything between `\[` and `\]` to be interpreted
4317as display TeX math. Note: a drawback of this extension is that
4318it precludes escaping `(` and `[`.
4320#### Extension: `tex_math_double_backslash` ####
4322Causes anything between `\\(` and `\\)` to be interpreted as inline
4323TeX math, and anything between `\\[` and `\\]` to be interpreted
4324as display TeX math.
4326#### Extension: `markdown_attribute` ####
4328By default, pandoc interprets material inside block-level tags as Markdown.
4329This extension changes the behavior so that Markdown is only parsed
4330inside block-level tags if the tags have the attribute `markdown=1`.
4332#### Extension: `mmd_title_block` ####
4334Enables a [MultiMarkdown] style title block at the top of
4335the document, for example:
4337 Title: My title
4338 Author: John Doe
4339 Date: September 1, 2008
4340 Comment: This is a sample mmd title block, with
4341 a field spanning multiple lines.
4343See the MultiMarkdown documentation for details. If `pandoc_title_block` or
4344`yaml_metadata_block` is enabled, it will take precedence over
4345`mmd_title_block`.
4347#### Extension: `abbreviations` ####
4349Parses PHP Markdown Extra abbreviation keys, like
4351 *[HTML]: Hypertext Markup Language
4353Note that the pandoc document model does not support
4354abbreviations, so if this extension is enabled, abbreviation keys are
4355simply skipped (as opposed to being parsed as paragraphs).
4357#### Extension: `autolink_bare_uris` ####
4359Makes all absolute URIs into links, even when not surrounded by
4360pointy braces `<...>`.
4362#### Extension: `mmd_link_attributes` ####
4364Parses multimarkdown style key-value attributes on link
4365and image references. This extension should not be confused with the
4366[`link_attributes`](#extension-link_attributes) extension.
4368 This is a reference ![image][ref] with multimarkdown attributes.
4370 [ref]: http://path.to/image "Image title" width=20px height=30px
4371 id=myId class="myClass1 myClass2"
4373#### Extension: `mmd_header_identifiers` ####
4375Parses multimarkdown style header identifiers (in square brackets,
4376after the header but before any trailing `#`s in an ATX header).
4378#### Extension: `compact_definition_lists` ####
4380Activates the definition list syntax of pandoc 1.12.x and earlier.
4381This syntax differs from the one described above under [Definition lists]
4382in several respects:
4384 - No blank line is required between consecutive items of the
4385 definition list.
4386 - To get a "tight" or "compact" list, omit space between consecutive
4387 items; the space between a term and its definition does not affect
4388 anything.
4389 - Lazy wrapping of paragraphs is not allowed: the entire definition must
4390 be indented four spaces.[^6]
4392[^6]: To see why laziness is incompatible with relaxing the requirement
4393 of a blank line between items, consider the following example:
4395 bar
4396 : definition
4397 foo
4398 : definition
4400 Is this a single list item with two definitions of "bar," the first of
4401 which is lazily wrapped, or two list items? To remove the ambiguity
4402 we must either disallow lazy wrapping or require a blank line between
4403 list items.
4405Markdown variants
4406-----------------
4408In addition to pandoc's extended Markdown, the following Markdown
4409variants are supported:
4411`markdown_phpextra` (PHP Markdown Extra)
4412: `footnotes`, `pipe_tables`, `raw_html`, `markdown_attribute`,
4413 `fenced_code_blocks`, `definition_lists`, `intraword_underscores`,
4414 `header_attributes`, `link_attributes`, `abbreviations`,
4415 `shortcut_reference_links`, `spaced_reference_links`.
4417`markdown_github` (deprecated GitHub-Flavored Markdown)
4418: `pipe_tables`, `raw_html`, `fenced_code_blocks`, `auto_identifiers`,
4419 `gfm_auto_identifiers`, `backtick_code_blocks`,
4420 `autolink_bare_uris`, `space_in_atx_header`,
4421 `intraword_underscores`, `strikeout`, `task_lists`, `emoji`,
4422 `shortcut_reference_links`, `angle_brackets_escapable`,
4423 `lists_without_preceding_blankline`.
4425`markdown_mmd` (MultiMarkdown)
4426: `pipe_tables`, `raw_html`, `markdown_attribute`, `mmd_link_attributes`,
4427 `tex_math_double_backslash`, `intraword_underscores`,
4428 `mmd_title_block`, `footnotes`, `definition_lists`,
4429 `all_symbols_escapable`, `implicit_header_references`,
4430 `auto_identifiers`, `mmd_header_identifiers`,
4431 `shortcut_reference_links`, `implicit_figures`,
4432 `superscript`, `subscript`, `backtick_code_blocks`,
4433 `spaced_reference_links`, `raw_attribute`.
4435`markdown_strict` (Markdown.pl)
4436: `raw_html`, `shortcut_reference_links`,
4437 `spaced_reference_links`.
4439We also support `commonmark` and `gfm` (GitHub-Flavored Markdown,
4440which is implemented as a set of extensions on `commonmark`).
4442Note, however, that `commonmark` and `gfm` have limited support
4443for extensions. Only those listed below (and `smart`,
4444`raw_tex`, and `hard_line_breaks`) will work. The extensions
4445can, however, all be individually disabled. Also, `raw_tex`
4446only affects `gfm` output, not input.
4448`gfm` (GitHub-Flavored Markdown)
4449: `pipe_tables`, `raw_html`, `fenced_code_blocks`, `auto_identifiers`,
4450 `gfm_auto_identifiers`, `backtick_code_blocks`,
4451 `autolink_bare_uris`, `space_in_atx_header`,
4452 `intraword_underscores`, `strikeout`, `task_lists`, `emoji`,
4453 `shortcut_reference_links`, `angle_brackets_escapable`,
4454 `lists_without_preceding_blankline`.
4457Producing slide shows with pandoc
4458=================================
4460You can use pandoc to produce an HTML + JavaScript slide presentation
4461that can be viewed via a web browser. There are five ways to do this,
4462using [S5], [DZSlides], [Slidy], [Slideous], or [reveal.js].
4463You can also produce a PDF slide show using LaTeX [`beamer`], or
4464slides shows in Microsoft [PowerPoint] format.
4466Here's the Markdown source for a simple slide show, `habits.txt`:
4468 % Habits
4469 % John Doe
4470 % March 22, 2005
4472 # In the morning
4474 ## Getting up
4476 - Turn off alarm
4477 - Get out of bed
4479 ## Breakfast
4481 - Eat eggs
4482 - Drink coffee
4484 # In the evening
4486 ## Dinner
4488 - Eat spaghetti
4489 - Drink wine
4491 ------------------
4493 ![picture of spaghetti](images/spaghetti.jpg)
4495 ## Going to sleep
4497 - Get in bed
4498 - Count sheep
4500To produce an HTML/JavaScript slide show, simply type
4502 pandoc -t FORMAT -s habits.txt -o habits.html
4504where `FORMAT` is either `s5`, `slidy`, `slideous`, `dzslides`, or `revealjs`.
4506For Slidy, Slideous, reveal.js, and S5, the file produced by pandoc with the
4507`-s/--standalone` option embeds a link to JavaScript and CSS files, which are
4508assumed to be available at the relative path `s5/default` (for S5), `slideous`
4509(for Slideous), `reveal.js` (for reveal.js), or at the Slidy website at
4510`w3.org` (for Slidy). (These paths can be changed by setting the `slidy-url`,
4511`slideous-url`, `revealjs-url`, or `s5-url` variables; see [Variables for HTML slides],
4512above.) For DZSlides, the (relatively short) JavaScript and CSS are included in
4513the file by default.
4515With all HTML slide formats, the `--self-contained` option can be used to
4516produce a single file that contains all of the data necessary to display the
4517slide show, including linked scripts, stylesheets, images, and videos.
4519To produce a PDF slide show using beamer, type
4521 pandoc -t beamer habits.txt -o habits.pdf
4523Note that a reveal.js slide show can also be converted to a PDF
4524by printing it to a file from the browser.
4526To produce a Powerpoint slide show, type
4528 pandoc habits.txt -o habits.pptx
4530Structuring the slide show
4531--------------------------
4533By default, the *slide level* is the highest header level in
4534the hierarchy that is followed immediately by content, and not another
4535header, somewhere in the document. In the example above, level 1 headers
4536are always followed by level 2 headers, which are followed by content,
4537so 2 is the slide level. This default can be overridden using
4538the `--slide-level` option.
4540The document is carved up into slides according to the following
4541rules:
4543 * A horizontal rule always starts a new slide.
4545 * A header at the slide level always starts a new slide.
4547 * Headers *below* the slide level in the hierarchy create
4548 headers *within* a slide.
4550 * Headers *above* the slide level in the hierarchy create
4551 "title slides," which just contain the section title
4552 and help to break the slide show into sections.
4553 Non-slide content under these headers will be included
4554 on the title slide (for HTML slide shows) or in a
4555 subsequent slide with the same title (for beamer).
4557 * A title page is constructed automatically from the document's title
4558 block, if present. (In the case of beamer, this can be disabled
4559 by commenting out some lines in the default template.)
4561These rules are designed to support many different styles of slide show. If
4562you don't care about structuring your slides into sections and subsections,
4563you can just use level 1 headers for all each slide. (In that case, level 1
4564will be the slide level.) But you can also structure the slide show into
4565sections, as in the example above.
4567Note: in reveal.js slide shows, if slide level is 2, a two-dimensional
4568layout will be produced, with level 1 headers building horizontally
4569and level 2 headers building vertically. It is not recommended that
4570you use deeper nesting of section levels with reveal.js.
4572Incremental lists
4573-----------------
4575By default, these writers produce lists that display "all at once."
4576If you want your lists to display incrementally (one item at a time),
4577use the `-i` option. If you want a particular list to depart from the
4578default, put it in a `div` block with class `incremental` or
4579`nonincremental`. So, for example, using the `fenced div` syntax, the
4580following would be incremental regardless of the document default:
4582 ::: incremental
4584 - Eat spaghetti
4585 - Drink wine
4587 :::
4591 ::: nonincremental
4593 - Eat spaghetti
4594 - Drink wine
4596 :::
4598While using `incremental` and `nonincremental` divs are the
4599recommended method of setting incremental lists on a per-case basis,
4600an older method is also supported: putting lists inside a blockquote
4601will depart from the document default (that is, it will display
4602incrementally without the `-i` option and all at once with the `-i`
4603option):
4605 > - Eat spaghetti
4606 > - Drink wine
4608Both methods allow incremental and nonincremental lists to be mixed
4609in a single document.
4611Inserting pauses
4612----------------
4614You can add "pauses" within a slide by including a paragraph containing
4615three dots, separated by spaces:
4617 # Slide with a pause
4619 content before the pause
4621 . . .
4623 content after the pause
4625Styling the slides
4626------------------
4628You can change the style of HTML slides by putting customized CSS files
4629in `$DATADIR/s5/default` (for S5), `$DATADIR/slidy` (for Slidy),
4630or `$DATADIR/slideous` (for Slideous),
4631where `$DATADIR` is the user data directory (see `--data-dir`, above).
4632The originals may be found in pandoc's system data directory (generally
4633`$CABALDIR/pandoc-VERSION/s5/default`). Pandoc will look there for any
4634files it does not find in the user data directory.
4636For dzslides, the CSS is included in the HTML file itself, and may
4637be modified there.
4639All [reveal.js configuration options] can be set through variables.
4640For example, themes can be used by setting the `theme` variable:
4642 -V theme=moon
4644Or you can specify a custom stylesheet using the `--css` option.
4646To style beamer slides, you can specify a `theme`, `colortheme`,
4647`fonttheme`, `innertheme`, and `outertheme`, using the `-V` option:
4649 pandoc -t beamer habits.txt -V theme:Warsaw -o habits.pdf
4651Note that header attributes will turn into slide attributes
4652(on a `<div>` or `<section>`) in HTML slide formats, allowing you
4653to style individual slides. In beamer, the only header attribute
4654that affects slides is the `allowframebreaks` class, which sets the
4655`allowframebreaks` option, causing multiple slides to be created
4656if the content overfills the frame. This is recommended especially for
4657bibliographies:
4659 # References {.allowframebreaks}
4661Speaker notes
4662-------------
4664Speaker notes are supported in reveal.js and PowerPoint (pptx)
4665output. You can add notes to your Markdown document thus:
4667 ::: notes
4669 This is my note.
4671 - It can contain Markdown
4672 - like this list
4674 :::
4676To show the notes window in reveal.js, press `s` while viewing the
4677presentation. Speaker notes in PowerPoint will be available, as usual,
4678in handouts and presenter view.
4680Notes are not yet supported for other slide formats, but the notes
4681will not appear on the slides themselves.
4683Columns
4684-------
4686To put material in side by side columns, you can use a native
4687div container with class `columns`, containing two or more div
4688containers with class `column` and a `width` attribute:
4690 :::::::::::::: {.columns}
4691 ::: {.column width="40%"}
4692 contents...
4693 :::
4694 ::: {.column width="60%"}
4695 contents...
4696 :::
4697 ::::::::::::::
4699Frame attributes in beamer
4700--------------------------
4702Sometimes it is necessary to add the LaTeX `[fragile]` option to
4703a frame in beamer (for example, when using the `minted` environment).
4704This can be forced by adding the `fragile` class to the header
4705introducing the slide:
4707 # Fragile slide {.fragile}
4709All of the other frame attributes described in Section 8.1 of
4710the [Beamer User's Guide] may also be used: `allowdisplaybreaks`,
4711`allowframebreaks`, `b`, `c`, `t`, `environment`, `label`, `plain`,
4712`shrink`, `standout`, `noframenumbering`.
4714Background in reveal.js and beamer
4715----------------------------------
4717Background images can be added to self-contained reveal.js slideshows and
4718to beamer slideshows.
4720For the same image on every slide, use the configuration
4721option `background-image` either in the YAML metadata block
4722or as a command-line variable. (There are no other options in
4723beamer and the rest of this section concerns reveal.js slideshows.)
4725For reveal.js, you can instead use the reveal.js-native option
4726`parallaxBackgroundImage`. You can also set `parallaxBackgroundHorizontal`
4727and `parallaxBackgroundVertical` the same way and must also set
4728`parallaxBackgroundSize` to have your values take effect.
4730To set an image for a particular reveal.js slide, add
4731`{data-background-image="/path/to/image"}`
4732to the first slide-level header on the slide (which may even be empty).
4734In reveal.js's overview mode, the parallaxBackgroundImage will show up
4735only on the first slide.
4737Other reveal.js background settings also work on individual slides, including
4738`data-background-size`, `data-background-repeat`, `data-background-color`,
4739`data-transition`, and `data-transition-speed`.
4741See the [reveal.js
4742documentation](https://github.com/hakimel/reveal.js#slide-backgrounds)
4743for more details.
4745For example in reveal.js:
4747```
4748---
4749title: My Slideshow
4750parallaxBackgroundImage: /path/to/my/background_image.png
4751---
4753## Slide One
4755Slide 1 has background_image.png as its background.
4757## {data-background-image="/path/to/special_image.jpg"}
4759Slide 2 has a special image for its background, even though the header has no content.
4760```
4762Creating EPUBs with pandoc
4763==========================
4765EPUB Metadata
4766-------------
4768EPUB metadata may be specified using the `--epub-metadata` option, but
4769if the source document is Markdown, it is better to use a [YAML metadata
4770block][Extension: `yaml_metadata_block`]. Here is an example:
4772 ---
4773 title:
4774 - type: main
4775 text: My Book
4776 - type: subtitle
4777 text: An investigation of metadata
4778 creator:
4779 - role: author
4780 text: John Smith
4781 - role: editor
4782 text: Sarah Jones
4783 identifier:
4784 - scheme: DOI
4785 text: doi:10.234234.234/33
4786 publisher: My Press
4787 rights: © 2007 John Smith, CC BY-NC
4788 ibooks:
4789 version: 1.3.4
4790 ...
4792The following fields are recognized:
4794`identifier`
4795 ~ Either a string value or an object with fields `text` and
4796 `scheme`. Valid values for `scheme` are `ISBN-10`,
4797 `GTIN-13`, `UPC`, `ISMN-10`, `DOI`, `LCCN`, `GTIN-14`,
4798 `ISBN-13`, `Legal deposit number`, `URN`, `OCLC`,
4799 `ISMN-13`, `ISBN-A`, `JP`, `OLCC`.
4801`title`
4802 ~ Either a string value, or an object with fields `file-as` and
4803 `type`, or a list of such objects. Valid values for `type` are
4804 `main`, `subtitle`, `short`, `collection`, `edition`, `extended`.
4806`creator`
4807 ~ Either a string value, or an object with fields `role`, `file-as`,
4808 and `text`, or a list of such objects. Valid values for `role` are
4809 [MARC relators], but
4810 pandoc will attempt to translate the human-readable versions
4811 (like "author" and "editor") to the appropriate marc relators.
4813`contributor`
4814 ~ Same format as `creator`.
4816`date`
4817 ~ A string value in `YYYY-MM-DD` format. (Only the year is necessary.)
4818 Pandoc will attempt to convert other common date formats.
4820`lang` (or legacy: `language`)
4821 ~ A string value in [BCP 47] format. Pandoc will default to the local
4822 language if nothing is specified.
4824`subject`
4825 ~ A string value or a list of such values.
4827`description`
4828 ~ A string value.
4830`type`
4831 ~ A string value.
4833`format`
4834 ~ A string value.
4836`relation`
4837 ~ A string value.
4839`coverage`
4840 ~ A string value.
4842`rights`
4843 ~ A string value.
4845`cover-image`
4846 ~ A string value (path to cover image).
4848`css` (or legacy: `stylesheet`)
4849 ~ A string value (path to CSS stylesheet).
4851`page-progression-direction`
4852 ~ Either `ltr` or `rtl`. Specifies the `page-progression-direction`
4853 attribute for the [`spine` element].
4855`ibooks`
4856 ~ iBooks-specific metadata, with the following fields:
4858 - `version`: (string)
4859 - `specified-fonts`: `true`|`false` (default `false`)
4860 - `ipad-orientation-lock`: `portrait-only`|`landscape-only`
4861 - `iphone-orientation-lock`: `portrait-only`|`landscape-only`
4862 - `binding`: `true`|`false` (default `true`)
4863 - `scroll-axis`: `vertical`|`horizontal`|`default`
4865[MARC relators]: http://loc.gov/marc/relators/relaterm.html
4866[`spine` element]: http://idpf.org/epub/301/spec/epub-publications.html#sec-spine-elem
4868The `epub:type` attribute
4869-------------------------
4871For `epub3` output, you can mark up the header that corresponds to an EPUB
4872chapter using the [`epub:type` attribute][epub-type]. For example, to set
4873the attribute to the value `prologue`, use this markdown:
4875 # My chapter {epub:type=prologue}
4877Which will result in:
4879 <body epub:type="frontmatter">
4880 <section epub:type="prologue">
4881 <h1>My chapter</h1>
4883Pandoc will output `<body epub:type="bodymatter">`, unless
4884you use one of the following values, in which case either
4885`frontmatter` or `backmatter` will be output.
4887`epub:type` of first section `epub:type` of body
4888---------------------------- ------------------
4889prologue frontmatter
4890abstract frontmatter
4891acknowledgments frontmatter
4892copyright-page frontmatter
4893dedication frontmatter
4894foreword frontmatter
4895halftitle, frontmatter
4896introduction frontmatter
4897preface frontmatter
4898seriespage frontmatter
4899titlepage frontmatter
4900afterword backmatter
4901appendix backmatter
4902colophon backmatter
4903conclusion backmatter
4904epigraph backmatter
4906[epub-type]: http://www.idpf.org/epub/31/spec/epub-contentdocs.html#sec-epub-type-attribute
4908Linked media
4909------------
4911By default, pandoc will download media referenced from any `<img>`, `<audio>`,
4912`<video>` or `<source>` element present in the generated EPUB,
4913and include it in the EPUB container, yielding a completely
4914self-contained EPUB. If you want to link to external media resources
4915instead, use raw HTML in your source and add `data-external="1"` to the tag
4916with the `src` attribute. For example:
4918 <audio controls="1">
4919 <source src="http://example.com/music/toccata.mp3"
4920 data-external="1" type="audio/mpeg">
4921 </source>
4922 </audio>
4924Creating Jupyter notebooks with pandoc
4925======================================
4927When creating a [Jupyter notebook], pandoc will try to infer the
4928notebook structure. Code blocks with the class `code` will be
4929taken as code cells, and intervening content will be taken as
4930Markdown cells. Attachments will automatically be created for
4931images in Markdown cells. Metadata will be taken from the
4932`jupyter` metadata field. For example:
4934````
4935---
4936title: My notebook
4937jupyter:
4938 nbformat: 4
4939 nbformat_minor: 5
4940 kernelspec:
4941 display_name: Python 2
4942 language: python
4943 name: python2
4944 language_info:
4945 codemirror_mode:
4946 name: ipython
4947 version: 2
4948 file_extension: ".py"
4949 mimetype: "text/x-python"
4950 name: "python"
4951 nbconvert_exporter: "python"
4952 pygments_lexer: "ipython2"
4953 version: "2.7.15"
4954---
4956# Lorem ipsum
4958**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus
4959bibendum felis dictum sodales.
4961``` code
4962print("hello")
4963```
4965## Pyout
4967``` code
4968from IPython.display import HTML
4969HTML("""
4970<script>
4971console.log("hello");
4972</script>
4973<b>HTML</b>
4974""")
4975```
4977## Image
4979This image ![image](myimage.png) will be
4980included as a cell attachment.
4981````
4983If you want to add cell attributes, group cells differently, or
4984add output to code cells, then you need to include divs to
4985indicate the structure. You can use either [fenced
4986divs][Extension: `fenced_divs`] or [native divs][Extension:
4987`native_divs`] for this. Here is an example:
4989````
4990:::::: {.cell .markdown}
4991# Lorem
4993**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus
4994bibendum felis dictum sodales.
4995::::::
4997:::::: {.cell .code execution_count=1}
4998``` {.python}
4999print("hello")
5000```
5002::: {.output .stream .stdout}
5003```
5004hello
5005```
5006:::
5007::::::
5009:::::: {.cell .code execution_count=2}
5010``` {.python}
5011from IPython.display import HTML
5012HTML("""
5013<script>
5014console.log("hello");
5015</script>
5016<b>HTML</b>
5017""")
5018```
5020::: {.output .execute_result execution_count=2}
5021```{=html}
5022<script>
5023console.log("hello");
5024</script>
5025<b>HTML</b>
5026hello
5027```
5028:::
5029::::::
5030````
5032Syntax highlighting
5033===================
5035Pandoc will automatically highlight syntax in [fenced code blocks] that
5036are marked with a language name. The Haskell library [skylighting] is
5037used for highlighting. Currently highlighting is supported only for
5038HTML, EPUB, Docx, Ms, and LaTeX/PDF output. To see a list of language names
5039that pandoc will recognize, type `pandoc --list-highlight-languages`.
5041The color scheme can be selected using the `--highlight-style` option.
5042The default color scheme is `pygments`, which imitates the default color
5043scheme used by the Python library pygments (though pygments is not actually
5044used to do the highlighting). To see a list of highlight styles,
5045type `pandoc --list-highlight-styles`.
5047If you are not satisfied with the predefined styles, you can
5048use `--print-highlight-style` to generate a JSON `.theme` file which
5049can be modified and used as the argument to `--highlight-style`. To
5050get a JSON version of the `pygments` style, for example:
5052 pandoc --print-highlight-style pygments > my.theme
5054Then edit `my.theme` and use it like this:
5056 pandoc --highlight-style my.theme
5058If you are not satisfied with the built-in highlighting, or you
5059want highlight a language that isn't supported, you can use the
5060`--syntax-definition` option to load a [KDE-style XML syntax definition
5061file](https://docs.kde.org/stable5/en/applications/katepart/highlight.html).
5062Before writing your own, have a look at KDE's [repository of syntax
5063definitions](https://github.com/KDE/syntax-highlighting/tree/master/data/syntax).
5065To disable highlighting, use the `--no-highlight` option.
5067[skylighting]: https://github.com/jgm/skylighting
5069Custom Styles
5070=============
5072Custom styles can be used in the docx and ICML formats.
5074Output
5075------
5077By default, pandoc's docx and ICML output applies a predefined set of styles
5078for blocks such as paragraphs and block quotes, and uses largely default
5079formatting (italics, bold) for inlines. This will work for most
5080purposes, especially alongside a `reference.docx` file. However, if you
5081need to apply your own styles to blocks, or match a preexisting set of
5082styles, pandoc allows you to define custom styles for blocks and text
5083using `div`s and `span`s, respectively.
5085If you define a `div` or `span` with the attribute `custom-style`,
5086pandoc will apply your specified style to the contained elements. So,
5087for example using the `bracketed_spans` syntax,
5089 [Get out]{custom-style="Emphatically"}, he said.
5091would produce a docx file with "Get out" styled with character
5092style `Emphatically`. Similarly, using the `fenced_divs` syntax,
5094 Dickinson starts the poem simply:
5096 ::: {custom-style="Poetry"}
5097 | A Bird came down the Walk---
5098 | He did not know I saw---
5099 :::
5101would style the two contained lines with the `Poetry` paragraph style.
5103For docx output, styles will be defined in the output file as inheriting
5104from normal text, if the styles are not yet in your reference.docx.
5105If they are already defined, pandoc will not alter the definition.
5107This feature allows for greatest customization in conjunction with
5108[pandoc filters]. If you want all paragraphs after block quotes to be
5109indented, you can write a filter to apply the styles necessary. If you
5110want all italics to be transformed to the `Emphasis` character style
5111(perhaps to change their color), you can write a filter which will
5112transform all italicized inlines to inlines within an `Emphasis`
5113custom-style `span`.
5115For docx output, you don't need to enable any extensions for
5116custom styles to work.
5118[pandoc filters]: http://pandoc.org/filters.html
5120Input
5121-----
5123The docx reader, by default, only reads those styles that it can
5124convert into pandoc elements, either by direct conversion or
5125interpreting the derivation of the input document's styles.
5127By enabling the [`styles` extension](#ext-styles) in the docx reader
5128(`-f docx+styles`), you can produce output that maintains the styles
5129of the input document, using the `custom-style` class. Paragraph
5130styles are interpreted as divs, while character styles are interpreted
5131as spans.
5133For example, using the `custom-style-reference.docx` file in the test
5134directory, we have the following different outputs:
5136Without the `+styles` extension:
5138 $ pandoc test/docx/custom-style-reference.docx -f docx -t markdown
5139 This is some text.
5141 This is text with an *emphasized* text style. And this is text with a
5142 **strengthened** text style.
5144 > Here is a styled paragraph that inherits from Block Text.
5146And with the extension:
5148 $ pandoc test/docx/custom-style-reference.docx -f docx+styles -t markdown
5150 ::: {custom-style="FirstParagraph"}
5151 This is some text.
5152 :::
5154 ::: {custom-style="BodyText"}
5155 This is text with an [emphasized]{custom-style="Emphatic"} text style.
5156 And this is text with a [strengthened]{custom-style="Strengthened"}
5157 text style.
5158 :::
5160 ::: {custom-style="MyBlockStyle"}
5161 > Here is a styled paragraph that inherits from Block Text.
5162 :::
5164With these custom styles, you can use your input document as a
5165reference-doc while creating docx output (see below), and maintain the
5166same styles in your input and output files.
5168Custom writers
5169==============
5171Pandoc can be extended with custom writers written in [lua]. (Pandoc
5172includes a lua interpreter, so lua need not be installed separately.)
5174To use a custom writer, simply specify the path to the lua script
5175in place of the output format. For example:
5177 pandoc -t data/sample.lua
5179Creating a custom writer requires writing a lua function for each
5180possible element in a pandoc document. To get a documented example
5181which you can modify according to your needs, do
5183 pandoc --print-default-data-file sample.lua
5185[lua]: http://www.lua.org
5187A note on security
5188==================
5190If you use pandoc to convert user-contributed content in a web
5191application, here are some things to keep in mind:
51931. Although pandoc itself will not create or modify any files other
5194 than those you explicitly ask it create (with the exception
5195 of temporary files used in producing PDFs), a filter or custom
5196 writer could in principle do anything on your file system. Please
5197 audit filters and custom writers very carefully before using them.
51992. If your application uses pandoc as a Haskell library (rather than
5200 shelling out to the executable), it is possible to use it in a mode
5201 that fully isolates pandoc from your file system, by running the
5202 pandoc operations in the `PandocPure` monad. See the document
5203 [Using the pandoc API](http://pandoc.org/using-the-pandoc-api.html)
5204 for more details.
52063. Pandoc's parsers can exhibit pathological performance on some
5207 corner cases. It is wise to put any pandoc operations under
5208 a timeout, to avoid DOS attacks that exploit these issues.
5209 If you are using the pandoc executable, you can add the
5210 command line options `+RTS -M512M -RTS` (for example) to limit
5211 the heap size to 512MB.
52134. The HTML generated by pandoc is not guaranteed to be safe.
5214 If `raw_html` is enabled for the Markdown input, users can
5215 inject arbitrary HTML. Even if `raw_html` is disabled,
5216 users can include dangerous content in attributes for
5217 headers, spans, and code blocks. To be safe, you should
5218 run all the generated HTML through an HTML sanitizer.
5220Authors
5221=======
5223Copyright 2006--2019 John MacFarlane (jgm@berkeley.edu). Released
5224under the [GPL], version 2 or greater. This software carries no
5225warranty of any kind. (See COPYRIGHT for full copyright and
5226warranty notices.) For a full list of contributors, see the file
5227AUTHORS.md in the pandoc source code.
5229[GPL]: http://www.gnu.org/copyleft/gpl.html "GNU General Public License"