# Revision history for pandoc ## pandoc 2.10.1 (2020-07-23) * 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: ``` {#mypara} This is a paragraph. ``` Multiple attributes may be used and will be combined: ``` {#mypara} {.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. * 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. * Text.Pandoc.Extensions: + 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 using-the-pandoc-api.md (favonia). + Fix Typos in lua-filters.md (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). + CONTRIBUTING.md: Advertise the official nightlies in GitHub actions. Replaces #6500, thanks to @ickc. ## pandoc 2.10 (2020-06-29) * 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 `` (#6442, Mathieu Boespflug). + Implement `` (#6438, Mathieu Boespflug). + Treat envar and systemitem like code (#6435, Mathieu Boespflug). + Implement `` (#6437, Mathieu Boespflug) + Map `` 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 `` (#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 ``, 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: + Implement `raw_markdown` extension (#5408). Specifying `-f ipynb+raw_markdown` will cause Markdown cells to be represented as raw Markdown blocks, instead of being parsed. This is not what you want when going from `ipynb` to other formats, but it may be useful when going from `ipynb` to Markdown or to `ipynb`, to avoid semantically insignificant changes in the contents of the Markdown cells that might otherwise be introduced. + 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: ``` {{{sql 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 `
` 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: . * 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. * Text.Pandoc.PDF: + 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). * Text.Pandoc.Shared: + `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. * MANUAL.txt: + 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 print-css.rocks (#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). * org.md: + Document behavior of `smart` extension (#4387, Albert Krewinkel). + Describe all supported export options in detail. * lua-filters.md: + 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`. * INSTALL.md: 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 1.5.1.1 * 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). ## pandoc 2.9.2.1 (2020-03-23) * Markdown reader: Fix table alignment when heading begins with t (#6153). Due to a typo (`t` instead of `\t`) we were center aligning column headings that begin with a lowercase `t`! * Text.Pandoc.Readers.Roff: + Fix parsing of `\.` in man/ms readers (#6175). Previously due to a typo it was being parsed as `` ` ``. + Fix parsing of `\'` in man/ms readers (#6175). It was being parsed as a backtick. * Jira reader (Albert Krewinkel): + Fix parsing of tables without preceding blankline (#6198). A bug was fixed which caused faulty parsing if a table was not preceded by a newline and the first table cell had no space after the initial `|` characters. + Fix parsing of strikeout, emphasis (#6196). A bug was fixed which caused non-emphasized text containing digits and/or non-special symbols (like dots) to sometimes be parsed incorrectly. + Support colored inline text, indented lists (#6183, #6184). * Ms writer: + Fix definition lists so indent even when paragraph indent is set to 0 (as is the default). Also ensure indent for display math that falls back to TeX. + Use `.QS/.QE` instead of `.RS/.RE` for block quotes. * EPUB writer: fix regression on detection of front/back/bodymatter (#6170). This bug caused sections with epub:type `dedication` to be misplaced in bodymatter instead of frontmatter as specified in the manual. The same problem would affect other epub:types. The pattern matching needed to be changed with the use of `makeSection`. * AsciiDoc writer: remove redundant `otherwise` guard in `inlineToAsciiDoc` (#6146, Ryan Scott). * Text.Pandoc.Class: + Fix missing import when data files are not embedded (Albert Krewinkel). + Subdivide Text.Pandoc.Class into small unexported modules and ensure that all functions have Haddock documentation (#6106, Albert Krewinkel). + Finer grained imports of Text.Pandoc.Class submodules (#6203, Albert Krewinkel). * Text.Pandoc.XML: Add to list of HTML5 attributes: `allow`, `autocapitalize`, `decoding`, `enterkeyhint`, `imagesizes`, `imagesrcset`, `loading`. * Use implicit Prelude (#6187, Albert Krewinkel). The previous behavior was introduced as a fix for #4464. It seems that this change alone did not fix the issue, and `stack ghci` and `cabal repl` only work with GHC 8.4.1 or newer, as no custom Prelude is loaded for these versions. Given this, it seems cleaner to revert to the implicit Prelude. * Always use custom prelude (#6187, Albert Krewinkel). Previously, the custom prelude was used only with older GHC versions, as a workaround for problems with ghci. The ghci problems are resolved by replacing package `base` with `base-noprelude`, allowing for consistent use of the custom prelude across all GHC versions. * Remove outdated checks for no longer supported base versions (Albert Krewinkel). * PDF via wkhtmltopdf: put user-specified options last (#6171). Certain options (e.g. `cover`) need to come after flags on the command line. * Text.Pandoc.App: set resource path at the beginning so it can affect things like include-in-header (#5982). * Change macOS release candidate CI process so that notarized packages can be produced (#6169). * Make MANUAL more explicit about nonbreaking space handling by `all_symbols_escapable` (#6154, Fabien Schurter). * trypandoc (Mike Tzou): + Add checkbox for standalone option (#6189). + Use strict mode for JavaScript code (#6188). + Fetch resources over https (#6188). + Remove unnecessary attributes on style, script elements (#6188). * Use details tag to make GitHub releases changelog collapsible. * Update filter code in doc/filters.md so it works with latest pandoc (#6185). * linux/Dockerfile: upgrade to alpine 3.11 (#6180, Albert Krewinkel). This is used to build the static linux binaries. ## pandoc 2.9.2 (2020-02-15) * Add `csv` as an input format (#6100). The CSV table is converted into a pandoc simple table. A new module Text.Pandoc.Readers.CSV exports `readCSV` [API change]. * Introduce new format variants for JATS writer (#6014, Albert Krewinkel): - `jats_archiving` for the "Archiving and Interchange Tag Set", - `jats_publishing` for the "Journal Publishing Tag Set", and - `jats_articleauthoring` for the "Article Authoring Tag Set." The `jats` output format is now an alias for `jats_archiving`. The module Text.Pandoc.Writers.JATS now exports `writeJatsArchiving`, `writeJatsPublishing`, and `writeJatsArticleAuthoring`, as well as the legacy `writeJATS` [API change]. * `--defaults`: Support `bibliography` and `csl` fields. Move `addMeta` from Text.Pandoc.App.CommandLineOptions to Text.Pandoc.App.Opt (internal change). * Add timing info for filters in `--verbose` mode (#6112). When verbose mode is specified (verbosity == INFO), print a notice when running a filter and when a filter completes (including timing). * LaTeX reader: + Allow `&` in LaTeX citation keys (#6110). + Improve caption and label parsing. + Don't emit empty Span elements for labels. + Put tables with labels in a surrounding Div. + Resolve `\ref` to table numbers (#6137). + Skip comments in more places where this is needed (#6114). + Allow beamer overlays for all commands in all raw tex (#6043). This affects parsing of raw tex in LaTeX and in Markdown and other formats. + Improve parsing of raw environments (#6034). If parsing fails in a raw environment (e.g. due to special characters like unescaped `_`), try again as a verbatim environment, which is less sensitive to special characters. This allows us to capture special environments that change catcodes as raw tex when `-f latex+raw_tex` is used. * RST reader: + Add highlight directive (#6140, Lucas Escot). * MediaWiki writer: + Prevent triple `[[[` which confuses MediaWiki (#6119). * HTML reader: + Don't parse `data-id` as `id` attribute. And similarly don't parse any `data-X` as `X` when `X` is a valid HTML attribute. * Org reader: + Simplify parsing of sub- and superscripts (#6127, Albert Krewinkel). Speeds up parsing of single-word, markup-less sub- and superscripts. * LaTeX writer: + Group biblatex citations even with prefix and suffix (#5849, Ethan Riley). Previously biblatex citations were only grouped if there was no prefix. This patch allows them to be grouped in subgroups split by prefixes and suffixes, which allows better citation sorting. + Fix regression in handling of columns in beamer slides (#6033). Columns in title slides were causing problems with slide division. + Fix duplicate frame classes in LaTeX/Beamer output (#6107). * HTML writer: + Fix duplicate attributes on headings (#6062), regression from 2.7.x. + Fix `--number-offset` with HTML TOC. Eventually it would be worth adding a parameter to `makeSections` so this could be done at that level; then it would also affect other writers that construct TOC manually. + reveal.js: restore old behavior for 2D nesting (#6032). The fix to #6030 actually changed behavior, so that the 2D nesting occurred at slide level N-1 and N, instead of at the top-level section. This commit restores the v2.7.3 behavior. If there are more than 2 levels, the top level is horizontal and the rest are collapsed to vertical. + reveal.js: ensure that pauses work even in title slides (#5819). * Markdown writer: + Fix regression: spurious dots in markdown_mmd metadata output (#6133). * Docx writer: + Fix regression with Compact style on tight lists (#6072). Starting in 2.8, the docx writer no longer distinguishes between tight and loose lists, since the Compact style is omitted. This is a side-effect of the fix to #5670, as explained in the changelog. This patch fixes the problem by extending the exception currently offered to Plain blocks inside tables to Plain blocks inside list items. * Jira writer: + Fix output of table headers (Albert Krewinkel, #6035). * Add Text.Pandoc.Image with unexported svgToPng. * Text.Pandoc.XML: Export `html5Attributes`, `html4Attributes`, `rdfaAttributes` (formerly unexported in Text.Pandoc.Writers.HTML). [API change] * Text.Pandoc.Shared: Export a new function `findM` (#6125, Joseph C. Sible). * Text.Pandoc.Logging: Add `RunningFilter`, `FilterCompleted` constructors to LogMessage [API change]. * Text.Pandoc.CSV: fix bug in CSV parser; previously an extra blank record would sometimes be inserted at the end. * LaTeX template: add space option to xeCJK with PassOptionsToPackage (#6002). Otherwise we can get a clash with documentclasses that already load the package. * Lua filters: + Allow filtering of element lists (#6038, Albert Krewinkel). Lists of Inline and Block elements can now be filtered via `Inlines` and `Blocks` functions, respectively. This is helpful if a filter conversion depends on the order of elements rather than a single element. For example, the following filter can be used to remove all spaces before a citation: function isSpaceBeforeCite (spc, cite) return spc and spc.t == 'Space' and cite and cite.t == 'Cite' end function Inlines (inlines) for i = #inlines-1,1,-1 do if isSpaceBeforeCite(inlines[i], inlines[i+1]) then inlines:remove(i) end end return inlines end + Add methods `insert`, `remove`, and `sort` to pandoc.List (Albert Krewinkel). Example of use: local numbers = pandoc.List {2, 3, 1} numbers:sort() -- numbers is now {1, 2, 3} + Make `pandoc.List` a callable constructor (Albert Krewinkel). It is now possible to construct a new List via `pandoc.List()` instead of `pandoc.List:new()`. + Add tests for pandoc.List module (Albert Krewinkel). * Text.Pandoc.App.CommandLineOptions: Change `setVariable` to use `Text` instead of `String`. This avoids some unnecessary unpacking. * Use versioned directory for windows release zipfile. Also remove old `make-windows-installer.bat`, superseded by GitHub actions workflow, and modify `pandoc.wxs` for new paths. * Extensive code cleanup (#6141, #6128, #6129, #6130, #6123, #6105, 6102, #6117, #6124, #6115, #6116, #6111, Joseph C. Sible). * Fix hlint warnings (Albert Krewinkel). * Use latest doclayout, doctemplates (#6031). The new version of doclayout fixes a memory leak that affected `--include-in-header` with large files (and possibly other cases involving extremely long lines). * Use latest texmath. * Use latest skylighting and fix test suite (#6086). * sample.lua: Fix typo in descriptive comments (#6136, Caleb Maclennan). Fix typo in error message (#6135). * Add Docker and GH Actions instructions/links to INSTALL.md. * Update filter documentation (#6065). Improve cabal v2 instructions. Remove example using pandoc API directly (we have other docs for that and it was outdated). * Lua filter docs: + Cross-link constructors and types (Albert Krewinkel). Thanks to @bpj for the idea. + Sort pandoc.List methods alphabetically (Albert Krewinkel). + Unify, fix anchors and internal links (#6061, Albert Krewinkel). Links and anchors now follow consistent conventions, like lowercase-only anchor names. This breaks some links to specific sections in the document, but will make it much easier to link documentation in the future. + Clarify filter function execution order (#6059, Albert Krewinkel). * In docs, update URLs and use `https:` wherever possible (#6090, Salim B). ## pandoc 2.9.1.1 (2020-01-05) * Markdown reader: + Fix parsing bug affected indented code after raw HTML (#6009, #5360). * LaTeX writer: + Fix regression in beamer slide structure with certain slide levels (#6030). + Allow framebreaks for beamer's TOC (Heiko Schlittermann, #6012) + Properly handle unnumbered headings level 4+ (#6018). Previously the `\paragraph` command was used instead of `\paragraph*` for unnumbered level 4 headings. * HTML writer: + Fix revealjs slide structure regression with certain slide levels (#6030). + Add newlines to make slide show output more readable. * Org writer: + Remove extra spaces from table cells (Albert Krewinkel, #6024). * JATS template: Update JATS dtd (Arfon Smith, #6020). Use the archiving and interchange DTD rather than the more restrictive journal publishing DTD (which doesn't permit ext-link as a valid child). * Text.Pandoc.PDF: Fix `runTeXProgram` so that the input source is always overwritten (#6027). Previously it wasn't overridden if the file already existed, which led to bad results on subsequent runs when `pdf-engine-opt=-output-directory=` was used to specify an explicit temp dir. * Text.Pandoc.BCP47: Change `getLang` to handle block-level contents (#6008). Some readers (e.g. RST) will populate the `lang` metadata field with block-level content. `getLang` has been modified to handle this. Previously in these cases the LaTeX writer would not properly set the "main language" of the document. * Fix `test/tables.org` (Albert Krewinkel). * Use HTTPS in copyright message (Felix Yan, #6010) ## pandoc 2.9.1 (2019-12-23) * Add Jira reader (Albert Krewinkel, #5556). * Jira writer: use jira-wiki-markup renderer (Albert Krewinkel, #5926). The following improvements are included in this change: + non-jira raw blocks are fully discarded instead of showing as blank lines; + table cells can contain multiple blocks; + unnecessary blank lines are removed from the output; + markup chars within words are properly surrounded by braces; + preserving soft linebreaks via `--wrap=preserve` is supported. Note that backslashes are rendered as HTML entities, as there appears no alternative to produce a plain backslash if it is followed by markup. This may cause problems when used with confluence, where rendering seems to fail in this case. * Fix regression with `--number-sections`. Starting with 2.8, `--number-sections` also had the effect of `--section-divs`, even if `--section-divs` was not specified. * Improved table of contents generation in markdown, RTF, commonmark, better handling cases where section headings are enclosed in divs. * Ensure that later default file values for `variable` replace earlier ones (5988). * HTML reader: Add `nav` to list of block-level tags. * Org reader (Albert Krewinkel): + Wrap named table in Div, using name as id (#5984). Tables which are given a name via `#+NAME:` or `#+LABEL:` are wrapped in an additional Div, with the name set as the Div's ID. + Report parsing errors properly. + Fix parsing problem for colons in headline (#5993). * Text.Pandoc.PDF: Ensure UTF8 when printing source in `--verbose` mode, avoiding an error on platforms that default to something other than UTF-8 (#5997). * Text.Pandoc.Templates: Strip directory before trying to find partial in data files (#5987). * Text.Pandoc.Shared: Improve `makeSections` so we don't get doubled "number" attributes in EPUB output (or anywhere else) (#5986). * Added tests for `--toc` and `--section-divs`. * Text.Pandoc.MIME: Added glsl MIME type for WebGL maps (#6000, Jared Lander). * MANUAL: A bit clearer explanation for `--base-header-level`. We now say exactly how to translate between the deprecated `--base-header-level` and `--shift-heading-level-by`. * lua-filters.md: + Remove spurious dot in title (#5996, Mauro Bieg). + Replace metadata example with image centering (#6004, Albert Krewinkel). Thanks to @efx for proposing this filter. ## pandoc 2.9 (2019-12-11) * Text.Pandoc.Templates [API change] + Add Monad wrappers `WithDefaultPartials` and `WithPartials`. Wrapping these around an instance of `PandocMonad` gives us different instances of `TemplateMonad`, with different search behavior in retrieving partials. To compile a template and limit partial search to pandoc's data files, use `runWithDefaultPartials (compileTemplate ...)`. To compile a template and allow partials to be found locally (either on the file system or via HTTP, in the event that the main template has an absolute URL), ue `runWithPartials (compileTemplate ...)`. + Export `getTemplate`, which seeks a template locally, or via HTTP if the template has an absolute URL, falling back to the data files if not found. + Export `compileDefaultTemplate` -- does `getDefaultTemplate` and compiles the result, raising an error on failure. * Text.Pandoc.Class [API change] + Remove `TemplateMonad` instances for `PandocIO` and `PandocPure`. These were too limiting and caused a bug whereby a local partial could be used even when the default template was requested. We now rely on instances provided in the Templates module. * Text.Pandoc.App.OutputSettings: Simplify template retrieval code. * ConTeXt template: Adjust to title formatting (#5949, Denis Maier). Add `\setupinterlinespace` to `title`, `subtitle`, `date` and `author` elements: otherwise longer titles that run over multiple lines will look squashed as `\tfd` etc. won't adapt the line spacing to the font size. * reveal.js template: Add title-slide-attributes variable (#5981, Frederik Elwert). * More informative JSON parse error (#5973). * Use external emojis package (forked from pandoc). Removed emoji data in Text.Pandoc.Emoji. * Fix regression in `makeSections` (#5965). Previously `hierarchicalize` (the ancestor of `makeSections`) would put header attributes on the containing Div. In 2.8 this behavior changed, which broke some tools depending on pandoc. Here we roll back this change, so that attributes again migrate from the header to the containing Div when `makeSections` is run. Note that attributes are retained on the header as well (unlike before) -- with the exception of the `id` attribute, which of course cannot be duplicated. * Fix `--toc-depth` regression in 2.8 (#5967). * Use doctemplates 0.8. Rename template 'filters' as 'pipes' to avoid confusion with the other notion of filter used by pandoc. * Fix README.md so that relative links from manual become absolute. Previously they'd be broken links when viewed on GitHub or Hackage. So we add the base URL for the pandoc manual. * Document display math syntax in manual. ## pandoc 2.8.1 (2019-12-05) * Add `ascii_identifiers` as a supported extension for `markdown`. This fixes a regression in 2.8. * Fix regression with behavior of `--variable` (#5962). Previously `-Vfoo=1 -Vfoo=2` would produce a list value for foo; with 2.8 it produced just `2`. This commit restores the earlier behavior. * Roll back part of of `--shift-heading-level-by` change (#5957). With positive heading shifts, starting in 2.8 this option caused metadata titles to be removed and changed to regular headings. This behavior is incompatible with the old behavior of `--base-header-level` and breaks old workflows, so we have rolled back the change. Note that there is now an asymmetry in positive and negative heading level shifts: With positive shifts, the metadata title stays the same and does not get changed to a heading in the body, while with negative shifts, a heading can be converted into the metadata title. * Text.Pandoc.Shared: Fix `makeSections` so it doesn't turn column Divs into sections. * HTML writer: add task-list class to ul if all elements are task list items. This will allow styling unordered task lists in a way that omits the bullet. * HTML-based templates: Add CSS to suppress bullet on unordered task lists. * ConTeXt template: Fix `\startcslreferences` and use ConTeXt syntax conventions (#5945, Denis Maier). The old version had a too large a skip at the beginning of the reference list. * LaTeX template: keep the `\author{}` command even if author is not specified (#5961, Yihui Xie). Avoids a LaTeX warning. * Generate Emoji module with TH. + Add Text.Pandoc.Emoji.TH. + Replace long literal list in Text.Pandoc.Emoji with one-liner generating it from `emoji.json` using TH. + Add Makefile target to download `emoji.json`. + Remove `tools/emoji.hs`. * Increase GC allocation space for compilation in cabal.project. * Clean up manual on PDF generation backend options (#5940). * Update release checklist to include code signing step and update Windows release-candidate builds (#5950). ## pandoc 2.8.0.1 (2019-11-26) * List `pdf` in `--list-output-formats`. * EPUB writer: Fix regression with `--css` (#5937). In 2.8 `--css` would not have an effect on EPUB output. * RST writer: Use grid tables for one-column tables, since simple tables clash with heading syntax in this case (#5936). * Add unexported module Text.Pandoc.Readers.Metadata (see #5914). * Use doctemplates 0.7.2, which adds the `nowrap` filter to templates. * Update default man template using `nowrap` for .TH heading (#5929). * HTML templates: Add support for `toc-title` variable (#5930, Alexandre Franke). * Remove `grffile` (LaTeX package) requirement in MANUAL.txt (#5927, Ian Max Andolina). * Use skylighting 0.8.3. ## pandoc 2.8 (2019-11-22) * Improvements in templates system (from doctemplates): + Pandoc templates now support a number of new features that have been added in doctemplates: notably, `elseif`, `it`, partials, filters, and syntax to control nesting and reflowing of text. These changes make pandoc more suitable out of the box for generating plain-text documents from data in YAML metadata. It can create enumerated lists and even tabular structures. + We now used templates parameterized on doclayout Doc types. The main impact of this change is better reflowing of content interpolated into templates. Previously, interpolated variables were rendered independently and intepolated as strings, which could lead to overly long lines. Now the templates interpolated as Doc values which may include breaking spaces, and reflowing occurs after template interpolation rather than before. + Remove code from the LaTeX, Docbook, and JATS writers that looked in the template for strings to determine whether it is a book or an article, or whether csquotes is used. This was always kludgy and unreliable. + Change template code to use new API for doctemplates. * Add `--defaults`/`-d` option. This adds the ability to specify a collection of default values for options in a YAML file. For example, one might define a set of defaults for letters, and then do `pandoc -d letter myletter.md -o myletter.pdf`. See the documentation of this feature in MANUAL.txt. * Raise error on unsupported extensions (#4338). * The `--list-extensions[=FORMAT]` option now lists only extensions that affect the given FORMAT. * Add `-L` option as shortcut for `--lua-filter`. * Add `--shift-heading-level-by` option and deprecate `--base-heading-level` (#5615). The new option does everything the old one does, but also allows negative shifts. It also promotes the document metadata (if not null) to a level-1 heading with a +1 shift, and demotes an initial level-1 heading to document metadata with a -1 shift. This supports converting documents that use an initial level-1 heading for the document title. * Allow `--metadata-file` to be used repeatedly to include multiple metadata files (Owen McGrath, #5702). Values in files specified first will be overridden by those in later files. * `--ascii` now uses numerical hex character references (#5718). * Allow PDF output to stdout (#5751). PDF output now behaves like other binary formats: it will not be output to the terminal, but can be sent to stdout using either `-o -` or a pipe. The intermediate format will be determined based on the setting of `--pdf-engine`. * Make some writers sensitive to 'unlisted' class on headings (#1762). If this is present on a heading with the 'unnumbered' class, the heading won't appear in the TOC. This class has no effect if 'unnumbered' is not also specified. This affects HTML-based writers (including slide shows and EPUB), LateX (including beamer), RTF, and PowerPoint. Other writers do not yet support `unlisted`. * Fix `gfm_auto_identifiers` behavior with emojis (#5813). Note that we also now use emoji names for emojis when `ascii_identifiers` is enabled. * When `--ipynb-output` is used with the default "best" format, strip ANSI escape codes for non-ipynb output (#5633). These cause problems in many formats, including LaTeX. * Don't look for template files remotely for remote input (#5579). Previously pandoc would look for the template at a remote URL when a URL was used for the input file, instead of taking it from the data directory. * Allow combining `-Vheader-includes` and `--include-in-header` (#5904). Previously `header-includes` set as a variable would be clobbered by material included using `--include-in-header`. * Change merge behavior for metadata. Previously, if a document contained two YAML metadata blocks that set the same field, the conflict would be resolved in favor of the first. Now it is resolved in favor of the second (due to a change in pandoc-types). This makes the behavior more uniform with other things in pandoc (such as reference links and `--metadata-file`). * Don't add a newline to fragment output if there's already one. * Change exit codes and document in MANUAL.txt: + `PandocAppError` was 1, is now 4 + `PandocOptionError` was 2, is now 6 + `PandocMakePDFError` was 65, is now 66 * Switch to new pandoc-types and use Text instead of String [API change]. (Christian Despres, #5884). * HTML reader: + Better handling of `` with cite attribute (#5798, Ole Martin Ruud). If a `` tag has a `cite` attribute, we interpret it as a Quoted element with an inner Span. + Add support for HTML `` element (#5792, Amogh Rathore). The `` element is parsed as Code with class `sample`. + Add support for HTML `` element (#5799, Amogh Rathore). The `` element is parsed as Code with class `variable`. + Add support for `` elements (Florian B, #5797). Parse `` elements from HTML as Spans with class `mark`. + Add support for `` elements, parsing them as Span with class `kbd` (Daniele D'Orazio, #5796). + Add support for ``, parsing this as a Span with class `dfn` (#5882, Florian Beeres). * Markdown reader: + Headers: don't parse content over newline boundary (#5714). + Handle inline code more eagerly within lists (Brian Leung, #5627). + Removed some needless lookaheads. + Don't parse footnote body unless extension enabled. + Fix small super/subscript issue (#5878). Superscripts and subscripts cannot contain spaces, but newlines were previously allowed (unintentionally). This led to bad interactions in some cases with footnotes. With this change newlines are also not allowed inside super/subscripts. + Use `take1WhileP` for `str`, table row. This yields a small but measurable performance improvement. * LaTeX reader: + Fix parsing of optional arguments that contain braced text (#5740). + Don't try to parse includes if `raw_tex` is set (#5673). When the `raw_tex` extension is set, we just carry through `\usepackage`, `\input`, etc. verbatim as raw LaTeX. + Properly handle optional arguments for macros (#5682). + Fix `\\` in `\parbox` inside a table cell (#5711). + Improve `withRaw` so it can handle cases where the token string is modified by a parser (e.g. accent when it only takes part of a Word token) (#5686). This fixes a bug that caused the ends of certain documents to be dropped. + Handle `\passthrough` macro used by latex writer (#5659). + Support tex `\tt` command (#5654). + Search for image with list of extensions like latex does, if an extension is not provided (#4933). + Handle `\looseness` command values better (#4439). + Add `mbox` and `hbox` handling (Vasily Alferov, #5586). When `+raw_tex` is enabled, these are passed through literally. Otherwise, they are handled in a way that emulates LaTeX's behavior. + Properly handle `\providecommand` and `\provideenvironment` (#5635). They are now ignored if the corresponding command or environment is already defined. + Support epigraph command in LaTeX Reader (oquechy, #3523). + Ensure that expanded macros in raw LaTeX end with a space if the original did (#4442). + Treat `ly` environment from lilypond as verbatim (Urs Liska, #5671). + Add `tikzcd` to list of special environments (Eigil Rischel). This allows it to be processed by filters, in the same way that one can do for `tikzpicture`. * Roff reader: + Better support for `while`. + More improvements in parsing conditionals. + Fix problem parsing comments before macro. + Improve handling of groups. + Better parsing of groups (#5410). We now allow groups where the closing `\\}` isn't at the beginning of a line. * RST reader: + Keep `name` property in `imgAttr` (Brian Leung, #5619). + Fixed parsing of indented blocks (#5753). We were requiring consistent indentation, but this isn't required by RST. + Use title, not admonition-title, for admonition title. This puts RST reader into alignment with docbook reader. + Don't strip final underscore from absolute URI (#5763). + Avoid spurious warning when resolving links to internal anchors ending with `_` (#5763). * Org reader: + Accept `ATTR_LATEX` in block attributes (Albert Krewinkel, #5648). Attributes for LaTeX output are accepted as valid block attributes; however, their values are ignored. + Modify handling of example blocks (Brian Leung, #5717). + Allow the `-i` switch to ignore leading spaces (Brian Leung). + Handle awkwardly-aligned code blocks within lists (Brian Leung). Code blocks in Org lists must have their `#+BEGIN_` aligned in a reasonable way, but their other components can be positioned otherwise. + Fix parsing of empty comment lines (#5856, Albert Krewinkel). Comment lines in Org-mode can be completely empty. * Muse reader (Alexander Krotov): + Add RTL support (#5551). + Do not allow closing asterisks to be followed by `*`. + Do not split series of asterisks into symbols and emphasis (#5821). + Do not terminate emphasis on `*` not followed by space. * DokuWiki reader: + Parse markup inside monospace ('') (#5916, Alexander Krotov). * Docx reader: + Move style-parsing-specific code to a new unexported module, Text.Pandoc.Readers.Docx.Parse.Styles (Nikolay Yakimov). + Move StyleMap to docx writer (Nikolay Yakimov). + Only use LTR when it is overriding BiDi setting (#5723, Jesse Rosenthal). The left-to-right direction setting in docx is used in the spec only for overriding an explicit right-to-left setting. We only process it when it happens in a paragraph set with BiDi. This is especially important for docs exported from Google Docs, which explicitly (and unnecessarily) set `rtl=0` for every paragraph. + Fix list number resumption for sublists (#4324). The first list item of a sublist should not resume numbering from the number of the last sublist item of the same level, if that sublist was a sublist of a different list item. * Docbook reader: + Richer parse for admonitions (Michael Peyton Jones, #1234). Instead of parsing admonitions as blockquotes, we now parse them as Divs with an appropriate class. We also handle titles for admonitions as a nested Div with the "title" class. + Fix nesting of chapters and sections (#5864, Florian Klink, Félix Baylac-Jacqué). + Fix bug with entities in mathphrase element (#5885). * MediaWiki reader: + Skip optional `{{table}}` template (#5757). * LaTeX reader: + Fix dollar-math parsing to ensure that space is left between a control sequence and a following letter (#5836). + In `untokenize`, ensure space between control sequence and following letter (#5836). + Don't omit macro definitions defined in the preamble. These were formerly omitted (though they still affected macro resolution if `latex_macros` was set). Now they are included in the document body. + Parse macro definitions as raw LaTeX when `latex_macros` is disabled. (When `latex_macros` is enabled, we omit them, since pandoc is applying the macros itself.) + Fix a hang/memory leak in certain circumstances (#5845). + Text.Pandoc.Readers.LaTeX.Parsing: add `[Tok]` parameter to `rawLaTeXParser`. This allows us to repeat retokenizing unnecessarily in e.g. `rawLaTeXBlock`. + Add KOMA-Script metadata commands (#5910, Andrew Dunning). Add all titling commands to existing definition for `\dedication`. + Parse `\micro` siunitx unit command (#5921, Jose Luis Duran). * Markdown writer: + Ensure proper nesting when we have long ordered list markers (#5705). + Make `plain` output plainer (#5741). Previously we used the following Project Gutenberg conventions for plain output: extra space before and after level 1 and 2 headings, all-caps for strong emphasis, underscores surrounding regular emphasis. Now these conventions are used only when the `gutenberg` extension is enabled. By default, Strong and Emph are rendered without special formatting, and headings are rendered without special formatting, and with only one blank line following. To restore the former behavior, use `-t plain+gutenberg`. + Prefer using raw_attribute when enabled (#4311). The `raw_attribute` will be used to mark raw bits, even HTML and LaTeX, and even when `raw_html` and `raw_tex` are enabled, as they are by default. To get the old behavior, disable `raw_attribute` in the writer. + Prefer `pipe_tables` to raw HTML even when we must lose width information (#2608, #4497). + Improve escaping in list items (#5918). * AsciiDoc writer: + Don't include `+` in code blocks for regular asciidoc. This is asciidoctor-specific. + Handle admonitions (#5690). * LaTeX writer: + Add thin space when needed in LaTeX quote ligatures (#5684). + Use `\hspace{0pt}` for 0-width space U+200B (#5756). + Use `cslreferences` environment for csl bibliographies. This allows bibliographies to receive special formatting. The template now contains definition of this environment (enabled only when CSL is used). It also defines a `\cslhangindent` length. This is set to 2em by default when the bibliography style specifies a hanging indent. To override the length, you can use e.g. `\setlength{\cslhangindent}{7em}` in header-includes. See jgm/pandoc-citeproc#410. + Strip off `{}` around locator for biblatex/natbib output (#5722). + Fix line breaks at start of paragraph (#3324). Previously we just omitted these. Now we render them using `\hfill\break` instead of `\\`. This is a revision of a PR by @sabine (#5591) who should be credited with the idea. + We no longer look in the template or header-includes to see if a book or article documentclass is used, or to see whether the `csquotes` package is used. To use `csquotes` for LaTeX, set `csquotes` in your variables or metadata. To specify a book style, use the `documentclass` variable or `--top-level-division`. + Fix horizontal rule (#5801). We change to use 0.5pt rather than `\linethickness`, which apparently only ever worked "by accident" and no longer works with recent updates to texlive. * ConTeXt writer: + Add option to include source files in ConTeXt PDFs (Tristan Stenner, #5578). The metadata field or variable (`includesource`) can be set to attach the source documents to the resulting PDF. + Customizable type of PDF/A for the ConTeXt writer (Karl Pettersson, #5608). The `pdfa` variable may now be set in metadata. Also updated color profile settings in accordance with ConTeXt wiki, and made ICC profile and output intent for PDF/A customizable using `pdfaiccprofile` and `pdfaintent`. + Unit tests: adjust code property to avoid an irrelevant failure involving inline code with two consecutive newlines. + Set `csl-hanging-indent` variable if needed. + Use special environment for CSL references. + Use braces, not start/stop, for inline language tags. This prevents unwanted gobbling of spaces. * HTML writer: + Use numeric character references with `--ascii` (#5718). Previously we used named character references with html5 output. But these aren't valid XML, and we aim to produce html5 that is also valid XHTML (polyglot markup). (This is also needed for epub3.) + Ensure that line numbers in code blocks get id-prefix (#5650). + Ensure TeX formulas are rendered correctly (Philip Pesca, #5658). The web service passed in to `--webtex` may render formulas using inline or display style by default. Prefixing formulas with the appropriate command ensures they are rendered correctly. + Render inline formulas correctly with `--webtex` (Philip Pesca, #5655). We add `\textstyle` to the beginning of the formula to ensure it will be rendered in inline style. + Pass through `aria-` attributes to HTML5 (#5642). + Render a Quoted element with an inner Span with `cite` attribute using a `` tag (#5798, Ole Martin Ruud). + Render a Span with class `mark` using the `` element (Florian Beeres, #5797). + Render Span with class `dfn` using `` element (Florian Beeres, #5882). + Render Span with class `kbd` using `` element (Daniele D'Orazio, #5796). + Render Code with class `variable` using `` element (Amogh Rathore, #5799). + Render Code with class `sample` using `` element (Amogh Rathore, #5799). * EPUB writer: + Improve splitting into chapters (#5761), using `makeSection`. + Avoid issuing warning multiple times when title not set (see #5760). + Use svg tag wrapper for cover image (#5638). In addition, the code generating the image has been moved to the template, to make it more customizable. NOTE: Those who use custom EPUB templates will need to adjust their templates, adding the code to generate the cover image. (Previously this was just inserted into 'body'.) + Improve toChapters, making it work better if there are Divs around sections. + Add support for EPUB2 covers (blmage, #3992). + Do not override existing "fileN" medias when writing to EPUB format (blmage, #4206). + Ensure that `lang` variable is set on all chapters (so that it will add an `xml:lang` attribute on the `html` element). * RST writer: + Removed remnants of `admonition-title`. + Fix handling of `:align:` on figures and images (#4420). When the image has the `align-right` (etc.) class, we now use an `:align:` attribute. + Improve spacing for tables with no width information (#5899). If a simple table would be too wide, we use a grid table. + Fix backslash escaping after strings (Albert Krewinkel, #5906). The check whether a complex inline element following a string must be escaped, now depends on the last character of the string instead of the first. + Ensure there's a blank line before tables (#5898). * Dokuwiki writer: + Handle mixed lists without HTML fallback (#5107). * XWiki writer: + Fix multiline table (Zihang Chen, #5683). * Muse writer: + Add RTL support (Alexander Krotov, #5551). * Man writer: + Suppress non-absolute link URLs (#5770). Absolute URLs are still printed in parentheses following the link text, but relative URLs are suppressed (just as internal links starting with '#' always have been). + Improved definition list term output. Now we boldface code but not other things. This matches the most common style in man pages (particularly option lists). * Ms writer: + Use `.LP` instead of `.PP` for line block (#5588). + Use boldface for definition terms in DefinitionLists. * JATS writer: + Do not emit empty `` (Mauro Bieg, #5595). + Update template to v1.1dtd (#5632, Arfon Smith). + Update `data/jats.csl` to avoid commas between editor name-part elements. (#5629) + Add `abstract` to template (Mauro Bieg). * TEI writer: + Don't strip hash from internal links (#5922). * Jira writer: + Remove escapeStringForJira for code blocks (Jan-Otto Kröpke). + Remove extraneous newline after single-line block quotes (#5858, Albert Krewinkel). + Improve escaping of special characters, using backslash escapes instead of HTML entities (#5858, Albert Krewinkel). * OpenDocument writer: + Avoid duplicate attributes (#4634). We use the innermost attribute in nested cases. + If `native_numbering` extension is set, use native OpenDocument enumeration for figures and tables (Nils Carlson). + Place caption before table (#5681, Dmitry Pogodin). * ODT writer: + Add a test for MathML formulas in ODT documents (blmage). + Improve the parsing of frames in ODT documents (blmage). * Docx writer: + Make handling of styles more robust in localized versions of Word (Nikolay Yakimov, #5523, #5052, #5074). We now use style names, not ids, for assigning semantic meaning, since the ids can change depending on the locale. Style name comparisons are case-insensitive, since those are case-insensitive in Word. Since docx style names can have spaces in them, and pandoc-markdown classes can't, anywhere when style name is used as a class name, spaces are replaced with ASCII dashes `-`. Code styles, i.e. "Source Code" and "Verbatim Char" now honor style inheritance. Docx Reader now honours "Compact" style (used in Pandoc-generated docx). The side-effect is that "Compact" style no longer shows up in docx+styles output. Styles inherited from "Compact" will still show up. + Re-use Readers.Docx.Parse for StyleMap (#5766, Nikolay Yakimov). + Internal improvements and code simplification (Nikolay Yakimov). + Preserve built-in styles in DOCX with custom style (Ben Steinberg, #5670). This change prevents custom styles on divs and spans from overriding styles on certain elements inside them, like headings, blockquotes, and links. On those elements, the "native" style is required for the element to display correctly. This change also allows nesting of custom styles; in order to do so, it removes the default "Compact" style applied to Plain blocks, except when inside a table. + Add `proofState` to list of elements carried over from settings.xml in the reference.docx (Krystof Beuermann, #5703). + Change order of `ilvl` and `numId` in `document.xml` (Agustín Martín Barbero, #5645). Also, make list para properties go first. This reordering of properties shouldn't be necessary but it seems Word Online does not understand the docx correctly otherwise. * PowerPoint writer: + Code formatting is now context dependent (Jeroen de Haas, #5573). This commit alters the way in which the Powerpoint writer treats inline code and code blocks. Inline code is now formatted at the same size as the surrounding text. Code blocks are now given a margin and font size according to their level. Furthermore this commit allows changing the font with which code is formatted via the `monofont` option. + Start numbering at appopriate numbers (Jesse Rosenthal, #5709). Starting numbers for ordered lists were previously ignored. Now we specify the number if it is something other than 1. * Text.Pandoc.Parsing: + Add `manyChar`, `many1Char`, `manyTillChar`, `many1TillChar`, `many1Till`, `manyUntil`, `mantyUntilChar`: these are like their unsuffixed counterparts but pack some or all of their output (Christian Despres, #5884). + Add `stateAllowLineBreaks` to `ParserState` [API change]. + Fix inline parsing in grid table cells (#5708). + Change type of `setLastStrPos` so it takes a `Maybe SourcePos` rather than a `SourcePos` [API change]. + Make `parseFromString'` and `gridTableWith` and `gridTableWith'` polymorphic in the parser state, constraining it with `HasLastStrPosition` [API change]. + `parseFromString'`: reset `stateLastStrPos` to `Nothing` before parse. + Rename takeWhileP -> take1WhileP and clean it up. (It doesn't match the empty sequence.) * Text.Pandoc.PDF: + For PDFs via HTML, ensure temp file is deleted even if the pdf program is not found (#5720). + Better detection of a Cygwin environment (#5451). + Don't assume tex log file is UTF8-encoded (#5872). Fall back to latin1 if it can't be read as UTF-8. * Text.Pandoc.Extensions: + Export new function `getAllExtensions`, which returns the extensions that affect a given format (whether enabled by default or not) [API change]. + Change type of `parseFormatSpec` from `Either ParseError (String, Extensions -> Extensions)` to `Either ParseError (String, [Extension], [Extension])` [API change]. + Add `Ext_gutenberg` constructor to `Extension` [API change]. + Add `Ext_native_numbering` constructor to `Extension` [API change] (Nils Carlson). * Text.Pandoc.Readers, Text.Pandoc.Writers: + Change type of `getReader` and `getWriter` so they return a value in the PandocMonad instance rather than an Either [API change]. Exceptions for unknown formats and unsupported extensions are now raised by these functions. * Text.Pandoc.App + Change `optMetadataFile` type from `Maybe FilePath` to `[FilePath]` (Owen McGrath, #5702) [API change]. * Text.Pandoc.Logging: + Add `CouldNotDeduceFormat` constructor to `LogMessage` [API change]. Issue this warning when we're falling back to markdown or html because we don't recognize the extension of the input or output files. + Clarify warning for missing title (#5760). + Add `UnusualConversion` constructor to `LogMessage` [API change] (Mauro Bieg, #5736). Emit warning on `-f latex -o out.pdf`. * Lua filters: + Improve function documentation (Albert Krewkinkel). + Traverse nested blocks and inlines in correct order (Albert Krewinkel, #5667). Traversal methods are updated to use the new Walk module so that sequences with nested Inline (or Block) elements are traversed in the order in which they appear in the linearized document. + New unexported module `Text.Pandoc.Lua.Walk` (Albert Krewinkel). Lua filters must be able to traverse sequences of AST elements and to replace elements by splicing sequences back in their place. Special `Walkable` instances can be used for this; those are provided in a new module `Text.Pandoc.Lua.Walk`. + `Attr` values can now be given as normal Lua tables (Albert Krewinkel, #5744). This can be used as a convenient alternative to constructing `Attr` values with `pandoc.Attr`. Identifiers are taken from the `id` field, classes must be given as space separated words in the `class` field. All remaining fields are included as attributes. With this change, the following lines now create equal elements: ``` pandoc.Span('test', {id = 'test', class = 'a b', check = 1}) pandoc.Span('test', pandoc.Attr('test', {'a','b'}, {check = 1})) ``` This also works when using the *attr* setter: ``` local span = pandoc.Span 'text' span.attr = {id = 'test', class = 'a b', check = 1} ``` Furthermore, the *attributes* field of AST elements can now be a plain key-value table even when using the `attributes` accessor: ``` local span = pandoc.Span 'test' span.attributes = {check = 1} -- works as expected now ``` + Export `make_sections`, remove `hierarchicalize`. Lua filters that use `hierarchicalize` will need to be rewritten to use `make_sections`. + Add a `clone()` method to all AST elements (Albert Krewinkel, #5568). + Fix Lua function names in pandoc.system (niszet). Change `get_current_directory` to `get_working_directory` and `with_temp_directory` to `with_temporary_directory`, to conform to the manual. * Text.Pandoc.Error: + Add constructors `PandocUnknownReaderError`, `PandocUnknownWriterError`, `PandocUnsupportedExtensionError`. [API change]. + Better message for `PandocShouldNeverHappenError`. + Better message for `PandocTemplateError`. * Text.Pandoc.Emoji: + Update emoji list (#5666). Done using new `tools/emojis.hs`, which uses the list from the gem GitHub uses. Future updates can be done with this tool. * Text.Pandoc.PDF: + Pass value of `--dpi` to `rsvg-convert` when converting SVG to PDF in the process of creating a PDF (#5721). * Text.Pandoc.Shared: + Replace `Element` and `makeHierarchical` with `makeSections`. Now that we have Divs, we can use them to represent the structure of sections, and we don't need a special Element type. `makeSections` reorganizes a block list, adding Divs with class `section` around sections, and adding numbering if needed. This change also fixes some longstanding issues recognizing section structure when the document contains Divs (#3057, see also #997). + Remove `Element` type [API change] + Remove `makeHierarchicalize` [API change] + Add `makeSections` [API change] + Export `deLink` [API change] + Make `filterIpynbOutput` strip ANSI escapes from code in output for non-ipynb formats, when the default "best" option is used with `--ipynb-output` (#5633). + Fix `camelCaseToHyphenated` so it handles `ABCDef` better. + Improve `isTight` (#5857). If a list has an empty item, this should not count against its being a tight list. + Export `htmlSpanLikeElements` [API change] (Daniele D'Orazio, #5796). This is a mapping of HTML span-like elements that are internally represented as a Span with a single class. + Change the implementation of `htmlSpanLikeElements` to retain classes and attributes (#5882, Florian Beeres). * Text.Pandoc.Slides: recognize content in Divs when determining slide level. * Text.Pandoc.SelfContained: + Omit content-type on type attribute for `