# Revision history for pandoc
## pandoc 3.8 (2025-09-06)
* Add a new input and output format `xml`, exactly representing a Pandoc
AST and isomorphic to the existing `native` and `json` formats (massifrg).
XML schemas for validation can be found in `tools/pandoc-xml.*`.
The format is documented in `doc/xml.md`. Pandoc now defaults to this
reader and writer when the `.xml` extension is used.
Two new exported modules are added [API change]:
Text.Pandoc.Readers.XML, exporting `readXML`, and
Text.Pandoc.Writers.XML, exporting `writeXML`.
A new unexported module Text.Pandoc.XMLFormat is also added.
* Add a new command line option `--syntax-highlighting`; this takes
the values `none`, `default`, `idiomatic`, a style name, or a path to a
theme file. It replaces the `--no-highlighting`, `--highlighting-style`,
and `--listings` options, which will still work but with a deprecation
warning. (Albert Krewinkel)
* Create directory of output file if it doesn't exist (#11040).
* Update `--version` copyright dates (#10961), and use a hardcoded
string "pandoc" for the program name in `--version`, per GNU
guidelines.
* Add `smart_quotes` and `special_strings` extensions (Albert Krewinkel).
Currently these only affect `org`. Org mode makes a distinction between
smart parsing of quotes, and smart parsing of special strings like `...`.
The finer grained control over these features is necessary to truthfully
reproduce Emacs Org mode behavior. Special strings are enabled by default,
while smart quotes are disabled.
* Remove the old `compact_definition_lists` extension. This was
neded to preserve backwards compatibility after pandoc 1.12
was released, but at this point we can get rid of it.
* Make `-t chunkedhtml -o -` output to stdout (as documented), rather
than creating a directory called `-` (#11068).
* RST reader: Support multiple header rows (#10338, TuongNM).
* LaTeX reader:
+ Support soft hyphens (Albert Krewinkel).
+ Parse `\minisec` as unlisted level 6 headings (#10635, Albert Krewinkel).
+ Support `\ifmmode` (#10915).
+ Change handling of math environments (#9711, #9296).
Certain environments in LaTeX will trigger math mode and can't
occur within math mode: e.g., `align` or `equation`. Previously
we "downshifted" these, parsing an `align` environment as a
Math element with `aligned`, and an `equation` environment as a
regular display math element. With this shift, we put these in
Math inlines but retain the original environments.
texmath and MathJax both handle these environments well.
* Typst reader:
+ Fix addition of image path prefix to use posix separator.
+ Properly resolve image paths in included files (#11090).
+ Handle inline-level show rules on block content (#11017).
Typst allows things like `smallcaps` to be applied to block-level
content like headings. This produces a type mismatch in pandoc,
so before processing the output of typst-hs, we transform it,
pulling the block-level elements outside of the inline-level
elements.
* Org reader:
+ Improve sub- and superscript parsing (Albert Krewinkel).
Sub- and superscript must be preceded by a string in Org mode. Some text
preceded by space or at the start of a paragraph was previously parsed
incorrectly as sub- or superscript.
+ Allow "greater block" names to contain any non-space char (#4287,
Albert Krewinkel).
+ Accept quoted values as argument values (#8869, Albert Krewinkel).
+ Recognize "fast access" characters in TODO state definitions
(#10990, Ryan Gibb).
+ Improve org-cite parsing: Handle global prefix and suffix properly.
Use all and only the styles mentioned in oc-basic.el.
Allow space after `;`.
* HTML reader:
+ Don't drop the initial newline in a `pre` element (#11064).
* DocBook reader:
+ Add rowspan support (#10981, Sean Soon).
+ Be sensitive to startingnumber attribute on ordered lists (#10912).
* POD reader:
+ Fix named entity lookup (#11015, Evan Silberman).
* Man reader:
+ Support header and footer reader (Sean Soon).
* Markdown reader:
+ Don't confuse a span after an author-in-text citation with a
locator. E.g. `@foo [test]{.bar}`.
See https://github.com/jgm/pandoc/issues/9080#issuecomment-3221689892.
+ Make definition lists behave like other lists (#10889).
If the `four_space_rule` extension is not enabled,
figure out the indentation needed for child blocks dynamically,
by looking at the first nonspace content after the `:` marker.
Previously the four-space rule was always obeyed.
+ Fix tight/loose detection for definition lists, to conform to
the documentation.
* ODT reader:
+ Support `table-header-rows` (Tuong Nguyen Manh).
* Docx reader:
+ Don't add highlighting if highlight color is "none" (#10900).
+ Handle strict OpenXML as well as transitional (#7691).
+ Fix `stringToInteger` (#9184). It previously converted things like
`11ccc` to an integer; now it requires that the whole string be parsable
as an integer.
+ Improve handling of AlternateContent. This fixes handling of
one representation of emojis in Word (#11113).
* LaTeX writer:
+ Control figure placement with attribute (#10369, Sean Soon).
If a `latex-placement` attribute is present on a figure, it will be used
as the optional positioning hint in LaTeX (e.g. `ht`). With implicit
figures, `latex-placement` will be added to the figure (and removed from
the image) if it is present on the image.
+ Include cancel package only if there is math that contains `\cancel`,
`\bcancel`, or `\xcancel`.
+ Add braces around comments in `title-meta` (#10501). This is needed to
prevent PDFs from interpreting this as a sequence of titles.
+ Set `pdf-trailer-id` if `SOURCE_DATE_EPOCH` envvar is set (#6539, Albert
Krewinkel). The `SOURCE_DATE_EPOCH` environment variable is used to trigger
reproducible PDF compilation, i.e., PDFs that are identical down to the
byte level for repeated runs.
+ Be more conservative about using `\url` (#8802). We only use it when the
URL is all ASCII, since the `\url` macro causes problems when used with
some non-ASCII characters.
+ Support soft hyphens (Albert Krewinkel).
+ Change handling of math environments (#9711, #9296).
When certain math environments (e.g. `align`) are found in Math
elements, we emit them "raw" instead of putting them in `$..$`.
* Typst writer:
+ Check `XID_Continue` in identifiers (Tuong Nguyen Manh).
+ Add escapes to prevent inadvertent lists due to automatic wrapping
(#10047). Also simplify existing code that was meant to do this.
+ Add parentheses around typst-native year-only citations (#11044).
+ Add native Typst support for `nocite` (#10680, Albert Krewinkel).
The `nocite` metadata field can now be used to supply
additional citations that don't appear in the text, just as with citeproc
and LaTeX's bibtex and natbib.
+ Set `lang` attribute in Divs (#10965).
+ Rename `numbering` variable to `section-numbering` (Albert Krewinkel).
This is the name expected by the default template.
+ Add support for custom and/or translated "Abstract" titles (Albert
Krewinkel, #9724).
* Org writer:
+ Don't wrap link descriptions (#9000). Org doesn't reliable display
these as links if they have hard breaks.
+ Disable smart quotes by default (Albert Krewinkel).
* Markdown writer:
+ Better handling of pandoc-generated code blocks (#10926).
Omit the wrapper sourceCode divs added by pandoc around code blocks.
More intelligently identify which class to use for the one class
allowed in GFM code blocks. If there is a class of form `language-X`,
use `X`; otherwise use the first class other than `sourceCode`.
+ Use fenced divs even with empty attributes (#10955, Carlos Scheidegger).
Previously fenced divs were not used in this case, causing the writer to
fall back to raw HTML.
+ Match indents in definition items (#10890, Albert Krewinkel).
Previously, the first line of a definition details item always used a
colon and three spaces instead of respecting the tab-stop setting, which
could lead to round-tripping issues. Likewise, the indentation of
continuation paragraphs in definition lists now matches the
two-characters leader of the first line for Markua output.
* DocBook writer:
+ Use `startingnumber` instead of `override` for start numbers on ordered
lists (#10912).
* ANSI writer:
+ Make `--wrap=none` work properly (#10898).
* Djot writer:
+ Fix duplicate attributes before section headings (#10984).
* Docx writer:
+ Ensure that documents don't start with a section separator
(#10578, Albert Krewinkel). Any leading section separator is removed from
the result.
* HTML writer:
+ Unwrap "wrapper" divs (#11014). Some of the readers (e.g. djot) add
"wrapper" divs to hold attributes for elements that have no slot for
attributes in the pandoc AST. The HTML reader now "unwraps"
these wrappers so that the attributes go on the intended elements.
* Asciidoc writer:
+ Handle lists with sublists following continuations (#11006).
These require an additional blank line in some cases.
* HTML styles template: prefix default styles with informative CSS comment
(Albert Krewinkel, #8819).
* Org template: add `#+options` lines if necessary (Albert Krewinkel).
The default template now adds `#+options` lines if non-default settings
are used for the `smart_quotes` and `special_strings` extensions.
* LaTeX template:
+ Don't emit empty `linkcolor=` in hypersetup (#11098).
+ Add RTL support for LuaTeX engine (Reuben Thomas).
* Typst template:
+ Add several new variables (Christopher T. Kenny, #9956):
`thanks`, `abstract-title`, `linestretch`, `mathfont`, `codefont`,
`linkcolor`, `filecolor`, `citecolor`.
* `reference.docx`:
+ Don't left-align table header row (R. N. West, #11019).
+ Update East Asia font theme in `styles.xml` to `minorEastAsia` (TomBen).
+ Update language settings in `styles.xml` for East Asia to Simplified
Chinese (TomBen).
* Text.Pandoc.PDF:
+ `makePDF`: automatically embed resources from media bag in HTML
before trying to convert it with weasyprint, etc. (#11099).
This will give better results when converting from formats like docx.
+ Use `utf8ToText` for LaTeX log messages.
+ Make images from MediaBag available in tmp dir for every PDF engine,
not just LaTeX/ConTeXt (#10911).
+ Improve error readability when pdf-engine is not supported (Albert
Krewinkel). Each supported engine is now printed on a line of its own.
+ Allow `pdflatex-dev` and `lualatex-dev` as PDF engines (#10991, Albert
Krewinkel). These are the development versions of the LaTeX binaries;
installable, e.g., with `tlmgr install latex-base-dev`.
+ Clean up `makePDF` (Albert Krewinkel).
+ Avoid encoding errors when reading LaTeX logs (#10954).
* Text.Pandoc.Readers:
+ Raise unknown reader error for `ods`, `odp`, `odf`, `xls`,
`xslx`, `zip` extensions.
* Text.Pandoc.App:
+ Recognize binary signatures and fail early (Repetitive). Fail early when
receiving binary input with recognized signature: zip[-based], including
OpenDocument and Microsoft formats, PDF, CFBF-based (old Microsoft formats
including .doc and .xls), DjVu.
+ Remove code duplication around version info.
Text.Pandoc.App.CommandLineOptions and `pandoc-cli/src/pandoc.hs`
had similar code for generating version information.
To avoid duplication, we now export `versionInfo` from
Text.Pandoc.App [API change]. This function has three parameters that can
be filled in when it is called by `pandoc-cli`.
* Text.Pandoc.Parsing:
+ `tableWith` and `tableWith'` now return a list of lists of Blocks, rather
than a list of Blocks, for the header rows, allowing for multiple header
rows [API change] (#10338, TuongNM).
* Text.Pandoc.Citeproc:
+ Don't move footnotes around em-dashes (#11046).
+ Allow `--citeproc` to put the bibliography in a Div with id `refs`
even when `--file-scope` is used (#11072). When `--file-scope`
is used, a prefix will be added based on the filename, so the Div
will end up having an identifier like `myfile.md__refs`.
Previously, this prevented the bibliography from being added to
the marked Div. Now pandoc will add the bibliography to any Div
with the id `refs` or any id ending in `__refs`.
* Text.Pandoc.Citeproc.BibTeX: Protect case in periodical titles (#11048).
Thus, for example, `{npj} Quantum Information` should translate as
`[npj]{.nocase} Quantum Information`.
* Text.Pandoc.ImageSize:
+ Detect more JPEG file signatures (R. N. West and John MacFarlane, #11049).
+ Unpack compressed object streams in PDFs and look inside for MediaBox
information (#10902).
+ Add Point and Pica as constructors of ImageSize [API change] (#8957).
This will prevent unnecessary conversion of units.
+ Add Avif constructor on ImageType [API change] and support avif images
(#10979).
* Text.Pandoc.Writers.Shared:
+ Amend docs of `lookupMeta...` functions (#10634, Albert Krewinkel).
* Text.Pandoc.Options:
+ Add and export `defaultWebTeXURL` WebTeX URL [API change] (#11029,
Sean Soon). This fixes the `webtex` option when used without
parameter in a defaults file.
+ Add type `HighlightMethod` and patterns [API Change] (Albert Krewinkel).
+ The `writerListings` and `writerHighlightStyle` fields of the
`WriterOptions` type are replaced with `writerHighlightStyle`
[API change] (Albert Krewinkel, #10525).
* Text.Pandoc.Extensions:
+ Remove `Ext_compact_definition_lists` constructor for
`Extension` [API change].
* Text.Pandoc.SelfContained:
+ Try fetching relative resources without query or fragment if the original
fetch fails. This provides a fix for #1477 in a way that doesn't raise
the problems mentioned in #11021.
* Text.Pandoc.Highlighting:
+ Export `defaultStyle` [API Change] (Albert Krewinkel).
This allows to be more explicit about using a default style, and
providing a single point of truth for its value. The variable is
an alias for `pygments`.
* Text.Pandoc.Class:
+ `downloadOrRead`: do not drop fragment/hash for local file paths (#11021).
With the previous behavior it was impossible to have an image
file containing `#` or `?`.
+ Export function `runSilently` [API Change] (Albert Krewinkel).
The function runs an action in the PandocMonad, but returns all log
messages reported by that action instead of adding them to the main log.
+ Make CommonState opaque. Text.Pandoc.Class now exports CommonState as
an opaque object, without its fields. [API change]
The internal module Text.Pandoc.Class.CommonState still exports
the fields.
+ Text.Pandoc.Class now exports the following new functions:
`getRequestHeaders`, `setRequestHeaders`, `getSourceURL`,
`getTrace`. [API change]
+ CommonState now has a `stManager` field. This allows us to cache the HTTP
client manager and reuse it for many requests, instead of creating it again
(an expensive operation) for each request. This fixes a memory leak and
performance issue in files with a large number of remote images (#10997).
* Lua subsystem (Albert Krewinkel):
+ Add function `pandoc.structure.unique_identifier`.
+ Add functions `pandoc.text.superscript` and `subscript`.
+ Use proper interface functions to access the CommonState.
The `PANDOC_STATE` is no longer a userdata object, but a table that
behaves like the old object. Log messages in `PANDOC_STATE.log` are now
in temporal order.
+ Add function `pandoc.path.exists`.
+ Add `normalize` function to *Pandoc* objects (#10356).
This function performs a normalization of Pandoc documents. E.g.,
multiple successive spaces are collapsed, and tables are normalized such
that all rows and columns contain the same number of cells.
+ Add more UTF-8-aware file operations to `pandoc.system`.
Functions that expect UTF-8-encoded filenames should make it easier to
write platform-independent scripts, as the encoding of the actual
filename depends on the system. In addition, there is a new
generalized method to run commands, and functions to retrieve XDG
directory names. The new functions are `command`, `copy`, `read_file`,
`remove`, `rename`, `times`, `write_file`, `xdg`.
+ Allow hslua-2.4.
+ Require lua-module-system 1.2.3. This provides List methods to the value
returned by `pandoc.system.list_directory` (#11032).
* MANUAL.txt:
+ Fix broken ConTeXt links (R. N. West, #11055).
+ Add `xml` as input/output format.
+ Fix minor capitalization typo (#11052, Albert Krewinkel).
* `doc/lua-filters`:
+ Fix docs for `pandoc.Cite` (Albert Krewinkel).
+ Don't encourage returning tables of filters from Lua filters
(R. N. West, #10995). Use the `Pandoc:walk` method instead.
* doc/extras.md: Fix link to pandoc-mode (Erik Post).
* doc/lua-filters.md: Add example on using pandoc.Table constructor (#10956,
Sean Soon).
* Update `default.csl` from new chicago-author-date.csl, which is now
for the 18th edition.
* Use latest releases of citeproc, typst-hs, texmath, doclayout,
skylighting-core, skylighting.
## pandoc 3.7.0.2 (2025-05-28)
* RST writer:
+ Don't emit alignment markers in grid tables (#10857).
* Asciidoc writer:
+ Add support for sidebars (GHyman83).
* LaTeX writer:
+ Include alt option in `\includegraphics` (#6095).
* Markdown writer:
+ Preserve figure attributes (Nikolay Yakimov, #10867).
Fixes a regression introduced by 0d2114e, which caused the
Markdown writer to ignore attributes on the figure if it
has class or key-value attributes set.
* HTML writer:
+ Use the ID prefix in the ID for the footnotes section (Benjamin Esham).
* Text.Pandoc.Writers.Shared:
+ `gridTable`: fix (3.7) regression with missing cell alignments (#10853).
+ `gridTable`: fix headings with colspans (#10855). If the heading
contains a colspan, we still need to include information in the header
line about the colspecs.
+ `gridTable`: fix headerless tables. The top line should encode
colspan information.
* Text.Pandoc.SelfContained:
+ Fix handling of empty script element (#10862). Previously in this
case the closing tag was dropped.
+ Do not drop `data-` attributes in script tags (#10861).
* Lua subsystem (Albert Krewinkel):
+ Add function `pandoc.mediabag.make_data_uri` (#10876).
The function takes a MIME type and raw data from which it creates an
RFC 2397 data URI.
* `tools/update-lua-module-docs`: fix handling of wikilinks
(Albert Krewinkel).
* `doc/lua-filters.md`: add missing docs for `pandoc.Caption`
(Albert Krewinkel).
* Require texmath 0.12.10.3, typst 0.8.0.1
## pandoc 3.7.0.1 (2025-05-17)
* Text.Pandoc.Shared.Writer: Fix numerous problems with `gridTable` and add
tests (#10848). These fixes affect the Markdown, RST, and Muse writers.
* Fix context writer/template to produce tagged PDFs (#10846).
As before, the `tagging` extension must be enabled.
We now add the command that tells ConTeXt to start tagging.
## pandoc 3.7 (2025-05-14)
* Add new command-line option `--variable-json` (#10341).
This allows non-string values (booleans, lists, maps) to be given to
template variables on the command line.
* The `--pdf-engine` option can now take `groff` as a value.
* Markdown writer:
+ Avoid spaces after/before open/close delimiters (#10696).
E.g. instead of rendering `x space y` as `x* space *y` we render
it as `x *space* y`.
+ Handle row/colspans in grid tables, and expand cells when it isn't
possible to lay them out without breaking string of non-whitespace.
+ Render a figure with Para caption as implicit figure (#10755).
+ When falling back to a Div with class `figure` for a figure that
can't be represented any other way, include a Div with class
`caption` containing the caption.
+ Improve use of implicit figures when possible (#10758).
When the alt differs from the caption, but only as regards formatting, we
still use an implicit figure.
+ Omit initial newlines in gfm `math` blocks to avoid an ugly blank line.
* Support the `four_space_rule` extension for `plain` output (#10813,
Manolis Stamatogiannakis).
* RST writer:
+ Handle row/colspans in grid tables, and expand cells when it isn't
possible to lay them out without breaking string of non-whitespace.
* Muse writer:
+ Handle row/colspans in grid tables, and expand cells when it isn't
possible to lay them out without breaking string of non-whitespace.
* JATS writer:
+ Fix escaping for writing-review-editing role (#10744).
* HTML writer:
+ Remove trailing slash from default revealjs URL (#8749). This
avoids a double slash in the URL's path component.
* LaTeX writer:
+ Make alignment work within `multirow` in tables (#10772).
* Typst writer:
+ Support `mark` class on spans (#10747).
+ Add equation label if math contains `\label{..}` (#10805).
* Roff format writers (man, ms):
+ Use the most compatible form for roff escapes (#10716).
For example, `\(xy` instead of `\[xy]`. This was the original
AT&T troff form and is the most widely supported. The
bracketed form causes problem for some tools, e.g.
`makewhatis` on macOS. And emit `e` followed by an escape
for a unicode combining accent rather than the form `\[e aa]`,
which works for groff but not e.g. on macOS's man.
This change affects Text.Pandoc.RoffChar,
Text.Pandoc.Writers.Roff, and the Man and Ms writers.
* Docx writer:
+ Ensure that figures and tables with custom styles are not dropped
(#10705).
+ Preserve Relationships for images from reference docx (#10759).
This should allow one to include an image in a reference.docx and
reference it in an openxml template.
+ Don't renumber rels (#10769). We used to renumber the
Relationships so they didn't conflict with the set of fixed
Relationships we imposed. We are now preserving the ids
from the reference doc's document.xml.refs, so we shouldn't
renumber them or references introduced by the user (e.g. in
a template) will fail.
* Ms writer:
+ Improve PDF TOC labels. We now use the plain writer to render these,
so that Greek characters etc. will show up properly.
+ When no `pdf-engine` variable is specified, do not use the
`.pdfhref` macros at all (#10738). This gives better results for links
in formats other than PDF, since the link text would simply
disappear if it exists only in a `.pdfhref` macro. When a PDF
engine is specified, escape the argument of `.pdfhref O` in a way
that is appropriate.
* OpenDocument writer:
+ Fix character styles in footnotes (#10791). Character
styles governing the position of the footnote reference
should not be imposed on the footnote text.
* Powerpoint writer:
+ Use reference-doc font for captions (#9896, R. N. West).
* DocBook writer:
+ Use literallayout element for LineBlock (#10825).
* MediaWiki reader/writer:
+ Allow definition on same line as term (#10708).
* LaTeX reader:
+ Skip at most one argument to LaTeX tabular newline (#7512,
Evan Silberman).
+ Disable ligatures inside `\texttt` (#10781).
+ Support more symbol commands (#10782).
* Commonmark Reader:
+ Handle GFM math irregularity with braces (#10631). In GFM, you need
to use `\\{` rather than `\{` for a literal brace.
* DocBook reader:
+ Improve handling of literallayout (#10825). This is now only made
a CodeBlock when there is a `monospaced` class. Otherwise it is made
a LineBlock.
* Org reader:
+ Add AVIF to Org Reader image extensions (#10736, Christian Christiansen).
+ Don't include newlines in inine code/verbatim (#10730).
Convert newlines to spaces as we do in other formats.
+ Change handling of inline TeX (#10836). Previously inline
TeX was handled in a way that was different from org's own export,
and that could lead to information loss. This was particularly noticeable
for inline math environments such as `equation`. Previously, an
`equation` environment starting at the beginning of a line would create
a raw block, splitting up the paragraph containing it (see
#10836). On the other hand, an `equation` environment not
at the beginning of a line would be turned into regular
inline elements representing the math. (This would cause
the equation number to go missing and in some cases degrade
the math formatting.) Now, we parse all of these as raw
"latex" inlines, which will be omitted when converting to
formats other than LaTeX (and other formats like pandoc's
Markdown that allow raw LaTex).
* Beamer template: fix regression in 3.6.4, reverting the omission of
`\date` when the document does not have a date. By default, beamer
will display a date when no `\date` is present in the title block,
so this was an unintended behavior change. The reverted
change was motivated by the desire to include a custom
`\date` in the frontmatter via header-includes. This can be
achieved more simply by simply setting the `date` variable.
In markdown you can even use `date` in metadata and put some
raw LaTeX there.
* Ms template:
+ Use T rather than P as default font family (#10738).
+ Put PDF-specific things under a conditional.
Don't include them if `pdf-engine` isn't set.
* Upgrade reveal.js URL to v5 (#10740, Kolen Cheung).
v4 is no longer available on unpkg.com.
* Text.Pandoc.PDF: Allow `groff` to be used as `--pdf-engine` with `ms`
(#10738). When `groff` is used as a PDF engine, the `groff`
extension to `ms` is automatically enabled. Limitations:
- `groff` currently produces larger PDFs than `pdfroff`.
- With `groff`, a table of contents produced with
`--table-of-contents/--toc` will always be placed at the end of
the document.
- Certain characters (e.g. Greek characters) may be dropped in
the PDF outline.
* Text.Pandoc.Writers.Shared:
+ Export `delimited` [API change].
+ New version of `gridTable` (#6344) [API change]. This
handles row and colspans. It also ensures that cells won't
wrap text in places where it wouldn't normally wrap, even
if this means making the cells wider than requested by the
colspec (#9001, #7641). Because the parameters are
different, this is a breaking API change.
* Text.Pandoc.App: set `pdf-engine` variable.
If `--pdf-engine` is specified or if a PDF is being produced, we set the
`pdf-engine` variable. This allows writers and templates to behave
differently depending on the PDF engine.
* Text.Pandoc.Class and Text.Pandoc.URI:
+ Fix parsing of base64 data URIs to allow URI escapes and
whitespace (which will be ignored) (#10704).
+ Handle percent encoding in `pBase64URI` instead of
unescaping later, for efficiency (#10704).
* Text.Pandoc.Citeproc.BibTeX:
+ Recognize `en` as a `langid` in biblatex bibliographies (#10764).
* Text.Pandoc.MIME:
+ Add mime type and extension for `avif` (#10704).
+ Handle `apng`, `avif`, `jxl` (#10704).
* Text.Pandoc.Readers.LaTeX.Math: export `inlineEnvironmentNames`.
Internal module, not a change to the public API.
* `reference.docx` (Andrew Dunning):
+ Remove extra spaces around text placeholders.
+ Add footnote block text sample.
* Text.Pandoc.Class.Sandbox:
+ Add `sandboxWithFileTree` function [API change] (Albert Krewinkel).
* Lua subsystem (Albert Krewinkel):
+ pandoc-lua-engine: add all test files to the cabal file.
+ Allow `pandoc.read` to be called in "sandbox" mode for added
security (#10831). Readers running in a sandbox will not be
able to access the network or file system. The sandbox is
enabled if the fourth parameter is a list of files or
filename/content pairs. The files are read and then made
available in the sandbox via en ersatz file system.
* Makefile:
+ Add target `release-checkist`.
+ Install @daisy/ace from npm if not present.
+ Use pandoc lua instead of lua.
+ Fix typo in `latex-package-dependencies` target.
+ Use `jq` instead of `json_reformat` in `validate-docx-golden-tests2`.
* NiX infrastructure: new working `flake.nix` and simpler `shell.nix`.
Removed old `default.nix`.
* Require random >= 1.3 and use `splitGen`. `split` has been deprecated.
* Use citeproc-0.9. Bump citeproc bounds for pandoc, pandoc-lua-engine.
* Use texmath-0.12.10.1.
* Use released typst 0.8 (partially supporting typst 0.13).
* Use citeproc 0.9.0.1.
* MANUAL.txt:
+ Fix default URL for revealjs.
+ Add note that `alerts` extension only works with commonmark (#9716).
+ Remove "Body Text Char" from list of Word styles that can be customized
using a reference.docx (#10646). This doesn't seem to be present in
pandoc-generated docx files, nor is it a Word default.
+ For pandoc lua, add note about the environment.
+ Improve documentation of `--variable` option.
* `doc/typst-property-output.md`: Mention that `typst:no-figure` is a
class, not an attribute (#10826, Niklas Eicker).
* Change RELEASE-CHECKLIST to RELEASE-CHECKLIST-TEMPLATE.org. Use org-babel
to automate many of the steps of the release.
* INSTALL.md: update MacPorts information (#10719, Mohamed Akram).
* COPYRIGHT: fix link to source code.
* CONTRIBUTING.md: Fix link to discussion forum. (#10834, R. N. West).
## pandoc 3.6.4 (2025-03-16)
* Disable `citations` extension in writers if `--citeproc` is used (#10662).
Otherwise we get undesirable results, as the format's native
citation mechanism is used instead of (or in addition to) the
citeproc-generated citations.
* Markdown reader:
+ Allow line break between URL and title of link (#10621).
+ Give better position information when YAML metadata parsing fails
with a YAML exception (#10231).
+ Fixed `escapedChar'` parser (#10672). It should not accept
escaped newlines.
+ Remove some misguided list fanciness (#9865, #7778, cf. #5628).
Previously we tried to handle things like commented out list items:
```
- one
- three
```
and also things like:
```
- one `and
- two` and
```
But the code we added to handle these cases caused problems with
other, more straightforward things, like:
````
- one
- ```
code
```
- three
````
So we are rolling back all the fanciness, so that the markdown
parser now behaves more like the commonmark parser, in which
indicators of block-level structure always take priority over
indicators of inline structure.
* HTML reader:
+ Skip MathJaX-introduced cruft (#10673).
+ Ignore style tags in the body (#10643).
* LaTeX reader:
+ Better handle comments/whitespace in option lists and includes (#10659).
+ Support `\newline`, `\linebreak`.
* Docx reader/writer:
+ Revert commit adding row heads
(cbe67b9602a736976ef6921aefbbc60d51c6755a) (#10627).
Word sets `w:firstColumn="1"` by default for tables. You have to find
the Table Design tab and explicitly uncheck "First Column" to make this
go away. In most cases, I don't think writers intend to designate
the first column as a row head, so this commit is going to produce
unexpected results. In addition, because of the table normalization
done by pandoc-type's `tableWith`, any table containing a colspanned
cell in the left-hand column will get broken if the first column is
designated a row head. For these reasons it seems best to revert this
change, which was made in response to #9495.
* LaTeX writer and template:
+ Remove `selnolig-langs` (#9863). We now specify the language as
a global option again, so we no longer need to specify it when
invoking selnolig.
+ Use babel options `shorthands=off` (#6817).
+ Use `*` for multirow width when no colwidth specified (#10685).
Otherwise the multirow will be excessively wide.
+ Protect `\phantomsection` (#10688, etclub).
* Markdown writer:
+ Omit extra space after bullets (#7172). Those who want the old
behavior can obtain it by using `-t markdown+four_space_rule`.
+ Treat `Emph [Emph ils]]` as `ils` (#10642). Otherwise we get
`**content**` which means strong emphasis.
* EPUB writer:
+ Use a nonbreaking space after section number in nav.xhtml.
This seems to be required for iOS books app to display the space.
* Typst writer:
+ Better heuristics for escaping potential list markers (#10650).
+ Ensure that `citation-style` works as well as `csl` (#10661).
* Powerpoint writer:
+ Avoid extra blank lines before author when there is no
subtitle (#10619).
* JATS template:
+ Fix typo in author prefix in article.jats_publishing template
(#10622, Tiago-Manzato).
* Text.Pandoc.Parsing:
+ Smart quote parsing: ignore curly quotes (#10610). Previously we
tried to match curly quotes as well as straight quotes,
producing Quoted inlines. But it seems better just to assume
that those who use curly quotes want them passed through
verbatim. This also fixes an (unintended) bug whereby curly
single left quotes would sometimes be changed to single right quotes.
* Text.Pandoc.Shared:
+ `makeSections`: put some attributes on section element only.
Certain `role` and `epub:type` attributes should only be on the section
(and indeed, many `role`s give a validation error if left on the
heading element).
* Text.Pandoc.Logging:
+ Change NoTitleElement from WARNING to INFO (#10671). Users
commonly complain about the warning when producing HTML
documents without an explicit title. It seems that an info
message is more appropriate, since pandoc's default here (using
the input's base name) ensures compliance with the standard and
many users are happy with that default. Those who want to make
sure the message is seen can use `--verbose`.
* Beamer template: only emit `\date` if set (#10687, josch).
* Fix invalid OOXML in definition_list.docx test (#10394).
* MANUAL.txt:
+ Correct typo: 'date' for doubled 'title' (#10654, Olivier Dossmann).
+ Add note about `template` variable for typst.
+ Change maxwidth default in MANUAL.txt (#10683).
+ Improve EPUB metadata documentation.
+ In Security section, alert readers to a threat relating to iframe in
HTML, and add LaTeX, Typst to the list of formats that have an
`include` (#10682).
* `doc/lua-filters.md`: Add missing html_math_method 'katex' (R. N. West).
* Use texmath 0.12.9.
* Use typst 0.7. Fixes an issue with package loading, a regression
in pandoc 3.6.3.
## pandoc 3.6.3 (2025-02-09)
* Track wikilinks with a class instead of a title (Evan Silberman).
Previously wikilinks were distinguished by giving them the `title`
`wikilink`. Now that we have link attributes, it makes more sense
to give them the `class` `wikilink`. This change affects all readers
and writers that support wikilinks.
* DocBook reader:
+ Handle title inside `orderedlist` (#10594). Also some other
elements that allow title: `blockquote`, `calloutlist`, etc.
+ Better handle `informalequation` (#10592, tombolano). Include `id`
attribute.
+ Better handle `formalpara`, `example`, and `sidebar` (#8666, tombolano).
Include identifiers and titles in each case.
* Markdown reader:
+ Simplify and fix normal citation parsing (#10584).
This fixes a bug that causes some normal citations to be
parsed as bracketed regular citations.
* ODT reader:
+ Create Figure elements for images that are figures (#10567).
+ Avoid producing spurious blockquotes in list items (#9505).
+ Fix unwanted block quotes (#10575). Previously the reader created
block quotes whenever a paragraph was marked indented (even though
this just affects the first line). With this change we still
generate block quotes for content that has an altered left margin,
but not for indented paragraphs.
* Docx reader:
+ Do not issue warning for comments with `+styles` (#10571, Stephen Reindl).
* LaTeX reader:
+ Test \{,re}newcommand arguments (#4470, Evan Silberman).
* Pod reader:
+ Consume blanks after =encoding in pod reader (#10537, Evan Silberman).
* JATS writer:
+ Add CRediT roles to JATS (Charles Tapley Hoyt and Jez Cope, #10152).
Enable annotating author roles using the Contribution Role Taxonomy
(CRediT) and export this information in conformant JATS.
* LaTeX writer/templates:
+ Improve babel support (#8283). Previously we used the `.ini`
files for every language, but for European languages these tend to
provide inferior results to the `.ldf` files used by classic
Babel. Currently Babel documentation recommends using the classic
system for European languages written in Latin and Cyrillic
scripts and Vietnamese. So the LaTeX writer and template now
follow this guidance.
Main languages in the list of languages with good "classic" support
are added to global documentclass options and will be automatically
handled by Babel using the `.ldf` files.
If the main language is not in this list, the `babeloptions` variable
will be set to `provide=*`, which will cause support to be loaded from
the `.ini` file rather than an `.ldf`. So, for example, setting
`-V babeloptions=''` with a polytonic Greek document will cause the
`.ldf` support to be used instead of the `.ini`.
The default setting of this variable can be overwritten, but in most
cases the default should give good results.
+ Allow `csquotesoptions` to be specified.
+ Fix indentation bugs in `font-settings.latex`.
* Docx writer:
+ Repeat reference doc's `sectPr` for each new section (#10577).
Previously we were only carrying over the reference doc's `sectPr`
at the end of the document, so it wouldn't affect the intermediate
sections that are now added if `--top-level-division` is `chapter`
or `part`. This could lead to bad results (e.g. page numbering
starting only on the last chapter).
+ Create section divisions with `--top-level-division=part` (#10576).
+ Improve title style in reference.docx; base Author and Date
on Title; remove condensed spacing (Andrew Dunning, #10581).
* Typst writer:
+ Brace tables with `typst:no-figure` and `typst:text` attributes (#10563,
Gordon Woodhull).
* Ms writer:
+ Fix escaping of `-` (#10536). `-` should now be escaped in man
output but not in ms output (where `\-` is a unicode minus sign).
* HTML styles: fix style of `hr` so it works when printed (#10535, Hendrik Erz).
Previously `background-color` was used to style the hr, but this gets ignored
when printing. This commit uses `border-top` instead.
* Text.Pandoc.Shared:
+ Handle `` as a span-like inline in `htmlSpanLikeElements`
(#5793, Evan Silberman).
* Text.Pandoc.MediaBag:
+ Prefer MIME type when determining extensions for MediaBag items (#10557,
Max Heller). This should give different results for remote images
that are served at URLs that do not contain misleading extensions
(e.g. `shields.io`).
* Text.Pandoc.Citeproc:
+ Fix moving punctuation before citation notes. This previously worked with
regular citations, but not author-in-text citations. Now it works with both.
* `doc/lua-filters.md`:
+ Correct luacheck URL (#10589, R. N. West).
+ Add static analysis paragraph to debugging section (#10568, R. N. West).
+ Add note about extensions handling in `read` and `write` (Albert Krewinkel).
* `doc/extras.md`:
+ Add entry for pandoc-subfigs (R. N. West).
+ Update diagram Lua filter URL and description (R. N. West).
* MANUAL.txt:
+ Add note on using typst to produce pdf/a-2b.
+ Document top-level-division functionality with Docx (#10579, Andrew Dunning).
* Raise xml-conduit upper bound.
* Depend on latest commonmark-pandoc, commonmark-extensions,
citeproc, typst.
* Makefile: make `make binpath` quiet.
## pandoc 3.6.2 (2025-01-12)
* New input format: `pod` (Evan Silberman). Pod ("Plain old documentation")
is a markup languaged used principally to document Perl modules and
programs.
* New reader module Text.Pandoc.Readers.Pod, exporting `readPod`
[API change].
* Docx reader:
+ Support row heads in tables (#9495). Reader: When `w:tblLook` has
`w:firstColumn` set (or an equivalent bit mask), we set row heads = 1
in the AST.
+ Read table styles as custom styles when `styles` extension
is enabled (#9603).
* HTML reader:
+ Add size information for font awesome SVG icons (#10134).
If the icon has class `fa-fw` or `fa-w16` or `fa-w14`, we add a width
attribute to prevent the icon from appearing full-width in PDF or
docx output.
* Djot reader:
+ Use a Span with class "mark" rather than "highlighted" for
highlighted text, for consistency with the other pandoc readers and
writers.
* mandoc reader:
+ Add mdoc St for C23 (Evan Silberman).
* RST reader:
+ Fix handling of underscores (#10497). Fixes a a regression
introduced in 3.6.
* Docx writer:
+ Support row heads in tables (#9495). Writer: set `w:firstColumn` in
`w:tblLook` when there are row heads. (Word only allows one, so this
is triggered by any number of row heads > 0.)
* Djot writer:
+ Render a Span with sole class "mark" as highlighted text.
* Asciidoc writer:
+ Don't emit the class in a span if it's just "mark" (#10511).
The "mark" class is used for highlighting, and Asciidoc treats
bare `#...#` with no attributes as highlighted text.
+ Improve escaping (#10385, #2337, #6424).
* EPUB v2 writer:
+ Fix cover image (#10505). This is a regression introduced in 3.6.
* Typst writer:
+ Fix handling of pixel image dimensions (#9945).
These are now converted to inches as in the LaTeX writer.
* Improve error message given when users specify `asciidoc` as input
format (#8416, Santiago Zarate).
* Allow random 1.3.
* Use texmath 0.12.8.13 (typst improvements).
* `lua-filters.md`: document `system.os` return values (#10523).
* `MANUAL.txt`:
+ Improve manual's coverage of custom styles.
+ Replace LibreOffice PDF documentation link to latest so it links
to the latest major release rather than a specific major release
(which there are two of every year) (Stéphane Guillou).
+ Improve links and descriptions for `odt`, `opendocument` (#10518).
## pandoc 3.6.1 (2024-12-23)
* Allow YAML bibliographies to be arrays of references (#10452).
Previously, they had to be YAML objects with a `references` key.
* Change `--template` to allow use of extensionless templates (#5270).
The intent is to allow bash process substitution: e.g.,
`--template <(echo "foo")`. Previously pandoc *always* added an
extension based on the output format, which caused problems
with the absolute filenames used by bash process substitution
(e.g. `/dev/fd/11`). Now, if the template has no extension,
pandoc will first try to find it without the extension, and
then add the extension if it can't be found. So, in general,
extensionless templates can now be used. But this has been
implemented in a way that should not cause problems for
existing uses, unless you are using a template `NAME.FORMAT`
but happen to have an extensionless file `NAME` in the template
search path.
* Allow `--shift-heading-level-by=-1` to work in djot in the same way
it works for other formats (with the top-level heading being
promoted to metadata title) (#10459). This needed special
treatment because of the way djot surrounds sections with Divs.
* RST reader:
+ Handle explicit reference links (#10484, Evan Silberman).
This case was missed when changing the reference link strategy for
RST to allow a single pass. (It is a regression in pandoc 3.6.)
* Markdown reader:
+ Use T.P.URI's `pBase64DataURI` in parsing data URIs (#10075,
Evan Silberman and John MacFarlane).
+ More efficient base64 data URI parsing (#10075, Evan
Silberman and John MacFarlane). This should yield dramatic
performance improvements for markdown documents containing
large data URIs in images.
* HTML reader:
+ Don't canonicalize data: URIs (#10075). It can be very expensive
to call network-uri's URI parser on these.
* LaTeX reader:
+ Handle `figure*` environment as a figure (#10472).
* MediaWiki reader:
+ Allow empty quoted attributes (#10490).
+ Allow cells starting with `+` (#10491).
* Textile reader:
+ Improve parsing of spans (#9878). The span needs to be separated
from its surroundings by spaces. Also, a span can have attributes,
which we now attach.
+ Inline constructors shouldn't trigger if closer is preceded by
whitespace (#10414).
* Docx writer:
+ Put chapters in separate sections, and restart footnotes
by section by default (#2773). The main effect of this change is that
when `--top-level-division=chapter` is used, chapters will start on
a new page and footnote numbering will restart for each chapter.
Both of these defaults can be overridden in the reference.docx.
+ Use styleIds not styleNames for Title, Subtitle, etc.
(#10282). This fixes a regression introduced in pandoc 3.5.
This change affects the default openxml template as well as the
OpenXML writer.
* Markdown writer:
+ Avoid collapsing of initial/final newline in markdown raw blocks.
This makes it easy to write a filter that adds extra blank lines
before certain elements (#10477).
* Mediawiki writer:
+ Escape line-initial characters that would otherwise be interpreted
as list starts (#9700).
* LaTeX writer:
+ Properly handle boolean value for `csquotes` variable (#10403).
+ Use displayquote for block quotes with `csquotes` (#10456).
* HTML writer:
+ Avoid calling parseURIString for data URIs (#10075).
This was done to determine the "media category," but we can
get that directly from the mime component of data: URIs.
* Typst writer:
+ Properly handle data URIs in images (#10460).
* LaTeX/Beamer templates:
+ Fix default.beamer `nocite` location (Thomas Hodgson).
It must be inside a frame or it is ignored (#10465).
+ Move nocites from LaTeX preamble to body (#10461, Thomas
Hodgson). Putting `\nocite` in the preamble works only with biblatex.
* Text.Pandoc.Parsing:
+ Correct example in comment on `charsInBalanced` (Evan Silberman).
* Text.Pandoc.Error:
+ Mention typst in rendering `PandocUnknownWriterError` for `pdf`
(Evan Silberman).
* Text.Pandoc.MediaBag:
+ `insertMedia`: fast path for data URIs. Avoid the slow URI
parser from network-uri on large data URIs (#10075).
* Text.Pandoc.Class:
+ Add shortcut for base64 data URIs in `downloadOrRead` (#10075).
This avoids calling the slow URI parser from network-uri on
data URIs, instead calling our own parser.
* Text.Pandoc.MIME:
+ Fix `extensionFromMimeType`. We had a few special cases encoded,
but as previously written they wouldn't work properly with
modifiers like `;charset=utf-8`.
* Text.Pandoc.URI:
+ Export `pBase64DataURI`. Modify `isURI` to use this and avoid
calling network-uri's inefficient `parseURI` for data URIs.
* Text.Pandoc.PDF:
+ Fix temp file extension in `toPdfViaTempFile` (#10468).
This fixes a regression in pandoc 3.6, which changed
the extension from `html` to `source`. Apparently
`wkhtmltopdf` needs it to be `.html`. So now we have added
a parameter to `toPdfViaTempFile` that allows the extension
to be specified in a way that is appropriate to the PDF engine
used.
* Lua (Albert Krewinkel):
+ Support more elements as input to `pandoc.utils.stringify`
(#10450). Elements of type Caption, Cell, TableHead, and TableFoot
can now be stringified.
+ Add `Caption` constructor to `pandoc` module.
* Miscellaneous code quality improvements (Joseph C. Sible).
* Depend on citeproc 0.8.1.2, skylighting and skylighting-core
0.14.5.
* `doc/lua-filters.md: Fix links to constructors (Albert Krewinkel).
## pandoc 3.6 (2024-12-07)
* Add `mdoc` as input format (Evan Silberman). This change
introduces a reader for mdoc, a roff-derived semantic markup
language for manual pages. This reader has been developed almost
exclusively against mandoc's documentation and implementation of
mdoc as a reference, and the real-world manual pages tested
against are those from the OpenBSD base system. Of ~3500 manuals
in mdoc format shipped with a fresh OpenBSD install, 17 cause the
mdoc reader to exit with a parse error. Any further chasing of
edge cases is deferred to future work.
* New module: Text.Pandoc.Readers.Mdoc, exporting `readMdoc` [API change].
* Issue warnings for duplicate YAML metadata keys (#10312).
* Ensure that `--sandbox` affects `--embed-resources`. Previously it
did not (contrary to what was implied by the manual), which means
that an image with URL `/etc/passwd` would leak an encoded version
of that file to HTML output with `--self-contained` or
`--embed-resources`, even if `--sandbox` was used. Thanks to
Samuel Mortenson for pointing out the issue.
* Text.Pandoc.App.OutputSettings: add `sandbox'` function.
This computes the sandboxed files from Opt and avoids code repetition.
* Docx reader:
+ Parse index references as empty spans with attributes (#10171).
Attributes included are `entry`, and optionally `bold`, `italic`,
`yomi`, `see`.
+ Don't create multiple paragraphs for title or subtitle (#10359).
If there are multiple paragraphs with Title or Subtitle style,
use only the first for metadata.
+ Handle case where Zotero `itemData` has different id from the
`citationItem` id. In this case we use the `citationItemId`
in the bibliography as well, overriding the `referenceId`
in the itemData (#10366).
* LaTeX reader:
+ Put parsed minipage in specially marked Div (#10266).
* HTML reader:
+ Parse footnotes defined by dpub-aria roles (#5294).
* MediaWiki reader:
+ Fix indented tables with caption (#10390).
+ Fix parsing of col/rowspan (#6992).
* Typst reader:
+ Avoid generating empty paragraphs.
+ Support `underparen`, `overparen`.
+ Fix `#quote` attribution. If attribution is not present, don't print
the `--` (#10320).
+ Fix typo in unicode code point for em dash (see #10320).
* Commonmark reader:
+ `implicit_figures` should check for empty caption
and not produce an implicit figure in this case (#10429).
* RST reader:
+ Use a new one-pass parsing strategy. Instead of having an initial pass
where we collect reference definitions, we create links with target
`##SUBST##something` or `##REF##something` or `##NOTE##something`,
and resolve these in a pass over the parsed AST. This allows us to handle
link references that are not at the top level (#10281).
+ Ignore newlines in URL in explicit link (#10279).
+ Handle block level substitutions.
+ Support `:file:` on raw directive (#8584).
+ Implement option lists (#10318).
+ Avoid putting metadata in Para (#7766). Create MetaInlines when possible,
just as with markdown input. MetaBlocks is still used when there are
multiple paragraphs or non-paragraph content.
This change also affects field lists.
+ Fix linked substitutions (#6588). E.g. `|Python|_`.
+ Support inline anchors (#9196).
+ Explicit links define references (#5081). For example,
``Go to `g`_ `g `_.`` should produce two links to
www.example.com.
* EPUB writer:
+ Use standardized filename for cover image instead of the original name
(#10404). This avoids problems with e.g. filenames containing spaces.
* Markdown writer:
+ Issue INFO warning when not rendering table, e.g., when `raw_html` is
disabled and the table can't be fit into a supported markdown table
format (#10407).
+ Respect empty LineBlock lines in `plain` output (Evan Silberman).
The plain writer behaved as a markdown variant with `Ext_line_blocks`
turned off, and so empty lines in a line block would get eliminated.
* LaTeX writer:
Ensure that beamer footnotes go on frame, not column (#5769).
* HTML writer:
+ Unwrap empty incremental divs (#10328, Albert Krewinkel).
Divs are unwrapped if the only purpose of the div seems to be to control
whether lists are presented incrementally on slides.
* Typst writer:
+ Make template sensitive to a `page-numbering` variable (#10370).
This can be set to an empty string (or, in metadata, to false) for
no page numbers.
+ Make `smart` extension work (#10271). If `smart` is not enabled, a command
in the default template will disable smartquote substitutions.
When `smart` is enabled, render curly apostrophes as straight
and escape straight apostrophes. When `smart` is disabled,
render curly apostrophes as curly and don't escape straight
apostrophes. Similarly for quotes, em and en dashes. This should
give more idiomatic typst output, with fewer unnecessary
escapes.
* ANSI writer:
+ Respect empty LineBlock lines (Evan Silberman).
* JATS writer:
+ Correct spelling of suppress attribute (#10350, Andreas Deininger).
* Typst template:
+ Remove `definitions.typst` partial.
+ Remove unnecessary definition of `endnote`.
+ Incorporate the one remaining definition into `default.typst`.
+ Use typst 0.12 code for two column layout (#10294, Luis Rivera).
+ Note: the new templates presuppose typst 0.12; if you try to use an
earlier version of typst, an error will be raised.
* LaTeX/Beamer template:
+ Split `fonts.latex` partial into two parts: `fonts.latex` and
`font-settings.latex`.
+ In beamer template, load beamer theme between `fonts.latex` and
`font-settings.latex`. This allows a theme (such as metropolis)
to set its own default font, while still allowing the user to
override it. This fixes a regression in pandoc 3.5 (#10297).
+ Note: Users who have custom templates based on pandoc 3.5 templates will
need to add `font-settings.latex()` after `fonts.latex()` in the
latex template. In a beamer template, the beamer theme-setting
code needs to be moved between these two partials.
* ConTeXt template: Ensure that font names don't wrap (#10305).
* `epub.css`: remove background-color (#10264, Suraj Patil).
With this greyish background color, epubs look bad on a Kindle (#10263).
* Text.Pandoc.ImageSize: add WebP support (Evan Silberman, #10397).
Add `Webp` constructor on ImageType [API change].
* Text.Pandoc.Readers.Roff and a new unexported module
Text.Pandoc.Readers.Roff.Escape: parameterize Roff
escaping (Evan Silberman) [API change]. This allows code to
be reused between the mdoc and man readers, despite the
differing Token types.
* Text.Pandoc.PDF:
+ PDF via LaTeX: always do max runs if `toc` is present (#10308).
The old method (checking to see if toc hash had changed) is not
completely reliable.
+ Use `.source` extension, not `.html`, in `toPdfViaTempFile` (#10314).
* Text.Pandoc.Logging: add `YamlWarning` constructor to `LogMessage`
[API change] (#10312).
* Text.Pandoc.Format: remove duplicate typst entry (#10388, Caleb Mclennan).
* Fix a typo in the `ua.yaml` localization for 'See' (Jens).
* Lua subsystem (Albert Krewinkel):
+ Remove prefixes from Lua type names (#8574). Lua type names were
inconsistent with regard to the use of prefixes; all prefixes
are removed now, and Lua types now have the same name as the
Haskell types. The use of app-specific prefixes is suggested by
the Lua manual to avoid collisions. However, this shouldn't be a
problem with pandoc, as it cannot be used as a Lua package.
* doc/libraries.md: Add newly developed Haskell packages.
Sort list alphabetically (Albert Krewinkel).
* doc/lua-filters.md: document `pandoc.List:iter` method (Albert Krewinkel).
List objects have a new function `iter` that returns an iterator
function that returns the next list item on each call.
* MANUAL.txt:
+ Clarify what the example of YAML EPUB metadata shows (#10405).
+ Fix typo in template syntax (#10265, Pascal Wagler).
+ Update manual with information on openxml template (#10273).
+ Clarify that `--variable` can only assign string values (#10298).
* Fix comments in TEI writer referring to DocBook (#10430, Evan Silberman).
* Fix several typos in documentation (#10349, Andreas Deininger).
* Allow Diff 1.0.
* Add font-settings.latex partial to pandoc.cabal (#10379).
* Bump upper bound for data-default.
* Use latest typst, texmath, pandoc-lua-marshal, commonmark-pandoc,
commonmark-extensions, skylighting, skylighting-format-blaze-html.
## pandoc 3.5 (2024-10-04)
* Add command-line options `--list-of-figures/--lof` and
`--list-of-tables/--lot` (#10029, Akash Patel).
Only docx, latex, and context are affected by these options currently.
Setting the `lof` and `lot` variables will also work for the formats
that are currently supported.
* Defaults files: interpolation of environment variables now
works for `to` and `from` fields (#8024). This is needed because
these files can contain paths of custom readers/writers.
* Docx reader:
+ Reset lists after headers in same list `numId` (#10258).
To accomplish this, we add a Heading constructor to BodyPart and
include on it all the information list items have.
* DocBook reader:
+ Parse id, class, and tabstyle on tables (#10181, Erik Rask).
Add parsing of id (xml:id), class, and tabstyle XML attributes
for table and informaltable in the DocBook reader.
The tabstyle value is put in the 'custom-style' attribute.
* Dokuwiki reader:
+ Be more forgiving about misaligned lists, like dokuwiki itself (#8863).
+ Improve blockquote parsing in dokuwiki. Allow for quoted code blocks.
+ Enable smart extension.
+ Properly parse `--` and `---` as dashes.
+ Fix block quote behavior (#6461). Blockquotes are not really block
containers in DokuWiki; the lines are interpreted literally (so,
e.g., you can't start a list), and line breaks are added at the ends.
* EPUB reader:
+ Fix links to other files in the EPUB, making them internal links
to a fragment derived from the filename (#10207). There was
already code to handle links like `#foo`, but not to handle links
like `ch0001.html#foo`.
* LaTeX reader:
+ Add em, ex, px, mu to list of units for dimension args (#10212).
* ANSI writer:
+ Fix subscripts (Evan Silberman).
* DokuWiki writer:
+ Don't emit `` tags (#7413). The use of these tags is now
strongly discouraged for security reasons, and will be removed.
We previously used them as a fallback for lists that could not
be represented using DokuWiki syntax, e.g. ordered lists with
fancy numbers or lists with multiple blocks in their items.
We also used them for block quotes with multiple blocks as
their contents. We now use the `` syntax (from the optional
WRAP plugin) to handle lists with multiple blocks as their contents.
A new method of handling block quotes with complex contents
has the side benefit of also handling nested block quotes,
which weren't supported before.
`` and `` tags are only for raw HTML blocks and
inlines, and only if the `raw_html` extension is enabled. (It is
now a valid extension for `dokuwiki`, though off by default.)
* Docx writer:
+ Support `--list-of-figures` and `--list-of-tables` (or `lof` and
`lot` variables) (Akash Patel).
* HTML writer:
+ Don't emit missing title/lang warnings if templates does not
contain the `pagetitle` or `lang` variables respectively (#9370).
* LaTeX writer:
+ Better fix for lists in definition lists (#10241).
In commit a26ec96d89ccf532f7bca7591c96ba30d8544e4a we added an
empty `\item[]` to the beginning of a list that occurs first
in a definition list, to avoid having one item on the line with
the label. This gave bad results in some cases (#10241) and there
is a more idiomatic solution anyway: using `\hfill`.
+ Avoid error on `refs` div with empty citations (#10185).
If there are no citations, don't emit an empty CSLReferences environment.
* RST writer:
+ Change bullet list hang from 3 to 2. This accords with the style in
the RST reference docs.
+ Handle cases where indented context starts with block quote (#10236).
In these cases we emit an empty comment to fix the point from
which indentation is measured; otherwise the block quote is not
parsed as a block quote. This affects list items and admonitions.
+ Don't enclose the list table in a `.. table::`; this leads to
doubled captions (#10226).
+ Fix alignment of list table items corresponding to cells (#10227).
* JATS template:
+ Support `floats-group` (Albert Krewinkel, see #10196).
The content of the `floats-group` variable is now rendered in a
`` element when using the *publishing* or *archiving* tag
sets.
* LaTeX and Beamer templates:
+ Split old default.latex into two templates, `default.latex` and
`default.beamer`, factoring common parts into partials:
`fonts.latex`, `common.latex`, `passoptions.latex`,
`hypersetup.latex`, `after-header-includes.latex`.
+ Make `default.beamer` the default template for beamer.
+ Add `shorttitle`, `shortsubtitle`, `shortauthor`, `shortinstitute`,
`shortdate` variables to beamer template (#10248, Thomas Hodgson).
+ Make `--number-sections` work with beamer (#12045, Thomas Hodgson).
+ Support a list of images for `titlegraphic` in beamer template
(#10246, Thomas Hodgson). Title graphic options will be
applied to each title graphic. Images will be separated by `\enspace`.
+ Beamer theme options (#10243)
+ Add theme options to beamer template: `colorthemeoptions`,
`fontthemeoptions`, `innerthemeoptions`, `outerthemeoptions` (#10243,
Thomas Hodgson).
+ Don't load amsmath, amssym in beamer template. These are loaded by
beamer automatically.
* Text.Pandoc.SelfContained:
+ Improve handling of links to remote CSS (#10261).
* Text.Pandoc.Class:
+ Allow extracting `data:` URIs even in PandocPure (`--sandbox`)
(#10249).
+ Export `extractURIData` [API change].
* Text.Pandoc.PDF:
+ Read `.toc` and `.log` files from output directory (#10186).
When this is different from the input directory, this is
where `.toc` and `.log` files are written.
* Text.Pandoc.Shared:
+ Modify `addPandocAttributes` for changes in commonmark-pandoc.
The new commonmark-pandoc version automatically adds the
attribute `wrapper="1"` on all Divs and Spans that
are introduced just as containers for attributes that belong
properly to their contents. So we don't need to add the
attribute here. This gives much better results in some cases.
Previously the wrapper attribute was being added even for
explicit Divs and Spans in djot, but it is not needed in these cases.
* Text.Pandoc.Options:
+ Add `writerListOfFigures` and `writerListOfTables` fields
to `WriterOptions` (#8245, Akash Patel). [API change]
* Text.Pandoc.App:
+ Add `optListOfFigures` and `optListOfTables` to `Opt` (#8245)
[API change].
* Lua subsystem (Albert Krewinkel):
+ Update List module (#9835). The module now comes with a method
`:at(index[, def])` that allows to access indices, accepts
negative indices to count from the end, and will return the
`def` value as a default if the list has no item at the given position.
Furthermore, the list constructor `pandoc.List` now accepts iterators.
E.g., `pandoc.List(text:gmatch '%S+')` returns the list of words
in `text`.
+ Support character styling via `pandoc.layout`. The `Doc` values
produced and handled by the `pandoc.layout` module can now
be styled using `bold`, `italic`, `underlined`, or `strikeout`. The
style is ignored in normal rendering, but becomes visible when
rendering to ANSI output. The `pandoc.layout.render` function
now takes a third parameter that defines the output style,
either *plain* or *ansi*.
+ It is now possible to return a single filter from a filter file, e.g.
``` lua
-- Switch single- and double quotes
return {
Quoted = function (q)
elem.quotetype = elem.quotetype == 'SingleQuote'
and 'DoubleQuote' or 'SingleQuote'
return elem
end
}
```
The filter must not contain numerical indexes, or it might be treated
as a list of filters.
+ Add `list_of_figures` and `list_of_tables` to writer options
(Akash Patel).
* Use latest releases of commonmark, commonmark-pandoc, texmath, djot.
* Stop depending on package SHA (Albert Krewinkel). Use `crypton` instead.
* `linux/make_artifacts.sh`: add riscv64 support (Olivier Benz).
* Fix invalid XML in `test/docx/normalize.docx` (#10242).
* `doc/lua-filters.md`: list functions in `pandoc.utils` alphabetically
(Albert Krewinkel).
* MANUAL.txt:
+ Clarify use of `beamerarticle` variable (#10250).
+ Add clarification to address user issues like #6704 (Yehuda Katz).
## pandoc 3.4 (2024-09-09)
* New output format: `ansi` (for formatted console output) (Evan Silberman).
Most Pandoc elements are supported and printed in a reasonable way, if
not always ideally. This version does no detection of terminal
capabilities, nor does it fall back to different output styles for
less-capable terminals.
* Add command line options `--table-caption-position` and
`--figure-caption-position`. These allow the user to specify whether
to put captions above or below tables and figures, respectively.
The following output formats are supported: HTML (and related such
as EPUB), LaTeX (and Beamer), Docx, ODT/OpenDocument, Typst.
* Change default `--pdf-engine` via HTML to WeasyPrint (#10142).
`wkhtmltopdf` is deprecated. `weasyprint` is the easiest-to-install,
maintained alternative. For better results, one might prefer
`pagedjs-cli`.
* Org reader:
+ Fix parsing of src blocks with an `-i` flag (#10071, Albert Krewinkel).
Tabs are now preserved in the contents of *src* blocks if the the block
has the `-i` flag.
* RTF reader:
+ Handle images inside `shp` contexts (#10145).
* RST reader:
+ Improve simple table support (#10093). Multiline rows occur
only when the *first* cell is empty; we were previously treating
lines with *any* empty cell as row continuations. In addition, we
no longer wrap multiline cells in Para if they can be represented
as Plain. This is consistent with docutils behavior.
* LaTeX reader:
+ Math environments don't have bracketed options (#10160).
+ Parse nested tabular environments (#4746).
* Typst reader:
+ Change how "block" elements are handled. Previously they were
always parsed as divs. But actually they can occur in some "inline"
contexts. Now we first try to parse them as inlines, and only as
blocks if that fails. A surrounding Div or Span element is added
only if there is an identifier.
* HTML reader:
+ Only parse main element's contents (if present) (#10140).
If main has an id or class, we include a div with that id or class;
otherwise just the contents.
+ Read TeX annotation in MathML content if present (#9971).
+ Better handle KaTeX-generated math (#9971). KaTeX emits the mathml
followed by a span with an HTML fallback. Previously pandoc was
converting both. We now ignore the HTML fallback span, marked
with class `katex-html`.
* Docx reader:
+ Add "SuppressAuthor" and "AuthorOnly" to citationMode
when `+citations` is used (thomjur).
* New module: Text.Pandoc.Writers.ANSI [API change] (Evan Silberman).
* Docx writer:
+ Support `custom-style` attribute for docx table (Sebbones).
+ Support `--number-offsets`.
+ Make table/figure rendering sensitive to caption position settings.
* OpenDocument writer:
+ Make table/figure rendering sensitive to caption position settings.
* Typst writer/template:
+ Implement figure caption positions by triggering a show rule in
the default template, which determines caption positions for
figures and tables globally.
+ Don't include trailing semicolon after `@` style citations with suffixes
(#10148).
+ Template: move header-includes before show doc (#9996, Gordon Woodhull).
* LaTeX writer:
+ Make table/figure rendering sensitive to caption position settings (#5116).
+ Preserve locator labels with `--natbib` (#10057).
* HTML writer/template:
+ Make `` placement sensitive to caption position
settings. For tables, `
` must be the first element, and
positioning is determined by CSS, for here we set a variable
which the default template is sensitive to.
+ Use `makeSectionsWithOffsets` for `writerNumberOffsets`,
instead of the old, inefficient code.
+ Don't add doc-biblioref role to every link in a citation;
only to links to the bibliography (#10156).
+ Add `data-` when rendering `label` attribute (#10048).
* Markdown writer:
+ Avoid emitting markdown caption if table has fallen back to raw HTML,
which will then contain a `
` tag (#10094).
+ Make math sensitive to `tex_math_gfm` extension (#9121).
This means that in GFM output, the "new style" math will be used
by default, e.g.
$`x=y`$
```math
x = y
```
To defeat this and get the older behavior, namely
$x=y$
$$x=y$$
one could use `-t gfm-tex_math_gfm`.
* AsciiDoc writer:
+ Add `link:` prefix when needed (#10105). AsciiDoc requires it
except for `http`, `https`, `irc`, `mailto`, `ftp` schemes (#10105).
+ Preserve original base level (#10062). We used to normalize so
that the base level is always 1, but asciidoc no longer seems
to care about that, and the behavior creates difficulties when
we are converting fragments.
+ Don't emit empty figure caption (#10047).
* ODT writer:
+ Add TableCaption to styles.xml (#10058, Ian Max Andolina).
* LaTeX template:
+ Fix wrong beamer color in (sub)section page (Jonathan).
* Text.Pandoc.Options:
+ Add `CaptionPosition` and new `WriterOptions` fields
`writerFigureCaptionPosition` and `writerTableCaptionPosition`
[API change].
* Text.Pandoc.Opt:
+ Change default for optNumberOffset to `[]`. This behaves the same as
`[0,0,0,0,0]`.
+ Add `Opt` fields `optFigureCaptionPosition` and
`optTableCaptionPosition` [API change].
* Text.Pandoc.Format: change `formatFromFilePaths` so that it is
smarter about URLs. URLs are parsed, and we take the format from
the path component, if present (#10141). This means that
`https://emacs.org/` will be treated as HTML, while
`https://emacs.org/sample.org` will be treated as Org.
* Text.Pandoc.URI:
+ Add unofficial `gemini:` to list of URI schemes (Pau RE).
* Text.Pandoc.Shared:
+ Add `makeSectionsWithOffsets` [API change].
+ Remove `stripEmptyParagraphs [API change] (Albert Krewinkel).
This function is no longer used.
* Text.Pandoc.Highlighting: Expose `formatANSI` [API change]
(Evan Silberman).
* Text.Pandoc.Writers.Shared: export `to{Sub,Super}scriptInline`
[API change] (Evan Silberman).
* Remove use of partial functions (e.g. `head`) in code.
* Use latest skylighting-core, skylighting, doclayout, texmath, typst.
* pandoc-lua-engine: Add accessors for several writer options, including
some that were added in previous releases.
* pandoc-server: Initialize some missing fields in WriterOptions:
`writerEpubTitlePage`, `writerChunkTemplate`, `writerListTables`,
`writerFigureCaptionPosition`, `writerTableCaptionPosition`.
* CONTRIBUTING.md: Summarize steps for adding a new cli option.
* MANUAL.txt:
+ Clarify that the `--number-offset` option should only
directly affect numbering of the first section heading in
a document; subsequent headings will increment normally.
+ Fix asciidoc link (#10039).
+ Fix CSL Docs broken link (#10100, Tristano Ajmone).
+ Document the use of `luatexja` when CJKmainfont is used with lualatex
(#3873, Kolen Cheung).
+ Add a `citations` (typst) section to the manual (#9127).
+ Clarify that `citations` affects both input and output for `org`.
+ Add note on `--citeproc` that you may need to disable `citations`
extension on the output format (e.g., `-t markdown-citations`) to
see the rendered citation (#9127, #10012).
* INSTALL.md — reorganise info on static binaries and add conda-forge
install options (#10098, #10069, Ian Max Andolina).
## pandoc 3.3 (2024-07-28)
* New cli option: `--link-images`. This causes images to be linked
rather than embedded in ODT.
* Allow `--number-sections` to take an optional `true|false` argument.
* RTF reader:
+ Handle `\*\shppict` without dropping image (#10025).
* TWiki Reader:
+ Recognize WikiWords as internal links (#9941).
+ Avoid partial function.
* Typst reader:
+ Ignore 'pad' and just parse its body (#9958).
+ Use typst 0.5.0.5. Fixes parsing of equations like `$1.$`.
* Docx writer:
+ Fix regression with nested lists (#9994). The bug affects e.g.
ordered lists with bullet sublists; after the sublist the top-level
list reverts to bullets instead of being properly numbered.
This is a regression introduced in version 3.2.1.
* BibTeX writer:
+ Ensure that "literal" names are enclosed in braces (#9987).
* Man writer:
+ Use default middle header when metadata does not include `header`
(#9943). This change causes pandoc to omit the middle
header parameter when `header` is not set, rather than
emitting `""`. The parameter is optional and man will use
a default based on the section if it is not specified.
* HTML templates: don't load polyfill (#9918).
This was added in a period when MathJaX required polyfill.
MathJaX no longer recommends this and polyfill should no
longer be necessary on any reasonably modern browser.
* Translations:
+ Add `ua.yaml` (Jens Oehlschlägel).
+ Add a script (`tools/update-translations.py`) and Makefile
target (`update-translations`) to update translation data
automatically from babel and polyglossia upstream
(Stephen Huan).
+ Use this script to update language data, increasing the number
of languages we cover (Stephen Huan). Fix a few small bugs in
existing translations.
* Fix some mistakes with Japanese language code (#9938).
In several places we were mistakenly assuming that the BCP 47 code for
Japanese language was `jp`. It is `ja`.
* Text.Pandoc.Options:
+ New field in WriterOptions: `writerLinkImages` [API change] (#9815).
* Text.Pandoc.App.Opt:
+ New field in Opt: `optLinkImages` [API change] (#9815).
* Lua subsystem:
+ Keep `lpeg` and `re` as "loaded" modules (Albert Krewinkel).
The modules `lpeg` and `re` are now treated as if they had been
loaded with `require`. Previously the modules were only assigned
to global values, but could be loaded again via `require`,
thereby allowing to use a system-wide installation. However, this
proved to be confusing.
The old behavior can be restored by adding the following lines to
the top of Lua scripts, or to the `init.lua` in the data dir.
debug.registry()['_LOADED'].lpeg = nil
debug.registry()['_LOADED'].re = nil
* `pandoc-cli`: Include pandoc copyright in Lua version info (Albert
Krewinkel).
* `pandoc-cli`: Refer printing of version info to the Lua interpreter
(Albert Krewinkel). The Lua interpreter no longer terminates when
called with `-v` or `--version` arguments, thus improving
compatibility with the default `lua` interpreter program.
* Avoid partial functions in JATS reader, DocBook writer, Haddock reader.
* Allow tls 2.1.x.
* MANUAL.txt:
+ Make documentation of extensions clearer (#9060).
+ Fix section level for two Extensions entries.
* lua-filters.md: Partially autogenerate docs for module `pandoc`
(Albert Krewinkel). The documentation system isn't powerful enough to
generate the full documentation automatically.
## pandoc 3.2.1 (2024-06-24)
* Fix `gfm_auto_identifiers` to replace emojis with their aliases,
as documented (#9876).
* CSV reader:
+ Turn line breaks into LineBreaks not SoftBreaks (#9797).
* Docx reader:
+ Support task lists (#8211).
+ Fix a small bug in parsing delimiters in numbered lists,
which led to the default delimiter being used wrongly in some cases.
+ Improve handling of captions.
- Turn captioned images into Figure elements. Closes #9391.
- Improve the logic for associating elements with captions (#9358).
- Ensure that captions that can't be associated with an
element aren't just silently dropped (#9610).
+ Support HorizontalRule. We support both pandoc-style and the style
described on a Microsoft support page, an empty paragraph with
a bottom border (#6285).
+ React to `"left"` value on `jc` attribute.
+ Handle column and cell alignments (#8551). We take the column alignments
from the first body row.
+ Fix a bug that caused comments inside insertions or deletions
to be ignored (#9833).
* HTML reader:
+ Better handle non-`li` elements in `ul` and `ol` (#9809).
For example, a `p` after a closed `li` will be incorporated into
the previous `li`. This mirrors what browsers do with this
invalid HTML.
* LaTeX reader:
+ Fix parsing of dimensions beginning with `.`, e.g. `\kern.1pt` (#9902).
* Markdown reader:
+ Allow author-only textual citations (#7219). E.g. `-@reese2002`
outside of brackets.
* RST reader:
+ Tighten up rules for when emphasis can start (#9805).
+ Support `:cite:` role with citeproc (#9904). A subset of the
functionality of the sphinxcontrib-bibtex extension to Sphinx
is supported.
* Textile reader:
+ Don't let spans begin right after a symbol (#9878).
* Typst reader:
+ Fix an incomplete pattern match (#9807).
+ Handle inline bodies ending in a parbreak. E.g.
```
`#strong[
test
]
```
* ConTeXt template: remove `\setupbackend[export=yes]` (#9820).
* Docx writer:
+ Allow OpenXML templates to be used with `docx` (#8338, #9069, #7256,
#2928). The `--reference-doc` option allows customization of styles in
docx output, but it does not allow one to adjust the content of the output
(e.g., changing the order in which metadata, the table of contents,
and the body of the document are displayed), or adding boilerplate
text before or after the document body. For these changes, one can
now use `--template` with an OpenXML template. (See the default
`openxml` template for a sample.) `--include-before-body` and
`--include-after-body` can also now be used with `docx` output.
The included files must be OpenXML fragments suitable for
inclusion in the document body.
+ New unexported module Text.Pandoc.Writers.Docx.OpenXML.
+ Omit `jc` attribute on table cells with AlignDefault (#5662).
+ Better formatting for task lists. Task lists are now properly
formatted, with no bullet (#5198).
+ Replace an expensive generic traverse to remove Space elements,
for better performance.
+ Wrap figures with `id` in a bookmark (#8662).
+ Add eastAsia font hints to `w:r` (#9817). We do this when the text
in the run contains any CJK characters. This ensures that ambiguous
code points (e.g. quotation marks) will be represented as "wide"
characters when together with CJK characters.
+ Clean up Abstract Title and Subtitle in default reference docx.
Center Subtitle, remove color.
* HTML writer:
+ Ensure URI escaping needed for `html4` (#9905).
Unicode characters need not be escaped for html5, and still won't be.
+ Don't emit unnecessary classes in HTML tables (#9325, Thomas Soeiro).
Pandoc used to emit a `header` class on the `tr` element that forms
the table header. This is no longer needed, because `head > tr` will
do the same thing. Similarly, pandoc used to emit `even` and `odd`
classes on `tr`s, allowing striped styling. This is no longer needed,
because one can use e.g. `tbody tr:nth-child(2n)`.
Compatibility warning: users who relied on these classes to style
tables may need to adjust their CSS.
* JATS writer:
+ Support `supplementary-material` in metadata for `jats_articlepublishing`
(#9818).
* LaTeX writer:
+ New method for ensuring images don't overflow (#9660).
Previously we relied on graphicx internals and made global
changes to Gin to force images to be resized if they exceed
textwidth. This approach is brittle and caused problems
with `\includesvg` (see #9660). The new approach uses a new macro
`\pandocbounded` that is now defined in the LaTeX template.
(Thanks here to Falk Hanisch in https://github.com/mrpiggi/svg/issues/60.)
The LaTeX writer has been changed to enclose `\includegraphics`
and `\includesvg` commands in this macro when they don't explicitly
specify a width or height. In addition, the writer now adds
`keepaspectratio` to the `\includegraphics` or `\includesvg`
options if `height` is specified without width, or vice versa.
Previously, this was set in the preamble as a global option.
Users should attend to the following compatibility issues:
- If custom templates are used with the new LaTeX writer, they will have
to be updated to include the new `\pandocbounded` macro, or an error
will be raised because of the undefined macro.
- Documents that specify explicit dimensions for an image may render
differently, if the dimensions are greater than the line width or
page height. Previously pandoc would shrink these images to fit,
but the new behavior takes the specified dimensions literally.
In addition, pandoc previously always enforced `keepaspectratio`,
even when width and height were both specified, so images with
width and height specified that do not conform to their intrinsic
aspect ratio will appear differently.
+ Task lists must be unordered (#9185).
+ Specify language option for `selnolig` and only include it if
`english` or `german` is used (#9863). (This includes changes to the
LaTeX template.) This should restore proper ligature suppression when
lualatex is used.
+ Fix `--toc-depth` with beamer output (#9861). Previously only top-level
sections were ever included in the TOC, regardless of the setting of
`--toc-depth`.
+ Use `\linewidth` instead of `\columnwidth` or `\textwidth`
for resizing figures, table cells, etc. in LaTeX (#9775).
`\linewidth`, unlike the others, is sensitive to indented environments
like lists.
* LaTeX template: put `babel-lang` in options to beamer (#9868).
This is required to make beamer use proper localized terms for
things like "Section."
* Markdown writer:
+ Don't print extra caption when using `implicit_figures`.
+ Ensure blank line after HTML blocks in commonmark-based formats (#9792).
+ Fix bug rendering block quotes in lists (#9908).
* Texinfo writer:
+ Ensure proper escaping in all node/link contexts.
+ Target node rather than anchor when possible in internal links.
+ Remove illegal characters from internal link anchors (#6177).
+ Use two commas not one in `@ref`.
+ Don't add anchors to headings. We don't need them, now that we
make internal links use the node.
+ Avoid duplicate node names.
+ Improve menus. Properly handle the case where the node name is
different from the descriptive title.
* Texinfo template: add variables for filename and version.
* Typst writer:
+ Support '.typst:no-figure' and 'typst:figure:kind=kind' attributes
(#9778, Carlos Scheidegger). This extends support for fine-grained
properties in Typst. If the `typst:no-figure` class is present on a
Table, the table will not be placed in a figure. If the
`typst:figure:kind` attribute is present, its value will be used
for the figure's `kind` (#9777). These features are documented in
`doc/typst-property-output.md`.
* Typst template:
+ Add subtitle (#9747, Mickaël Canouil).
+ Use content rather than string for title, author, date, email (#9823).
This allows formatting in title, author, date, and email fields.
Since the PDF metadata requires a string, and typst only
converts the title to a string (not the authors), we use
* Textile writer:
+ Get rid of header, odd, even classes on `tr` (#9376).
* Text.Pandoc.Class:
+ `fillMediaBag`: Convert IOErrors to warnings when fetching absolute
paths (#9859, Albert Krewinkel). This will allow many conversions that
would have failed with an error to succeed (albeit without images or
other needed resources).
* Text.Pandoc.ImageSize:
+ Don't prefer exif width/height when they conflict with image
width/height (#9871). That was a mistaken call in #6936.
Usually when these values disagree, it is because the image
has been resized by a tool that leaves the original exif values
the same, so the width/height metadata are more likely to be
correct that exif width/height.
* Text.Pandoc.SelfContained:
+ Strip CRs from XML before base64 encoding for data URI
(so tests can work on Windows).
+ Only create `