All Versions
Latest Version
Avg Release Cycle
39 days
Latest Release
341 days ago

Changelog History
Page 1

  • v2.11.2 Changes

    November 19, 2020

    Click to expand changelog

    💅 Default to using ATX (##-style) headings for Markdown output (#6662, Aner Lucero). Previously we used Setext (underlined) headings by default for levels 1–2.

    ➕ Add option --markdown-headings=atx|setext, and deprecate --atx-headers (#6662, Aner Lucero).

    👌 Support markdown-headings in defaults files.

    🛠 Fix corner case in YAML metadata parsing (#6823). Previously YAML metadata would sometimes not get recognized if a field ended with a newline followed by spaces.

    --self-contained: increase coverage (#6854). Previously we only self-contained attributes for certain tag names (img, embed, video, input, audio, source, track, section). Now we self-contain any occurrence of src, data-src, poster, or data-background-image, on any tag; and also href on link tags.

    Markdown reader:

    • Fix detection of locators following in-text citations. Prevously, if we had @foo [p. 33; @bar], the p. 33 would be incorrectly parsed as a prefix of @bar rather than a suffix of @foo.
    • Improve period suppression algorithm for citations in notes in note citation styles (#6835).

    - Don’t increment stateNoteNumber for example list references. This helps with #6836 (a bug in which example list references disturb calculation of citation note number and affect when ibid is triggered).

    LaTeX reader:

    • Move getNextNumber from Readers.LaTeX to Readers.LaTeX.Parsing.

    - Fix negative numbers in siunitx commands. A change in pandoc 2.11 broke negative numbers, e.g. \SI{-33}{\celcius} or \num{-3}. This fixes the regression.

    DocBook reader: drop period in formalpara title and put it in a div with class formalpara-title, so that people can reformat with filters (#6562).

    👍 Man reader: improve handling of .IP (#6858). We now better handle .IP when it is used with non-bullet, non-numbered lists, creating a definition list. We also skip blank lines like groff itself.

    Bibtex reader: fall back on en-US if locale for LANG not found. This reproduces earlier pandoc-citeproc behavior (jgm/citeproc#26).

    JATS writer:

    • Wrap all tables (Albert Krewinkel). All <table> elements are put inside <table-wrap> elements, as the former are not valid as immediate child elements of <body>.

    - Move Table handling to separate module (Albert Krewinkel). Adds two new unexported modules: Text.Pandoc.Writers.JATS.Types, Text.Pandoc.Writers.JATS.Table.

    Org writer:

    • Replace org #+KEYWORDS with #+keywords (TEC). As of ~2 years ago, lower case keywords became the standard (though they are handled case insensitive, as always).

    - Update org supported languages and identifiers according to the current list contained in (TEC).

    Only use filterIpynbOutput if input format is ipynb (#6841). Before this change content could go missing from divs with class output, even when non-ipynb was being converted.

    When checking reader/writer name, check base name now that we permit extensions on formats other than markdown.

    🏁 Text.Pandoc.PDF: Fix changePathSeparators for Windows (#6173). Previously a path beginning with a drive, like C:\foo\bar, was translated to C:\/foo/bar, which caused problems. With this fix, the backslashes are removed.

    🌲 Text.Pandoc.Logging: Add constructor ATXHeadingInLHS constructor to LogMessage [API change].

    🛠 Fix error that is given when people specify doc output (#6834, gison93).

    💅 LaTeX template: add a \break after parbox in CSLRightInline. This should fix spacing problems between entries with numeric styles. Also fix number of params on CSLReferences.

    reveal.js template: Put quotes around controlsLayout, controlsBackArrows, and display, since these require strings. Add showSlideNumber, hashOneBasedIndex, pause.

    🛠 Use citeproc 0.2. This fixes a bug with title case around parentheses.

    🍎 pandoc.cabal: remove ‘static’ flag. This isn’t really necessary and can be misleading (e.g. on macOS, where a fully static build isn’t possible). cabal’s new option --enable-executable-static does the same. On stack you can add something like this to the options for your executable in package.yaml:

    ld-options: -static -pthread

    ✂ Remove obsolete bibutils flag setting in linux/


    • Correct link-citation -> link-citations.

    - Add a sentence about pagetitle for HTML (#6843, Alex Toldaiev).

    🚚 Remove references to pandoc-citeproc (#6857).

    👕 CONTRIBUTING: describe hlint and how it’s used (#6840, Albert Krewinkel).

  • v2.11.1 Changes

    November 03, 2020

    Click to expand changelog

    DocBook Reader: fix duplicate bibliography bug (#6773, Nils Carlson).

    HTML reader:

    • Parse contents of iframes (#6770).

    - Parse inline svg as image unless raw_html is set in the reader (in which case the svg is passed through as raw HTML) (#6770).

    LaTeX reader:

    • Fix bug parsing macro arguments (#6796). If \cL is defined as \mathcal{L}, and \til as \tilde{#1}, then \til\cL should expand to \tilde{\mathcal{L}}, but pandoc was expanding it to \tilde\mathcal{L}. This is fixed by parsing the arguments in “verbatim mode” when the macro expands arguments at the point of use.

    - Properly support optional (cite) argument for \blockquote from csquotes (#6802).

    📦 LaTeX writer: Improved calculation of table column widths. We now have LaTeX do the calculation, using \tabcolsep. So we should now have accurate relative column widths no matter what the text width. The default template has been modified to load the calc package if tables are used.

    HTML writer: Fix duplicate “class” attribute for table rows (Andy Morris).

    Text.Pandoc.Filter: allow shorter YAML representation of Citeproc (Albert Krewinkel). The map-based YAML representation of filters expects type and path fields. The path field had to be present for all filter types, but is not used for citeproc filters. The field can now be omitted when type is “citeproc”, as described in the MANUAL.

    📜 Text.Pandoc.Error: Add PandocBibliographyError constructor for PandocError [API change]. This ensures that bibliography parsing errors generate messages that include the bibliography file name – otherwise it can be quite mysterious where it is coming from.

    🛠 Citeproc: properly handle csl field with data: URI (#6783). This is used with the JATS writer, so this fixes a regression in pandoc 2.11 with JATS output and citeproc.

    👍 Allow citation-abbreviations in defaults file.

    JATS templates: ensure jats_publishing output is valid (Albert Krewinkel).

    LaTeX template: Fix CSLRightInline, so that it does not run over the right margin.

    0️⃣ HTML template: default CSS tweaks (Mauro Bieg and John MacFarlane).

    • Fix margin before codeblock
    • Add monobackgroundcolor variable, making the background color and padding of code optional.
    • Ensure that backgrounds from highlighting styles take precedence over monobackgroundcolor
    • Remove list markers from TOC
    • Add margin-bottom where needed
    • Remove italics from blockquote styling
    • Change borders and spacing in tables to be more consistent with other output formats
    • Style h5, h6
    • Set font-size for print media to 12pt.
    • Reduce interline space.
    • Reduce interparagraph space.
    • Reduce line width.
    • Remove the special line-height: 1 for table cells.
    • Remove the special line-height for pre.
    • Ensure that there is a bit more space before a heading than after.
    • Slightly reduced space after title header.

    - Add CSS example to MANUAL

    man template: Change comment that triggers tbl from .\"t to '\" t, as specified in groff_man(7) (#6803).

    👀 Use latest commonmark, commonmark-extensions. This fixes a bug with nested blocks in footnotes with the footnote extension to commonmark. See jgm/commonmark-hs#63.

    👍 Citeproc: use comma for in-text citations inside footnotes. When an author-in-text citation like @foo occurs in a footnote, we now render it with: AUTHOR NAME + COMMA + SPACE + REST. Previously we rendered: AUTHOR NAME + SPACE + "(" + REST + ")". This gives better results. Note that normal citations are still rendered in parentheses.

    ✅ Use latest citeproc:

    • citeproc no longer capitalizes notes, so we do it in pandoc when appropriate.

    - Closes #6783.

    Clarify manual on --track-changes (#6801).

    ➕ Add doc/ to document pandoc’s handling of JATS (#6794, Albert Krewinkel).

    🛠 Fix code example in (#6795).

  • v2.11.1.1 Changes

    November 08, 2020

    Click to expand changelog

    Citeproc: improve punctuation in in-text note citations (#6813). Previously in-text note citations inside a footnote would sometimes have the final period stripped, even if it was needed (e.g. on the end of ‘ibid’).

    👉 Use citeproc This improves the decision about when to use ibid in cases where citations are used inside a footnote (#6813).

    👌 Support nocase spans for csljson output.

    Require latest commonmark, commonmark-extensions. This fixes a bug with autolink_bare_uris and commonmark.

    👍 LaTeX reader: better handling of \\ inside math in table cells (#6811).

    DokuWiki writer: translate language names for code elements and improve whitespace (#6807).

    🗄 MediaWiki writer: use syntaxhighlight tag instead of deprecated source for highlighted code (#6810). Also support startFrom attribute and numberLines.

    👕 Lint code in PRs and when committing to master (#6790, Albert Krewinkel).

    doc/ describe technical details of filter invocations (#6815, Albert Krewinkel).

  • v2.11 Changes

    October 11, 2020

    Click to expand changelog

    ➕ Add --citeproc (-C) option to trigger built-in citation processing. It is no longer necessary to use the external pandoc-citeproc filter. --citeproc behaves like a filter and can be positioned relative to other filters as they appear on the command line.

    🐎 The new built-in citation processing uses the citeproc library, a reimplementation of CSL citation processing that fixes many of the shortcomings of pandoc-citeproc. In general, citation processing should work much the same as it did with pandoc-citeproc, but with greater fidelity to CSL styles and better performance. (The tests from the pandoc-citeproc package have been carried over to pandoc.) The following differences should be noted:

    💅 At this point, only some of the writers (HTML, ms, LaTeX) properly interpret CSL display styles. You should get decent output in all formats (at least as good as with pandoc-citeproc), but indentation and block-alignment may not be right.

    💅 pandoc-citeproc searches the ~/.csl directory for .csl styles. Pandoc instead searches the csl subdirectory of the pandoc user data directory (e.g., ~/.pandoc/csl or ~/.local/share/pandoc/csl). Users who already keep CSL styles in ~/.csl may find it convenient to add a symlink.

    👍 Some of the bibliography formats supported by pandoc-citeproc (via hs-bibutils) are no longer supported: Copac, EndNote, ISI, MEDLINE, MODS, and RIS. If you use one of these formats, you may use the bibutils utility to convert to BibLaTeX. We now support only BibTeX, BibLaTeX, CSL JSON, and pandoc’s YAML/Markdown analogue of CSL JSON.

    💅 pandoc-citeproc would always retrieve the independent parent of a dependent style by doing an HTTP request. pandoc will now first seek the independent parent locally (in the resource path or in the csl subdirectory of the pandoc user data directory) before resorting to HTTP. In addition, you may omit the .csl extension, e.g. --csl zoology.

    📇 Using the --bibliography option (or including bibliography in YAML metadata) no longer triggers citation processing implicitly: one must always use the --citeproc option if citation processing is wanted.

    ➕ Add csljson as and input and output format. This allows pandoc to convert between csljson and other bibliography formats (e.g. -f csljson -t markdown -s or -f bibtex -t csljson), and to generate formatted versions of CSL JSON bibliographies (e.g., pandoc -f csljson --citeproc pl.json -o pl.pdf).

    ➕ Added bibtex, biblatex as input formats. This allows pandoc to convert between BibLaTeX and BibTeX and other bibliography formats, and to generated formatted versions of BibTeX/BibLaTeX bibliographies (e.g., pandoc -f biblatex --citeproc pl.bib -o pl.pdf).

    📇 Raise informative errors when YAML metadata parsing fails (#6730). Previously the command would succeed, returning empty metadata, with no errors or warnings.

    Sort languages in --list-highlight-languages output (#6718, Albert Krewinkel). Languages were previously sorted by their long name, which leads to unexpected results).

    ➕ Add CSS to default HTML template (#6601, Mauro Bieg). This greatly improves the default typography in pandoc’s HTML output. The CSS is sensitive to a number of variables (e.g. mainfont, fontsize, linestretch): see the manual for details. To restore the earlier, more spartan output, you can disable this with -M document-css=false.

    👌 Support --toc-depth option for ODT writer (#6696, niszet).

    🛠 Fix issues with Windows UNC paths with some options (#5127).

    Remove fenced_code_blocks and backtick_code_blocks from allowed commonmark and gfm extensions. These shouldn’t really be counted as extensions, because they can’t be disabled in commonmark. Adjust markdown writer to check for the commonmark variant in addition to extensions.

    Add these extensions to gfm and commonmark: fenced_code_blocks, backtick_code_blocks, fenced_code_attributes. These can’t really be disabled in the reader, but they need to be enabled in the writer or we just get indented code.

    👉 Make sure proper set of extensions is recognized for commonmark_x.

    Allow gfm_auto_identifiers, ascii_identifiers extensions for docx.

    Markdown reader:

    • Add Maybe FilePath parameter to yamlToMeta [API change].
    • Export yamlToRefs [API change], a version of yamlToMeta specialized to references.
    • Set citationNoteNum accurately in citations.

    - Revise abbreviation support. Don’t insert a nonbreaking space after a potential abbreviation if it comes right before a note or citation. This causes problems for citeproc’s moving of note citations.

    LaTeX reader:

    • Support missing siunitx commands (#6658).
    • Support squared, cubed, tothe in siunitx (#6657).
    • Improved uncertainty handling in slunitx.
    • Factored out siunitx stuff into separate unexposed module.
    • Fix improper empty cell filtering (#6689, Christian Despres).
    • Fix parsing of “show name” in \newtheorem (#6734). Previously we were just treating it as a string and ignoring accents and formatting.
    • Prevent wrong nesting of \multirow and \multicolumn table cells (#6603, Laurent P. René de Cotret).
    • Table cell parser not consuming spaces correctly (#6596, Laurent P. René de Cotret).
    • Change SIRange to SIrange (#6617, Emerson Harkin).

    - Allow blank lines inside \author (#6324).

    DocBook reader:

    • Don’t squelch space at end of emphasis and other inline elements; instead, move it outside the element (#6719).
    • Implement table cell alignment (#6698, Nils Carlson).
    • Implement column span support for tables (#6492, Nils Carlson).

    - Update list of block level tags (#6610).

    JATS reader:

    - Don’t squelch space at end of emphasis and other inline elements; instead, move it outside the element (#6719).

    RST reader:

    - Apply .. class:: directly to following Header rather than creating a surrounding Div (#6699).

    Docx reader:

    - Allow empty dates in comments and tracked changes (#6726, Diego Balseiro).

    Markdown writer:

    • Be less aggressive about using quotes for YAML values, allowing e.g. a quotation mark or bracket as long as it’s not at the beginning of the line.
    • Use double quotes for YAML metadata (#6727).

    - Sort YAML metadata keys in Markdown output case-insensitive.

    Asciidoc writer:

    - Support asciidoctor’s block figures (#6538, argent0).

    LaTeX writer:

    - Fix spacing issue with list in definition list. When a list occurs at the beginning of a definition list definition, it can start on the same line as the label, which looks bad. Fix that by starting such lists with an \item[].

    HTML writer:

    • Support intermediate table headers (#5314, Albert Krewinkel).
    • Support attributes on all table elements (Albert Krewinkel).
    • Render table footers if present (#6314, Albert Krewinkel).
    • Fix addition of doc-biblioentry role.

    - Support colspans and rowspans in HTML tables (#6312, Albert Krewinkel).

    ICML writer:

    • Support internal document links (#5541, Leonard Rosenthol).

    - Changed default link state to invisible (#6676, Leonard Rosenthol).

    Docx writer:

    • Better handle list items whose contents are lists (#5948, Michael Hoffmann). If the first element of a bulleted or ordered list is another list, then that first item would previously disappear if the target format is docx.

    - Separate adjacent tables (#4315). Word combines adjacent tables, so to prevent this we insert an empty paragraph between two adjacent tables.

    Org writer:

    - Don’t force blank line after headings (#6554).

    OpenDocument writer:

    • Implement table cell alignment (#6700 Nils Carson, Mauro Bieg).
    • New table cell support with row and column spans (#6682, Nils Carson).

    - Syntax highlighting for inline code (#6711, niszet).

    ➕ Add Text.Pandoc.Citeproc module, exporting processCitations [API change]. This depends on several other, unexported modules under Text.Pandoc.Citeproc.

    ➕ Add module Text.Pandoc.Writers.CslJson, exporting writeCslJson. [API change]

    ➕ Add module Text.Pandoc.Readers.CslJson, exporting readCslJson. [API change]

    ➕ Add module Text.Pandoc.Readers.BibTeX, exporting readBibTeX and readBibLaTeX. [API change]

    0️⃣ Text.Pandoc.Filter: Add CiteprocFilter constructor to Filter. [API change] This runs the processCitations transformation. We need to treat it like a filter so it can be placed in the sequence of filter runs (after some, before others). In FromYAML, this is parsed from citeproc or {type: citeproc}, so this special filter may be specified either way in a defaults file (or by citeproc: true, though this gives no control of positioning relative to other filters).

    ➕ Add new exported module Text.Pandoc.Writers.AnnotatedTable [API change] (#6655, Christian Despres). This module (which should generally be imported qualified to avoid name conflicts) provides a Table type that mirrors the structure of a pandoc Table, but with added inferred information so that the writers do not have to lay out tables themselves. The toTable and fromTable functions convert between an annotated Table and a regular pandoc Table. In addition to producing a Table with coherent and well-formed annotations, the toTable function also normalizes its input table like the table builder does. Tests ensure that toTable normalizes tables exactly like the table builder, and that its annotations are coherent.

    🌲 Text.Pandoc.Logging:

    • Remove unused CouldNotParseYamlMetadata constructor for LogMessage [API change].

    - Add CiteprocWarning constructor to LogMessage [API change].

    📇 Text.Pandoc.Readers.Metadata: export yamlBsToRefs [API change]. These allow specifying an id filter so we parse only references that are used in the document.

    📜 Text.Pandoc.Parsing:

    • Export ParseError [API change].

    - Add stateInNote and stateNoteNumber to ParserState [API change]. These are used to populate note numbers for citation processing.

    🛠 Fix apparent typos in sample.lua (#6729, William Lupton). Also make the writer less aggressive in escaping quotes.


    • defaultMathJaxURL: use tex-chtml-full instead of tex-mml-chtml (#6599, Kolen Cheung). This drops the MathML support (which we don’t need for HTML math rendering) and includes the full JavaScript, which makes it possible to use --self-contained (though there may still be issues if the required math fonts aren’t available). This change should also reduce latency in pages with lots of formulas.

    - Add /tex-chtml-full.js to defaultMathJaxURL (#6593) Previously we added this in processing command line options, but not in processing defaults files, which was inconsistent.

    epub.css: Fix cover page selectors and add note explaining their use (#6649, a-vrma).

    ➕ Add data files needed for Text.Pandoc.Citeproc: these include default.csl in the data directory and a citeproc directory that is only used at compile-time for biblatex localizations. Note that we’ve added file-embed as a mandatory rather than a conditional depedency, because of the biblatex localization files.

    Lua filters:

    ➕ Add SimpleTable for backwards compatibility (#6575, Albert Krewinkel). A new type SimpleTable is made available to Lua filters. It is similar to the Table type in pandoc versions before 2.10; conversion functions from and to the new Table type are provided. Old filters using tables now require minimal changes and can use, e.g.,

    if PANDOC_VERSION > {2,10,1} then
      pandoc.Table = pandoc.SimpleTable


    function Table (tbl)
      tbl = pandoc.utils.to_simple_table(tbl)
      return pandoc.utils.from_simple_table(tbl)

    to work with the current pandoc version.

    📚 Make attr argument optional in Table constructor (Albert Krewinkel). This changes the Lua API. It is highly unlikely for this change to affect existing filters, since the documentation for the new Table constructor (and type) was incomplete and partly wrong before. The Lua API is now more consistent, as all constructors for elements with attributes now take attributes as the last parameter.


    • Add a dedicated Citations section which consolidates the information the manual used to contain about citation processing, and incorporates some information formerly found in the pandoc-citeproc man page.
    • Add note about lualatex using selnolig.
    • Remove duplicate seriespage (#6568, Blake Eryx).
    • Remove lists of support extensions for markdown variants (#6604). Instead, offer the advice to use --list-extensions=FORMAT.
    • Fix position of attributes in header (Albert Krewinkel).

    - Delete obsolete section on compact and loose lists (#6684).


    • Add info on how to debug Lua filters (#6732, Ian Max Andolina).
    • Document Underline type and constructor (Albert Krewinkel).
    • Document body field (Albert Krewinkel).
    • Add missing header attribute
    • Add missing Link.title field (Albert Krewinkel).
    • Make the setting-the-date example conditional (the-solipsist). This makes the example a bit more realistic.

    - Remove outdated link table example.


    • Add section on tables (Albert Krewinkel).

    - Add section on handling of unknown directives (Albert Krewinkel). fix typo (#6584, Dmitry Volodin).

    ⚡️ Use golden test framework for command tests. This means that --accept can be used to update expected output.

    👉 Use the smart extension when generating pandoc’s man page (#6613).

    🚀 Release-candidate: don’t build windows i386. So far we haven’t been able to figure out how to get stack to use a 32-bit ghc.

    🏗 Use null instead of deprecated Builder.isNull.

    👉 Makefile:

    • Fix macospkg target to fetch target from S3 artifacts.

    - Fix pandoc-templates target to include all partials.

    ✂ Remove duplicated dependency in pandoc.cabal (#6591, Felix Yan).

    🏗 Sort build depends in pandoc.cabal alphabetically (#6691, Albert Krewinkel).

    ➕ Add .travis.yml for macos release candidate build (#6622). We need to build the release candidate on Travis rather than GitHub actions, because GH has macos 10.15, and binaries compiled on that OS will not work with 10.13. This build is only triggered on rc/* branches.

    ✂ Remove instructions for building pandoc-citeproc from CI and release binary build instructions. We will no longer distribute pandoc-citeproc.

    🛠 Fix math rendering in trypandoc (this broke after commit d8ad766).

    ✅ Use latest versions of skylighting, commonmark (#6589), comonmark-extensions, commonmark-pandoc, texmath.

    ✅ Relax version bounds for hslua, hslua-module-text, bytestring.

    🚀 Use released pandoc-types 1.22. This changes the JSON encoding slightly for the new table types introduced in 1.21, so they’re more consistent with the rest. Developers of libraries for pandoc filters will want to take note.

    🛠 Fix hlint suggestions, update hlint.yaml (#6680, Christian Despres).

    Code cleanup (#6678, Joseph C. Sible).

    ➕ Add haddocks to functions in Text.Pandoc.Writers.Shared (Albert Krewinkel).

    ✂ Remove duplicate tshow definition.

    🚀 Linux release candidate build: use ghc-musl container. This simplifies our build process (over using a customized alpine container).

  • v2.11.0.4 Changes

    October 23, 2020

    ✅ Use latest citeproc (, closes #6765). This fixes a problem with author-in-text citations for references including both an author and an editor. Previously, both were included in the text, but only the author should be.

    💅 With --citeproc, ensure that the final period is removed when citations that occur in notes in note-based styles get put in parentheses. See jgm/citeproc#20.

    🛠 Commonmark writer: fix regression with fenced divs (#6768). Starting with 2.10.1, fenced divs no longer render with HTML div tags in commonmark output. This is a regression due to our transition from cmark-gfm. This commit fixes it.

    Normalize rewritten image paths with --extract-media (#6761). This change will avoid mixed paths like this one when --extract-media is used with a Word file: ![](C:\Git\TIJ4\Markdown/media/image30.wmf). Instead we’ll get ![](C:\Git\TIJ4\Markdownmediaimage30.wmf).

    0️⃣ Modify --version output. Use space more efficiently and report the citeproc and ipynb versions, along with skylighting, texmath, and pandoc-types. Drop the word “default” before “user data directory.”

    👍 DocBook reader: bibliomisc and anchor support (#6754, Nils Carlson). Also ensure that bibliodiv without a title no longer results in an empty Header.

    ConTeXt template: adds \setupinterlinespace to fonts larger than normal (#6763, Denis Maier).

    👀 LaTeX template: Do not load amssymb if not needed (#6469, Angelo Peronio). See

    😌 Relax upper bound on hslua, allow hslua-1.3.* (Albert Krewinkel).

    ✅ Use latest sylighting, with support for groovy.


    • Improve explanation of “indent” variable (#6767, Cyrus Yip).
    • Remove org from list of input formats supporting raw_tex (#6753, Nick Fleisher).
    • Document that –html-q-tags requires the smart extension on the reader (#6766).
  • v2.11.0.3

    October 23, 2020
  • v2.11.0.2 Changes

    October 16, 2020

    Click to expand changelog

    🛠 Fix handling of xdata in bibtex/biblatex bibliographies (#6752).

    🛠 Fix some small typos in the API documentation (#6751, Michael Hoffmann).

    💅 Require citeproc This fixes a regression from pandoc-citeproc involving spacing between components of a reference in certain styles (e.g. cell.csl).

    🛠 Fix typos in comments, doc strings, error messages, and tests (Albert Krewinkel, #6738).

  • v2.11.0.1 Changes

    October 14, 2020

    Click to expand changelog

    👍 LaTeX reader: support more acronym commands (#6746): \acl, \aclp, and capitalized versions of already supported commands.

    Commonmark reader: add pipe_table extension after defaults (#6739). Otherwise we get bad results for non-table, non-paragraph lines containing pipe characters.

    Markdown writer: Fix autolinks rendering for gfm (#6740). Previously, autolinks rendered as raw HTML, due to the class="uri" added by pandoc’s markdown reader.

    LaTeX writer:

    • Escape option values in lstlistings environment (#6742).

    - Fix handling of lang pt-BR (#2953). For polyglossia we now use \setmainlanguage[variant=brazilian]{portuguese} and for babel \usepackage[shorthands=off,main=brazilian]{babel}.

    ✅ Depend on latest citeproc (

    • This fixes the citation number issue with ieee.csl and other styles that do not explicitly sort bibliographies (#6741). (Pandoc was numbering them by their order in the bibliography file, rather than the order cited, as required by the CSL spec.)

    - Fixes groupin/collapsing with citation items with prefixes.

    0️⃣ default.latex: fix CSLReference macro definition.

    🛠 Fix MANUAL.txt CSL JSON conversion examples.

    🛠 Fix spelling errors in chengelog, MANUAL.txt, doc/ (#6738).

  • v2.10.1 Changes

    July 24, 2020

    Click to expand changelog

    ➕ Add commonmark_x output format. This is commonmark with a number of useful pandoc extensions enabled.

    Many more extensions now work with commonmark and gfm.

    ➕ Add generic attributes extension. This allows attributes to be added to any block or inline element in a uniform way. Since the Pandoc AST doesn’t include attributes on each element type, the attributes will sometimes be added by creating a surrounding Div or Span container. Currently this extension is only compatible with the commonmark and gfm readers.

    To add an attribute to a block-level element, e.g. a paragraph, put it before the block:

    This is a paragraph.

    Multiple attributes may be used and will be combined:

    {.blue .warning key="val"}
    This is a paragraph.

    To add an attribute to an inline-level element, put it immediately after the element:

    *emphasized text*{.special}

    👌 Support --number-sections for docx output (#1413).

    LaTeX reader:

    • Support \SIRange reader (#6418, Emerson Harkin).
    • Support table col-span and row-span (#6311, Laurent P. René de Cotret). Supports \multirow and \multicolumn.
    • Support amsthm: \newtheorem, \theoremstyle, and theorem and proof environments, including labels and references. The only thing that is unsupported is the second optional argument, which causes numbering to be reset after the specified series is incremented.

    - Moved some code to T.P.LaTeX.Parsing. We need to reduce the size of the LaTeX reader to ease compilation on resource-limited systems.

    RST reader:

    • Fix csv tables with multiline cells (#6549).
    • Fix spurious newlines in some attributes from directives.

    - Avoid extra newline in included code blocks.

    Commonmark reader:

    - Switch from cmark-gfm to commonmark-hs for commonmark and gfm parsing. This avoids depending on a C library and allows us to support more pandoc extensions for commonmark and gfm.

    DocBook reader:

    - Parse releaseinfo as metadata (#6542).

    Docx reader:

    • Only use bCs/iCs on runs with rtl or cs property (#6514, Nikolay Yakimov).

    - Code cleanup/refactoring (Nikolay Yakimov).

    Org reader (Albert Krewinkel):

    • Respect export setting which disables entities MathML-like entities, e.g., \alpha, can be disabled with the #+OPTION: e:nil export setting (Albert Krewinkel).
    • Respect export setting disabling footnotes. Footnotes can be removed from the final document with the #+OPTION: f:nil export setting.

    - Respect tables-excluding export setting. Tables can be removed from the final document with the #+OPTION: |:nil export setting.

    Markdown writer:

    • Move asciify out of escapeString. Otherwise unsmartify doesn’t catch quotes that have already been turned to entities.
    • Add writeCommonmark (new exported function, API change).
    • Use unicode super/subscript characters when possible if the superscript or subscript extension or raw_html aren’t available.
    • Render caption as following paragraph when table_caption extension is not enabled.

    - Use numerical labels for reference links that are longer than 999 characters or contain square brackets, for conformity with commonmark (#6560).

    Commonmark writer:

    - Instead of using cmark-gfm, use writeCommonmark from the Markdown writer. This function calls the markdown writer with appropriate extensions and a few small modifications (e.g. not requiring backslashes before spaces inside super/subscripts). With this change comonmark and gfm output can be used with a wider selection of extensions.

    Jira writer: keep image caption as alt attribute (#6529, Albert Krewinkel).

    HTML writer:

    - Improve alt-text/caption handling for HTML5 (#6491, Albert Krewinkel). Screen readers read an image’s alt attribute and the figure caption, both of which come from the same source in pandoc. The figure caption is hidden from screen readers with the aria-hidden attribute. This improves accessibility. For HTML4, where aria-hidden is not allowed, pandoc still uses an empty alt attribute to avoid duplicate contents.

    Ms writer:

    • Fix code highlighting with blank lines. Previously blank lines were simply omitted from highligted code.

    - Escape starting periods in ms writer code blocks (#6505, Michael Hoffmann). If a line of ms code block output starts with a period (.), it should be prepended by \& so that it is not interpreted as a roff command.


    ➕ Add raw_markdown extension (which only affects ipynb input).

    Trim down githubMarkdownExtensions. Previously it included all of the following, which make sense for the legacy markdown_github but not for gfm, since they are part of base commonmark and thus can’t be turned off in gfm:

    - `Ext_all_symbols_escapable`
    - `Ext_backtick_code_blocks`
    - `Ext_fenced_code_blocks`
    - `Ext_space_in_atx_header`
    - `Ext_intraword_underscores`
    - `Ext_lists_without_preceding_blankline`
    - `Ext_shortcut_reference_links`

    🚚 These have been removed from githubMarkdownExtensions, though they’re still turned on for legacy markdown_github.

    ➕ Add Ext_attributes constructor for Extension [API change].

    LaTeX template: use selnolig to selectively suppress ligatures with lualatex (#6534).

    ✅ Benchmark bytestring readers (Nikolay Yakimov).

    📚 Documentation:

    • Update (favonia).
    • Fix Typos in (tajmone).
    • Rewrite Raw HTML/TeX section in MANUAL.txt to avoid duplicate headings for the extensions.
    • Fix typo in MANUAL.txt (Benjamin Wuethrich).
    • Remove duplicate ‘titlepage’ in MANUAL.txt (Blake Eryx).
    • Advertise the official nightlies in GitHub actions. Replaces #6500, thanks to @ickc.
  • v2.10 Changes

    June 30, 2020

    Click to expand changelog

    👉 Use pandoc-types 1.21. This adds two things:

    • A native Underline constructor for Inline (#6277, Vaibhav Sagar).

    - More expressive types for tables (#1024, Christian Despres). Tables can now take attributes; and rowspans and colspans, column headers, multiple row headers, table head and foot can all be represented. (Note, however, that reader and writer support for these features is still lacking, so most users won’t see any differences in table conversion yet. These changes just lay the foundation for further improvements.)

    👌 Support new Underline element in readers and writers (#6277, Vaibhav Sagar).

    👌 Support new Table type (Christian Despres). The Builder.simpleTable now only adds a row to the TableHead when the given header row is not null. This uncovered an inconsistency in the readers: some would unconditionally emit a header filled with empty cells, even if the header was not present. Now every reader has the conditional behaviour. Only the XWiki writer depended on the header row being always present; it now pads its head as necessary.

    ➕ Add an option to disable certificate validation (#6156, Cédric Couralet, Cécile Chemin, Juliette Fourcot). This commit adds the option --no-check-certificate, which disables certificate checking when resources are fetched by HTTP.

    📇 Unify defaults and markdown metadata parsers (#6328, Nikolay Yakimov). Clean up code in Text.Pandoc.Readers.Metadata and properly handle errors in yamlToMeta. This fixes parsing of Boolean fields in metadata withinin defaults files and reduces code duplication.

    Docbook reader:

    • Implement <procedure> (#6442, Mathieu Boespflug).
    • Implement <phrase> (#6438, Mathieu Boespflug).
    • Treat envar and systemitem like code (#6435, Mathieu Boespflug).
    • Implement <replaceable> (#6437, Mathieu Boespflug)

    - Map <simplesect> to unnumbered section (#6436, Mathieu Boespflug).

    JATS reader:

    • Handle “label” element in section title (#6288).

    - Parse abstract element into metadata field of same name (#6480, Albert Krewinkel).

    Jira reader (Albert Krewinkel):

    • Resolve multiple parsing problems, including issues with empty table cells, faulty recognition of closing emphasis characters, and parsing of image attributes (#6212, #6219, #6220).
    • Two consecutive markup chars are now parsed verbatim (#6343); styled text must not be empty.
    • Newlines are no longer allowed within styled text (#6325).
    • Links to anchors are now parsed as links (#6407).
    • Retain image attributes (#6234). Jira images attributes as in !image.jpg|align=right! are retained as key-value pairs. Thumbnail images, such as !example.gif|thumbnail!, are marked by a thumbnail class in their attributes.
    • Use Underline for inserted text (#6237). Previously, the span was marked with the non-standard class inserted.
    • Improve icon conversion for (/), (x), (!), (?) (+), (-), (off), (*). (#6236, #6264).
    • Support citations, attachment links, and user links (#6231, #6238, #6239).

    - Resolve parsing issues of blockquote, color (#6233, #6235).

    HTML reader:

    • Parse attributes into table attributes.
    • Support <bdo> (#5794, Tristan de Cacqueray).
    • Add summary to list of block-level HTML tags (#6385). This improves support for summary/details inside Markdown. NOTE: you need to include a blank line before the closing </details>, if you want the last part of the content to be parsed as a paragraph.

    - Fix parsing unclosed th elements in a table (#6247).

    Commonmark reader: Implement implicit_figures extension (#6350).

    Markdown Reader:

    • Fix inline code in lists (#6284, Nikolay Yakimov). Previously inline code containing list markers was sometimes parsed incorrectly.

    - Don’t require blank line after grid table (#6481). This allows grid tables to be enclosed in fenced divs with no intervening blank lines.

    LaTeX reader:

    • Don’t parse beyond \end{document} (#6380). This required some internal changes to \subfile handling.

    - Better handling of \lettrine. SmallCaps instead of Span for the part after the initial capital. Ensure that both arguments are parsed, so that in Markdown both are treated as raw LateX. (Closes #6258.)

    Org reader (Albert Krewinkel):

    • Recognize images with uppercase extensions (#6472).
    • Keep unknown keyword lines as raw org. The lines of unknown keywords, like #+SOMEWORD: value are no longer read as metadata, but kept as raw org blocks. This ensures that more information is retained when round-tripping org-mode files; additionally, this change makes it possible to support non-standard org extensions via filters.
    • Unify keyword handling. Handling of export settings and other keywords (like #+LINK) has been combined and unified.
    • Support LATEX_HEADER_EXTRA and HTML_HEAD_EXTRA settings. These export settings are treated like their non-extra counterparts, i.e., the values are added to the header-includes metadata list.
    • Allow multiple #+SUBTITLE export settings. The values of all lines are read as inlines and collected in the subtitle metadata field.
    • Read #+INSTITUTE values as text with markup. The value is stored in the institute metadata field and used in the default beamer presentation template.
    • The behavior of the #+AUTHOR and #+KEYWORD export settings has changed: Org now allows multiple such lines and adds a space between the contents of each line. Pandoc now always parses these settings as meta inlines; setting values are no longer treated as comma-separated lists. Note that a Lua filter can be used to restore the previous behavior.
    • Read description lines as inlines (#6485). #+DESCRIPTION lines are now treated as text with markup. If multiple such lines are given, then all lines are read and separated by soft linebreaks.

    - Honor tex export option (#4070). The tex export option can be set with #+OPTION: tex:nil and allows three settings: t (the default) causes LaTeX fragments to be parsed as TeX or added as raw TeX. nil removes all LaTeX fragments from the document. verbatim treats LaTeX as text.

    RST reader:

    • Pass arbitrary attributes through in code blocks (#6465). Exceptions: name (which becomes the id), class (which becomes the classes), and number-lines (which is treated specially to fit with pandoc highlighting).

    - Handle date:: directive (#6276).

    👍 Textile reader: support pre. for code blocks (#6454).

    Ipynb reader:

    • Handle application/pdf output as image (#6430).

    - Properly handle image/svg+xml as an image (#6430).

    Docx reader:

    - Distinguish between docx parsing and docx container unpacking errors.

    MediaWiki reader:

    - Fix gfm_auto_identifiers so that - is not replaced by _ (#6335).

    Vimwiki reader:

    ➕ Add nested syntax highlighting (#6256, Vlad Hanciuta). Nested syntaxes are specified like this:

    SELECT * FROM table

    📜 The preformatted code block parser has been extended to check if the first attribute of the block is not a key=value pair, and in that case it will be considered as a class.

    Jira writer (Albert Krewinkel):

    • Always escape braces (#6478). Braces are now always escaped, even within words or when surrounded by whitespace. Jira and Confluence treat braces specially.
    • Convert Underline to inserted text (+inserted+).

    - Add image attributes (#6234). Image attributes are added to the output as image parameters. If the image has a class “thumbnail”, then a thumbnail image is generated; all other attributes are discarded in this case.

    LaTeX writer:

    • Ensure that -M csquotes works even in fragment mode (#6265).
    • Escape ^ specially for listings (#6460).
    • Create hypertarget for links with identifier (#6360).
    • Distinguish between single and double quotes when using enquote package (#6457, dbecher-ito).
    • Add support for customizable alignment of columns in beamer (#6331, andrebauer).

    - Add support for customizable alignment of columns in beamer (#4805, #4150, andrebauer).

    HTML writer:

    - Use CSS in favor of <br> for display math (#6372) Some CSS to ensure that display math is displayed centered and on a new line is now included in the default HTML-based templates; this may be overridden if the user wants a different behavior.

    Org writer:

    - Clean-up Div handling (Albert Krewinkel).

    Docx writer:

    - Enable column and row bands for tables (#6371). This change will not have any effect with the default style. However, it enables users to use a style (via a reference.docx) that turns on row and/or column bands.

    OpenDocument (and ODT) writer:

    • Add custom-style “Abstract” in metadata abstract. This ensures that the abstract is rendered with style Abstract.

    - Enable custom-style attribute on a Div. This allows you to apply a custom style to contained paragraphs.

    DocBook writer:

    • Add id of figure to enclosed image.

    - Add personname element to docbook author (#6244).

    FB2 writer:

    - Properly handle cover-image containing spaces (#6391).

    Markdown writer:

    • Ensure consistent padding for pipe tables (#6240).

    - Avoid unnecessary escapes before intraword _ when intraword_underscores extension is enabled (#6296).

    RST writer:

    - Properly handle images with same alt text (#6194). Previously we created duplicate references for these in rendering RST.

    AsciiDoc writer:

    - Add blank line after Div (#6308).

    Haddock Writer:

    - Support Haddock tables (Joe Hermaszewski). See this PR on Haddock for details on the table format: haskell/haddock#718.

    PowerPoint writer (Jesse Rosenthal):

    - Write math input verbatim in speaker notes (#6301). OMML in speaker notes would lead to corrupt PowerPoint output. We now output the OMML verbatim as LaTeX in the speaker notes.

    📦 LaTeX template: Make polyglossia package options list-aware (#6444, Frederik Elwert).

    Reveal.js template:

    • Update template for reveal.js 4.0.0 (#6390, Salim B).
    • Update template with newly available options (#6347, Jake Zimmerman).

    - Use CDN version of revealjs v4 by default (#6408).

    opendocument template: Add abstract and subtitle to opendocument template (#6369).

    💅 reference.odt: clean up styles. Add Abstract. Change Author, Date to centered paragraphs with no character styling.

    👀 epub.css: wrap overlong lines in highlighted code blocks (#6242). This fixes a problem in iBooks v2.4 with our earlier horizontally scrolling code blocks. The problem seems to be a bug in iBooks, not pandoc, but since iBooks is a major target we’re changing pandoc’s default behavior so that pandoc-produced epubs work on that platform.


    • Use --enable-local-file-access in invoking wkhtmltopdf (#6474). wkhtmltopdf changed in recent versions to require this for access to local files. This fixes PDF via HTML5 with --css.

    - Send verbose output to stderr, not stdout (#6483).

    Text.Pandoc.MIME: Fix MIME type for TrueType fonts in EPUBs (#6464, Michael Reed).


    • makeSections: omit number attribute when unnumbered class is present (#6339). Previously the attribute was included but given an empty value, and this caused the table of contents creation functions in Text.Pandoc.Writers.Shared to think these items had numbers, which meant that they were included in the TOC even if the unlisted class was used.
    • Deprecate underlineSpan in Shared in favor of Text.Pandoc.Builder.underline (Vaibhav Sagar).

    - renderTags': use self-closing tag for col element (#6295).

    🚚 Text.Pandoc.UUID: Fix getRandomUUID, which previously would return the same value twice in a row. Make getRandomUUID polymorphic in PandocMonad. Remove getUUID (#6228, Joseph C. Sible).

    Text.Pandoc.Class: Generalize PandocIO functions to MonadIO.

    🛠 Fixed Katex standalone script (#6399, Lucas Escot). Global macros are now persistent when using the HTML Writer with the --katex option.

    Lua subsystem (Albert Krewinkel):

    • Use new type PandocLua for all pandoc Lua operations (API change). The new type PandocLua is an instance of the PandocMonad typeclass and can thus be used in a way similar to PandocIO.

    - Use PandocError for exceptions in Lua subsystem (API change). The PandocError type is used throughout the Lua subsystem. All Lua functions throw an exception of this type if an error occurs. The LuaException type is removed and no longer exported from Text.Pandoc.Lua. In its place, a new constructor PandocLuaError is added to PandocError.

    🖨 Lua filters: improve error messages for failing filters (#6332, Albert Krewinkel). Print the Lua error properly instead of displaying their show string.

    ✅ Use latest skylighting. This fixes a bug with lua multiline comments (and may improve handling of other syntaxes as well). IT also adds aria-hidden="true" to the empty a elements, which helps people who use screen readers.

    ✅ Use latest texmath.

    ✅ Require latest doctemplates 0.8.2. This adds support for template pipes first, rest, last, allbutlast.

    ⚡️ Revert 0e48a02 and dependency on base-noprelude, which hasn’t been updated for ghc 8.10 (see #6187).

    Dependency adjustments:

    • Allow haddock-library 1.9.x.
    • Allow hslua 1.1 (#6243, Felix Yan).
    • Allow base64-bytestring 1.1.
    • Use latest jira-wiki-markup.
    • Allow http-client 0.7.
    • Allow tasty 1.3.x.
    • Allow aeson 1.5 (#6400, Felix Yan).
    • Remove unused dependency vector (#6462, Laurent P. René de Cotret).

    - Bump QuickCheck upper bound.

    Significant code cleanup and simplification (Joseph C. Sible, #6223, #6209, #6225, #6229, #6226, #6340).

    ✂ Remove unnecessary hlint ignores (#6341, Joseph C. Sible).

    ✂ Remove obsolete RelaxedPolyRec extension (#6487, Nikolay Yakimov).

    trypandoc improvements (Mike Tzou):

    • Add standalone option to the command text (#6210).

    - Update third party libraries.


    • Clarify template partial naming (#6476, Mauro Bieg).
    • Describe jira as “Jira/Confluence wiki markup” (#6351, Albert Krewinkel). In the past, Jira’s wiki markup was also used by – and could be imported into – Atlassian Confluence.
    • Add link to (#6272, Mauro Bieg).
    • Clarify pipe table column width adjustment (#6254).
    • Fix ATX header syntax.
    • Fix misleading note about image size conversions (#6353).
    • Update links to reveal.js documentation (#6386, Salim B).

    - Separate adjacent verbatim code blocks (#6307, tom-audm).

    • Document behavior of smart extension (#4387, Albert Krewinkel).

    - Describe all supported export options in detail.

    • Fix description of BulletList Lua type (Levi Gruspe).

    - Use pandoc.system module in TikZ example (Albert Krewinkel). Showcase temporary directory handling with with_temporary_directory and with_working_directory. fix FreeBSD port link (#6422, Mo). The FreeBSD port was renamed from pandoc to hs-pandoc in 2010. The old pandoc port is still at version

    Propagate (DY)LD_LIBRARY_PATH in tests (#6376, Lila).

    ⬆️ Bump cabal-version to 2.2 (#6377).

    👉 Make it possible to compile using Stack on NixOS (#6439, Mathieu Boespflug).

    CI action to check for commit messsage length (Nikolay Yakimov, #6398).