Repository navigation
I'm pleased to announce the release of pandoc 3.13,
available in the usual places:
Binary packages & changelog:
https://github.com/jgm/pandoc/releases/tag/3.13
Source & API documentation:
http://hackage.haskell.org/package/pandoc-3.13
This release fixes some regressions and makes many minor
improvements. See the changelog for full details.
Behavior changes:
-
Locations of errors in default files are now reported.
-
YAML is now parsed with the yamlet library, which implements
YAML 1.2. As a result, we'll get better error messages, and:yes,no,on,off,yandnare strings, not booleans.- Duplicate keys in a mapping are an error. They were a warning.
.5,.infand.nanare numbers.
The most likely way this change will bite you is if you use
noin a boolean field. This will be interpreted as a nonempty
value, which will be treated as truthy in a template.
API changes:
- Text.Pandoc.Sharde: export
plainToParaandparaToPlain. - Text.Pandoc.Writers.Shared: export new functions
wrapColumnsand
rendereWithTemplate. - Text.Pandoc.Translations:
readTranslationsnow takes the path
of the file as argument.
Thanks to all who contributed, especially new contributors
Andrzej Rybczak, Patrick Creighton, Wleeaf, and enieuwy.
Click to expand changelog
-
Report the location of errors in defaults files (#8759, Andrzej Rybczak). An invalid value in a defaults file gave an error at the start of the file, with no indication of the field. The error now names the option and points at its value.
-
Use yamlet for YAML parsing. Pandoc parsed YAML with the yaml package, which depends on the C library libyaml. It now uses yamlet, a pure Haskell YAML 1.2 parser. Values still go through the existing aeson instances. Note these behavior changes:
yes,no,on,off,yandnare strings, not booleans, as in YAML 1.2.- YAML errors now show the file, the line and the column, with the offending line. In metadata blocks the line is the line in the document.
- Duplicate keys in a mapping are an error. They were a warning.
.5,.infand.nanare numbers.
-
Docx reader:
- Read
w:fldSimplefields (#11944, Aslak Hellesøy). - Keep grid columns that have no width (#11989, Patrick Creighton).
w:wis optional onw:gridCol, butelemToTblGridskipped the grid columns that had none. The table then had fewer columns than its rows had cells, and the extra cells were dropped. Every grid column is now kept. If any of them has no (readable) width, all columns get the default width. - Fix namespaces in notes and comments (#11991, Patrick Creighton). The contents of footnotes, endnotes and comments were read with the namespace prefixes declared in word/document.xml rather than in their own parts.
- Records the indentation of each list level and track the open list levels; an unnumbered paragraph whose left indentation matches the text indentation of an open level is treated as a continuation of that level’s current item, rather than as a block quote (cf. #9197).
- Recover from fields with a missing instruction (#11943, enieuwy). This fixes a bug that could lead to content being omitted.
- Fix regression (from 3.11) in parsing column widths (#11969). The regression caused only the first column to get assigned its alignment; every other column received default alignment. In addition, in 3.11 alignment was taken from the header row if present; this changed behavior from earlier versions, which took it from the first body row. We revert to the earlier behavior, using the header row only if there are no body rows. It’s common for the header to have different alignment than the rest.
- Keep tracked paragraph marks inside notes (#11971, Aslak Hellesøy).
- Read
-
RST reader:
- Allow inline markup and bare links after
:,/,',",<(Wleeaf). Fixes a regression since 3.2.1; these characters could no longer precede an inline markup start-string or a bare URI or email address, although the reStructuredText spec allows them. Also implement the rule that a start-character between an opening character and its closing counterpart, as in(*)or"*", does not trigger inline markup.
- Allow inline markup and bare links after
-
RTF reader:
- Fix tokenization bug (#11981). We were consuming certain symbols after
\uNNNNduring tokenization. This led to an extra character being consumed as the “fallback,” so letters went missing after encoded unicode characters.
- Fix tokenization bug (#11981). We were consuming certain symbols after
-
LaTeX reader:
- Detect macro expansion loops across
doMacroscalls (#11088).
- Detect macro expansion loops across
-
ODT reader:
- Fix start numbers with
text:continue-numbering(#9595).
- Fix start numbers with
-
Markdown writer:
- Write wide tables as grid tables instead of falling back to HTML (#11945, Aslak Hellesøy).
- Don’t drop notes in notes.
- Fix regression with code block language (#11987). We try to identify which class is a language name and emit that as the gfm style info string. If none of the classes match a recognized language, before 3.10.1 we emitted the first class; fater 3.10.1, we emit nothing. This commit reverts to the pre-3.10.1 behavior.
-
RST writer:
- Don’t drop notes in notes.
-
Haddock writer:
- Don’t drop notes in notes.
-
Docx writer:
- Fix multi-paragraph list items (#9197). Previously the docx writer gave the second and subsequent paragraphs of a list item numbering from a separate list with an invisible bullet. This looked right, but semantically these paragraphs were items of another list, which is what Word, screen readers, and pandoc’s own docx reader saw; the list was also split in three. The writer now gives these paragraphs no numbering, just an indentation that lines them up with the text of the list item (as Word’s “List Continue” styles do).
-
LaTeX writer:
- Use braces around term containing
=(#11954). This is needed for the new LaTeX list code, which is triggered by usingpdfstandard.
- Use braces around term containing
-
PowerPoint writer:
- Add
clrMapOvrto notes slides (#11935, Gaurav Vijay Jadhav). This makes them importable by Keynote. - Include
langin core document properties.
- Add
-
DocBook, JATS, TEI writers:
- Apply
writerIdentifierPrefixprefix consistently.
- Apply
-
Typst writer:
- Escape
...and-?ligatures (#11979). - Use
getLangto determine lang and region. Previously only thelangmetadata field was consulted, solangcould not be set properly using a variable.
- Escape
-
Text.Pandoc.Translations:
readTranslationsnow takes the path of the file, for error messages [API change].
-
Text.Pandoc.Writers.Shared:
- Add
wrapColumns,renderWithTemplate[API change]. These factor out code that was repeated in about 20 writers: computing the line length from writerWrapText/writerColumns, and rendering the body with or without the template.
- Add
-
Text.Pandoc.Shared:
- Export
plainToParaandparaToPlain. [API change]
- Export
-
Text.Pandoc.PDF:
- Make
--presentational-hintsdefault for weasyprint. This is necessary to get list attributes (start, ordered list type, etc.) working properly (#11976).
- Make
-
cabal.project:
- Use bundle C option for zlib by default. This allows pandoc to be built without first installing the C library zlib. Those who want to use the system zlib can still compile pandoc that way by overriding this setting in cabal.project.local, or just installing directly from Hackage.
- Default to
+httpon GHC >= 9.14 (previously done only in CI), so local builds behave the same;-f-httpstill overrides it. - Pass wasm link flags for
pandoc-cliasghc-options. cabal only passes ld-options along when it finds anldprogram on the PATH. In an environment without one (e.g.nix shellwith just the ghc-wasm-meta toolchain), the flags were silently dropped and linking pandoc.wasm failed with undefinedsetjmpand clock symbols. Use-optl- ghc-optionsinstead, which GHC passes to its linker regardless.
-
Makefile:
- Add
releasetarget. - Improve
make pandoc-templatesso it does the whole job. - Use bash as
SHELL(check-cabalusespushd,check-version-syncuses==). - Fix
$(id -u)indebpkg, which make expanded to empty. - Fix missing
echoinvalidate-docx-golden-tests{,2}. - Ensure pandoc is built before rules that run it to produce files.
- Use
git ls-filesforSOURCEFILES, not the main branch’s tree. - Drop redundant
embed_data_filesflag inquick-stack.
- Add
-
Use released citeproc 0.14.1.1, texmath 0.13.3.3, gridtables 0.1.1.1 (#9085).
-
MANUAL.txt:
- Clarify the effect of
raw_htmlin commonmark formats (#8305).
- Clarify the effect of
-
Bump bounds on crypton, crypton-x509-system, tasty-bench.
-
Add
tools/circleci-build-release.sh,tools/github-build-release.sh.