I'm pleased to announce the release of pandoc 3.12.1,
available in the usual places:
Binary packages & changelog:
https://github.com/jgm/pandoc/releases/tag/3.12.1
Source & API documentation:
http://hackage.haskell.org/package/pandoc-3.12.1
Notable changes:
-
New input and output format:
fodt(a flattened representation
of an ODT in a single XML file). -
With
--citeproc, we no longer extract particles from given and family
names in structured CSL JSON or CSL YAML references. Thus, for
example,family: de Gaulleshould not create a non-dropping
particle "de"; "de Gaulle" should be considered the integral
family name. This is a behavior change that could affect some
bibliography processing. -
Fixed a regression in keyword resolution with
--syntax-definition. -
Fixed a serious regression in escaping of data URIs (#11942), which
broke--embed-resources. -
Fixed reveal.js version to align with plugin changes from 3.12.
-
Fixed a Markdown reader regression that led to "alerts" not working
properly. -
Fixed a regression in rendering of abstracts in ODT.
-
Big performance improvements for XML-based writers and the org,
man, Textile, MediaWiki, and docx readers.
API changes:
-
Add
readFODTto Text.Pandoc.Readers.ODT. -
Add
writeFODTto Text.Pandoc.Writers.ODT.
Thanks to all who contributed, especially new contributors New input and output format: Resolve keywords after loading a syntax definition (#11921, #11923). This fixes a 3.12 regression in With Commonmark reader:
Markdown reader:
Docx reader:
ODT reader:
RTF reader:
Typst reader:
Org reader:
Creole reader:
RST reader:
Textile, Vimwiki, MediaWiki, Txt2Tags readers:
Roff readers:
Mdoc reader:
Docx writer:
OpenDocument writer:
ODT writer:
LaTeX writer:
Commonmark writer:
Typst writer:
Markdown writer:
Text.Pandoc.XML:
Text.Pandoc.SelfContained:
Text.Pandoc.Parsing:
Text.Pandoc.XML.Light:
Bump version of reveal.js to 6. Version 6 is required for the changes in plugin locations incorporated in pandoc 3.12.
Benchmark improvements:
Use latest citeproc, texmath.
Aslak Hellesøy, Erik Demaine, Raffaele Mancuso, Kyohei Takahashi,
and rca-umb.
Click to expand changelog
fodt (#4010). This is ODF’s “flat” representation of a text document: a single XML file instead of a zip package (ODT). It supports the same options as odt, including --reference-doc (which should be a zipped odt) and --link-images.
--syntax-definition that was due to a change in skylighting. As the skylighting changelog indicates, users must now apply resolveKeywords after parsing a syntax definition.
--citeproc, we no longer extract particles from given and family names in structured CSL JSON or CSL YAML references (#11911). Thus, for example, family: de Gaulle should not create a non-dropping particle “de”; “de Gaulle” should be considered the integral family name. This is a behavior change that could affect some bibliography processing.
commonmark_x. Previously task_lists would not work if fancy_lists was enabled, for any commonmark variant.
alert after tip, etc. in classes (#11919). Some of the writers (gfm, docbook, asciidoc, rst) check for the admonition name as the first class, so the change putting alert first broke the output. (Regression from 3.12.)
[ test ]{.class}. This behavior has no good rationale, and it made it impossible to represent insertions and deletions properly.
w:dstrike was not parsed at all, so text marked with Word’s double strikethrough was read as plain text, with no indication that it had been struck out. Treat it as Strikeout.
getStyleFamily linear in the inheritance depth. A style whose family had to be inherited took time exponential in the chain length.
text:s. text:c is unbounded in ODF, so <text:s text:c="200000000"/> let an 832-byte document allocate until the OOM killer stepped in.
uniqueIdentFrom.
post_process' matched a table followed by a caption only at the very head of the block list and then stopped, so a caption was picked up only if its table was the first block of the document; anywhere else the caption was dropped and the internal marker Div leaked into the output. Walk the whole document instead, so captions nested in sections, cells and list items are found too. Accept the caption before its table as well as after it.
fo:font-weight from 100 to 900 was mapped to bold, so text in a hairline or light weight was read as Strong.
text:page-number, text:author-name or text:chapter, the RDFa wrapper text:meta, the bibliographic wrapper text:meta-field, and ruby annotations. Add matchers for those; for ruby, keep the base text and drop the gloss, which pandoc cannot represent.
table:number-{columns,rows}-repeated. ODF abbreviates a run of identical cells or rows with a repeat count. The reader ignored both counts, so a row of five cells written as three elements came out three cells wide. Also count a cell spanning several columns as occupying all of them when working out the number of columns, rather than as one.
table:table-row-group. Rows need not be immediate children of the table.
office:binary-data.
draw:object. A flat OpenDocument file cannot refer to a separate formula document, so the MathML is a descendant of the draw:object instead.
readFODT for flat OpenDocument input [API change].
draw:image element instead of guessing from magic bytes.
inline.
takeWhile1P in str.
takeWhile1P for raw field list items.
takeWhile1P for regularText.
takeWhile1P in lexer.
id in the tblStyle element (#11932). Previously we used the table style name. This happened to work for the default table style, but only because its name and id matched. It failed for custom styles whose names did not match their ids.
marked spans containing math (#11885, Samuel Huang).
literal instead of text . T.unpack.
AA, AB, etc.).
Plain blocks. withParagraphStyle only wrapped Para in a paragraph with the requested style; a Plain fell through to blockToOpenDocument and came out with the default style.
custom-style set to Abstract, but then handed to metaToContext, which renders metadata fields with the inline writer. The style was lost, as well as any block-level formatting. Regression from 013351f.
Pn automatic style, even when an identical one already existed.
xrefs_name or xrefs_number is enabled, since nothing reads the result otherwise and neither is on by default. Elements with an empty identifier are no longer collected, so a link to “#” can no longer resolve to a reference with an empty ref-name.
T9, T10, …).
content.xml with a template. writeOpenDocument returns a bare body fragment when writerTemplate is Nothing. This is needed mainly for the fodt writer.
pandocToODT return an Archive instead of a ByteString. This lets an alternative entry point post-process the archive.
writeFODT for flat OpenDocument output [API change].
block. The blank line actually is semantically significant; without it, styling of par will have no effect.
hanging-indent and entry-spacing in CSL bibliography entries (#11926). Instead of hard-coding the formatting in the block, we use a show rule on <refs>, included conditionally by the default template. Values will be set for csl-hanging-indent and csl-entry-spacing based on the CSL style, but these variables can be overridden on the command line using --variable. It is also possible to include a new show rule in header-includes, which will take priority over the other.
escapeStringForXML and escapeNls more efficient.
--embed-resources no longer worked properly.
mathDisplay, mathInline: respect TeX groups and comments (#11887, Erik Demaine). Prevent math delimiters inside TeX brace groups and percent comments from prematurely closing an equation.
parseXMLContentsWithEntities, which folds the event stream directly into our types. This speeds up every XML-based reader. Behavior change: Attributes now preserve document order instead of being sorted alphabetically, as was already the case for parseXMLContentsWithEntities.
reference.docx: don’t make Table style semiHidden (#11931). This allows it to appear in the table styles gallery.