pandoc 3.1.9 → 3.1.10
raw patch · 117 files changed
+2558/−8044 lines, 117 filesdep +base64-bytestringdep −base64dep ~commonmarkdep ~commonmark-extensionsdep ~commonmark-pandocbinary-added
Dependencies added: base64-bytestring
Dependencies removed: base64
Dependency ranges changed: commonmark, commonmark-extensions, commonmark-pandoc, skylighting, skylighting-core, texmath, typst
Files
- AUTHORS.md +1/−0
- MANUAL.txt +18/−12
- benchmark/benchmark-pandoc.hs +3/−2
- changelog.md +185/−0
- data/docx/word/styles.xml +12/−0
- data/epub.css +8/−0
- data/templates/default.latex +1/−1
- data/templates/default.typst +15/−9
- data/templates/definitions.typst +0/−5
- data/templates/template.typst +8/−2
- man/manfilter.lua +0/−44
- man/pandoc.1 +0/−7652
- man/pandoc.1.after +0/−5
- man/pandoc.1.before +0/−2
- pandoc.cabal +17/−18
- src/Text/Pandoc/Citeproc.hs +6/−8
- src/Text/Pandoc/Class/IO.hs +7/−3
- src/Text/Pandoc/Extensions.hs +6/−0
- src/Text/Pandoc/MIME.hs +1/−0
- src/Text/Pandoc/PDF.hs +1/−1
- src/Text/Pandoc/Parsing/Math.hs +3/−5
- src/Text/Pandoc/Readers/CommonMark.hs +1/−0
- src/Text/Pandoc/Readers/Docx/Parse.hs +49/−14
- src/Text/Pandoc/Readers/Docx/Symbols.hs +1085/−0
- src/Text/Pandoc/Readers/Docx/Util.hs +23/−1
- src/Text/Pandoc/Readers/FB2.hs +2/−2
- src/Text/Pandoc/Readers/HTML.hs +13/−14
- src/Text/Pandoc/Readers/LaTeX.hs +19/−1
- src/Text/Pandoc/Readers/LaTeX/Math.hs +13/−2
- src/Text/Pandoc/Readers/Man.hs +15/−9
- src/Text/Pandoc/Readers/Markdown.hs +4/−3
- src/Text/Pandoc/Readers/MediaWiki.hs +3/−1
- src/Text/Pandoc/Readers/ODT/ContentReader.hs +66/−28
- src/Text/Pandoc/Readers/Typst.hs +116/−21
- src/Text/Pandoc/Readers/Typst/Parsing.hs +13/−1
- src/Text/Pandoc/RoffChar.hs +1/−0
- src/Text/Pandoc/SelfContained.hs +23/−6
- src/Text/Pandoc/Shared.hs +19/−11
- src/Text/Pandoc/Writers/AsciiDoc.hs +3/−1
- src/Text/Pandoc/Writers/Docx.hs +24/−9
- src/Text/Pandoc/Writers/Docx/Types.hs +2/−0
- src/Text/Pandoc/Writers/FB2.hs +3/−3
- src/Text/Pandoc/Writers/HTML.hs +2/−2
- src/Text/Pandoc/Writers/JATS.hs +7/−5
- src/Text/Pandoc/Writers/LaTeX.hs +35/−3
- src/Text/Pandoc/Writers/LaTeX/Util.hs +8/−2
- src/Text/Pandoc/Writers/Markdown.hs +49/−33
- src/Text/Pandoc/Writers/Ms.hs +1/−1
- src/Text/Pandoc/Writers/Typst.hs +17/−15
- test/Tests/Readers/Docx.hs +4/−0
- test/Tests/Readers/ODT.hs +2/−0
- test/Tests/Writers/LaTeX.hs +68/−0
- test/command/4235.md +2/−2
- test/command/5620.md +1/−1
- test/command/7006.md +2/−2
- test/command/8150.md +3/−10
- test/command/8872.md +45/−0
- test/command/8948.md +4/−4
- test/command/9171.md +65/−0
- test/command/9193.md +7/−0
- test/command/9201.md +18/−0
- test/command/9202.md +62/−0
- test/command/9209.md +6/−0
- test/command/alerts.md +55/−0
- test/command/lists-inside-definition.md +2/−0
- test/docx/golden/block_quotes.docx binary
- test/docx/golden/codeblock.docx binary
- test/docx/golden/comments.docx binary
- test/docx/golden/custom_style_no_reference.docx binary
- test/docx/golden/custom_style_preserve.docx binary
- test/docx/golden/custom_style_reference.docx binary
- test/docx/golden/definition_list.docx binary
- test/docx/golden/document-properties-short-desc.docx binary
- test/docx/golden/document-properties.docx binary
- test/docx/golden/headers.docx binary
- test/docx/golden/image.docx binary
- test/docx/golden/inline_code.docx binary
- test/docx/golden/inline_formatting.docx binary
- test/docx/golden/inline_images.docx binary
- test/docx/golden/link_in_notes.docx binary
- test/docx/golden/links.docx binary
- test/docx/golden/lists.docx binary
- test/docx/golden/lists_continuing.docx binary
- test/docx/golden/lists_div_bullets.docx binary
- test/docx/golden/lists_multiple_initial.docx binary
- test/docx/golden/lists_restarting.docx binary
- test/docx/golden/nested_anchors_in_header.docx binary
- test/docx/golden/notes.docx binary
- test/docx/golden/raw-blocks.docx binary
- test/docx/golden/raw-bookmarks.docx binary
- test/docx/golden/table_one_row.docx binary
- test/docx/golden/table_with_list_cell.docx binary
- test/docx/golden/tables-default-widths.docx binary
- test/docx/golden/tables.docx binary
- test/docx/golden/tables_separated_with_rawblock.docx binary
- test/docx/golden/track_changes_deletion.docx binary
- test/docx/golden/track_changes_insertion.docx binary
- test/docx/golden/track_changes_move.docx binary
- test/docx/golden/track_changes_scrubbed_metadata.docx binary
- test/docx/golden/unicode.docx binary
- test/docx/golden/verbatim_subsuper.docx binary
- test/docx/text_in_shape_format.docx binary
- test/docx/text_in_shape_format.native +33/−0
- test/lhs-test.latex +1/−1
- test/lhs-test.latex+lhs +1/−1
- test/odt/native/listContinueNumbering.native +89/−0
- test/odt/native/listContinueNumbering2.native +107/−0
- test/odt/odt/listContinueNumbering.odt binary
- test/odt/odt/listContinueNumbering2.odt binary
- test/tables.typst +24/−17
- test/testsuite.txt +1/−2
- test/writer.html5 +2/−2
- test/writer.latex +1/−1
- test/writer.man +10/−10
- test/writer.ms +9/−9
- test/writer.typst +25/−24
- test/writers-lang-and-dir.latex +1/−1
@@ -145,6 +145,7 @@ - Henrik Tramberend - Henry de Valence - Herwig Stuetz+- Hikaru Ibayashi - Hos Es - Hubert Plociniczak - Ian Max Andolina
@@ -1,7 +1,7 @@ --- title: Pandoc User's Guide author: John MacFarlane-date: October 27, 2023+date: December 11, 2023 --- # Synopsis@@ -139,7 +139,7 @@ [`iftex`], [`listings`] (if the `--listings` option is used), [`fancyvrb`], [`longtable`], [`booktabs`], [`graphicx`] (if the document-contains images), [`hyperref`], [`xcolor`],+contains images), [`bookmark`], [`xcolor`], [`soul`], [`geometry`] (with the `geometry` variable set), [`setspace`] (with `linestretch`), and [`babel`] (with `lang`). If `CJKmainfont` is set, [`xeCJK`]@@ -157,9 +157,8 @@ be present: [`upquote`] (for straight quotes in verbatim environments), [`microtype`] (for better spacing adjustments), [`parskip`] (for better inter-paragraph spaces), [`xurl`] (for-better line breaks in URLs), [`bookmark`] (for better PDF-bookmarks), and [`footnotehyper`] or [`footnote`] (to allow-footnotes in tables).+better line breaks in URLs), and [`footnotehyper`] or+[`footnote`] (to allow footnotes in tables). [TeX Live]: https://www.tug.org/texlive/ [`amsfonts`]: https://ctan.org/pkg/amsfonts@@ -1188,7 +1187,8 @@ - Heading 7 - Heading 8 - Heading 9- - Block Text+ - Block Text [for block quotes]+ - Footnote Block Text [for block quotes in footnotes] - Source Code - Footnote Text - Definition Term@@ -2049,18 +2049,15 @@ | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml |-| --bibliography logic.bib | metadata: |-| | bibliography: logic.bib |+| --bibliography logic.bib | bibliography: logic.bib | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml |-| --csl ieee.csl | metadata: |-| | csl: ieee.csl |+| --csl ieee.csl | csl: ieee.csl | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml |-| --citation-abbreviations ab.json | metadata: |-| | citation-abbreviations: ab.json |+| --citation-abbreviations ab.json | citation-abbreviations: ab.json | | ``` | ``` | +----------------------------------+-----------------------------------+ | ``` | ``` yaml |@@ -5825,6 +5822,15 @@ Note that the pandoc document model does not support abbreviations, so if this extension is enabled, abbreviation keys are simply skipped (as opposed to being parsed as paragraphs).++#### Extension: `alerts` ####++Supports [GitHub-style markdown alerts], like++ > [!INFO]+ > This is an informational message.++ [GitHub-style markdown alerts]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts #### Extension: `autolink_bare_uris` ####
@@ -39,14 +39,15 @@ runPure $ do (rdr, rexts) <- getReader $ FlavoredFormat name mempty (wtr, wexts) <- getWriter $ FlavoredFormat name mempty+ tmpl <- Just <$> compileDefaultTemplate name case (rdr, wtr) of (TextReader r, TextWriter w) -> do inp <- w def{ writerWrapText = WrapAuto- , writerExtensions = wexts } doc+ , writerExtensions = wexts+ , writerTemplate = tmpl } doc return $ bench (T.unpack name) $ nf (either (error . show) id . runPure . r def) inp (ByteStringReader r, ByteStringWriter w) -> do- tmpl <- Just <$> compileDefaultTemplate name inp <- w def{ writerWrapText = WrapAuto , writerExtensions = wexts , writerTemplate = tmpl } doc
@@ -1,5 +1,190 @@ # Revision history for pandoc +## pandoc 3.1.10 (2023-12-12)++ * Link pandoc-cli version to pandoc version. Henceforth pandoc-cli's+ version will be synchronized with pandoc's, and pandoc-cli will+ depend on an exact pandoc version. This will avoid confusion by+ ensuring that `cabal install pandoc-cli-X.Y.Z` installs pandoc+ version X.Y.Z. It will make things more straightforward for+ upstream packagers (see #9232). This scheme does not follow the+ Haskell PVP, but that should cause no harm, because this package+ does not expose a library.++ * Add `alerts` markdown extension. This enables GitHub style markdown+ alerts as a commonmark extension. This extension is now default for+ `gfm`. It can't be used with `markdown`, only with `commonmark` and+ variants.++ * Markdown reader:++ + Preserve newlines in math instead of changing to spaces.+ Otherwise we can get unwanted results if there's+ a `%` comment (#9193).+ + Make attributes work with reference links (#9171).++ * HTML reader:++ + Improve handling of invalidly nested sublists (#9187, cf. #8150).++ * MediaWiki reader:++ + Allow attribute keys with hyphens (#9178).++ * ODT reader:++ + Support attr `text:continue-numbering` (#8979, Stephan Meijer).++ * Typst reader:++ + Allow references (e.g. `@foo`) to become citations+ if there is no corresponding label in the document.+ + Collapse adjacent `cite` elements.+ + Handle supplements in `cite`.+ + Change `cite` (only one key allowed, a label) (typst 0.9 breaking change).+ + Support `quote` element (typst 0.9).++ * LaTeX reader:++ + Handle otherlanguage environment and language-name environments like+ `\begin{french}...\end{french}` (#9202).+ + Fix theorem label parsing (#8872, Hikaru Ibayashi).++ * Docx reader:++ + Unwrap content of shaped textboxes (Stephan Meijer, #9214).+ + Improve handling of `w:sym` (#9220). We now look up symbols in symbol+ fonts using the table defined at Text.Pandoc.Readers.Docx.Symbols.+ + Add unexported module Text.Pandoc.Readers.Docx.Symbols. This gives us a+ table to use to resolve characters included in docx via `w:sym` element.++ * Man reader:++ + Properly handle `.sp` macro inside lists and block quotes (#9201).++ * LaTeX writer:++ + Fix bug with big footnotes inside emphasis (#8982, Hikaru Ibayashi).+ + Handle identifiers inside heading contents. `\phantomsection` can't+ be used in this case, so we need `\hypertarget` (#9209).++ * LaTeX template:++ + Include `bookmark` package unconditionally. This package+ produces better PDF bookmarks than `hyperref` and does it on the+ first pass.++ * Typst writer:++ + Use `quote` for block quotes.+ + Support `--toc-depth` as in other writers (#9242).+ + Put inline image dimensions on enclosing box, not image (#9104).+ + Better handling of tables with captions (#9194).+ We now put these in a figure with a caption argument.+ + Update typst writer to typst 0.9 citation format (#9188).++ * Typst template:++ + Remove custom definition of `blockquote` in default template.+ (We now use built-in `quote`.)+ + Support table of contents.+ + Support csl (#9186, Ian Max Andolina). Typst now supports CSL for its+ native citation engine, so pandoc should use a specified `csl`+ style in the template, falling back to `bibliographystyle` if+ `csl` is not specified.++ * Docx writer:++ + Use different style for block quotes in notes (#9243).+ Using "Footnote Block Text" for the style name, so it can be+ given a different font size if footnotes are.+ + Allow embedded fonts to be used in reference.docx (#6728).++ * HTML5 writer:++ + To conform to validator's expectations, `doc-footnote` role is used+ with `aside` and `doc-endnotes` with `section`.+ + `aside` is used only for notes at ends of sections or blocks;+ if all the notes come at the end of the document, `section` is+ used so we can have the `doc-endnotes` role.++ * JATS writer:++ + Handle case where there is material after refs div (#9166). Previously in+ such cases the references were not being moved to back matter.++ * Ms writer:++ + Don't do normal escapes in filename arguments for PSPIC etc.++ * T.P.RoffChar: escape `-` as `\-`. The `groff_man (7)` man page indicates+ that `-` characters will be treated as typographic hyphens and are not+ appropriate for cases where the output should be copy-pasteable as an+ ASCII hyphen-minus character. (E.g. in command line options.)+ However, until a recent update groff man did not actually do this;+ it treated `-` and `\-` the same. With the new update (1.23.0)+ the two are distinguished (see https://lwn.net/Articles/947941/+ for background), so now it is important that pandoc escape `-`.++ * Text.Pandoc.Extension: add `Ext_alerts` constructor [API change].++ * Text.Pandoc.PDF: We now default to running LaTeX only+ once in producing a PDF (instead of twice). This is made possible by the+ shift to the `bookmark` package, which does not require a second pass for+ PDF bookmarks. If a table of contents is present, we still have to run+ three times to get the page numbers, and if beamer is used we still do a+ minimum of two runs.++ * Text.Pandoc.Shared:++ + `renderTags'`: use minimized tag for `rect`.+ + Allow svg `path` element to be minimized.+ + Export `combineAttr` [API change].+ + Improve `isTightList` so that it recognizes an item containing only a list+ which is itself tight as potentially an item in a tight list (#9161).++ * Text.Pandoc.MIME: Ensure we use `.svg` not `.svgz` as extension+ for `image/svg+xml` mime type. This fixes issues with embedded+ SVG images in docx output, among other things (#9195).++ * Text.Pandoc.Class: `openURL` improvements for data uris.+ Only treat data URI as `base64` if ';base64' is specified.+ Otherwise treat as UTF-8 (not 100% reliable but should cover most+ other cases). Strip off `;base64` (or `;charset=...` or whatever)+ from mime type (#9195).++ * Text.Pandoc.SelfContained: Improve treatment of embedded SVGs+ (#9206, #8948).++ + Ensure unique ids for elements by prefixing SVG id.+ + Ensure SVG `id` attribute except when `use` element is used.+ + Remove `width`, `height` attributes from svg element when `use`+ element is used. Instead, add `width` and `height` 100% to the+ `use` element. This seems to get the sizing right.++ * Text.Pandoc.Citeproc: Don't link citations if+ `suppress-bibliography` specified, for there will be nothing to+ link to (#9163).++ * epub.css: add styling for sup and sub (#9160).++ * Switch from `base64` to `base64-bytestring` (#9233).++ * Use newest versions of commonmark, commonmark-extensions,+ commonmark-pandoc, texmath, typst, skylighting, skylighting-core.++ * Benchmark: use standalone documents for reader tests.+ Otherwise typst reader benchmark fails. Note: this means that we are now+ parsing longer documents, so bench results on readers won't be comparable+ to before.++ * MANUAL.txt: update defaults file docs for bibliography fields (#9173).+ Recommend using top-level `bibliography` `csl`, etc. instead+ of a nested `metadata` field. Reason: `${USERDATA}` and `${HOME}`+ are only expanded in these contexts, not in `metadata`.++ * Move man pages to pandoc-cli package (#9245).+ ## pandoc 3.1.9 (2023-10-27) * Make `reference-section-title` work with `jats+element_citations`
@@ -348,6 +348,18 @@ <w:unhideWhenUsed /> <w:qFormat /> </w:style>+ <w:style w:type="paragraph" w:styleId="FootnoteBlockText">+ <w:name w:val="Footnote Block Text" />+ <w:basedOn w:val="Footnote Text" />+ <w:next w:val="Footnote Text" />+ <w:uiPriority w:val="9" />+ <w:unhideWhenUsed />+ <w:qFormat />+ <w:pPr>+ <w:spacing w:before="100" w:after="100" />+ <w:ind w:firstLine="0" w:left="480" w:right="480" />+ </w:pPr>+ </w:style> <w:style w:type="character" w:default="1" w:styleId="DefaultParagraphFont"> <w:name w:val="Default Paragraph Font" /> <w:semiHidden />
@@ -33,6 +33,14 @@ img { max-width: 100%; }+sup {+ vertical-align: super;+ font-size: smaller;+}+sub {+ vertical-align: sub;+ font-size: smaller;+} h1 { margin: 3em 0 0 0; font-size: 2em;
@@ -425,7 +425,7 @@ $if(csquotes)$ \usepackage{csquotes} $endif$-\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}+\usepackage{bookmark} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$} $if(links-as-notes)$
@@ -23,19 +23,22 @@ authors: ( $for(author)$ $if(author.name)$- ( name: [$author.name$],- affiliation: [$author.affiliation$],- email: [$author.email$] ),+ ( name: "$author.name$",+ affiliation: "$author.affiliation$",+ email: "$author.email$" ), $else$- ( name: [$author$],- affiliation: [],- email: [] ),+ ( name: "$author$",+ affiliation: "",+ email: "" ), $endif$ $endfor$ ), $endif$+$if(keywords)$+ keywords: ($for(keywords)$$keyword$$sep$,$endfor$),+$endif$ $if(date)$- date: [$date$],+ date: "$date$", $endif$ $if(lang)$ lang: "$lang$",@@ -76,14 +79,17 @@ $if(toc)$ #outline( title: auto,- depth: none+ depth: $toc-depth$ ); $endif$ $body$ $if(citations)$-$if(bibliographystyle)$+$if(csl)$++#set bibliography(style: "$csl$")+$elseif(bibliographystyle)$ #set bibliography(style: "$bibliographystyle$") $endif$
@@ -1,9 +1,4 @@ // Some definitions presupposed by pandoc's typst output.-#let blockquote(body) = [- #set text( size: 0.92em )- #block(inset: (left: 1.5em, top: 0.2em, bottom: 0.2em))[#body]-]- #let horizontalrule = [ #line(start: (25%,0%), end: (75%,0%)) ]
@@ -1,6 +1,7 @@ #let conf( title: none,- authors: none,+ authors: (),+ keywords: (), date: none, abstract: none, cols: 1,@@ -13,6 +14,11 @@ sectionnumbering: none, doc, ) = {+ set document(+ title: title,+ author: authors.map(author => author.name),+ keywords: keywords,+ ) set page( paper: paper, margin: margin,@@ -31,7 +37,7 @@ ]] } - if authors != none {+ if authors != none and authors != [] { let count = authors.len() let ncols = calc.min(count, 3) grid(
@@ -1,44 +0,0 @@--- we use preloaded text to get a UTF-8 aware 'upper' function-local text = require('text')---- capitalize level 1 headers-function Header(el)- if el.level == 1 then- return pandoc.walk_block(el, {- Str = function(el)- return pandoc.Str(text.upper(el.text))- end })- end-end---- For portability with mandoc, which doesn't allow man commands--- inside table cells, we convert all tables to code blocks.-function Table(el)- local rendered = pandoc.write(pandoc.Pandoc({el}), "plain")- local adjusted = rendered -- tame grid table lines- :gsub("%+([=:][=:]+)",- function(s)- return " " .. string.rep("-", #s - 1)- end)- :gsub("(%+[-:][-:]+)",- function(s)- return ""- end)- :gsub("%+\n","\n")- :gsub("\n| ","\n|")- :gsub("|","")- return { pandoc.RawBlock("man", ".RS -14n"),- pandoc.CodeBlock(adjusted),- pandoc.RawBlock("man", ".RE") }-end----- replace links with link text-function Link(el)- return el.content-end---- remove notes-function Note(el)- return {}-end
@@ -1,7652 +0,0 @@-.\" Automatically generated by Pandoc 3.1.7-.\"-.TH "pandoc" "1" "October 27, 2023" "pandoc 3.1.9" "Pandoc User\[cq]s Guide"-.SH NAME-pandoc - general markup converter-.SH SYNOPSIS-\f[CR]pandoc\f[R] [\f[I]options\f[R]] [\f[I]input-file\f[R]]\&...-.SH DESCRIPTION-Pandoc is a Haskell library for converting from one markup format to-another, and a command-line tool that uses this library.-.PP-Pandoc can convert between numerous markup and word processing formats,-including, but not limited to, various flavors of Markdown, HTML, LaTeX-and Word docx.-For the full lists of input and output formats, see the-\f[CR]--from\f[R] and \f[CR]--to\f[R] options below.-Pandoc can also produce PDF output: see creating a PDF, below.-.PP-Pandoc\[cq]s enhanced version of Markdown includes syntax for tables,-definition lists, metadata blocks, footnotes, citations, math, and much-more.-See below under Pandoc\[cq]s Markdown.-.PP-Pandoc has a modular design: it consists of a set of readers, which-parse text in a given format and produce a native representation of the-document (an \f[I]abstract syntax tree\f[R] or AST), and a set of-writers, which convert this native representation into a target format.-Thus, adding an input or output format requires only adding a reader or-writer.-Users can also run custom pandoc filters to modify the intermediate AST.-.PP-Because pandoc\[cq]s intermediate representation of a document is less-expressive than many of the formats it converts between, one should not-expect perfect conversions between every format and every other.-Pandoc attempts to preserve the structural elements of a document, but-not formatting details such as margin size.-And some document elements, such as complex tables, may not fit into-pandoc\[cq]s simple document model.-While conversions from pandoc\[cq]s Markdown to all formats aspire to be-perfect, conversions from formats more expressive than pandoc\[cq]s-Markdown can be expected to be lossy.-.SS Using pandoc-If no \f[I]input-files\f[R] are specified, input is read from-\f[I]stdin\f[R].-Output goes to \f[I]stdout\f[R] by default.-For output to a file, use the \f[CR]-o\f[R] option:-.IP-.EX-pandoc -o output.html input.txt-.EE-.PP-By default, pandoc produces a document fragment.-To produce a standalone document (e.g.\ a valid HTML file including-\f[CR]<head>\f[R] and \f[CR]<body>\f[R]), use the \f[CR]-s\f[R] or-\f[CR]--standalone\f[R] flag:-.IP-.EX-pandoc -s -o output.html input.txt-.EE-.PP-For more information on how standalone documents are produced, see-Templates below.-.PP-If multiple input files are given, pandoc will concatenate them all-(with blank lines between them) before parsing.-(Use \f[CR]--file-scope\f[R] to parse files individually.)-.SS Specifying formats-The format of the input and output can be specified explicitly using-command-line options.-The input format can be specified using the \f[CR]-f/--from\f[R] option,-the output format using the \f[CR]-t/--to\f[R] option.-Thus, to convert \f[CR]hello.txt\f[R] from Markdown to LaTeX, you could-type:-.IP-.EX-pandoc -f markdown -t latex hello.txt-.EE-.PP-To convert \f[CR]hello.html\f[R] from HTML to Markdown:-.IP-.EX-pandoc -f html -t markdown hello.html-.EE-.PP-Supported input and output formats are listed below under Options (see-\f[CR]-f\f[R] for input formats and \f[CR]-t\f[R] for output formats).-You can also use \f[CR]pandoc --list-input-formats\f[R] and-\f[CR]pandoc --list-output-formats\f[R] to print lists of supported-formats.-.PP-If the input or output format is not specified explicitly, pandoc will-attempt to guess it from the extensions of the filenames.-Thus, for example,-.IP-.EX-pandoc -o hello.tex hello.txt-.EE-.PP-will convert \f[CR]hello.txt\f[R] from Markdown to LaTeX.-If no output file is specified (so that output goes to-\f[I]stdout\f[R]), or if the output file\[cq]s extension is unknown, the-output format will default to HTML.-If no input file is specified (so that input comes from-\f[I]stdin\f[R]), or if the input files\[cq] extensions are unknown, the-input format will be assumed to be Markdown.-.SS Character encoding-Pandoc uses the UTF-8 character encoding for both input and output.-If your local character encoding is not UTF-8, you should pipe input and-output through \f[CR]iconv\f[R]:-.IP-.EX-iconv -t utf-8 input.txt | pandoc | iconv -f utf-8-.EE-.PP-Note that in some output formats (such as HTML, LaTeX, ConTeXt, RTF,-OPML, DocBook, and Texinfo), information about the character encoding is-included in the document header, which will only be included if you use-the \f[CR]-s/--standalone\f[R] option.-.SS Creating a PDF-To produce a PDF, specify an output file with a \f[CR].pdf\f[R]-extension:-.IP-.EX-pandoc test.txt -o test.pdf-.EE-.PP-By default, pandoc will use LaTeX to create the PDF, which requires that-a LaTeX engine be installed (see \f[CR]--pdf-engine\f[R] below).-Alternatively, pandoc can use ConTeXt, roff ms, or HTML as an-intermediate format.-To do this, specify an output file with a \f[CR].pdf\f[R] extension, as-before, but add the \f[CR]--pdf-engine\f[R] option or-\f[CR]-t context\f[R], \f[CR]-t html\f[R], or \f[CR]-t ms\f[R] to the-command line.-The tool used to generate the PDF from the intermediate format may be-specified using \f[CR]--pdf-engine\f[R].-.PP-You can control the PDF style using variables, depending on the-intermediate format used: see variables for LaTeX, variables for-ConTeXt, variables for \f[CR]wkhtmltopdf\f[R], variables for ms.-When HTML is used as an intermediate format, the output can be styled-using \f[CR]--css\f[R].-.PP-To debug the PDF creation, it can be useful to look at the intermediate-representation: instead of \f[CR]-o test.pdf\f[R], use for example-\f[CR]-s -o test.tex\f[R] to output the generated LaTeX.-You can then test it with \f[CR]pdflatex test.tex\f[R].-.PP-When using LaTeX, the following packages need to be available (they are-included with all recent versions of TeX Live): \f[CR]amsfonts\f[R],-\f[CR]amsmath\f[R], \f[CR]lm\f[R], \f[CR]unicode-math\f[R],-\f[CR]iftex\f[R], \f[CR]listings\f[R] (if the \f[CR]--listings\f[R]-option is used), \f[CR]fancyvrb\f[R], \f[CR]longtable\f[R],-\f[CR]booktabs\f[R], \f[CR]graphicx\f[R] (if the document contains-images), \f[CR]hyperref\f[R], \f[CR]xcolor\f[R], \f[CR]soul\f[R],-\f[CR]geometry\f[R] (with the \f[CR]geometry\f[R] variable set),-\f[CR]setspace\f[R] (with \f[CR]linestretch\f[R]), and \f[CR]babel\f[R]-(with \f[CR]lang\f[R]).-If \f[CR]CJKmainfont\f[R] is set, \f[CR]xeCJK\f[R] is needed.-The use of \f[CR]xelatex\f[R] or \f[CR]lualatex\f[R] as the PDF engine-requires \f[CR]fontspec\f[R].-\f[CR]lualatex\f[R] uses \f[CR]selnolig\f[R].-\f[CR]xelatex\f[R] uses \f[CR]bidi\f[R] (with the \f[CR]dir\f[R]-variable set).-If the \f[CR]mathspec\f[R] variable is set, \f[CR]xelatex\f[R] will use-\f[CR]mathspec\f[R] instead of \f[CR]unicode-math\f[R].-The \f[CR]upquote\f[R] and \f[CR]microtype\f[R] packages are used if-available, and \f[CR]csquotes\f[R] will be used for typography if the-\f[CR]csquotes\f[R] variable or metadata field is set to a true value.-The \f[CR]natbib\f[R], \f[CR]biblatex\f[R], \f[CR]bibtex\f[R], and-\f[CR]biber\f[R] packages can optionally be used for citation rendering.-The following packages will be used to improve output quality if-present, but pandoc does not require them to be present:-\f[CR]upquote\f[R] (for straight quotes in verbatim environments),-\f[CR]microtype\f[R] (for better spacing adjustments),-\f[CR]parskip\f[R] (for better inter-paragraph spaces), \f[CR]xurl\f[R]-(for better line breaks in URLs), \f[CR]bookmark\f[R] (for better PDF-bookmarks), and \f[CR]footnotehyper\f[R] or \f[CR]footnote\f[R] (to-allow footnotes in tables).-.SS Reading from the Web-Instead of an input file, an absolute URI may be given.-In this case pandoc will fetch the content using HTTP:-.IP-.EX-pandoc -f html -t markdown https://www.fsf.org-.EE-.PP-It is possible to supply a custom User-Agent string or other header when-requesting a document from a URL:-.IP-.EX-pandoc -f html -t markdown --request-header User-Agent:\[dq]Mozilla/5.0\[dq] \[rs]- https://www.fsf.org-.EE-.SH OPTIONS-.SS General options-.TP-\f[CR]-f\f[R] \f[I]FORMAT\f[R], \f[CR]-r\f[R] \f[I]FORMAT\f[R], \f[CR]--from=\f[R]\f[I]FORMAT\f[R], \f[CR]--read=\f[R]\f[I]FORMAT\f[R]-Specify input format.-\f[I]FORMAT\f[R] can be:-.RS-.IP \[bu] 2-\f[CR]bibtex\f[R] (BibTeX bibliography)-.IP \[bu] 2-\f[CR]biblatex\f[R] (BibLaTeX bibliography)-.IP \[bu] 2-\f[CR]bits\f[R] (BITS XML, alias for \f[CR]jats\f[R])-.IP \[bu] 2-\f[CR]commonmark\f[R] (CommonMark Markdown)-.IP \[bu] 2-\f[CR]commonmark_x\f[R] (CommonMark Markdown with extensions)-.IP \[bu] 2-\f[CR]creole\f[R] (Creole 1.0)-.IP \[bu] 2-\f[CR]csljson\f[R] (CSL JSON bibliography)-.IP \[bu] 2-\f[CR]csv\f[R] (CSV table)-.IP \[bu] 2-\f[CR]tsv\f[R] (TSV table)-.IP \[bu] 2-\f[CR]docbook\f[R] (DocBook)-.IP \[bu] 2-\f[CR]docx\f[R] (Word docx)-.IP \[bu] 2-\f[CR]dokuwiki\f[R] (DokuWiki markup)-.IP \[bu] 2-\f[CR]endnotexml\f[R] (EndNote XML bibliography)-.IP \[bu] 2-\f[CR]epub\f[R] (EPUB)-.IP \[bu] 2-\f[CR]fb2\f[R] (FictionBook2 e-book)-.IP \[bu] 2-\f[CR]gfm\f[R] (GitHub-Flavored Markdown), or the deprecated and less-accurate \f[CR]markdown_github\f[R]; use \f[CR]markdown_github\f[R] only-if you need extensions not supported in \f[CR]gfm\f[R].-.IP \[bu] 2-\f[CR]haddock\f[R] (Haddock markup)-.IP \[bu] 2-\f[CR]html\f[R] (HTML)-.IP \[bu] 2-\f[CR]ipynb\f[R] (Jupyter notebook)-.IP \[bu] 2-\f[CR]jats\f[R] (JATS XML)-.IP \[bu] 2-\f[CR]jira\f[R] (Jira/Confluence wiki markup)-.IP \[bu] 2-\f[CR]json\f[R] (JSON version of native AST)-.IP \[bu] 2-\f[CR]latex\f[R] (LaTeX)-.IP \[bu] 2-\f[CR]markdown\f[R] (Pandoc\[cq]s Markdown)-.IP \[bu] 2-\f[CR]markdown_mmd\f[R] (MultiMarkdown)-.IP \[bu] 2-\f[CR]markdown_phpextra\f[R] (PHP Markdown Extra)-.IP \[bu] 2-\f[CR]markdown_strict\f[R] (original unextended Markdown)-.IP \[bu] 2-\f[CR]mediawiki\f[R] (MediaWiki markup)-.IP \[bu] 2-\f[CR]man\f[R] (roff man)-.IP \[bu] 2-\f[CR]muse\f[R] (Muse)-.IP \[bu] 2-\f[CR]native\f[R] (native Haskell)-.IP \[bu] 2-\f[CR]odt\f[R] (ODT)-.IP \[bu] 2-\f[CR]opml\f[R] (OPML)-.IP \[bu] 2-\f[CR]org\f[R] (Emacs Org mode)-.IP \[bu] 2-\f[CR]ris\f[R] (RIS bibliography)-.IP \[bu] 2-\f[CR]rtf\f[R] (Rich Text Format)-.IP \[bu] 2-\f[CR]rst\f[R] (reStructuredText)-.IP \[bu] 2-\f[CR]t2t\f[R] (txt2tags)-.IP \[bu] 2-\f[CR]textile\f[R] (Textile)-.IP \[bu] 2-\f[CR]tikiwiki\f[R] (TikiWiki markup)-.IP \[bu] 2-\f[CR]twiki\f[R] (TWiki markup)-.IP \[bu] 2-\f[CR]typst\f[R] (typst)-.IP \[bu] 2-\f[CR]vimwiki\f[R] (Vimwiki)-.IP \[bu] 2-the path of a custom Lua reader, see Custom readers and writers below-.PP-Extensions can be individually enabled or disabled by appending-\f[CR]+EXTENSION\f[R] or \f[CR]-EXTENSION\f[R] to the format name.-See Extensions below, for a list of extensions and their names.-See \f[CR]--list-input-formats\f[R] and \f[CR]--list-extensions\f[R],-below.-.RE-.TP-\f[CR]-t\f[R] \f[I]FORMAT\f[R], \f[CR]-w\f[R] \f[I]FORMAT\f[R], \f[CR]--to=\f[R]\f[I]FORMAT\f[R], \f[CR]--write=\f[R]\f[I]FORMAT\f[R]-Specify output format.-\f[I]FORMAT\f[R] can be:-.RS-.IP \[bu] 2-\f[CR]asciidoc\f[R] (modern AsciiDoc as interpreted by AsciiDoctor)-.IP \[bu] 2-\f[CR]asciidoc_legacy\f[R] (AsciiDoc as interpreted by-\f[CR]asciidoc-py\f[R]).-.IP \[bu] 2-\f[CR]asciidoctor\f[R] (deprecated synonym for \f[CR]asciidoc\f[R])-.IP \[bu] 2-\f[CR]beamer\f[R] (LaTeX beamer slide show)-.IP \[bu] 2-\f[CR]bibtex\f[R] (BibTeX bibliography)-.IP \[bu] 2-\f[CR]biblatex\f[R] (BibLaTeX bibliography)-.IP \[bu] 2-\f[CR]chunkedhtml\f[R] (zip archive of multiple linked HTML files)-.IP \[bu] 2-\f[CR]commonmark\f[R] (CommonMark Markdown)-.IP \[bu] 2-\f[CR]commonmark_x\f[R] (CommonMark Markdown with extensions)-.IP \[bu] 2-\f[CR]context\f[R] (ConTeXt)-.IP \[bu] 2-\f[CR]csljson\f[R] (CSL JSON bibliography)-.IP \[bu] 2-\f[CR]docbook\f[R] or \f[CR]docbook4\f[R] (DocBook 4)-.IP \[bu] 2-\f[CR]docbook5\f[R] (DocBook 5)-.IP \[bu] 2-\f[CR]docx\f[R] (Word docx)-.IP \[bu] 2-\f[CR]dokuwiki\f[R] (DokuWiki markup)-.IP \[bu] 2-\f[CR]epub\f[R] or \f[CR]epub3\f[R] (EPUB v3 book)-.IP \[bu] 2-\f[CR]epub2\f[R] (EPUB v2)-.IP \[bu] 2-\f[CR]fb2\f[R] (FictionBook2 e-book)-.IP \[bu] 2-\f[CR]gfm\f[R] (GitHub-Flavored Markdown), or the deprecated and less-accurate \f[CR]markdown_github\f[R]; use \f[CR]markdown_github\f[R] only-if you need extensions not supported in \f[CR]gfm\f[R].-.IP \[bu] 2-\f[CR]haddock\f[R] (Haddock markup)-.IP \[bu] 2-\f[CR]html\f[R] or \f[CR]html5\f[R] (HTML, i.e.\ HTML5/XHTML polyglot-markup)-.IP \[bu] 2-\f[CR]html4\f[R] (XHTML 1.0 Transitional)-.IP \[bu] 2-\f[CR]icml\f[R] (InDesign ICML)-.IP \[bu] 2-\f[CR]ipynb\f[R] (Jupyter notebook)-.IP \[bu] 2-\f[CR]jats_archiving\f[R] (JATS XML, Archiving and Interchange Tag Set)-.IP \[bu] 2-\f[CR]jats_articleauthoring\f[R] (JATS XML, Article Authoring Tag Set)-.IP \[bu] 2-\f[CR]jats_publishing\f[R] (JATS XML, Journal Publishing Tag Set)-.IP \[bu] 2-\f[CR]jats\f[R] (alias for \f[CR]jats_archiving\f[R])-.IP \[bu] 2-\f[CR]jira\f[R] (Jira/Confluence wiki markup)-.IP \[bu] 2-\f[CR]json\f[R] (JSON version of native AST)-.IP \[bu] 2-\f[CR]latex\f[R] (LaTeX)-.IP \[bu] 2-\f[CR]man\f[R] (roff man)-.IP \[bu] 2-\f[CR]markdown\f[R] (Pandoc\[cq]s Markdown)-.IP \[bu] 2-\f[CR]markdown_mmd\f[R] (MultiMarkdown)-.IP \[bu] 2-\f[CR]markdown_phpextra\f[R] (PHP Markdown Extra)-.IP \[bu] 2-\f[CR]markdown_strict\f[R] (original unextended Markdown)-.IP \[bu] 2-\f[CR]markua\f[R] (Markua)-.IP \[bu] 2-\f[CR]mediawiki\f[R] (MediaWiki markup)-.IP \[bu] 2-\f[CR]ms\f[R] (roff ms)-.IP \[bu] 2-\f[CR]muse\f[R] (Muse)-.IP \[bu] 2-\f[CR]native\f[R] (native Haskell)-.IP \[bu] 2-\f[CR]odt\f[R] (OpenOffice text document)-.IP \[bu] 2-\f[CR]opml\f[R] (OPML)-.IP \[bu] 2-\f[CR]opendocument\f[R] (OpenDocument)-.IP \[bu] 2-\f[CR]org\f[R] (Emacs Org mode)-.IP \[bu] 2-\f[CR]pdf\f[R] (PDF)-.IP \[bu] 2-\f[CR]plain\f[R] (plain text)-.IP \[bu] 2-\f[CR]pptx\f[R] (PowerPoint slide show)-.IP \[bu] 2-\f[CR]rst\f[R] (reStructuredText)-.IP \[bu] 2-\f[CR]rtf\f[R] (Rich Text Format)-.IP \[bu] 2-\f[CR]texinfo\f[R] (GNU Texinfo)-.IP \[bu] 2-\f[CR]textile\f[R] (Textile)-.IP \[bu] 2-\f[CR]slideous\f[R] (Slideous HTML and JavaScript slide show)-.IP \[bu] 2-\f[CR]slidy\f[R] (Slidy HTML and JavaScript slide show)-.IP \[bu] 2-\f[CR]dzslides\f[R] (DZSlides HTML5 + JavaScript slide show)-.IP \[bu] 2-\f[CR]revealjs\f[R] (reveal.js HTML5 + JavaScript slide show)-.IP \[bu] 2-\f[CR]s5\f[R] (S5 HTML and JavaScript slide show)-.IP \[bu] 2-\f[CR]tei\f[R] (TEI Simple)-.IP \[bu] 2-\f[CR]typst\f[R] (typst)-.IP \[bu] 2-\f[CR]xwiki\f[R] (XWiki markup)-.IP \[bu] 2-\f[CR]zimwiki\f[R] (ZimWiki markup)-.IP \[bu] 2-the path of a custom Lua writer, see Custom readers and writers below-.PP-Note that \f[CR]odt\f[R], \f[CR]docx\f[R], \f[CR]epub\f[R], and-\f[CR]pdf\f[R] output will not be directed to \f[I]stdout\f[R] unless-forced with \f[CR]-o -\f[R].-.PP-Extensions can be individually enabled or disabled by appending-\f[CR]+EXTENSION\f[R] or \f[CR]-EXTENSION\f[R] to the format name.-See Extensions below, for a list of extensions and their names.-See \f[CR]--list-output-formats\f[R] and \f[CR]--list-extensions\f[R],-below.-.RE-.TP-\f[CR]-o\f[R] \f[I]FILE\f[R], \f[CR]--output=\f[R]\f[I]FILE\f[R]-Write output to \f[I]FILE\f[R] instead of \f[I]stdout\f[R].-If \f[I]FILE\f[R] is \f[CR]-\f[R], output will go to \f[I]stdout\f[R],-even if a non-textual format (\f[CR]docx\f[R], \f[CR]odt\f[R],-\f[CR]epub2\f[R], \f[CR]epub3\f[R]) is specified.-If the output format is \f[CR]chunkedhtml\f[R] and \f[I]FILE\f[R] has no-extension, then instead of producing a \f[CR].zip\f[R] file pandoc will-create a directory \f[I]FILE\f[R] and unpack the zip archive there-(unless \f[I]FILE\f[R] already exists, in which case an error will be-raised).-.TP-\f[CR]--data-dir=\f[R]\f[I]DIRECTORY\f[R]-Specify the user data directory to search for pandoc data files.-If this option is not specified, the default user data directory will be-used.-On *nix and macOS systems this will be the \f[CR]pandoc\f[R]-subdirectory of the XDG data directory (by default,-\f[CR]$HOME/.local/share\f[R], overridable by setting the-\f[CR]XDG_DATA_HOME\f[R] environment variable).-If that directory does not exist and \f[CR]$HOME/.pandoc\f[R] exists, it-will be used (for backwards compatibility).-On Windows the default user data directory is-\f[CR]%APPDATA%\[rs]pandoc\f[R].-You can find the default user data directory on your system by looking-at the output of \f[CR]pandoc --version\f[R].-Data files placed in this directory (for example,-\f[CR]reference.odt\f[R], \f[CR]reference.docx\f[R],-\f[CR]epub.css\f[R], \f[CR]templates\f[R]) will override pandoc\[cq]s-normal defaults.-(Note that the user data directory is not created by pandoc, so you will-need to create it yourself if you want to make use of it.)-.TP-\f[CR]-d\f[R] \f[I]FILE\f[R], \f[CR]--defaults=\f[R]\f[I]FILE\f[R]-Specify a set of default option settings.-\f[I]FILE\f[R] is a YAML file whose fields correspond to command-line-option settings.-All options for document conversion, including input and output files,-can be set using a defaults file.-The file will be searched for first in the working directory, and then-in the \f[CR]defaults\f[R] subdirectory of the user data directory (see-\f[CR]--data-dir\f[R]).-The \f[CR].yaml\f[R] extension may be omitted.-See the section Defaults files for more information on the file format.-Settings from the defaults file may be overridden or extended by-subsequent options on the command line.-.TP-\f[CR]--bash-completion\f[R]-Generate a bash completion script.-To enable bash completion with pandoc, add this to your-\f[CR].bashrc\f[R]:-.RS-.IP-.EX-eval \[dq]$(pandoc --bash-completion)\[dq]-.EE-.RE-.TP-\f[CR]--verbose\f[R]-Give verbose debugging output.-.TP-\f[CR]--quiet\f[R]-Suppress warning messages.-.TP-\f[CR]--fail-if-warnings[=true|false]\f[R]-Exit with error status if there are any warnings.-.TP-\f[CR]--log=\f[R]\f[I]FILE\f[R]-Write log messages in machine-readable JSON format to \f[I]FILE\f[R].-All messages above DEBUG level will be written, regardless of verbosity-settings (\f[CR]--verbose\f[R], \f[CR]--quiet\f[R]).-.TP-\f[CR]--list-input-formats\f[R]-List supported input formats, one per line.-.TP-\f[CR]--list-output-formats\f[R]-List supported output formats, one per line.-.TP-\f[CR]--list-extensions\f[R][\f[CR]=\f[R]\f[I]FORMAT\f[R]]-List supported extensions for \f[I]FORMAT\f[R], one per line, preceded-by a \f[CR]+\f[R] or \f[CR]-\f[R] indicating whether it is enabled by-default in \f[I]FORMAT\f[R].-If \f[I]FORMAT\f[R] is not specified, defaults for pandoc\[cq]s Markdown-are given.-.TP-\f[CR]--list-highlight-languages\f[R]-List supported languages for syntax highlighting, one per line.-.TP-\f[CR]--list-highlight-styles\f[R]-List supported styles for syntax highlighting, one per line.-See \f[CR]--highlight-style\f[R].-.TP-\f[CR]-v\f[R], \f[CR]--version\f[R]-Print version.-.TP-\f[CR]-h\f[R], \f[CR]--help\f[R]-Show usage message.-.SS Reader options-.TP-\f[CR]--shift-heading-level-by=\f[R]\f[I]NUMBER\f[R]-Shift heading levels by a positive or negative integer.-For example, with \f[CR]--shift-heading-level-by=-1\f[R], level 2-headings become level 1 headings, and level 3 headings become level 2-headings.-Headings cannot have a level less than 1, so a heading that would be-shifted below level 1 becomes a regular paragraph.-Exception: with a shift of -N, a level-N heading at the beginning of the-document replaces the metadata title.-\f[CR]--shift-heading-level-by=-1\f[R] is a good choice when converting-HTML or Markdown documents that use an initial level-1 heading for the-document title and level-2+ headings for sections.-\f[CR]--shift-heading-level-by=1\f[R] may be a good choice for-converting Markdown documents that use level-1 headings for sections to-HTML, since pandoc uses a level-1 heading to render the document title.-.TP-\f[CR]--base-header-level=\f[R]\f[I]NUMBER\f[R]-\f[I]Deprecated.-Use \f[CI]--shift-heading-level-by\f[I]=X instead, where X = NUMBER --1.\f[R] Specify the base level for headings (defaults to 1).-.TP-\f[CR]--indented-code-classes=\f[R]\f[I]CLASSES\f[R]-Specify classes to use for indented code blocks\[en]for example,-\f[CR]perl,numberLines\f[R] or \f[CR]haskell\f[R].-Multiple classes may be separated by spaces or commas.-.TP-\f[CR]--default-image-extension=\f[R]\f[I]EXTENSION\f[R]-Specify a default extension to use when image paths/URLs have no-extension.-This allows you to use the same source for formats that require-different kinds of images.-Currently this option only affects the Markdown and LaTeX readers.-.TP-\f[CR]--file-scope[=true|false]\f[R]-Parse each file individually before combining for multifile documents.-This will allow footnotes in different files with the same identifiers-to work as expected.-If this option is set, footnotes and links will not work across files.-Reading binary files (docx, odt, epub) implies \f[CR]--file-scope\f[R].-.RS-.PP-If two or more files are processed using \f[CR]--file-scope\f[R],-prefixes based on the filenames will be added to identifiers in order to-disambiguate them, and internal links will be adjusted accordingly.-For example, a header with identifier \f[CR]foo\f[R] in-\f[CR]subdir/file1.txt\f[R] will have its identifier changed to-\f[CR]subdir__file1.txt__foo\f[R].-.PP-In addition, a Div with an identifier based on the filename will be-added around the file\[cq]s content, so that internal links to the-filename will point to this Div\[cq]s identifier.-.RE-.TP-\f[CR]-F\f[R] \f[I]PROGRAM\f[R], \f[CR]--filter=\f[R]\f[I]PROGRAM\f[R]-Specify an executable to be used as a filter transforming the pandoc AST-after the input is parsed and before the output is written.-The executable should read JSON from stdin and write JSON to stdout.-The JSON must be formatted like pandoc\[cq]s own JSON input and output.-The name of the output format will be passed to the filter as the first-argument.-Hence,-.RS-.IP-.EX-pandoc --filter ./caps.py -t latex-.EE-.PP-is equivalent to-.IP-.EX-pandoc -t json | ./caps.py latex | pandoc -f json -t latex-.EE-.PP-The latter form may be useful for debugging filters.-.PP-Filters may be written in any language.-\f[CR]Text.Pandoc.JSON\f[R] exports \f[CR]toJSONFilter\f[R] to-facilitate writing filters in Haskell.-Those who would prefer to write filters in python can use the module-\f[CR]pandocfilters\f[R], installable from PyPI.-There are also pandoc filter libraries in PHP, perl, and-JavaScript/node.js.-.PP-In order of preference, pandoc will look for filters in-.IP "1." 3-a specified full or relative path (executable or non-executable),-.IP "2." 3-\f[CR]$DATADIR/filters\f[R] (executable or non-executable) where-\f[CR]$DATADIR\f[R] is the user data directory (see-\f[CR]--data-dir\f[R], above),-.IP "3." 3-\f[CR]$PATH\f[R] (executable only).-.PP-Filters, Lua-filters, and citeproc processing are applied in the order-specified on the command line.-.RE-.TP-\f[CR]-L\f[R] \f[I]SCRIPT\f[R], \f[CR]--lua-filter=\f[R]\f[I]SCRIPT\f[R]-Transform the document in a similar fashion as JSON filters (see-\f[CR]--filter\f[R]), but use pandoc\[cq]s built-in Lua filtering-system.-The given Lua script is expected to return a list of Lua filters which-will be applied in order.-Each Lua filter must contain element-transforming functions indexed by-the name of the AST element on which the filter function should be-applied.-.RS-.PP-The \f[CR]pandoc\f[R] Lua module provides helper functions for element-creation.-It is always loaded into the script\[cq]s Lua environment.-.PP-See the Lua filters documentation for further details.-.PP-In order of preference, pandoc will look for Lua filters in-.IP "1." 3-a specified full or relative path,-.IP "2." 3-\f[CR]$DATADIR/filters\f[R] where \f[CR]$DATADIR\f[R] is the user data-directory (see \f[CR]--data-dir\f[R], above).-.PP-Filters, Lua filters, and citeproc processing are applied in the order-specified on the command line.-.RE-.TP-\f[CR]-M\f[R] \f[I]KEY\f[R][\f[CR]=\f[R]\f[I]VAL\f[R]], \f[CR]--metadata=\f[R]\f[I]KEY\f[R][\f[CR]:\f[R]\f[I]VAL\f[R]]-Set the metadata field \f[I]KEY\f[R] to the value \f[I]VAL\f[R].-A value specified on the command line overrides a value specified in the-document using YAML metadata blocks.-Values will be parsed as YAML boolean or string values.-If no value is specified, the value will be treated as Boolean true.-Like \f[CR]--variable\f[R], \f[CR]--metadata\f[R] causes template-variables to be set.-But unlike \f[CR]--variable\f[R], \f[CR]--metadata\f[R] affects the-metadata of the underlying document (which is accessible from filters-and may be printed in some output formats) and metadata values will be-escaped when inserted into the template.-.TP-\f[CR]--metadata-file=\f[R]\f[I]FILE\f[R]-Read metadata from the supplied YAML (or JSON) file.-This option can be used with every input format, but string scalars in-the metadata file will always be parsed as Markdown.-(If the input format is Markdown or a Markdown variant, then the same-variant will be used to parse the metadata file; if it is a non-Markdown-format, pandoc\[cq]s default Markdown extensions will be used.)-This option can be used repeatedly to include multiple metadata files;-values in files specified later on the command line will be preferred-over those specified in earlier files.-Metadata values specified inside the document, or by using-\f[CR]-M\f[R], overwrite values specified with this option.-The file will be searched for first in the working directory, and then-in the \f[CR]metadata\f[R] subdirectory of the user data directory (see-\f[CR]--data-dir\f[R]).-.TP-\f[CR]-p\f[R], \f[CR]--preserve-tabs[=true|false]\f[R]-Preserve tabs instead of converting them to spaces.-(By default, pandoc converts tabs to spaces before parsing its input.)-Note that this will only affect tabs in literal code spans and code-blocks.-Tabs in regular text are always treated as spaces.-.TP-\f[CR]--tab-stop=\f[R]\f[I]NUMBER\f[R]-Specify the number of spaces per tab (default is 4).-.TP-\f[CR]--track-changes=accept\f[R]|\f[CR]reject\f[R]|\f[CR]all\f[R]-Specifies what to do with insertions, deletions, and comments produced-by the MS Word \[lq]Track Changes\[rq] feature.-\f[CR]accept\f[R] (the default) processes all the insertions and-deletions.-\f[CR]reject\f[R] ignores them.-Both \f[CR]accept\f[R] and \f[CR]reject\f[R] ignore comments.-\f[CR]all\f[R] includes all insertions, deletions, and comments, wrapped-in spans with \f[CR]insertion\f[R], \f[CR]deletion\f[R],-\f[CR]comment-start\f[R], and \f[CR]comment-end\f[R] classes,-respectively.-The author and time of change is included.-\f[CR]all\f[R] is useful for scripting: only accepting changes from a-certain reviewer, say, or before a certain date.-If a paragraph is inserted or deleted, \f[CR]track-changes=all\f[R]-produces a span with the class-\f[CR]paragraph-insertion\f[R]/\f[CR]paragraph-deletion\f[R] before the-affected paragraph break.-This option only affects the docx reader.-.TP-\f[CR]--extract-media=\f[R]\f[I]DIR\f[R]-Extract images and other media contained in or linked from the source-document to the path \f[I]DIR\f[R], creating it if necessary, and adjust-the images references in the document so they point to the extracted-files.-Media are downloaded, read from the file system, or extracted from a-binary container (e.g.\ docx), as needed.-The original file paths are used if they are relative paths not-containing \f[CR]..\f[R].-Otherwise filenames are constructed from the SHA1 hash of the contents.-.TP-\f[CR]--abbreviations=\f[R]\f[I]FILE\f[R]-Specifies a custom abbreviations file, with abbreviations one to a line.-If this option is not specified, pandoc will read the data file-\f[CR]abbreviations\f[R] from the user data directory or fall back on a-system default.-To see the system default, use-\f[CR]pandoc --print-default-data-file=abbreviations\f[R].-The only use pandoc makes of this list is in the Markdown reader.-Strings found in this list will be followed by a nonbreaking space, and-the period will not produce sentence-ending space in formats like LaTeX.-The strings may not contain spaces.-.TP-\f[CR]--trace[=true|false]\f[R]-Print diagnostic output tracing parser progress to stderr.-This option is intended for use by developers in diagnosing performance-issues.-.SS General writer options-.TP-\f[CR]-s\f[R], \f[CR]--standalone\f[R]-Produce output with an appropriate header and footer (e.g.\ a standalone-HTML, LaTeX, TEI, or RTF file, not a fragment).-This option is set automatically for \f[CR]pdf\f[R], \f[CR]epub\f[R],-\f[CR]epub3\f[R], \f[CR]fb2\f[R], \f[CR]docx\f[R], and \f[CR]odt\f[R]-output.-For \f[CR]native\f[R] output, this option causes metadata to be-included; otherwise, metadata is suppressed.-.TP-\f[CR]--template=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R]-Use the specified file as a custom template for the generated document.-Implies \f[CR]--standalone\f[R].-See Templates, below, for a description of template syntax.-If no extension is specified, an extension corresponding to the writer-will be added, so that \f[CR]--template=special\f[R] looks for-\f[CR]special.html\f[R] for HTML output.-If the template is not found, pandoc will search for it in the-\f[CR]templates\f[R] subdirectory of the user data directory (see-\f[CR]--data-dir\f[R]).-If this option is not used, a default template appropriate for the-output format will be used (see \f[CR]-D/--print-default-template\f[R]).-.TP-\f[CR]-V\f[R] \f[I]KEY\f[R][\f[CR]=\f[R]\f[I]VAL\f[R]], \f[CR]--variable=\f[R]\f[I]KEY\f[R][\f[CR]:\f[R]\f[I]VAL\f[R]]-Set the template variable \f[I]KEY\f[R] to the value \f[I]VAL\f[R] when-rendering the document in standalone mode.-If no \f[I]VAL\f[R] is specified, the key will be given the value-\f[CR]true\f[R].-.TP-\f[CR]--sandbox[=true|false]\f[R]-Run pandoc in a sandbox, limiting IO operations in readers and writers-to reading the files specified on the command line.-Note that this option does not limit IO operations by filters or in the-production of PDF documents.-But it does offer security against, for example, disclosure of files-through the use of \f[CR]include\f[R] directives.-Anyone using pandoc on untrusted user input should use this option.-.RS-.PP-Note: some readers and writers (e.g., \f[CR]docx\f[R]) need access to-data files.-If these are stored on the file system, then pandoc will not be able to-find them when run in \f[CR]--sandbox\f[R] mode and will raise an error.-For these applications, we recommend using a pandoc binary compiled with-the \f[CR]embed_data_files\f[R] option, which causes the data files to-be baked into the binary instead of being stored on the file system.-.RE-.TP-\f[CR]-D\f[R] \f[I]FORMAT\f[R], \f[CR]--print-default-template=\f[R]\f[I]FORMAT\f[R]-Print the system default template for an output \f[I]FORMAT\f[R].-(See \f[CR]-t\f[R] for a list of possible \f[I]FORMAT\f[R]s.)-Templates in the user data directory are ignored.-This option may be used with \f[CR]-o\f[R]/\f[CR]--output\f[R] to-redirect output to a file, but \f[CR]-o\f[R]/\f[CR]--output\f[R] must-come before \f[CR]--print-default-template\f[R] on the command line.-.RS-.PP-Note that some of the default templates use partials, for example-\f[CR]styles.html\f[R].-To print the partials, use \f[CR]--print-default-data-file\f[R]: for-example, \f[CR]--print-default-data-file=templates/styles.html\f[R].-.RE-.TP-\f[CR]--print-default-data-file=\f[R]\f[I]FILE\f[R]-Print a system default data file.-Files in the user data directory are ignored.-This option may be used with \f[CR]-o\f[R]/\f[CR]--output\f[R] to-redirect output to a file, but \f[CR]-o\f[R]/\f[CR]--output\f[R] must-come before \f[CR]--print-default-data-file\f[R] on the command line.-.TP-\f[CR]--eol=crlf\f[R]|\f[CR]lf\f[R]|\f[CR]native\f[R]-Manually specify line endings: \f[CR]crlf\f[R] (Windows), \f[CR]lf\f[R]-(macOS/Linux/UNIX), or \f[CR]native\f[R] (line endings appropriate to-the OS on which pandoc is being run).-The default is \f[CR]native\f[R].-.TP-\f[CR]--dpi\f[R]=\f[I]NUMBER\f[R]-Specify the default dpi (dots per inch) value for conversion from pixels-to inch/centimeters and vice versa.-(Technically, the correct term would be ppi: pixels per inch.)-The default is 96dpi.-When images contain information about dpi internally, the encoded value-is used instead of the default specified by this option.-.TP-\f[CR]--wrap=auto\f[R]|\f[CR]none\f[R]|\f[CR]preserve\f[R]-Determine how text is wrapped in the output (the source code, not the-rendered version).-With \f[CR]auto\f[R] (the default), pandoc will attempt to wrap lines to-the column width specified by \f[CR]--columns\f[R] (default 72).-With \f[CR]none\f[R], pandoc will not wrap lines at all.-With \f[CR]preserve\f[R], pandoc will attempt to preserve the wrapping-from the source document (that is, where there are nonsemantic newlines-in the source, there will be nonsemantic newlines in the output as-well).-In \f[CR]ipynb\f[R] output, this option affects wrapping of the contents-of markdown cells.-.TP-\f[CR]--columns=\f[R]\f[I]NUMBER\f[R]-Specify length of lines in characters.-This affects text wrapping in the generated source code (see-\f[CR]--wrap\f[R]).-It also affects calculation of column widths for plain text tables (see-Tables below).-.TP-\f[CR]--toc[=true|false]\f[R], \f[CR]--table-of-contents[=true|false]\f[R]-Include an automatically generated table of contents (or, in the case of-\f[CR]latex\f[R], \f[CR]context\f[R], \f[CR]docx\f[R], \f[CR]odt\f[R],-\f[CR]opendocument\f[R], \f[CR]rst\f[R], or \f[CR]ms\f[R], an-instruction to create one) in the output document.-This option has no effect unless \f[CR]-s/--standalone\f[R] is used, and-it has no effect on \f[CR]man\f[R], \f[CR]docbook4\f[R],-\f[CR]docbook5\f[R], or \f[CR]jats\f[R] output.-.RS-.PP-Note that if you are producing a PDF via \f[CR]ms\f[R], the table of-contents will appear at the beginning of the document, before the title.-If you would prefer it to be at the end of the document, use the option-\f[CR]--pdf-engine-opt=--no-toc-relocation\f[R].-.RE-.TP-\f[CR]--toc-depth=\f[R]\f[I]NUMBER\f[R]-Specify the number of section levels to include in the table of-contents.-The default is 3 (which means that level-1, 2, and 3 headings will be-listed in the contents).-.TP-\f[CR]--strip-comments[=true|false]\f[R]-Strip out HTML comments in the Markdown or Textile source, rather than-passing them on to Markdown, Textile or HTML output as raw HTML.-This does not apply to HTML comments inside raw HTML blocks when the-\f[CR]markdown_in_html_blocks\f[R] extension is not set.-.TP-\f[CR]--no-highlight\f[R]-Disables syntax highlighting for code blocks and inlines, even when a-language attribute is given.-.TP-\f[CR]--highlight-style=\f[R]\f[I]STYLE\f[R]|\f[I]FILE\f[R]-Specifies the coloring style to be used in highlighted source code.-Options are \f[CR]pygments\f[R] (the default), \f[CR]kate\f[R],-\f[CR]monochrome\f[R], \f[CR]breezeDark\f[R], \f[CR]espresso\f[R],-\f[CR]zenburn\f[R], \f[CR]haddock\f[R], and \f[CR]tango\f[R].-For more information on syntax highlighting in pandoc, see Syntax-highlighting, below.-See also \f[CR]--list-highlight-styles\f[R].-.RS-.PP-Instead of a \f[I]STYLE\f[R] name, a JSON file with extension-\f[CR].theme\f[R] may be supplied.-This will be parsed as a KDE syntax highlighting theme and (if valid)-used as the highlighting style.-.PP-To generate the JSON version of an existing style, use-\f[CR]--print-highlight-style\f[R].-.RE-.TP-\f[CR]--print-highlight-style=\f[R]\f[I]STYLE\f[R]|\f[I]FILE\f[R]-Prints a JSON version of a highlighting style, which can be modified,-saved with a \f[CR].theme\f[R] extension, and used with-\f[CR]--highlight-style\f[R].-This option may be used with \f[CR]-o\f[R]/\f[CR]--output\f[R] to-redirect output to a file, but \f[CR]-o\f[R]/\f[CR]--output\f[R] must-come before \f[CR]--print-highlight-style\f[R] on the command line.-.TP-\f[CR]--syntax-definition=\f[R]\f[I]FILE\f[R]-Instructs pandoc to load a KDE XML syntax definition file, which will be-used for syntax highlighting of appropriately marked code blocks.-This can be used to add support for new languages or to use altered-syntax definitions for existing languages.-This option may be repeated to add multiple syntax definitions.-.TP-\f[CR]-H\f[R] \f[I]FILE\f[R], \f[CR]--include-in-header=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R]-Include contents of \f[I]FILE\f[R], verbatim, at the end of the header.-This can be used, for example, to include special CSS or JavaScript in-HTML documents.-This option can be used repeatedly to include multiple files in the-header.-They will be included in the order specified.-Implies \f[CR]--standalone\f[R].-.TP-\f[CR]-B\f[R] \f[I]FILE\f[R], \f[CR]--include-before-body=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R]-Include contents of \f[I]FILE\f[R], verbatim, at the beginning of the-document body (e.g.\ after the \f[CR]<body>\f[R] tag in HTML, or the-\f[CR]\[rs]begin{document}\f[R] command in LaTeX).-This can be used to include navigation bars or banners in HTML-documents.-This option can be used repeatedly to include multiple files.-They will be included in the order specified.-Implies \f[CR]--standalone\f[R].-.TP-\f[CR]-A\f[R] \f[I]FILE\f[R], \f[CR]--include-after-body=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R]-Include contents of \f[I]FILE\f[R], verbatim, at the end of the document-body (before the \f[CR]</body>\f[R] tag in HTML, or the-\f[CR]\[rs]end{document}\f[R] command in LaTeX).-This option can be used repeatedly to include multiple files.-They will be included in the order specified.-Implies \f[CR]--standalone\f[R].-.TP-\f[CR]--resource-path=\f[R]\f[I]SEARCHPATH\f[R]-List of paths to search for images and other resources.-The paths should be separated by \f[CR]:\f[R] on Linux, UNIX, and macOS-systems, and by \f[CR];\f[R] on Windows.-If \f[CR]--resource-path\f[R] is not specified, the default resource-path is the working directory.-Note that, if \f[CR]--resource-path\f[R] is specified, the working-directory must be explicitly listed or it will not be searched.-For example: \f[CR]--resource-path=.:test\f[R] will search the working-directory and the \f[CR]test\f[R] subdirectory, in that order.-This option can be used repeatedly.-Search path components that come later on the command line will be-searched before those that come earlier, so-\f[CR]--resource-path foo:bar --resource-path baz:bim\f[R] is equivalent-to \f[CR]--resource-path baz:bim:foo:bar\f[R].-.TP-\f[CR]--request-header=\f[R]\f[I]NAME\f[R]\f[CR]:\f[R]\f[I]VAL\f[R]-Set the request header \f[I]NAME\f[R] to the value \f[I]VAL\f[R] when-making HTTP requests (for example, when a URL is given on the command-line, or when resources used in a document must be downloaded).-If you\[cq]re behind a proxy, you also need to set the environment-variable \f[CR]http_proxy\f[R] to \f[CR]http://...\f[R].-.TP-\f[CR]--no-check-certificate[=true|false]\f[R]-Disable the certificate verification to allow access to unsecure HTTP-resources (for example when the certificate is no longer valid or self-signed).-.SS Options affecting specific writers-.TP-\f[CR]--self-contained[=true|false]\f[R]-\f[I]Deprecated synonym for-\f[CI]--embed-resources --standalone\f[I].\f[R]-.TP-\f[CR]--embed-resources[=true|false]\f[R]-Produce a standalone HTML file with no external dependencies, using-\f[CR]data:\f[R] URIs to incorporate the contents of linked scripts,-stylesheets, images, and videos.-The resulting file should be \[lq]self-contained,\[rq] in the sense that-it needs no external files and no net access to be displayed properly by-a browser.-This option works only with HTML output formats, including-\f[CR]html4\f[R], \f[CR]html5\f[R], \f[CR]html+lhs\f[R],-\f[CR]html5+lhs\f[R], \f[CR]s5\f[R], \f[CR]slidy\f[R],-\f[CR]slideous\f[R], \f[CR]dzslides\f[R], and \f[CR]revealjs\f[R].-Scripts, images, and stylesheets at absolute URLs will be downloaded;-those at relative URLs will be sought relative to the working directory-(if the first source file is local) or relative to the base URL (if the-first source file is remote).-Elements with the attribute \f[CR]data-external=\[dq]1\[dq]\f[R] will be-left alone; the documents they link to will not be incorporated in the-document.-Limitation: resources that are loaded dynamically through JavaScript-cannot be incorporated; as a result, fonts may be missing when-\f[CR]--mathjax\f[R] is used, and some advanced features (e.g.\ zoom or-speaker notes) may not work in an offline \[lq]self-contained\[rq]-\f[CR]reveal.js\f[R] slide show.-.TP-\f[CR]--html-q-tags[=true|false]\f[R]-Use \f[CR]<q>\f[R] tags for quotes in HTML.-(This option only has an effect if the \f[CR]smart\f[R] extension is-enabled for the input format used.)-.TP-\f[CR]--ascii[=true|false]\f[R]-Use only ASCII characters in output.-Currently supported for XML and HTML formats (which use entities instead-of UTF-8 when this option is selected), CommonMark, gfm, and Markdown-(which use entities), roff man and ms (which use hexadecimal escapes),-and to a limited degree LaTeX (which uses standard commands for accented-characters when possible).-.TP-\f[CR]--reference-links[=true|false]\f[R]-Use reference-style links, rather than inline links, in writing Markdown-or reStructuredText.-By default inline links are used.-The placement of link references is affected by the-\f[CR]--reference-location\f[R] option.-.TP-\f[CR]--reference-location=block\f[R]|\f[CR]section\f[R]|\f[CR]document\f[R]-Specify whether footnotes (and references, if \f[CR]reference-links\f[R]-is set) are placed at the end of the current (top-level) block, the-current section, or the document.-The default is \f[CR]document\f[R].-Currently this option only affects the \f[CR]markdown\f[R],-\f[CR]muse\f[R], \f[CR]html\f[R], \f[CR]epub\f[R], \f[CR]slidy\f[R],-\f[CR]s5\f[R], \f[CR]slideous\f[R], \f[CR]dzslides\f[R], and-\f[CR]revealjs\f[R] writers.-In slide formats, specifying \f[CR]--reference-location=section\f[R]-will cause notes to be rendered at the bottom of a slide.-.TP-\f[CR]--markdown-headings=setext\f[R]|\f[CR]atx\f[R]-Specify whether to use ATX-style (\f[CR]#\f[R]-prefixed) or Setext-style-(underlined) headings for level 1 and 2 headings in Markdown output.-(The default is \f[CR]atx\f[R].)-ATX-style headings are always used for levels 3+.-This option also affects Markdown cells in \f[CR]ipynb\f[R] output.-.TP-\f[CR]--list-tables[=true|false]\f[R]-Render tables as list tables in RST output.-.TP-\f[CR]--top-level-division=default\f[R]|\f[CR]section\f[R]|\f[CR]chapter\f[R]|\f[CR]part\f[R]-Treat top-level headings as the given division type in LaTeX, ConTeXt,-DocBook, and TEI output.-The hierarchy order is part, chapter, then section; all headings are-shifted such that the top-level heading becomes the specified type.-The default behavior is to determine the best division type via-heuristics: unless other conditions apply, \f[CR]section\f[R] is chosen.-When the \f[CR]documentclass\f[R] variable is set to \f[CR]report\f[R],-\f[CR]book\f[R], or \f[CR]memoir\f[R] (unless the \f[CR]article\f[R]-option is specified), \f[CR]chapter\f[R] is implied as the setting for-this option.-If \f[CR]beamer\f[R] is the output format, specifying either-\f[CR]chapter\f[R] or \f[CR]part\f[R] will cause top-level headings to-become \f[CR]\[rs]part{..}\f[R], while second-level headings remain as-their default type.-.TP-\f[CR]-N\f[R], \f[CR]--number-sections\f[R]-Number section headings in LaTeX, ConTeXt, HTML, Docx, ms, or EPUB-output.-By default, sections are not numbered.-Sections with class \f[CR]unnumbered\f[R] will never be numbered, even-if \f[CR]--number-sections\f[R] is specified.-.TP-\f[CR]--number-offset=\f[R]\f[I]NUMBER\f[R][\f[CR],\f[R]\f[I]NUMBER\f[R]\f[CR],\f[R]\f[I]\&...\f[R]]-Offset for section headings in HTML output (ignored in other output-formats).-The first number is added to the section number for top-level headings,-the second for second-level headings, and so on.-So, for example, if you want the first top-level heading in your-document to be numbered \[lq]6\[rq], specify-\f[CR]--number-offset=5\f[R].-If your document starts with a level-2 heading which you want to be-numbered \[lq]1.5\[rq], specify \f[CR]--number-offset=1,4\f[R].-Offsets are 0 by default.-Implies \f[CR]--number-sections\f[R].-.TP-\f[CR]--listings[=true|false]\f[R]-Use the \f[CR]listings\f[R] package for LaTeX code blocks.-The package does not support multi-byte encoding for source code.-To handle UTF-8 you would need to use a custom template.-This issue is fully documented here: Encoding issue with the listings-package.-.TP-\f[CR]-i\f[R], \f[CR]--incremental[=true|false]\f[R]-Make list items in slide shows display incrementally (one by one).-The default is for lists to be displayed all at once.-.TP-\f[CR]--slide-level=\f[R]\f[I]NUMBER\f[R]-Specifies that headings with the specified level create slides (for-\f[CR]beamer\f[R], \f[CR]s5\f[R], \f[CR]slidy\f[R], \f[CR]slideous\f[R],-\f[CR]dzslides\f[R]).-Headings above this level in the hierarchy are used to divide the slide-show into sections; headings below this level create subheads within a-slide.-Valid values are 0-6.-If a slide level of 0 is specified, slides will not be split-automatically on headings, and horizontal rules must be used to indicate-slide boundaries.-If a slide level is not specified explicitly, the slide level will be-set automatically based on the contents of the document; see Structuring-the slide show.-.TP-\f[CR]--section-divs[=true|false]\f[R]-Wrap sections in \f[CR]<section>\f[R] tags (or \f[CR]<div>\f[R] tags for-\f[CR]html4\f[R]), and attach identifiers to the enclosing-\f[CR]<section>\f[R] (or \f[CR]<div>\f[R]) rather than the heading-itself (see Heading identifiers, below).-This option only affects HTML output (and does not affect HTML slide-formats).-.TP-\f[CR]--email-obfuscation=none\f[R]|\f[CR]javascript\f[R]|\f[CR]references\f[R]-Specify a method for obfuscating \f[CR]mailto:\f[R] links in HTML-documents.-\f[CR]none\f[R] leaves \f[CR]mailto:\f[R] links as they are.-\f[CR]javascript\f[R] obfuscates them using JavaScript.-\f[CR]references\f[R] obfuscates them by printing their letters as-decimal or hexadecimal character references.-The default is \f[CR]none\f[R].-.TP-\f[CR]--id-prefix=\f[R]\f[I]STRING\f[R]-Specify a prefix to be added to all identifiers and internal links in-HTML and DocBook output, and to footnote numbers in Markdown and Haddock-output.-This is useful for preventing duplicate identifiers when generating-fragments to be included in other pages.-.TP-\f[CR]-T\f[R] \f[I]STRING\f[R], \f[CR]--title-prefix=\f[R]\f[I]STRING\f[R]-Specify \f[I]STRING\f[R] as a prefix at the beginning of the title that-appears in the HTML header (but not in the title as it appears at the-beginning of the HTML body).-Implies \f[CR]--standalone\f[R].-.TP-\f[CR]-c\f[R] \f[I]URL\f[R], \f[CR]--css=\f[R]\f[I]URL\f[R]-Link to a CSS style sheet.-This option can be used repeatedly to include multiple files.-They will be included in the order specified.-This option only affects HTML (including HTML slide shows) and EPUB-output.-It should be used together with \f[CR]-s/--standalone\f[R], because the-link to the stylesheet goes in the document header.-.RS-.PP-A stylesheet is required for generating EPUB.-If none is provided using this option (or the \f[CR]css\f[R] or-\f[CR]stylesheet\f[R] metadata fields), pandoc will look for a file-\f[CR]epub.css\f[R] in the user data directory (see-\f[CR]--data-dir\f[R]).-If it is not found there, sensible defaults will be used.-.RE-.TP-\f[CR]--reference-doc=\f[R]\f[I]FILE\f[R]|\f[I]URL\f[R]-Use the specified file as a style reference in producing a docx or ODT-file.-.RS-.TP-Docx-For best results, the reference docx should be a modified version of a-docx file produced using pandoc.-The contents of the reference docx are ignored, but its stylesheets and-document properties (including margins, page size, header, and footer)-are used in the new docx.-If no reference docx is specified on the command line, pandoc will look-for a file \f[CR]reference.docx\f[R] in the user data directory (see-\f[CR]--data-dir\f[R]).-If this is not found either, sensible defaults will be used.-.RS-.PP-To produce a custom \f[CR]reference.docx\f[R], first get a copy of the-default \f[CR]reference.docx\f[R]:-\f[CR]pandoc -o custom-reference.docx --print-default-data-file reference.docx\f[R].-Then open \f[CR]custom-reference.docx\f[R] in Word, modify the styles as-you wish, and save the file.-For best results, do not make changes to this file other than modifying-the styles used by pandoc:-.PP-Paragraph styles:-.IP \[bu] 2-Normal-.IP \[bu] 2-Body Text-.IP \[bu] 2-First Paragraph-.IP \[bu] 2-Compact-.IP \[bu] 2-Title-.IP \[bu] 2-Subtitle-.IP \[bu] 2-Author-.IP \[bu] 2-Date-.IP \[bu] 2-Abstract-.IP \[bu] 2-AbstractTitle-.IP \[bu] 2-Bibliography-.IP \[bu] 2-Heading 1-.IP \[bu] 2-Heading 2-.IP \[bu] 2-Heading 3-.IP \[bu] 2-Heading 4-.IP \[bu] 2-Heading 5-.IP \[bu] 2-Heading 6-.IP \[bu] 2-Heading 7-.IP \[bu] 2-Heading 8-.IP \[bu] 2-Heading 9-.IP \[bu] 2-Block Text-.IP \[bu] 2-Source Code-.IP \[bu] 2-Footnote Text-.IP \[bu] 2-Definition Term-.IP \[bu] 2-Definition-.IP \[bu] 2-Caption-.IP \[bu] 2-Table Caption-.IP \[bu] 2-Image Caption-.IP \[bu] 2-Figure-.IP \[bu] 2-Captioned Figure-.IP \[bu] 2-TOC Heading-.PP-Character styles:-.IP \[bu] 2-Default Paragraph Font-.IP \[bu] 2-Body Text Char-.IP \[bu] 2-Verbatim Char-.IP \[bu] 2-Footnote Reference-.IP \[bu] 2-Hyperlink-.IP \[bu] 2-Section Number-.PP-Table style:-.IP \[bu] 2-Table-.RE-.TP-ODT-For best results, the reference ODT should be a modified version of an-ODT produced using pandoc.-The contents of the reference ODT are ignored, but its stylesheets are-used in the new ODT.-If no reference ODT is specified on the command line, pandoc will look-for a file \f[CR]reference.odt\f[R] in the user data directory (see-\f[CR]--data-dir\f[R]).-If this is not found either, sensible defaults will be used.-.RS-.PP-To produce a custom \f[CR]reference.odt\f[R], first get a copy of the-default \f[CR]reference.odt\f[R]:-\f[CR]pandoc -o custom-reference.odt --print-default-data-file reference.odt\f[R].-Then open \f[CR]custom-reference.odt\f[R] in LibreOffice, modify the-styles as you wish, and save the file.-.RE-.TP-PowerPoint-Templates included with Microsoft PowerPoint 2013 (either with-\f[CR].pptx\f[R] or \f[CR].potx\f[R] extension) are known to work, as-are most templates derived from these.-.RS-.PP-The specific requirement is that the template should contain layouts-with the following names (as seen within PowerPoint):-.IP \[bu] 2-Title Slide-.IP \[bu] 2-Title and Content-.IP \[bu] 2-Section Header-.IP \[bu] 2-Two Content-.IP \[bu] 2-Comparison-.IP \[bu] 2-Content with Caption-.IP \[bu] 2-Blank-.PP-For each name, the first layout found with that name will be used.-If no layout is found with one of the names, pandoc will output a-warning and use the layout with that name from the default reference doc-instead.-(How these layouts are used is described in PowerPoint layout choice.)-.PP-All templates included with a recent version of MS PowerPoint will fit-these criteria.-(You can click on \f[CR]Layout\f[R] under the \f[CR]Home\f[R] menu to-check.)-.PP-You can also modify the default \f[CR]reference.pptx\f[R]: first run-\f[CR]pandoc -o custom-reference.pptx --print-default-data-file reference.pptx\f[R],-and then modify \f[CR]custom-reference.pptx\f[R] in MS PowerPoint-(pandoc will use the layouts with the names listed above).-.RE-.RE-.TP-\f[CR]--split-level=\f[R]\f[I]NUMBER\f[R]-Specify the heading level at which to split an EPUB or chunked HTML-document into separate files.-The default is to split into chapters at level-1 headings.-In the case of EPUB, this option only affects the internal composition-of the EPUB, not the way chapters and sections are displayed to users.-Some readers may be slow if the chapter files are too large, so for-large documents with few level-1 headings, one might want to use a-chapter level of 2 or 3.-For chunked HTML, this option determines how much content goes in each-\[lq]chunk.\[rq]-.TP-\f[CR]--chunk-template=\f[R]\f[I]PATHTEMPLATE\f[R]-Specify a template for the filenames in a \f[CR]chunkedhtml\f[R]-document.-In the template, \f[CR]%n\f[R] will be replaced by the chunk number-(padded with leading 0s to 3 digits), \f[CR]%s\f[R] with the section-number of the chunk, \f[CR]%h\f[R] with the heading text (with-formatting removed), \f[CR]%i\f[R] with the section identifier.-For example, \f[CR]%section-%s-%i.html\f[R] might be resolved to-\f[CR]section-1.1-introduction.html\f[R].-The characters \f[CR]/\f[R] and \f[CR]\[rs]\f[R] are not allowed in-chunk templates and will be ignored.-The default is \f[CR]%s-%i.html\f[R].-.TP-\f[CR]--epub-chapter-level=\f[R]\f[I]NUMBER\f[R]-\f[I]Deprecated synonym for \f[CI]--split-level\f[I].\f[R]-.TP-\f[CR]--epub-cover-image=\f[R]\f[I]FILE\f[R]-Use the specified image as the EPUB cover.-It is recommended that the image be less than 1000px in width and-height.-Note that in a Markdown source document you can also specify-\f[CR]cover-image\f[R] in a YAML metadata block (see EPUB Metadata,-below).-.TP-\f[CR]--epub-title-page=true\f[R]|\f[CR]false\f[R]-Determines whether a the title page is included in the EPUB (default is-\f[CR]true\f[R]).-.TP-\f[CR]--epub-metadata=\f[R]\f[I]FILE\f[R]-Look in the specified XML file for metadata for the EPUB.-The file should contain a series of Dublin Core elements.-For example:-.RS-.IP-.EX- <dc:rights>Creative Commons</dc:rights>- <dc:language>es-AR</dc:language>-.EE-.PP-By default, pandoc will include the following metadata elements:-\f[CR]<dc:title>\f[R] (from the document title), \f[CR]<dc:creator>\f[R]-(from the document authors), \f[CR]<dc:date>\f[R] (from the document-date, which should be in ISO 8601 format), \f[CR]<dc:language>\f[R]-(from the \f[CR]lang\f[R] variable, or, if is not set, the locale), and-\f[CR]<dc:identifier id=\[dq]BookId\[dq]>\f[R] (a randomly generated-UUID).-Any of these may be overridden by elements in the metadata file.-.PP-Note: if the source document is Markdown, a YAML metadata block in the-document can be used instead.-See below under EPUB Metadata.-.RE-.TP-\f[CR]--epub-embed-font=\f[R]\f[I]FILE\f[R]-Embed the specified font in the EPUB.-This option can be repeated to embed multiple fonts.-Wildcards can also be used: for example, \f[CR]DejaVuSans-*.ttf\f[R].-However, if you use wildcards on the command line, be sure to escape-them or put the whole filename in single quotes, to prevent them from-being interpreted by the shell.-To use the embedded fonts, you will need to add declarations like the-following to your CSS (see \f[CR]--css\f[R]):-.RS-.IP-.EX-\[at]font-face {- font-family: DejaVuSans;- font-style: normal;- font-weight: normal;- src:url(\[dq]../fonts/DejaVuSans-Regular.ttf\[dq]);-}-\[at]font-face {- font-family: DejaVuSans;- font-style: normal;- font-weight: bold;- src:url(\[dq]../fonts/DejaVuSans-Bold.ttf\[dq]);-}-\[at]font-face {- font-family: DejaVuSans;- font-style: italic;- font-weight: normal;- src:url(\[dq]../fonts/DejaVuSans-Oblique.ttf\[dq]);-}-\[at]font-face {- font-family: DejaVuSans;- font-style: italic;- font-weight: bold;- src:url(\[dq]../fonts/DejaVuSans-BoldOblique.ttf\[dq]);-}-body { font-family: \[dq]DejaVuSans\[dq]; }-.EE-.RE-.TP-\f[CR]--epub-subdirectory=\f[R]\f[I]DIRNAME\f[R]-Specify the subdirectory in the OCF container that is to hold the-EPUB-specific contents.-The default is \f[CR]EPUB\f[R].-To put the EPUB contents in the top level, use an empty string.-.TP-\f[CR]--ipynb-output=all|none|best\f[R]-Determines how ipynb output cells are treated.-\f[CR]all\f[R] means that all of the data formats included in the-original are preserved.-\f[CR]none\f[R] means that the contents of data cells are omitted.-\f[CR]best\f[R] causes pandoc to try to pick the richest data block in-each output cell that is compatible with the output format.-The default is \f[CR]best\f[R].-.TP-\f[CR]--pdf-engine=\f[R]\f[I]PROGRAM\f[R]-Use the specified engine when producing PDF output.-Valid values are \f[CR]pdflatex\f[R], \f[CR]lualatex\f[R],-\f[CR]xelatex\f[R], \f[CR]latexmk\f[R], \f[CR]tectonic\f[R],-\f[CR]wkhtmltopdf\f[R], \f[CR]weasyprint\f[R], \f[CR]pagedjs-cli\f[R],-\f[CR]prince\f[R], \f[CR]context\f[R], \f[CR]pdfroff\f[R], and-\f[CR]typst\f[R].-If the engine is not in your PATH, the full path of the engine may be-specified here.-If this option is not specified, pandoc uses the following defaults-depending on the output format specified using \f[CR]-t/--to\f[R]:-.RS-.IP \[bu] 2-\f[CR]-t latex\f[R] or none: \f[CR]pdflatex\f[R] (other options:-\f[CR]xelatex\f[R], \f[CR]lualatex\f[R], \f[CR]tectonic\f[R],-\f[CR]latexmk\f[R])-.IP \[bu] 2-\f[CR]-t context\f[R]: \f[CR]context\f[R]-.IP \[bu] 2-\f[CR]-t html\f[R]: \f[CR]wkhtmltopdf\f[R] (other options:-\f[CR]prince\f[R], \f[CR]weasyprint\f[R], \f[CR]pagedjs-cli\f[R]; see-print-css.rocks for a good introduction to PDF generation from HTML/CSS)-.IP \[bu] 2-\f[CR]-t ms\f[R]: \f[CR]pdfroff\f[R]-.IP \[bu] 2-\f[CR]-t typst\f[R]: \f[CR]typst\f[R]-.RE-.TP-\f[CR]--pdf-engine-opt=\f[R]\f[I]STRING\f[R]-Use the given string as a command-line argument to the-\f[CR]pdf-engine\f[R].-For example, to use a persistent directory \f[CR]foo\f[R] for-\f[CR]latexmk\f[R]\[cq]s auxiliary files, use-\f[CR]--pdf-engine-opt=-outdir=foo\f[R].-Note that no check for duplicate options is done.-.SS Citation rendering-.TP-\f[CR]-C\f[R], \f[CR]--citeproc\f[R]-Process the citations in the file, replacing them with rendered-citations and adding a bibliography.-Citation processing will not take place unless bibliographic data is-supplied, either through an external file specified using the-\f[CR]--bibliography\f[R] option or the \f[CR]bibliography\f[R] field in-metadata, or via a \f[CR]references\f[R] section in metadata containing-a list of citations in CSL YAML format with Markdown formatting.-The style is controlled by a CSL stylesheet specified using the-\f[CR]--csl\f[R] option or the \f[CR]csl\f[R] field in metadata.-(If no stylesheet is specified, the \f[CR]chicago-author-date\f[R] style-will be used by default.)-The citation processing transformation may be applied before or after-filters or Lua filters (see \f[CR]--filter\f[R],-\f[CR]--lua-filter\f[R]): these transformations are applied in the order-they appear on the command line.-For more information, see the section on Citations.-.TP-\f[CR]--bibliography=\f[R]\f[I]FILE\f[R]-Set the \f[CR]bibliography\f[R] field in the document\[cq]s metadata to-\f[I]FILE\f[R], overriding any value set in the metadata.-If you supply this argument multiple times, each \f[I]FILE\f[R] will be-added to bibliography.-If \f[I]FILE\f[R] is a URL, it will be fetched via HTTP.-If \f[I]FILE\f[R] is not found relative to the working directory, it-will be sought in the resource path (see \f[CR]--resource-path\f[R]).-.TP-\f[CR]--csl=\f[R]\f[I]FILE\f[R]-Set the \f[CR]csl\f[R] field in the document\[cq]s metadata to-\f[I]FILE\f[R], overriding any value set in the metadata.-(This is equivalent to \f[CR]--metadata csl=FILE\f[R].)-If \f[I]FILE\f[R] is a URL, it will be fetched via HTTP.-If \f[I]FILE\f[R] is not found relative to the working directory, it-will be sought in the resource path (see \f[CR]--resource-path\f[R]) and-finally in the \f[CR]csl\f[R] subdirectory of the pandoc user data-directory.-.TP-\f[CR]--citation-abbreviations=\f[R]\f[I]FILE\f[R]-Set the \f[CR]citation-abbreviations\f[R] field in the document\[cq]s-metadata to \f[I]FILE\f[R], overriding any value set in the metadata.-(This is equivalent to-\f[CR]--metadata citation-abbreviations=FILE\f[R].)-If \f[I]FILE\f[R] is a URL, it will be fetched via HTTP.-If \f[I]FILE\f[R] is not found relative to the working directory, it-will be sought in the resource path (see \f[CR]--resource-path\f[R]) and-finally in the \f[CR]csl\f[R] subdirectory of the pandoc user data-directory.-.TP-\f[CR]--natbib\f[R]-Use \f[CR]natbib\f[R] for citations in LaTeX output.-This option is not for use with the \f[CR]--citeproc\f[R] option or with-PDF output.-It is intended for use in producing a LaTeX file that can be processed-with \f[CR]bibtex\f[R].-.TP-\f[CR]--biblatex\f[R]-Use \f[CR]biblatex\f[R] for citations in LaTeX output.-This option is not for use with the \f[CR]--citeproc\f[R] option or with-PDF output.-It is intended for use in producing a LaTeX file that can be processed-with \f[CR]bibtex\f[R] or \f[CR]biber\f[R].-.SS Math rendering in HTML-The default is to render TeX math as far as possible using Unicode-characters.-Formulas are put inside a \f[CR]span\f[R] with-\f[CR]class=\[dq]math\[dq]\f[R], so that they may be styled differently-from the surrounding text if needed.-However, this gives acceptable results only for basic math, usually you-will want to use \f[CR]--mathjax\f[R] or another of the following-options.-.TP-\f[CR]--mathjax\f[R][\f[CR]=\f[R]\f[I]URL\f[R]]-Use MathJax to display embedded TeX math in HTML output.-TeX math will be put between \f[CR]\[rs](...\[rs])\f[R] (for inline-math) or \f[CR]\[rs][...\[rs]]\f[R] (for display math) and wrapped in-\f[CR]<span>\f[R] tags with class \f[CR]math\f[R].-Then the MathJax JavaScript will render it.-The \f[I]URL\f[R] should point to the \f[CR]MathJax.js\f[R] load script.-If a \f[I]URL\f[R] is not provided, a link to the Cloudflare CDN will be-inserted.-.TP-\f[CR]--mathml\f[R]-Convert TeX math to MathML (in \f[CR]epub3\f[R], \f[CR]docbook4\f[R],-\f[CR]docbook5\f[R], \f[CR]jats\f[R], \f[CR]html4\f[R] and-\f[CR]html5\f[R]).-This is the default in \f[CR]odt\f[R] output.-MathML is supported natively by the main web browsers and select e-book-readers.-.TP-\f[CR]--webtex\f[R][\f[CR]=\f[R]\f[I]URL\f[R]]-Convert TeX formulas to \f[CR]<img>\f[R] tags that link to an external-script that converts formulas to images.-The formula will be URL-encoded and concatenated with the URL provided.-For SVG images you can for example use-\f[CR]--webtex https://latex.codecogs.com/svg.latex?\f[R].-If no URL is specified, the CodeCogs URL generating PNGs will be used-(\f[CR]https://latex.codecogs.com/png.latex?\f[R]).-Note: the \f[CR]--webtex\f[R] option will affect Markdown output as well-as HTML, which is useful if you\[cq]re targeting a version of Markdown-without native math support.-.TP-\f[CR]--katex\f[R][\f[CR]=\f[R]\f[I]URL\f[R]]-Use KaTeX to display embedded TeX math in HTML output.-The \f[I]URL\f[R] is the base URL for the KaTeX library.-That directory should contain a \f[CR]katex.min.js\f[R] and a-\f[CR]katex.min.css\f[R] file.-If a \f[I]URL\f[R] is not provided, a link to the KaTeX CDN will be-inserted.-.TP-\f[CR]--gladtex\f[R]-Enclose TeX math in \f[CR]<eq>\f[R] tags in HTML output.-The resulting HTML can then be processed by GladTeX to produce SVG-images of the typeset formulas and an HTML file with these images-embedded.-.RS-.IP-.EX-pandoc -s --gladtex input.md -o myfile.htex-gladtex -d image_dir myfile.htex-# produces myfile.html and images in image_dir-.EE-.RE-.SS Options for wrapper scripts-.TP-\f[CR]--dump-args[=true|false]\f[R]-Print information about command-line arguments to \f[I]stdout\f[R], then-exit.-This option is intended primarily for use in wrapper scripts.-The first line of output contains the name of the output file specified-with the \f[CR]-o\f[R] option, or \f[CR]-\f[R] (for \f[I]stdout\f[R]) if-no output file was specified.-The remaining lines contain the command-line arguments, one per line, in-the order they appear.-These do not include regular pandoc options and their arguments, but do-include any options appearing after a \f[CR]--\f[R] separator at the end-of the line.-.TP-\f[CR]--ignore-args[=true|false]\f[R]-Ignore command-line arguments (for use in wrapper scripts).-Regular pandoc options are not ignored.-Thus, for example,-.RS-.IP-.EX-pandoc --ignore-args -o foo.html -s foo.txt -- -e latin1-.EE-.PP-is equivalent to-.IP-.EX-pandoc -o foo.html -s-.EE-.RE-.SH EXIT CODES-If pandoc completes successfully, it will return exit code 0.-Nonzero exit codes have the following meanings:-.RS -14n-.IP-.EX- Code Error- ------ -------------------------------------- 1 PandocIOError- 3 PandocFailOnWarningError- 4 PandocAppError- 5 PandocTemplateError- 6 PandocOptionError- 21 PandocUnknownReaderError- 22 PandocUnknownWriterError- 23 PandocUnsupportedExtensionError- 24 PandocCiteprocError- 25 PandocBibliographyError- 31 PandocEpubSubdirectoryError- 43 PandocPDFError- 44 PandocXMLError- 47 PandocPDFProgramNotFoundError- 61 PandocHttpError- 62 PandocShouldNeverHappenError- 63 PandocSomeError- 64 PandocParseError- 66 PandocMakePDFError- 67 PandocSyntaxMapError- 83 PandocFilterError- 84 PandocLuaError- 89 PandocNoScriptingEngine- 91 PandocMacroLoop- 92 PandocUTF8DecodingError- 93 PandocIpynbDecodingError- 94 PandocUnsupportedCharsetError- 97 PandocCouldNotFindDataFileError- 98 PandocCouldNotFindMetadataFileError- 99 PandocResourceNotFound-.EE-.RE-.SH DEFAULTS FILES-The \f[CR]--defaults\f[R] option may be used to specify a package of-options, in the form of a YAML file.-.PP-Fields that are omitted will just have their regular default values.-So a defaults file can be as simple as one line:-.IP-.EX-verbosity: INFO-.EE-.PP-In fields that expect a file path (or list of file paths), the following-syntax may be used to interpolate environment variables:-.IP-.EX-csl: ${HOME}/mycsldir/special.csl-.EE-.PP-\f[CR]${USERDATA}\f[R] may also be used; this will always resolve to the-user data directory that is current when the defaults file is parsed,-regardless of the setting of the environment variable-\f[CR]USERDATA\f[R].-.PP-\f[CR]${.}\f[R] will resolve to the directory containing the defaults-file itself.-This allows you to refer to resources contained in that directory:-.IP-.EX-epub-cover-image: ${.}/cover.jpg-epub-metadata: ${.}/meta.xml-resource-path:-- . # the working directory from which pandoc is run-- ${.}/images # the images subdirectory of the directory- # containing this defaults file-.EE-.PP-This environment variable interpolation syntax \f[I]only\f[R] works in-fields that expect file paths.-.PP-Defaults files can be placed in the \f[CR]defaults\f[R] subdirectory of-the user data directory and used from any directory.-For example, one could create a file specifying defaults for writing-letters, save it as \f[CR]letter.yaml\f[R] in the \f[CR]defaults\f[R]-subdirectory of the user data directory, and then invoke these defaults-from any directory using \f[CR]pandoc --defaults letter\f[R] or-\f[CR]pandoc -dletter\f[R].-.PP-When multiple defaults are used, their contents will be combined.-.PP-Note that, where command-line arguments may be repeated-(\f[CR]--metadata-file\f[R], \f[CR]--css\f[R],-\f[CR]--include-in-header\f[R], \f[CR]--include-before-body\f[R],-\f[CR]--include-after-body\f[R], \f[CR]--variable\f[R],-\f[CR]--metadata\f[R], \f[CR]--syntax-definition\f[R]), the values-specified on the command line will combine with values specified in the-defaults file, rather than replacing them.-.PP-The following tables show the mapping between the command line and-defaults file entries.-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- foo.md input-file: foo.md -- foo.md bar.md input-files: - - foo.md - - bar.md --.EE-.RE-.PP-The value of \f[CR]input-files\f[R] may be left empty to indicate input-from stdin, and it can be an empty sequence \f[CR][]\f[R] for no input.-.SS General options-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- --from markdown+emoji from: markdown+emoji - - reader: markdown+emoji -- to: markdown+hard_line_breaks - --to markdown+hard_line_breaks - - writer: markdown+hard_line_breaks -- --output foo.pdf output-file: foo.pdf -- --output - output-file: -- --data-dir dir data-dir: dir -- --defaults file defaults: - - file -- --verbose verbosity: INFO -- --quiet verbosity: ERROR -- --fail-if-warnings fail-if-warnings: true -- --sandbox sandbox: true -- --log=FILE log-file: FILE --.EE-.RE-.PP-Options specified in a defaults file itself always have priority over-those in another file included with a \f[CR]defaults:\f[R] entry.-.PP-\f[CR]verbosity\f[R] can have the values \f[CR]ERROR\f[R],-\f[CR]WARNING\f[R], or \f[CR]INFO\f[R].-.SS Reader options-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- --shift-heading-level-by -1 shift-heading-level-by: -1 -- indented-code-classes: - --indented-code-classes python - python -- - --default-image-extension \[dq].jpg\[dq] default-image-extension: \[aq].jpg\[aq] -- --file-scope file-scope: true -- --citeproc \[rs] filters: - - citeproc - --lua-filter count-words.lua \[rs] - count-words.lua - --filter special.lua - type: json - path: special.lua -- --metadata key=value \[rs] metadata: - --metadata key2 key: value - key2: true -- --metadata-file meta.yaml metadata-files: - - meta.yaml - - metadata-file: meta.yaml -- --preserve-tabs preserve-tabs: true -- --tab-stop 8 tab-stop: 8 -- --track-changes accept track-changes: accept -- --extract-media dir extract-media: dir -- --abbreviations abbrevs.txt abbreviations: abbrevs.txt -- --trace trace: true --.EE-.RE-.PP-Metadata values specified in a defaults file are parsed as literal-string text, not Markdown.-.PP-Filters will be assumed to be Lua filters if they have the-\f[CR].lua\f[R] extension, and JSON filters otherwise.-But the filter type can also be specified explicitly, as shown.-Filters are run in the order specified.-To include the built-in citeproc filter, use either \f[CR]citeproc\f[R]-or \f[CR]{type: citeproc}\f[R].-.SS General writer options-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- --standalone standalone: true -- --template letter template: letter -- --variable key=val \[rs] variables: - --variable key2 key: val - key2: true -- --eol nl eol: nl -- --dpi 300 dpi: 300 -- --wrap 60 wrap: 60 -- --columns 72 columns: 72 -- --table-of-contents table-of-contents: true -- --toc toc: true -- --toc-depth 3 toc-depth: 3 -- --strip-comments strip-comments: true -- --no-highlight highlight-style: null -- --highlight-style kate highlight-style: kate -- syntax-definitions: - --syntax-definition mylang.xml - mylang.xml - - syntax-definition: mylang.xml -- --include-in-header inc.tex include-in-header: - - inc.tex -- include-before-body: ---include-before-body inc.tex - inc.tex -- --include-after-body inc.tex include-after-body: - - inc.tex -- --resource-path .:foo resource-path: [\[aq].\[aq],\[aq]foo\[aq]] -- --request-header foo:bar request-headers: - - - [\[dq]User-Agent\[dq], \[dq]Mozilla/5.0\[dq]] -- --no-check-certificate no-check-certificate: true --.EE-.RE-.SS Options affecting specific writers-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- --self-contained self-contained: true -- --html-q-tags html-q-tags: true -- --ascii ascii: true -- --reference-links reference-links: true -- --reference-location block reference-location: block -- --markdown-headings atx markdown-headings: atx -- --list-tables list-tables: true -- --top-level-division chapter top-level-division: chapter -- --number-sections number-sections: true -- --number-offset=1,4 number-offset: \[rs][1,4\[rs]] -- --listings listings: true -- --incremental incremental: true -- --slide-level 2 slide-level: 2 -- --section-divs section-divs: true -- email-obfuscation: references - --email-obfuscation references -- --id-prefix ch1 identifier-prefix: ch1 -- --title-prefix MySite title-prefix: MySite -- --css styles/screen.css \[rs] css: - --css styles/special.css - styles/screen.css - - styles/special.css -- --reference-doc my.docx reference-doc: my.docx -- --epub-cover-image cover.jpg epub-cover-image: cover.jpg -- --epub-title-page=false epub-title-page: false -- --epub-metadata meta.xml epub-metadata: meta.xml -- epub-fonts: - --epub-embed-font special.otf \[rs] - special.otf - - headline.otf - --epub-embed-font headline.otf -- --split-level 2 split-level: 2 -- --chunk-template=\[dq]%i.html\[dq] chunk-template: \[dq]%i.html\[dq] -- --epub-subdirectory=\[dq]\[dq] epub-subdirectory: \[aq]\[aq] -- --ipynb-output best ipynb-output: best -- --pdf-engine xelatex pdf-engine: xelatex -- pdf-engine-opts: - --pdf-engine-opt=--shell-escape - \[aq]-shell-escape\[aq] - - - pdf-engine-opt: \[aq]-shell-escape\[aq] --.EE-.RE-.SS Citation rendering-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- --citeproc citeproc: true -- --bibliography logic.bib metadata: - bibliography: logic.bib -- --csl ieee.csl metadata: - csl: ieee.csl -- metadata: - --citation-abbreviations ab.json - citation-abbreviations: ab.json -- --natbib cite-method: natbib -- --biblatex cite-method: biblatex --.EE-.RE-.PP-\f[CR]cite-method\f[R] can be \f[CR]citeproc\f[R], \f[CR]natbib\f[R], or-\f[CR]biblatex\f[R].-This only affects LaTeX output.-If you want to use citeproc to format citations, you should also set-`citeproc: true'.-.PP-If you need control over when the citeproc processing is done relative-to other filters, you should instead use \f[CR]citeproc\f[R] in the list-of \f[CR]filters\f[R] (see Reader options).-.SS Math rendering in HTML-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- --mathjax html-math-method: - method: mathjax -- --mathml html-math-method: - method: mathml -- --webtex html-math-method: - method: webtex -- --katex html-math-method: - method: katex -- --gladtex html-math-method: - method: gladtex --.EE-.RE-.PP-In addition to the values listed above, \f[CR]method\f[R] can have the-value \f[CR]plain\f[R].-.PP-If the command line option accepts a URL argument, an \f[CR]url:\f[R]-field can be added to \f[CR]html-math-method:\f[R].-.SS Options for wrapper scripts-.RS -14n-.IP-.EX-- command line defaults file - --------------------------------- ----------------------------------- --dump-args dump-args: true -- --ignore-args ignore-args: true --.EE-.RE-.SH TEMPLATES-When the \f[CR]-s/--standalone\f[R] option is used, pandoc uses a-template to add header and footer material that is needed for a-self-standing document.-To see the default template that is used, just type-.IP-.EX-pandoc -D *FORMAT*-.EE-.PP-where \f[I]FORMAT\f[R] is the name of the output format.-A custom template can be specified using the \f[CR]--template\f[R]-option.-You can also override the system default templates for a given output-format \f[I]FORMAT\f[R] by putting a file-\f[CR]templates/default.*FORMAT*\f[R] in the user data directory (see-\f[CR]--data-dir\f[R], above).-\f[I]Exceptions:\f[R]-.IP \[bu] 2-For \f[CR]odt\f[R] output, customize the \f[CR]default.opendocument\f[R]-template.-.IP \[bu] 2-For \f[CR]pdf\f[R] output, customize the \f[CR]default.latex\f[R]-template (or the \f[CR]default.context\f[R] template, if you use-\f[CR]-t context\f[R], or the \f[CR]default.ms\f[R] template, if you use-\f[CR]-t ms\f[R], or the \f[CR]default.html\f[R] template, if you use-\f[CR]-t html\f[R]).-.IP \[bu] 2-\f[CR]docx\f[R] and \f[CR]pptx\f[R] have no template (however, you can-use \f[CR]--reference-doc\f[R] to customize the output).-.PP-Templates contain \f[I]variables\f[R], which allow for the inclusion of-arbitrary information at any point in the file.-They may be set at the command line using the \f[CR]-V/--variable\f[R]-option.-If a variable is not set, pandoc will look for the key in the-document\[cq]s metadata, which can be set using either YAML metadata-blocks or with the \f[CR]-M/--metadata\f[R] option.-In addition, some variables are given default values by pandoc.-See Variables below for a list of variables used in pandoc\[cq]s default-templates.-.PP-If you use custom templates, you may need to revise them as pandoc-changes.-We recommend tracking the changes in the default templates, and-modifying your custom templates accordingly.-An easy way to do this is to fork the pandoc-templates repository and-merge in changes after each pandoc release.-.SS Template syntax-.SS Comments-Anything between the sequence \f[CR]$--\f[R] and the end of the line-will be treated as a comment and omitted from the output.-.SS Delimiters-To mark variables and control structures in the template, either-\f[CR]$\f[R]\&...\f[CR]$\f[R] or \f[CR]${\f[R]\&...\f[CR]}\f[R] may be-used as delimiters.-The styles may also be mixed in the same template, but the opening and-closing delimiter must match in each case.-The opening delimiter may be followed by one or more spaces or tabs,-which will be ignored.-The closing delimiter may be preceded by one or more spaces or tabs,-which will be ignored.-.PP-To include a literal \f[CR]$\f[R] in the document, use \f[CR]$$\f[R].-.SS Interpolated variables-A slot for an interpolated variable is a variable name surrounded by-matched delimiters.-Variable names must begin with a letter and can contain letters,-numbers, \f[CR]_\f[R], \f[CR]-\f[R], and \f[CR].\f[R].-The keywords \f[CR]it\f[R], \f[CR]if\f[R], \f[CR]else\f[R],-\f[CR]endif\f[R], \f[CR]for\f[R], \f[CR]sep\f[R], and \f[CR]endfor\f[R]-may not be used as variable names.-Examples:-.IP-.EX-$foo$-$foo.bar.baz$-$foo_bar.baz-bim$-$ foo $-${foo}-${foo.bar.baz}-${foo_bar.baz-bim}-${ foo }-.EE-.PP-Variable names with periods are used to get at structured variable-values.-So, for example, \f[CR]employee.salary\f[R] will return the value of the-\f[CR]salary\f[R] field of the object that is the value of the-\f[CR]employee\f[R] field.-.IP \[bu] 2-If the value of the variable is a simple value, it will be rendered-verbatim.-(Note that no escaping is done; the assumption is that the calling-program will escape the strings appropriately for the output format.)-.IP \[bu] 2-If the value is a list, the values will be concatenated.-.IP \[bu] 2-If the value is a map, the string \f[CR]true\f[R] will be rendered.-.IP \[bu] 2-Every other value will be rendered as the empty string.-.SS Conditionals-A conditional begins with \f[CR]if(variable)\f[R] (enclosed in matched-delimiters) and ends with \f[CR]endif\f[R] (enclosed in matched-delimiters).-It may optionally contain an \f[CR]else\f[R] (enclosed in matched-delimiters).-The \f[CR]if\f[R] section is used if \f[CR]variable\f[R] has a non-empty-value, otherwise the \f[CR]else\f[R] section is used (if present).-Examples:-.IP-.EX-$if(foo)$bar$endif$--$if(foo)$- $foo$-$endif$--$if(foo)$-part one-$else$-part two-$endif$--${if(foo)}bar${endif}--${if(foo)}- ${foo}-${endif}--${if(foo)}-${ foo.bar }-${else}-no foo!-${endif}-.EE-.PP-The keyword \f[CR]elseif\f[R] may be used to simplify complex nested-conditionals:-.IP-.EX-$if(foo)$-XXX-$elseif(bar)$-YYY-$else$-ZZZ-$endif$-.EE-.SS For loops-A for loop begins with \f[CR]for(variable)\f[R] (enclosed in matched-delimiters) and ends with \f[CR]endfor\f[R] (enclosed in matched-delimiters).-.IP \[bu] 2-If \f[CR]variable\f[R] is an array, the material inside the loop will be-evaluated repeatedly, with \f[CR]variable\f[R] being set to each value-of the array in turn, and concatenated.-.IP \[bu] 2-If \f[CR]variable\f[R] is a map, the material inside will be set to the-map.-.IP \[bu] 2-If the value of the associated variable is not an array or a map, a-single iteration will be performed on its value.-.PP-Examples:-.IP-.EX-$for(foo)$$foo$$sep$, $endfor$--$for(foo)$- - $foo.last$, $foo.first$-$endfor$--${ for(foo.bar) }- - ${ foo.bar.last }, ${ foo.bar.first }-${ endfor }--$for(mymap)$-$it.name$: $it.office$-$endfor$-.EE-.PP-You may optionally specify a separator between consecutive values using-\f[CR]sep\f[R] (enclosed in matched delimiters).-The material between \f[CR]sep\f[R] and the \f[CR]endfor\f[R] is the-separator.-.IP-.EX-${ for(foo) }${ foo }${ sep }, ${ endfor }-.EE-.PP-Instead of using \f[CR]variable\f[R] inside the loop, the special-anaphoric keyword \f[CR]it\f[R] may be used.-.IP-.EX-${ for(foo.bar) }- - ${ it.last }, ${ it.first }-${ endfor }-.EE-.SS Partials-Partials (subtemplates stored in different files) may be included by-using the name of the partial, followed by \f[CR]()\f[R], for example:-.IP-.EX-${ styles() }-.EE-.PP-Partials will be sought in the directory containing the main template.-The file name will be assumed to have the same extension as the main-template if it lacks an extension.-When calling the partial, the full name including file extension can-also be used:-.IP-.EX-${ styles.html() }-.EE-.PP-(If a partial is not found in the directory of the template and the-template path is given as a relative path, it will also be sought in the-\f[CR]templates\f[R] subdirectory of the user data directory.)-.PP-Partials may optionally be applied to variables using a colon:-.IP-.EX-${ date:fancy() }--${ articles:bibentry() }-.EE-.PP-If \f[CR]articles\f[R] is an array, this will iterate over its values,-applying the partial \f[CR]bibentry()\f[R] to each one.-So the second example above is equivalent to-.IP-.EX-${ for(articles) }-${ it:bibentry() }-${ endfor }-.EE-.PP-Note that the anaphoric keyword \f[CR]it\f[R] must be used when-iterating over partials.-In the above examples, the \f[CR]bibentry\f[R] partial should contain-\f[CR]it.title\f[R] (and so on) instead of \f[CR]articles.title\f[R].-.PP-Final newlines are omitted from included partials.-.PP-Partials may include other partials.-.PP-A separator between values of an array may be specified in square-brackets, immediately after the variable name or partial:-.IP-.EX-${months[, ]}$--${articles:bibentry()[; ]$-.EE-.PP-The separator in this case is literal and (unlike with \f[CR]sep\f[R] in-an explicit \f[CR]for\f[R] loop) cannot contain interpolated variables-or other template directives.-.SS Nesting-To ensure that content is \[lq]nested,\[rq] that is, subsequent lines-indented, use the \f[CR]\[ha]\f[R] directive:-.IP-.EX-$item.number$ $\[ha]$$item.description$ ($item.price$)-.EE-.PP-In this example, if \f[CR]item.description\f[R] has multiple lines, they-will all be indented to line up with the first line:-.IP-.EX-00123 A fine bottle of 18-year old- Oban whiskey. ($148)-.EE-.PP-To nest multiple lines to the same level, align them with the-\f[CR]\[ha]\f[R] directive in the template.-For example:-.IP-.EX-$item.number$ $\[ha]$$item.description$ ($item.price$)- (Available til $item.sellby$.)-.EE-.PP-will produce-.IP-.EX-00123 A fine bottle of 18-year old- Oban whiskey. ($148)- (Available til March 30, 2020.)-.EE-.PP-If a variable occurs by itself on a line, preceded by whitespace and not-followed by further text or directives on the same line, and the-variable\[cq]s value contains multiple lines, it will be nested-automatically.-.SS Breakable spaces-Normally, spaces in the template itself (as opposed to values of the-interpolated variables) are not breakable, but they can be made-breakable in part of the template by using the \f[CR]\[ti]\f[R] keyword-(ended with another \f[CR]\[ti]\f[R]).-.IP-.EX-$\[ti]$This long line may break if the document is rendered-with a short line length.$\[ti]$-.EE-.SS Pipes-A pipe transforms the value of a variable or partial.-Pipes are specified using a slash (\f[CR]/\f[R]) between the variable-name (or partial) and the pipe name.-Example:-.IP-.EX-$for(name)$-$name/uppercase$-$endfor$--$for(metadata/pairs)$-- $it.key$: $it.value$-$endfor$--$employee:name()/uppercase$-.EE-.PP-Pipes may be chained:-.IP-.EX-$for(employees/pairs)$-$it.key/alpha/uppercase$. $it.name$-$endfor$-.EE-.PP-Some pipes take parameters:-.IP-.EX-|----------------------|------------|-$for(employee)$-$it.name.first/uppercase/left 20 \[dq]| \[dq]$$it.name.salary/right 10 \[dq] | \[dq] \[dq] |\[dq]$-$endfor$-|----------------------|------------|-.EE-.PP-Currently the following pipes are predefined:-.IP \[bu] 2-\f[CR]pairs\f[R]: Converts a map or array to an array of maps, each with-\f[CR]key\f[R] and \f[CR]value\f[R] fields.-If the original value was an array, the \f[CR]key\f[R] will be the array-index, starting with 1.-.IP \[bu] 2-\f[CR]uppercase\f[R]: Converts text to uppercase.-.IP \[bu] 2-\f[CR]lowercase\f[R]: Converts text to lowercase.-.IP \[bu] 2-\f[CR]length\f[R]: Returns the length of the value: number of characters-for a textual value, number of elements for a map or array.-.IP \[bu] 2-\f[CR]reverse\f[R]: Reverses a textual value or array, and has no effect-on other values.-.IP \[bu] 2-\f[CR]first\f[R]: Returns the first value of an array, if applied to a-non-empty array; otherwise returns the original value.-.IP \[bu] 2-\f[CR]last\f[R]: Returns the last value of an array, if applied to a-non-empty array; otherwise returns the original value.-.IP \[bu] 2-\f[CR]rest\f[R]: Returns all but the first value of an array, if applied-to a non-empty array; otherwise returns the original value.-.IP \[bu] 2-\f[CR]allbutlast\f[R]: Returns all but the last value of an array, if-applied to a non-empty array; otherwise returns the original value.-.IP \[bu] 2-\f[CR]chomp\f[R]: Removes trailing newlines (and breakable space).-.IP \[bu] 2-\f[CR]nowrap\f[R]: Disables line wrapping on breakable spaces.-.IP \[bu] 2-\f[CR]alpha\f[R]: Converts textual values that can be read as an integer-into lowercase alphabetic characters \f[CR]a..z\f[R] (mod 26).-This can be used to get lettered enumeration from array indices.-To get uppercase letters, chain with \f[CR]uppercase\f[R].-.IP \[bu] 2-\f[CR]roman\f[R]: Converts textual values that can be read as an integer-into lowercase roman numerals.-This can be used to get lettered enumeration from array indices.-To get uppercase roman, chain with \f[CR]uppercase\f[R].-.IP \[bu] 2-\f[CR]left n \[dq]leftborder\[dq] \[dq]rightborder\[dq]\f[R]: Renders a-textual value in a block of width \f[CR]n\f[R], aligned to the left,-with an optional left and right border.-Has no effect on other values.-This can be used to align material in tables.-Widths are positive integers indicating the number of characters.-Borders are strings inside double quotes; literal \f[CR]\[dq]\f[R] and-\f[CR]\[rs]\f[R] characters must be backslash-escaped.-.IP \[bu] 2-\f[CR]right n \[dq]leftborder\[dq] \[dq]rightborder\[dq]\f[R]: Renders a-textual value in a block of width \f[CR]n\f[R], aligned to the right,-and has no effect on other values.-.IP \[bu] 2-\f[CR]center n \[dq]leftborder\[dq] \[dq]rightborder\[dq]\f[R]: Renders-a textual value in a block of width \f[CR]n\f[R], aligned to the center,-and has no effect on other values.-.SS Variables-.SS Metadata variables-.TP-\f[CR]title\f[R], \f[CR]author\f[R], \f[CR]date\f[R]-allow identification of basic aspects of the document.-Included in PDF metadata through LaTeX and ConTeXt.-These can be set through a pandoc title block, which allows for multiple-authors, or through a YAML metadata block:-.RS-.IP-.EX-----author:-- Aristotle-- Peter Abelard-\&...-.EE-.PP-Note that if you just want to set PDF or HTML metadata, without-including a title block in the document itself, you can set the-\f[CR]title-meta\f[R], \f[CR]author-meta\f[R], and \f[CR]date-meta\f[R]-variables.-(By default these are set automatically, based on \f[CR]title\f[R],-\f[CR]author\f[R], and \f[CR]date\f[R].)-The page title in HTML is set by \f[CR]pagetitle\f[R], which is equal to-\f[CR]title\f[R] by default.-.RE-.TP-\f[CR]subtitle\f[R]-document subtitle, included in HTML, EPUB, LaTeX, ConTeXt, and docx-documents-.TP-\f[CR]abstract\f[R]-document summary, included in HTML, LaTeX, ConTeXt, AsciiDoc, and docx-documents-.TP-\f[CR]abstract-title\f[R]-title of abstract, currently used only in HTML, EPUB, and docx.-This will be set automatically to a localized value, depending on-\f[CR]lang\f[R], but can be manually overridden.-.TP-\f[CR]keywords\f[R]-list of keywords to be included in HTML, PDF, ODT, pptx, docx and-AsciiDoc metadata; repeat as for \f[CR]author\f[R], above-.TP-\f[CR]subject\f[R]-document subject, included in ODT, PDF, docx, EPUB, and pptx metadata-.TP-\f[CR]description\f[R]-document description, included in ODT, docx and pptx metadata.-Some applications show this as \f[CR]Comments\f[R] metadata.-.TP-\f[CR]category\f[R]-document category, included in docx and pptx metadata-.PP-Additionally, any root-level string metadata, not included in ODT, docx-or pptx metadata is added as a \f[I]custom property\f[R].-The following YAML metadata block for instance:-.IP-.EX-----title: \[aq]This is the title\[aq]-subtitle: \[dq]This is the subtitle\[dq]-author:-- Author One-- Author Two-description: |- This is a long- description.-- It consists of two paragraphs-\&...-.EE-.PP-will include \f[CR]title\f[R], \f[CR]author\f[R] and-\f[CR]description\f[R] as standard document properties and-\f[CR]subtitle\f[R] as a custom property when converting to docx, ODT or-pptx.-.SS Language variables-.TP-\f[CR]lang\f[R]-identifies the main language of the document using IETF language tags-(following the BCP 47 standard), such as \f[CR]en\f[R] or-\f[CR]en-GB\f[R].-The Language subtag lookup tool can look up or verify these tags.-This affects most formats, and controls hyphenation in PDF output when-using LaTeX (through \f[CR]babel\f[R] and \f[CR]polyglossia\f[R]) or-ConTeXt.-.RS-.PP-Use native pandoc Divs and Spans with the \f[CR]lang\f[R] attribute to-switch the language:-.IP-.EX-----lang: en-GB-\&...--Text in the main document language (British English).--::: {lang=fr-CA}-> Cette citation est écrite en français canadien.-:::--More text in English. [\[aq]Zitat auf Deutsch.\[aq]]{lang=de}-.EE-.RE-.TP-\f[CR]dir\f[R]-the base script direction, either \f[CR]rtl\f[R] (right-to-left) or-\f[CR]ltr\f[R] (left-to-right).-.RS-.PP-For bidirectional documents, native pandoc \f[CR]span\f[R]s and-\f[CR]div\f[R]s with the \f[CR]dir\f[R] attribute (value \f[CR]rtl\f[R]-or \f[CR]ltr\f[R]) can be used to override the base direction in some-output formats.-This may not always be necessary if the final renderer (e.g.\ the-browser, when generating HTML) supports the Unicode Bidirectional-Algorithm.-.PP-When using LaTeX for bidirectional documents, only the-\f[CR]xelatex\f[R] engine is fully supported (use-\f[CR]--pdf-engine=xelatex\f[R]).-.RE-.SS Variables for HTML-.TP-\f[CR]document-css\f[R]-Enables inclusion of most of the CSS in the \f[CR]styles.html\f[R]-partial (have a look with-\f[CR]pandoc --print-default-data-file=templates/styles.html\f[R]).-Unless you use \f[CR]--css\f[R], this variable is set to \f[CR]true\f[R]-by default.-You can disable it with e.g.\ \f[CR]pandoc -M document-css=false\f[R].-.TP-\f[CR]mainfont\f[R]-sets the CSS \f[CR]font-family\f[R] property on the \f[CR]html\f[R]-element.-.TP-\f[CR]fontsize\f[R]-sets the base CSS \f[CR]font-size\f[R], which you\[cq]d usually set to-e.g.\ \f[CR]20px\f[R], but it also accepts \f[CR]pt\f[R] (12pt = 16px in-most browsers).-.TP-\f[CR]fontcolor\f[R]-sets the CSS \f[CR]color\f[R] property on the \f[CR]html\f[R] element.-.TP-\f[CR]linkcolor\f[R]-sets the CSS \f[CR]color\f[R] property on all links.-.TP-\f[CR]monofont\f[R]-sets the CSS \f[CR]font-family\f[R] property on \f[CR]code\f[R]-elements.-.TP-\f[CR]monobackgroundcolor\f[R]-sets the CSS \f[CR]background-color\f[R] property on \f[CR]code\f[R]-elements and adds extra padding.-.TP-\f[CR]linestretch\f[R]-sets the CSS \f[CR]line-height\f[R] property on the \f[CR]html\f[R]-element, which is preferred to be unitless.-.TP-\f[CR]maxwidth\f[R]-sets the CSS \f[CR]max-width\f[R] property (default is 32em).-.TP-\f[CR]backgroundcolor\f[R]-sets the CSS \f[CR]background-color\f[R] property on the \f[CR]html\f[R]-element.-.TP-\f[CR]margin-left\f[R], \f[CR]margin-right\f[R], \f[CR]margin-top\f[R], \f[CR]margin-bottom\f[R]-sets the corresponding CSS \f[CR]padding\f[R] properties on the-\f[CR]body\f[R] element.-.PP-To override or extend some CSS for just one document, include for-example:-.IP-.EX-----header-includes: |- <style>- blockquote {- font-style: italic;- }- tr.even {- background-color: #f0f0f0;- }- td, th {- padding: 0.5em 2em 0.5em 0.5em;- }- tbody {- border-bottom: none;- }- </style>-----.EE-.SS Variables for HTML math-.TP-\f[CR]classoption\f[R]-when using KaTeX, you can render display math equations flush left using-YAML metadata or with \f[CR]-M classoption=fleqn\f[R].-.SS Variables for HTML slides-These affect HTML output when producing slide shows with pandoc.-.TP-\f[CR]institute\f[R]-author affiliations: can be a list when there are multiple authors-.TP-\f[CR]revealjs-url\f[R]-base URL for reveal.js documents (defaults to-\f[CR]https://unpkg.com/reveal.js\[at]\[ha]4/\f[R])-.TP-\f[CR]s5-url\f[R]-base URL for S5 documents (defaults to \f[CR]s5/default\f[R])-.TP-\f[CR]slidy-url\f[R]-base URL for Slidy documents (defaults to-\f[CR]https://www.w3.org/Talks/Tools/Slidy2\f[R])-.TP-\f[CR]slideous-url\f[R]-base URL for Slideous documents (defaults to \f[CR]slideous\f[R])-.TP-\f[CR]title-slide-attributes\f[R]-additional attributes for the title slide of reveal.js slide shows.-See background in reveal.js, beamer, and pptx for an example.-.PP-All reveal.js configuration options are available as variables.-To turn off boolean flags that default to true in reveal.js, use-\f[CR]0\f[R].-.SS Variables for Beamer slides-These variables change the appearance of PDF slides using-\f[CR]beamer\f[R].-.TP-\f[CR]aspectratio\f[R]-slide aspect ratio (\f[CR]43\f[R] for 4:3 [default], \f[CR]169\f[R] for-16:9, \f[CR]1610\f[R] for 16:10, \f[CR]149\f[R] for 14:9, \f[CR]141\f[R]-for 1.41:1, \f[CR]54\f[R] for 5:4, \f[CR]32\f[R] for 3:2)-.TP-\f[CR]beameroption\f[R]-add extra beamer option with \f[CR]\[rs]setbeameroption{}\f[R]-.TP-\f[CR]institute\f[R]-author affiliations: can be a list when there are multiple authors-.TP-\f[CR]logo\f[R]-logo image for slides-.TP-\f[CR]navigation\f[R]-controls navigation symbols (default is \f[CR]empty\f[R] for no-navigation symbols; other valid values are \f[CR]frame\f[R],-\f[CR]vertical\f[R], and \f[CR]horizontal\f[R])-.TP-\f[CR]section-titles\f[R]-enables \[lq]title pages\[rq] for new sections (default is true)-.TP-\f[CR]theme\f[R], \f[CR]colortheme\f[R], \f[CR]fonttheme\f[R], \f[CR]innertheme\f[R], \f[CR]outertheme\f[R]-beamer themes-.TP-\f[CR]themeoptions\f[R]-options for LaTeX beamer themes (a list).-.TP-\f[CR]titlegraphic\f[R]-image for title slide-.SS Variables for PowerPoint-These variables control the visual aspects of a slide show that are not-easily controlled via templates.-.TP-\f[CR]monofont\f[R]-font to use for code.-.SS Variables for LaTeX-Pandoc uses these variables when creating a PDF with a LaTeX engine.-.SS Layout-.TP-\f[CR]block-headings\f[R]-make \f[CR]\[rs]paragraph\f[R] and \f[CR]\[rs]subparagraph\f[R] (fourth--and fifth-level headings, or fifth- and sixth-level with book classes)-free-standing rather than run-in; requires further formatting to-distinguish from \f[CR]\[rs]subsubsection\f[R] (third- or fourth-level-headings).-Instead of using this option, KOMA-Script can adjust headings more-extensively:-.RS-.IP-.EX-----documentclass: scrartcl-header-includes: |- \[rs]RedeclareSectionCommand[- beforeskip=-10pt plus -2pt minus -1pt,- afterskip=1sp plus -1sp minus 1sp,- font=\[rs]normalfont\[rs]itshape]{paragraph}- \[rs]RedeclareSectionCommand[- beforeskip=-10pt plus -2pt minus -1pt,- afterskip=1sp plus -1sp minus 1sp,- font=\[rs]normalfont\[rs]scshape,- indent=0pt]{subparagraph}-\&...-.EE-.RE-.TP-\f[CR]classoption\f[R]-option for document class, e.g.\ \f[CR]oneside\f[R]; repeat for multiple-options:-.RS-.IP-.EX-----classoption:-- twocolumn-- landscape-\&...-.EE-.RE-.TP-\f[CR]documentclass\f[R]-document class: usually one of the standard classes, \f[CR]article\f[R],-\f[CR]book\f[R], and \f[CR]report\f[R]; the KOMA-Script equivalents,-\f[CR]scrartcl\f[R], \f[CR]scrbook\f[R], and \f[CR]scrreprt\f[R], which-default to smaller margins; or \f[CR]memoir\f[R]-.TP-\f[CR]geometry\f[R]-option for \f[CR]geometry\f[R] package, e.g.\ \f[CR]margin=1in\f[R];-repeat for multiple options:-.RS-.IP-.EX-----geometry:-- top=30mm-- left=20mm-- heightrounded-\&...-.EE-.RE-.TP-\f[CR]hyperrefoptions\f[R]-option for \f[CR]hyperref\f[R] package, e.g.\ \f[CR]linktoc=all\f[R];-repeat for multiple options:-.RS-.IP-.EX-----hyperrefoptions:-- linktoc=all-- pdfwindowui-- pdfpagemode=FullScreen-\&...-.EE-.RE-.TP-\f[CR]indent\f[R]-if true, pandoc will use document class settings for indentation (the-default LaTeX template otherwise removes indentation and adds space-between paragraphs)-.TP-\f[CR]linestretch\f[R]-adjusts line spacing using the \f[CR]setspace\f[R] package,-e.g.\ \f[CR]1.25\f[R], \f[CR]1.5\f[R]-.TP-\f[CR]margin-left\f[R], \f[CR]margin-right\f[R], \f[CR]margin-top\f[R], \f[CR]margin-bottom\f[R]-sets margins if \f[CR]geometry\f[R] is not used (otherwise-\f[CR]geometry\f[R] overrides these)-.TP-\f[CR]pagestyle\f[R]-control \f[CR]\[rs]pagestyle{}\f[R]: the default article class supports-\f[CR]plain\f[R] (default), \f[CR]empty\f[R] (no running heads or page-numbers), and \f[CR]headings\f[R] (section titles in running heads)-.TP-\f[CR]papersize\f[R]-paper size, e.g.\ \f[CR]letter\f[R], \f[CR]a4\f[R]-.TP-\f[CR]secnumdepth\f[R]-numbering depth for sections (with \f[CR]--number-sections\f[R] option-or \f[CR]numbersections\f[R] variable)-.TP-\f[CR]beamerarticle\f[R]-produce an article from Beamer slides-.SS Fonts-.TP-\f[CR]fontenc\f[R]-allows font encoding to be specified through \f[CR]fontenc\f[R] package-(with \f[CR]pdflatex\f[R]); default is \f[CR]T1\f[R] (see LaTeX font-encodings guide)-.TP-\f[CR]fontfamily\f[R]-font package for use with \f[CR]pdflatex\f[R]: TeX Live includes many-options, documented in the LaTeX Font Catalogue.-The default is Latin Modern.-.TP-\f[CR]fontfamilyoptions\f[R]-options for package used as \f[CR]fontfamily\f[R]; repeat for multiple-options.-For example, to use the Libertine font with proportional lowercase-(old-style) figures through the \f[CR]libertinus\f[R] package:-.RS-.IP-.EX-----fontfamily: libertinus-fontfamilyoptions:-- osf-- p-\&...-.EE-.RE-.TP-\f[CR]fontsize\f[R]-font size for body text.-The standard classes allow 10pt, 11pt, and 12pt.-To use another size, set \f[CR]documentclass\f[R] to one of the-KOMA-Script classes, such as \f[CR]scrartcl\f[R] or \f[CR]scrbook\f[R].-.TP-\f[CR]mainfont\f[R], \f[CR]sansfont\f[R], \f[CR]monofont\f[R], \f[CR]mathfont\f[R], \f[CR]CJKmainfont\f[R], \f[CR]CJKsansfont\f[R], \f[CR]CJKmonofont\f[R]-font families for use with \f[CR]xelatex\f[R] or \f[CR]lualatex\f[R]:-take the name of any system font, using the \f[CR]fontspec\f[R] package.-\f[CR]CJKmainfont\f[R] uses the \f[CR]xecjk\f[R] package.-.TP-\f[CR]mainfontoptions\f[R], \f[CR]sansfontoptions\f[R], \f[CR]monofontoptions\f[R], \f[CR]mathfontoptions\f[R], \f[CR]CJKoptions\f[R]-options to use with \f[CR]mainfont\f[R], \f[CR]sansfont\f[R],-\f[CR]monofont\f[R], \f[CR]mathfont\f[R], \f[CR]CJKmainfont\f[R] in-\f[CR]xelatex\f[R] and \f[CR]lualatex\f[R].-Allow for any choices available through \f[CR]fontspec\f[R]; repeat for-multiple options.-For example, to use the TeX Gyre version of Palatino with lowercase-figures:-.RS-.IP-.EX-----mainfont: TeX Gyre Pagella-mainfontoptions:-- Numbers=Lowercase-- Numbers=Proportional-\&...-.EE-.RE-.TP-\f[CR]babelfonts\f[R]-a map of Babel language names (e.g.\ \f[CR]chinese\f[R]) to the font to-be used with the language:-.RS-.PP- * * * * *-.PP-babelfonts: chinese-hant: \[lq]Noto Serif CJK TC\[rq] russian: \[lq]Noto-Serif\[rq] \&...-.RE-.TP-\f[CR]microtypeoptions\f[R]-options to pass to the microtype package-.SS Links-.TP-\f[CR]colorlinks\f[R]-add color to link text; automatically enabled if any of-\f[CR]linkcolor\f[R], \f[CR]filecolor\f[R], \f[CR]citecolor\f[R],-\f[CR]urlcolor\f[R], or \f[CR]toccolor\f[R] are set-.TP-\f[CR]boxlinks\f[R]-add visible box around links (has no effect if \f[CR]colorlinks\f[R] is-set)-.TP-\f[CR]linkcolor\f[R], \f[CR]filecolor\f[R], \f[CR]citecolor\f[R], \f[CR]urlcolor\f[R], \f[CR]toccolor\f[R]-color for internal links, external links, citation links, linked URLs,-and links in table of contents, respectively: uses options allowed by-\f[CR]xcolor\f[R], including the \f[CR]dvipsnames\f[R],-\f[CR]svgnames\f[R], and \f[CR]x11names\f[R] lists-.TP-\f[CR]links-as-notes\f[R]-causes links to be printed as footnotes-.TP-\f[CR]urlstyle\f[R]-style for URLs (e.g., \f[CR]tt\f[R], \f[CR]rm\f[R], \f[CR]sf\f[R], and,-the default, \f[CR]same\f[R])-.SS Front matter-.TP-\f[CR]lof\f[R], \f[CR]lot\f[R]-include list of figures, list of tables-.TP-\f[CR]thanks\f[R]-contents of acknowledgments footnote after document title-.TP-\f[CR]toc\f[R]-include table of contents (can also be set using-\f[CR]--toc/--table-of-contents\f[R])-.TP-\f[CR]toc-depth\f[R]-level of section to include in table of contents-.SS BibLaTeX Bibliographies-These variables function when using BibLaTeX for citation rendering.-.TP-\f[CR]biblatexoptions\f[R]-list of options for biblatex-.TP-\f[CR]biblio-style\f[R]-bibliography style, when used with \f[CR]--natbib\f[R] and-\f[CR]--biblatex\f[R]-.TP-\f[CR]biblio-title\f[R]-bibliography title, when used with \f[CR]--natbib\f[R] and-\f[CR]--biblatex\f[R]-.TP-\f[CR]bibliography\f[R]-bibliography to use for resolving references-.TP-\f[CR]natbiboptions\f[R]-list of options for natbib-.SS Variables for ConTeXt-Pandoc uses these variables when creating a PDF with ConTeXt.-.TP-\f[CR]fontsize\f[R]-font size for body text (e.g.\ \f[CR]10pt\f[R], \f[CR]12pt\f[R])-.TP-\f[CR]headertext\f[R], \f[CR]footertext\f[R]-text to be placed in running header or footer (see ConTeXt Headers and-Footers); repeat up to four times for different placement-.TP-\f[CR]indenting\f[R]-controls indentation of paragraphs, e.g.\ \f[CR]yes,small,next\f[R] (see-ConTeXt Indentation); repeat for multiple options-.TP-\f[CR]interlinespace\f[R]-adjusts line spacing, e.g.\ \f[CR]4ex\f[R] (using-\f[CR]setupinterlinespace\f[R]); repeat for multiple options-.TP-\f[CR]layout\f[R]-options for page margins and text arrangement (see ConTeXt Layout);-repeat for multiple options-.TP-\f[CR]linkcolor\f[R], \f[CR]contrastcolor\f[R]-color for links outside and inside a page, e.g.\ \f[CR]red\f[R],-\f[CR]blue\f[R] (see ConTeXt Color)-.TP-\f[CR]linkstyle\f[R]-typeface style for links, e.g.\ \f[CR]normal\f[R], \f[CR]bold\f[R],-\f[CR]slanted\f[R], \f[CR]boldslanted\f[R], \f[CR]type\f[R],-\f[CR]cap\f[R], \f[CR]small\f[R]-.TP-\f[CR]lof\f[R], \f[CR]lot\f[R]-include list of figures, list of tables-.TP-\f[CR]mainfont\f[R], \f[CR]sansfont\f[R], \f[CR]monofont\f[R], \f[CR]mathfont\f[R]-font families: take the name of any system font (see ConTeXt Font-Switching)-.TP-\f[CR]margin-left\f[R], \f[CR]margin-right\f[R], \f[CR]margin-top\f[R], \f[CR]margin-bottom\f[R]-sets margins, if \f[CR]layout\f[R] is not used (otherwise-\f[CR]layout\f[R] overrides these)-.TP-\f[CR]pagenumbering\f[R]-page number style and location (using \f[CR]setuppagenumbering\f[R]);-repeat for multiple options-.TP-\f[CR]papersize\f[R]-paper size, e.g.\ \f[CR]letter\f[R], \f[CR]A4\f[R], \f[CR]landscape\f[R]-(see ConTeXt Paper Setup); repeat for multiple options-.TP-\f[CR]pdfa\f[R]-adds to the preamble the setup necessary to generate PDF/A of the type-specified, e.g.\ \f[CR]1a:2005\f[R], \f[CR]2a\f[R].-If no type is specified (i.e.\ the value is set to True, by e.g.-\f[CR]--metadata=pdfa\f[R] or \f[CR]pdfa: true\f[R] in a YAML metadata-block), \f[CR]1b:2005\f[R] will be used as default, for reasons of-backwards compatibility.-Using \f[CR]--variable=pdfa\f[R] without specified value is not-supported.-To successfully generate PDF/A the required ICC color profiles have to-be available and the content and all included files (such as images)-have to be standard-conforming.-The ICC profiles and output intent may be specified using the variables-\f[CR]pdfaiccprofile\f[R] and \f[CR]pdfaintent\f[R].-See also ConTeXt PDFA for more details.-.TP-\f[CR]pdfaiccprofile\f[R]-when used in conjunction with \f[CR]pdfa\f[R], specifies the ICC profile-to use in the PDF, e.g.\ \f[CR]default.cmyk\f[R].-If left unspecified, \f[CR]sRGB.icc\f[R] is used as default.-May be repeated to include multiple profiles.-Note that the profiles have to be available on the system.-They can be obtained from ConTeXt ICC Profiles.-.TP-\f[CR]pdfaintent\f[R]-when used in conjunction with \f[CR]pdfa\f[R], specifies the output-intent for the colors,-e.g.\ \f[CR]ISO coated v2 300\[rs]letterpercent\[rs]space (ECI)\f[R] If-left unspecified, \f[CR]sRGB IEC61966-2.1\f[R] is used as default.-.TP-\f[CR]toc\f[R]-include table of contents (can also be set using-\f[CR]--toc/--table-of-contents\f[R])-.TP-\f[CR]urlstyle\f[R]-typeface style for links without link text, e.g.\ \f[CR]normal\f[R],-\f[CR]bold\f[R], \f[CR]slanted\f[R], \f[CR]boldslanted\f[R],-\f[CR]type\f[R], \f[CR]cap\f[R], \f[CR]small\f[R]-.TP-\f[CR]whitespace\f[R]-spacing between paragraphs, e.g.\ \f[CR]none\f[R], \f[CR]small\f[R]-(using \f[CR]setupwhitespace\f[R])-.TP-\f[CR]includesource\f[R]-include all source documents as file attachments in the PDF file-.SS Variables for \f[CR]wkhtmltopdf\f[R]-Pandoc uses these variables when creating a PDF with-\f[CR]wkhtmltopdf\f[R].-The \f[CR]--css\f[R] option also affects the output.-.TP-\f[CR]footer-html\f[R], \f[CR]header-html\f[R]-add information to the header and footer-.TP-\f[CR]margin-left\f[R], \f[CR]margin-right\f[R], \f[CR]margin-top\f[R], \f[CR]margin-bottom\f[R]-set the page margins-.TP-\f[CR]papersize\f[R]-sets the PDF paper size-.SS Variables for man pages-.TP-\f[CR]adjusting\f[R]-adjusts text to left (\f[CR]l\f[R]), right (\f[CR]r\f[R]), center-(\f[CR]c\f[R]), or both (\f[CR]b\f[R]) margins-.TP-\f[CR]footer\f[R]-footer in man pages-.TP-\f[CR]header\f[R]-header in man pages-.TP-\f[CR]section\f[R]-section number in man pages-.SS Variables for Typst-.TP-\f[CR]margin\f[R]-A dictionary with the fields defined in the Typst documentation:-\f[CR]x\f[R], \f[CR]y\f[R], \f[CR]top\f[R], \f[CR]bottom\f[R],-\f[CR]left\f[R], \f[CR]right\f[R].-.TP-\f[CR]papersize\f[R]-Paper size: \f[CR]a4\f[R], \f[CR]us-letter\f[R], etc.-.TP-\f[CR]mainfont\f[R]-Name of system font to use for the main font.-.TP-\f[CR]fontsize\f[R]-Font size (e.g., \f[CR]12pt\f[R]).-.TP-\f[CR]section-numbering\f[R]-Schema to use for numbering sections, e.g.\ \f[CR]1.A.1\f[R].-.TP-\f[CR]columns\f[R]-Number of columns for body text.-.SS Variables for ms-.TP-\f[CR]fontfamily\f[R]-\f[CR]A\f[R] (Avant Garde), \f[CR]B\f[R] (Bookman), \f[CR]C\f[R]-(Helvetica), \f[CR]HN\f[R] (Helvetica Narrow), \f[CR]P\f[R] (Palatino),-or \f[CR]T\f[R] (Times New Roman).-This setting does not affect source code, which is always displayed-using monospace Courier.-These built-in fonts are limited in their coverage of characters.-Additional fonts may be installed using the script-\f[CR]install-font.sh\f[R] provided by Peter Schaffter and documented in-detail on his web site.-.TP-\f[CR]indent\f[R]-paragraph indent (e.g.\ \f[CR]2m\f[R])-.TP-\f[CR]lineheight\f[R]-line height (e.g.\ \f[CR]12p\f[R])-.TP-\f[CR]pointsize\f[R]-point size (e.g.\ \f[CR]10p\f[R])-.SS Variables set automatically-Pandoc sets these variables automatically in response to options or-document contents; users can also modify them.-These vary depending on the output format, and include the following:-.TP-\f[CR]body\f[R]-body of document-.TP-\f[CR]date-meta\f[R]-the \f[CR]date\f[R] variable converted to ISO 8601 YYYY-MM-DD, included-in all HTML based formats (dzslides, epub, html, html4, html5, revealjs,-s5, slideous, slidy).-The recognized formats for \f[CR]date\f[R] are: \f[CR]mm/dd/yyyy\f[R],-\f[CR]mm/dd/yy\f[R], \f[CR]yyyy-mm-dd\f[R] (ISO 8601),-\f[CR]dd MM yyyy\f[R] (e.g.\ either \f[CR]02 Apr 2018\f[R] or-\f[CR]02 April 2018\f[R]), \f[CR]MM dd, yyyy\f[R]-(e.g.\ \f[CR]Apr. 02, 2018\f[R] or-\f[CR]April 02, 2018),\f[R]yyyy[mm[dd]]\f[CR](e.g.\f[R]20180402,-\f[CR]201804\f[R] or \f[CR]2018\f[R]).-.TP-\f[CR]header-includes\f[R]-contents specified by \f[CR]-H/--include-in-header\f[R] (may have-multiple values)-.TP-\f[CR]include-before\f[R]-contents specified by \f[CR]-B/--include-before-body\f[R] (may have-multiple values)-.TP-\f[CR]include-after\f[R]-contents specified by \f[CR]-A/--include-after-body\f[R] (may have-multiple values)-.TP-\f[CR]meta-json\f[R]-JSON representation of all of the document\[cq]s metadata.-Field values are transformed to the selected output format.-.TP-\f[CR]numbersections\f[R]-non-null value if \f[CR]-N/--number-sections\f[R] was specified-.TP-\f[CR]sourcefile\f[R], \f[CR]outputfile\f[R]-source and destination filenames, as given on the command line.-\f[CR]sourcefile\f[R] can also be a list if input comes from multiple-files, or empty if input is from stdin.-You can use the following snippet in your template to distinguish them:-.RS-.IP-.EX-$if(sourcefile)$-$for(sourcefile)$-$sourcefile$-$endfor$-$else$-(stdin)-$endif$-.EE-.PP-Similarly, \f[CR]outputfile\f[R] can be \f[CR]-\f[R] if output goes to-the terminal.-.PP-If you need absolute paths, use e.g.\ \f[CR]$curdir$/$sourcefile$\f[R].-.RE-.TP-\f[CR]curdir\f[R]-working directory from which pandoc is run.-.TP-\f[CR]pandoc-version\f[R]-pandoc version.-.TP-\f[CR]toc\f[R]-non-null value if \f[CR]--toc/--table-of-contents\f[R] was specified-.TP-\f[CR]toc-title\f[R]-title of table of contents (works only with EPUB, HTML, revealjs,-opendocument, odt, docx, pptx, beamer, LaTeX)-.SH EXTENSIONS-The behavior of some of the readers and writers can be adjusted by-enabling or disabling various extensions.-.PP-An extension can be enabled by adding \f[CR]+EXTENSION\f[R] to the-format name and disabled by adding \f[CR]-EXTENSION\f[R].-For example, \f[CR]--from markdown_strict+footnotes\f[R] is strict-Markdown with footnotes enabled, while-\f[CR]--from markdown-footnotes-pipe_tables\f[R] is pandoc\[cq]s-Markdown without footnotes or pipe tables.-.PP-The markdown reader and writer make by far the most use of extensions.-Extensions only used by them are therefore covered in the section-Pandoc\[cq]s Markdown below (see Markdown variants for-\f[CR]commonmark\f[R] and \f[CR]gfm\f[R]).-In the following, extensions that also work for other formats are-covered.-.PP-Note that markdown extensions added to the \f[CR]ipynb\f[R] format-affect Markdown cells in Jupyter notebooks (as do command-line options-like \f[CR]--markdown-headings\f[R]).-.SS Typography-.SS Extension: \f[CR]smart\f[R]-Interpret straight quotes as curly quotes, \f[CR]---\f[R] as em-dashes,-\f[CR]--\f[R] as en-dashes, and \f[CR]...\f[R] as ellipses.-Nonbreaking spaces are inserted after certain abbreviations, such as-\[lq]Mr.\[rq]-.PP-This extension can be enabled/disabled for the following formats:-.TP-input formats-\f[CR]markdown\f[R], \f[CR]commonmark\f[R], \f[CR]latex\f[R],-\f[CR]mediawiki\f[R], \f[CR]org\f[R], \f[CR]rst\f[R], \f[CR]twiki\f[R],-\f[CR]html\f[R]-.TP-output formats-\f[CR]markdown\f[R], \f[CR]latex\f[R], \f[CR]context\f[R],-\f[CR]rst\f[R]-.TP-enabled by default in-\f[CR]markdown\f[R], \f[CR]latex\f[R], \f[CR]context\f[R] (both input-and output)-.PP-Note: If you are \f[I]writing\f[R] Markdown, then the \f[CR]smart\f[R]-extension has the reverse effect: what would have been curly quotes-comes out straight.-.PP-In LaTeX, \f[CR]smart\f[R] means to use the standard TeX ligatures for-quotation marks (\f[CR]\[ga]\[ga]\f[R] and \f[CR]\[aq]\[aq]\f[R] for-double quotes, \f[CR]\[ga]\f[R] and \f[CR]\[aq]\f[R] for single quotes)-and dashes (\f[CR]--\f[R] for en-dash and \f[CR]---\f[R] for em-dash).-If \f[CR]smart\f[R] is disabled, then in reading LaTeX pandoc will parse-these characters literally.-In writing LaTeX, enabling \f[CR]smart\f[R] tells pandoc to use the-ligatures when possible; if \f[CR]smart\f[R] is disabled pandoc will use-unicode quotation mark and dash characters.-.SS Headings and sections-.SS Extension: \f[CR]auto_identifiers\f[R]-A heading without an explicitly specified identifier will be-automatically assigned a unique identifier based on the heading text.-.PP-This extension can be enabled/disabled for the following formats:-.TP-input formats-\f[CR]markdown\f[R], \f[CR]latex\f[R], \f[CR]rst\f[R],-\f[CR]mediawiki\f[R], \f[CR]textile\f[R]-.TP-output formats-\f[CR]markdown\f[R], \f[CR]muse\f[R]-.TP-enabled by default in-\f[CR]markdown\f[R], \f[CR]muse\f[R]-.PP-The default algorithm used to derive the identifier from the heading-text is:-.IP \[bu] 2-Remove all formatting, links, etc.-.IP \[bu] 2-Remove all footnotes.-.IP \[bu] 2-Remove all non-alphanumeric characters, except underscores, hyphens, and-periods.-.IP \[bu] 2-Replace all spaces and newlines with hyphens.-.IP \[bu] 2-Convert all alphabetic characters to lowercase.-.IP \[bu] 2-Remove everything up to the first letter (identifiers may not begin with-a number or punctuation mark).-.IP \[bu] 2-If nothing is left after this, use the identifier \f[CR]section\f[R].-.PP-Thus, for example,-.RS -14n-.IP-.EX- Heading Identifier- ----------------------------- ------------------------------ Heading identifiers in HTML heading-identifiers-in-html- Maître d\[aq]hôtel maître-dhôtel- *Dogs*?--in *my* house? dogs--in-my-house- [HTML], [S5], or [RTF]? html-s5-or-rtf- 3. Applications applications- 33 section-.EE-.RE-.PP-These rules should, in most cases, allow one to determine the identifier-from the heading text.-The exception is when several headings have the same text; in this case,-the first will get an identifier as described above; the second will get-the same identifier with \f[CR]-1\f[R] appended; the third with-\f[CR]-2\f[R]; and so on.-.PP-(However, a different algorithm is used if-\f[CR]gfm_auto_identifiers\f[R] is enabled; see below.)-.PP-These identifiers are used to provide link targets in the table of-contents generated by the \f[CR]--toc|--table-of-contents\f[R] option.-They also make it easy to provide links from one section of a document-to another.-A link to this section, for example, might look like this:-.IP-.EX-See the section on-[heading identifiers](#heading-identifiers-in-html-latex-and-context).-.EE-.PP-Note, however, that this method of providing links to sections works-only in HTML, LaTeX, and ConTeXt formats.-.PP-If the \f[CR]--section-divs\f[R] option is specified, then each section-will be wrapped in a \f[CR]section\f[R] (or a \f[CR]div\f[R], if-\f[CR]html4\f[R] was specified), and the identifier will be attached to-the enclosing \f[CR]<section>\f[R] (or \f[CR]<div>\f[R]) tag rather than-the heading itself.-This allows entire sections to be manipulated using JavaScript or-treated differently in CSS.-.SS Extension: \f[CR]ascii_identifiers\f[R]-Causes the identifiers produced by \f[CR]auto_identifiers\f[R] to be-pure ASCII.-Accents are stripped off of accented Latin letters, and non-Latin-letters are omitted.-.SS Extension: \f[CR]gfm_auto_identifiers\f[R]-Changes the algorithm used by \f[CR]auto_identifiers\f[R] to conform to-GitHub\[cq]s method.-Spaces are converted to dashes (\f[CR]-\f[R]), uppercase characters to-lowercase characters, and punctuation characters other than \f[CR]-\f[R]-and \f[CR]_\f[R] are removed.-Emojis are replaced by their names.-.SS Math Input-The extensions \f[CR]tex_math_dollars\f[R], \f[CR]tex_math_gfm\f[R],-\f[CR]tex_math_single_backslash\f[R], and-\f[CR]tex_math_double_backslash\f[R] are described in the section about-Pandoc\[cq]s Markdown.-.PP-However, they can also be used with HTML input.-This is handy for reading web pages formatted using MathJax, for-example.-.SS Raw HTML/TeX-The following extensions are described in more detail in their-respective sections of Pandoc\[cq]s Markdown:-.IP \[bu] 2-\f[CR]raw_html\f[R] allows HTML elements which are not representable in-pandoc\[cq]s AST to be parsed as raw HTML.-By default, this is disabled for HTML input.-.IP \[bu] 2-\f[CR]raw_tex\f[R] allows raw LaTeX, TeX, and ConTeXt to be included in-a document.-This extension can be enabled/disabled for the following formats (in-addition to \f[CR]markdown\f[R]):-.RS 2-.TP-input formats-\f[CR]latex\f[R], \f[CR]textile\f[R], \f[CR]html\f[R] (environments,-\f[CR]\[rs]ref\f[R], and \f[CR]\[rs]eqref\f[R] only), \f[CR]ipynb\f[R]-.TP-output formats-\f[CR]textile\f[R], \f[CR]commonmark\f[R]-.PP-Note: as applied to \f[CR]ipynb\f[R], \f[CR]raw_html\f[R] and-\f[CR]raw_tex\f[R] affect not only raw TeX in markdown cells, but data-with mime type \f[CR]text/html\f[R] in output cells.-Since the \f[CR]ipynb\f[R] reader attempts to preserve the richest-possible outputs when several options are given, you will get best-results if you disable \f[CR]raw_html\f[R] and \f[CR]raw_tex\f[R] when-converting to formats like \f[CR]docx\f[R] which don\[cq]t allow raw-\f[CR]html\f[R] or \f[CR]tex\f[R].-.RE-.IP \[bu] 2-\f[CR]native_divs\f[R] causes HTML \f[CR]div\f[R] elements to be parsed-as native pandoc Div blocks.-If you want them to be parsed as raw HTML, use-\f[CR]-f html-native_divs+raw_html\f[R].-.IP \[bu] 2-\f[CR]native_spans\f[R] causes HTML \f[CR]span\f[R] elements to be-parsed as native pandoc Span inlines.-If you want them to be parsed as raw HTML, use-\f[CR]-f html-native_spans+raw_html\f[R].-If you want to drop all \f[CR]div\f[R]s and \f[CR]span\f[R]s when-converting HTML to Markdown, you can use-\f[CR]pandoc -f html-native_divs-native_spans -t markdown\f[R].-.SS Literate Haskell support-.SS Extension: \f[CR]literate_haskell\f[R]-Treat the document as literate Haskell source.-.PP-This extension can be enabled/disabled for the following formats:-.TP-input formats-\f[CR]markdown\f[R], \f[CR]rst\f[R], \f[CR]latex\f[R]-.TP-output formats-\f[CR]markdown\f[R], \f[CR]rst\f[R], \f[CR]latex\f[R], \f[CR]html\f[R]-.PP-If you append \f[CR]+lhs\f[R] (or \f[CR]+literate_haskell\f[R]) to one-of the formats above, pandoc will treat the document as literate Haskell-source.-This means that-.IP \[bu] 2-In Markdown input, \[lq]bird track\[rq] sections will be parsed as-Haskell code rather than block quotations.-Text between \f[CR]\[rs]begin{code}\f[R] and \f[CR]\[rs]end{code}\f[R]-will also be treated as Haskell code.-For ATX-style headings the character `=' will be used instead of `#'.-.IP \[bu] 2-In Markdown output, code blocks with classes \f[CR]haskell\f[R] and-\f[CR]literate\f[R] will be rendered using bird tracks, and block-quotations will be indented one space, so they will not be treated as-Haskell code.-In addition, headings will be rendered setext-style (with underlines)-rather than ATX-style (with `#' characters).-(This is because ghc treats `#' characters in column 1 as introducing-line numbers.)-.IP \[bu] 2-In restructured text input, \[lq]bird track\[rq] sections will be parsed-as Haskell code.-.IP \[bu] 2-In restructured text output, code blocks with class \f[CR]haskell\f[R]-will be rendered using bird tracks.-.IP \[bu] 2-In LaTeX input, text in \f[CR]code\f[R] environments will be parsed as-Haskell code.-.IP \[bu] 2-In LaTeX output, code blocks with class \f[CR]haskell\f[R] will be-rendered inside \f[CR]code\f[R] environments.-.IP \[bu] 2-In HTML output, code blocks with class \f[CR]haskell\f[R] will be-rendered with class \f[CR]literatehaskell\f[R] and bird tracks.-.PP-Examples:-.IP-.EX-pandoc -f markdown+lhs -t html-.EE-.PP-reads literate Haskell source formatted with Markdown conventions and-writes ordinary HTML (without bird tracks).-.IP-.EX-pandoc -f markdown+lhs -t html+lhs-.EE-.PP-writes HTML with the Haskell code in bird tracks, so it can be copied-and pasted as literate Haskell source.-.PP-Note that GHC expects the bird tracks in the first column, so indented-literate code blocks (e.g.\ inside an itemized environment) will not be-picked up by the Haskell compiler.-.SS Other extensions-.SS Extension: \f[CR]empty_paragraphs\f[R]-Allows empty paragraphs.-By default empty paragraphs are omitted.-.PP-This extension can be enabled/disabled for the following formats:-.TP-input formats-\f[CR]docx\f[R], \f[CR]html\f[R]-.TP-output formats-\f[CR]docx\f[R], \f[CR]odt\f[R], \f[CR]opendocument\f[R],-\f[CR]html\f[R]-.SS Extension: \f[CR]native_numbering\f[R]-Enables native numbering of figures and tables.-Enumeration starts at 1.-.PP-This extension can be enabled/disabled for the following formats:-.TP-output formats-\f[CR]odt\f[R], \f[CR]opendocument\f[R], \f[CR]docx\f[R]-.SS Extension: \f[CR]xrefs_name\f[R]-Links to headings, figures and tables inside the document are-substituted with cross-references that will use the name or caption of-the referenced item.-The original link text is replaced once the generated document is-refreshed.-This extension can be combined with \f[CR]xrefs_number\f[R] in which-case numbers will appear before the name.-.PP-Text in cross-references is only made consistent with the referenced-item once the document has been refreshed.-.PP-This extension can be enabled/disabled for the following formats:-.TP-output formats-\f[CR]odt\f[R], \f[CR]opendocument\f[R]-.SS Extension: \f[CR]xrefs_number\f[R]-Links to headings, figures and tables inside the document are-substituted with cross-references that will use the number of the-referenced item.-The original link text is discarded.-This extension can be combined with \f[CR]xrefs_name\f[R] in which case-the name or caption numbers will appear after the number.-.PP-For the \f[CR]xrefs_number\f[R] to be useful heading numbers must be-enabled in the generated document, also table and figure captions must-be enabled using for example the \f[CR]native_numbering\f[R] extension.-.PP-Numbers in cross-references are only visible in the final document once-it has been refreshed.-.PP-This extension can be enabled/disabled for the following formats:-.TP-output formats-\f[CR]odt\f[R], \f[CR]opendocument\f[R]-.SS Extension: \f[CR]styles\f[R]-When converting from docx, read all docx styles as divs (for paragraph-styles) and spans (for character styles) regardless of whether pandoc-understands the meaning of these styles.-This can be used with docx custom styles.-Disabled by default.-.TP-input formats-\f[CR]docx\f[R]-.SS Extension: \f[CR]amuse\f[R]-In the \f[CR]muse\f[R] input format, this enables Text::Amuse extensions-to Emacs Muse markup.-.SS Extension: \f[CR]raw_markdown\f[R]-In the \f[CR]ipynb\f[R] input format, this causes Markdown cells to be-included as raw Markdown blocks (allowing lossless round-tripping)-rather than being parsed.-Use this only when you are targeting \f[CR]ipynb\f[R] or a-markdown-based output format.-.SS Extension: \f[CR]citations\f[R]-When the \f[CR]citations\f[R] extension is enabled in \f[CR]org\f[R],-org-cite and org-ref style citations will be parsed as native pandoc-citations.-.PP-When \f[CR]citations\f[R] is enabled in \f[CR]docx\f[R], citations-inserted by Zotero or Mendeley or EndNote plugins will be parsed as-native pandoc citations.-(Otherwise, the formatted citations generated by the bibliographic-software will be parsed as regular text.)-.SS Extension: \f[CR]fancy_lists\f[R]-Some aspects of Pandoc\[cq]s Markdown fancy lists are also accepted in-\f[CR]org\f[R] input, mimicking the option-\f[CR]org-list-allow-alphabetical\f[R] in Emacs.-As in Org Mode, enabling this extension allows lowercase and uppercase-alphabetical markers for ordered lists to be parsed in addition to-arabic ones.-Note that for Org, this does not include roman numerals or the-\f[CR]#\f[R] placeholder that are enabled by the extension in-Pandoc\[cq]s Markdown.-.SS Extension: \f[CR]element_citations\f[R]-In the \f[CR]jats\f[R] output formats, this causes reference items to be-replaced with \f[CR]<element-citation>\f[R] elements.-These elements are not influenced by CSL styles, but all information on-the item is included in tags.-.SS Extension: \f[CR]ntb\f[R]-In the \f[CR]context\f[R] output format this enables the use of Natural-Tables (TABLE) instead of the default Extreme Tables (xtables).-Natural tables allow more fine-grained global customization but come at-a performance penalty compared to extreme tables.-.SS Extension: \f[CR]tagging\f[R]-Enabling this extension with \f[CR]context\f[R] output will produce-markup suitable for the production of tagged PDFs.-This includes additional markers for paragraphs and alternative markup-for emphasized text.-The \f[CR]emphasis-command\f[R] template variable is set if the-extension is enabled.-.SH PANDOC\[cq]S MARKDOWN-Pandoc understands an extended and slightly revised version of John-Gruber\[cq]s Markdown syntax.-This document explains the syntax, noting differences from original-Markdown.-Except where noted, these differences can be suppressed by using the-\f[CR]markdown_strict\f[R] format instead of \f[CR]markdown\f[R].-Extensions can be enabled or disabled to specify the behavior more-granularly.-They are described in the following.-See also Extensions above, for extensions that work also on other-formats.-.SS Philosophy-Markdown is designed to be easy to write, and, even more importantly,-easy to read:-.RS-.PP-A Markdown-formatted document should be publishable as-is, as plain-text, without looking like it\[cq]s been marked up with tags or-formatting instructions.-\[en] John Gruber-.RE-.PP-This principle has guided pandoc\[cq]s decisions in finding syntax for-tables, footnotes, and other extensions.-.PP-There is, however, one respect in which pandoc\[cq]s aims are different-from the original aims of Markdown.-Whereas Markdown was originally designed with HTML generation in mind,-pandoc is designed for multiple output formats.-Thus, while pandoc allows the embedding of raw HTML, it discourages it,-and provides other, non-HTMLish ways of representing important document-elements like definition lists, tables, mathematics, and footnotes.-.SS Paragraphs-A paragraph is one or more lines of text followed by one or more blank-lines.-Newlines are treated as spaces, so you can reflow your paragraphs as you-like.-If you need a hard line break, put two or more spaces at the end of a-line.-.SS Extension: \f[CR]escaped_line_breaks\f[R]-A backslash followed by a newline is also a hard line break.-Note: in multiline and grid table cells, this is the only way to create-a hard line break, since trailing spaces in the cells are ignored.-.SS Headings-There are two kinds of headings: Setext and ATX.-.SS Setext-style headings-A setext-style heading is a line of text \[lq]underlined\[rq] with a row-of \f[CR]=\f[R] signs (for a level-one heading) or \f[CR]-\f[R] signs-(for a level-two heading):-.IP-.EX-A level-one heading-===================--A level-two heading---------------------.EE-.PP-The heading text can contain inline formatting, such as emphasis (see-Inline formatting, below).-.SS ATX-style headings-An ATX-style heading consists of one to six \f[CR]#\f[R] signs and a-line of text, optionally followed by any number of \f[CR]#\f[R] signs.-The number of \f[CR]#\f[R] signs at the beginning of the line is the-heading level:-.IP-.EX-## A level-two heading--### A level-three heading ###-.EE-.PP-As with setext-style headings, the heading text can contain formatting:-.IP-.EX-# A level-one heading with a [link](/url) and *emphasis*-.EE-.SS Extension: \f[CR]blank_before_header\f[R]-Original Markdown syntax does not require a blank line before a heading.-Pandoc does require this (except, of course, at the beginning of the-document).-The reason for the requirement is that it is all too easy for a-\f[CR]#\f[R] to end up at the beginning of a line by accident (perhaps-through line wrapping).-Consider, for example:-.IP-.EX-I like several of their flavors of ice cream:-#22, for example, and #5.-.EE-.SS Extension: \f[CR]space_in_atx_header\f[R]-Many Markdown implementations do not require a space between the opening-\f[CR]#\f[R]s of an ATX heading and the heading text, so that-\f[CR]#5 bolt\f[R] and \f[CR]#hashtag\f[R] count as headings.-With this extension, pandoc does require the space.-.SS Heading identifiers-See also the \f[CR]auto_identifiers\f[R] extension above.-.SS Extension: \f[CR]header_attributes\f[R]-Headings can be assigned attributes using this syntax at the end of the-line containing the heading text:-.IP-.EX-{#identifier .class .class key=value key=value}-.EE-.PP-Thus, for example, the following headings will all be assigned the-identifier \f[CR]foo\f[R]:-.IP-.EX-# My heading {#foo}--## My heading ## {#foo}--My other heading {#foo}-----------------.EE-.PP-(This syntax is compatible with PHP Markdown Extra.)-.PP-Note that although this syntax allows assignment of classes and-key/value attributes, writers generally don\[cq]t use all of this-information.-Identifiers, classes, and key/value attributes are used in HTML and-HTML-based formats such as EPUB and slidy.-Identifiers are used for labels and link anchors in the LaTeX, ConTeXt,-Textile, Jira markup, and AsciiDoc writers.-.PP-Headings with the class \f[CR]unnumbered\f[R] will not be numbered, even-if \f[CR]--number-sections\f[R] is specified.-A single hyphen (\f[CR]-\f[R]) in an attribute context is equivalent to-\f[CR].unnumbered\f[R], and preferable in non-English documents.-So,-.IP-.EX-# My heading {-}-.EE-.PP-is just the same as-.IP-.EX-# My heading {.unnumbered}-.EE-.PP-If the \f[CR]unlisted\f[R] class is present in addition to-\f[CR]unnumbered\f[R], the heading will not be included in a table of-contents.-(Currently this feature is only implemented for certain formats: those-based on LaTeX and HTML, PowerPoint, and RTF.)-.SS Extension: \f[CR]implicit_header_references\f[R]-Pandoc behaves as if reference links have been defined for each heading.-So, to link to a heading-.IP-.EX-# Heading identifiers in HTML-.EE-.PP-you can simply write-.IP-.EX-[Heading identifiers in HTML]-.EE-.PP-or-.IP-.EX-[Heading identifiers in HTML][]-.EE-.PP-or-.IP-.EX-[the section on heading identifiers][heading identifiers in-HTML]-.EE-.PP-instead of giving the identifier explicitly:-.IP-.EX-[Heading identifiers in HTML](#heading-identifiers-in-html)-.EE-.PP-If there are multiple headings with identical text, the corresponding-reference will link to the first one only, and you will need to use-explicit links to link to the others, as described above.-.PP-Like regular reference links, these references are case-insensitive.-.PP-Explicit link reference definitions always take priority over implicit-heading references.-So, in the following example, the link will point to \f[CR]bar\f[R], not-to \f[CR]#foo\f[R]:-.IP-.EX-# Foo--[foo]: bar--See [foo]-.EE-.SS Block quotations-Markdown uses email conventions for quoting blocks of text.-A block quotation is one or more paragraphs or other block elements-(such as lists or headings), with each line preceded by a \f[CR]>\f[R]-character and an optional space.-(The \f[CR]>\f[R] need not start at the left margin, but it should not-be indented more than three spaces.)-.IP-.EX-> This is a block quote. This-> paragraph has two lines.->-> 1. This is a list inside a block quote.-> 2. Second item.-.EE-.PP-A \[lq]lazy\[rq] form, which requires the \f[CR]>\f[R] character only on-the first line of each block, is also allowed:-.IP-.EX-> This is a block quote. This-paragraph has two lines.--> 1. This is a list inside a block quote.-2. Second item.-.EE-.PP-Among the block elements that can be contained in a block quote are-other block quotes.-That is, block quotes can be nested:-.IP-.EX-> This is a block quote.->-> > A block quote within a block quote.-.EE-.PP-If the \f[CR]>\f[R] character is followed by an optional space, that-space will be considered part of the block quote marker and not part of-the indentation of the contents.-Thus, to put an indented code block in a block quote, you need five-spaces after the \f[CR]>\f[R]:-.IP-.EX-> code-.EE-.SS Extension: \f[CR]blank_before_blockquote\f[R]-Original Markdown syntax does not require a blank line before a block-quote.-Pandoc does require this (except, of course, at the beginning of the-document).-The reason for the requirement is that it is all too easy for a-\f[CR]>\f[R] to end up at the beginning of a line by accident (perhaps-through line wrapping).-So, unless the \f[CR]markdown_strict\f[R] format is used, the following-does not produce a nested block quote in pandoc:-.IP-.EX-> This is a block quote.->> Not nested, since \[ga]blank_before_blockquote\[ga] is enabled by default-.EE-.SS Verbatim (code) blocks-.SS Indented code blocks-A block of text indented four spaces (or one tab) is treated as verbatim-text: that is, special characters do not trigger special formatting, and-all spaces and line breaks are preserved.-For example,-.IP-.EX- if (a > 3) {- moveShip(5 * gravity, DOWN);- }-.EE-.PP-The initial (four space or one tab) indentation is not considered part-of the verbatim text, and is removed in the output.-.PP-Note: blank lines in the verbatim text need not begin with four spaces.-.SS Fenced code blocks-.SS Extension: \f[CR]fenced_code_blocks\f[R]-In addition to standard indented code blocks, pandoc supports-\f[I]fenced\f[R] code blocks.-These begin with a row of three or more tildes (\f[CR]\[ti]\f[R]) and-end with a row of tildes that must be at least as long as the starting-row.-Everything between these lines is treated as code.-No indentation is necessary:-.IP-.EX-\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]-if (a > 3) {- moveShip(5 * gravity, DOWN);-}-\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]-.EE-.PP-Like regular code blocks, fenced code blocks must be separated from-surrounding text by blank lines.-.PP-If the code itself contains a row of tildes or backticks, just use a-longer row of tildes or backticks at the start and end:-.IP-.EX-\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]-\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]-code including tildes-\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]-\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]-.EE-.SS Extension: \f[CR]backtick_code_blocks\f[R]-Same as \f[CR]fenced_code_blocks\f[R], but uses backticks-(\f[CR]\[ga]\f[R]) instead of tildes (\f[CR]\[ti]\f[R]).-.SS Extension: \f[CR]fenced_code_attributes\f[R]-Optionally, you may attach attributes to fenced or backtick code block-using this syntax:-.IP-.EX-\[ti]\[ti]\[ti]\[ti] {#mycode .haskell .numberLines startFrom=\[dq]100\[dq]}-qsort [] = []-qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++- qsort (filter (>= x) xs)-\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]\[ti]-.EE-.PP-Here \f[CR]mycode\f[R] is an identifier, \f[CR]haskell\f[R] and-\f[CR]numberLines\f[R] are classes, and \f[CR]startFrom\f[R] is an-attribute with value \f[CR]100\f[R].-Some output formats can use this information to do syntax highlighting.-Currently, the only output formats that use this information are HTML,-LaTeX, Docx, Ms, and PowerPoint.-If highlighting is supported for your output format and language, then-the code block above will appear highlighted, with numbered lines.-(To see which languages are supported, type-\f[CR]pandoc --list-highlight-languages\f[R].)-Otherwise, the code block above will appear as follows:-.IP-.EX-<pre id=\[dq]mycode\[dq] class=\[dq]haskell numberLines\[dq] startFrom=\[dq]100\[dq]>- <code>- ...- </code>-</pre>-.EE-.PP-The \f[CR]numberLines\f[R] (or \f[CR]number-lines\f[R]) class will cause-the lines of the code block to be numbered, starting with \f[CR]1\f[R]-or the value of the \f[CR]startFrom\f[R] attribute.-The \f[CR]lineAnchors\f[R] (or \f[CR]line-anchors\f[R]) class will cause-the lines to be clickable anchors in HTML output.-.PP-A shortcut form can also be used for specifying the language of the code-block:-.IP-.EX-\[ga]\[ga]\[ga]haskell-qsort [] = []-\[ga]\[ga]\[ga]-.EE-.PP-This is equivalent to:-.IP-.EX-\[ga]\[ga]\[ga] {.haskell}-qsort [] = []-\[ga]\[ga]\[ga]-.EE-.PP-This shortcut form may be combined with attributes:-.IP-.EX-\[ga]\[ga]\[ga]haskell {.numberLines}-qsort [] = []-\[ga]\[ga]\[ga]-.EE-.PP-Which is equivalent to:-.IP-.EX-\[ga]\[ga]\[ga] {.haskell .numberLines}-qsort [] = []-\[ga]\[ga]\[ga]-.EE-.PP-If the \f[CR]fenced_code_attributes\f[R] extension is disabled, but-input contains class attribute(s) for the code block, the first class-attribute will be printed after the opening fence as a bare word.-.PP-To prevent all highlighting, use the \f[CR]--no-highlight\f[R] flag.-To set the highlighting style, use \f[CR]--highlight-style\f[R].-For more information on highlighting, see Syntax highlighting, below.-.SS Line blocks-.SS Extension: \f[CR]line_blocks\f[R]-A line block is a sequence of lines beginning with a vertical bar-(\f[CR]|\f[R]) followed by a space.-The division into lines will be preserved in the output, as will any-leading spaces; otherwise, the lines will be formatted as Markdown.-This is useful for verse and addresses:-.IP-.EX-| The limerick packs laughs anatomical-| In space that is quite economical.-| But the good ones I\[aq]ve seen-| So seldom are clean-| And the clean ones so seldom are comical--| 200 Main St.-| Berkeley, CA 94718-.EE-.PP-The lines can be hard-wrapped if needed, but the continuation line must-begin with a space.-.IP-.EX-| The Right Honorable Most Venerable and Righteous Samuel L.- Constable, Jr.-| 200 Main St.-| Berkeley, CA 94718-.EE-.PP-Inline formatting (such as emphasis) is allowed in the content (though-it can\[cq]t cross line boundaries).-Block-level formatting (such as block quotes or lists) is not-recognized.-.PP-This syntax is borrowed from reStructuredText.-.SS Lists-.SS Bullet lists-A bullet list is a list of bulleted list items.-A bulleted list item begins with a bullet (\f[CR]*\f[R], \f[CR]+\f[R],-or \f[CR]-\f[R]).-Here is a simple example:-.IP-.EX-* one-* two-* three-.EE-.PP-This will produce a \[lq]compact\[rq] list.-If you want a \[lq]loose\[rq] list, in which each item is formatted as a-paragraph, put spaces between the items:-.IP-.EX-* one--* two--* three-.EE-.PP-The bullets need not be flush with the left margin; they may be indented-one, two, or three spaces.-The bullet must be followed by whitespace.-.PP-List items look best if subsequent lines are flush with the first line-(after the bullet):-.IP-.EX-* here is my first- list item.-* and my second.-.EE-.PP-But Markdown also allows a \[lq]lazy\[rq] format:-.IP-.EX-* here is my first-list item.-* and my second.-.EE-.SS Block content in list items-A list item may contain multiple paragraphs and other block-level-content.-However, subsequent paragraphs must be preceded by a blank line and-indented to line up with the first non-space content after the list-marker.-.IP-.EX- * First paragraph.-- Continued.-- * Second paragraph. With a code block, which must be indented- eight spaces:-- { code }-.EE-.PP-Exception: if the list marker is followed by an indented code block,-which must begin 5 spaces after the list marker, then subsequent-paragraphs must begin two columns after the last character of the list-marker:-.IP-.EX-* code-- continuation paragraph-.EE-.PP-List items may include other lists.-In this case the preceding blank line is optional.-The nested list must be indented to line up with the first non-space-character after the list marker of the containing list item.-.IP-.EX-* fruits- + apples- - macintosh- - red delicious- + pears- + peaches-* vegetables- + broccoli- + chard-.EE-.PP-As noted above, Markdown allows you to write list items-\[lq]lazily,\[rq] instead of indenting continuation lines.-However, if there are multiple paragraphs or other blocks in a list-item, the first line of each must be indented.-.IP-.EX-+ A lazy, lazy, list-item.--+ Another one; this looks-bad but is legal.-- Second paragraph of second-list item.-.EE-.SS Ordered lists-Ordered lists work just like bulleted lists, except that the items begin-with enumerators rather than bullets.-.PP-In original Markdown, enumerators are decimal numbers followed by a-period and a space.-The numbers themselves are ignored, so there is no difference between-this list:-.IP-.EX-1. one-2. two-3. three-.EE-.PP-and this one:-.IP-.EX-5. one-7. two-1. three-.EE-.SS Extension: \f[CR]fancy_lists\f[R]-Unlike original Markdown, pandoc allows ordered list items to be marked-with uppercase and lowercase letters and roman numerals, in addition to-Arabic numerals.-List markers may be enclosed in parentheses or followed by a single-right-parenthesis or period.-They must be separated from the text that follows by at least one space,-and, if the list marker is a capital letter with a period, by at least-two spaces.-.PP-The \f[CR]fancy_lists\f[R] extension also allows `\f[CR]#\f[R]' to be-used as an ordered list marker in place of a numeral:-.IP-.EX-#. one-#. two-.EE-.PP-Note: the `\f[CR]#\f[R]' ordered list marker doesn\[cq]t work with-\f[CR]commonmark\f[R].-.SS Extension: \f[CR]startnum\f[R]-Pandoc also pays attention to the type of list marker used, and to the-starting number, and both of these are preserved where possible in the-output format.-Thus, the following yields a list with numbers followed by a single-parenthesis, starting with 9, and a sublist with lowercase roman-numerals:-.IP-.EX- 9) Ninth-10) Tenth-11) Eleventh- i. subone- ii. subtwo- iii. subthree-.EE-.PP-Pandoc will start a new list each time a different type of list marker-is used.-So, the following will create three lists:-.IP-.EX-(2) Two-(5) Three-1. Four-* Five-.EE-.PP-If default list markers are desired, use \f[CR]#.\f[R]:-.IP-.EX-#. one-#. two-#. three-.EE-.SS Extension: \f[CR]task_lists\f[R]-Pandoc supports task lists, using the syntax of GitHub-Flavored-Markdown.-.IP-.EX-- [ ] an unchecked task list item-- [x] checked item-.EE-.SS Definition lists-.SS Extension: \f[CR]definition_lists\f[R]-Pandoc supports definition lists, using the syntax of PHP Markdown Extra-with some extensions.-.IP-.EX-Term 1--: Definition 1--Term 2 with *inline markup*--: Definition 2-- { some code, part of Definition 2 }-- Third paragraph of definition 2.-.EE-.PP-Each term must fit on one line, which may optionally be followed by a-blank line, and must be followed by one or more definitions.-A definition begins with a colon or tilde, which may be indented one or-two spaces.-.PP-A term may have multiple definitions, and each definition may consist of-one or more block elements (paragraph, code block, list, etc.), each-indented four spaces or one tab stop.-The body of the definition (not including the first line) should be-indented four spaces.-However, as with other Markdown lists, you can \[lq]lazily\[rq] omit-indentation except at the beginning of a paragraph or other block-element:-.IP-.EX-Term 1--: Definition-with lazy continuation.-- Second paragraph of the definition.-.EE-.PP-If you leave space before the definition (as in the example above), the-text of the definition will be treated as a paragraph.-In some output formats, this will mean greater spacing between-term/definition pairs.-For a more compact definition list, omit the space before the-definition:-.IP-.EX-Term 1- \[ti] Definition 1--Term 2- \[ti] Definition 2a- \[ti] Definition 2b-.EE-.PP-Note that space between items in a definition list is required.-(A variant that loosens this requirement, but disallows \[lq]lazy\[rq]-hard wrapping, can be activated with the-\f[CR]compact_definition_lists\f[R] extension.)-.SS Numbered example lists-.SS Extension: \f[CR]example_lists\f[R]-The special list marker \f[CR]\[at]\f[R] can be used for sequentially-numbered examples.-The first list item with a \f[CR]\[at]\f[R] marker will be numbered `1',-the next `2', and so on, throughout the document.-The numbered examples need not occur in a single list; each new list-using \f[CR]\[at]\f[R] will take up where the last stopped.-So, for example:-.IP-.EX-(\[at]) My first example will be numbered (1).-(\[at]) My second example will be numbered (2).--Explanation of examples.--(\[at]) My third example will be numbered (3).-.EE-.PP-Numbered examples can be labeled and referred to elsewhere in the-document:-.IP-.EX-(\[at]good) This is a good example.--As (\[at]good) illustrates, ...-.EE-.PP-The label can be any string of alphanumeric characters, underscores, or-hyphens.-.PP-Note: continuation paragraphs in example lists must always be indented-four spaces, regardless of the length of the list marker.-That is, example lists always behave as if the-\f[CR]four_space_rule\f[R] extension is set.-This is because example labels tend to be long, and indenting content to-the first non-space character after the label would be awkward.-.SS Ending a list-What if you want to put an indented code block after a list?-.IP-.EX-- item one-- item two-- { my code block }-.EE-.PP-Trouble!-Here pandoc (like other Markdown implementations) will treat-\f[CR]{ my code block }\f[R] as the second paragraph of item two, and-not as a code block.-.PP-To \[lq]cut off\[rq] the list after item two, you can insert some-non-indented content, like an HTML comment, which won\[cq]t produce-visible output in any format:-.IP-.EX-- item one-- item two--<!-- end of list -->-- { my code block }-.EE-.PP-You can use the same trick if you want two consecutive lists instead of-one big list:-.IP-.EX-1. one-2. two-3. three--<!-- -->--1. uno-2. dos-3. tres-.EE-.SS Horizontal rules-A line containing a row of three or more \f[CR]*\f[R], \f[CR]-\f[R], or-\f[CR]_\f[R] characters (optionally separated by spaces) produces a-horizontal rule:-.IP-.EX-* * * *------------------.EE-.PP-We strongly recommend that horizontal rules be separated from-surrounding text by blank lines.-If a horizontal rule is not followed by a blank line, pandoc may try to-interpret the lines that follow as a YAML metadata block or a table.-.SS Tables-Four kinds of tables may be used.-The first three kinds presuppose the use of a fixed-width font, such as-Courier.-The fourth kind can be used with proportionally spaced fonts, as it does-not require lining up columns.-.SS Extension: \f[CR]table_captions\f[R]-A caption may optionally be provided with all 4 kinds of tables (as-illustrated in the examples below).-A caption is a paragraph beginning with the string \f[CR]Table:\f[R] (or-\f[CR]table:\f[R] or just \f[CR]:\f[R]), which will be stripped off.-It may appear either before or after the table.-.SS Extension: \f[CR]simple_tables\f[R]-Simple tables look like this:-.IP-.EX- Right Left Center Default-------- ------ ---------- -------- 12 12 12 12- 123 123 123 123- 1 1 1 1--Table: Demonstration of simple table syntax.-.EE-.PP-The header and table rows must each fit on one line.-Column alignments are determined by the position of the header text-relative to the dashed line below it:-.IP \[bu] 2-If the dashed line is flush with the header text on the right side but-extends beyond it on the left, the column is right-aligned.-.IP \[bu] 2-If the dashed line is flush with the header text on the left side but-extends beyond it on the right, the column is left-aligned.-.IP \[bu] 2-If the dashed line extends beyond the header text on both sides, the-column is centered.-.IP \[bu] 2-If the dashed line is flush with the header text on both sides, the-default alignment is used (in most cases, this will be left).-.PP-The table must end with a blank line, or a line of dashes followed by a-blank line.-.PP-The column header row may be omitted, provided a dashed line is used to-end the table.-For example:-.IP-.EX-------- ------ ---------- -------- 12 12 12 12- 123 123 123 123- 1 1 1 1-------- ------ ---------- --------.EE-.PP-When the header row is omitted, column alignments are determined on the-basis of the first line of the table body.-So, in the tables above, the columns would be right, left, center, and-right aligned, respectively.-.SS Extension: \f[CR]multiline_tables\f[R]-Multiline tables allow header and table rows to span multiple lines of-text (but cells that span multiple columns or rows of the table are not-supported).-Here is an example:-.IP-.EX--------------------------------------------------------------- Centered Default Right Left- Header Aligned Aligned Aligned------------ ------- --------------- -------------------------- First row 12.0 Example of a row that- spans multiple lines.-- Second row 5.0 Here\[aq]s another one. Note- the blank line between- rows.----------------------------------------------------------------Table: Here\[aq]s the caption. It, too, may span-multiple lines.-.EE-.PP-These work like simple tables, but with the following differences:-.IP \[bu] 2-They must begin with a row of dashes, before the header text (unless the-header row is omitted).-.IP \[bu] 2-They must end with a row of dashes, then a blank line.-.IP \[bu] 2-The rows must be separated by blank lines.-.PP-In multiline tables, the table parser pays attention to the widths of-the columns, and the writers try to reproduce these relative widths in-the output.-So, if you find that one of the columns is too narrow in the output, try-widening it in the Markdown source.-.PP-The header may be omitted in multiline tables as well as simple tables:-.IP-.EX------------ ------- --------------- -------------------------- First row 12.0 Example of a row that- spans multiple lines.-- Second row 5.0 Here\[aq]s another one. Note- the blank line between- rows.------------ ------- --------------- ---------------------------: Here\[aq]s a multiline table without a header.-.EE-.PP-It is possible for a multiline table to have just one row, but the row-should be followed by a blank line (and then the row of dashes that ends-the table), or the table may be interpreted as a simple table.-.SS Extension: \f[CR]grid_tables\f[R]-Grid tables look like this:-.IP-.EX-: Sample grid table.--+---------------+---------------+--------------------+-| Fruit | Price | Advantages |-+===============+===============+====================+-| Bananas | $1.34 | - built-in wrapper |-| | | - bright color |-+---------------+---------------+--------------------+-| Oranges | $2.10 | - cures scurvy |-| | | - tasty |-+---------------+---------------+--------------------+-.EE-.PP-The row of \f[CR]=\f[R]s separates the header from the table body, and-can be omitted for a headerless table.-The cells of grid tables may contain arbitrary block elements (multiple-paragraphs, code blocks, lists, etc.).-.PP-Cells can span multiple columns or rows:-.IP-.EX-+---------------------+----------+-| Property | Earth |-+=============+=======+==========+-| | min | -89.2 °C |-| Temperature +-------+----------+-| 1961-1990 | mean | 14 °C |-| +-------+----------+-| | max | 56.7 °C |-+-------------+-------+----------+-.EE-.PP-A table header may contain more than one row:-.IP-.EX-+---------------------+-----------------------+-| Location | Temperature 1961-1990 |-| | in degree Celsius |-| +-------+-------+-------+-| | min | mean | max |-+=====================+=======+=======+=======+-| Antarctica | -89.2 | N/A | 19.8 |-+---------------------+-------+-------+-------+-| Earth | -89.2 | 14 | 56.7 |-+---------------------+-------+-------+-------+-.EE-.PP-Alignments can be specified as with pipe tables, by putting colons at-the boundaries of the separator line after the header:-.IP-.EX-+---------------+---------------+--------------------+-| Right | Left | Centered |-+==============:+:==============+:==================:+-| Bananas | $1.34 | built-in wrapper |-+---------------+---------------+--------------------+-.EE-.PP-For headerless tables, the colons go on the top line instead:-.IP-.EX-+--------------:+:--------------+:------------------:+-| Right | Left | Centered |-+---------------+---------------+--------------------+-.EE-.PP-A table foot can be defined by enclosing it with separator lines that-use \f[CR]=\f[R] instead of \f[CR]-\f[R]:-.IP-.EX- +---------------+---------------+- | Fruit | Price |- +===============+===============+- | Bananas | $1.34 |- +---------------+---------------+- | Oranges | $2.10 |- +===============+===============+- | Sum | $3.44 |- +===============+===============+-.EE-.PP-The foot must always be placed at the very bottom of the table.-.PP-Grid tables can be created easily using Emacs\[cq] table-mode-(\f[CR]M-x table-insert\f[R]).-.SS Extension: \f[CR]pipe_tables\f[R]-Pipe tables look like this:-.IP-.EX-| Right | Left | Default | Center |-|------:|:-----|---------|:------:|-| 12 | 12 | 12 | 12 |-| 123 | 123 | 123 | 123 |-| 1 | 1 | 1 | 1 |-- : Demonstration of pipe table syntax.-.EE-.PP-The syntax is identical to PHP Markdown Extra tables.-The beginning and ending pipe characters are optional, but pipes are-required between all columns.-The colons indicate column alignment as shown.-The header cannot be omitted.-To simulate a headerless table, include a header with blank cells.-.PP-Since the pipes indicate column boundaries, columns need not be-vertically aligned, as they are in the above example.-So, this is a perfectly legal (though ugly) pipe table:-.IP-.EX-fruit| price------|-----:-apple|2.05-pear|1.37-orange|3.09-.EE-.PP-The cells of pipe tables cannot contain block elements like paragraphs-and lists, and cannot span multiple lines.-If any line of the markdown source is longer than the column width (see-\f[CR]--columns\f[R]), then the table will take up the full text width-and the cell contents will wrap, with the relative cell widths-determined by the number of dashes in the line separating the table-header from the table body.-(For example \f[CR]---|-\f[R] would make the first column 3/4 and the-second column 1/4 of the full text width.)-On the other hand, if no lines are wider than column width, then cell-contents will not be wrapped, and the cells will be sized to their-contents.-.PP-Note: pandoc also recognizes pipe tables of the following form, as can-be produced by Emacs\[cq] orgtbl-mode:-.IP-.EX-| One | Two |-|-----+-------|-| my | table |-| is | nice |-.EE-.PP-The difference is that \f[CR]+\f[R] is used instead of \f[CR]|\f[R].-Other orgtbl features are not supported.-In particular, to get non-default column alignment, you\[cq]ll need to-add colons as above.-.SS Metadata blocks-.SS Extension: \f[CR]pandoc_title_block\f[R]-If the file begins with a title block-.IP-.EX-% title-% author(s) (separated by semicolons)-% date-.EE-.PP-it will be parsed as bibliographic information, not regular text.-(It will be used, for example, in the title of standalone LaTeX or HTML-output.)-The block may contain just a title, a title and an author, or all three-elements.-If you want to include an author but no title, or a title and a date but-no author, you need a blank line:-.IP-.EX-%-% Author-.EE-.IP-.EX-% My title-%-% June 15, 2006-.EE-.PP-The title may occupy multiple lines, but continuation lines must begin-with leading space, thus:-.IP-.EX-% My title- on multiple lines-.EE-.PP-If a document has multiple authors, the authors may be put on separate-lines with leading space, or separated by semicolons, or both.-So, all of the following are equivalent:-.IP-.EX-% Author One- Author Two-.EE-.IP-.EX-% Author One; Author Two-.EE-.IP-.EX-% Author One;- Author Two-.EE-.PP-The date must fit on one line.-.PP-All three metadata fields may contain standard inline formatting-(italics, links, footnotes, etc.).-.PP-Title blocks will always be parsed, but they will affect the output only-when the \f[CR]--standalone\f[R] (\f[CR]-s\f[R]) option is chosen.-In HTML output, titles will appear twice: once in the document head-\[en] this is the title that will appear at the top of the window in a-browser \[en] and once at the beginning of the document body.-The title in the document head can have an optional prefix attached-(\f[CR]--title-prefix\f[R] or \f[CR]-T\f[R] option).-The title in the body appears as an H1 element with class-\[lq]title\[rq], so it can be suppressed or reformatted with CSS.-If a title prefix is specified with \f[CR]-T\f[R] and no title block-appears in the document, the title prefix will be used by itself as the-HTML title.-.PP-The man page writer extracts a title, man page section number, and other-header and footer information from the title line.-The title is assumed to be the first word on the title line, which may-optionally end with a (single-digit) section number in parentheses.-(There should be no space between the title and the parentheses.)-Anything after this is assumed to be additional footer and header text.-A single pipe character (\f[CR]|\f[R]) should be used to separate the-footer text from the header text.-Thus,-.IP-.EX-% PANDOC(1)-.EE-.PP-will yield a man page with the title \f[CR]PANDOC\f[R] and section 1.-.IP-.EX-% PANDOC(1) Pandoc User Manuals-.EE-.PP-will also have \[lq]Pandoc User Manuals\[rq] in the footer.-.IP-.EX-% PANDOC(1) Pandoc User Manuals | Version 4.0-.EE-.PP-will also have \[lq]Version 4.0\[rq] in the header.-.SS Extension: \f[CR]yaml_metadata_block\f[R]-A YAML metadata block is a valid YAML object, delimited by a line of-three hyphens (\f[CR]---\f[R]) at the top and a line of three hyphens-(\f[CR]---\f[R]) or three dots (\f[CR]...\f[R]) at the bottom.-The initial line \f[CR]---\f[R] must not be followed by a blank line.-A YAML metadata block may occur anywhere in the document, but if it is-not at the beginning, it must be preceded by a blank line.-.PP-Note that, because of the way pandoc concatenates input files when-several are provided, you may also keep the metadata in a separate YAML-file and pass it to pandoc as an argument, along with your Markdown-files:-.IP-.EX-pandoc chap1.md chap2.md chap3.md metadata.yaml -s -o book.html-.EE-.PP-Just be sure that the YAML file begins with \f[CR]---\f[R] and ends with-\f[CR]---\f[R] or \f[CR]...\f[R].-Alternatively, you can use the \f[CR]--metadata-file\f[R] option.-Using that approach however, you cannot reference content (like-footnotes) from the main markdown input document.-.PP-Metadata will be taken from the fields of the YAML object and added to-any existing document metadata.-Metadata can contain lists and objects (nested arbitrarily), but all-string scalars will be interpreted as Markdown.-Fields with names ending in an underscore will be ignored by pandoc.-(They may be given a role by external processors.)-Field names must not be interpretable as YAML numbers or boolean values-(so, for example, \f[CR]yes\f[R], \f[CR]True\f[R], and \f[CR]15\f[R]-cannot be used as field names).-.PP-A document may contain multiple metadata blocks.-If two metadata blocks attempt to set the same field, the value from the-second block will be taken.-.PP-Each metadata block is handled internally as an independent YAML-document.-This means, for example, that any YAML anchors defined in a block cannot-be referenced in another block.-.PP-When pandoc is used with \f[CR]-t markdown\f[R] to create a Markdown-document, a YAML metadata block will be produced only if the-\f[CR]-s/--standalone\f[R] option is used.-All of the metadata will appear in a single block at the beginning of-the document.-.PP-Note that YAML escaping rules must be followed.-Thus, for example, if a title contains a colon, it must be quoted, and-if it contains a backslash escape, then it must be ensured that it is-not treated as a YAML escape sequence.-The pipe character (\f[CR]|\f[R]) can be used to begin an indented block-that will be interpreted literally, without need for escaping.-This form is necessary when the field contains blank lines or-block-level formatting:-.IP-.EX-----title: \[aq]This is the title: it contains a colon\[aq]-author:-- Author One-- Author Two-keywords: [nothing, nothingness]-abstract: |- This is the abstract.-- It consists of two paragraphs.-\&...-.EE-.PP-The literal block after the \f[CR]|\f[R] must be indented relative to-the line containing the \f[CR]|\f[R].-If it is not, the YAML will be invalid and pandoc will not interpret it-as metadata.-For an overview of the complex rules governing YAML, see the Wikipedia-entry on YAML syntax.-.PP-Template variables will be set automatically from the metadata.-Thus, for example, in writing HTML, the variable \f[CR]abstract\f[R]-will be set to the HTML equivalent of the Markdown in the-\f[CR]abstract\f[R] field:-.IP-.EX-<p>This is the abstract.</p>-<p>It consists of two paragraphs.</p>-.EE-.PP-Variables can contain arbitrary YAML structures, but the template must-match this structure.-The \f[CR]author\f[R] variable in the default templates expects a simple-list or string, but can be changed to support more complicated-structures.-The following combination, for example, would add an affiliation to the-author if one is given:-.IP-.EX-----title: The document title-author:-- name: Author One- affiliation: University of Somewhere-- name: Author Two- affiliation: University of Nowhere-\&...-.EE-.PP-To use the structured authors in the example above, you would need a-custom template:-.IP-.EX-$for(author)$-$if(author.name)$-$author.name$$if(author.affiliation)$ ($author.affiliation$)$endif$-$else$-$author$-$endif$-$endfor$-.EE-.PP-Raw content to include in the document\[cq]s header may be specified-using \f[CR]header-includes\f[R]; however, it is important to mark up-this content as raw code for a particular output format, using the-\f[CR]raw_attribute\f[R] extension, or it will be interpreted as-markdown.-For example:-.IP-.EX-header-includes:-- |- \[ga]\[ga]\[ga]{=latex}- \[rs]let\[rs]oldsection\[rs]section- \[rs]renewcommand{\[rs]section}[1]{\[rs]clearpage\[rs]oldsection{#1}}- \[ga]\[ga]\[ga]-.EE-.PP-Note: the \f[CR]yaml_metadata_block\f[R] extension works with-\f[CR]commonmark\f[R] as well as \f[CR]markdown\f[R] (and it is enabled-by default in \f[CR]gfm\f[R] and \f[CR]commonmark_x\f[R]).-However, in these formats the following restrictions apply:-.IP \[bu] 2-The YAML metadata block must occur at the beginning of the document (and-there can be only one).-If multiple files are given as arguments to pandoc, only the first can-be a YAML metadata block.-.IP \[bu] 2-The leaf nodes of the YAML structure are parsed in isolation from each-other and from the rest of the document.-So, for example, you can\[cq]t use a reference link in these contexts if-the link definition is somewhere else in the document.-.SS Backslash escapes-.SS Extension: \f[CR]all_symbols_escapable\f[R]-Except inside a code block or inline code, any punctuation or space-character preceded by a backslash will be treated literally, even if it-would normally indicate formatting.-Thus, for example, if one writes-.IP-.EX-*\[rs]*hello\[rs]**-.EE-.PP-one will get-.IP-.EX-<em>*hello*</em>-.EE-.PP-instead of-.IP-.EX-<strong>hello</strong>-.EE-.PP-This rule is easier to remember than original Markdown\[cq]s rule, which-allows only the following characters to be backslash-escaped:-.IP-.EX-\[rs]\[ga]*_{}[]()>#+-.!-.EE-.PP-(However, if the \f[CR]markdown_strict\f[R] format is used, the original-Markdown rule will be used.)-.PP-A backslash-escaped space is parsed as a nonbreaking space.-In TeX output, it will appear as \f[CR]\[ti]\f[R].-In HTML and XML output, it will appear as a literal unicode nonbreaking-space character (note that it will thus actually look-\[lq]invisible\[rq] in the generated HTML source; you can still use the-\f[CR]--ascii\f[R] command-line option to make it appear as an explicit-entity).-.PP-A backslash-escaped newline (i.e.\ a backslash occurring at the end of a-line) is parsed as a hard line break.-It will appear in TeX output as \f[CR]\[rs]\[rs]\f[R] and in HTML as-\f[CR]<br />\f[R].-This is a nice alternative to Markdown\[cq]s \[lq]invisible\[rq] way of-indicating hard line breaks using two trailing spaces on a line.-.PP-Backslash escapes do not work in verbatim contexts.-.SS Inline formatting-.SS Emphasis-To \f[I]emphasize\f[R] some text, surround it with \f[CR]*\f[R]s or-\f[CR]_\f[R], like this:-.IP-.EX-This text is _emphasized with underscores_, and this-is *emphasized with asterisks*.-.EE-.PP-Double \f[CR]*\f[R] or \f[CR]_\f[R] produces \f[B]strong emphasis\f[R]:-.IP-.EX-This is **strong emphasis** and __with underscores__.-.EE-.PP-A \f[CR]*\f[R] or \f[CR]_\f[R] character surrounded by spaces, or-backslash-escaped, will not trigger emphasis:-.IP-.EX-This is * not emphasized *, and \[rs]*neither is this\[rs]*.-.EE-.SS Extension: \f[CR]intraword_underscores\f[R]-Because \f[CR]_\f[R] is sometimes used inside words and identifiers,-pandoc does not interpret a \f[CR]_\f[R] surrounded by alphanumeric-characters as an emphasis marker.-If you want to emphasize just part of a word, use \f[CR]*\f[R]:-.IP-.EX-feas*ible*, not feas*able*.-.EE-.SS Strikeout-.SS Extension: \f[CR]strikeout\f[R]-To strike out a section of text with a horizontal line, begin and end it-with \f[CR]\[ti]\[ti]\f[R].-Thus, for example,-.IP-.EX-This \[ti]\[ti]is deleted text.\[ti]\[ti]-.EE-.SS Superscripts and subscripts-.SS Extension: \f[CR]superscript\f[R], \f[CR]subscript\f[R]-Superscripts may be written by surrounding the superscripted text by-\f[CR]\[ha]\f[R] characters; subscripts may be written by surrounding-the subscripted text by \f[CR]\[ti]\f[R] characters.-Thus, for example,-.IP-.EX-H\[ti]2\[ti]O is a liquid. 2\[ha]10\[ha] is 1024.-.EE-.PP-The text between \f[CR]\[ha]...\[ha]\f[R] or \f[CR]\[ti]...\[ti]\f[R]-may not contain spaces or newlines.-If the superscripted or subscripted text contains spaces, these spaces-must be escaped with backslashes.-(This is to prevent accidental superscripting and subscripting through-the ordinary use of \f[CR]\[ti]\f[R] and \f[CR]\[ha]\f[R], and also bad-interactions with footnotes.)-Thus, if you want the letter P with `a cat' in subscripts, use-\f[CR]P\[ti]a\[rs] cat\[ti]\f[R], not \f[CR]P\[ti]a cat\[ti]\f[R].-.SS Verbatim-To make a short span of text verbatim, put it inside backticks:-.IP-.EX-What is the difference between \[ga]>>=\[ga] and \[ga]>>\[ga]?-.EE-.PP-If the verbatim text includes a backtick, use double backticks:-.IP-.EX-Here is a literal backtick \[ga]\[ga] \[ga] \[ga]\[ga].-.EE-.PP-(The spaces after the opening backticks and before the closing backticks-will be ignored.)-.PP-The general rule is that a verbatim span starts with a string of-consecutive backticks (optionally followed by a space) and ends with a-string of the same number of backticks (optionally preceded by a space).-.PP-Note that backslash-escapes (and other Markdown constructs) do not work-in verbatim contexts:-.IP-.EX-This is a backslash followed by an asterisk: \[ga]\[rs]*\[ga].-.EE-.SS Extension: \f[CR]inline_code_attributes\f[R]-Attributes can be attached to verbatim text, just as with fenced code-blocks:-.IP-.EX-\[ga]<$>\[ga]{.haskell}-.EE-.SS Underline-To underline text, use the \f[CR]underline\f[R] class:-.IP-.EX-[Underline]{.underline}-.EE-.PP-Or, without the \f[CR]bracketed_spans\f[R] extension (but with-\f[CR]native_spans\f[R]):-.IP-.EX-<span class=\[dq]underline\[dq]>Underline</span>-.EE-.PP-This will work in all output formats that support underline.-.SS Small caps-To write small caps, use the \f[CR]smallcaps\f[R] class:-.IP-.EX-[Small caps]{.smallcaps}-.EE-.PP-Or, without the \f[CR]bracketed_spans\f[R] extension:-.IP-.EX-<span class=\[dq]smallcaps\[dq]>Small caps</span>-.EE-.PP-For compatibility with other Markdown flavors, CSS is also supported:-.IP-.EX-<span style=\[dq]font-variant:small-caps;\[dq]>Small caps</span>-.EE-.PP-This will work in all output formats that support small caps.-.SS Highlighting-To highlight text, use the \f[CR]mark\f[R] class:-.IP-.EX-[Mark]{.mark}-.EE-.PP-Or, without the \f[CR]bracketed_spans\f[R] extension (but with-\f[CR]native_spans\f[R]):-.IP-.EX-<span class=\[dq]mark\[dq]>Mark</span>-.EE-.PP-This will work in all output formats that support highlighting.-.SS Math-.SS Extension: \f[CR]tex_math_dollars\f[R]-Anything between two \f[CR]$\f[R] characters will be treated as TeX-math.-The opening \f[CR]$\f[R] must have a non-space character immediately to-its right, while the closing \f[CR]$\f[R] must have a non-space-character immediately to its left, and must not be followed immediately-by a digit.-Thus, \f[CR]$20,000 and $30,000\f[R] won\[cq]t parse as math.-If for some reason you need to enclose text in literal \f[CR]$\f[R]-characters, backslash-escape them and they won\[cq]t be treated as math-delimiters.-.PP-For display math, use \f[CR]$$\f[R] delimiters.-(In this case, the delimiters may be separated from the formula by-whitespace.-However, there can be no blank lines between the opening and closing-\f[CR]$$\f[R] delimiters.)-.PP-TeX math will be printed in all output formats.-How it is rendered depends on the output format:-.TP-LaTeX-It will appear verbatim surrounded by \f[CR]\[rs](...\[rs])\f[R] (for-inline math) or \f[CR]\[rs][...\[rs]]\f[R] (for display math).-.TP-Markdown, Emacs Org mode, ConTeXt, ZimWiki-It will appear verbatim surrounded by \f[CR]$...$\f[R] (for inline math)-or \f[CR]$$...$$\f[R] (for display math).-.TP-XWiki-It will appear verbatim surrounded by-\f[CR]{{formula}}..{{/formula}}\f[R].-.TP-reStructuredText-It will be rendered using an interpreted text role \f[CR]:math:\f[R].-.TP-AsciiDoc-For AsciiDoc output math will appear verbatim surrounded by-\f[CR]latexmath:[...]\f[R].-For \f[CR]asciidoc_legacy\f[R] the bracketed material will also include-inline or display math delimiters.-.TP-Texinfo-It will be rendered inside a \f[CR]\[at]math\f[R] command.-.TP-roff man, Jira markup-It will be rendered verbatim without \f[CR]$\f[R]\[cq]s.-.TP-MediaWiki, DokuWiki-It will be rendered inside \f[CR]<math>\f[R] tags.-.TP-Textile-It will be rendered inside \f[CR]<span class=\[dq]math\[dq]>\f[R] tags.-.TP-RTF, OpenDocument-It will be rendered, if possible, using Unicode characters, and will-otherwise appear verbatim.-.TP-ODT-It will be rendered, if possible, using MathML.-.TP-DocBook-If the \f[CR]--mathml\f[R] flag is used, it will be rendered using-MathML in an \f[CR]inlineequation\f[R] or \f[CR]informalequation\f[R]-tag.-Otherwise it will be rendered, if possible, using Unicode characters.-.TP-Docx and PowerPoint-It will be rendered using OMML math markup.-.TP-FictionBook2-If the \f[CR]--webtex\f[R] option is used, formulas are rendered as-images using CodeCogs or other compatible web service, downloaded and-embedded in the e-book.-Otherwise, they will appear verbatim.-.TP-HTML, Slidy, DZSlides, S5, EPUB-The way math is rendered in HTML will depend on the command-line options-selected.-Therefore see Math rendering in HTML above.-.SS Raw HTML-.SS Extension: \f[CR]raw_html\f[R]-Markdown allows you to insert raw HTML (or DocBook) anywhere in a-document (except verbatim contexts, where \f[CR]<\f[R], \f[CR]>\f[R],-and \f[CR]&\f[R] are interpreted literally).-(Technically this is not an extension, since standard Markdown allows-it, but it has been made an extension so that it can be disabled if-desired.)-.PP-The raw HTML is passed through unchanged in HTML, S5, Slidy, Slideous,-DZSlides, EPUB, Markdown, CommonMark, Emacs Org mode, and Textile-output, and suppressed in other formats.-.PP-For a more explicit way of including raw HTML in a Markdown document,-see the \f[CR]raw_attribute\f[R] extension.-.PP-In the CommonMark format, if \f[CR]raw_html\f[R] is enabled,-superscripts, subscripts, strikeouts and small capitals will be-represented as HTML.-Otherwise, plain-text fallbacks will be used.-Note that even if \f[CR]raw_html\f[R] is disabled, tables will be-rendered with HTML syntax if they cannot use pipe syntax.-.SS Extension: \f[CR]markdown_in_html_blocks\f[R]-Original Markdown allows you to include HTML \[lq]blocks\[rq]: blocks of-HTML between balanced tags that are separated from the surrounding text-with blank lines, and start and end at the left margin.-Within these blocks, everything is interpreted as HTML, not Markdown; so-(for example), \f[CR]*\f[R] does not signify emphasis.-.PP-Pandoc behaves this way when the \f[CR]markdown_strict\f[R] format is-used; but by default, pandoc interprets material between HTML block tags-as Markdown.-Thus, for example, pandoc will turn-.IP-.EX-<table>-<tr>-<td>*one*</td>-<td>[a link](https://google.com)</td>-</tr>-</table>-.EE-.PP-into-.IP-.EX-<table>-<tr>-<td><em>one</em></td>-<td><a href=\[dq]https://google.com\[dq]>a link</a></td>-</tr>-</table>-.EE-.PP-whereas \f[CR]Markdown.pl\f[R] will preserve it as is.-.PP-There is one exception to this rule: text between \f[CR]<script>\f[R],-\f[CR]<style>\f[R], and \f[CR]<textarea>\f[R] tags is not interpreted as-Markdown.-.PP-This departure from original Markdown should make it easier to mix-Markdown with HTML block elements.-For example, one can surround a block of Markdown text with-\f[CR]<div>\f[R] tags without preventing it from being interpreted as-Markdown.-.SS Extension: \f[CR]native_divs\f[R]-Use native pandoc \f[CR]Div\f[R] blocks for content inside-\f[CR]<div>\f[R] tags.-For the most part this should give the same output as-\f[CR]markdown_in_html_blocks\f[R], but it makes it easier to write-pandoc filters to manipulate groups of blocks.-.SS Extension: \f[CR]native_spans\f[R]-Use native pandoc \f[CR]Span\f[R] blocks for content inside-\f[CR]<span>\f[R] tags.-For the most part this should give the same output as-\f[CR]raw_html\f[R], but it makes it easier to write pandoc filters to-manipulate groups of inlines.-.SS Extension: \f[CR]raw_tex\f[R]-In addition to raw HTML, pandoc allows raw LaTeX, TeX, and ConTeXt to be-included in a document.-Inline TeX commands will be preserved and passed unchanged to the LaTeX-and ConTeXt writers.-Thus, for example, you can use LaTeX to include BibTeX citations:-.IP-.EX-This result was proved in \[rs]cite{jones.1967}.-.EE-.PP-Note that in LaTeX environments, like-.IP-.EX-\[rs]begin{tabular}{|l|l|}\[rs]hline-Age & Frequency \[rs]\[rs] \[rs]hline-18--25 & 15 \[rs]\[rs]-26--35 & 33 \[rs]\[rs]-36--45 & 22 \[rs]\[rs] \[rs]hline-\[rs]end{tabular}-.EE-.PP-the material between the begin and end tags will be interpreted as raw-LaTeX, not as Markdown.-.PP-For a more explicit and flexible way of including raw TeX in a Markdown-document, see the \f[CR]raw_attribute\f[R] extension.-.PP-Inline LaTeX is ignored in output formats other than Markdown, LaTeX,-Emacs Org mode, and ConTeXt.-.SS Generic raw attribute-.SS Extension: \f[CR]raw_attribute\f[R]-Inline spans and fenced code blocks with a special kind of attribute-will be parsed as raw content with the designated format.-For example, the following produces a raw roff \f[CR]ms\f[R] block:-.IP-.EX-\[ga]\[ga]\[ga]{=ms}-\&.MYMACRO-blah blah-\[ga]\[ga]\[ga]-.EE-.PP-And the following produces a raw \f[CR]html\f[R] inline element:-.IP-.EX-This is \[ga]<a>html</a>\[ga]{=html}-.EE-.PP-This can be useful to insert raw xml into \f[CR]docx\f[R] documents,-e.g.-a pagebreak:-.IP-.EX-\[ga]\[ga]\[ga]{=openxml}-<w:p>- <w:r>- <w:br w:type=\[dq]page\[dq]/>- </w:r>-</w:p>-\[ga]\[ga]\[ga]-.EE-.PP-The format name should match the target format name (see-\f[CR]-t/--to\f[R], above, for a list, or use-\f[CR]pandoc --list-output-formats\f[R]).-Use \f[CR]openxml\f[R] for \f[CR]docx\f[R] output,-\f[CR]opendocument\f[R] for \f[CR]odt\f[R] output, \f[CR]html5\f[R] for-\f[CR]epub3\f[R] output, \f[CR]html4\f[R] for \f[CR]epub2\f[R] output,-and \f[CR]latex\f[R], \f[CR]beamer\f[R], \f[CR]ms\f[R], or-\f[CR]html5\f[R] for \f[CR]pdf\f[R] output (depending on what you use-for \f[CR]--pdf-engine\f[R]).-.PP-This extension presupposes that the relevant kind of inline code or-fenced code block is enabled.-Thus, for example, to use a raw attribute with a backtick code block,-\f[CR]backtick_code_blocks\f[R] must be enabled.-.PP-The raw attribute cannot be combined with regular attributes.-.SS LaTeX macros-.SS Extension: \f[CR]latex_macros\f[R]-When this extension is enabled, pandoc will parse LaTeX macro-definitions and apply the resulting macros to all LaTeX math and raw-LaTeX.-So, for example, the following will work in all output formats, not just-LaTeX:-.IP-.EX-\[rs]newcommand{\[rs]tuple}[1]{\[rs]langle #1 \[rs]rangle}--$\[rs]tuple{a, b, c}$-.EE-.PP-Note that LaTeX macros will not be applied if they occur inside a raw-span or block marked with the \f[CR]raw_attribute\f[R] extension.-.PP-When \f[CR]latex_macros\f[R] is disabled, the raw LaTeX and math will-not have macros applied.-This is usually a better approach when you are targeting LaTeX or PDF.-.PP-Macro definitions in LaTeX will be passed through as raw LaTeX only if-\f[CR]latex_macros\f[R] is not enabled.-Macro definitions in Markdown source (or other formats allowing-\f[CR]raw_tex\f[R]) will be passed through regardless of whether-\f[CR]latex_macros\f[R] is enabled.-.SS Links-Markdown allows links to be specified in several ways.-.SS Automatic links-If you enclose a URL or email address in pointy brackets, it will become-a link:-.IP-.EX-<https://google.com>-<sam\[at]green.eggs.ham>-.EE-.SS Inline links-An inline link consists of the link text in square brackets, followed by-the URL in parentheses.-(Optionally, the URL can be followed by a link title, in quotes.)-.IP-.EX-This is an [inline link](/url), and here\[aq]s [one with-a title](https://fsf.org \[dq]click here for a good time!\[dq]).-.EE-.PP-There can be no space between the bracketed part and the parenthesized-part.-The link text can contain formatting (such as emphasis), but the title-cannot.-.PP-Email addresses in inline links are not autodetected, so they have to be-prefixed with \f[CR]mailto\f[R]:-.IP-.EX-[Write me!](mailto:sam\[at]green.eggs.ham)-.EE-.SS Reference links-An \f[I]explicit\f[R] reference link has two parts, the link itself and-the link definition, which may occur elsewhere in the document (either-before or after the link).-.PP-The link consists of link text in square brackets, followed by a label-in square brackets.-(There cannot be space between the two unless the-\f[CR]spaced_reference_links\f[R] extension is enabled.)-The link definition consists of the bracketed label, followed by a colon-and a space, followed by the URL, and optionally (after a space) a link-title either in quotes or in parentheses.-The label must not be parseable as a citation (assuming the-\f[CR]citations\f[R] extension is enabled): citations take precedence-over link labels.-.PP-Here are some examples:-.IP-.EX-[my label 1]: /foo/bar.html \[dq]My title, optional\[dq]-[my label 2]: /foo-[my label 3]: https://fsf.org (The Free Software Foundation)-[my label 4]: /bar#special \[aq]A title in single quotes\[aq]-.EE-.PP-The URL may optionally be surrounded by angle brackets:-.IP-.EX-[my label 5]: <http://foo.bar.baz>-.EE-.PP-The title may go on the next line:-.IP-.EX-[my label 3]: https://fsf.org- \[dq]The Free Software Foundation\[dq]-.EE-.PP-Note that link labels are not case sensitive.-So, this will work:-.IP-.EX-Here is [my link][FOO]--[Foo]: /bar/baz-.EE-.PP-In an \f[I]implicit\f[R] reference link, the second pair of brackets is-empty:-.IP-.EX-See [my website][].--[my website]: http://foo.bar.baz-.EE-.PP-Note: In \f[CR]Markdown.pl\f[R] and most other Markdown implementations,-reference link definitions cannot occur in nested constructions such as-list items or block quotes.-Pandoc lifts this arbitrary-seeming restriction.-So the following is fine in pandoc, though not in most other-implementations:-.IP-.EX-> My block [quote].->-> [quote]: /foo-.EE-.SS Extension: \f[CR]shortcut_reference_links\f[R]-In a \f[I]shortcut\f[R] reference link, the second pair of brackets may-be omitted entirely:-.IP-.EX-See [my website].--[my website]: http://foo.bar.baz-.EE-.SS Internal links-To link to another section of the same document, use the automatically-generated identifier (see Heading identifiers).-For example:-.IP-.EX-See the [Introduction](#introduction).-.EE-.PP-or-.IP-.EX-See the [Introduction].--[Introduction]: #introduction-.EE-.PP-Internal links are currently supported for HTML formats (including HTML-slide shows and EPUB), LaTeX, and ConTeXt.-.SS Images-A link immediately preceded by a \f[CR]!\f[R] will be treated as an-image.-The link text will be used as the image\[cq]s alt text:-.IP-.EX---![movie reel]--[movie reel]: movie.gif-.EE-.SS Extension: \f[CR]implicit_figures\f[R]-An image with nonempty alt text, occurring by itself in a paragraph,-will be rendered as a figure with a caption.-The image\[cq]s alt text will be used as the caption.-.IP-.EX--.EE-.PP-How this is rendered depends on the output format.-Some output formats (e.g.\ RTF) do not yet support figures.-In those formats, you\[cq]ll just get an image in a paragraph by itself,-with no caption.-.PP-If you just want a regular inline image, just make sure it is not the-only thing in the paragraph.-One way to do this is to insert a nonbreaking space after the image:-.IP-.EX-![This image won\[aq]t be a figure](/url/of/image.png)\[rs]-.EE-.PP-Note that in reveal.js slide shows, an image in a paragraph by itself-that has the \f[CR]r-stretch\f[R] class will fill the screen, and the-caption and figure tags will be omitted.-.SS Extension: \f[CR]link_attributes\f[R]-Attributes can be set on links and images:-.IP-.EX-An inline {#id .class width=30 height=20px}-and a reference ![image][ref] with attributes.--[ref]: foo.jpg \[dq]optional title\[dq] {#id .class key=val key2=\[dq]val 2\[dq]}-.EE-.PP-(This syntax is compatible with PHP Markdown Extra when only-\f[CR]#id\f[R] and \f[CR].class\f[R] are used.)-.PP-For HTML and EPUB, all known HTML5 attributes except \f[CR]width\f[R]-and \f[CR]height\f[R] (but including \f[CR]srcset\f[R] and-\f[CR]sizes\f[R]) are passed through as is.-Unknown attributes are passed through as custom attributes, with-\f[CR]data-\f[R] prepended.-The other writers ignore attributes that are not specifically supported-by their output format.-.PP-The \f[CR]width\f[R] and \f[CR]height\f[R] attributes on images are-treated specially.-When used without a unit, the unit is assumed to be pixels.-However, any of the following unit identifiers can be used:-\f[CR]px\f[R], \f[CR]cm\f[R], \f[CR]mm\f[R], \f[CR]in\f[R],-\f[CR]inch\f[R] and \f[CR]%\f[R].-There must not be any spaces between the number and the unit.-For example:-.IP-.EX-{ width=50% }-.EE-.IP \[bu] 2-Dimensions may be converted to a form that is compatible with the output-format (for example, dimensions given in pixels will be converted to-inches when converting HTML to LaTeX).-Conversion between pixels and physical measurements is affected by the-\f[CR]--dpi\f[R] option (by default, 96 dpi is assumed, unless the image-itself contains dpi information).-.IP \[bu] 2-The \f[CR]%\f[R] unit is generally relative to some available space.-For example the above example will render to the following.-.RS 2-.IP \[bu] 2-HTML:-\f[CR]<img href=\[dq]file.jpg\[dq] style=\[dq]width: 50%;\[dq] />\f[R]-.IP \[bu] 2-LaTeX:-\f[CR]\[rs]includegraphics[width=0.5\[rs]textwidth,height=\[rs]textheight]{file.jpg}\f[R]-(If you\[cq]re using a custom template, you need to configure-\f[CR]graphicx\f[R] as in the default template.)-.IP \[bu] 2-ConTeXt:-\f[CR]\[rs]externalfigure[file.jpg][width=0.5\[rs]textwidth]\f[R]-.RE-.IP \[bu] 2-Some output formats have a notion of a class (ConTeXt) or a unique-identifier (LaTeX \f[CR]\[rs]caption\f[R]), or both (HTML).-.IP \[bu] 2-When no \f[CR]width\f[R] or \f[CR]height\f[R] attributes are specified,-the fallback is to look at the image resolution and the dpi metadata-embedded in the image file.-.SS Divs and Spans-Using the \f[CR]native_divs\f[R] and \f[CR]native_spans\f[R] extensions-(see above), HTML syntax can be used as part of markdown to create-native \f[CR]Div\f[R] and \f[CR]Span\f[R] elements in the pandoc AST (as-opposed to raw HTML).-However, there is also nicer syntax available:-.SS Extension: \f[CR]fenced_divs\f[R]-Allow special fenced syntax for native \f[CR]Div\f[R] blocks.-A Div starts with a fence containing at least three consecutive colons-plus some attributes.-The attributes may optionally be followed by another string of-consecutive colons.-.PP-Note: the \f[CR]commonmark\f[R] parser doesn\[cq]t permit colons after-the attributes.-.PP-The attribute syntax is exactly as in fenced code blocks (see Extension:-\f[CR]fenced_code_attributes\f[R]).-As with fenced code blocks, one can use either attributes in curly-braces or a single unbraced word, which will be treated as a class name.-The Div ends with another line containing a string of at least three-consecutive colons.-The fenced Div should be separated by blank lines from preceding and-following blocks.-.PP-Example:-.IP-.EX-::::: {#special .sidebar}-Here is a paragraph.--And another.-:::::-.EE-.PP-Fenced divs can be nested.-Opening fences are distinguished because they \f[I]must\f[R] have-attributes:-.IP-.EX-::: Warning ::::::-This is a warning.--::: Danger-This is a warning within a warning.-:::-::::::::::::::::::-.EE-.PP-Fences without attributes are always closing fences.-Unlike with fenced code blocks, the number of colons in the closing-fence need not match the number in the opening fence.-However, it can be helpful for visual clarity to use fences of different-lengths to distinguish nested divs from their parents.-.SS Extension: \f[CR]bracketed_spans\f[R]-A bracketed sequence of inlines, as one would use to begin a link, will-be treated as a \f[CR]Span\f[R] with attributes if it is followed-immediately by attributes:-.IP-.EX-[This is *some text*]{.class key=\[dq]val\[dq]}-.EE-.SS Footnotes-.SS Extension: \f[CR]footnotes\f[R]-Pandoc\[cq]s Markdown allows footnotes, using the following syntax:-.IP-.EX-Here is a footnote reference,[\[ha]1] and another.[\[ha]longnote]--[\[ha]1]: Here is the footnote.--[\[ha]longnote]: Here\[aq]s one with multiple blocks.-- Subsequent paragraphs are indented to show that they-belong to the previous footnote.-- { some.code }-- The whole paragraph can be indented, or just the first- line. In this way, multi-paragraph footnotes work like- multi-paragraph list items.--This paragraph won\[aq]t be part of the note, because it-isn\[aq]t indented.-.EE-.PP-The identifiers in footnote references may not contain spaces, tabs,-newlines, or the characters \f[CR]\[ha]\f[R], \f[CR][\f[R], or-\f[CR]]\f[R].-These identifiers are used only to correlate the footnote reference with-the note itself; in the output, footnotes will be numbered sequentially.-.PP-The footnotes themselves need not be placed at the end of the document.-They may appear anywhere except inside other block elements (lists,-block quotes, tables, etc.).-Each footnote should be separated from surrounding content (including-other footnotes) by blank lines.-.SS Extension: \f[CR]inline_notes\f[R]-Inline footnotes are also allowed (though, unlike regular notes, they-cannot contain multiple paragraphs).-The syntax is as follows:-.IP-.EX-Here is an inline note.\[ha][Inline notes are easier to write, since-you don\[aq]t have to pick an identifier and move down to type the-note.]-.EE-.PP-Inline and regular footnotes may be mixed freely.-.SS Citation syntax-.SS Extension: \f[CR]citations\f[R]-To cite a bibliographic item with an identifier foo, use the syntax-\f[CR]\[at]foo\f[R].-Normal citations should be included in square brackets, with semicolons-separating distinct items:-.IP-.EX-Blah blah [\[at]doe99; \[at]smith2000; \[at]smith2004].-.EE-.PP-How this is rendered depends on the citation style.-In an author-date style, it might render as-.IP-.EX-Blah blah (Doe 1999, Smith 2000, 2004).-.EE-.PP-In a footnote style, it might render as-.IP-.EX-Blah blah.[\[ha]1]--[\[ha]1]: John Doe, \[dq]Frogs,\[dq] *Journal of Amphibians* 44 (1999);-Susan Smith, \[dq]Flies,\[dq] *Journal of Insects* (2000);-Susan Smith, \[dq]Bees,\[dq] *Journal of Insects* (2004).-.EE-.PP-See the CSL user documentation for more information about CSL styles and-how they affect rendering.-.PP-Unless a citation key starts with a letter, digit, or \f[CR]_\f[R], and-contains only alphanumerics and single internal punctuation characters-(\f[CR]:.#$%&-+?<>\[ti]/\f[R]), it must be surrounded by curly braces,-which are not considered part of the key.-In \f[CR]\[at]Foo_bar.baz.\f[R], the key is \f[CR]Foo_bar.baz\f[R]-because the final period is not \f[I]internal\f[R] punctuation, so it is-not included in the key.-In \f[CR]\[at]{Foo_bar.baz.}\f[R], the key is \f[CR]Foo_bar.baz.\f[R],-including the final period.-In \f[CR]\[at]Foo_bar--baz\f[R], the key is \f[CR]Foo_bar\f[R] because-the repeated internal punctuation characters terminate the key.-The curly braces are recommended if you use URLs as keys:-\f[CR][\[at]{https://example.com/bib?name=foobar&date=2000}, p. 33]\f[R].-.PP-Citation items may optionally include a prefix, a locator, and a suffix.-In-.IP-.EX-Blah blah [see \[at]doe99, pp. 33-35 and *passim*; \[at]smith04, chap. 1].-.EE-.PP-the first item (\f[CR]doe99\f[R]) has prefix \f[CR]see\f[R], locator-\f[CR]pp. 33-35\f[R], and suffix \f[CR]and *passim*\f[R].-The second item (\f[CR]smith04\f[R]) has locator \f[CR]chap. 1\f[R] and-no prefix or suffix.-.PP-Pandoc uses some heuristics to separate the locator from the rest of the-subject.-It is sensitive to the locator terms defined in the CSL locale files.-Either abbreviated or unabbreviated forms are accepted.-In the \f[CR]en-US\f[R] locale, locator terms can be written in either-singular or plural forms, as \f[CR]book\f[R],-\f[CR]bk.\f[R]/\f[CR]bks.\f[R]; \f[CR]chapter\f[R],-\f[CR]chap.\f[R]/\f[CR]chaps.\f[R]; \f[CR]column\f[R],-\f[CR]col.\f[R]/\f[CR]cols.\f[R]; \f[CR]figure\f[R],-\f[CR]fig.\f[R]/\f[CR]figs.\f[R]; \f[CR]folio\f[R],-\f[CR]fol.\f[R]/\f[CR]fols.\f[R]; \f[CR]number\f[R],-\f[CR]no.\f[R]/\f[CR]nos.\f[R]; \f[CR]line\f[R],-\f[CR]l.\f[R]/\f[CR]ll.\f[R]; \f[CR]note\f[R],-\f[CR]n.\f[R]/\f[CR]nn.\f[R]; \f[CR]opus\f[R],-\f[CR]op.\f[R]/\f[CR]opp.\f[R]; \f[CR]page\f[R],-\f[CR]p.\f[R]/\f[CR]pp.\f[R]; \f[CR]paragraph\f[R],-\f[CR]para.\f[R]/\f[CR]paras.\f[R]; \f[CR]part\f[R],-\f[CR]pt.\f[R]/\f[CR]pts.\f[R]; \f[CR]section\f[R],-\f[CR]sec.\f[R]/\f[CR]secs.\f[R]; \f[CR]sub verbo\f[R],-\f[CR]s.v.\f[R]/\f[CR]s.vv.\f[R]; \f[CR]verse\f[R],-\f[CR]v.\f[R]/\f[CR]vv.\f[R]; \f[CR]volume\f[R],-\f[CR]vol.\f[R]/\f[CR]vols.\f[R]; \f[CR]¶\f[R]/\f[CR]¶¶\f[R];-\f[CR]§\f[R]/\f[CR]§§\f[R].-If no locator term is used, \[lq]page\[rq] is assumed.-.PP-In complex cases, you can force something to be treated as a locator by-enclosing it in curly braces or prevent parsing the suffix as locator by-prepending curly braces:-.IP-.EX-[\[at]smith{ii, A, D-Z}, with a suffix]-[\[at]smith, {pp. iv, vi-xi, (xv)-(xvii)} with suffix here]-[\[at]smith{}, 99 years later]-.EE-.PP-A minus sign (\f[CR]-\f[R]) before the \f[CR]\[at]\f[R] will suppress-mention of the author in the citation.-This can be useful when the author is already mentioned in the text:-.IP-.EX-Smith says blah [-\[at]smith04].-.EE-.PP-You can also write an author-in-text citation, by omitting the square-brackets:-.IP-.EX-\[at]smith04 says blah.--\[at]smith04 [p. 33] says blah.-.EE-.PP-This will cause the author\[cq]s name to be rendered, followed by the-bibliographical details.-Use this form when you want to make the citation the subject of a-sentence.-.PP-When you are using a note style, it is usually better to let citeproc-create the footnotes from citations rather than writing an explicit-note.-If you do write an explicit note that contains a citation, note that-normal citations will be put in parentheses, while author-in-text-citations will not.-For this reason, it is sometimes preferable to use the author-in-text-style inside notes when using a note style.-.SS Non-default extensions-The following Markdown syntax extensions are not enabled by default in-pandoc, but may be enabled by adding \f[CR]+EXTENSION\f[R] to the format-name, where \f[CR]EXTENSION\f[R] is the name of the extension.-Thus, for example, \f[CR]markdown+hard_line_breaks\f[R] is Markdown with-hard line breaks.-.SS Extension: \f[CR]rebase_relative_paths\f[R]-Rewrite relative paths for Markdown links and images, depending on the-path of the file containing the link or image link.-For each link or image, pandoc will compute the directory of the-containing file, relative to the working directory, and prepend the-resulting path to the link or image path.-.PP-The use of this extension is best understood by example.-Suppose you have a subdirectory for each chapter of a book,-\f[CR]chap1\f[R], \f[CR]chap2\f[R], \f[CR]chap3\f[R].-Each contains a file \f[CR]text.md\f[R] and a number of images used in-the chapter.-You would like to have \f[CR]\f[R] in-\f[CR]chap1/text.md\f[R] refer to \f[CR]chap1/spider.jpg\f[R] and-\f[CR]\f[R] in \f[CR]chap2/text.md\f[R] refer to-\f[CR]chap2/spider.jpg\f[R].-To do this, use-.IP-.EX-pandoc chap*/*.md -f markdown+rebase_relative_paths-.EE-.PP-Without this extension, you would have to use-\f[CR]\f[R] in \f[CR]chap1/text.md\f[R] and-\f[CR]\f[R] in \f[CR]chap2/text.md\f[R].-Links with relative paths will be rewritten in the same way as images.-.PP-Absolute paths and URLs are not changed.-Neither are empty paths or paths consisting entirely of a fragment,-e.g., \f[CR]#foo\f[R].-.PP-Note that relative paths in reference links and images will be rewritten-relative to the file containing the link reference definition, not the-file containing the reference link or image itself, if these differ.-.SS Extension: \f[CR]mark\f[R]-To highlight out a section of text, begin and end it with with-\f[CR]==\f[R].-Thus, for example,-.IP-.EX-This ==is deleted text.==-.EE-.SS Extension: \f[CR]attributes\f[R]-Allows attributes to be attached to any inline or block-level element-when parsing \f[CR]commonmark\f[R].-The syntax for the attributes is the same as that used in-\f[CR]header_attributes\f[R].-.IP \[bu] 2-Attributes that occur immediately after an inline element affect that-element.-If they follow a space, then they belong to the space.-(Hence, this option subsumes \f[CR]inline_code_attributes\f[R] and-\f[CR]link_attributes\f[R].)-.IP \[bu] 2-Attributes that occur immediately before a block element, on a line by-themselves, affect that element.-.IP \[bu] 2-Consecutive attribute specifiers may be used, either for blocks or for-inlines.-Their attributes will be combined.-.IP \[bu] 2-Attributes that occur at the end of the text of a Setext or ATX heading-(separated by whitespace from the text) affect the heading element.-(Hence, this option subsumes \f[CR]header_attributes\f[R].)-.IP \[bu] 2-Attributes that occur after the opening fence in a fenced code block-affect the code block element.-(Hence, this option subsumes \f[CR]fenced_code_attributes\f[R].)-.IP \[bu] 2-Attributes that occur at the end of a reference link definition affect-links that refer to that definition.-.PP-Note that pandoc\[cq]s AST does not currently allow attributes to be-attached to arbitrary elements.-Hence a Span or Div container will be added if needed.-.SS Extension: \f[CR]old_dashes\f[R]-Selects the pandoc <= 1.8.2.1 behavior for parsing smart dashes:-\f[CR]-\f[R] before a numeral is an en-dash, and \f[CR]--\f[R] is an-em-dash.-This option only has an effect if \f[CR]smart\f[R] is enabled.-It is selected automatically for \f[CR]textile\f[R] input.-.SS Extension: \f[CR]angle_brackets_escapable\f[R]-Allow \f[CR]<\f[R] and \f[CR]>\f[R] to be backslash-escaped, as they can-be in GitHub flavored Markdown but not original Markdown.-This is implied by pandoc\[cq]s default-\f[CR]all_symbols_escapable\f[R].-.SS Extension: \f[CR]lists_without_preceding_blankline\f[R]-Allow a list to occur right after a paragraph, with no intervening blank-space.-.SS Extension: \f[CR]four_space_rule\f[R]-Selects the pandoc <= 2.0 behavior for parsing lists, so that four-spaces indent are needed for list item continuation paragraphs.-.SS Extension: \f[CR]spaced_reference_links\f[R]-Allow whitespace between the two components of a reference link, for-example,-.IP-.EX-[foo] [bar].-.EE-.SS Extension: \f[CR]hard_line_breaks\f[R]-Causes all newlines within a paragraph to be interpreted as hard line-breaks instead of spaces.-.SS Extension: \f[CR]ignore_line_breaks\f[R]-Causes newlines within a paragraph to be ignored, rather than being-treated as spaces or as hard line breaks.-This option is intended for use with East Asian languages where spaces-are not used between words, but text is divided into lines for-readability.-.SS Extension: \f[CR]east_asian_line_breaks\f[R]-Causes newlines within a paragraph to be ignored, rather than being-treated as spaces or as hard line breaks, when they occur between two-East Asian wide characters.-This is a better choice than \f[CR]ignore_line_breaks\f[R] for texts-that include a mix of East Asian wide characters and other characters.-.SS Extension: \f[CR]emoji\f[R]-Parses textual emojis like \f[CR]:smile:\f[R] as Unicode emoticons.-.SS Extension: \f[CR]tex_math_gfm\f[R]-Supports two GitHub-specific formats for math.-Inline math: \f[CR]$\[ga]e=mc\[ha]2\[ga]$\f[R].-.PP-Display math:-.IP-.EX-\[ga]\[ga]\[ga] math-e=mc\[ha]2-\[ga]\[ga]\[ga]-.EE-.SS Extension: \f[CR]tex_math_single_backslash\f[R]-Causes anything between \f[CR]\[rs](\f[R] and \f[CR]\[rs])\f[R] to be-interpreted as inline TeX math, and anything between \f[CR]\[rs][\f[R]-and \f[CR]\[rs]]\f[R] to be interpreted as display TeX math.-Note: a drawback of this extension is that it precludes escaping-\f[CR](\f[R] and \f[CR][\f[R].-.SS Extension: \f[CR]tex_math_double_backslash\f[R]-Causes anything between \f[CR]\[rs]\[rs](\f[R] and-\f[CR]\[rs]\[rs])\f[R] to be interpreted as inline TeX math, and-anything between \f[CR]\[rs]\[rs][\f[R] and \f[CR]\[rs]\[rs]]\f[R] to be-interpreted as display TeX math.-.SS Extension: \f[CR]markdown_attribute\f[R]-By default, pandoc interprets material inside block-level tags as-Markdown.-This extension changes the behavior so that Markdown is only parsed-inside block-level tags if the tags have the attribute-\f[CR]markdown=1\f[R].-.SS Extension: \f[CR]mmd_title_block\f[R]-Enables a MultiMarkdown style title block at the top of the document,-for example:-.IP-.EX-Title: My title-Author: John Doe-Date: September 1, 2008-Comment: This is a sample mmd title block, with- a field spanning multiple lines.-.EE-.PP-See the MultiMarkdown documentation for details.-If \f[CR]pandoc_title_block\f[R] or \f[CR]yaml_metadata_block\f[R] is-enabled, it will take precedence over \f[CR]mmd_title_block\f[R].-.SS Extension: \f[CR]abbreviations\f[R]-Parses PHP Markdown Extra abbreviation keys, like-.IP-.EX-*[HTML]: Hypertext Markup Language-.EE-.PP-Note that the pandoc document model does not support abbreviations, so-if this extension is enabled, abbreviation keys are simply skipped (as-opposed to being parsed as paragraphs).-.SS Extension: \f[CR]autolink_bare_uris\f[R]-Makes all absolute URIs into links, even when not surrounded by pointy-braces \f[CR]<...>\f[R].-.SS Extension: \f[CR]mmd_link_attributes\f[R]-Parses multimarkdown style key-value attributes on link and image-references.-This extension should not be confused with the-\f[CR]link_attributes\f[R] extension.-.IP-.EX-This is a reference ![image][ref] with multimarkdown attributes.--[ref]: https://path.to/image \[dq]Image title\[dq] width=20px height=30px- id=myId class=\[dq]myClass1 myClass2\[dq]-.EE-.SS Extension: \f[CR]mmd_header_identifiers\f[R]-Parses multimarkdown style heading identifiers (in square brackets,-after the heading but before any trailing \f[CR]#\f[R]s in an ATX-heading).-.SS Extension: \f[CR]compact_definition_lists\f[R]-Activates the definition list syntax of pandoc 1.12.x and earlier.-This syntax differs from the one described above under Definition lists-in several respects:-.IP \[bu] 2-No blank line is required between consecutive items of the definition-list.-.IP \[bu] 2-To get a \[lq]tight\[rq] or \[lq]compact\[rq] list, omit space between-consecutive items; the space between a term and its definition does not-affect anything.-.IP \[bu] 2-Lazy wrapping of paragraphs is not allowed: the entire definition must-be indented four spaces.-.SS Extension: \f[CR]gutenberg\f[R]-Use Project Gutenberg conventions for \f[CR]plain\f[R] output: all-caps-for strong emphasis, surround by underscores for regular emphasis, add-extra blank space around headings.-.SS Extension: \f[CR]sourcepos\f[R]-Include source position attributes when parsing \f[CR]commonmark\f[R].-For elements that accept attributes, a \f[CR]data-pos\f[R] attribute is-added; other elements are placed in a surrounding Div or Span element-with a \f[CR]data-pos\f[R] attribute.-.SS Extension: \f[CR]short_subsuperscripts\f[R]-Parse multimarkdown style subscripts and superscripts, which start with-a `\[ti]' or `\[ha]' character, respectively, and include the-alphanumeric sequence that follows.-For example:-.IP-.EX-x\[ha]2 = 4-.EE-.PP-or-.IP-.EX-Oxygen is O\[ti]2.-.EE-.SS Extension: \f[CR]wikilinks_title_after_pipe\f[R]-Pandoc supports multiple markdown wikilink syntaxes, regardless of-whether the title is before or after the pipe.-.PP-Using \f[CR]--from=markdown+wikilinks_title_after_pipe\f[R] results in-.IP-.EX-[[URL|title]]-.EE-.PP-while using \f[CR]--from=markdown+wikilinks_title_before_pipe\f[R]-results in-.IP-.EX-[[title|URL]]-.EE-.SS Markdown variants-In addition to pandoc\[cq]s extended Markdown, the following Markdown-variants are supported:-.IP \[bu] 2-\f[CR]markdown_phpextra\f[R] (PHP Markdown Extra)-.IP \[bu] 2-\f[CR]markdown_github\f[R] (deprecated GitHub-Flavored Markdown)-.IP \[bu] 2-\f[CR]markdown_mmd\f[R] (MultiMarkdown)-.IP \[bu] 2-\f[CR]markdown_strict\f[R] (Markdown.pl)-.IP \[bu] 2-\f[CR]commonmark\f[R] (CommonMark)-.IP \[bu] 2-\f[CR]gfm\f[R] (Github-Flavored Markdown)-.IP \[bu] 2-\f[CR]commonmark_x\f[R] (CommonMark with many pandoc extensions)-.PP-To see which extensions are supported for a given format, and which are-enabled by default, you can use the command-.IP-.EX-pandoc --list-extensions=FORMAT-.EE-.PP-where \f[CR]FORMAT\f[R] is replaced with the name of the format.-.PP-Note that the list of extensions for \f[CR]commonmark\f[R],-\f[CR]gfm\f[R], and \f[CR]commonmark_x\f[R] are defined relative to-default commonmark.-So, for example, \f[CR]backtick_code_blocks\f[R] does not appear as an-extension, since it is enabled by default and cannot be disabled.-.SH CITATIONS-When the \f[CR]--citeproc\f[R] option is used, pandoc can automatically-generate citations and a bibliography in a number of styles.-Basic usage is-.IP-.EX-pandoc --citeproc myinput.txt-.EE-.PP-To use this feature, you will need to have-.IP \[bu] 2-a document containing citations (see Citation syntax);-.IP \[bu] 2-a source of bibliographic data: either an external bibliography file or-a list of \f[CR]references\f[R] in the document\[cq]s YAML metadata;-.IP \[bu] 2-optionally, a CSL citation style.-.SS Specifying bibliographic data-You can specify an external bibliography using the-\f[CR]bibliography\f[R] metadata field in a YAML metadata section or the-\f[CR]--bibliography\f[R] command line argument.-If you want to use multiple bibliography files, you can supply multiple-\f[CR]--bibliography\f[R] arguments or set \f[CR]bibliography\f[R]-metadata field to YAML array.-A bibliography may have any of these formats:-.RS -14n-.IP-.EX- Format File extension- ---------- ----------------- BibLaTeX .bib- BibTeX .bibtex- CSL JSON .json- CSL YAML .yaml- RIS .ris-.EE-.RE-.PP-Note that \f[CR].bib\f[R] can be used with both BibTeX and BibLaTeX-files; use the extension \f[CR].bibtex\f[R] to force interpretation as-BibTeX.-.PP-In BibTeX and BibLaTeX databases, pandoc parses LaTeX markup inside-fields such as \f[CR]title\f[R]; in CSL YAML databases, pandoc Markdown;-and in CSL JSON databases, an HTML-like markup:-.TP-\f[CR]<i>...</i>\f[R]-italics-.TP-\f[CR]<b>...</b>\f[R]-bold-.TP-\f[CR]<span style=\[dq]font-variant:small-caps;\[dq]>...</span>\f[R] or \f[CR]<sc>...</sc>\f[R]-small capitals-.TP-\f[CR]<sub>...</sub>\f[R]-subscript-.TP-\f[CR]<sup>...</sup>\f[R]-superscript-.TP-\f[CR]<span class=\[dq]nocase\[dq]>...</span>\f[R]-prevent a phrase from being capitalized as title case-.PP-As an alternative to specifying a bibliography file using-\f[CR]--bibliography\f[R] or the YAML metadata field-\f[CR]bibliography\f[R], you can include the citation data directly in-the \f[CR]references\f[R] field of the document\[cq]s YAML metadata.-The field should contain an array of YAML-encoded references, for-example:-.IP-.EX-----references:-- type: article-journal- id: WatsonCrick1953- author:- - family: Watson- given: J. D.- - family: Crick- given: F. H. C.- issued:- date-parts:- - - 1953- - 4- - 25- title: \[aq]Molecular structure of nucleic acids: a structure for- deoxyribose nucleic acid\[aq]- title-short: Molecular structure of nucleic acids- container-title: Nature- volume: 171- issue: 4356- page: 737-738- DOI: 10.1038/171737a0- URL: https://www.nature.com/articles/171737a0- language: en-GB-\&...-.EE-.PP-If both an external bibliography and inline (YAML metadata) references-are provided, both will be used.-In case of conflicting \f[CR]id\f[R]s, the inline references will take-precedence.-.PP-Note that pandoc can be used to produce such a YAML metadata section-from a BibTeX, BibLaTeX, or CSL JSON bibliography:-.IP-.EX-pandoc chem.bib -s -f biblatex -t markdown-pandoc chem.json -s -f csljson -t markdown-.EE-.PP-Indeed, pandoc can convert between any of these citation formats:-.IP-.EX-pandoc chem.bib -s -f biblatex -t csljson-pandoc chem.yaml -s -f markdown -t biblatex-.EE-.PP-Running pandoc on a bibliography file with the \f[CR]--citeproc\f[R]-option will create a formatted bibliography in the format of your-choice:-.IP-.EX-pandoc chem.bib -s --citeproc -o chem.html-pandoc chem.bib -s --citeproc -o chem.pdf-.EE-.SS Capitalization in titles-If you are using a bibtex or biblatex bibliography, then observe the-following rules:-.IP \[bu] 2-English titles should be in title case.-Non-English titles should be in sentence case, and the \f[CR]langid\f[R]-field in biblatex should be set to the relevant language.-(The following values are treated as English: \f[CR]american\f[R],-\f[CR]british\f[R], \f[CR]canadian\f[R], \f[CR]english\f[R],-\f[CR]australian\f[R], \f[CR]newzealand\f[R], \f[CR]USenglish\f[R], or-\f[CR]UKenglish\f[R].)-.IP \[bu] 2-As is standard with bibtex/biblatex, proper names should be protected-with curly braces so that they won\[cq]t be lowercased in styles that-call for sentence case.-For example:-.RS 2-.IP-.EX-title = {My Dinner with {Andre}}-.EE-.RE-.IP \[bu] 2-In addition, words that should remain lowercase (or camelCase) should be-protected:-.RS 2-.IP-.EX-title = {Spin Wave Dispersion on the {nm} Scale}-.EE-.PP-Though this is not necessary in bibtex/biblatex, it is necessary with-citeproc, which stores titles internally in sentence case, and converts-to title case in styles that require it.-Here we protect \[lq]nm\[rq] so that it doesn\[cq]t get converted to-\[lq]Nm\[rq] at this stage.-.RE-.PP-If you are using a CSL bibliography (either JSON or YAML), then observe-the following rules:-.IP \[bu] 2-All titles should be in sentence case.-.IP \[bu] 2-Use the \f[CR]language\f[R] field for non-English titles to prevent-their conversion to title case in styles that call for this.-(Conversion happens only if \f[CR]language\f[R] begins with-\f[CR]en\f[R] or is left empty.)-.IP \[bu] 2-Protect words that should not be converted to title case using this-syntax:-.RS 2-.IP-.EX-Spin wave dispersion on the <span class=\[dq]nocase\[dq]>nm</span> scale-.EE-.RE-.SS Conference Papers, Published vs.\ Unpublished-For a formally published conference paper, use the biblatex entry type-\f[CR]inproceedings\f[R] (which will be mapped to CSL-\f[CR]paper-conference\f[R]).-.PP-For an unpublished manuscript, use the biblatex entry type-\f[CR]unpublished\f[R] without an \f[CR]eventtitle\f[R] field (this-entry type will be mapped to CSL \f[CR]manuscript\f[R]).-.PP-For a talk, an unpublished conference paper, or a poster presentation,-use the biblatex entry type \f[CR]unpublished\f[R] with an-\f[CR]eventtitle\f[R] field (this entry type will be mapped to CSL-\f[CR]speech\f[R]).-Use the biblatex \f[CR]type\f[R] field to indicate the type,-e.g.\ \[lq]Paper\[rq], or \[lq]Poster\[rq].-\f[CR]venue\f[R] and \f[CR]eventdate\f[R] may be useful too, though-\f[CR]eventdate\f[R] will not be rendered by most CSL styles.-Note that \f[CR]venue\f[R] is for the event\[cq]s venue, unlike-\f[CR]location\f[R] which describes the publisher\[cq]s location; do not-use the latter for an unpublished conference paper.-.SS Specifying a citation style-Citations and references can be formatted using any style supported by-the Citation Style Language, listed in the Zotero Style Repository.-These files are specified using the \f[CR]--csl\f[R] option or the-\f[CR]csl\f[R] (or \f[CR]citation-style\f[R]) metadata field.-By default, pandoc will use the Chicago Manual of Style author-date-format.-(You can override this default by copying a CSL style of your choice to-\f[CR]default.csl\f[R] in your user data directory.)-The CSL project provides further information on finding and editing-styles.-.PP-The \f[CR]--citation-abbreviations\f[R] option (or the-\f[CR]citation-abbreviations\f[R] metadata field) may be used to specify-a JSON file containing abbreviations of journals that should be used in-formatted bibliographies when \f[CR]form=\[dq]short\[dq]\f[R] is-specified.-The format of the file can be illustrated with an example:-.IP-.EX-{ \[dq]default\[dq]: {- \[dq]container-title\[dq]: {- \[dq]Lloyd\[aq]s Law Reports\[dq]: \[dq]Lloyd\[aq]s Rep\[dq],- \[dq]Estates Gazette\[dq]: \[dq]EG\[dq],- \[dq]Scots Law Times\[dq]: \[dq]SLT\[dq]- }- }-}-.EE-.SS Citations in note styles-Pandoc\[cq]s citation processing is designed to allow you to move-between author-date, numerical, and note styles without modifying the-markdown source.-When you\[cq]re using a note style, avoid inserting footnotes manually.-Instead, insert citations just as you would in an author-date-style\[em]for example,-.IP-.EX-Blah blah [\[at]foo, p. 33].-.EE-.PP-The footnote will be created automatically.-Pandoc will take care of removing the space and moving the note before-or after the period, depending on the setting of-\f[CR]notes-after-punctuation\f[R], as described below in Other relevant-metadata fields.-.PP-In some cases you may need to put a citation inside a regular footnote.-Normal citations in footnotes (such as \f[CR][\[at]foo, p. 33]\f[R])-will be rendered in parentheses.-In-text citations (such as \f[CR]\[at]foo [p. 33]\f[R]) will be rendered-without parentheses.-(A comma will be added if appropriate.)-Thus:-.IP-.EX-[\[ha]1]: Some studies [\[at]foo; \[at]bar, p. 33] show that-frubulicious zoosnaps are quantical. For a survey-of the literature, see \[at]baz [chap. 1].-.EE-.SS Placement of the bibliography-If the style calls for a list of works cited, it will be placed in a div-with id \f[CR]refs\f[R], if one exists:-.IP-.EX-::: {#refs}-:::-.EE-.PP-Otherwise, it will be placed at the end of the document.-Generation of the bibliography can be suppressed by setting-\f[CR]suppress-bibliography: true\f[R] in the YAML metadata.-.PP-If you wish the bibliography to have a section heading, you can set-\f[CR]reference-section-title\f[R] in the metadata, or put the heading-at the beginning of the div with id \f[CR]refs\f[R] (if you are using-it) or at the end of your document:-.IP-.EX-last paragraph...--# References-.EE-.PP-The bibliography will be inserted after this heading.-Note that the \f[CR]unnumbered\f[R] class will be added to this heading,-so that the section will not be numbered.-.PP-If you want to put the bibliography into a variable in your template,-one way to do that is to put the div with id \f[CR]refs\f[R] into a-metadata field, e.g.-.IP-.EX-----refs: |- ::: {#refs}- :::-\&...-.EE-.PP-You can then put the variable \f[CR]$refs$\f[R] into your template where-you want the bibliography to be placed.-.SS Including uncited items in the bibliography-If you want to include items in the bibliography without actually citing-them in the body text, you can define a dummy \f[CR]nocite\f[R] metadata-field and put the citations there:-.IP-.EX-----nocite: |- \[at]item1, \[at]item2-\&...--\[at]item3-.EE-.PP-In this example, the document will contain a citation for-\f[CR]item3\f[R] only, but the bibliography will contain entries for-\f[CR]item1\f[R], \f[CR]item2\f[R], and \f[CR]item3\f[R].-.PP-It is possible to create a bibliography with all the citations, whether-or not they appear in the document, by using a wildcard:-.IP-.EX-----nocite: |- \[at]*-\&...-.EE-.PP-For LaTeX output, you can also use \f[CR]natbib\f[R] or-\f[CR]biblatex\f[R] to render the bibliography.-In order to do so, specify bibliography files as outlined above, and add-\f[CR]--natbib\f[R] or \f[CR]--biblatex\f[R] argument to pandoc-invocation.-Bear in mind that bibliography files have to be in either BibTeX (for-\f[CR]--natbib\f[R]) or BibLaTeX (for \f[CR]--biblatex\f[R]) format.-.SS Other relevant metadata fields-A few other metadata fields affect bibliography formatting:-.TP-\f[CR]link-citations\f[R]-If true, citations will be hyperlinked to the corresponding bibliography-entries (for author-date and numerical styles only).-Defaults to false.-.TP-\f[CR]link-bibliography\f[R]-If true, DOIs, PMCIDs, PMID, and URLs in bibliographies will be rendered-as hyperlinks.-(If an entry contains a DOI, PMCID, PMID, or URL, but none of these-fields are rendered by the style, then the title, or in the absence of a-title the whole entry, will be hyperlinked.)-Defaults to true.-.TP-\f[CR]lang\f[R]-The \f[CR]lang\f[R] field will affect how the style is localized, for-example in the translation of labels, the use of quotation marks, and-the way items are sorted.-(For backwards compatibility, \f[CR]locale\f[R] may be used instead of-\f[CR]lang\f[R], but this use is deprecated.)-.RS-.PP-A BCP 47 language tag is expected: for example, \f[CR]en\f[R],-\f[CR]de\f[R], \f[CR]en-US\f[R], \f[CR]fr-CA\f[R], \f[CR]ug-Cyrl\f[R].-The unicode extension syntax (after \f[CR]-u-\f[R]) may be used to-specify options for collation (sorting) more precisely.-Here are some examples:-.IP \[bu] 2-\f[CR]zh-u-co-pinyin\f[R] \[en] Chinese with the Pinyin collation.-.IP \[bu] 2-\f[CR]es-u-co-trad\f[R] \[en] Spanish with the traditional collation-(with \f[CR]Ch\f[R] sorting after \f[CR]C\f[R]).-.IP \[bu] 2-\f[CR]fr-u-kb\f[R] \[en] French with \[lq]backwards\[rq] accent sorting-(with \f[CR]coté\f[R] sorting after \f[CR]côte\f[R]).-.IP \[bu] 2-\f[CR]en-US-u-kf-upper\f[R] \[en] English with uppercase letters sorting-before lower (default is lower before upper).-.RE-.TP-\f[CR]notes-after-punctuation\f[R]-If true (the default for note styles), pandoc will put footnote-references or superscripted numerical citations after following-punctuation.-For example, if the source contains-\f[CR]blah blah [\[at]jones99].\f[R], the result will look like-\f[CR]blah blah.[\[ha]1]\f[R], with the note moved after the period and-the space collapsed.-If false, the space will still be collapsed, but the footnote will not-be moved after the punctuation.-The option may also be used in numerical styles that use superscripts-for citation numbers (but for these styles the default is not to move-the citation).-.SH SLIDE SHOWS-You can use pandoc to produce an HTML + JavaScript slide presentation-that can be viewed via a web browser.-There are five ways to do this, using S5, DZSlides, Slidy, Slideous, or-reveal.js.-You can also produce a PDF slide show using LaTeX \f[CR]beamer\f[R], or-slide shows in Microsoft PowerPoint format.-.PP-Here\[cq]s the Markdown source for a simple slide show,-\f[CR]habits.txt\f[R]:-.IP-.EX-% Habits-% John Doe-% March 22, 2005--# In the morning--## Getting up--- Turn off alarm-- Get out of bed--## Breakfast--- Eat eggs-- Drink coffee--# In the evening--## Dinner--- Eat spaghetti-- Drink wine------------------------## Going to sleep--- Get in bed-- Count sheep-.EE-.PP-To produce an HTML/JavaScript slide show, simply type-.IP-.EX-pandoc -t FORMAT -s habits.txt -o habits.html-.EE-.PP-where \f[CR]FORMAT\f[R] is either \f[CR]s5\f[R], \f[CR]slidy\f[R],-\f[CR]slideous\f[R], \f[CR]dzslides\f[R], or \f[CR]revealjs\f[R].-.PP-For Slidy, Slideous, reveal.js, and S5, the file produced by pandoc with-the \f[CR]-s/--standalone\f[R] option embeds a link to JavaScript and-CSS files, which are assumed to be available at the relative path-\f[CR]s5/default\f[R] (for S5), \f[CR]slideous\f[R] (for Slideous),-\f[CR]reveal.js\f[R] (for reveal.js), or at the Slidy website at-\f[CR]w3.org\f[R] (for Slidy).-(These paths can be changed by setting the \f[CR]slidy-url\f[R],-\f[CR]slideous-url\f[R], \f[CR]revealjs-url\f[R], or \f[CR]s5-url\f[R]-variables; see Variables for HTML slides, above.)-For DZSlides, the (relatively short) JavaScript and CSS are included in-the file by default.-.PP-With all HTML slide formats, the \f[CR]--self-contained\f[R] option can-be used to produce a single file that contains all of the data necessary-to display the slide show, including linked scripts, stylesheets,-images, and videos.-.PP-To produce a PDF slide show using beamer, type-.IP-.EX-pandoc -t beamer habits.txt -o habits.pdf-.EE-.PP-Note that a reveal.js slide show can also be converted to a PDF by-printing it to a file from the browser.-.PP-To produce a PowerPoint slide show, type-.IP-.EX-pandoc habits.txt -o habits.pptx-.EE-.SS Structuring the slide show-By default, the \f[I]slide level\f[R] is the highest heading level in-the hierarchy that is followed immediately by content, and not another-heading, somewhere in the document.-In the example above, level-1 headings are always followed by level-2-headings, which are followed by content, so the slide level is 2.-This default can be overridden using the \f[CR]--slide-level\f[R]-option.-.PP-The document is carved up into slides according to the following rules:-.IP \[bu] 2-A horizontal rule always starts a new slide.-.IP \[bu] 2-A heading at the slide level always starts a new slide.-.IP \[bu] 2-Headings \f[I]below\f[R] the slide level in the hierarchy create-headings \f[I]within\f[R] a slide.-(In beamer, a \[lq]block\[rq] will be created.-If the heading has the class \f[CR]example\f[R], an-\f[CR]exampleblock\f[R] environment will be used; if it has the class-\f[CR]alert\f[R], an \f[CR]alertblock\f[R] will be used; otherwise a-regular \f[CR]block\f[R] will be used.)-.IP \[bu] 2-Headings \f[I]above\f[R] the slide level in the hierarchy create-\[lq]title slides,\[rq] which just contain the section title and help to-break the slide show into sections.-Non-slide content under these headings will be included on the title-slide (for HTML slide shows) or in a subsequent slide with the same-title (for beamer).-.IP \[bu] 2-A title page is constructed automatically from the document\[cq]s title-block, if present.-(In the case of beamer, this can be disabled by commenting out some-lines in the default template.)-.PP-These rules are designed to support many different styles of slide show.-If you don\[cq]t care about structuring your slides into sections and-subsections, you can either just use level-1 headings for all slides (in-that case, level 1 will be the slide level) or you can set-\f[CR]--slide-level=0\f[R].-.PP-Note: in reveal.js slide shows, if slide level is 2, a two-dimensional-layout will be produced, with level-1 headings building horizontally and-level-2 headings building vertically.-It is not recommended that you use deeper nesting of section levels with-reveal.js unless you set \f[CR]--slide-level=0\f[R] (which lets-reveal.js produce a one-dimensional layout and only interprets-horizontal rules as slide boundaries).-.SS PowerPoint layout choice-When creating slides, the pptx writer chooses from a number of-pre-defined layouts, based on the content of the slide:-.TP-Title Slide-This layout is used for the initial slide, which is generated and filled-from the metadata fields \f[CR]date\f[R], \f[CR]author\f[R], and-\f[CR]title\f[R], if they are present.-.TP-Section Header-This layout is used for what pandoc calls \[lq]title slides\[rq], i.e.-slides which start with a header which is above the slide level in the-hierarchy.-.TP-Two Content-This layout is used for two-column slides, i.e.\ slides containing a div-with class \f[CR]columns\f[R] which contains at least two divs with-class \f[CR]column\f[R].-.TP-Comparison-This layout is used instead of \[lq]Two Content\[rq] for any two-column-slides in which at least one column contains text followed by non-text-(e.g.\ an image or a table).-.TP-Content with Caption-This layout is used for any non-two-column slides which contain text-followed by non-text (e.g.\ an image or a table).-.TP-Blank-This layout is used for any slides which only contain blank content,-e.g.\ a slide containing only speaker notes, or a slide containing only-a non-breaking space.-.TP-Title and Content-This layout is used for all slides which do not match the criteria for-another layout.-.PP-These layouts are chosen from the default pptx reference doc included-with pandoc, unless an alternative reference doc is specified using-\f[CR]--reference-doc\f[R].-.SS Incremental lists-By default, these writers produce lists that display \[lq]all at-once.\[rq] If you want your lists to display incrementally (one item at-a time), use the \f[CR]-i\f[R] option.-If you want a particular list to depart from the default, put it in a-\f[CR]div\f[R] block with class \f[CR]incremental\f[R] or-\f[CR]nonincremental\f[R].-So, for example, using the \f[CR]fenced div\f[R] syntax, the following-would be incremental regardless of the document default:-.IP-.EX-::: incremental--- Eat spaghetti-- Drink wine--:::-.EE-.PP-or-.IP-.EX-::: nonincremental--- Eat spaghetti-- Drink wine--:::-.EE-.PP-While using \f[CR]incremental\f[R] and \f[CR]nonincremental\f[R] divs is-the recommended method of setting incremental lists on a per-case basis,-an older method is also supported: putting lists inside a blockquote-will depart from the document default (that is, it will display-incrementally without the \f[CR]-i\f[R] option and all at once with the-\f[CR]-i\f[R] option):-.IP-.EX-> - Eat spaghetti-> - Drink wine-.EE-.PP-Both methods allow incremental and nonincremental lists to be mixed in a-single document.-.PP-If you want to include a block-quoted list, you can work around this-behavior by putting the list inside a fenced div, so that it is not the-direct child of the block quote:-.IP-.EX-> ::: wrapper-> - a-> - list in a quote-> :::-.EE-.SS Inserting pauses-You can add \[lq]pauses\[rq] within a slide by including a paragraph-containing three dots, separated by spaces:-.IP-.EX-# Slide with a pause--content before the pause--\&. . .--content after the pause-.EE-.PP-Note: this feature is not yet implemented for PowerPoint output.-.SS Styling the slides-You can change the style of HTML slides by putting customized CSS files-in \f[CR]$DATADIR/s5/default\f[R] (for S5), \f[CR]$DATADIR/slidy\f[R]-(for Slidy), or \f[CR]$DATADIR/slideous\f[R] (for Slideous), where-\f[CR]$DATADIR\f[R] is the user data directory (see-\f[CR]--data-dir\f[R], above).-The originals may be found in pandoc\[cq]s system data directory-(generally \f[CR]$CABALDIR/pandoc-VERSION/s5/default\f[R]).-Pandoc will look there for any files it does not find in the user data-directory.-.PP-For dzslides, the CSS is included in the HTML file itself, and may be-modified there.-.PP-All reveal.js configuration options can be set through variables.-For example, themes can be used by setting the \f[CR]theme\f[R]-variable:-.IP-.EX--V theme=moon-.EE-.PP-Or you can specify a custom stylesheet using the \f[CR]--css\f[R]-option.-.PP-To style beamer slides, you can specify a \f[CR]theme\f[R],-\f[CR]colortheme\f[R], \f[CR]fonttheme\f[R], \f[CR]innertheme\f[R], and-\f[CR]outertheme\f[R], using the \f[CR]-V\f[R] option:-.IP-.EX-pandoc -t beamer habits.txt -V theme:Warsaw -o habits.pdf-.EE-.PP-Note that heading attributes will turn into slide attributes (on a-\f[CR]<div>\f[R] or \f[CR]<section>\f[R]) in HTML slide formats,-allowing you to style individual slides.-In beamer, a number of heading classes and attributes are recognized as-frame options and will be passed through as options to the frame: see-Frame attributes in beamer, below.-.SS Speaker notes-Speaker notes are supported in reveal.js, PowerPoint (pptx), and beamer-output.-You can add notes to your Markdown document thus:-.IP-.EX-::: notes--This is my note.--- It can contain Markdown-- like this list--:::-.EE-.PP-To show the notes window in reveal.js, press \f[CR]s\f[R] while viewing-the presentation.-Speaker notes in PowerPoint will be available, as usual, in handouts and-presenter view.-.PP-Notes are not yet supported for other slide formats, but the notes will-not appear on the slides themselves.-.SS Columns-To put material in side by side columns, you can use a native div-container with class \f[CR]columns\f[R], containing two or more div-containers with class \f[CR]column\f[R] and a \f[CR]width\f[R]-attribute:-.IP-.EX-:::::::::::::: {.columns}-::: {.column width=\[dq]40%\[dq]}-contents...-:::-::: {.column width=\[dq]60%\[dq]}-contents...-:::-::::::::::::::-.EE-.SS Additional columns attributes in beamer-The div containers with classes \f[CR]columns\f[R] and \f[CR]column\f[R]-can optionally have an \f[CR]align\f[R] attribute.-The class \f[CR]columns\f[R] can optionally have a \f[CR]totalwidth\f[R]-attribute or an \f[CR]onlytextwidth\f[R] class.-.IP-.EX-:::::::::::::: {.columns align=center totalwidth=8em}-::: {.column width=\[dq]40%\[dq]}-contents...-:::-::: {.column width=\[dq]60%\[dq] align=bottom}-contents...-:::-::::::::::::::-.EE-.PP-The \f[CR]align\f[R] attributes on \f[CR]columns\f[R] and-\f[CR]column\f[R] can be used with the values \f[CR]top\f[R],-\f[CR]top-baseline\f[R], \f[CR]center\f[R] and \f[CR]bottom\f[R] to-vertically align the columns.-It defaults to \f[CR]top\f[R] in \f[CR]columns\f[R].-.PP-The \f[CR]totalwidth\f[R] attribute limits the width of the columns to-the given value.-.IP-.EX-:::::::::::::: {.columns align=top .onlytextwidth}-::: {.column width=\[dq]40%\[dq] align=center}-contents...-:::-::: {.column width=\[dq]60%\[dq]}-contents...-:::-::::::::::::::-.EE-.PP-The class \f[CR]onlytextwidth\f[R] sets the \f[CR]totalwidth\f[R] to-\f[CR]\[rs]textwidth\f[R].-.PP-See Section 12.7 of the Beamer User\[cq]s Guide for more details.-.SS Frame attributes in beamer-Sometimes it is necessary to add the LaTeX \f[CR][fragile]\f[R] option-to a frame in beamer (for example, when using the \f[CR]minted\f[R]-environment).-This can be forced by adding the \f[CR]fragile\f[R] class to the heading-introducing the slide:-.IP-.EX-# Fragile slide {.fragile}-.EE-.PP-All of the other frame attributes described in Section 8.1 of the Beamer-User\[cq]s Guide may also be used: \f[CR]allowdisplaybreaks\f[R],-\f[CR]allowframebreaks\f[R], \f[CR]b\f[R], \f[CR]c\f[R], \f[CR]s\f[R],-\f[CR]t\f[R], \f[CR]environment\f[R], \f[CR]label\f[R],-\f[CR]plain\f[R], \f[CR]shrink\f[R], \f[CR]standout\f[R],-\f[CR]noframenumbering\f[R], \f[CR]squeeze\f[R].-\f[CR]allowframebreaks\f[R] is recommended especially for-bibliographies, as it allows multiple slides to be created if the-content overfills the frame:-.IP-.EX-# References {.allowframebreaks}-.EE-.PP-In addition, the \f[CR]frameoptions\f[R] attribute may be used to pass-arbitrary frame options to a beamer slide:-.IP-.EX-# Heading {frameoptions=\[dq]squeeze,shrink,customoption=foobar\[dq]}-.EE-.SS Background in reveal.js, beamer, and pptx-Background images can be added to self-contained reveal.js slide shows,-beamer slide shows, and pptx slide shows.-.SS On all slides (beamer, reveal.js, pptx)-With beamer and reveal.js, the configuration option-\f[CR]background-image\f[R] can be used either in the YAML metadata-block or as a command-line variable to get the same image on every-slide.-.PP-Note that for reveal.js, the \f[CR]background-image\f[R] will be used as-a \f[CR]parallaxBackgroundImage\f[R] (see below).-.PP-For pptx, you can use a reference doc in which background images have-been set on the relevant layouts.-.SS \f[CR]parallaxBackgroundImage\f[R] (reveal.js)-For reveal.js, there is also the reveal.js-native option-\f[CR]parallaxBackgroundImage\f[R], which produces a parallax scrolling-background.-You must also set \f[CR]parallaxBackgroundSize\f[R], and can optionally-set \f[CR]parallaxBackgroundHorizontal\f[R] and-\f[CR]parallaxBackgroundVertical\f[R] to configure the scrolling-behaviour.-See the reveal.js documentation for more details about the meaning of-these options.-.PP-In reveal.js\[cq]s overview mode, the parallaxBackgroundImage will show-up only on the first slide.-.SS On individual slides (reveal.js, pptx)-To set an image for a particular reveal.js or pptx slide, add-\f[CR]{background-image=\[dq]/path/to/image\[dq]}\f[R] to the first-slide-level heading on the slide (which may even be empty).-.PP-As the HTML writers pass unknown attributes through, other reveal.js-background settings also work on individual slides, including-\f[CR]background-size\f[R], \f[CR]background-repeat\f[R],-\f[CR]background-color\f[R], \f[CR]transition\f[R], and-\f[CR]transition-speed\f[R].-(The \f[CR]data-\f[R] prefix will automatically be added.)-.PP-Note: \f[CR]data-background-image\f[R] is also supported in pptx for-consistency with reveal.js \[en] if \f[CR]background-image\f[R]-isn\[cq]t found, \f[CR]data-background-image\f[R] will be checked.-.SS On the title slide (reveal.js, pptx)-To add a background image to the automatically generated title slide for-reveal.js, use the \f[CR]title-slide-attributes\f[R] variable in the-YAML metadata block.-It must contain a map of attribute names and values.-(Note that the \f[CR]data-\f[R] prefix is required here, as it isn\[cq]t-added automatically.)-.PP-For pptx, pass a reference doc with the background image set on the-\[lq]Title Slide\[rq] layout.-.SS Example (reveal.js)-.IP-.EX-----title: My Slide Show-parallaxBackgroundImage: /path/to/my/background_image.png-title-slide-attributes:- data-background-image: /path/to/title_image.png- data-background-size: contain------## Slide One--Slide 1 has background_image.png as its background.--## {background-image=\[dq]/path/to/special_image.jpg\[dq]}--Slide 2 has a special image for its background, even though the heading has no content.-.EE-.SH EPUBS-.SS EPUB Metadata-EPUB metadata may be specified using the \f[CR]--epub-metadata\f[R]-option, but if the source document is Markdown, it is better to use a-YAML metadata block.-Here is an example:-.IP-.EX-----title:-- type: main- text: My Book-- type: subtitle- text: An investigation of metadata-creator:-- role: author- text: John Smith-- role: editor- text: Sarah Jones-identifier:-- scheme: DOI- text: doi:10.234234.234/33-publisher: My Press-rights: © 2007 John Smith, CC BY-NC-ibooks:- version: 1.3.4-\&...-.EE-.PP-The following fields are recognized:-.TP-\f[CR]identifier\f[R]-Either a string value or an object with fields \f[CR]text\f[R] and-\f[CR]scheme\f[R].-Valid values for \f[CR]scheme\f[R] are \f[CR]ISBN-10\f[R],-\f[CR]GTIN-13\f[R], \f[CR]UPC\f[R], \f[CR]ISMN-10\f[R], \f[CR]DOI\f[R],-\f[CR]LCCN\f[R], \f[CR]GTIN-14\f[R], \f[CR]ISBN-13\f[R],-\f[CR]Legal deposit number\f[R], \f[CR]URN\f[R], \f[CR]OCLC\f[R],-\f[CR]ISMN-13\f[R], \f[CR]ISBN-A\f[R], \f[CR]JP\f[R], \f[CR]OLCC\f[R].-.TP-\f[CR]title\f[R]-Either a string value, or an object with fields \f[CR]file-as\f[R] and-\f[CR]type\f[R], or a list of such objects.-Valid values for \f[CR]type\f[R] are \f[CR]main\f[R],-\f[CR]subtitle\f[R], \f[CR]short\f[R], \f[CR]collection\f[R],-\f[CR]edition\f[R], \f[CR]extended\f[R].-.TP-\f[CR]creator\f[R]-Either a string value, or an object with fields \f[CR]role\f[R],-\f[CR]file-as\f[R], and \f[CR]text\f[R], or a list of such objects.-Valid values for \f[CR]role\f[R] are MARC relators, but pandoc will-attempt to translate the human-readable versions (like \[lq]author\[rq]-and \[lq]editor\[rq]) to the appropriate marc relators.-.TP-\f[CR]contributor\f[R]-Same format as \f[CR]creator\f[R].-.TP-\f[CR]date\f[R]-A string value in \f[CR]YYYY-MM-DD\f[R] format.-(Only the year is necessary.)-Pandoc will attempt to convert other common date formats.-.TP-\f[CR]lang\f[R] (or legacy: \f[CR]language\f[R])-A string value in BCP 47 format.-Pandoc will default to the local language if nothing is specified.-.TP-\f[CR]subject\f[R]-Either a string value, or an object with fields \f[CR]text\f[R],-\f[CR]authority\f[R], and \f[CR]term\f[R], or a list of such objects.-Valid values for \f[CR]authority\f[R] are either a reserved authority-value (currently \f[CR]AAT\f[R], \f[CR]BIC\f[R], \f[CR]BISAC\f[R],-\f[CR]CLC\f[R], \f[CR]DDC\f[R], \f[CR]CLIL\f[R], \f[CR]EuroVoc\f[R],-\f[CR]MEDTOP\f[R], \f[CR]LCSH\f[R], \f[CR]NDC\f[R], \f[CR]Thema\f[R],-\f[CR]UDC\f[R], and \f[CR]WGS\f[R]) or an absolute IRI identifying a-custom scheme.-Valid values for \f[CR]term\f[R] are defined by the scheme.-.TP-\f[CR]description\f[R]-A string value.-.TP-\f[CR]type\f[R]-A string value.-.TP-\f[CR]format\f[R]-A string value.-.TP-\f[CR]relation\f[R]-A string value.-.TP-\f[CR]coverage\f[R]-A string value.-.TP-\f[CR]rights\f[R]-A string value.-.TP-\f[CR]belongs-to-collection\f[R]-A string value.-Identifies the name of a collection to which the EPUB Publication-belongs.-.TP-\f[CR]group-position\f[R]-The \f[CR]group-position\f[R] field indicates the numeric position in-which the EPUB Publication belongs relative to other works belonging to-the same \f[CR]belongs-to-collection\f[R] field.-.TP-\f[CR]cover-image\f[R]-A string value (path to cover image).-.TP-\f[CR]css\f[R] (or legacy: \f[CR]stylesheet\f[R])-A string value (path to CSS stylesheet).-.TP-\f[CR]page-progression-direction\f[R]-Either \f[CR]ltr\f[R] or \f[CR]rtl\f[R].-Specifies the \f[CR]page-progression-direction\f[R] attribute for the-\f[CR]spine\f[R] element.-.TP-\f[CR]ibooks\f[R]-iBooks-specific metadata, with the following fields:-.RS-.IP \[bu] 2-\f[CR]version\f[R]: (string)-.IP \[bu] 2-\f[CR]specified-fonts\f[R]: \f[CR]true\f[R]|\f[CR]false\f[R] (default-\f[CR]false\f[R])-.IP \[bu] 2-\f[CR]ipad-orientation-lock\f[R]:-\f[CR]portrait-only\f[R]|\f[CR]landscape-only\f[R]-.IP \[bu] 2-\f[CR]iphone-orientation-lock\f[R]:-\f[CR]portrait-only\f[R]|\f[CR]landscape-only\f[R]-.IP \[bu] 2-\f[CR]binding\f[R]: \f[CR]true\f[R]|\f[CR]false\f[R] (default-\f[CR]true\f[R])-.IP \[bu] 2-\f[CR]scroll-axis\f[R]:-\f[CR]vertical\f[R]|\f[CR]horizontal\f[R]|\f[CR]default\f[R]-.RE-.SS The \f[CR]epub:type\f[R] attribute-For \f[CR]epub3\f[R] output, you can mark up the heading that-corresponds to an EPUB chapter using the \f[CR]epub:type\f[R] attribute.-For example, to set the attribute to the value \f[CR]prologue\f[R], use-this markdown:-.IP-.EX-# My chapter {epub:type=prologue}-.EE-.PP-Which will result in:-.IP-.EX-<body epub:type=\[dq]frontmatter\[dq]>- <section epub:type=\[dq]prologue\[dq]>- <h1>My chapter</h1>-.EE-.PP-Pandoc will output \f[CR]<body epub:type=\[dq]bodymatter\[dq]>\f[R],-unless you use one of the following values, in which case either-\f[CR]frontmatter\f[R] or \f[CR]backmatter\f[R] will be output.-.RS -14n-.IP-.EX- epub:type of first section epub:type of body- ---------------------------- -------------------- prologue frontmatter- abstract frontmatter- acknowledgments frontmatter- copyright-page frontmatter- dedication frontmatter- credits frontmatter- keywords frontmatter- imprint frontmatter- contributors frontmatter- other-credits frontmatter- errata frontmatter- revision-history frontmatter- titlepage frontmatter- halftitlepage frontmatter- seriespage frontmatter- foreword frontmatter- preface frontmatter- frontispiece frontmatter- appendix backmatter- colophon backmatter- bibliography backmatter- index backmatter-.EE-.RE-.SS Linked media-By default, pandoc will download media referenced from any-\f[CR]<img>\f[R], \f[CR]<audio>\f[R], \f[CR]<video>\f[R] or-\f[CR]<source>\f[R] element present in the generated EPUB, and include-it in the EPUB container, yielding a completely self-contained EPUB.-If you want to link to external media resources instead, use raw HTML in-your source and add \f[CR]data-external=\[dq]1\[dq]\f[R] to the tag with-the \f[CR]src\f[R] attribute.-For example:-.IP-.EX-<audio controls=\[dq]1\[dq]>- <source src=\[dq]https://example.com/music/toccata.mp3\[dq]- data-external=\[dq]1\[dq] type=\[dq]audio/mpeg\[dq]>- </source>-</audio>-.EE-.PP-If the input format already is HTML then-\f[CR]data-external=\[dq]1\[dq]\f[R] will work as expected for-\f[CR]<img>\f[R] elements.-Similarly, for Markdown, external images can be declared with-\f[CR]{external=1}\f[R].-Note that this only works for images; the other media elements have no-native representation in pandoc\[cq]s AST and require the use of raw-HTML.-.SS EPUB styling-By default, pandoc will include some basic styling contained in its-\f[CR]epub.css\f[R] data file.-(To see this, use \f[CR]pandoc --print-default-data-file epub.css\f[R].)-To use a different CSS file, just use the \f[CR]--css\f[R] command line-option.-A few inline styles are defined in addition; these are essential for-correct formatting of pandoc\[cq]s HTML output.-.PP-The \f[CR]document-css\f[R] variable may be set if the more opinionated-styling of pandoc\[cq]s default HTML templates is desired (and in that-case the variables defined in Variables for HTML may be used to-fine-tune the style).-.SH CHUNKED HTML-\f[CR]pandoc -t chunkedhtml\f[R] will produce a zip archive of linked-HTML files, one for each section of the original document.-Internal links will automatically be adjusted to point to the right-place, images linked to under the working directory will be-incorporated, and navigation links will be added.-In addition, a JSON file \f[CR]sitemap.json\f[R] will be included-describing the hierarchical structure of the files.-.PP-If an output file without an extension is specified, then it will be-interpreted as a directory and the zip archive will be automatically-unpacked into it (unless it already exists, in which case an error will-be raised).-Otherwise a \f[CR].zip\f[R] file will be produced.-.PP-The navigation links can be customized by adjusting the template.-By default, a table of contents is included only on the top page.-To include it on every page, set the \f[CR]toc\f[R] variable manually.-.SH JUPYTER NOTEBOOKS-When creating a Jupyter notebook, pandoc will try to infer the notebook-structure.-Code blocks with the class \f[CR]code\f[R] will be taken as code cells,-and intervening content will be taken as Markdown cells.-Attachments will automatically be created for images in Markdown cells.-Metadata will be taken from the \f[CR]jupyter\f[R] metadata field.-For example:-.IP-.EX-----title: My notebook-jupyter:- nbformat: 4- nbformat_minor: 5- kernelspec:- display_name: Python 2- language: python- name: python2- language_info:- codemirror_mode:- name: ipython- version: 2- file_extension: \[dq].py\[dq]- mimetype: \[dq]text/x-python\[dq]- name: \[dq]python\[dq]- nbconvert_exporter: \[dq]python\[dq]- pygments_lexer: \[dq]ipython2\[dq]- version: \[dq]2.7.15\[dq]------# Lorem ipsum--**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus-bibendum felis dictum sodales.--\[ga]\[ga]\[ga] code-print(\[dq]hello\[dq])-\[ga]\[ga]\[ga]--## Pyout--\[ga]\[ga]\[ga] code-from IPython.display import HTML-HTML(\[dq]\[dq]\[dq]-<script>-console.log(\[dq]hello\[dq]);-</script>-<b>HTML</b>-\[dq]\[dq]\[dq])-\[ga]\[ga]\[ga]--## Image--This image  will be-included as a cell attachment.-.EE-.PP-If you want to add cell attributes, group cells differently, or add-output to code cells, then you need to include divs to indicate the-structure.-You can use either fenced divs or native divs for this.-Here is an example:-.IP-.EX-:::::: {.cell .markdown}-# Lorem--**Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus-bibendum felis dictum sodales.-::::::--:::::: {.cell .code execution_count=1}-\[ga]\[ga]\[ga] {.python}-print(\[dq]hello\[dq])-\[ga]\[ga]\[ga]--::: {.output .stream .stdout}-\[ga]\[ga]\[ga]-hello-\[ga]\[ga]\[ga]-:::-::::::--:::::: {.cell .code execution_count=2}-\[ga]\[ga]\[ga] {.python}-from IPython.display import HTML-HTML(\[dq]\[dq]\[dq]-<script>-console.log(\[dq]hello\[dq]);-</script>-<b>HTML</b>-\[dq]\[dq]\[dq])-\[ga]\[ga]\[ga]--::: {.output .execute_result execution_count=2}-\[ga]\[ga]\[ga]{=html}-<script>-console.log(\[dq]hello\[dq]);-</script>-<b>HTML</b>-hello-\[ga]\[ga]\[ga]-:::-::::::-.EE-.PP-If you include raw HTML or TeX in an output cell, use the raw attribute,-as shown in the last cell of the example above.-Although pandoc can process \[lq]bare\[rq] raw HTML and TeX, the result-is often interspersed raw elements and normal textual elements, and in-an output cell pandoc expects a single, connected raw block.-To avoid using raw HTML or TeX except when marked explicitly using raw-attributes, we recommend specifying the extensions-\f[CR]-raw_html-raw_tex+raw_attribute\f[R] when translating between-Markdown and ipynb notebooks.-.PP-Note that options and extensions that affect reading and writing of-Markdown will also affect Markdown cells in ipynb notebooks.-For example, \f[CR]--wrap=preserve\f[R] will preserve soft line breaks-in Markdown cells; \f[CR]--markdown-headings=setext\f[R] will cause-Setext-style headings to be used; and \f[CR]--preserve-tabs\f[R] will-prevent tabs from being turned to spaces.-.SH SYNTAX HIGHLIGHTING-Pandoc will automatically highlight syntax in fenced code blocks that-are marked with a language name.-The Haskell library skylighting is used for highlighting.-Currently highlighting is supported only for HTML, EPUB, Docx, Ms, and-LaTeX/PDF output.-To see a list of language names that pandoc will recognize, type-\f[CR]pandoc --list-highlight-languages\f[R].-.PP-The color scheme can be selected using the \f[CR]--highlight-style\f[R]-option.-The default color scheme is \f[CR]pygments\f[R], which imitates the-default color scheme used by the Python library pygments (though-pygments is not actually used to do the highlighting).-To see a list of highlight styles, type-\f[CR]pandoc --list-highlight-styles\f[R].-.PP-If you are not satisfied with the predefined styles, you can use-\f[CR]--print-highlight-style\f[R] to generate a JSON \f[CR].theme\f[R]-file which can be modified and used as the argument to-\f[CR]--highlight-style\f[R].-To get a JSON version of the \f[CR]pygments\f[R] style, for example:-.IP-.EX-pandoc --print-highlight-style pygments > my.theme-.EE-.PP-Then edit \f[CR]my.theme\f[R] and use it like this:-.IP-.EX-pandoc --highlight-style my.theme-.EE-.PP-If you are not satisfied with the built-in highlighting, or you want to-highlight a language that isn\[cq]t supported, you can use the-\f[CR]--syntax-definition\f[R] option to load a KDE-style XML syntax-definition file.-Before writing your own, have a look at KDE\[cq]s repository of syntax-definitions.-.PP-To disable highlighting, use the \f[CR]--no-highlight\f[R] option.-.SH CUSTOM STYLES-Custom styles can be used in the docx and ICML formats.-.SS Output-By default, pandoc\[cq]s docx and ICML output applies a predefined set-of styles for blocks such as paragraphs and block quotes, and uses-largely default formatting (italics, bold) for inlines.-This will work for most purposes, especially alongside a-\f[CR]reference.docx\f[R] file.-However, if you need to apply your own styles to blocks, or match a-preexisting set of styles, pandoc allows you to define custom styles for-blocks and text using \f[CR]div\f[R]s and \f[CR]span\f[R]s,-respectively.-.PP-If you define a \f[CR]div\f[R] or \f[CR]span\f[R] with the attribute-\f[CR]custom-style\f[R], pandoc will apply your specified style to the-contained elements (with the exception of elements whose function-depends on a style, like headings, code blocks, block quotes, or links).-So, for example, using the \f[CR]bracketed_spans\f[R] syntax,-.IP-.EX-[Get out]{custom-style=\[dq]Emphatically\[dq]}, he said.-.EE-.PP-would produce a docx file with \[lq]Get out\[rq] styled with character-style \f[CR]Emphatically\f[R].-Similarly, using the \f[CR]fenced_divs\f[R] syntax,-.IP-.EX-Dickinson starts the poem simply:--::: {custom-style=\[dq]Poetry\[dq]}-| A Bird came down the Walk----| He did not know I saw----:::-.EE-.PP-would style the two contained lines with the \f[CR]Poetry\f[R] paragraph-style.-.PP-For docx output, styles will be defined in the output file as inheriting-from normal text, if the styles are not yet in your reference.docx.-If they are already defined, pandoc will not alter the definition.-.PP-This feature allows for greatest customization in conjunction with-pandoc filters.-If you want all paragraphs after block quotes to be indented, you can-write a filter to apply the styles necessary.-If you want all italics to be transformed to the \f[CR]Emphasis\f[R]-character style (perhaps to change their color), you can write a filter-which will transform all italicized inlines to inlines within an-\f[CR]Emphasis\f[R] custom-style \f[CR]span\f[R].-.PP-For docx output, you don\[cq]t need to enable any extensions for custom-styles to work.-.SS Input-The docx reader, by default, only reads those styles that it can convert-into pandoc elements, either by direct conversion or interpreting the-derivation of the input document\[cq]s styles.-.PP-By enabling the \f[CR]styles\f[R] extension in the docx reader-(\f[CR]-f docx+styles\f[R]), you can produce output that maintains the-styles of the input document, using the \f[CR]custom-style\f[R] class.-Paragraph styles are interpreted as divs, while character styles are-interpreted as spans.-.PP-For example, using the \f[CR]custom-style-reference.docx\f[R] file in-the test directory, we have the following different outputs:-.PP-Without the \f[CR]+styles\f[R] extension:-.IP-.EX-$ pandoc test/docx/custom-style-reference.docx -f docx -t markdown-This is some text.--This is text with an *emphasized* text style. And this is text with a-**strengthened** text style.--> Here is a styled paragraph that inherits from Block Text.-.EE-.PP-And with the extension:-.IP-.EX-$ pandoc test/docx/custom-style-reference.docx -f docx+styles -t markdown--::: {custom-style=\[dq]First Paragraph\[dq]}-This is some text.-:::--::: {custom-style=\[dq]Body Text\[dq]}-This is text with an [emphasized]{custom-style=\[dq]Emphatic\[dq]} text style.-And this is text with a [strengthened]{custom-style=\[dq]Strengthened\[dq]}-text style.-:::--::: {custom-style=\[dq]My Block Style\[dq]}-> Here is a styled paragraph that inherits from Block Text.-:::-.EE-.PP-With these custom styles, you can use your input document as a-reference-doc while creating docx output (see below), and maintain the-same styles in your input and output files.-.SH CUSTOM READERS AND WRITERS-Pandoc can be extended with custom readers and writers written in Lua.-(Pandoc includes a Lua interpreter, so Lua need not be installed-separately.)-.PP-To use a custom reader or writer, simply specify the path to the Lua-script in place of the input or output format.-For example:-.IP-.EX-pandoc -t data/sample.lua-pandoc -f my_custom_markup_language.lua -t latex -s-.EE-.PP-If the script is not found relative to the working directory, it will be-sought in the \f[CR]custom\f[R] subdirectory of the user data directory-(see \f[CR]--data-dir\f[R]).-.PP-A custom reader is a Lua script that defines one function, Reader, which-takes a string as input and returns a Pandoc AST.-See the Lua filters documentation for documentation of the functions-that are available for creating pandoc AST elements.-For parsing, the lpeg parsing library is available by default.-To see a sample custom reader:-.IP-.EX-pandoc --print-default-data-file creole.lua-.EE-.PP-If you want your custom reader to have access to reader options-(e.g.\ the tab stop setting), you give your Reader function a second-\f[CR]options\f[R] parameter.-.PP-A custom writer is a Lua script that defines a function that specifies-how to render each element in a Pandoc AST.-See the djot-writer.lua for a full-featured example.-.PP-Note that custom writers have no default template.-If you want to use \f[CR]--standalone\f[R] with a custom writer, you-will need to specify a template manually using \f[CR]--template\f[R] or-add a new default template with the name-\f[CR]default.NAME_OF_CUSTOM_WRITER.lua\f[R] to the \f[CR]templates\f[R]-subdirectory of your user data directory (see Templates).-.SH REPRODUCIBLE BUILDS-Some of the document formats pandoc targets (such as EPUB, docx, and-ODT) include build timestamps in the generated document.-That means that the files generated on successive builds will differ,-even if the source does not.-To avoid this, set the \f[CR]SOURCE_DATE_EPOCH\f[R] environment-variable, and the timestamp will be taken from it instead of the current-time.-\f[CR]SOURCE_DATE_EPOCH\f[R] should contain an integer unix timestamp-(specifying the number of seconds since midnight UTC January 1, 1970).-.PP-Some document formats also include a unique identifier.-For EPUB, this can be set explicitly by setting the-\f[CR]identifier\f[R] metadata field (see EPUB Metadata, above).-.SH ACCESSIBLE PDFS AND PDF ARCHIVING STANDARDS-PDF is a flexible format, and using PDF in certain contexts requires-additional conventions.-For example, PDFs are not accessible by default; they define how-characters are placed on a page but do not contain semantic information-on the content.-However, it is possible to generate accessible PDFs, which use tagging-to add semantic information to the document.-.PP-Pandoc defaults to LaTeX to generate PDF.-Tagging support in LaTeX is in development and not readily available, so-PDFs generated in this way will always be untagged and not accessible.-This means that alternative engines must be used to generate accessible-PDFs.-.PP-The PDF standards PDF/A and PDF/UA define further restrictions intended-to optimize PDFs for archiving and accessibility.-Tagging is commonly used in combination with these standards to ensure-best results.-.PP-Note, however, that standard compliance depends on many things,-including the colorspace of embedded images.-Pandoc cannot check this, and external programs must be used to ensure-that generated PDFs are in compliance.-.SS ConTeXt-ConTeXt always produces tagged PDFs, but the quality depends on the-input.-The default ConTeXt markup generated by pandoc is optimized for-readability and reuse, not tagging.-Enable the \f[CR]tagging\f[R] format extension to force markup that is-optimized for tagging.-This can be combined with the \f[CR]pdfa\f[R] variable to generate-standard-compliant PDFs.-E.g.:-.IP-.EX-pandoc --to=context+tagging -V pdfa=3a-.EE-.PP-A recent \f[CR]context\f[R] version should be used, as older versions-contained a bug that lead to invalid PDF metadata.-.SS WeasyPrint-The HTML-based engine WeasyPrint includes experimental support for PDF/A-and PDF/UA since version 57.-Tagged PDFs can created with-.IP-.EX-pandoc --pdf-engine=weasyprint \[rs]- --pdf-engine-opt=--pdf-variant=pdf/ua-1 ...-.EE-.PP-The feature is experimental and standard compliance should not be-assumed.-.SS Prince XML-The non-free HTML-to-PDf converter \f[CR]prince\f[R] has extensive-support for various PDF standards as well as tagging.-E.g.:-.IP-.EX-pandoc --pdf-engine=prince \[rs]- --pdf-engine-opt=--tagged-pdf ...-.EE-.PP-See the prince documentation for more info.-.SS Word Processors-Word processors like LibreOffice and MS Word can also be used to-generate standardized and tagged PDF output.-Pandoc does not support direct conversions via these tools.-However, pandoc can convert a document to a \f[CR]docx\f[R] or-\f[CR]odt\f[R] file, which can then be opened and converted to PDF with-the respective word processor.-See the documentation for Word and LibreOffice.-.SH RUNNING PANDOC AS A WEB SERVER-If you rename (or symlink) the pandoc executable to-\f[CR]pandoc-server\f[R], or if you call pandoc with \f[CR]server\f[R]-as the first argument, it will start up a web server with a JSON API.-This server exposes most of the conversion functionality of pandoc.-For full documentation, see the pandoc-server man page.-.PP-If you rename (or symlink) the pandoc executable to-\f[CR]pandoc-server.cgi\f[R], it will function as a CGI program exposing-the same API as \f[CR]pandoc-server\f[R].-.PP-\f[CR]pandoc-server\f[R] is designed to be maximally secure; it uses-Haskell\[cq]s type system to provide strong guarantees that no I/O will-be performed on the server during pandoc conversions.-.SH RUNNING PANDOC AS A LUA INTERPRETER-Calling the pandoc executable under the name \f[CR]pandoc-lua\f[R] or-with \f[CR]lua\f[R] as the first argument will make it function as a-standalone Lua interpreter.-The behavior is mostly identical to that of the standalone-\f[CR]lua\f[R] executable, version 5.4.-However, there is no REPL yet, and the \f[CR]-i\f[R] option has no-effect.-For full documentation, see the pandoc-lua man page.-.SH A NOTE ON SECURITY-.IP "1." 3-Although pandoc itself will not create or modify any files other than-those you explicitly ask it create (with the exception of temporary-files used in producing PDFs), a filter or custom writer could in-principle do anything on your file system.-Please audit filters and custom writers very carefully before using-them.-.IP "2." 3-Several input formats (including HTML, Org, and RST) support-\f[CR]include\f[R] directives that allow the contents of a file to be-included in the output.-An untrusted attacker could use these to view the contents of files on-the file system.-(Using the \f[CR]--sandbox\f[R] option can protect against this threat.)-.IP "3." 3-Several output formats (including RTF, FB2, HTML with-\f[CR]--self-contained\f[R], EPUB, Docx, and ODT) will embed encoded or-raw images into the output file.-An untrusted attacker could exploit this to view the contents of-non-image files on the file system.-(Using the \f[CR]--sandbox\f[R] option can protect against this threat,-but will also prevent including images in these formats.)-.IP "4." 3-If your application uses pandoc as a Haskell library (rather than-shelling out to the executable), it is possible to use it in a mode that-fully isolates pandoc from your file system, by running the pandoc-operations in the \f[CR]PandocPure\f[R] monad.-See the document Using the pandoc API for more details.-(This corresponds to the use of the \f[CR]--sandbox\f[R] option on the-command line.)-.IP "5." 3-Pandoc\[cq]s parsers can exhibit pathological performance on some corner-cases.-It is wise to put any pandoc operations under a timeout, to avoid DOS-attacks that exploit these issues.-If you are using the pandoc executable, you can add the command line-options \f[CR]+RTS -M512M -RTS\f[R] (for example) to limit the heap size-to 512MB.-Note that the \f[CR]commonmark\f[R] parser (including-\f[CR]commonmark_x\f[R] and \f[CR]gfm\f[R]) is much less vulnerable to-pathological performance than the \f[CR]markdown\f[R] parser, so it is a-better choice when processing untrusted input.-.IP "6." 3-The HTML generated by pandoc is not guaranteed to be safe.-If \f[CR]raw_html\f[R] is enabled for the Markdown input, users can-inject arbitrary HTML.-Even if \f[CR]raw_html\f[R] is disabled, users can include dangerous-content in URLs and attributes.-To be safe, you should run all HTML generated from untrusted user input-through an HTML sanitizer.-.SH AUTHORS-Copyright 2006\[en]2022 John MacFarlane (jgm\[at]berkeley.edu).-Released under the GPL, version 2 or greater.-This software carries no warranty of any kind.-(See COPYRIGHT for full copyright and warranty notices.)-For a full list of contributors, see the file AUTHORS.md in the pandoc-source code.-.PP-The Pandoc source code may be downloaded-from <https://hackage.haskell.org/package/pandoc> or-<https://github.com/jgm/pandoc/releases>. Further-documentation is available at <https://pandoc.org>.
@@ -1,5 +0,0 @@-.PP-The Pandoc source code may be downloaded-from <https://hackage.haskell.org/package/pandoc> or-<https://github.com/jgm/pandoc/releases>. Further-documentation is available at <https://pandoc.org>.
@@ -1,2 +0,0 @@-.SH NAME-pandoc - general markup converter
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: pandoc-version: 3.1.9+version: 3.1.10 build-type: Simple license: GPL-2.0-or-later license-file: COPYING.md@@ -12,7 +12,7 @@ homepage: https://pandoc.org category: Text tested-with: GHC == 8.10.7, GHC == 9.0.2,- GHC == 9.2.5, GHC == 9.4.4, GHC == 9.6.1+ GHC == 9.2.5, GHC == 9.4.4, GHC == 9.6.3 synopsis: Conversion between markup formats description: Pandoc is a Haskell library for converting from one markup format to another. The formats it can handle include@@ -43,9 +43,12 @@ Pandoc can convert mathematical content in documents between TeX, MathML, Word equations, roff eqn, typst, and plain text. It includes a powerful system for automatic- citations and bibliographies, and it can be customized extensively- using templates, filters, and custom readers and writers- written in Lua.+ citations and bibliographies, and it can be customized+ extensively using templates, filters, and custom readers+ and writers written in Lua.+ .+ For the pandoc command-line program, see the+ @pandoc-cli@ package. data-files: -- templates data/templates/styles.html@@ -196,11 +199,6 @@ -- documentation INSTALL.md, AUTHORS.md, README.md, CONTRIBUTING.md, BUGS, changelog.md,- man/pandoc.1- -- files needed to build man page- man/manfilter.lua- man/pandoc.1.before- man/pandoc.1.after -- tests test/bodybg.gif test/*.native@@ -468,15 +466,16 @@ aeson-pretty >= 0.8.9 && < 0.9, array >= 0.5 && < 0.6, attoparsec >= 0.12 && < 0.15,+ base64-bytestring >= 0.1 && < 1.3, binary >= 0.7 && < 0.11, blaze-html >= 0.9 && < 0.10, blaze-markup >= 0.8 && < 0.9, bytestring >= 0.9 && < 0.13, case-insensitive >= 1.2 && < 1.3, citeproc >= 0.8.1 && < 0.9,- commonmark >= 0.2.4 && < 0.3,- commonmark-extensions >= 0.2.4 && < 0.3,- commonmark-pandoc >= 0.2.1.3 && < 0.3,+ commonmark >= 0.2.4.1 && < 0.3,+ commonmark-extensions >= 0.2.5 && < 0.3,+ commonmark-pandoc >= 0.2.2 && < 0.3, containers >= 0.6.0.1 && < 0.7, crypton-connection >= 0.3.1 && < 0.4, data-default >= 0.4 && < 0.8,@@ -484,7 +483,6 @@ directory >= 1.2.3 && < 1.4, doclayout >= 0.4.0.1 && < 0.5, doctemplates >= 0.11 && < 0.12,- base64 >= 0.4 && < 0.5, emojis >= 0.1 && < 0.2, exceptions >= 0.8 && < 0.11, file-embed >= 0.0 && < 0.1,@@ -508,13 +506,13 @@ random >= 1 && < 1.3, safe >= 0.3.18 && < 0.4, scientific >= 0.3 && < 0.4,- skylighting >= 0.14 && < 0.15,- skylighting-core >= 0.14 && < 0.15,+ skylighting >= 0.14.1 && < 0.15,+ skylighting-core >= 0.14.1 && < 0.15, split >= 0.2 && < 0.3, syb >= 0.1 && < 0.8, tagsoup >= 0.14.6 && < 0.15, temporary >= 1.1 && < 1.4,- texmath >= 0.12.8.4 && < 0.13,+ texmath >= 0.12.8.5 && < 0.13, text >= 1.1.1.0 && < 2.2, text-conversions >= 0.3 && < 0.4, time >= 1.5 && < 1.14,@@ -524,7 +522,7 @@ zip-archive >= 0.4.3 && < 0.5, zlib >= 0.5 && < 0.7, xml >= 1.3.12 && < 1.4,- typst >= 0.3.2.1 && < 0.3.3,+ typst >= 0.4 && < 0.4.1, vector >= 0.12 && < 0.14 if !os(windows)@@ -669,6 +667,7 @@ Text.Pandoc.Readers.Docx.Parse, Text.Pandoc.Readers.Docx.Parse.Styles, Text.Pandoc.Readers.Docx.Util,+ Text.Pandoc.Readers.Docx.Symbols, Text.Pandoc.Readers.Docx.Fields, Text.Pandoc.Readers.HTML.Parsing, Text.Pandoc.Readers.HTML.Table,
@@ -76,7 +76,9 @@ let citations = getCitations locale otherIdsMap $ Pandoc meta' bs - let linkCites = maybe False truish $ lookupMeta "link-citations" meta+ let linkCites = maybe False truish (lookupMeta "link-citations" meta) &&+ -- don't link citations if no bibliography to link to:+ not (maybe False truish (lookupMeta "suppress-bibliography" meta)) let linkBib = maybe True truish $ lookupMeta "link-bibliography" meta let opts = defaultCiteprocOptions{ linkCitations = linkCites , linkBibliography = linkBib }@@ -479,9 +481,9 @@ insertRefs :: [(Text,Text)] -> [Text] -> [Block] -> Pandoc -> Pandoc insertRefs _ _ [] d = d insertRefs refkvs refclasses refs (Pandoc meta bs) =- if isRefRemove meta- then Pandoc meta bs- else case runState (walkM go (Pandoc meta bs)) False of+ case lookupMeta "suppress-bibliography" meta of+ Just x | truish x -> Pandoc meta bs+ _ -> case runState (walkM go (Pandoc meta bs)) False of (d', True) -> d' (Pandoc meta' bs', False) -> Pandoc meta' $@@ -516,10 +518,6 @@ Just (MetaBlocks [Plain ils]) -> Just ils Just (MetaBlocks [Para ils]) -> Just ils _ -> Nothing--isRefRemove :: Meta -> Bool-isRefRemove meta =- maybe False truish $ lookupMeta "suppress-bibliography" meta legacyDateRanges :: Reference Inlines -> Reference Inlines legacyDateRanges ref =
@@ -37,7 +37,7 @@ import Control.Monad.Except (throwError) import Control.Monad.IO.Class (MonadIO, liftIO)-import Data.ByteString.Base64 (decodeBase64Lenient)+import Data.ByteString.Base64 (decodeLenient) import Data.ByteString.Lazy (toChunks) import Data.Text (Text, pack, unpack) import Data.Time (TimeZone, UTCTime)@@ -124,9 +124,13 @@ openURL u | Just (URI{ uriScheme = "data:", uriPath = upath }) <- parseURI (T.unpack u) = do- let (mime, rest) = break (== ',') $ unEscapeString upath+ let (mimespec, rest) = break (== ',') $ unEscapeString upath let contents = UTF8.fromString $ drop 1 rest- return (decodeBase64Lenient contents, Just (T.pack mime))+ case break (== ';') (filter (/= ' ') mimespec) of+ (mime, ";base64") ->+ return (decodeLenient contents, Just (T.pack mime))+ (mime, _) ->+ return (contents, Just (T.pack mime)) | otherwise = do let toReqHeader (n, v) = (CI.mk (UTF8.fromText n), UTF8.fromText v) customHeaders <- map toReqHeader <$> getsCommonState stRequestHeaders
@@ -45,6 +45,7 @@ -- | Individually selectable syntax extensions. data Extension = Ext_abbreviations -- ^ PHP markdown extra abbreviation definitions+ | Ext_alerts -- ^ Special block quotes become alerts | Ext_all_symbols_escapable -- ^ Make all non-alphanumerics escapable | Ext_amuse -- ^ Enable Text::Amuse extensions to Emacs Muse markup | Ext_angle_brackets_escapable -- ^ Make < and > escapable@@ -308,6 +309,8 @@ , Ext_emoji , Ext_fenced_code_blocks , Ext_backtick_code_blocks+ , Ext_footnotes+ , Ext_alerts ] -- | Extensions to be used with multimarkdown.@@ -400,6 +403,7 @@ , Ext_footnotes , Ext_tex_math_dollars , Ext_tex_math_gfm+ , Ext_alerts ] getDefaultExtensions "commonmark" = extensionsFromList [Ext_raw_html]@@ -422,6 +426,7 @@ , Ext_raw_attribute , Ext_implicit_header_references , Ext_attributes+ , Ext_alerts , Ext_yaml_metadata_block ] getDefaultExtensions "org" = extensionsFromList@@ -549,6 +554,7 @@ , Ext_task_lists , Ext_emoji , Ext_raw_html+ , Ext_alerts , Ext_implicit_figures , Ext_hard_line_breaks , Ext_smart
@@ -55,6 +55,7 @@ extensionFromMimeType "image/jpeg" = Just "jpg" extensionFromMimeType "application/xml" = Just "xml" extensionFromMimeType "application/ogg" = Just "ogg"+extensionFromMimeType "image/svg+xml" = Just "svg" -- avoid svgz extensionFromMimeType mimetype = M.lookup (T.takeWhile (/=';') mimetype) reverseMimeTypes -- note: we just look up the basic mime type, dropping the content-encoding etc.
@@ -267,7 +267,7 @@ tex2pdf program args tmpDir source = do let numruns | takeBaseName program == "latexmk" = 1 | "\\tableofcontents" `T.isInfixOf` source = 3 -- to get page numbers- | otherwise = 2 -- 1 run won't give you PDF bookmarks+ | otherwise = 1 (exit, log', mbPdf) <- runTeXProgram program args numruns tmpDir source case (exit, mbPdf) of (ExitFailure _, _) -> do
@@ -17,7 +17,7 @@ import Control.Monad (mzero, when) import Data.Text (Text)-import Text.Parsec ((<|>), ParsecT, Stream(..), notFollowedBy, skipMany, try)+import Text.Parsec ((<|>), ParsecT, Stream(..), notFollowedBy, many1, try) import Text.Pandoc.Options ( Extension(Ext_tex_math_dollars, Ext_tex_math_single_backslash, Ext_tex_math_double_backslash) )@@ -42,10 +42,8 @@ (try (string "text" >> (("\\text" <>) <$> inBalancedBraces 0 "")) <|> (\c -> T.pack ['\\',c]) <$> anyChar))- <|> do (blankline <* notFollowedBy' blankline) <|>- (spaceChar <* skipMany spaceChar)- notFollowedBy (char '$')- return " "+ <|> ("\n" <$ blankline <* notFollowedBy' blankline)+ <|> (T.pack <$> many1 spaceChar <* notFollowedBy (char '$')) ) (try $ textStr cl) notFollowedBy digit -- to prevent capture of $5 return $ trimMath $ T.concat words'
@@ -169,6 +169,7 @@ [ (bracketedSpanSpec <>) | isEnabled Ext_bracketed_spans opts ] ++ [ (rawAttributeSpec <>) | isEnabled Ext_raw_attribute opts ] ++ [ (attributesSpec <>) | isEnabled Ext_attributes opts ] +++ [ (alertSpec <>) | isEnabled Ext_alerts opts ] ++ [ (<> pipeTableSpec) | isEnabled Ext_pipe_tables opts ] ++ -- see #6739 [ (autolinkSpec <>) | isEnabled Ext_autolink_bare_uris opts ] ++
@@ -79,7 +79,7 @@ import qualified Text.Pandoc.UTF8 as UTF8 import Text.TeXMath (Exp) import Text.TeXMath.Readers.OMML (readOMML)-import Text.TeXMath.Unicode.Fonts (Font (..), getUnicode, textToFont)+import Text.Pandoc.Readers.Docx.Symbols (symbolMap, Font(..), textToFont) import Text.Pandoc.XML.Light ( filterChild, findElement,@@ -148,13 +148,46 @@ in concatMapM handler xs +isAltContentRun :: NameSpaces -> Element -> Bool+isAltContentRun ns element+ | isElem ns "w" "r" element+ , Just _altContentElem <- findChildByName ns "mc" "AlternateContent" element+ = True+ | otherwise+ = False++-- Elements such as <w:shape> are not always preferred+-- to be unwrapped. Only if they are part of an AlternateContent+-- element, they should be unwrapped.+-- This strategy prevents VML images breaking.+unwrapAlternateContentElement :: NameSpaces -> Element -> [Element]+unwrapAlternateContentElement ns element+ | isElem ns "mc" "AlternateContent" element+ || isElem ns "mc" "Fallback" element+ || isElem ns "w" "pict" element+ || isElem ns "v" "group" element+ || isElem ns "v" "rect" element+ || isElem ns "v" "roundrect" element+ || isElem ns "v" "shape" element+ || isElem ns "v" "textbox" element+ || isElem ns "w" "txbxContent" element+ = concatMap (unwrapAlternateContentElement ns) (elChildren element)+ | otherwise+ = unwrapElement ns element+ unwrapElement :: NameSpaces -> Element -> [Element] unwrapElement ns element | isElem ns "w" "sdt" element , Just sdtContent <- findChildByName ns "w" "sdtContent" element = concatMap (unwrapElement ns) (elChildren sdtContent)+ | isElem ns "w" "r" element+ , Just alternateContentElem <- findChildByName ns "mc" "AlternateContent" element+ = unwrapAlternateContentElement ns alternateContentElem | isElem ns "w" "smartTag" element = concatMap (unwrapElement ns) (elChildren element)+ | isElem ns "w" "p" element+ , Just (modified, altContentRuns) <- extractChildren element (isAltContentRun ns)+ = (unwrapElement ns modified) ++ concatMap (unwrapElement ns) altContentRuns | otherwise = [element{ elContent = concatMap (unwrapContent ns) (elContent element) }] @@ -1200,33 +1233,35 @@ case font of Nothing -> return $ TextRun str Just f -> return . TextRun $- T.map (\x -> fromMaybe x . getUnicode f . lowerFromPrivate $ x) str+ T.map (\c -> fromMaybe c (getFontChar f c)) str | isElem ns "w" "br" element = return LnBrk | isElem ns "w" "tab" element = return Tab | isElem ns "w" "softHyphen" element = return SoftHyphen | isElem ns "w" "noBreakHyphen" element = return NoBreakHyphen | isElem ns "w" "sym" element = return (getSymChar ns element) | otherwise = throwError WrongElem- where- lowerFromPrivate (ord -> c)- | c >= ord '\xF000' = chr $ c - ord '\xF000'- | otherwise = chr c -- The char attribute is a hex string getSymChar :: NameSpaces -> Element -> RunElem getSymChar ns element- | Just s <- lowerFromPrivate <$> getCodepoint+ | Just s <- getCodepoint , Just font <- getFont = case readLitChar ("\\x" ++ T.unpack s) of- [(char, _)] -> TextRun . maybe "" T.singleton $ getUnicode font char- _ -> TextRun ""+ [(ch, _)] ->+ TextRun $ T.singleton $ fromMaybe ch $ getFontChar font ch+ _ -> TextRun "" where getCodepoint = findAttrByName ns "w" "char" element- getFont = textToFont =<< findAttrByName ns "w" "font" element- lowerFromPrivate t | "F" `T.isPrefixOf` t = "0" <> T.drop 1 t- | otherwise = t+ getFont = findAttrByName ns "w" "font" element >>= textToFont getSymChar _ _ = TextRun "" +getFontChar :: Font -> Char -> Maybe Char+getFontChar font ch = chr <$> M.lookup (font, point) symbolMap+ where+ point -- sometimes F000 is added to put char in private range:+ | ch >= '\xF000' = ord ch - 0xF000+ | otherwise = ord ch+ elemToRunElems :: NameSpaces -> Element -> D [RunElem] elemToRunElems ns element | isElem ns "w" "r" element@@ -1234,9 +1269,9 @@ let qualName = elemName ns "w" let font = do fontElem <- findElement (qualName "rFonts") element- textToFont =<<- foldr ((<|>) . (flip findAttr fontElem . qualName))+ foldr ((<|>) . (flip findAttr fontElem . qualName)) Nothing ["ascii", "hAnsi"]+ >>= textToFont local (setFont font) (mapD (elemToRunElem ns) (elChildren element)) elemToRunElems _ _ = throwError WrongElem
@@ -0,0 +1,1085 @@+{-# LANGUAGE OverloadedStrings #-}+{- |+ Module : Text.Pandoc.Readers.Docx.Symbols+ Copyright : © 2023 John MacFarlane <jgm@berkeley.edu>+ License : GNU GPL, version 2 or above++ Maintainer : John MacFarlane <jgm@berkeley.edu>+ Stability : alpha+ Portability : portable++Symbol tables for MS symbol fonts. This is needed for w:sym.+-}+module Text.Pandoc.Readers.Docx.Symbols ( Font(..),+ textToFont,+ symbolMap ) where++import Data.Text (Text)+import qualified Data.Map as M++data Font = Symbol | Wingdings | Wingdings2 | Wingdings3 | Webdings+ deriving (Show, Ord, Eq)++textToFont :: Text -> Maybe Font+textToFont "Symbol" = Just Symbol+textToFont "Wingdings" = Just Wingdings+textToFont "Wingdings 2" = Just Wingdings2+textToFont "Wingdings 3" = Just Wingdings3+textToFont "Webdings" = Just Webdings+textToFont _ = Nothing++-- \ Maps font and internal character number to Unicode code point.+symbolMap :: M.Map (Font, Int) Int+symbolMap = M.fromList+ [((Wingdings, 0x21), 0x1F589)+ ,((Wingdings, 0x22), 0x2702)+ ,((Wingdings, 0x23), 0x2701)+ ,((Wingdings, 0x24), 0x1F453)+ ,((Wingdings, 0x25), 0x1F56D)+ ,((Wingdings, 0x26), 0x1F56E)+ ,((Wingdings, 0x27), 0x1F56F)+ ,((Wingdings, 0x28), 0x1F57F)+ ,((Wingdings, 0x29), 0x2706)+ ,((Wingdings, 0x2A), 0x1F582)+ ,((Wingdings, 0x2B), 0x1F583)+ ,((Wingdings, 0x2C), 0x1F4EA)+ ,((Wingdings, 0x2D), 0x1F4EB)+ ,((Wingdings, 0x2E), 0x1F4EC)+ ,((Wingdings, 0x2F), 0x1F4ED)+ ,((Wingdings, 0x30), 0x1F4C1)+ ,((Wingdings, 0x31), 0x1F4C2)+ ,((Wingdings, 0x32), 0x1F4C4)+ ,((Wingdings, 0x33), 0x1F5CF)+ ,((Wingdings, 0x34), 0x1F5D0)+ ,((Wingdings, 0x35), 0x1F5C4)+ ,((Wingdings, 0x36), 0x231B)+ ,((Wingdings, 0x37), 0x1F5AE)+ ,((Wingdings, 0x38), 0x1F5B0)+ ,((Wingdings, 0x39), 0x1F5B2)+ ,((Wingdings, 0x3A), 0x1F5B3)+ ,((Wingdings, 0x3B), 0x1F5B4)+ ,((Wingdings, 0x3C), 0x1F5AB)+ ,((Wingdings, 0x3D), 0x1F5AC)+ ,((Wingdings, 0x3E), 0x2707)+ ,((Wingdings, 0x3F), 0x270D)+ ,((Wingdings, 0x40), 0x1F58E)+ ,((Wingdings, 0x41), 0x270C)+ ,((Wingdings, 0x42), 0x1F44C)+ ,((Wingdings, 0x43), 0x1F44D)+ ,((Wingdings, 0x44), 0x1F44E)+ ,((Wingdings, 0x45), 0x261C)+ ,((Wingdings, 0x46), 0x261E)+ ,((Wingdings, 0x47), 0x261D)+ ,((Wingdings, 0x48), 0x261F)+ ,((Wingdings, 0x49), 0x1F590)+ ,((Wingdings, 0x4A), 0x263A)+ ,((Wingdings, 0x4B), 0x1F610)+ ,((Wingdings, 0x4C), 0x2639)+ ,((Wingdings, 0x4D), 0x1F4A3)+ ,((Wingdings, 0x4E), 0x2620)+ ,((Wingdings, 0x4F), 0x1F3F3)+ ,((Wingdings, 0x50), 0x1F3F1)+ ,((Wingdings, 0x51), 0x2708)+ ,((Wingdings, 0x52), 0x263C)+ ,((Wingdings, 0x53), 0x1F4A7)+ ,((Wingdings, 0x54), 0x2744)+ ,((Wingdings, 0x55), 0x1F546)+ ,((Wingdings, 0x56), 0x271E)+ ,((Wingdings, 0x57), 0x1F548)+ ,((Wingdings, 0x58), 0x2720)+ ,((Wingdings, 0x59), 0x2721)+ ,((Wingdings, 0x5A), 0x262A)+ ,((Wingdings, 0x5B), 0x262F)+ ,((Wingdings, 0x5C), 0x0950)+ ,((Wingdings, 0x5D), 0x2638)+ ,((Wingdings, 0x5E), 0x2648)+ ,((Wingdings, 0x5F), 0x2649)+ ,((Wingdings, 0x60), 0x264A)+ ,((Wingdings, 0x61), 0x264B)+ ,((Wingdings, 0x62), 0x264C)+ ,((Wingdings, 0x63), 0x264D)+ ,((Wingdings, 0x64), 0x264E)+ ,((Wingdings, 0x65), 0x264F)+ ,((Wingdings, 0x66), 0x2650)+ ,((Wingdings, 0x67), 0x2651)+ ,((Wingdings, 0x68), 0x2652)+ ,((Wingdings, 0x69), 0x2653)+ ,((Wingdings, 0x6A), 0x1F670)+ ,((Wingdings, 0x6B), 0x1F675)+ ,((Wingdings, 0x6C), 0x25CF)+ ,((Wingdings, 0x6D), 0x1F53E)+ ,((Wingdings, 0x6E), 0x25A0)+ ,((Wingdings, 0x6F), 0x25A1)+ ,((Wingdings, 0x70), 0x1F790)+ ,((Wingdings, 0x71), 0x2751)+ ,((Wingdings, 0x72), 0x2752)+ ,((Wingdings, 0x73), 0x2B27)+ ,((Wingdings, 0x74), 0x29EB)+ ,((Wingdings, 0x75), 0x25C6)+ ,((Wingdings, 0x76), 0x2756)+ ,((Wingdings, 0x77), 0x2B25)+ ,((Wingdings, 0x78), 0x2327)+ ,((Wingdings, 0x79), 0x2BB9)+ ,((Wingdings, 0x7A), 0x2318)+ ,((Wingdings, 0x7B), 0x1F3F5)+ ,((Wingdings, 0x7C), 0x1F3F6)+ ,((Wingdings, 0x7D), 0x1F676)+ ,((Wingdings, 0x7E), 0x1F677)+ ,((Wingdings, 0x80), 0x24EA)+ ,((Wingdings, 0x81), 0x2460)+ ,((Wingdings, 0x82), 0x2461)+ ,((Wingdings, 0x83), 0x2462)+ ,((Wingdings, 0x84), 0x2463)+ ,((Wingdings, 0x85), 0x2464)+ ,((Wingdings, 0x86), 0x2465)+ ,((Wingdings, 0x87), 0x2466)+ ,((Wingdings, 0x88), 0x2467)+ ,((Wingdings, 0x89), 0x2468)+ ,((Wingdings, 0x8A), 0x2469)+ ,((Wingdings, 0x8B), 0x24FF)+ ,((Wingdings, 0x8C), 0x2776)+ ,((Wingdings, 0x8D), 0x2777)+ ,((Wingdings, 0x8E), 0x2778)+ ,((Wingdings, 0x8F), 0x2779)+ ,((Wingdings, 0x90), 0x277A)+ ,((Wingdings, 0x91), 0x277B)+ ,((Wingdings, 0x92), 0x277C)+ ,((Wingdings, 0x93), 0x277D)+ ,((Wingdings, 0x94), 0x277E)+ ,((Wingdings, 0x95), 0x277F)+ ,((Wingdings, 0x96), 0x1F662)+ ,((Wingdings, 0x97), 0x1F660)+ ,((Wingdings, 0x98), 0x1F661)+ ,((Wingdings, 0x99), 0x1F663)+ ,((Wingdings, 0x9A), 0x1F65E)+ ,((Wingdings, 0x9B), 0x1F65C)+ ,((Wingdings, 0x9C), 0x1F65D)+ ,((Wingdings, 0x9D), 0x1F65F)+ ,((Wingdings, 0x9E), 0x00B7)+ ,((Wingdings, 0x9F), 0x2022)+ ,((Wingdings, 0xA1), 0x26AA)+ ,((Wingdings, 0xA2), 0x1F786)+ ,((Wingdings, 0xA3), 0x1F788)+ ,((Wingdings, 0xA4), 0x25C9)+ ,((Wingdings, 0xA5), 0x25CE)+ ,((Wingdings, 0xA6), 0x1F53F)+ ,((Wingdings, 0xA7), 0x25AA)+ ,((Wingdings, 0xA8), 0x25FB)+ ,((Wingdings, 0xA9), 0x1F7C2)+ ,((Wingdings, 0xAA), 0x2726)+ ,((Wingdings, 0xAB), 0x2605)+ ,((Wingdings, 0xAC), 0x2736)+ ,((Wingdings, 0xAD), 0x2734)+ ,((Wingdings, 0xAE), 0x2739)+ ,((Wingdings, 0xAF), 0x2735)+ ,((Wingdings, 0xB0), 0x2BD0)+ ,((Wingdings, 0xB1), 0x2316)+ ,((Wingdings, 0xB2), 0x27E1)+ ,((Wingdings, 0xB3), 0x2311)+ ,((Wingdings, 0xB4), 0x2BD1)+ ,((Wingdings, 0xB5), 0x272A)+ ,((Wingdings, 0xB6), 0x2730)+ ,((Wingdings, 0xB7), 0x1F550)+ ,((Wingdings, 0xB8), 0x1F551)+ ,((Wingdings, 0xB9), 0x1F552)+ ,((Wingdings, 0xBA), 0x1F553)+ ,((Wingdings, 0xBB), 0x1F554)+ ,((Wingdings, 0xBC), 0x1F555)+ ,((Wingdings, 0xBD), 0x1F556)+ ,((Wingdings, 0xBE), 0x1F557)+ ,((Wingdings, 0xBF), 0x1F558)+ ,((Wingdings, 0xC0), 0x1F559)+ ,((Wingdings, 0xC1), 0x1F55A)+ ,((Wingdings, 0xC2), 0x1F55B)+ ,((Wingdings, 0xC3), 0x2BB0)+ ,((Wingdings, 0xC4), 0x2BB1)+ ,((Wingdings, 0xC5), 0x2BB2)+ ,((Wingdings, 0xC6), 0x2BB3)+ ,((Wingdings, 0xC7), 0x2BB4)+ ,((Wingdings, 0xC8), 0x2BB5)+ ,((Wingdings, 0xC9), 0x2BB6)+ ,((Wingdings, 0xCA), 0x2BB7)+ ,((Wingdings, 0xCB), 0x1F66A)+ ,((Wingdings, 0xCC), 0x1F66B)+ ,((Wingdings, 0xCD), 0x1F655)+ ,((Wingdings, 0xCE), 0x1F654)+ ,((Wingdings, 0xCF), 0x1F657)+ ,((Wingdings, 0xD0), 0x1F656)+ ,((Wingdings, 0xD1), 0x1F650)+ ,((Wingdings, 0xD2), 0x1F651)+ ,((Wingdings, 0xD3), 0x1F652)+ ,((Wingdings, 0xD4), 0x1F653)+ ,((Wingdings, 0xD5), 0x232B)+ ,((Wingdings, 0xD6), 0x2326)+ ,((Wingdings, 0xD7), 0x2B98)+ ,((Wingdings, 0xD8), 0x2B9A)+ ,((Wingdings, 0xD9), 0x2B99)+ ,((Wingdings, 0xDA), 0x2B9B)+ ,((Wingdings, 0xDB), 0x2B88)+ ,((Wingdings, 0xDC), 0x2B8A)+ ,((Wingdings, 0xDD), 0x2B89)+ ,((Wingdings, 0xDE), 0x2B8B)+ ,((Wingdings, 0xDF), 0x1F868)+ ,((Wingdings, 0xE0), 0x1F86A)+ ,((Wingdings, 0xE1), 0x1F869)+ ,((Wingdings, 0xE2), 0x1F86B)+ ,((Wingdings, 0xE3), 0x1F86C)+ ,((Wingdings, 0xE4), 0x1F86D)+ ,((Wingdings, 0xE5), 0x1F86F)+ ,((Wingdings, 0xE6), 0x1F86E)+ ,((Wingdings, 0xE7), 0x1F878)+ ,((Wingdings, 0xE8), 0x1F87A)+ ,((Wingdings, 0xE9), 0x1F879)+ ,((Wingdings, 0xEA), 0x1F87B)+ ,((Wingdings, 0xEB), 0x1F87C)+ ,((Wingdings, 0xEC), 0x1F87D)+ ,((Wingdings, 0xED), 0x1F87F)+ ,((Wingdings, 0xEE), 0x1F87E)+ ,((Wingdings, 0xEF), 0x21E6)+ ,((Wingdings, 0xF0), 0x21E8)+ ,((Wingdings, 0xF1), 0x21E7)+ ,((Wingdings, 0xF2), 0x21E9)+ ,((Wingdings, 0xF3), 0x2B04)+ ,((Wingdings, 0xF4), 0x21F3)+ ,((Wingdings, 0xF5), 0x2B00)+ ,((Wingdings, 0xF6), 0x2B01)+ ,((Wingdings, 0xF7), 0x2B03)+ ,((Wingdings, 0xF8), 0x2B02)+ ,((Wingdings, 0xF9), 0x1F8AC)+ ,((Wingdings, 0xFA), 0x1F8AD)+ ,((Wingdings, 0xFB), 0x1F5F6)+ ,((Wingdings, 0xFC), 0x2714)+ ,((Wingdings, 0xFD), 0x1F5F7)+ ,((Wingdings, 0xFE), 0x1F5F9)+ ,((Wingdings2, 0x21), 0x1F58A)+ ,((Wingdings2, 0x22), 0x1F58B)+ ,((Wingdings2, 0x23), 0x1F58C)+ ,((Wingdings2, 0x24), 0x1F58D)+ ,((Wingdings2, 0x25), 0x2704)+ ,((Wingdings2, 0x26), 0x2700)+ ,((Wingdings2, 0x27), 0x1F57E)+ ,((Wingdings2, 0x28), 0x1F57D)+ ,((Wingdings2, 0x29), 0x1F5C5)+ ,((Wingdings2, 0x2A), 0x1F5C6)+ ,((Wingdings2, 0x2B), 0x1F5C7)+ ,((Wingdings2, 0x2C), 0x1F5C8)+ ,((Wingdings2, 0x2D), 0x1F5C9)+ ,((Wingdings2, 0x2E), 0x1F5CA)+ ,((Wingdings2, 0x2F), 0x1F5CB)+ ,((Wingdings2, 0x30), 0x1F5CC)+ ,((Wingdings2, 0x31), 0x1F5CD)+ ,((Wingdings2, 0x32), 0x1F4CB)+ ,((Wingdings2, 0x33), 0x1F5D1)+ ,((Wingdings2, 0x34), 0x1F5D4)+ ,((Wingdings2, 0x35), 0x1F5B5)+ ,((Wingdings2, 0x36), 0x1F5B6)+ ,((Wingdings2, 0x37), 0x1F5B7)+ ,((Wingdings2, 0x38), 0x1F5B8)+ ,((Wingdings2, 0x39), 0x1F5AD)+ ,((Wingdings2, 0x3A), 0x1F5AF)+ ,((Wingdings2, 0x3B), 0x1F5B1)+ ,((Wingdings2, 0x3C), 0x1F592)+ ,((Wingdings2, 0x3D), 0x1F593)+ ,((Wingdings2, 0x3E), 0x1F598)+ ,((Wingdings2, 0x3F), 0x1F599)+ ,((Wingdings2, 0x40), 0x1F59A)+ ,((Wingdings2, 0x41), 0x1F59B)+ ,((Wingdings2, 0x42), 0x1F448)+ ,((Wingdings2, 0x43), 0x1F449)+ ,((Wingdings2, 0x44), 0x1F59C)+ ,((Wingdings2, 0x45), 0x1F59D)+ ,((Wingdings2, 0x46), 0x1F59E)+ ,((Wingdings2, 0x47), 0x1F59F)+ ,((Wingdings2, 0x48), 0x1F5A0)+ ,((Wingdings2, 0x49), 0x1F5A1)+ ,((Wingdings2, 0x4A), 0x1F446)+ ,((Wingdings2, 0x4B), 0x1F447)+ ,((Wingdings2, 0x4C), 0x1F5A2)+ ,((Wingdings2, 0x4D), 0x1F5A3)+ ,((Wingdings2, 0x4E), 0x1F591)+ ,((Wingdings2, 0x4F), 0x1F5F4)+ ,((Wingdings2, 0x50), 0x2713)+ ,((Wingdings2, 0x51), 0x1F5F5)+ ,((Wingdings2, 0x52), 0x2611)+ ,((Wingdings2, 0x53), 0x2612)+ ,((Wingdings2, 0x54), 0x2612)+ ,((Wingdings2, 0x55), 0x2BBE)+ ,((Wingdings2, 0x56), 0x2BBF)+ ,((Wingdings2, 0x57), 0x29B8)+ ,((Wingdings2, 0x58), 0x29B8)+ ,((Wingdings2, 0x59), 0x1F671)+ ,((Wingdings2, 0x5A), 0x1F674)+ ,((Wingdings2, 0x5B), 0x1F672)+ ,((Wingdings2, 0x5C), 0x1F673)+ ,((Wingdings2, 0x5D), 0x203D)+ ,((Wingdings2, 0x5E), 0x1F679)+ ,((Wingdings2, 0x5F), 0x1F67A)+ ,((Wingdings2, 0x60), 0x1F67B)+ ,((Wingdings2, 0x61), 0x1F666)+ ,((Wingdings2, 0x62), 0x1F664)+ ,((Wingdings2, 0x63), 0x1F665)+ ,((Wingdings2, 0x64), 0x1F667)+ ,((Wingdings2, 0x65), 0x1F65A)+ ,((Wingdings2, 0x66), 0x1F658)+ ,((Wingdings2, 0x67), 0x1F659)+ ,((Wingdings2, 0x68), 0x1F65B)+ ,((Wingdings2, 0x69), 0x24EA)+ ,((Wingdings2, 0x6A), 0x2460)+ ,((Wingdings2, 0x6B), 0x2461)+ ,((Wingdings2, 0x6C), 0x2462)+ ,((Wingdings2, 0x6D), 0x2463)+ ,((Wingdings2, 0x6E), 0x2464)+ ,((Wingdings2, 0x6F), 0x2465)+ ,((Wingdings2, 0x70), 0x2466)+ ,((Wingdings2, 0x71), 0x2467)+ ,((Wingdings2, 0x72), 0x2468)+ ,((Wingdings2, 0x73), 0x2469)+ ,((Wingdings2, 0x74), 0x24FF)+ ,((Wingdings2, 0x75), 0x2776)+ ,((Wingdings2, 0x76), 0x2777)+ ,((Wingdings2, 0x77), 0x2778)+ ,((Wingdings2, 0x78), 0x2779)+ ,((Wingdings2, 0x79), 0x277A)+ ,((Wingdings2, 0x7A), 0x277B)+ ,((Wingdings2, 0x7B), 0x277C)+ ,((Wingdings2, 0x7C), 0x277D)+ ,((Wingdings2, 0x7D), 0x277E)+ ,((Wingdings2, 0x7E), 0x277F)+ ,((Wingdings2, 0x80), 0x2609)+ ,((Wingdings2, 0x81), 0x1F315)+ ,((Wingdings2, 0x82), 0x263D)+ ,((Wingdings2, 0x83), 0x263E)+ ,((Wingdings2, 0x84), 0x2E3F)+ ,((Wingdings2, 0x85), 0x271D)+ ,((Wingdings2, 0x86), 0x1F547)+ ,((Wingdings2, 0x87), 0x1F55C)+ ,((Wingdings2, 0x88), 0x1F55D)+ ,((Wingdings2, 0x89), 0x1F55E)+ ,((Wingdings2, 0x8A), 0x1F55F)+ ,((Wingdings2, 0x8B), 0x1F560)+ ,((Wingdings2, 0x8C), 0x1F561)+ ,((Wingdings2, 0x8D), 0x1F562)+ ,((Wingdings2, 0x8E), 0x1F563)+ ,((Wingdings2, 0x8F), 0x1F564)+ ,((Wingdings2, 0x90), 0x1F565)+ ,((Wingdings2, 0x91), 0x1F566)+ ,((Wingdings2, 0x92), 0x1F567)+ ,((Wingdings2, 0x93), 0x1F668)+ ,((Wingdings2, 0x94), 0x1F669)+ ,((Wingdings2, 0x95), 0x2022)+ ,((Wingdings2, 0x96), 0x25CF)+ ,((Wingdings2, 0x97), 0x26AB)+ ,((Wingdings2, 0x98), 0x2B24)+ ,((Wingdings2, 0x99), 0x1F785)+ ,((Wingdings2, 0x9A), 0x1F786)+ ,((Wingdings2, 0x9B), 0x1F787)+ ,((Wingdings2, 0x9C), 0x1F788)+ ,((Wingdings2, 0x9D), 0x1F78A)+ ,((Wingdings2, 0x9E), 0x29BF)+ ,((Wingdings2, 0x9F), 0x25FE)+ ,((Wingdings2, 0xA1), 0x25FC)+ ,((Wingdings2, 0xA2), 0x2B1B)+ ,((Wingdings2, 0xA3), 0x2B1C)+ ,((Wingdings2, 0xA4), 0x1F791)+ ,((Wingdings2, 0xA5), 0x1F792)+ ,((Wingdings2, 0xA6), 0x1F793)+ ,((Wingdings2, 0xA7), 0x1F794)+ ,((Wingdings2, 0xA8), 0x25A3)+ ,((Wingdings2, 0xA9), 0x1F795)+ ,((Wingdings2, 0xAA), 0x1F796)+ ,((Wingdings2, 0xAB), 0x1F797)+ ,((Wingdings2, 0xAC), 0x2B29)+ ,((Wingdings2, 0xAD), 0x2B25)+ ,((Wingdings2, 0xAE), 0x25C6)+ ,((Wingdings2, 0xAF), 0x25C7)+ ,((Wingdings2, 0xB0), 0x1F79A)+ ,((Wingdings2, 0xB1), 0x25C8)+ ,((Wingdings2, 0xB2), 0x1F79B)+ ,((Wingdings2, 0xB3), 0x1F79C)+ ,((Wingdings2, 0xB4), 0x1F79D)+ ,((Wingdings2, 0xB5), 0x2B2A)+ ,((Wingdings2, 0xB6), 0x2B27)+ ,((Wingdings2, 0xB7), 0x29EB)+ ,((Wingdings2, 0xB8), 0x25CA)+ ,((Wingdings2, 0xB9), 0x1F7A0)+ ,((Wingdings2, 0xBA), 0x25D6)+ ,((Wingdings2, 0xBB), 0x25D7)+ ,((Wingdings2, 0xBC), 0x2BCA)+ ,((Wingdings2, 0xBD), 0x2BCB)+ ,((Wingdings2, 0xBE), 0x25FC)+ ,((Wingdings2, 0xBF), 0x2B25)+ ,((Wingdings2, 0xC0), 0x2B1F)+ ,((Wingdings2, 0xC1), 0x2BC2)+ ,((Wingdings2, 0xC2), 0x2B23)+ ,((Wingdings2, 0xC3), 0x2B22)+ ,((Wingdings2, 0xC4), 0x2BC3)+ ,((Wingdings2, 0xC5), 0x2BC4)+ ,((Wingdings2, 0xC6), 0x1F7A1)+ ,((Wingdings2, 0xC7), 0x1F7A2)+ ,((Wingdings2, 0xC8), 0x1F7A3)+ ,((Wingdings2, 0xC9), 0x1F7A4)+ ,((Wingdings2, 0xCA), 0x1F7A5)+ ,((Wingdings2, 0xCB), 0x1F7A6)+ ,((Wingdings2, 0xCC), 0x1F7A7)+ ,((Wingdings2, 0xCD), 0x1F7A8)+ ,((Wingdings2, 0xCE), 0x1F7A9)+ ,((Wingdings2, 0xCF), 0x1F7AA)+ ,((Wingdings2, 0xD0), 0x1F7AB)+ ,((Wingdings2, 0xD1), 0x1F7AC)+ ,((Wingdings2, 0xD2), 0x1F7AD)+ ,((Wingdings2, 0xD3), 0x1F7AE)+ ,((Wingdings2, 0xD4), 0x1F7AF)+ ,((Wingdings2, 0xD5), 0x1F7B0)+ ,((Wingdings2, 0xD6), 0x1F7B1)+ ,((Wingdings2, 0xD7), 0x1F7B2)+ ,((Wingdings2, 0xD8), 0x1F7B3)+ ,((Wingdings2, 0xD9), 0x1F7B4)+ ,((Wingdings2, 0xDA), 0x1F7B5)+ ,((Wingdings2, 0xDB), 0x1F7B6)+ ,((Wingdings2, 0xDC), 0x1F7B7)+ ,((Wingdings2, 0xDD), 0x1F7B8)+ ,((Wingdings2, 0xDE), 0x1F7B9)+ ,((Wingdings2, 0xDF), 0x1F7BA)+ ,((Wingdings2, 0xE0), 0x1F7BB)+ ,((Wingdings2, 0xE1), 0x1F7BC)+ ,((Wingdings2, 0xE2), 0x1F7BD)+ ,((Wingdings2, 0xE3), 0x1F7BE)+ ,((Wingdings2, 0xE4), 0x1F7BF)+ ,((Wingdings2, 0xE5), 0x1F7C0)+ ,((Wingdings2, 0xE6), 0x1F7C2)+ ,((Wingdings2, 0xE7), 0x1F7C4)+ ,((Wingdings2, 0xE8), 0x2726)+ ,((Wingdings2, 0xE9), 0x1F7C9)+ ,((Wingdings2, 0xEA), 0x2605)+ ,((Wingdings2, 0xEB), 0x2736)+ ,((Wingdings2, 0xEC), 0x1F7CB)+ ,((Wingdings2, 0xED), 0x2737)+ ,((Wingdings2, 0xEE), 0x1F7CF)+ ,((Wingdings2, 0xEF), 0x1F7D2)+ ,((Wingdings2, 0xF0), 0x2739)+ ,((Wingdings2, 0xF1), 0x1F7C3)+ ,((Wingdings2, 0xF2), 0x1F7C7)+ ,((Wingdings2, 0xF3), 0x272F)+ ,((Wingdings2, 0xF4), 0x1F7CD)+ ,((Wingdings2, 0xF5), 0x1F7D4)+ ,((Wingdings2, 0xF6), 0x2BCC)+ ,((Wingdings2, 0xF7), 0x2BCD)+ ,((Wingdings2, 0xF8), 0x203B)+ ,((Wingdings2, 0xF9), 0x2042)+ ,((Wingdings3, 0x21), 0x2B60)+ ,((Wingdings3, 0x22), 0x2B62)+ ,((Wingdings3, 0x23), 0x2B61)+ ,((Wingdings3, 0x24), 0x2B63)+ ,((Wingdings3, 0x25), 0x2B66)+ ,((Wingdings3, 0x26), 0x2B67)+ ,((Wingdings3, 0x27), 0x2B69)+ ,((Wingdings3, 0x28), 0x2B68)+ ,((Wingdings3, 0x29), 0x2B70)+ ,((Wingdings3, 0x2A), 0x2B72)+ ,((Wingdings3, 0x2B), 0x2B71)+ ,((Wingdings3, 0x2C), 0x2B73)+ ,((Wingdings3, 0x2D), 0x2B76)+ ,((Wingdings3, 0x2E), 0x2B78)+ ,((Wingdings3, 0x2F), 0x2B7B)+ ,((Wingdings3, 0x30), 0x2B7D)+ ,((Wingdings3, 0x31), 0x2B64)+ ,((Wingdings3, 0x32), 0x2B65)+ ,((Wingdings3, 0x33), 0x2B6A)+ ,((Wingdings3, 0x34), 0x2B6C)+ ,((Wingdings3, 0x35), 0x2B6B)+ ,((Wingdings3, 0x36), 0x2B6D)+ ,((Wingdings3, 0x37), 0x2B4D)+ ,((Wingdings3, 0x38), 0x2BA0)+ ,((Wingdings3, 0x39), 0x2BA1)+ ,((Wingdings3, 0x3A), 0x2BA2)+ ,((Wingdings3, 0x3B), 0x2BA3)+ ,((Wingdings3, 0x3C), 0x2BA4)+ ,((Wingdings3, 0x3D), 0x2BA5)+ ,((Wingdings3, 0x3E), 0x2BA6)+ ,((Wingdings3, 0x3F), 0x2BA7)+ ,((Wingdings3, 0x40), 0x2B90)+ ,((Wingdings3, 0x41), 0x2B91)+ ,((Wingdings3, 0x42), 0x2B92)+ ,((Wingdings3, 0x43), 0x2B93)+ ,((Wingdings3, 0x44), 0x2B80)+ ,((Wingdings3, 0x45), 0x2B83)+ ,((Wingdings3, 0x46), 0x2B7E)+ ,((Wingdings3, 0x47), 0x2B7F)+ ,((Wingdings3, 0x48), 0x2B84)+ ,((Wingdings3, 0x49), 0x2B86)+ ,((Wingdings3, 0x4A), 0x2B85)+ ,((Wingdings3, 0x4B), 0x2B87)+ ,((Wingdings3, 0x4C), 0x2B8F)+ ,((Wingdings3, 0x4D), 0x2B8D)+ ,((Wingdings3, 0x4E), 0x2B8E)+ ,((Wingdings3, 0x4F), 0x2B8C)+ ,((Wingdings3, 0x50), 0x2B6E)+ ,((Wingdings3, 0x51), 0x2B6F)+ ,((Wingdings3, 0x52), 0x238B)+ ,((Wingdings3, 0x53), 0x2324)+ ,((Wingdings3, 0x54), 0x2303)+ ,((Wingdings3, 0x55), 0x2325)+ ,((Wingdings3, 0x56), 0x23B5)+ ,((Wingdings3, 0x57), 0x237D)+ ,((Wingdings3, 0x58), 0x21EA)+ ,((Wingdings3, 0x59), 0x2BB8)+ ,((Wingdings3, 0x5A), 0x1F8A0)+ ,((Wingdings3, 0x5B), 0x1F8A1)+ ,((Wingdings3, 0x5C), 0x1F8A2)+ ,((Wingdings3, 0x5D), 0x1F8A3)+ ,((Wingdings3, 0x5E), 0x1F8A4)+ ,((Wingdings3, 0x5F), 0x1F8A5)+ ,((Wingdings3, 0x60), 0x1F8A6)+ ,((Wingdings3, 0x61), 0x1F8A7)+ ,((Wingdings3, 0x62), 0x1F8A8)+ ,((Wingdings3, 0x63), 0x1F8A9)+ ,((Wingdings3, 0x64), 0x1F8AA)+ ,((Wingdings3, 0x65), 0x1F8AB)+ ,((Wingdings3, 0x66), 0x2190)+ ,((Wingdings3, 0x67), 0x2192)+ ,((Wingdings3, 0x68), 0x2191)+ ,((Wingdings3, 0x69), 0x2193)+ ,((Wingdings3, 0x6A), 0x2196)+ ,((Wingdings3, 0x6B), 0x2197)+ ,((Wingdings3, 0x6C), 0x2199)+ ,((Wingdings3, 0x6D), 0x2198)+ ,((Wingdings3, 0x6E), 0x1F858)+ ,((Wingdings3, 0x6F), 0x1F859)+ ,((Wingdings3, 0x70), 0x25B2)+ ,((Wingdings3, 0x71), 0x25BC)+ ,((Wingdings3, 0x72), 0x25B3)+ ,((Wingdings3, 0x73), 0x25BD)+ ,((Wingdings3, 0x74), 0x25C4)+ ,((Wingdings3, 0x75), 0x25BA)+ ,((Wingdings3, 0x76), 0x25C1)+ ,((Wingdings3, 0x77), 0x25B7)+ ,((Wingdings3, 0x78), 0x25E3)+ ,((Wingdings3, 0x79), 0x25E2)+ ,((Wingdings3, 0x7A), 0x25E4)+ ,((Wingdings3, 0x7B), 0x25E5)+ ,((Wingdings3, 0x7C), 0x1F780)+ ,((Wingdings3, 0x7D), 0x1F782)+ ,((Wingdings3, 0x7E), 0x1F781)+ ,((Wingdings3, 0x80), 0x1F783)+ ,((Wingdings3, 0x81), 0x25B2)+ ,((Wingdings3, 0x82), 0x25BC)+ ,((Wingdings3, 0x83), 0x25C0)+ ,((Wingdings3, 0x84), 0x25B6)+ ,((Wingdings3, 0x85), 0x2B9C)+ ,((Wingdings3, 0x86), 0x2B9E)+ ,((Wingdings3, 0x87), 0x2B9D)+ ,((Wingdings3, 0x88), 0x2B9F)+ ,((Wingdings3, 0x89), 0x1F810)+ ,((Wingdings3, 0x8A), 0x1F812)+ ,((Wingdings3, 0x8B), 0x1F811)+ ,((Wingdings3, 0x8C), 0x1F813)+ ,((Wingdings3, 0x8D), 0x1F814)+ ,((Wingdings3, 0x8E), 0x1F816)+ ,((Wingdings3, 0x8F), 0x1F815)+ ,((Wingdings3, 0x90), 0x1F817)+ ,((Wingdings3, 0x91), 0x1F818)+ ,((Wingdings3, 0x92), 0x1F81A)+ ,((Wingdings3, 0x93), 0x1F819)+ ,((Wingdings3, 0x94), 0x1F81B)+ ,((Wingdings3, 0x95), 0x1F81C)+ ,((Wingdings3, 0x96), 0x1F81E)+ ,((Wingdings3, 0x97), 0x1F81D)+ ,((Wingdings3, 0x98), 0x1F81F)+ ,((Wingdings3, 0x99), 0x1F800)+ ,((Wingdings3, 0x9A), 0x1F802)+ ,((Wingdings3, 0x9B), 0x1F801)+ ,((Wingdings3, 0x9C), 0x1F803)+ ,((Wingdings3, 0x9D), 0x1F804)+ ,((Wingdings3, 0x9E), 0x1F806)+ ,((Wingdings3, 0x9F), 0x1F805)+ ,((Wingdings3, 0xA1), 0x1F808)+ ,((Wingdings3, 0xA2), 0x1F80A)+ ,((Wingdings3, 0xA3), 0x1F809)+ ,((Wingdings3, 0xA4), 0x1F80B)+ ,((Wingdings3, 0xA5), 0x1F820)+ ,((Wingdings3, 0xA6), 0x1F822)+ ,((Wingdings3, 0xA7), 0x1F824)+ ,((Wingdings3, 0xA8), 0x1F826)+ ,((Wingdings3, 0xA9), 0x1F828)+ ,((Wingdings3, 0xAA), 0x1F82A)+ ,((Wingdings3, 0xAB), 0x1F82C)+ ,((Wingdings3, 0xAC), 0x1F89C)+ ,((Wingdings3, 0xAD), 0x1F89D)+ ,((Wingdings3, 0xAE), 0x1F89E)+ ,((Wingdings3, 0xAF), 0x1F89F)+ ,((Wingdings3, 0xB0), 0x1F82E)+ ,((Wingdings3, 0xB1), 0x1F830)+ ,((Wingdings3, 0xB2), 0x1F832)+ ,((Wingdings3, 0xB3), 0x1F834)+ ,((Wingdings3, 0xB4), 0x1F836)+ ,((Wingdings3, 0xB5), 0x1F838)+ ,((Wingdings3, 0xB6), 0x1F83A)+ ,((Wingdings3, 0xB7), 0x1F839)+ ,((Wingdings3, 0xB8), 0x1F83B)+ ,((Wingdings3, 0xB9), 0x1F898)+ ,((Wingdings3, 0xBA), 0x1F89A)+ ,((Wingdings3, 0xBB), 0x1F899)+ ,((Wingdings3, 0xBC), 0x1F89B)+ ,((Wingdings3, 0xBD), 0x1F83C)+ ,((Wingdings3, 0xBE), 0x1F83E)+ ,((Wingdings3, 0xBF), 0x1F83D)+ ,((Wingdings3, 0xC0), 0x1F83F)+ ,((Wingdings3, 0xC1), 0x1F840)+ ,((Wingdings3, 0xC2), 0x1F842)+ ,((Wingdings3, 0xC3), 0x1F841)+ ,((Wingdings3, 0xC4), 0x1F843)+ ,((Wingdings3, 0xC5), 0x1F844)+ ,((Wingdings3, 0xC6), 0x1F846)+ ,((Wingdings3, 0xC7), 0x1F845)+ ,((Wingdings3, 0xC8), 0x1F847)+ ,((Wingdings3, 0xC9), 0x2BA8)+ ,((Wingdings3, 0xCA), 0x2BA9)+ ,((Wingdings3, 0xCB), 0x2BAA)+ ,((Wingdings3, 0xCC), 0x2BAB)+ ,((Wingdings3, 0xCD), 0x2BAC)+ ,((Wingdings3, 0xCE), 0x2BAD)+ ,((Wingdings3, 0xCF), 0x2BAE)+ ,((Wingdings3, 0xD0), 0x2BAF)+ ,((Wingdings3, 0xD1), 0x1F860)+ ,((Wingdings3, 0xD2), 0x1F862)+ ,((Wingdings3, 0xD3), 0x1F861)+ ,((Wingdings3, 0xD4), 0x1F863)+ ,((Wingdings3, 0xD5), 0x1F864)+ ,((Wingdings3, 0xD6), 0x1F865)+ ,((Wingdings3, 0xD7), 0x1F867)+ ,((Wingdings3, 0xD8), 0x1F866)+ ,((Wingdings3, 0xD9), 0x1F870)+ ,((Wingdings3, 0xDA), 0x1F872)+ ,((Wingdings3, 0xDB), 0x1F871)+ ,((Wingdings3, 0xDC), 0x1F873)+ ,((Wingdings3, 0xDD), 0x1F874)+ ,((Wingdings3, 0xDE), 0x1F875)+ ,((Wingdings3, 0xDF), 0x1F877)+ ,((Wingdings3, 0xE0), 0x1F876)+ ,((Wingdings3, 0xE1), 0x1F880)+ ,((Wingdings3, 0xE2), 0x1F882)+ ,((Wingdings3, 0xE3), 0x1F881)+ ,((Wingdings3, 0xE4), 0x1F883)+ ,((Wingdings3, 0xE5), 0x1F884)+ ,((Wingdings3, 0xE6), 0x1F885)+ ,((Wingdings3, 0xE7), 0x1F887)+ ,((Wingdings3, 0xE8), 0x1F886)+ ,((Wingdings3, 0xE9), 0x1F890)+ ,((Wingdings3, 0xEA), 0x1F892)+ ,((Wingdings3, 0xEB), 0x1F891)+ ,((Wingdings3, 0xEC), 0x1F893)+ ,((Wingdings3, 0xED), 0x1F894)+ ,((Wingdings3, 0xEE), 0x1F896)+ ,((Wingdings3, 0xEF), 0x1F895)+ ,((Wingdings3, 0xF0), 0x1F897)+ ,((Webdings, 0x21), 0x1F577)+ ,((Webdings, 0x22), 0x1F578)+ ,((Webdings, 0x23), 0x1F572)+ ,((Webdings, 0x24), 0x1F576)+ ,((Webdings, 0x25), 0x1F3C6)+ ,((Webdings, 0x26), 0x1F396)+ ,((Webdings, 0x27), 0x1F587)+ ,((Webdings, 0x28), 0x1F5E8)+ ,((Webdings, 0x29), 0x1F5E9)+ ,((Webdings, 0x2A), 0x1F5F0)+ ,((Webdings, 0x2B), 0x1F5F1)+ ,((Webdings, 0x2C), 0x1F336)+ ,((Webdings, 0x2D), 0x1F397)+ ,((Webdings, 0x2E), 0x1F67E)+ ,((Webdings, 0x2F), 0x1F67C)+ ,((Webdings, 0x30), 0x1F5D5)+ ,((Webdings, 0x31), 0x1F5D6)+ ,((Webdings, 0x32), 0x1F5D7)+ ,((Webdings, 0x33), 0x23F4)+ ,((Webdings, 0x34), 0x23F5)+ ,((Webdings, 0x35), 0x23F6)+ ,((Webdings, 0x36), 0x23F7)+ ,((Webdings, 0x37), 0x23EA)+ ,((Webdings, 0x38), 0x23E9)+ ,((Webdings, 0x39), 0x23EE)+ ,((Webdings, 0x3A), 0x23ED)+ ,((Webdings, 0x3B), 0x23F8)+ ,((Webdings, 0x3C), 0x23F9)+ ,((Webdings, 0x3D), 0x23FA)+ ,((Webdings, 0x3E), 0x1F5DA)+ ,((Webdings, 0x3F), 0x1F5F3)+ ,((Webdings, 0x40), 0x1F6E0)+ ,((Webdings, 0x41), 0x1F3D7)+ ,((Webdings, 0x42), 0x1F3D8)+ ,((Webdings, 0x43), 0x1F3D9)+ ,((Webdings, 0x44), 0x1F3DA)+ ,((Webdings, 0x45), 0x1F3DC)+ ,((Webdings, 0x46), 0x1F3ED)+ ,((Webdings, 0x47), 0x1F3DB)+ ,((Webdings, 0x48), 0x1F3E0)+ ,((Webdings, 0x49), 0x1F3D6)+ ,((Webdings, 0x4A), 0x1F3DD)+ ,((Webdings, 0x4B), 0x1F6E3)+ ,((Webdings, 0x4C), 0x1F50D)+ ,((Webdings, 0x4D), 0x1F3D4)+ ,((Webdings, 0x4E), 0x1F441)+ ,((Webdings, 0x4F), 0x1F442)+ ,((Webdings, 0x50), 0x1F3DE)+ ,((Webdings, 0x51), 0x1F3D5)+ ,((Webdings, 0x52), 0x1F6E4)+ ,((Webdings, 0x53), 0x1F3DF)+ ,((Webdings, 0x54), 0x1F6F3)+ ,((Webdings, 0x55), 0x1F56C)+ ,((Webdings, 0x56), 0x1F56B)+ ,((Webdings, 0x57), 0x1F568)+ ,((Webdings, 0x58), 0x1F508)+ ,((Webdings, 0x59), 0x1F394)+ ,((Webdings, 0x5A), 0x1F395)+ ,((Webdings, 0x5B), 0x1F5EC)+ ,((Webdings, 0x5C), 0x1F67D)+ ,((Webdings, 0x5D), 0x1F5ED)+ ,((Webdings, 0x5E), 0x1F5EA)+ ,((Webdings, 0x5F), 0x1F5EB)+ ,((Webdings, 0x60), 0x2B94)+ ,((Webdings, 0x61), 0x2714)+ ,((Webdings, 0x62), 0x1F6B2)+ ,((Webdings, 0x63), 0x25A1)+ ,((Webdings, 0x64), 0x1F6E1)+ ,((Webdings, 0x65), 0x1F4E6)+ ,((Webdings, 0x66), 0x1F6F1)+ ,((Webdings, 0x67), 0x25A0)+ ,((Webdings, 0x68), 0x1F691)+ ,((Webdings, 0x69), 0x1F6C8)+ ,((Webdings, 0x6A), 0x1F6E9)+ ,((Webdings, 0x6B), 0x1F6F0)+ ,((Webdings, 0x6C), 0x1F7C8)+ ,((Webdings, 0x6D), 0x1F574)+ ,((Webdings, 0x6E), 0x26AB)+ ,((Webdings, 0x6F), 0x1F6E5)+ ,((Webdings, 0x70), 0x1F694)+ ,((Webdings, 0x71), 0x1F5D8)+ ,((Webdings, 0x72), 0x1F5D9)+ ,((Webdings, 0x73), 0x2753)+ ,((Webdings, 0x74), 0x1F6F2)+ ,((Webdings, 0x75), 0x1F687)+ ,((Webdings, 0x76), 0x1F68D)+ ,((Webdings, 0x77), 0x26F3)+ ,((Webdings, 0x78), 0x1F6C7)+ ,((Webdings, 0x79), 0x2296)+ ,((Webdings, 0x7A), 0x1F6AD)+ ,((Webdings, 0x7B), 0x1F5EE)+ ,((Webdings, 0x7C), 0x007C)+ ,((Webdings, 0x7D), 0x1F5EF)+ ,((Webdings, 0x7E), 0x1F5F2)+ ,((Webdings, 0x80), 0x1F6B9)+ ,((Webdings, 0x81), 0x1F6BA)+ ,((Webdings, 0x82), 0x1F6C9)+ ,((Webdings, 0x83), 0x1F6CA)+ ,((Webdings, 0x84), 0x1F6BC)+ ,((Webdings, 0x85), 0x1F47D)+ ,((Webdings, 0x86), 0x1F3CB)+ ,((Webdings, 0x87), 0x26F7)+ ,((Webdings, 0x88), 0x1F3C2)+ ,((Webdings, 0x89), 0x1F3CC)+ ,((Webdings, 0x8A), 0x1F3CA)+ ,((Webdings, 0x8B), 0x1F3C4)+ ,((Webdings, 0x8C), 0x1F3CD)+ ,((Webdings, 0x8D), 0x1F3CE)+ ,((Webdings, 0x8E), 0x1F698)+ ,((Webdings, 0x8F), 0x1F5E0)+ ,((Webdings, 0x90), 0x1F6E2)+ ,((Webdings, 0x91), 0x1F4B0)+ ,((Webdings, 0x92), 0x1F3F7)+ ,((Webdings, 0x93), 0x1F4B3)+ ,((Webdings, 0x94), 0x1F46A)+ ,((Webdings, 0x95), 0x1F5E1)+ ,((Webdings, 0x96), 0x1F5E2)+ ,((Webdings, 0x97), 0x1F5E3)+ ,((Webdings, 0x98), 0x272F)+ ,((Webdings, 0x99), 0x1F584)+ ,((Webdings, 0x9A), 0x1F585)+ ,((Webdings, 0x9B), 0x1F583)+ ,((Webdings, 0x9C), 0x1F586)+ ,((Webdings, 0x9D), 0x1F5B9)+ ,((Webdings, 0x9E), 0x1F5BA)+ ,((Webdings, 0x9F), 0x1F5BB)+ ,((Webdings, 0xA1), 0x1F570)+ ,((Webdings, 0xA2), 0x1F5BD)+ ,((Webdings, 0xA3), 0x1F5BE)+ ,((Webdings, 0xA4), 0x1F4CB)+ ,((Webdings, 0xA5), 0x1F5D2)+ ,((Webdings, 0xA6), 0x1F5D3)+ ,((Webdings, 0xA7), 0x1F4D6)+ ,((Webdings, 0xA8), 0x1F4DA)+ ,((Webdings, 0xA9), 0x1F5DE)+ ,((Webdings, 0xAA), 0x1F5DF)+ ,((Webdings, 0xAB), 0x1F5C3)+ ,((Webdings, 0xAC), 0x1F5C2)+ ,((Webdings, 0xAD), 0x1F5BC)+ ,((Webdings, 0xAE), 0x1F3AD)+ ,((Webdings, 0xAF), 0x1F39C)+ ,((Webdings, 0xB0), 0x1F398)+ ,((Webdings, 0xB1), 0x1F399)+ ,((Webdings, 0xB2), 0x1F3A7)+ ,((Webdings, 0xB3), 0x1F4BF)+ ,((Webdings, 0xB4), 0x1F39E)+ ,((Webdings, 0xB5), 0x1F4F7)+ ,((Webdings, 0xB6), 0x1F39F)+ ,((Webdings, 0xB7), 0x1F3AC)+ ,((Webdings, 0xB8), 0x1F4FD)+ ,((Webdings, 0xB9), 0x1F4F9)+ ,((Webdings, 0xBA), 0x1F4FE)+ ,((Webdings, 0xBB), 0x1F4FB)+ ,((Webdings, 0xBC), 0x1F39A)+ ,((Webdings, 0xBD), 0x1F39B)+ ,((Webdings, 0xBE), 0x1F4FA)+ ,((Webdings, 0xBF), 0x1F4BB)+ ,((Webdings, 0xC0), 0x1F5A5)+ ,((Webdings, 0xC1), 0x1F5A6)+ ,((Webdings, 0xC2), 0x1F5A7)+ ,((Webdings, 0xC3), 0x1F579)+ ,((Webdings, 0xC4), 0x1F3AE)+ ,((Webdings, 0xC5), 0x1F57B)+ ,((Webdings, 0xC6), 0x1F57C)+ ,((Webdings, 0xC7), 0x1F4DF)+ ,((Webdings, 0xC8), 0x1F581)+ ,((Webdings, 0xC9), 0x1F580)+ ,((Webdings, 0xCA), 0x1F5A8)+ ,((Webdings, 0xCB), 0x1F5A9)+ ,((Webdings, 0xCC), 0x1F5BF)+ ,((Webdings, 0xCD), 0x1F5AA)+ ,((Webdings, 0xCE), 0x1F5DC)+ ,((Webdings, 0xCF), 0x1F512)+ ,((Webdings, 0xD0), 0x1F513)+ ,((Webdings, 0xD1), 0x1F5DD)+ ,((Webdings, 0xD2), 0x1F4E5)+ ,((Webdings, 0xD3), 0x1F4E4)+ ,((Webdings, 0xD4), 0x1F573)+ ,((Webdings, 0xD5), 0x1F323)+ ,((Webdings, 0xD6), 0x1F324)+ ,((Webdings, 0xD7), 0x1F325)+ ,((Webdings, 0xD8), 0x1F326)+ ,((Webdings, 0xD9), 0x2601)+ ,((Webdings, 0xDA), 0x1F327)+ ,((Webdings, 0xDB), 0x1F328)+ ,((Webdings, 0xDC), 0x1F329)+ ,((Webdings, 0xDD), 0x1F32A)+ ,((Webdings, 0xDE), 0x1F32C)+ ,((Webdings, 0xDF), 0x1F32B)+ ,((Webdings, 0xE0), 0x1F31C)+ ,((Webdings, 0xE1), 0x1F321)+ ,((Webdings, 0xE2), 0x1F6CB)+ ,((Webdings, 0xE3), 0x1F6CF)+ ,((Webdings, 0xE4), 0x1F37D)+ ,((Webdings, 0xE5), 0x1F378)+ ,((Webdings, 0xE6), 0x1F6CE)+ ,((Webdings, 0xE7), 0x1F6CD)+ ,((Webdings, 0xE8), 0x24C5)+ ,((Webdings, 0xE9), 0x267F)+ ,((Webdings, 0xEA), 0x1F6C6)+ ,((Webdings, 0xEB), 0x1F588)+ ,((Webdings, 0xEC), 0x1F393)+ ,((Webdings, 0xED), 0x1F5E4)+ ,((Webdings, 0xEE), 0x1F5E5)+ ,((Webdings, 0xEF), 0x1F5E6)+ ,((Webdings, 0xF0), 0x1F5E7)+ ,((Webdings, 0xF1), 0x1F6EA)+ ,((Webdings, 0xF2), 0x1F43F)+ ,((Webdings, 0xF3), 0x1F426)+ ,((Webdings, 0xF4), 0x1F41F)+ ,((Webdings, 0xF5), 0x1F415)+ ,((Webdings, 0xF6), 0x1F408)+ ,((Webdings, 0xF7), 0x1F66C)+ ,((Webdings, 0xF8), 0x1F66E)+ ,((Webdings, 0xF9), 0x1F66D)+ ,((Webdings, 0xFA), 0x1F66F)+ ,((Webdings, 0xFB), 0x1F5FA)+ ,((Webdings, 0xFC), 0x1F30D)+ ,((Webdings, 0xFD), 0x1F30F)+ ,((Webdings, 0xFE), 0x1F30E)+ ,((Webdings, 0xFF), 0x1F54A)+ ,((Symbol,0x20), 0xA0)+ ,((Symbol,0x21), 0x21)+ ,((Symbol,0x22), 0x2200)+ ,((Symbol,0x23), 0x23)+ ,((Symbol,0x24), 0x2203)+ ,((Symbol,0x25), 0x25)+ ,((Symbol,0x26), 0x26)+ ,((Symbol,0x27), 0x220B)+ ,((Symbol,0x28), 0x28)+ ,((Symbol,0x29), 0x29)+ ,((Symbol,0x2A), 0x2217)+ ,((Symbol,0x2B), 0x2B)+ ,((Symbol,0x2C), 0x2C)+ ,((Symbol,0x2D), 0x2212)+ ,((Symbol,0x2E), 0x2E)+ ,((Symbol,0x2F), 0x2F)+ ,((Symbol,0x30), 0x30)+ ,((Symbol,0x31), 0x31)+ ,((Symbol,0x32), 0x32)+ ,((Symbol,0x33), 0x33)+ ,((Symbol,0x34), 0x34)+ ,((Symbol,0x35), 0x35)+ ,((Symbol,0x36), 0x36)+ ,((Symbol,0x37), 0x37)+ ,((Symbol,0x38), 0x38)+ ,((Symbol,0x39), 0x39)+ ,((Symbol,0x3A), 0x3A)+ ,((Symbol,0x3B), 0x3B)+ ,((Symbol,0x3C), 0x3C)+ ,((Symbol,0x3D), 0x3D)+ ,((Symbol,0x3E), 0x3E)+ ,((Symbol,0x3F), 0x3F)+ ,((Symbol,0x40), 0x2245)+ ,((Symbol,0x41), 0x391)+ ,((Symbol,0x42), 0x392)+ ,((Symbol,0x43), 0x3A7)+ ,((Symbol,0x44), 0x2206)+ ,((Symbol,0x45), 0x395)+ ,((Symbol,0x46), 0x3A6)+ ,((Symbol,0x47), 0x393)+ ,((Symbol,0x48), 0x397)+ ,((Symbol,0x49), 0x399)+ ,((Symbol,0x4A), 0x3D1)+ ,((Symbol,0x4B), 0x39A)+ ,((Symbol,0x4C), 0x39B)+ ,((Symbol,0x4D), 0x39C)+ ,((Symbol,0x4E), 0x39D)+ ,((Symbol,0x4F), 0x39F)+ ,((Symbol,0x50), 0x3A0)+ ,((Symbol,0x51), 0x398)+ ,((Symbol,0x52), 0x3A1)+ ,((Symbol,0x53), 0x3A3)+ ,((Symbol,0x54), 0x3A4)+ ,((Symbol,0x55), 0x3A5)+ ,((Symbol,0x56), 0x3C2)+ ,((Symbol,0x57), 0x2126)+ ,((Symbol,0x58), 0x39E)+ ,((Symbol,0x59), 0x3A8)+ ,((Symbol,0x5A), 0x396)+ ,((Symbol,0x5B), 0x5B)+ ,((Symbol,0x5C), 0x2234)+ ,((Symbol,0x5D), 0x5D)+ ,((Symbol,0x5E), 0x22A5)+ ,((Symbol,0x5F), 0x5F)+ ,((Symbol,0x60), 0xF8E5)+ ,((Symbol,0x61), 0x3B1)+ ,((Symbol,0x62), 0x3B2)+ ,((Symbol,0x63), 0x3C7)+ ,((Symbol,0x64), 0x3B4)+ ,((Symbol,0x65), 0x3B5)+ ,((Symbol,0x66), 0x3C6)+ ,((Symbol,0x67), 0x3B3)+ ,((Symbol,0x68), 0x3B7)+ ,((Symbol,0x69), 0x3B9)+ ,((Symbol,0x6A), 0x3D5)+ ,((Symbol,0x6B), 0x3BA)+ ,((Symbol,0x6C), 0x3BB)+ ,((Symbol,0x6D), 0x3BC)+ ,((Symbol,0x6E), 0x3BD)+ ,((Symbol,0x6F), 0x3BF)+ ,((Symbol,0x70), 0x3C0)+ ,((Symbol,0x71), 0x3B8)+ ,((Symbol,0x72), 0x3C1)+ ,((Symbol,0x73), 0x3C3)+ ,((Symbol,0x74), 0x3C4)+ ,((Symbol,0x75), 0x3C5)+ ,((Symbol,0x76), 0x3D6)+ ,((Symbol,0x77), 0x3C9)+ ,((Symbol,0x78), 0x3BE)+ ,((Symbol,0x79), 0x3C8)+ ,((Symbol,0x7A), 0x3B6)+ ,((Symbol,0x7B), 0x7B)+ ,((Symbol,0x7C), 0x7C)+ ,((Symbol,0x7D), 0x7D)+ ,((Symbol,0x7E), 0x223C)+ ,((Symbol,0xA0), 0x20AC)+ ,((Symbol,0xA1), 0x3D2)+ ,((Symbol,0xA2), 0x2032)+ ,((Symbol,0xA3), 0x2264)+ ,((Symbol,0xA4), 0x2215)+ ,((Symbol,0xA5), 0x221E)+ ,((Symbol,0xA6), 0x192)+ ,((Symbol,0xA7), 0x2663)+ ,((Symbol,0xA8), 0x2666)+ ,((Symbol,0xA9), 0x2665)+ ,((Symbol,0xAA), 0x2660)+ ,((Symbol,0xAB), 0x2194)+ ,((Symbol,0xAC), 0x2190)+ ,((Symbol,0xAD), 0x2191)+ ,((Symbol,0xAE), 0x2192)+ ,((Symbol,0xAF), 0x2193)+ ,((Symbol,0xB0), 0xB0)+ ,((Symbol,0xB1), 0xB1)+ ,((Symbol,0xB2), 0x2033)+ ,((Symbol,0xB3), 0x2265)+ ,((Symbol,0xB4), 0xD7)+ ,((Symbol,0xB5), 0x221D)+ ,((Symbol,0xB6), 0x2202)+ ,((Symbol,0xB7), 0x2022)+ ,((Symbol,0xB8), 0xF7)+ ,((Symbol,0xB9), 0x2260)+ ,((Symbol,0xBA), 0x2261)+ ,((Symbol,0xBB), 0x2248)+ ,((Symbol,0xBC), 0x2026)+ ,((Symbol,0xBD), 0xF8E6)+ ,((Symbol,0xBE), 0xF8E7)+ ,((Symbol,0xBF), 0x21B5)+ ,((Symbol,0xC0), 0x2135)+ ,((Symbol,0xC1), 0x2111)+ ,((Symbol,0xC2), 0x211C)+ ,((Symbol,0xC3), 0x2118)+ ,((Symbol,0xC4), 0x2297)+ ,((Symbol,0xC5), 0x2295)+ ,((Symbol,0xC6), 0x2205)+ ,((Symbol,0xC7), 0x2229)+ ,((Symbol,0xC8), 0x222A)+ ,((Symbol,0xC9), 0x2283)+ ,((Symbol,0xCA), 0x2287)+ ,((Symbol,0xCB), 0x2284)+ ,((Symbol,0xCC), 0x2282)+ ,((Symbol,0xCD), 0x2286)+ ,((Symbol,0xCE), 0x2208)+ ,((Symbol,0xCF), 0x2209)+ ,((Symbol,0xD0), 0x2220)+ ,((Symbol,0xD1), 0x2207)+ ,((Symbol,0xD2), 0xF6DA)+ ,((Symbol,0xD3), 0xF6D9)+ ,((Symbol,0xD4), 0xF6DB)+ ,((Symbol,0xD5), 0x220F)+ ,((Symbol,0xD6), 0x221A)+ ,((Symbol,0xD7), 0x22C5)+ ,((Symbol,0xD8), 0xAC)+ ,((Symbol,0xD9), 0x2227)+ ,((Symbol,0xDA), 0x2228)+ ,((Symbol,0xDB), 0x21D4)+ ,((Symbol,0xDC), 0x21D0)+ ,((Symbol,0xDD), 0x21D1)+ ,((Symbol,0xDE), 0x21D2)+ ,((Symbol,0xDF), 0x21D3)+ ,((Symbol,0xE0), 0x25CA)+ ,((Symbol,0xE1), 0x2329)+ ,((Symbol,0xE2), 0xF8E8)+ ,((Symbol,0xE3), 0xF8E9)+ ,((Symbol,0xE4), 0xF8EA)+ ,((Symbol,0xE5), 0x2211)+ ,((Symbol,0xE6), 0xF8EB)+ ,((Symbol,0xE7), 0xF8EC)+ ,((Symbol,0xE8), 0xF8ED)+ ,((Symbol,0xE9), 0xF8EE)+ ,((Symbol,0xEA), 0xF8EF)+ ,((Symbol,0xEB), 0xF8F0)+ ,((Symbol,0xEC), 0xF8F1)+ ,((Symbol,0xED), 0xF8F2)+ ,((Symbol,0xEE), 0xF8F3)+ ,((Symbol,0xEF), 0xF8F4)+ ,((Symbol,0xF1), 0x232A)+ ,((Symbol,0xF2), 0x222B)+ ,((Symbol,0xF3), 0x2320)+ ,((Symbol,0xF4), 0xF8F5)+ ,((Symbol,0xF5), 0x2321)+ ,((Symbol,0xF6), 0xF8F6)+ ,((Symbol,0xF7), 0xF8F7)+ ,((Symbol,0xF8), 0xF8F8)+ ,((Symbol,0xF9), 0xF8F9)+ ,((Symbol,0xFA), 0xF8FA)+ ,((Symbol,0xFB), 0xF8FB)+ ,((Symbol,0xFC), 0xF8FC)+ ,((Symbol,0xFD), 0xF8FD)+ ,((Symbol,0xFE), 0xF8FE)+ ]
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {- |- Module : Text.Pandoc.Readers.Docx.StyleMaps+ Module : Text.Pandoc.Readers.Docx.Util Copyright : © 2014-2020 Jesse Rosenthal <jrosenthal@jhu.edu>, 2014-2023 John MacFarlane <jgm@berkeley.edu>, 2015 Nikolay Yakimov <root@livid.pp.ru>@@ -21,12 +21,14 @@ , findChildrenByName , findElementByName , findAttrByName+ , extractChildren ) where import qualified Data.Text as T import Data.Text (Text) import Text.Pandoc.XML.Light import qualified Data.Map as M+import Data.List (partition) type NameSpaces = M.Map Text Text @@ -67,3 +69,23 @@ findAttrByName ns pref name el = let ns' = ns <> elemToNameSpaces el in findAttr (elemName ns' pref name) el+++-- | Removes child elements that satisfy a given condition.+-- Returns the modified element and the list of removed children.+extractChildren :: Element -> (Element -> Bool) -> Maybe (Element, [Element])+extractChildren el condition+ | null removedChildren = Nothing -- No children removed, return Nothing+ | otherwise = Just (modifiedElement, removedChildren) -- Children removed, return Just+ where+ -- Separate the children based on the condition+ (removedChildren, keptChildren) = partition condition (onlyElems' $ elContent el)++ -- Helper function to filter only Element types from Content+ onlyElems' :: [Content] -> [Element]+ onlyElems' = foldr (\c acc -> case c of+ Elem e -> e : acc+ _ -> acc) []++ -- Reconstruct the element with the kept children+ modifiedElement = el { elContent = map Elem keptChildren }
@@ -25,7 +25,7 @@ module Text.Pandoc.Readers.FB2 ( readFB2 ) where import Control.Monad.Except (throwError) import Control.Monad.State.Strict-import Data.ByteString.Lazy.Base64+import Data.ByteString.Base64.Lazy import Data.Functor import Data.List (intersperse) import qualified Data.Map as M@@ -202,7 +202,7 @@ report $ IgnoredElement "binary without content-type attribute" (Just filename, contentType) -> insertMedia (T.unpack filename) contentType- (decodeBase64Lenient+ (decodeLenient (UTF8.fromTextLazy . TL.fromStrict . strContent $ e)) -- * Type parsers
@@ -28,7 +28,7 @@ import Control.Monad (guard, mzero, unless, void) import Control.Monad.Except (throwError, catchError) import Control.Monad.Reader (ask, asks, lift, local, runReaderT)-import Data.Text.Encoding.Base64 (encodeBase64)+import Data.ByteString.Base64 (encode) import Data.Char (isAlphaNum, isLetter) import Data.Default (Default (..), def) import Data.Foldable (for_)@@ -334,19 +334,23 @@ -- note: if they have an <ol> or <ul> not in scope of a <li>, -- treat it as a list item, though it's not valid xhtml... skipMany nonItem- items <- manyTill (pListItem' nonItem) (pCloses "ul")+ items <- manyTill (pListItem nonItem) (pCloses "ul") return $ B.bulletList $ map (fixPlains True) items -pListItem :: PandocMonad m => TagParser m Blocks-pListItem = setInListItem $ do+pListItem :: PandocMonad m => TagParser m a -> TagParser m Blocks+pListItem nonItem = setInListItem $ do TagOpen _ attr' <- lookAhead $ pSatisfy (matchTagOpen "li" []) let attr = toStringAttr attr' let addId ident bs = case B.toList bs of (Plain ils:xs) -> B.fromList (Plain [Span (ident, [], []) ils] : xs) _ -> B.divWith (ident, [], []) bs- maybe id addId (lookup "id" attr) <$>- pInTags "li" block+ item <- pInTags "li" block+ skipMany nonItem+ orphans <- many (do notFollowedBy (pSatisfy (matchTagOpen "li" []))+ notFollowedBy (pSatisfy isTagClose)+ block) -- e.g. <ul>, see #9187+ return $ maybe id addId (lookup "id" attr) $ item <> mconcat orphans pCheckbox :: PandocMonad m => TagParser m Inlines pCheckbox = do@@ -358,12 +362,6 @@ return $ escapeSequence <> B.space --- | Parses a list item just like 'pListItem', but allows sublists outside of--- @li@ tags to be treated as items.-pListItem' :: PandocMonad m => TagParser m a -> TagParser m Blocks-pListItem' nonItem = (pListItem <|> pBulletList <|> pOrderedList)- <* skipMany nonItem- parseListStyleType :: Text -> ListNumberStyle parseListStyleType "lower-roman" = LowerRoman parseListStyleType "upper-roman" = UpperRoman@@ -404,7 +402,7 @@ _ <- manyTill (eFootnote <|> pBlank) (pCloses "ol") return mempty else do- items <- manyTill (pListItem' nonItem) (pCloses "ol")+ items <- manyTill (pListItem nonItem) (pCloses "ol") return $ B.orderedListWith (start, style, DefaultDelim) $ map (fixPlains True) items @@ -809,7 +807,8 @@ contents <- many (notFollowedBy (pCloses "svg") >> pAny) closet <- TagClose "svg" <$ (pCloses "svg" <|> eof) let rawText = T.strip $ renderTags' (opent : contents ++ [closet])- let svgData = "data:image/svg+xml;base64," <> encodeBase64 rawText+ let svgData = "data:image/svg+xml;base64," <>+ UTF8.toText (encode $ UTF8.fromText rawText) return $ B.imageWith (ident,cls,[]) svgData mempty mempty pCodeWithClass :: PandocMonad m => Text -> Text -> TagParser m Inlines
@@ -61,7 +61,8 @@ import Text.Pandoc.Readers.LaTeX.Macro (macroDef) import Text.Pandoc.Readers.LaTeX.Lang (inlineLanguageCommands, enquoteCommands,- babelLangToBCP47, setDefaultLanguage)+ babelLangToBCP47,+ setDefaultLanguage) import Text.Pandoc.Readers.LaTeX.SIunitx (siunitxCommands) import Text.Pandoc.Readers.LaTeX.Inline (acronymCommands, refCommands, nameCommands, charCommands,@@ -1045,8 +1046,24 @@ , ("togglefalse", braced >>= setToggle False) , ("iftoggle", try $ ifToggle >> block) , ("CSLReferences", braced >> braced >> env "CSLReferences" blocks)+ , ("otherlanguage", env "otherlanguage" otherlanguageEnv) ] +otherlanguageEnv :: PandocMonad m => LP m Blocks+otherlanguageEnv = do+ skipopts+ babelLang <- untokenize <$> braced+ case babelLangToBCP47 babelLang of+ Just lang -> divWith ("", [], [("lang", renderLang lang)]) <$> blocks+ Nothing -> blocks++langEnvironment :: PandocMonad m => Text -> LP m Blocks+langEnvironment name =+ case babelLangToBCP47 name of+ Just lang ->+ env name (divWith ("", [], [("lang", renderLang lang)]) <$> blocks)+ Nothing -> mzero -- fall through to raw environment+ filecontents :: PandocMonad m => LP m Blocks filecontents = try $ do controlSeq "begin"@@ -1064,6 +1081,7 @@ controlSeq "begin" name <- untokenize <$> braced M.findWithDefault mzero name environments <|>+ langEnvironment name <|> theoremEnvironment blocks opt name <|> if M.member name (inlineEnvironments :: M.Map Text (LP PandocPure Inlines))
@@ -11,7 +11,8 @@ , proof ) where-import Data.Maybe (fromMaybe)+import Data.Maybe (fromMaybe, mapMaybe, listToMaybe)+import Data.List (foldl') import Text.Pandoc.Walk (walk) import Text.Pandoc.Builder as B import qualified Data.Sequence as Seq@@ -140,6 +141,16 @@ M.insert name spec tmap } return mempty +extractLabelFromBlock :: Block -> Maybe Text+extractLabelFromBlock (Para inlines) = extractLabel Nothing inlines+ where+ extractLabel = foldl' go+ go :: Maybe Text -> Inline -> Maybe Text+ go (Just t) _ = Just t+ go Nothing (Span (_, _, attrs) _) = lookup "label" attrs+ go Nothing _ = Nothing+extractLabelFromBlock _ = Nothing+ theoremEnvironment :: PandocMonad m => LP m Blocks -> LP m Inlines -> Text -> LP m Blocks theoremEnvironment blocks opt name = do@@ -150,7 +161,7 @@ Just tspec -> do optTitle <- option mempty $ (\x -> space <> "(" <> x <> ")") <$> opt bs <- env name blocks- mblabel <- sLastLabel <$> getState+ let mblabel = listToMaybe $ mapMaybe extractLabelFromBlock (toList bs) number <- if theoremNumber tspec
@@ -406,7 +406,16 @@ return $ header lvl contents parseBlockQuote :: PandocMonad m => ManParser m Blocks-parseBlockQuote = blockQuote <$> continuation+parseBlockQuote = blockQuote <$>+ ( (mmacro "RS" *> (mconcat <$> manyTill parseBlock (endmacro "RE")))+ <|> parseIndentedParagraphs+ )+ where+ parseIndentedParagraphs = try $ do+ bareIP+ first <- parsePara <|> parseCodeBlock+ rest <- many $ try (memptyLine *> (parsePara <|> parseCodeBlock))+ pure (first <> mconcat rest) data ListType = Ordered ListAttributes | Bullet@@ -457,10 +466,8 @@ continuation :: PandocMonad m => ManParser m Blocks continuation =- mconcat <$> (mmacro "RS" *> manyTill parseBlock (endmacro "RE"))- <|> mconcat <$> many1 ( try (bareIP *> parsePara)- <|> try (bareIP *> parseCodeBlock)- )+ (mmacro "RS" *> (mconcat <$> manyTill parseBlock (endmacro "RE")))+ <|> try ((memptyLine <|> bareIP) *> (parsePara <|> parseCodeBlock)) definitionListItem :: PandocMonad m => ManParser m (Inlines, [Blocks])@@ -473,11 +480,10 @@ mmacro "TQ" parseInline skipMany memptyLine- inls <- option mempty parseInlines- skipMany memptyLine- continuations <- mconcat <$> many continuation+ firstBlock <- parseBlock+ otherBlocks <- mconcat <$> many continuation return ( mconcat (intersperse B.linebreak (term:moreterms))- , [para inls <> continuations])+ , [firstBlock <> otherBlocks]) parseDefinitionList :: PandocMonad m => ManParser m Blocks parseDefinitionList = definitionList <$> many1 definitionListItem
@@ -1928,6 +1928,7 @@ <|> try ((guardDisabled Ext_spaced_reference_links <|> spnl) >> reference) when (raw' == "") $ guardEnabled Ext_shortcut_reference_links+ !attr <- option nullAttr $ guardEnabled Ext_link_attributes >> attributes let !labIsRef = raw' == "" || raw' == "[]" let (exclam, rawsuffix) = case T.uncons raw of@@ -1956,11 +1957,11 @@ then do headerKeys <- asksF stateHeaderKeys case M.lookup key headerKeys of- Just ((src, tit), _) -> constructor nullAttr src tit <$> lab+ Just ((src, tit), _) -> constructor attr src tit <$> lab Nothing -> makeFallback else makeFallback- Just ((src,tit), attr) ->- constructor attr src tit <$> lab+ Just ((src,tit), defattr) ->+ constructor (combineAttr attr defattr) src tit <$> lab dropBrackets :: Text -> Text dropBrackets = dropRB . dropLB
@@ -245,7 +245,9 @@ parseAttr :: PandocMonad m => MWParser m (Text, Text) parseAttr = try $ do skipMany spaceChar- k <- many1Char letter+ kFirst <- letter+ kRest <- many (alphaNum <|> oneOf "_-:.")+ let k = T.pack (kFirst : kRest) skipMany spaceChar char '=' skipMany spaceChar
@@ -75,6 +75,12 @@ , styleTrace :: [Style] -- | Keeps track of the current depth in nested lists , currentListLevel :: ListLevel+ -- | Keeps track of the previous list start counters,+ -- so whenever a new list continues numbering,+ -- we know what number to start from.+ -- If list does not continue numbering, the counter+ -- is being reset.+ , listContinuationStartCounters :: M.Map ListLevel Int -- | Lists may provide their own style, but they don't have -- to. If they do not, the style of a parent list may be used -- or even a default list style from the paragraph style.@@ -92,7 +98,7 @@ deriving ( Show ) readerState :: Styles -> Media -> ReaderState-readerState styles media = ReaderState styles [] 0 Nothing M.empty media mempty+readerState styles media = ReaderState styles [] 0 M.empty Nothing M.empty media mempty -- pushStyle' :: Style -> ReaderState -> ReaderState@@ -103,12 +109,16 @@ popStyle' state = case styleTrace state of _:trace -> state { styleTrace = trace } _ -> state- -- modifyListLevel :: (ListLevel -> ListLevel) -> (ReaderState -> ReaderState) modifyListLevel f state = state { currentListLevel = f (currentListLevel state) } --+modifyListContinuationStartCounter :: ListLevel -> Int -> (ReaderState -> ReaderState)+modifyListContinuationStartCounter listLevel count state =+ state { listContinuationStartCounters = M.insert listLevel count (listContinuationStartCounters state) }++-- shiftListLevel :: ListLevel -> (ReaderState -> ReaderState) shiftListLevel diff = modifyListLevel (+ diff) @@ -199,6 +209,17 @@ getCurrentListLevel = getExtraState >>^ currentListLevel --+getListContinuationStartCounters :: ODTReaderSafe _x (M.Map ListLevel Int)+getListContinuationStartCounters = getExtraState >>^ listContinuationStartCounters+++--+getPreviousListStartCounter :: ODTReaderSafe ListLevel Int+getPreviousListStartCounter = proc listLevel -> do+ counts <- getListContinuationStartCounters -< ()+ returnA -< M.findWithDefault 0 listLevel counts++-- updateMediaWithResource :: ODTReaderSafe (FilePath, B.ByteString) (FilePath, B.ByteString) updateMediaWithResource = keepingTheValue ( (keepingTheValue getExtraState@@ -430,15 +451,15 @@ type ListConstructor = [Blocks] -> Blocks -getListConstructor :: ListLevelStyle -> ListConstructor-getListConstructor ListLevelStyle{..} =+getListConstructor :: ListLevelStyle -> Int -> ListConstructor+getListConstructor ListLevelStyle{..} startNum = case listLevelType of LltBullet -> bulletList LltImage -> bulletList LltNumbered -> let listNumberStyle = toListNumberStyle listItemFormat listNumberDelim = toListNumberDelim listItemPrefix listItemSuffix- in orderedListWith (listItemStart, listNumberStyle, listNumberDelim)+ in orderedListWith (startNum, listNumberStyle, listNumberDelim) where toListNumberStyle LinfNone = DefaultStyle toListNumberStyle LinfNumber = Decimal@@ -455,7 +476,6 @@ toListNumberDelim (Just "(") (Just ")") = TwoParens toListNumberDelim _ _ = DefaultDelim - -- | Determines which style to use for a list, which level to use of that -- style, and which type of list to create as a result of this information. -- Then prepares the state for eventual child lists and constructs the list from@@ -467,42 +487,62 @@ -- If anything goes wrong, a default ordered-list-constructor is used. constructList :: ODTReaderSafe x [Blocks] -> ODTReaderSafe x Blocks constructList reader = proc x -> do- modifyExtraState (shiftListLevel 1) -< ()- listLevel <- getCurrentListLevel -< ()- fStyleName <- findAttr NsText "style-name" -< ()+ modifyExtraState (shiftListLevel 1) -< ()+ listLevel <- getCurrentListLevel -< ()+ listContinuationStartCounter <- getPreviousListStartCounter -< listLevel+ fStyleName <- findAttr NsText "style-name" -< ()+ fContNumbering <- findAttr NsText "continue-numbering" -< ()+ listItemCount <- reader >>^ length -< x++ let continueNumbering = case fContNumbering of+ Right "true" -> True+ _ -> False++ let startNumForListLevelStyle = listStartingNumber continueNumbering listContinuationStartCounter+ let defaultOrderedListConstructor = constructOrderedList (startNumForListLevelStyle Nothing) listLevel listItemCount+ case fStyleName of Right styleName -> do fListStyle <- lookupListStyle -< styleName case fListStyle of Right listStyle -> do- fLLS <- arr (uncurry getListLevelStyle) -< (listLevel,listStyle)- case fLLS of+ fListLevelStyle <- arr (uncurry getListLevelStyle) -< (listLevel, listStyle)+ case fListLevelStyle of Just listLevelStyle -> do- oldListStyle <- switchCurrentListStyle -< Just listStyle- blocks <- constructListWith listLevelStyle -<< x- switchCurrentListStyle -< oldListStyle- returnA -< blocks- Nothing -> constructOrderedList -< x- Left _ -> constructOrderedList -< x+ let startNum = startNumForListLevelStyle $ Just listLevelStyle+ oldListStyle <- switchCurrentListStyle -< Just listStyle+ blocks <- constructListWith listLevelStyle startNum listLevel listItemCount -<< x+ switchCurrentListStyle -< oldListStyle+ returnA -< blocks+ Nothing -> defaultOrderedListConstructor -<< x+ Left _ -> defaultOrderedListConstructor -<< x Left _ -> do state <- getExtraState -< () mListStyle <- arr currentListStyle -< state case mListStyle of Just listStyle -> do- fLLS <- arr (uncurry getListLevelStyle) -< (listLevel,listStyle)- case fLLS of- Just listLevelStyle -> constructListWith listLevelStyle -<< x- Nothing -> constructOrderedList -< x- Nothing -> constructOrderedList -< x+ fListLevelStyle <- arr (uncurry getListLevelStyle) -< (listLevel, listStyle)+ case fListLevelStyle of+ Just listLevelStyle -> do+ let startNum = startNumForListLevelStyle $ Just listLevelStyle+ constructListWith listLevelStyle startNum listLevel listItemCount -<< x+ Nothing -> defaultOrderedListConstructor -<< x+ Nothing -> defaultOrderedListConstructor -<< x where- constructOrderedList =+ listStartingNumber continueNumbering listContinuationStartCounter mListLevelStyle+ | continueNumbering = listContinuationStartCounter+ | isJust mListLevelStyle = listItemStart (fromJust mListLevelStyle)+ | otherwise = 1+ constructOrderedList startNum listLevel listItemCount = reader >>> modifyExtraState (shiftListLevel (-1))- >>^ orderedList- constructListWith listLevelStyle =+ >>> modifyExtraState (modifyListContinuationStartCounter listLevel (startNum + listItemCount))+ >>^ orderedListWith (startNum, DefaultStyle, DefaultDelim)+ constructListWith listLevelStyle startNum listLevel listItemCount = reader- >>> getListConstructor listLevelStyle+ >>> getListConstructor listLevelStyle startNum ^>> modifyExtraState (shiftListLevel (-1))+ >>> modifyExtraState (modifyListContinuationStartCounter listLevel (startNum + listItemCount)) -------------------------------------------------------------------------------- -- Readers@@ -666,9 +706,7 @@ -- read_list :: BlockMatcher read_list = matchingElement NsText "list"--- $ withIncreasedListLevel $ constructList--- $ liftA bulletList $ matchChildContent' [ read_list_item , read_list_header ]
@@ -30,7 +30,7 @@ import Text.Pandoc.Error (PandocError(..)) import Text.Pandoc.Shared (tshow, blocksToInlines) import Control.Monad.Except (throwError)-import Control.Monad (MonadPlus (mplus), void, mzero)+import Control.Monad (MonadPlus (mplus), void, mzero, guard) import qualified Data.Foldable as F import qualified Data.Map as M import Data.Maybe (catMaybes, fromMaybe)@@ -46,7 +46,8 @@ import Text.TeXMath (writeTeX) import Text.TeXMath.Shared (getSpaceChars) import Text.Pandoc.Readers.Typst.Math (pMathMany)-import Text.Pandoc.Readers.Typst.Parsing (pTok, ignored, chunks, getField, P)+import Text.Pandoc.Readers.Typst.Parsing (pTok, ignored, chunks, getField, P,+ PState(..), defaultPState) import Typst.Methods (formatNumber, applyPureFunction) import Typst.Types @@ -68,10 +69,14 @@ currentUTCTime = getCurrentTime, lookupEnvVar = fmap (fmap T.unpack) . lookupEnv . T.pack, checkExistence = fileExists }- evaluateTypst ops inputName parsed >>=- either (throwError . PandocParseError . T.pack . show) pure >>=- runParserT pPandoc () inputName . F.toList >>=- either (throwError . PandocParseError . T.pack . show) pure+ res <- evaluateTypst ops inputName parsed+ case res of+ Left e -> throwError $ PandocParseError $ tshow e+ Right content -> do+ let labs = findLabels [content]+ runParserT pPandoc defaultPState{ sLabels = labs }+ inputName [content] >>=+ either (throwError . PandocParseError . T.pack . show) pure pBlockElt :: PandocMonad m => P m B.Blocks pBlockElt = try $ do@@ -98,16 +103,67 @@ | "math." `T.isPrefixOf` tname , tname /= "math.equation" -> B.math . writeTeX <$> pMathMany (Seq.singleton res)- Elt name@(Identifier tname) pos fields ->- case M.lookup name inlineHandlers of- Nothing -> do- ignored ("unknown inline element " <> tname <>- " at " <> tshow pos)- pure mempty- Just handler -> handler Nothing fields+ Elt name@(Identifier tname) pos fields -> do+ labs <- sLabels <$> getState+ labelTarget <- (do VLabel t <- getField "target" fields+ True <$ guard (t `elem` labs))+ <|> pure False+ if tname == "ref" && not labelTarget+ then do+ -- @foo is a citation unless it links to a lab in the doc:+ let targetToKey (Identifier "target") = Identifier "key"+ targetToKey k = k+ case M.lookup "cite" inlineHandlers of+ Nothing -> do+ ignored ("unknown inline element " <> tname <>+ " at " <> tshow pos)+ pure mempty+ Just handler -> handler Nothing (M.mapKeys targetToKey fields)+ else do+ case M.lookup name inlineHandlers of+ Nothing -> do+ ignored ("unknown inline element " <> tname <>+ " at " <> tshow pos)+ pure mempty+ Just handler -> handler Nothing fields pPandoc :: PandocMonad m => P m B.Pandoc-pPandoc = B.doc <$> pBlocks+pPandoc = do+ Elt "document" _ fields <- pTok isDocument+ bs <- getField "body" fields >>= pWithContents pBlocks+ pure $ B.doc bs+ -- The following alternative code would add metadata from the+ -- fields on the document element. It is commented out because+ -- the typst metadata doesn't print anything by default, in contrast+ -- to pandoc with its usual templates. Hence, with this code,+ -- converting a typst document might yield a double title, author, etc.+ --+ -- title <- (getField "title" fields >>= pWithContents pInlines) <|>+ -- pure mempty+ -- authors <- (getField "author" fields >>=+ -- mapM (pWithContents pInlines) . V.toList) <|>+ -- ((:[]) <$> (getField "author" fields >>=+ -- (\x -> guard (not (null x)) *>+ -- pWithContents pInlines x))) <|>+ -- pure []+ -- date <- (getField "date" fields >>= pWithContents pInlines) <|>+ -- pure mempty+ -- keywords <- (getField "keywords" fields >>=+ -- mapM (pWithContents pInlines) . V.toList)+ -- <|> pure []+ -- pure $+ -- (if title == mempty+ -- then id+ -- else B.setMeta "title" title) .+ -- (if null authors+ -- then id+ -- else B.setMeta "author" authors) .+ -- (if null date+ -- then id+ -- else B.setMeta "date" date) .+ -- (if null keywords+ -- then id+ -- else B.setMeta "keywords" keywords) $ B.doc bs pBlocks :: PandocMonad m => P m B.Blocks pBlocks = mconcat <$> many pBlock@@ -131,6 +187,10 @@ ) pure t +isDocument :: Content -> Bool+isDocument (Elt "document" _ _) = True+isDocument _ = False+ isBlock :: Content -> Bool isBlock (Elt "raw" _ fields) = M.lookup "block" fields == Just (VBoolean True) isBlock (Elt name _ _) = name `Set.member` blockKeys@@ -170,6 +230,14 @@ lev <- getField "level" fields <|> pure 1 B.headerWith (fromMaybe "" mbident,[],[]) lev <$> pWithContents pInlines body)+ ,("quote", \_ fields -> do+ getField "block" fields >>= guard+ body <- getField "body" fields >>= pWithContents pBlocks+ attribution <-+ ((\x -> B.para ("\x2104\xa0" <> x)) <$>+ (getField "attribution" fields >>= pWithContents pInlines))+ <|> pure mempty+ pure $ B.blockQuote $ body <> attribution) ,("list", \_ fields -> do children <- V.toList <$> getField "children" fields B.bulletList <$> mapM (pWithContents pBlocks) children)@@ -392,18 +460,20 @@ ,("footnote", \_ fields -> B.note <$> (getField "body" fields >>= pWithContents pBlocks)) ,("cite", \_ fields -> do- keys <- V.toList <$> getField "keys" fields- let toCitation key =+ VLabel key <- getField "key" fields+ (form :: Text) <- getField "form" fields <|> pure "normal"+ let citation = B.Citation { B.citationId = key, B.citationPrefix = mempty, B.citationSuffix = mempty,- B.citationMode = B.NormalCitation,+ B.citationMode = case form of+ "year" -> B.SuppressAuthor+ _ -> B.NormalCitation, B.citationNoteNum = 0, B.citationHash = 0 }- let citations = map toCitation keys- pure $ B.cite citations (B.text $ "[" <> T.intercalate "," keys <> "]"))+ pure $ B.cite [citation] (B.text $ "[" <> key <> "]")) ,("lower", \_ fields -> do body <- getField "text" fields walk (modString T.toLower) <$> pWithContents pInlines body)@@ -431,6 +501,10 @@ ,("underline", \_ fields -> do body <- getField "body" fields B.underline <$> pWithContents pInlines body)+ ,("quote", \_ fields -> do+ (getField "block" fields <|> pure False) >>= guard . not+ body <- getField "body" fields >>= pWithContents pInlines+ pure $ B.doubleQuoted body) ,("link", \_ fields -> do dest <- getField "dest" fields src <- case dest of@@ -488,6 +562,7 @@ alignment <- getField "alignment" fields B.spanWith ("", [], [("align", repr alignment)]) <$> (getField "body" fields >>= pWithContents pInlines))+ ,("sys.version", \_ _ -> pure $ B.text "typst-hs") ,("math.equation", \_ fields -> do body <- getField "body" fields display <- getField "block" fields@@ -496,7 +571,8 @@ pPara :: PandocMonad m => P m B.Blocks pPara =- B.para . B.trimInlines . mconcat <$> (many1 pInline <* optional pParBreak)+ B.para . B.trimInlines . collapseAdjacentCites . mconcat+ <$> (many1 pInline <* optional pParBreak) pParBreak :: PandocMonad m => P m () pParBreak =@@ -517,8 +593,27 @@ pure res pInlines :: PandocMonad m => P m B.Inlines-pInlines = mconcat <$> many pInline+pInlines =+ collapseAdjacentCites . mconcat <$> many pInline +collapseAdjacentCites :: B.Inlines -> B.Inlines+collapseAdjacentCites = B.fromList . foldr go [] . B.toList+ where+ go (Cite cs1 ils1) (Cite cs2 ils2 : xs) =+ Cite (cs1 ++ cs2) (ils1 <> ils2) : xs+ go (Cite cs1 ils1) (Space : Cite cs2 ils2 : xs) =+ Cite (cs1 ++ cs2) (ils1 <> ils2) : xs+ go x xs = x:xs+ modString :: (Text -> Text) -> B.Inline -> B.Inline modString f (B.Str t) = B.Str (f t) modString _ x = x++findLabels :: Seq.Seq Content -> [Text]+findLabels = foldr go []+ where+ go (Txt{}) = id+ go (Lab t) = (t :)+ go (Elt{ eltFields = fs }) = \ts -> foldr go' ts fs+ go' (VContent cs) = (findLabels cs ++)+ go' _ = id
@@ -5,6 +5,8 @@ module Text.Pandoc.Readers.Typst.Parsing ( P,+ PState(..),+ defaultPState, pTok, pWithContents, ignored,@@ -26,7 +28,17 @@ import Text.Pandoc.Class.PandocMonad ( PandocMonad, report ) import Text.Pandoc.Logging (LogMessage(..)) -type P m a = ParsecT [Content] () m a+newtype PState = PState+ { sLabels :: [Text]}+ deriving (Show)++defaultPState :: PState+defaultPState =+ PState+ { sLabels = [] }++type P m a = ParsecT [Content] PState m a+-- state tracks a list of labels in the document pTok :: PandocMonad m => (Content -> Bool) -> P m Content pTok f = tokenPrim show showPos match
@@ -34,6 +34,7 @@ , ('`', "\\[ga]") , ('^', "\\[ha]") , ('~', "\\[ti]")+ , ('-', "\\-") , ('\\', "\\[rs]") , ('@', "\\[at]") -- because we use @ as a table and math delimiter , ('\x2026', "\\&...") -- because u2026 doesn't render on tty
@@ -19,7 +19,7 @@ import Codec.Compression.GZip as Gzip import Control.Applicative ((<|>)) import Data.ByteString (ByteString)-import Data.ByteString.Base64 (encodeBase64)+import Data.ByteString.Base64 (encode) import qualified Data.ByteString.Char8 as B import qualified Data.ByteString.Lazy as L import qualified Data.Text as T@@ -52,7 +52,7 @@ makeDataURI (mime, raw) = if textual then "data:" <> mime' <> "," <> T.pack (escapeURIString isOk (toString raw))- else "data:" <> mime' <> ";base64," <> encodeBase64 raw+ else "data:" <> mime' <> ";base64," <> toText (encode raw) where textual = "text/" `T.isPrefixOf` mime mime' = if textual && T.any (== ';') mime then mime <> ";charset=utf-8"@@ -159,9 +159,14 @@ svgmap <- gets svgMap case M.lookup hash svgmap of Just (svgid, svgattrs) -> do- let attrs' = combineSvgAttrs svgattrs attrs+ let attrs' = [(k,v) | (k,v) <- combineSvgAttrs svgattrs attrs+ , k /= "id"+ , k /= "width"+ , k /= "height"] return $ TagOpen "svg" attrs' :- TagOpen "use" [("href", "#" <> svgid)] :+ TagOpen "use" [("href", "#" <> svgid),+ ("width", "100%"),+ ("height", "100%")] : TagClose "use" : TagClose "svg" : rest'@@ -172,10 +177,22 @@ let svgid = case lookup "id" attrs' of Just id' -> id' Nothing -> "svg_" <> hash- let attrs'' = [(k,v) | (k,v) <- attrs', k /= "id"]+ let attrs'' = ("id", svgid) :+ [(k,v) | (k,v) <- attrs', k /= "id"] modify $ \st -> st{ svgMap = M.insert hash (svgid, attrs'') (svgMap st) }- return $ TagOpen "svg" attrs'' : tags' ++ rest'+ let addIdPrefix ("id", x) = ("id", svgid <> "_" <> x)+ addIdPrefix (k, x)+ | k == "xlink:href" || k == "href" =+ case T.uncons x of+ Just ('#', x') -> (k, "#" <> svgid <> "_" <> x')+ _ -> (k, x)+ addIdPrefix kv = kv+ let ensureUniqueId (TagOpen tname ats) =+ TagOpen tname (map addIdPrefix ats)+ ensureUniqueId x = x+ return $ TagOpen "svg" attrs'' :+ map ensureUniqueId tags' ++ rest' _ -> return $ TagOpen tagname attrs : rest where processAttribute (x,y) = if isSourceAttribute tagname (x,y)
@@ -50,6 +50,7 @@ linesToPara, figureDiv, makeSections,+ combineAttr, uniqueIdent, inlineListToIdentifier, textToIdentifier,@@ -562,13 +563,15 @@ go (x:xs) = (x :) <$> go xs go [] = return [] - combineAttr :: Attr -> Attr -> Attr- combineAttr (id1, classes1, kvs1) (id2, classes2, kvs2) =- (if T.null id1 then id2 else id1,- nubOrd (classes1 ++ classes2),- foldr (\(k,v) kvs -> case lookup k kvs of- Nothing -> (k,v):kvs- Just _ -> kvs) mempty (kvs1 ++ kvs2))+-- | Combine two 'Attr'. Classes are concatenated. For the id and key-value+-- attributes, the first one takes precedence in case of duplicates.+combineAttr :: Attr -> Attr -> Attr+combineAttr (id1, classes1, kvs1) (id2, classes2, kvs2) =+ (if T.null id1 then id2 else id1,+ nubOrd (classes1 ++ classes2),+ foldr (\(k,v) kvs -> case lookup k kvs of+ Nothing -> (k,v):kvs+ Just _ -> kvs) kvs1 kvs2) headerLtEq :: Int -> Block -> Bool headerLtEq level (Header l _ _) = l <= level@@ -633,9 +636,13 @@ -- | Detect if a list is tight. isTightList :: [[Block]] -> Bool-isTightList = all (\item -> firstIsPlain item || null item)- where firstIsPlain (Plain _ : _) = True- firstIsPlain _ = False+isTightList = all isPlainItem+ where+ isPlainItem [] = True+ isPlainItem (Plain _ : _) = True+ isPlainItem [BulletList xs] = isTightList xs+ isPlainItem [OrderedList _ xs] = isTightList xs+ isPlainItem _ = False -- | Convert a list item containing tasklist syntax (e.g. @[x]@) -- to using @U+2610 BALLOT BOX@ or @U+2612 BALLOT BOX WITH X@.@@ -770,7 +777,8 @@ renderTags' :: [Tag T.Text] -> T.Text renderTags' = renderTagsOptions renderOptions{ optMinimize = matchTags ["hr", "br", "img",- "meta", "link", "col", "use"]+ "meta", "link", "col",+ "use", "path", "rect"] , optRawTag = matchTags ["script", "style"] } where matchTags tags = flip elem tags . T.toLower
@@ -354,7 +354,9 @@ case bs of (Div (_,["title"],_) ts : rest) -> (ts, rest) _ -> ([], bs)- admonitionTitle <- if null titleBs+ admonitionTitle <- if null titleBs ||+ -- If title matches class, omit+ (T.toLower (T.strip (stringify titleBs))) == l then return mempty else ("." <>) <$> blockListToAsciiDoc opts titleBs
@@ -307,10 +307,13 @@ | e <- zEntries refArchive , "word/media/" `isPrefixOf` eRelativePath e ] - let defaultnodes = [mknode "Default"- [("Extension","xml"),("ContentType","application/xml")] (),- mknode "Default"- [("Extension","rels"),("ContentType","application/vnd.openxmlformats-package.relationships+xml")] ()]+ let mkDefaultNode (ext, mt) =+ mknode "Default" [("Extension",ext),("ContentType",mt)] ()+ let defaultnodes = map mkDefaultNode+ [("xml", "application/xml"),+ ("rels", "application/vnd.openxmlformats-package.relationships+xml"),+ ("odttf",+ "application/vnd.openxmlformats-officedocument.obfuscatedFont")] let contentTypesDoc = mknode "Types" [("xmlns","http://schemas.openxmlformats.org/package/2006/content-types")] $ defaultnodes ++ overrides let contentTypesEntry = toEntry "[Content_Types].xml" epochtime $ renderXml contentTypesDoc@@ -538,6 +541,11 @@ docPropsAppEntry <- entryFromArchive refArchive "docProps/app.xml" themeEntry <- entryFromArchive refArchive "word/theme/theme1.xml" fontTableEntry <- entryFromArchive refArchive "word/fontTable.xml"+ let fontTableRelsEntries = maybeToList $+ findEntryByPath "word/_rels/fontTable.xml.rels" refArchive+ let fontEntries = [entry | entry <- zEntries refArchive+ , "word/fonts/" `isPrefixOf` (eRelativePath entry)]+ -- or parse fontTable.xml.rels? webSettingsEntry <- entryFromArchive refArchive "word/webSettings.xml" headerFooterEntries <- mapM (entryFromArchive refArchive . ("word/" ++)) $ mapMaybe (fmap T.unpack . extractTarget)@@ -557,7 +565,9 @@ commentsEntry : docPropsEntry : docPropsAppEntry : customPropsEntry : themeEntry :- fontTableEntry : settingsEntry : webSettingsEntry :+ settingsEntry : webSettingsEntry :+ fontTableEntry :+ fontTableRelsEntries ++ fontEntries ++ imageEntries ++ headerFooterEntries ++ miscRelEntries ++ otherMediaEntries return $ fromArchive archive@@ -930,7 +940,11 @@ report $ BlockNotRendered b return [] blockToOpenXML' opts (BlockQuote blocks) = do- p <- withParaPropM (pStyleM "Block Text")+ inNote <- asks envInNote+ p <- withParaPropM (pStyleM+ (if inNote+ then "Footnote Block Text"+ else "Block Text")) $ blocksToOpenXML opts blocks setFirstPara return p@@ -1351,9 +1365,10 @@ contents <- local (\env -> env{ envListLevel = -1 , envParaProperties = mempty- , envTextProperties = mempty })- (withParaPropM (pStyleM "Footnote Text") $ blocksToOpenXML opts- $ insertNoteRef bs)+ , envTextProperties = mempty+ , envInNote = True })+ (withParaPropM (pStyleM "Footnote Text") $+ blocksToOpenXML opts $ insertNoteRef bs) let newnote = mknode "w:footnote" [("w:id", notenum)] contents modify $ \s -> s{ stFootnotes = newnote : notes } return [ Elem $ mknode "w:r" []
@@ -81,6 +81,7 @@ , envListLevel :: Int , envListNumId :: Int , envInDel :: Bool+ , envInNote :: Bool , envChangesAuthor :: Text , envChangesDate :: Text , envPrintWidth :: Integer@@ -95,6 +96,7 @@ , envListLevel = -1 , envListNumId = 1 , envInDel = False+ , envInNote = False , envChangesAuthor = "unknown" , envChangesDate = "1969-12-31T19:00:00Z" , envPrintWidth = 1
@@ -21,16 +21,16 @@ import Control.Monad (zipWithM, liftM) import Control.Monad.Except (catchError, throwError) import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, modify)-import Data.ByteString.Base64 (encodeBase64)+import Data.ByteString.Base64 (encode) import Data.Char (isAscii, isControl, isSpace) import Data.Either (lefts, rights) import Data.List (intercalate) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL+import qualified Data.Text.Encoding as TE import Text.Pandoc.URI (urlEncode, isURI) import Text.Pandoc.XML.Light as X- import Text.Pandoc.Class.PandocMonad (PandocMonad, report) import qualified Text.Pandoc.Class.PandocMonad as P import Text.Pandoc.Definition@@ -237,7 +237,7 @@ report $ CouldNotDetermineMimeType link return Nothing Just mime -> return $ Just (mime,- encodeBase64 bs))+ TE.decodeUtf8 $ encode bs)) (\e -> do report $ CouldNotFetchResource link (tshow e) return Nothing)
@@ -544,14 +544,14 @@ ! customAttribute "epub:type" "footnotes" $ x | html5 , refLocation == EndOfDocument- , slideVariant == RevealJsSlides -- need a section for a new slide:+ -- Note: we need a section for a new slide in slide formats. = H5.section ! A5.id "footnotes" ! A5.class_ className ! A5.role "doc-endnotes" $ x | html5 = H5.aside ! prefixedId opts "footnotes" ! A5.class_ className- ! A5.role "doc-endnotes"+ ! A5.role "doc-footnote" $ x | slideVariant /= NoSlides = H.div ! A.class_ "footnotes slide" $ x | otherwise = H.div ! A.class_ className $ x
@@ -113,11 +113,13 @@ $ ensureReferenceHeader blocks' let splitBackBlocks b@(Div ("refs",_,_) _) (fs, bs) = (fs, b:bs) splitBackBlocks (Div (ident,("section":_),_)- [ Header lev (_,hcls,hkvs) hils- , (Div rattrs@("refs",_,_) rs)- ]) (fs, bs)- = (fs, Div rattrs- (Header lev (ident,hcls,hkvs) hils : rs) : bs)+ ( Header lev (_,hcls,hkvs) hils+ : (Div rattrs@("refs",_,_) rs)+ : rest+ )) (fs, bs)+ = (fs ++ rest,+ Div rattrs+ (Header lev (ident,hcls,hkvs) hils : rs) : bs) splitBackBlocks b (fs, bs) = (b:fs, bs) let (bodyblocks, backblocks) = foldr splitBackBlocks ([],[]) blocks let colwidth = if writerWrapText opts == WrapAuto
@@ -65,11 +65,43 @@ import Text.Pandoc.Writers.Shared import qualified Text.Pandoc.Writers.AnnotatedTable as Ann +-- Work around problems with notes inside emphasis (see #8982)+isolateBigNotes :: ([Inline] -> Inline) -> [Inline] -> [Inline]+isolateBigNotes constructor xs =+ let (before, after) = break isBigNote xs+ in case after of+ (noteInline:rest) -> constructor before :+ noteInline :+ isolateBigNotes constructor rest+ [] -> [constructor xs]++isBigNote :: Inline -> Bool+isBigNote (Note [Plain _]) = False -- A small note+isBigNote (Note [Para _]) = False -- A small note+isBigNote (Note _) = True -- A big note+isBigNote _ = False -- Not a note++raiseBigNotes :: [Inline] -> [Inline]+raiseBigNotes (Emph inner : xs)+ = isolateBigNotes Emph (raiseBigNotes inner) ++ raiseBigNotes xs+raiseBigNotes (Strong inner : xs)+ = isolateBigNotes Strong (raiseBigNotes inner) ++ raiseBigNotes xs+raiseBigNotes (Underline inner : xs)+ = isolateBigNotes Underline (raiseBigNotes inner) ++ raiseBigNotes xs+raiseBigNotes (Strikeout inner : xs)+ = isolateBigNotes Strikeout (raiseBigNotes inner) ++ raiseBigNotes xs+raiseBigNotes (x : xs) = x : raiseBigNotes xs+raiseBigNotes [] = []+ -- | Convert Pandoc to LaTeX. writeLaTeX :: PandocMonad m => WriterOptions -> Pandoc -> m Text-writeLaTeX options document =- evalStateT (pandocToLaTeX options document) $- startingState options+writeLaTeX options document = do+ let Any hasBigNotes =+ query (\il -> if isBigNote il then Any True else Any False) document+ let document' = if hasBigNotes+ then walk raiseBigNotes document+ else document+ evalStateT (pandocToLaTeX options document') $ startingState options -- | Convert Pandoc to LaTeX Beamer. writeBeamer :: PandocMonad m => WriterOptions -> Pandoc -> m Text
@@ -260,8 +260,14 @@ hypertarget :: PandocMonad m => Text -> LW m (Doc Text) hypertarget "" = return mempty hypertarget ident = do- label <- labelFor ident- return $ text "\\phantomsection" <> label+ inHeading <- gets stInHeading+ if inHeading+ then do -- see #9209 (these cases should be rare)+ ref <- literal <$> toLabel ident+ return $ text "\\protect\\hypertarget" <> braces ref <> "{}"+ else do+ label <- labelFor ident+ return $ text "\\phantomsection" <> label labelFor :: PandocMonad m => Text -> LW m (Doc Text) labelFor "" = return empty
@@ -368,39 +368,55 @@ => WriterOptions -- ^ Options -> Block -- ^ Block element -> MD m (Doc Text)-blockToMarkdown' opts (Div attrs ils) = do- contents <- blockListToMarkdown opts ils- variant <- asks envVariant- return $- case () of- _ | variant == Markua ->- case () of- () | "blurb" `elem` classes' -> prefixed "B> " contents <> blankline- | "aside" `elem` classes' -> prefixed "A> " contents <> blankline- -- necessary to enable option to create a bibliography- | (take 3 (T.unpack id')) == "ref" -> contents <> blankline- | otherwise -> contents <> blankline- | isEnabled Ext_fenced_divs opts &&- attrs /= nullAttr ->- let attrsToMd = if variant == Commonmark- then attrsToMarkdown opts- else classOrAttrsToMarkdown opts- in nowrap (literal ":::" <+> attrsToMd attrs) $$- chomp contents $$- literal ":::" <> blankline- | isEnabled Ext_native_divs opts ||- (isEnabled Ext_raw_html opts &&- (variant == Commonmark ||- isEnabled Ext_markdown_in_html_blocks opts)) ->- tagWithAttrs "div" attrs <> blankline <>- contents <> blankline <> "</div>" <> blankline- | isEnabled Ext_raw_html opts &&- isEnabled Ext_markdown_attribute opts ->- tagWithAttrs "div" attrs' <> blankline <>- contents <> blankline <> "</div>" <> blankline- | otherwise -> contents <> blankline- where (id',classes',kvs') = attrs- attrs' = (id',classes',("markdown","1"):kvs')+blockToMarkdown' opts (Div attrs@(_,classes,_) bs)+ | isEnabled Ext_alerts opts+ , (cls:_) <- classes+ , cls `elem` ["note", "tip", "warning", "caution", "important"]+ , (Div ("", ["title"], []) _ : Para ils : bs') <- bs+ = blockToMarkdown' opts $ BlockQuote $+ (Para (RawInline (Format "markdown") (case cls of+ "note" -> "[!NOTE]\n"+ "tip" -> "[!TIP]\n"+ "warning" -> "[!WARNING]\n"+ "caution" -> "[!CAUTION]\n"+ "important" -> "[!IMPORTANT]\n"+ _ -> "[!NOTE]\n") : ils)) : bs'+ | otherwise = do+ contents <- blockListToMarkdown opts bs+ variant <- asks envVariant+ return $+ case () of+ _ | variant == Markua ->+ case () of+ () | "blurb" `elem` classes'+ -> prefixed "B> " contents <> blankline+ | "aside" `elem` classes'+ -> prefixed "A> " contents <> blankline+ -- necessary to enable option to create a bibliography+ | (take 3 (T.unpack id')) == "ref"+ -> contents <> blankline+ | otherwise -> contents <> blankline+ | isEnabled Ext_fenced_divs opts &&+ attrs /= nullAttr ->+ let attrsToMd = if variant == Commonmark+ then attrsToMarkdown opts+ else classOrAttrsToMarkdown opts+ in nowrap (literal ":::" <+> attrsToMd attrs) $$+ chomp contents $$+ literal ":::" <> blankline+ | isEnabled Ext_native_divs opts ||+ (isEnabled Ext_raw_html opts &&+ (variant == Commonmark ||+ isEnabled Ext_markdown_in_html_blocks opts)) ->+ tagWithAttrs "div" attrs <> blankline <>+ contents <> blankline <> "</div>" <> blankline+ | isEnabled Ext_raw_html opts &&+ isEnabled Ext_markdown_attribute opts ->+ tagWithAttrs "div" attrs' <> blankline <>+ contents <> blankline <> "</div>" <> blankline+ | otherwise -> contents <> blankline+ where (id',classes',kvs') = attrs+ attrs' = (id',classes',("markdown","1"):kvs') blockToMarkdown' opts (Plain inlines) = do -- escape if para starts with ordered list marker variant <- asks envVariant
@@ -313,7 +313,7 @@ ".pdf" -> ".PDFPIC" _ -> "\\\" .IMAGE" return $ nowrap (literal cmd <+>- doubleQuotes (literal (escapeStr opts src)) <>+ doubleQuotes (literal src) <> sizeAttrs) $$ literal (".ce " <> tshow captlines) $$ capt $$
@@ -21,12 +21,12 @@ import Text.Pandoc.ImageSize (imageSize, sizeInPoints) import Text.Pandoc.Options ( WriterOptions(..), WrapOption(..), isEnabled ) import Data.Text (Text)-import Data.List (intercalate, intersperse)+import Data.List (intercalate) import qualified Data.Text as T import Control.Monad.State ( StateT, evalStateT, gets, modify ) import Text.Pandoc.Writers.Shared ( metaToContext, defField, resetField, toLegacyTable, lookupMetaString )-import Text.Pandoc.Shared (isTightList, orderedListMarkers)+import Text.Pandoc.Shared (isTightList, orderedListMarkers, tshow) import Text.Pandoc.Writers.Math (convertMath) import qualified Text.TeXMath as TM import Text.DocLayout@@ -76,6 +76,7 @@ Right l -> resetField "lang" (langLanguage l) . maybe id (resetField "region") (langRegion l))+ $ defField "toc-depth" (tshow $ writerTOCDepth options) $ (if writerNumberSections options then defField "numbering" ("1.1.1.1.1" :: Text) else id)@@ -123,7 +124,7 @@ return $ contents <> blankline BlockQuote blocks -> do contents <- blocksToTypst blocks- return $ "#blockquote[" $$ chomp contents $$ "]" $$ blankline+ return $ "#quote(block: true)[" $$ chomp contents $$ "]" $$ blankline HorizontalRule -> return $ blankline <> "#horizontalrule" <> blankline OrderedList attribs items -> do@@ -165,14 +166,15 @@ then return mempty else do captcontents <- inlinesToTypst caption- return $ "#align(center, " <> brackets captcontents <> ")"+ return $ ", caption: " <> brackets captcontents let lab = toLabel ident let formatalign AlignLeft = "left," formatalign AlignRight = "right," formatalign AlignCenter = "center," formatalign AlignDefault = "auto," let alignarray = parens $ mconcat $ map formatalign aligns- return $ "#align(center)[#table("+ return $ "#figure(" $$+ "align(center)[#table(" $$ nest 2 ( "columns: " <> text (show numcols) <> "," -- auto $$ "align: (col, row) => " <> alignarray <> ".at(col),"@@ -180,10 +182,10 @@ $$ hsep (map ((<>",") . brackets) headers') $$ vcat (map (\x -> brackets x <> ",") (concat rows')) )- $$ ")"+ $$ ")]" $$ capt'+ $$ ")" $$ lab- $$ "]" $$ blankline Figure (ident,_,_) (Caption _mbshort capt) blocks -> do caption <- blocksToTypst capt@@ -266,11 +268,14 @@ return $ q <> contents <> q Cite citations inlines -> do opts <- gets stOptions+ let toCite cite = do+ suppl <- case citationSuffix cite of+ [] -> pure mempty+ suff -> brackets <$> inlinesToTypst suff+ pure $ "#cite" <> parens (toLabel (citationId cite)) <> suppl if isEnabled Ext_citations opts- then return $ -- Note: this loses locators, prefix, suffix- "#cite" <> parens- (mconcat $ intersperse ", " $- map (doubleQuoted . citationId) citations)+ -- Note: this loses prefix+ then mconcat <$> mapM toCite citations else inlinesToTypst inlines Link _attrs inlines (src,_tit) -> do contents <- inlinesToTypst inlines@@ -285,10 +290,7 @@ opts <- gets stOptions let mbHeight = lookup "height" kvs let mdWidth = lookup "width" kvs- let coreImage = "image" <>- parens (doubleQuoted src <>- maybe mempty (\w -> ", width: " <> literal w) mdWidth <>- maybe mempty (\h -> ", height: " <> literal h) mbHeight)+ let coreImage = "image" <> parens (doubleQuoted src) -- see #9104; we need a box or the image is treated as block-level: case (mdWidth, mbHeight) of (Nothing, Nothing) -> do
@@ -235,6 +235,10 @@ "collapse overlapping targets (anchor spans)" "docx/overlapping_targets.docx" "docx/overlapping_targets.native"+ , testCompare+ "text in shape format"+ "docx/text_in_shape_format.docx"+ "docx/text_in_shape_format.native" ] , testGroup "blocks" [ testCompare
@@ -169,6 +169,8 @@ , "imageIndex" , "imageWithCaption" , "inlinedCode"+ , "listContinueNumbering"+ , "listContinueNumbering2" , "orderedListMixed" , "orderedListRoman" , "orderedListSimple"
@@ -86,6 +86,74 @@ , "backtick" =: code "`nu?`" =?> "\\texttt{\\textasciigrave{}nu?\\textasciigrave{}}" ]+ , testGroup "inline note"+ [ "Big note in emph" =:+ emph (str "This sentence"+ <> note (para (str "paragraph1")+ <> para (str "paragraph2"))+ <> str " has footnote.")+ =?>+ "\\emph{This sentence}\\footnote{paragraph1\n\n paragraph2}"+ <> "\\emph{ has footnote.}"+ , "Big note in strong" =:+ strong (str "This sentence"+ <> note (para (str "paragraph1")+ <> para (str "paragraph2"))+ <> str " has footnote.")+ =?>+ "\\textbf{This sentence}\\footnote{paragraph1\n\n paragraph2}"+ <> "\\textbf{ has footnote.}"++ , "Big note in underline" =:+ underline (str "This sentence"+ <> note (para (str "paragraph1")+ <> para (str "paragraph2"))+ <> str " has footnote.")+ =?>+ "\\ul{This sentence}\\footnote{paragraph1\n\n paragraph2}"+ <> "\\ul{ has footnote.}"++ , "Big note in strikeout" =:+ strikeout (str "This sentence"+ <> note (para (str "paragraph1")+ <> para (str "paragraph2"))+ <> str " has footnote.")+ =?>+ "\\st{This sentence}\\footnote{paragraph1\n\n paragraph2}"+ <> "\\st{ has footnote.}"++ , "Small note in emph" =:+ emph (str "This sentence"+ <> note (para (str "paragraph"))+ <> str " has footnote.")+ =?>+ "\\emph{This sentence\\footnote{paragraph} has footnote.}"++ , "Big note nested in emph and strong" =:+ emph (str "This "+ <> strong (str "nested sentence "+ <> note (para (str "paragraph1")+ <> para (str "paragraph2"))+ <> str "has ")+ <> str "footnote."+ )+ =?>+ "\\emph{This \\textbf{nested sentence }}\\footnote{paragraph1\n\n"+ <> " paragraph2}\\emph{\\textbf{has }footnote.}"++ , "Two Big notes in emph" =:+ emph (str "This sentence"+ <> note (para (str "1-paragraph1")+ <> para (str "1-paragraph2"))+ <> str " has"+ <> note (para (str "2-paragraph1")+ <> para (str "2-paragraph2"))+ <> str " footnote.")+ =?>+ "\\emph{This sentence}\\footnote{1-paragraph1\n\n 1-paragraph2}"+ <> "\\emph{ has}\\footnote{2-paragraph1\n\n 2-paragraph2}"+ <> "\\emph{ footnote.}"+ ] , testGroup "writer options" [ testGroup "top-level division" $ let
@@ -4,12 +4,12 @@ ^D <p>This.<a href="#foofn1" class="footnote-ref" id="foofnref1" role="doc-noteref"><sup>1</sup></a></p>-<aside id="foofootnotes" class="footnotes footnotes-end-of-document"+<section id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes"> <hr /> <ol> <li id="foofn1"><p>Has a footnote.<a href="#foofnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li> </ol>-</aside>+</section> ```
@@ -4,6 +4,6 @@ : Write output to *OUTFILE* instead of `stdout`(3) ^D .TP-\f[CR]-o\f[R], \f[CR]--output=\f[R]\f[I]OUTFILE\f[R]+\f[CR]\-o\f[R], \f[CR]\-\-output=\f[R]\f[I]OUTFILE\f[R] Write output to \f[I]OUTFILE\f[R] instead of \f[CR]stdout\f[R](3) ```
@@ -8,7 +8,7 @@ ^D <p>Test.<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a></p>-<aside id="footnotes" class="footnotes footnotes-end-of-document"+<section id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes"> <hr /> <ol>@@ -19,5 +19,5 @@ </figure> <a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></li> </ol>-</aside>+</section> ```
@@ -12,12 +12,9 @@ </ul> ^D - L1- - L2--- - L3.1+ - L3.1 - L3.2- - L4 ``` @@ -34,10 +31,8 @@ </ol> ^D 1. L1- 2. L2--3. 1. L3.1+ 1. L3.1 2. L3.2 ``` @@ -54,9 +49,7 @@ </ul> ^D - L1- - L2--- 1. L3.1+ 1. L3.1 2. L3.2 ```
@@ -0,0 +1,45 @@++```+% pandoc -f latex -t native+\documentclass{amsart}+\newtheorem{theorem}{Theorem}+\begin{document}+\begin{theorem}\label{thm}+\begin{enumerate}+\item \label{item1}text1+\item \label{item2}text2+\item text3+\end{enumerate}+\end{theorem}+\end{document}+^D+[ Div+ ( "thm" , [ "theorem" ] , [] )+ [ Para+ [ Strong [ Str "Theorem" , Space , Str "1" ]+ , Str "."+ , Space+ , Space+ , Emph []+ ]+ , OrderedList+ ( 1 , DefaultStyle , DefaultDelim )+ [ [ Para+ [ Emph+ [ Span ( "item1" , [] , [ ( "label" , "item1" ) ] ) []+ , Str "text1"+ ]+ ]+ ]+ , [ Para+ [ Emph+ [ Span ( "item2" , [] , [ ( "label" , "item2" ) ] ) []+ , Str "text2"+ ]+ ]+ ]+ , [ Para [ Emph [ Str "text3" ] ] ]+ ]+ ]+]+```
@@ -3,8 +3,8 @@   ^D-<p><svg alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve" width="480" height="150"><use href="#svg_7868854ffb8f30209cd0" /></svg> <svg alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve" width="480" height="150">- <path d="M 0 35.5 L 6.5 22.5 L 16 37 L 23 24 L 34.8 43.7 L 42.5 30 L 50.3 47 L 59.7 27.7 L 69 47 L 85 17.7 L 98.3 39 L 113 9.7 L 127.7 42.3 L 136.3 23.7 L 147 44.3 L 158.3 20.3 L 170.3 40.3 L 177.7 25.7 L 189.7 43 L 199.7 21 L 207.7 35 L 219 11 L 233 37 L 240.3 23.7 L 251 43 L 263 18.3 L 272.7 33.3 L 283 10 L 295 32.3 L 301.3 23 L 311.7 37 L 323.7 7.7 L 339.3 39 L 346.3 25.7 L 356.3 42.3 L 369.7 15 L 376.3 25.7 L 384 9 L 393 28.3 L 400.3 19 L 411.7 38.3 L 421 21 L 434.3 43 L 445 25 L 453 36.3 L 464.3 18.3 L 476.2 40.3 L 480 33.5 L 480 215 L 0 215 L 0 35.5 Z" fill="#175720"></path>+<p><svg alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve"><use href="#svg_7868854ffb8f30209cd0" width="100%" height="100%" /></svg> <svg id="svg_7868854ffb8f30209cd0" alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve" width="480" height="150">+ <path d="M 0 35.5 L 6.5 22.5 L 16 37 L 23 24 L 34.8 43.7 L 42.5 30 L 50.3 47 L 59.7 27.7 L 69 47 L 85 17.7 L 98.3 39 L 113 9.7 L 127.7 42.3 L 136.3 23.7 L 147 44.3 L 158.3 20.3 L 170.3 40.3 L 177.7 25.7 L 189.7 43 L 199.7 21 L 207.7 35 L 219 11 L 233 37 L 240.3 23.7 L 251 43 L 263 18.3 L 272.7 33.3 L 283 10 L 295 32.3 L 301.3 23 L 311.7 37 L 323.7 7.7 L 339.3 39 L 346.3 25.7 L 356.3 42.3 L 369.7 15 L 376.3 25.7 L 384 9 L 393 28.3 L 400.3 19 L 411.7 38.3 L 421 21 L 434.3 43 L 445 25 L 453 36.3 L 464.3 18.3 L 476.2 40.3 L 480 33.5 L 480 215 L 0 215 L 0 35.5 Z" fill="#175720" /> </svg></p> ``` @@ -13,7 +13,7 @@  {#foo} ^D-<p><svg alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve" width="480" height="150"><use href="#foo" /></svg> <svg alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve" width="480" height="150">- <path d="M 0 35.5 L 6.5 22.5 L 16 37 L 23 24 L 34.8 43.7 L 42.5 30 L 50.3 47 L 59.7 27.7 L 69 47 L 85 17.7 L 98.3 39 L 113 9.7 L 127.7 42.3 L 136.3 23.7 L 147 44.3 L 158.3 20.3 L 170.3 40.3 L 177.7 25.7 L 189.7 43 L 199.7 21 L 207.7 35 L 219 11 L 233 37 L 240.3 23.7 L 251 43 L 263 18.3 L 272.7 33.3 L 283 10 L 295 32.3 L 301.3 23 L 311.7 37 L 323.7 7.7 L 339.3 39 L 346.3 25.7 L 356.3 42.3 L 369.7 15 L 376.3 25.7 L 384 9 L 393 28.3 L 400.3 19 L 411.7 38.3 L 421 21 L 434.3 43 L 445 25 L 453 36.3 L 464.3 18.3 L 476.2 40.3 L 480 33.5 L 480 215 L 0 215 L 0 35.5 Z" fill="#175720"></path>+<p><svg alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve"><use href="#foo" width="100%" height="100%" /></svg> <svg id="foo" alt="minimal" viewBox="-.333 -.333 480 150" style="background-color:#ffffff00" xml:space="preserve" width="480" height="150">+ <path d="M 0 35.5 L 6.5 22.5 L 16 37 L 23 24 L 34.8 43.7 L 42.5 30 L 50.3 47 L 59.7 27.7 L 69 47 L 85 17.7 L 98.3 39 L 113 9.7 L 127.7 42.3 L 136.3 23.7 L 147 44.3 L 158.3 20.3 L 170.3 40.3 L 177.7 25.7 L 189.7 43 L 199.7 21 L 207.7 35 L 219 11 L 233 37 L 240.3 23.7 L 251 43 L 263 18.3 L 272.7 33.3 L 283 10 L 295 32.3 L 301.3 23 L 311.7 37 L 323.7 7.7 L 339.3 39 L 346.3 25.7 L 356.3 42.3 L 369.7 15 L 376.3 25.7 L 384 9 L 393 28.3 L 400.3 19 L 411.7 38.3 L 421 21 L 434.3 43 L 445 25 L 453 36.3 L 464.3 18.3 L 476.2 40.3 L 480 33.5 L 480 215 L 0 215 L 0 35.5 Z" fill="#175720" /> </svg></p> ```
@@ -0,0 +1,65 @@+```+% pandoc -f markdown -t native+[link][link contents]{target="_blank"}+[link2](https://example.com){target="_blank"}++[link contents]: https://example.com+^D+[ Para+ [ Link+ ( "" , [] , [ ( "target" , "_blank" ) ] )+ [ Str "link" ]+ ( "https://example.com" , "" )+ , SoftBreak+ , Link+ ( "" , [] , [ ( "target" , "_blank" ) ] )+ [ Str "link2" ]+ ( "https://example.com" , "" )+ ]+]++```++```+% pandoc -f markdown -t native+[link][link contents]{#id1 target="_blank"}+[link2](https://example.com){target="_blank"}++[link contents]: https://example.com {#id2 target="_nonblank"}+^D+[ Para+ [ Link+ ( "id1" , [] , [ ( "target" , "_blank" ) ] )+ [ Str "link" ]+ ( "https://example.com" , "" )+ , SoftBreak+ , Link+ ( "" , [] , [ ( "target" , "_blank" ) ] )+ [ Str "link2" ]+ ( "https://example.com" , "" )+ ]+]++```++```+% pandoc -f markdown -t native+[link][link contents]{target="_blank"}+[link2](https://example.com){target="_blank"}++[link contents]: https://example.com {.foo}+^D+[ Para+ [ Link+ ( "" , [ "foo" ] , [ ( "target" , "_blank" ) ] )+ [ Str "link" ]+ ( "https://example.com" , "" )+ , SoftBreak+ , Link+ ( "" , [] , [ ( "target" , "_blank" ) ] )+ [ Str "link2" ]+ ( "https://example.com" , "" )+ ]+]++```
@@ -0,0 +1,7 @@+```+% pandoc -t native+$a+%+b$+^D+[ Para [ Math InlineMath "a+%\nb" ] ]+```
@@ -0,0 +1,18 @@+```+% pandoc -f man -t markdown+.TH "EXAMPLE" "1"+.SH "OPTIONS"+.TP 8n+\fB\-\-help\fR+This is line one.+.sp+This is line two.+^D+# OPTIONS++**\--help**++: This is line one.++ This is line two.+```
@@ -0,0 +1,62 @@+```+% pandoc -f latex -t native+\begin{otherlanguage}{french}+Bonjour.+\end{otherlanguage}+^D+[ Div+ ( "" , [] , [ ( "lang" , "fr" ) ] )+ [ Para [ Str "Bonjour." ] ]+]+```++```+% pandoc -f latex -t native+\begin{otherlanguage*}{french}+Bonjour.+\end{otherlanguage*}+^D+[ Div+ ( "" , [ "otherlanguage*" ] , [] )+ [ Para+ [ Span ( "" , [] , [] ) [ Str "french" ]+ , SoftBreak+ , Str "Bonjour."+ ]+ ]+]+```++```+% pandoc -f latex -t native+\textfrench{Bonjour}+^D+[ Para+ [ Span ( "" , [] , [ ( "lang" , "fr" ) ] ) [ Str "Bonjour" ]+ ]+]+```++```+% pandoc -f latex -t native+\foreignlanguage{swissgerman}{Guten tag}+^D+[ Para+ [ Span+ ( "" , [] , [ ( "lang" , "de-CH-1901" ) ] )+ [ Str "Guten" , Space , Str "tag" ]+ ]+]+```++```+% pandoc -f latex -t native+\begin{french}+Bonjour.+\end{french}+^D+[ Div+ ( "" , [] , [ ( "lang" , "fr" ) ] )+ [ Para [ Str "Bonjour." ] ]+]+```
@@ -0,0 +1,6 @@+```+% pandoc -t latex+## [Section]{#Section3}+^D+\subsection{\texorpdfstring{\protect\hypertarget{Section3}{}{Section}}{Section}}\label{section}+```
@@ -0,0 +1,55 @@+```+% pandoc -f rst -t gfm+.. note::+ This is my note.+^D+> [!NOTE]+> This is my note.+```++```+% pandoc -f gfm -t rst+> [!WARNING]+> Be careful!+^D+.. warning::++ Be careful!+```++```+% pandoc -f gfm -t asciidoc+> [!TIP]+> A tip.+^D+[TIP]+====+A tip.+====+```++```+% pandoc -f gfm -t docbook+> [!TIP]+> A tip.+^D+<tip>+ <title>Tip</title>+ <para>+ A tip.+ </para>+</tip>+```++```+% pandoc -f docbook -t gfm+<tip>+ <title>Tip</title>+ <para>+ A tip.+ </para>+</tip>+^D+> [!TIP]+> A tip.+```
@@ -10,6 +10,7 @@ 2. list ^D \begin{description}+\tightlist \item[Definition] \begin{enumerate} \def\labelenumi{\arabic{enumi}.}@@ -53,6 +54,7 @@ - list ^D \begin{description}+\tightlist \item[Definition] \begin{itemize} \tightlist
binary file changed (10062 → 10096 bytes)
binary file changed (9874 → 9911 bytes)
binary file changed (10212 → 10249 bytes)
binary file changed (9973 → 10014 bytes)
binary file changed (10602 → 10643 bytes)
binary file changed (12368 → 12388 bytes)
binary file changed (9874 → 9911 bytes)
binary file changed (9880 → 9917 bytes)
binary file changed (10364 → 10402 bytes)
binary file changed (10013 → 10050 bytes)
binary file changed (26757 → 26792 bytes)
binary file changed (9813 → 9850 bytes)
binary file changed (9993 → 10030 bytes)
binary file changed (26755 → 26790 bytes)
binary file changed (10035 → 10072 bytes)
binary file changed (10206 → 10243 bytes)
binary file changed (10272 → 10309 bytes)
binary file changed (10068 → 10105 bytes)
binary file changed (9921 → 9958 bytes)
binary file changed (10150 → 10187 bytes)
binary file changed (10066 → 10103 bytes)
binary file changed (10206 → 10243 bytes)
binary file changed (9982 → 10019 bytes)
binary file changed (9914 → 9951 bytes)
binary file changed (10048 → 10085 bytes)
binary file changed (9892 → 9940 bytes)
binary file changed (10210 → 10259 bytes)
binary file changed (10249 → 10286 bytes)
binary file changed (10251 → 10301 bytes)
binary file changed (9899 → 9936 bytes)
binary file changed (9857 → 9894 bytes)
binary file changed (9840 → 9877 bytes)
binary file changed (9874 → 9911 bytes)
binary file changed (9986 → 10023 bytes)
binary file changed (9799 → 9836 bytes)
binary file changed (9846 → 9883 bytes)
binary file changed (absent → 42504 bytes)
@@ -0,0 +1,33 @@+[ Para+ [ Str "Last"+ , Space+ , Str "update:"+ , Space+ , Str "May"+ , Space+ , Str "1,"+ , Space+ , Str "2017"+ ]+, Para+ [ Str "U"+ , Str "sing"+ , Space+ , Str "Microsoft"+ , Space+ , Str "Word"+ , Space+ , Str "2007/2010"+ , LineBreak+ , Str "for"+ , Space+ , Str "Writing"+ , Space+ , Str "Technical"+ , Space+ , Str "Documents"+ ]+, Para [ Str "Valter" , Space , Str "Kiisk" ]+, Para [ Str "Institute" , Space , Str "of" , Space , Str "Physics," , Space , Str "University" , Space , Str "of" , Space , Str "Tartu" ]+, Para []+]
@@ -81,7 +81,7 @@ \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi-\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}+\usepackage{bookmark} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{
@@ -48,7 +48,7 @@ \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi-\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}+\usepackage{bookmark} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{
@@ -0,0 +1,89 @@+[ OrderedList+ ( 1 , Decimal , Period )+ [ [ Plain+ [ Str "Some" , Space , Str "text" , Space , Str "(1.)" ]+ ]+ ]+, Para []+, Para+ [ Str "Some"+ , Space+ , Str "text"+ , Space+ , Str "in"+ , Space+ , Str "between."+ ]+, Para []+, OrderedList+ ( 2 , Decimal , Period )+ [ [ Plain+ [ Str "Some" , Space , Str "text" , Space , Str "(2.)" ]+ ]+ , [ Plain+ [ Str "Some" , Space , Str "text" , Space , Str "(3.)" ]+ ]+ ]+, Para []+, Para+ [ Str "Some"+ , Space+ , Str "text"+ , Space+ , Str "in"+ , Space+ , Str "between."+ ]+, Para []+, OrderedList+ ( 4 , Decimal , Period )+ [ [ Plain+ [ Str "Some" , Space , Str "text" , Space , Str "(4.)" ]+ ]+ ]+, Para []+, Para+ [ Str "Some"+ , Space+ , Str "text"+ , Space+ , Str "before"+ , Space+ , Str "starting"+ , Space+ , Str "new"+ , Space+ , Str "list"+ , Space+ , Str "from"+ , Space+ , Str "1."+ ]+, Para []+, OrderedList+ ( 1 , Decimal , Period )+ [ [ Plain+ [ Str "Some" , Space , Str "text" , Space , Str "(1.)" ]+ ]+ ]+, Para []+, Para+ [ Str "Some"+ , Space+ , Str "text"+ , Space+ , Str "in"+ , Space+ , Str "between."+ ]+, Para []+, OrderedList+ ( 2 , Decimal , Period )+ [ [ Plain+ [ Str "Some" , Space , Str "text" , Space , Str "(2.)" ]+ ]+ , [ Plain+ [ Str "Some" , Space , Str "text" , Space , Str "(3.)" ]+ ]+ ]+]
@@ -0,0 +1,107 @@+[ OrderedList+ ( 1 , Decimal , Period )+ [ [ BlockQuote [ Para [ Str "Top" , Space , Str "one" ] ]+ , OrderedList+ ( 1 , LowerAlpha , Period )+ [ [ BlockQuote+ [ Para+ [ Str "Sub"+ , Space+ , Str "item"+ , Space+ , Str "1.a"+ ]+ ]+ ]+ , [ BlockQuote+ [ Para+ [ Str "Sub"+ , Space+ , Str "item"+ , Space+ , Str "1.b"+ ]+ ]+ ]+ ]+ ]+ ]+, Para []+, Para+ [ Str "Some"+ , Space+ , Str "text"+ , Space+ , Str "in"+ , Space+ , Str "between."+ ]+, Para []+, OrderedList+ ( 2 , Decimal , Period )+ [ [ BlockQuote [ Para [ Str "Top" , Space , Str "two" ] ]+ , OrderedList+ ( 1 , LowerAlpha , Period )+ [ [ BlockQuote+ [ Para+ [ Str "Sub"+ , Space+ , Str "item"+ , Space+ , Str "2.a"+ ]+ ]+ ]+ , [ BlockQuote+ [ Para+ [ Str "Sub"+ , Space+ , Str "item"+ , Space+ , Str "2.b"+ ]+ ]+ ]+ ]+ ]+ ]+, Para []+, Para+ [ Str "Some"+ , Space+ , Str "text"+ , Space+ , Str "in"+ , Space+ , Str "between."+ ]+, Para []+, OrderedList+ ( 3 , Decimal , Period )+ [ [ BlockQuote [ Para [ Str "Top" , Space , Str "three" ] ]+ , OrderedList+ ( 1 , LowerAlpha , Period )+ [ [ BlockQuote+ [ Para+ [ Str "Sub"+ , Space+ , Str "item"+ , Space+ , Str "3.a"+ ]+ ]+ ]+ , [ BlockQuote+ [ Para+ [ Str "Sub"+ , Space+ , Str "item"+ , Space+ , Str "3.b"+ ]+ ]+ ]+ ]+ ]+ ]+]
binary file changed (absent → 12263 bytes)
binary file changed (absent → 9300 bytes)
@@ -1,6 +1,7 @@ Simple table with caption: -#align(center)[#table(+#figure(+align(center)[#table( columns: 4, align: (col, row) => (right,left,center,auto,).at(col), inset: 6pt,@@ -17,13 +18,14 @@ [1], [1], [1],+)]+, caption: [Demonstration of simple table syntax.] )-#align(center, [Demonstration of simple table syntax.])-] Simple table without caption: -#align(center)[#table(+#figure(+align(center)[#table( columns: 4, align: (col, row) => (right,left,center,auto,).at(col), inset: 6pt,@@ -40,12 +42,13 @@ [1], [1], [1],+)] )-] Simple table indented two spaces: -#align(center)[#table(+#figure(+align(center)[#table( columns: 4, align: (col, row) => (right,left,center,auto,).at(col), inset: 6pt,@@ -62,13 +65,14 @@ [1], [1], [1],+)]+, caption: [Demonstration of simple table syntax.] )-#align(center, [Demonstration of simple table syntax.])-] Multiline table with caption: -#align(center)[#table(+#figure(+align(center)[#table( columns: 4, align: (col, row) => (center,left,right,left,).at(col), inset: 6pt,@@ -81,13 +85,14 @@ [row], [5.0], [Here’s another one. Note the blank line between rows.],+)]+, caption: [Here’s the caption. It may span multiple lines.] )-#align(center, [Here’s the caption. It may span multiple lines.])-] Multiline table without caption: -#align(center)[#table(+#figure(+align(center)[#table( columns: 4, align: (col, row) => (center,left,right,left,).at(col), inset: 6pt,@@ -100,12 +105,13 @@ [row], [5.0], [Here’s another one. Note the blank line between rows.],+)] )-] Table without column headers: -#align(center)[#table(+#figure(+align(center)[#table( columns: 4, align: (col, row) => (right,left,center,right,).at(col), inset: 6pt,@@ -121,12 +127,13 @@ [1], [1], [1],+)] )-] Multiline table without column headers: -#align(center)[#table(+#figure(+align(center)[#table( columns: 4, align: (col, row) => (center,left,right,auto,).at(col), inset: 6pt,@@ -138,5 +145,5 @@ [row], [5.0], [Here’s another one. Note the blank line between rows.],+)] )-]
@@ -522,8 +522,7 @@ - $p$-Tree - Here's some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$-- Here's one that has a line break in it: $\alpha + \omega \times-x^2$. +- Here's one that has a line break in it: $\alpha + \omega \times x^2$. These shouldn't be math:
@@ -740,7 +740,7 @@ role="doc-noteref"><sup>5</sup></a></li> </ol> <p>This paragraph should not be part of the note, as it is not indented.</p>-<aside id="footnotes" class="footnotes footnotes-end-of-document"+<section id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes"> <hr /> <ol>@@ -763,6 +763,6 @@ <li id="fn5"><p>In list.<a href="#fnref5" class="footnote-back" role="doc-backlink">↩︎</a></p></li> </ol>-</aside>+</section> </body> </html>
@@ -63,7 +63,7 @@ \ifLuaTeX \usepackage{selnolig} % disable illegal ligatures \fi-\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}+\usepackage{bookmark} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \VerbatimFootnotes % allow verbatim text in footnotes
@@ -23,7 +23,7 @@ In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item.-Because a hard-wrapped line in the middle of a paragraph looked like a list+Because a hard\-wrapped line in the middle of a paragraph looked like a list item. .PP Here\[cq]s one with a bullet.@@ -37,7 +37,7 @@ .PP * * * * * .SH Block Quotes-E-mail style:+E\-mail style: .RS .PP This is a block quote.@@ -79,7 +79,7 @@ Code: .IP .EX----- (should be four hyphens)+\-\-\-\- (should be four hyphens) sub status { print \[dq]working\[dq];@@ -430,7 +430,7 @@ Code block: .IP .EX-<!-- Comment -->+<!\-\- Comment \-\-> .EE .PP Just plain comment, with trailing spaces on the line:@@ -507,11 +507,11 @@ .IP \[bu] 2 223 .IP \[bu] 2-\f[I]p\f[R]-Tree+\f[I]p\f[R]\-Tree .IP \[bu] 2 Here\[cq]s some display math: .RS-$$\[rs]frac{d}{dx}f(x)=\[rs]lim_{h\[rs]to 0}\[rs]frac{f(x+h)-f(x)}{h}$$+$$\[rs]frac{d}{dx}f(x)=\[rs]lim_{h\[rs]to 0}\[rs]frac{f(x+h)\-f(x)}{h}$$ .RE .IP \[bu] 2 Here\[cq]s one that has a line break in it:@@ -575,7 +575,7 @@ .PP Right paren: ) .PP-Greater-than: >+Greater\-than: > .PP Hash: # .PP@@ -585,7 +585,7 @@ .PP Plus: + .PP-Minus: -+Minus: \- .PP * * * * * .SH Links@@ -661,7 +661,7 @@ .IP \[bu] 2 It should. .PP-An e-mail address: \c+An e\-mail address: \c .MT nobody@nowhere.net .ME \c .RS@@ -671,7 +671,7 @@ .UE \c .RE .PP-Auto-links should not occur here: \f[CR]<http://example.com/>\f[R]+Auto\-links should not occur here: \f[CR]<http://example.com/>\f[R] .IP .EX or here: <http://example.com/>
@@ -134,7 +134,7 @@ In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item.-Because a hard-wrapped line in the middle of a paragraph looked like a list+Because a hard\-wrapped line in the middle of a paragraph looked like a list item. .PP Here\[cq]s one with a bullet.@@ -149,7 +149,7 @@ .pdfhref O 1 "Block Quotes" .pdfhref M "block-quotes" .LP-E-mail style:+E\-mail style: .QS .LP This is a block quote.@@ -197,7 +197,7 @@ .IP .nf \f[C]----- (should be four hyphens)+\-\-\-\- (should be four hyphens) sub status { print \[dq]working\[dq];@@ -605,7 +605,7 @@ .IP .nf \f[C]-<!-- Comment -->+<!\-\- Comment \-\-> \f[] .fi .LP@@ -695,7 +695,7 @@ .IP \[bu] 3 @223@ .IP \[bu] 3-@p@-Tree+@p@\-Tree .IP \[bu] 3 Here\[cq]s some display math: .EQ@@ -765,7 +765,7 @@ .PP Right paren: ) .PP-Greater-than: >+Greater\-than: > .PP Hash: # .PP@@ -775,7 +775,7 @@ .PP Plus: + .PP-Minus: -+Minus: \- .HLINE .SH 1 Links@@ -925,7 +925,7 @@ .IP \[bu] 3 It should. .LP-An e-mail address: \c+An e\-mail address: \c .pdfhref W -D "mailto:nobody%40nowhere.net" -A "\c" \ -- "nobody\[at]nowhere.net" \&@@ -937,7 +937,7 @@ \& .QE .LP-Auto-links should not occur here: \f[CR]<http://example.com/>\f[R]+Auto\-links should not occur here: \f[CR]<http://example.com/>\f[R] .IP .nf \f[C]
@@ -1,9 +1,4 @@ // Some definitions presupposed by pandoc's typst output.-#let blockquote(body) = [- #set text( size: 0.92em )- #block(inset: (left: 1.5em, top: 0.2em, bottom: 0.2em))[#body]-]- #let horizontalrule = [ #line(start: (25%,0%), end: (75%,0%)) ]@@ -22,7 +17,8 @@ #let conf( title: none,- authors: none,+ authors: (),+ keywords: (), date: none, abstract: none, cols: 1,@@ -35,6 +31,11 @@ sectionnumbering: none, doc, ) = {+ set document(+ title: title,+ author: authors.map(author => author.name),+ keywords: keywords,+ ) set page( paper: paper, margin: margin,@@ -53,7 +54,7 @@ ]] } - if authors != none {+ if authors != none and authors != [] { let count = authors.len() let ncols = calc.min(count, 3) grid(@@ -90,14 +91,14 @@ #show: doc => conf( title: [Pandoc Test Suite], authors: (- ( name: [John MacFarlane],- affiliation: [],- email: [] ),- ( name: [Anonymous],- affiliation: [],- email: [] ),+ ( name: "John MacFarlane",+ affiliation: "",+ email: "" ),+ ( name: "Anonymous",+ affiliation: "",+ email: "" ), ),- date: [July 17, 2006],+ date: "July 17, 2006", cols: 1, doc, )@@ -151,11 +152,11 @@ <block-quotes> E-mail style: -#blockquote[+#quote(block: true)[ This is a block quote. It is pretty short. ] -#blockquote[+#quote(block: true)[ Code in a block quote: ```@@ -171,11 +172,11 @@ Nested block quotes: -#blockquote[+#quote(block: true)[ nested ] -#blockquote[+#quote(block: true)[ nested ] ]@@ -447,7 +448,7 @@ { orange code block } ``` -#blockquote[+#quote(block: true)[ orange block quote ] ]@@ -621,14 +622,14 @@ = LaTeX <latex> --- $2 plus 2 eq 4$+- $2 + 2 = 4$ - $x in y$ - $alpha and omega$ - $223$ - $p$-Tree - Here’s some display math:- $ frac(d, d x) f lr((x)) eq lim_(h arrow.r 0) frac(f lr((x plus h)) minus f lr((x)), h) $-- Here’s one that has a line break in it: $alpha plus omega times x^2$.+ $ frac(d, d x) f lr((x)) = lim_(h arrow.r 0) frac(f lr((x + h)) - f lr((x)), h) $+- Here’s one that has a line break in it: $alpha + omega times x^2$. These shouldn’t be math: @@ -763,7 +764,7 @@ An e-mail address: #link("mailto:nobody@nowhere.net")[nobody\@nowhere.net] -#blockquote[+#quote(block: true)[ Blockquoted: #link("http://example.com/") ] @@ -809,7 +810,7 @@ #link("http://google.com")[links] and `]` verbatim characters, as well as \[bracketed text\].] -#blockquote[+#quote(block: true)[ Notes can go in quotes.#footnote[In quote.] ]
@@ -64,7 +64,7 @@ \newenvironment{RTL}{\beginR}{\endR} \newenvironment{LTR}{\beginL}{\endL} \fi-\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}+\usepackage{bookmark} \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \urlstyle{same} \hypersetup{