packages feed

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 view
@@ -145,6 +145,7 @@ - Henrik Tramberend - Henry de Valence - Herwig Stuetz+- Hikaru Ibayashi - Hos Es - Hubert Plociniczak - Ian Max Andolina
MANUAL.txt view
@@ -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` #### 
benchmark/benchmark-pandoc.hs view
@@ -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
changelog.md view
@@ -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`
data/docx/word/styles.xml view
@@ -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 />
data/epub.css view
@@ -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;
data/templates/default.latex view
@@ -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)$
data/templates/default.typst view
@@ -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$
data/templates/definitions.typst view
@@ -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%)) ]
data/templates/template.typst view
@@ -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(
− man/manfilter.lua
@@ -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
− man/pandoc.1
@@ -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-![la lune](lalune.jpg \[dq]Voyage to the moon\[dq])--![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-![This is the caption](/url/of/image.png)-.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 ![image](foo.jpg){#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-![](file.jpg){ 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]![image](spider.jpg)\f[R] in-\f[CR]chap1/text.md\f[R] refer to \f[CR]chap1/spider.jpg\f[R] and-\f[CR]![image](spider.jpg)\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]![image](chap1/spider.jpg)\f[R] in \f[CR]chap1/text.md\f[R] and-\f[CR]![image](chap2/spider.jpg)\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----------------------![picture of spaghetti](images/spaghetti.jpg)--## 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]![img](url){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 ![image](myimage.png) 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>.
− man/pandoc.1.after
@@ -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>.
− man/pandoc.1.before
@@ -1,2 +0,0 @@-.SH NAME-pandoc - general markup converter
pandoc.cabal view
@@ -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,
src/Text/Pandoc/Citeproc.hs view
@@ -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 =
src/Text/Pandoc/Class/IO.hs view
@@ -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
src/Text/Pandoc/Extensions.hs view
@@ -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
src/Text/Pandoc/MIME.hs view
@@ -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.
src/Text/Pandoc/PDF.hs view
@@ -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
src/Text/Pandoc/Parsing/Math.hs view
@@ -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'
src/Text/Pandoc/Readers/CommonMark.hs view
@@ -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 ] ++
src/Text/Pandoc/Readers/Docx/Parse.hs view
@@ -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 
+ src/Text/Pandoc/Readers/Docx/Symbols.hs view
@@ -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)+  ]
src/Text/Pandoc/Readers/Docx/Util.hs view
@@ -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 }
src/Text/Pandoc/Readers/FB2.hs view
@@ -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
src/Text/Pandoc/Readers/HTML.hs view
@@ -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
src/Text/Pandoc/Readers/LaTeX.hs view
@@ -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))
src/Text/Pandoc/Readers/LaTeX/Math.hs view
@@ -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
src/Text/Pandoc/Readers/Man.hs view
@@ -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
src/Text/Pandoc/Readers/Markdown.hs view
@@ -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
src/Text/Pandoc/Readers/MediaWiki.hs view
@@ -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
src/Text/Pandoc/Readers/ODT/ContentReader.hs view
@@ -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                                          ]
src/Text/Pandoc/Readers/Typst.hs view
@@ -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
src/Text/Pandoc/Readers/Typst/Parsing.hs view
@@ -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
src/Text/Pandoc/RoffChar.hs view
@@ -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
src/Text/Pandoc/SelfContained.hs view
@@ -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)
src/Text/Pandoc/Shared.hs view
@@ -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 
src/Text/Pandoc/Writers/AsciiDoc.hs view
@@ -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
src/Text/Pandoc/Writers/Docx.hs view
@@ -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" []
src/Text/Pandoc/Writers/Docx/Types.hs view
@@ -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
src/Text/Pandoc/Writers/FB2.hs view
@@ -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)
src/Text/Pandoc/Writers/HTML.hs view
@@ -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
src/Text/Pandoc/Writers/JATS.hs view
@@ -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
src/Text/Pandoc/Writers/LaTeX.hs view
@@ -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
src/Text/Pandoc/Writers/LaTeX/Util.hs view
@@ -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
src/Text/Pandoc/Writers/Markdown.hs view
@@ -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
src/Text/Pandoc/Writers/Ms.hs view
@@ -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 $$
src/Text/Pandoc/Writers/Typst.hs view
@@ -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
test/Tests/Readers/Docx.hs view
@@ -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
test/Tests/Readers/ODT.hs view
@@ -169,6 +169,8 @@                                   , "imageIndex"                                   , "imageWithCaption"                                   , "inlinedCode"+                                  , "listContinueNumbering"+                                  , "listContinueNumbering2"                                   , "orderedListMixed"                                   , "orderedListRoman"                                   , "orderedListSimple"
test/Tests/Writers/LaTeX.hs view
@@ -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
test/command/4235.md view
@@ -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> ```
test/command/5620.md view
@@ -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) ```
test/command/7006.md view
@@ -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> ```
test/command/8150.md view
@@ -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 ```
+ test/command/8872.md view
@@ -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" ] ] ]+        ]+    ]+]+```
test/command/8948.md view
@@ -3,8 +3,8 @@ ![minimal](command/minimal.svg) ![minimal](command/minimal.svg) ^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 @@ ![minimal](command/minimal.svg) ![minimal](command/minimal.svg){#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> ```
+ test/command/9171.md view
@@ -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" , "" )+    ]+]++```
+ test/command/9193.md view
@@ -0,0 +1,7 @@+```+% pandoc -t native+$a+%+b$+^D+[ Para [ Math InlineMath "a+%\nb" ] ]+```
+ test/command/9201.md view
@@ -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.+```
+ test/command/9202.md view
@@ -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." ] ]+]+```
+ test/command/9209.md view
@@ -0,0 +1,6 @@+```+% pandoc -t latex+## [Section]{#Section3}+^D+\subsection{\texorpdfstring{\protect\hypertarget{Section3}{}{Section}}{Section}}\label{section}+```
+ test/command/alerts.md view
@@ -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.+```
test/command/lists-inside-definition.md view
@@ -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
test/docx/golden/block_quotes.docx view

binary file changed (10062 → 10096 bytes)

test/docx/golden/codeblock.docx view

binary file changed (9874 → 9911 bytes)

test/docx/golden/comments.docx view

binary file changed (10212 → 10249 bytes)

test/docx/golden/custom_style_no_reference.docx view

binary file changed (9973 → 10014 bytes)

test/docx/golden/custom_style_preserve.docx view

binary file changed (10602 → 10643 bytes)

test/docx/golden/custom_style_reference.docx view

binary file changed (12368 → 12388 bytes)

test/docx/golden/definition_list.docx view

binary file changed (9874 → 9911 bytes)

test/docx/golden/document-properties-short-desc.docx view

binary file changed (9880 → 9917 bytes)

test/docx/golden/document-properties.docx view

binary file changed (10364 → 10402 bytes)

test/docx/golden/headers.docx view

binary file changed (10013 → 10050 bytes)

test/docx/golden/image.docx view

binary file changed (26757 → 26792 bytes)

test/docx/golden/inline_code.docx view

binary file changed (9813 → 9850 bytes)

test/docx/golden/inline_formatting.docx view

binary file changed (9993 → 10030 bytes)

test/docx/golden/inline_images.docx view

binary file changed (26755 → 26790 bytes)

binary file changed (10035 → 10072 bytes)

test/docx/golden/links.docx view

binary file changed (10206 → 10243 bytes)

test/docx/golden/lists.docx view

binary file changed (10272 → 10309 bytes)

test/docx/golden/lists_continuing.docx view

binary file changed (10068 → 10105 bytes)

test/docx/golden/lists_div_bullets.docx view

binary file changed (9921 → 9958 bytes)

test/docx/golden/lists_multiple_initial.docx view

binary file changed (10150 → 10187 bytes)

test/docx/golden/lists_restarting.docx view

binary file changed (10066 → 10103 bytes)

test/docx/golden/nested_anchors_in_header.docx view

binary file changed (10206 → 10243 bytes)

test/docx/golden/notes.docx view

binary file changed (9982 → 10019 bytes)

test/docx/golden/raw-blocks.docx view

binary file changed (9914 → 9951 bytes)

test/docx/golden/raw-bookmarks.docx view

binary file changed (10048 → 10085 bytes)

test/docx/golden/table_one_row.docx view

binary file changed (9892 → 9940 bytes)

test/docx/golden/table_with_list_cell.docx view

binary file changed (10210 → 10259 bytes)

test/docx/golden/tables-default-widths.docx view

binary file changed (10249 → 10286 bytes)

test/docx/golden/tables.docx view

binary file changed (10251 → 10301 bytes)

test/docx/golden/tables_separated_with_rawblock.docx view

binary file changed (9899 → 9936 bytes)

test/docx/golden/track_changes_deletion.docx view

binary file changed (9857 → 9894 bytes)

test/docx/golden/track_changes_insertion.docx view

binary file changed (9840 → 9877 bytes)

test/docx/golden/track_changes_move.docx view

binary file changed (9874 → 9911 bytes)

test/docx/golden/track_changes_scrubbed_metadata.docx view

binary file changed (9986 → 10023 bytes)

test/docx/golden/unicode.docx view

binary file changed (9799 → 9836 bytes)

test/docx/golden/verbatim_subsuper.docx view

binary file changed (9846 → 9883 bytes)

+ test/docx/text_in_shape_format.docx view

binary file changed (absent → 42504 bytes)

+ test/docx/text_in_shape_format.native view
@@ -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 []+]
test/lhs-test.latex view
@@ -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{
test/lhs-test.latex+lhs view
@@ -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{
+ test/odt/native/listContinueNumbering.native view
@@ -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.)" ]+        ]+    ]+]
+ test/odt/native/listContinueNumbering2.native view
@@ -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"+                    ]+                ]+            ]+          ]+      ]+    ]+]
+ test/odt/odt/listContinueNumbering.odt view

binary file changed (absent → 12263 bytes)

+ test/odt/odt/listContinueNumbering2.odt view

binary file changed (absent → 9300 bytes)

test/tables.typst view
@@ -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.],+)] )-]
test/testsuite.txt view
@@ -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: 
test/writer.html5 view
@@ -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>
test/writer.latex view
@@ -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
test/writer.man view
@@ -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/>
test/writer.ms view
@@ -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]
test/writer.typst view
@@ -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.] ] 
test/writers-lang-and-dir.latex view
@@ -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{