# Download Pandoc

> If you need to convert files from one markup format into another, pandoc is your swiss-army knife.

- Canonical page: https://everyversion.net/pandoc/
- Publisher: John MacFarlane
- Latest: Windows 3.13 (Windows build released 2026-10-26)
- Platforms: Windows
- License: GPL-2.0 (https://github.com/jgm/pandoc/blob/master/COPYRIGHT)
- Price: Free and open source
- Website: https://pandoc.org/
- Support: https://github.com/jgm/pandoc/issues
- Bug tracker: https://github.com/jgm/pandoc/issues
- winget ID: JohnMacFarlane.Pandoc

- Verification: level 1 — Hashes re-computed from the publisher’s download: 2 of 2 installers match the upstream manifest. Checked by Cristian Gonzalez Guasch.
- Source (Windows): winget-pkgs @ 1464d41576767dbac3497f1cf70f79561fd0e7b6 — https://github.com/microsoft/winget-pkgs/tree/1464d41576767dbac3497f1cf70f79561fd0e7b6/manifests/j/JohnMacFarlane/Pandoc

## Windows

### What the installer does
- Delivered as a Windows Installer package built with WiX (.msi) for x64 and a ZIP archive that is unpacked containing a portable program that runs without being installed for x64.
- Offers both a per-user and an all-users installer.
- Declared install modes: interactive, silent, and silentWithProgress.
- Upgrades remove the previous version first.

### Versions (newest first)

#### 3.13 — 2026-10-26

- x64 wix (machine): pandoc-3.13-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.13/pandoc-3.13-windows-x86_64.msi
  - sha256: 208eeef81b3d734a24f999afb5bf49db4dcf0be4fb72307bebf9ad02353f9a73
- x64 wix (user): pandoc-3.13-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.13/pandoc-3.13-windows-x86_64.msi
  - sha256: 208eeef81b3d734a24f999afb5bf49db4dcf0be4fb72307bebf9ad02353f9a73
- x64 zip: pandoc-3.13-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.13/pandoc-3.13-windows-x86_64.zip
  - sha256: 23e1f2e978a3df80db8bf65c9c59534f41a23140480cfb4f783a882ab7dc6a4e
Release notes: I'm pleased to announce the release of pandoc 3.13, available in the usual places. 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, y and n are strings, not booleans. - Duplicate keys in a mapping are an error. They were a warning. - .5, .inf and .nan are numbers. The most likely way this change will bite you is if you use no in 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 plainToPara and paraToPlain. - Text.Pandoc.Writers.Shared: export new functions wrapColumns and rendereWithTemplate. - Text.Pandoc.Translations: readTranslations now takes the path of the file as argument. Thanks to all who contributed, especially new contributors Andrzej Rybczak, Patrick Creighton, Wleeaf, and enieuwy. - 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, y and n are 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, .inf and .nan are numbers. - Docx reader: - Read w:fldSimple fields (#11944, Aslak Hellesøy). - Keep grid columns that have no width (#11989, Patrick Creighton). w:w is optional on w:gridCol, but elemToTblGrid skipped 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). - 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. - RTF reader: - Fix tokenization bug (#11981). We were consuming certain symbols after \uNNNN during tokenization. This led to an extra character being consumed as the “fallback,” so letters went missing after encoded unicode characters. - LaTeX reader: - Detect macro expansion loops across doMacros calls (#11088). - ODT reader: - Fix start numbers with text:continue-numbering (#9595). - 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 using pdfstandard. - PowerPoint writer: - Add clrMapOvr to notes slides (#11935, Gaurav Vijay Jadhav). This makes them importable by Keynote. - Include lang in core document properties. - DocBook, JATS, TEI writers: - Apply writerIdentifierPrefix prefix consistently. - Typst writer: - Escape ... and -? ligatures (#11979). - Use getLang to determine lang and region. Previously only the lang metadata field was consulted, so lang could not be set properly using a variable. - Text.Pandoc.Translations: - readTranslations now 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. - Text.Pandoc.Shared: - Export plainToPara and paraToPlain. [API change] - Text.Pandoc.PDF: - Make --presentational-hints default for weasyprint. This is necessary to get list attributes (start, ordered list type, etc.) working properly (#11976). - 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 +http on GHC >= 9.14 (previously done only in CI), so local builds behave the same; -f-http still overrides it. - Pass wasm link flags for pandoc-cli as ghc-options. cabal only passes ld-options along when it finds an ld program on the PATH. In an environment without one (e.g. nix shell with just the ghc-wasm-meta toolchain), the flags were silently dropped and linking pandoc.wasm failed with undefined setjmp and clock symbols. Use -optl- ghc-options instead, which GHC passes to its linker regardless. - Makefile: - Add release target. - Improve make pandoc-templates so it does the whole job. - Use bash as SHELL (check-cabal uses pushd, check-version-sync uses ==). - Fix $(id -u) in debpkg, which make expanded to empty. - Fix missing echo in validate-docx-golden-tests{,2}. - Ensure pandoc is built before rules that run it to produce files. - Use git ls-files for SOURCEFILES, not the main branch’s tree. - Drop redundant embed_data_files flag in quick-stack. - 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_html in commonmark formats (#8305). - Bump bounds on crypton, crypton-x509-system, tasty-bench. - Add tools/circleci-build-release.sh, tools/github-build-release.sh.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.13 --exact`

#### 3.12.1 — 2026-10-08

- x64 wix (machine): pandoc-3.12.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.12.1/pandoc-3.12.1-windows-x86_64.msi
  - sha256: b6bf9f2c8408a1689272be5722e45f93ed9da17ba74321d0f7ef4e5a196605e8
- x64 wix (user): pandoc-3.12.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.12.1/pandoc-3.12.1-windows-x86_64.msi
  - sha256: b6bf9f2c8408a1689272be5722e45f93ed9da17ba74321d0f7ef4e5a196605e8
- x64 zip: pandoc-3.12.1-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.12.1/pandoc-3.12.1-windows-x86_64.zip
  - sha256: 6ef431cb20b2c24a0371fc19200dc49d452be54b1b5c9239f3462841ef53e587
Release notes: 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 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. - 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 readFODT to Text.Pandoc.Readers.ODT. - Add writeFODT to Text.Pandoc.Writers.ODT. Thanks to all who contributed, especially new contributors Aslak Hellesøy, Erik Demaine, Raffaele Mancuso, Kyohei Takahashi, and rca-umb. Click to expand changelog - New input and output format: 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. - Resolve keywords after loading a syntax definition (#11921, #11923). This fixes a 3.12 regression in --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. - With --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 reader: - Make task lists work in commonmark_x. Previously task_lists would not work if fancy_lists was enabled, for any commonmark variant. - Markdown reader: - Put 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.) - Don’t trim spaces in inline span. Previously we trimmed the space in e.g. [ test ]{.class}. This behavior has no good rationale, and it made it impossible to represent insertions and deletions properly. - Make lookahead for setext header line more efficient. - Docx reader: - Keep bookmark when stripping caption label (#11918). This allows us to preserve internal links to figures. - Add map of table styles to the reader environment. - Fix double strikethrough being dropped (Kyohei Takahashi). 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. - Keep spaces at the edges of tracked changes in the span (#11904, Raffaele Mancuso). This is important for tracking insertions/deletions. - ODT reader: - Don’t crash on a table with no rows. - Don’t loop forever on cyclic style inheritance. - Make getStyleFamily linear in the inheritance depth. A style whose family had to be inherited took time exponential in the chain length. - Cap the number of spaces produced by 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. - Keep the set of used anchors in the reader state. - Look up used anchors in a Set in uniqueIdentFrom. - Keep the archive’s media in a Map rather than an association list. - Attach table captions wherever they occur. 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. - Don’t add a bogus media entry for a missing image. - Only treat font weights of 700 and up as bold. Every numeric fo:font-weight from 100 to 900 was mapped to bold, so text in a hairline or light weight was read as Strong. - Read text wrapped in metadata elements and fields. Content of an element the reader did not recognize was discarded along with the element, which silently lost text: fields such as 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. - Honour 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. - Read rows wrapped in table:table-row-group. Rows need not be immediate children of the table. - Read blocks nested in list items, footnotes and cells. ODF allows the same block-level content wherever it allows a paragraph, but the reader spelled the list of block matchers out separately at each site and each spelling was missing something: a table in a list item was dropped, a list or table in a footnote was dropped, and a heading or nested table in a table cell was dropped. Keep a single list and use it everywhere, so the sites cannot drift apart again. - Read images embedded in office:binary-data. - Read MathML embedded inline in draw:object. A flat OpenDocument file cannot refer to a separate formula document, so the MathML is a descendant of the draw:object instead. - Add readFODT for flat OpenDocument input [API change]. - Fix formula lookup when the href has a trailing slash. - Trim the alt text of an image. - Look up the image mime type on the draw:image element instead of guessing from magic bytes. - RTF reader: - Combine UTF-16 surrogate pairs (#11920). - Typst reader: - Do not emit mixed table column widths (#11898, Samuel Huang). Previously we evenly split the remaining width, but generally it looks better just to make every column auto if any column is default width. - Treat zero-width table fractions as unspecified (#11898, Samuel Huang). - Org reader: - Improve performance: use a jump table to find the end of plain text runs, and dispatch on the next character in inline. - Creole reader: - Use jump tables to find the end of plain text runs. - Use takeWhile1P in str. - RST reader: - Use takeWhile1P for raw field list items. - Textile, Vimwiki, MediaWiki, Txt2Tags readers: - Use jump tables to find the end of plain text runs. - Roff readers: - Use takeWhile1P for regularText. - Mdoc reader: - Use takeWhile1P in lexer. - Docx writer: - Use table style 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. - Put a heading’s bookmark in its paragraph (Robert Szarka, #11845, cf. #8825). The bookmark for a section’s id surrounded the whole section, at body level, so a screen reader met it at the section’s last line rather than at the heading. Moreover, the docx reader looks for bookmarks only inside paragraphs, so the ids did not round-trip. - Improve highlighting of marked spans containing math (#11885, Samuel Huang). - OpenDocument writer: - Use literal instead of text . T.unpack. - Emit whitespace runs in one piece. - Count styles and notes in O(1). - Give nested notes distinct ids. - Use valid column style names past column 26 (AA, AB, etc.). - Apply the requested style to 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. - Render the abstract as blocks. The abstract was wrapped in a Div with 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. - Reuse identical automatic paragraph styles. Every blockquote, every explicitly aligned table cell, and every direction-adjusted style got a fresh Pn automatic style, even when an identical one already existed. - Look up cross-reference targets in a Map. Skip the collecting walk altogether unless 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. - Sort automatic text styles numerically rather than alphabetically (T9, T10, …). - ODT writer: - Always render content.xml with a template. writeOpenDocument returns a bare body fragment when writerTemplate is Nothing. This is needed mainly for the fodt writer. - Have pandocToODT return an Archive instead of a ByteString. This lets an alternative entry point post-process the archive.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.12.1 --exact`

#### 3.12 — 2026-09-29

- x64 wix (machine): pandoc-3.12-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.12/pandoc-3.12-windows-x86_64.msi
  - sha256: a1342617c3ec4adb2e005284b566a9fde5dc20ee67012bbd9694fdda93fdfd61
- x64 wix (user): pandoc-3.12-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.12/pandoc-3.12-windows-x86_64.msi
  - sha256: a1342617c3ec4adb2e005284b566a9fde5dc20ee67012bbd9694fdda93fdfd61
- x64 zip: pandoc-3.12-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.12/pandoc-3.12-windows-x86_64.zip
  - sha256: 2a77ebc2517d13e95056e76b1cd5b574cfe958ac61aa6058117d80c22ca19b79
Release notes: I'm pleased to announce the release of pandoc 3.12, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.12 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.12 This release focuses on performance. Here are some benchmarks showing the improvement since pandoc 3.10.2: There shoud be even more dramatic gains in image-heavy documents, because of optimizations in ImageSize. In addition to performance improvements, there are many other small improvements and bug fixes. See the changelog for full details. Most of the performance gains and and many of the bugs were found with the help of Claude Fable. API changes: - Text.Pandoc.ImageSize: ImageType now derives Eq. - Text.Pandoc.Sources: new functions takeWhileP, takeWhile1P. - Text.Pandoc.Shared: new functions stringifyInlines, compactifyTable. FromText constraint added to the signatures of htmlAttrs and tagWithAttrs. Other changes of note: - -t xml now respects --standalone, and produces a fragment (just the blocks) if it is not provided, like -t native. - The default CSS now includes dark mode support. Thanks to all who contributed, especially new contributors Andonome, Clar Fon, Gaurav Vijay Jadhav, Robert Szarka, Samuel Huang, Yusuf Efe, and zenor0. Click to expand changelog - Markdown reader: - Make alert keywords case-insensitive (#11836, Hendrik Erz). In addition, the class alert is now added to the produced Divs. - Fix stream position handling in base64DataURI. - Cheaply reject bareURL before trying uri/emailAddress. - Reset sourcepos in parseWithString' when parsing a block quote or list item. Otherwise it can happen that by the time parseWithString' is called, the position has already been set to the next file on the command line. Fixes an odd bug with rebase_relative_paths (#11888). - rebase_relative_paths: recognize URLs with unknown schemes (#11858). - Use takeWhile1P in the hot inline parsers str, code, enclosure, and mmdShortSubscript. - Reset sourcepos in parseWithString' when parsing a block quote or list item (#11888). This ensures that rebase_relative_paths will see the right source file. - Typst reader: - Map form: "prose" citations to AuthorInText (#11846, Samuel Huang). - Make the handler maps monomorphic by wrapping the handlers in newtypes with polymorphic fields (BlockHandler, InlineHandler). - Store document labels in a Set instead of a list. - In pInline, only perform the label-target check for ref elements, not for every inline element. - Handle highlight as a mark span (#11879, Samuel Huang). - Collapse citations around soft break (#11897). - Handle block content in inline element bodies (#11881, Samuel Huang). - Handle #par (explicit paragraph element). - LaTeX reader: - Support LaTeX3 (xparse) document commands (#7540). Support the features described in the LaTeX usrguide. - Fix \qed to produce U+00A0 (nbsp) instead of BEL. - Fix unescapeURL handling of escaped backslash. - Require that ewif names begin with “if”. - Fix position off-by-one after ## in tokenizer. - Fix doubled source positions in retokenizeComment. - Make raw token capture O(1) per token. - Make untokenize linear instead of quadratic. - Fail macroDef fast on non-macro-defining commands. - Peek at next token directly in peekTok instead of going through satisfyTok. - Skip doMacros state update for non-macro tokens. - Build command dispatch maps (inlineCommands, etc.) once per parse. - Keep ASCII quotes when ligatures are disabled. - Don’t discard state changes made in optional arguments. - Keep nested conditionals balanced in \iftrue etc. - Docx reader: - Read ScreenTips as link titles (#11869, Robert Szarka). - Use comment-id instead of id in AST for comments. - ODT reader: - Rewrite in monadic style. Net -994 lines. No changes to test output. - Handle textProperties on paragraph styles (#2623). Previously these just got ignored, not applied to the paragraph’s text. - HTML reader: - Don’t require a closing tag for checkbox inputs. <input> is a void element. - Allow omitted </tr> in tables. The </tr> closing tag is optional in HTML. - Don’t drop cells when there are too few <col> elements. - Let the first of duplicate attributes win. HTML specifies that the first occurrence wins. - Respect raw_html for inline <style> elements. - Use a Map for the note table. - Report the noteref position for unresolved notes. The ReferenceNotFound warning was logged after the whole document had been parsed, so it always pointed at the end of the input. Record the position of the first reference to each note and use it in the warning. - Find list style anywhere in the class attribute. Previously <ol class="fancy lower-roman"> got DefaultStyle, because the whole class attribute was compared against the known style names. Check each class individually. As a side effect, an unrecognized class no longer prevents falling back to the style attribute. - Limit iframe nesting depth. - htmlTag: Don’t copy the remaining input on each invocation. A space was appended to the remaining input to guarantee a TagPosition token after the parsed tag; since the input is a strict Text, this copied the entire remaining input every time htmlTag was called (e.g. for every inline HTML tag in a markdown document), giving quadratic behavior in tag-dense documents. Instead, handle the case where the tag is the final token by computing the end-of-input position directly. - Pass the tag name to pSpanLike. The inline dispatcher already knows which span-like element it is looking at, so there is no need for pSpanLike to try a parser. - Fix pre/code attribute precedence for first-wins dedup. - Implement pSatisfy as a single parsec primitive. - Add a fast path to pTagText: when the text contains no character that could parse as anything but Str, Space, or SoftBreak under the enabled extensions (and we are not in a pre element), return B.text directly. - Reorder pTagContents to try pStr and pSpace before the math, smart punctuation, and raw TeX parsers. This is safe because pStr cannot consume the special characters that start those parsers, and it avoids most guard checks on the slow path. This makes the html reader benchmark about 33% faster and halves its allocation. - Muse reader: - Try str earlier in inline parser. This makes the reader 2x faster and reduces heap allocation by 60%. - Check raw line before parsing table rows. Table row parsers are speculatively tried at every paragraph line boundary via the terminator continuation. This change gives another 2x speed improvement. - Org reader: - Fix hard parse failure on bare backslash. - Recognize .pdf as an image format (#11859). This matches the behavior of Emacs, which will render [[file:foo.pdf]] as an image. - Make #+OPTIONS: ^:nil disable all sub-/superscript parsing. - Allow - and _ in inline footnote labels. Org footnote labels may contain word-constituent characters, hyphens and underscores. - Fix swapped arguments in exportSettings parser. - Don’t lowercase meta keyword twice. - Avoid quadratic complexity when parsing table rows. Parsing a 32000-row table drops from 7.8s to 0.9s (and scales linearly instead of quadratically); maximum residency also improves. - Use a Set for anchor ids. Reading a document with 64000 anchors and as many internal links drops from 23.5s to 5.2s and now scales linearly. - RST reader: - Use a predicate to test for for special characters. - Avoid double-parsing lines preceding a non-underline. - Fail fast when no link can start at this position. - Use lookupGE to find the next anonymous key. Parsing a document with 16000 anonymous links drops from 5.2s to 2.0s. - Replace association list with Map for resolving note references. Parsing a document with 16000 named notes drops from 5.8s to 3.5s, and scaling is now linear. - Fix a bug that led to an empty class for code blocks with no specified language. - CommonMark reader: - Avoid nested walks in tex_math_gfm handling. - Avoid rebuilding the token list with map id in sourceToToks in the common case where the source starts at line 1. - AsciiDoc reader: - Resolve footnotes, stem, and icons during conversion. Previously the reader made three separate passes over the parsed AsciiDoc AST (for footnotes, stem math types, and icons) before converting to the pandoc AST. Instead, resolve all three during the toPandoc conversion, which already traverses everything once, threading footnote state and document attributes through a StateT layer. Table headers are now converted before body rows so that footnote resolution follows document order. This makes the reader about twice as fast on typical documents. - Djot reader: - Fix a bug that led to an empty class for code blocks with no specified language. - Vimwiki reader: - Split class attribute and put it in the proper slot in pandoc’s Attr. - Typst writer: - Omit blank line at end of block (#11844). This is just a cosmetic change; it is not semantically significant. - Emit label for bare table if present (#11849). Previously a label was only emitted if the table was figurized (and not .typst:no-figure). - RST writer: - Apply nowrap to just footnote label, not body. This bug surfaced after nowrap was fixed in doclayout. - Docx writer: - Fix sizing for images (#11838). Setting size to a percent now scales image to percent of page width. Previously a percent width or height would just provide a maximum bound rather than scaling. - Include default style even if paragraph has non-style props (#11867). Previously a paragraph that was, e.g. center-aligned would be missing its default Body Text style. Also ensure that any block sequence (list items, table cells, block quote, div), First Paragraph is set for the first paragraph in the item.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.12 --exact`

#### 3.11 — 2026-08-29

- x64 wix (machine): pandoc-3.11-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.11/pandoc-3.11-windows-x86_64.msi
  - sha256: 4c70230cfdca774af92084e9c4b88aad4031ca3f99a11b885d6bc755a5332cca
- x64 wix (user): pandoc-3.11-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.11/pandoc-3.11-windows-x86_64.msi
  - sha256: 4c70230cfdca774af92084e9c4b88aad4031ca3f99a11b885d6bc755a5332cca
- x64 zip: pandoc-3.11-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.11/pandoc-3.11-windows-x86_64.zip
  - sha256: 2ab72baf2399450e148ddf7a2a8689806c42e1bba71862b57e220fd9b8456d3d
Release notes: I'm pleased to announce the release of pandoc 3.11, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.11 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.11 Some changes of note: - A new `--math-method` option, which replaces the (now deprecated but still functional) options `--mathml`, `--mathjax`, `--gladtex`, `--katex`, `--webtex`. The `plain` style can now be specified explicitly. In defaults files, `html-math-method` is now `math-method` (though `html-math-method` will still work). - `mathml` is now the default math-method. - A new option `--completion={bash,zsh,fish}` generates completion scripts for all three shells (see the manual for instructions on how to use them). `--bash-completion` continues ot work, an alias of `--completion=bash`. - It is now possible to reset a Markdown example list counter (e.g., at the beginning of a chapter), using the syntax `(1@)` or `(1@label)`. - Enhanced support for RTL languages: RTL text direction now works in ODT. In addition, setting `lang` at the document level is now sufficient in Docx to make documents RTL. - Fixed pandoc 3.8 regressions in syntax highlighting. - Fixed a security-related bug in template fetching which could result in a local file being fetched instead of a remote one. API changes: - Text.Pandoc.Options: Rename HTMLMathMethod type to MathMethod. Rename `writerHTMLMathMethod` field of WriterOptions to `writerMathMethod`. - Text.Pandoc.App: the `optHTMLMathMethod` constructor for OPt is renamed to optMathMethod. Thanks to all who contributed, especially new contributors Wrong-Code and wzy. Click to expand changelog - Add --math-method option. This replaces (now deprecated but still functional) options --mathml, --mathjax, --gladtex, --katex, --webtex. The plain style can now be specified explicitly. In defaults files, html-math-method is now math-method (though html-math-method will still work). - Make mathml the default math-method (#11751). - Add --completion={bash,zsh,fish} (#8542, wzy). Make --bash-completion an alias of --completion=bash. See the manual for instructions on how to use these completions. - Text.Pandoc.Options [API change]: - Rename HTMLMathMethod type to MathMethod. - Rename writerHTMLMathMethod field of WriterOptions to writerMathMethod. - Markdown reader: - Add a syntax (1@label) for resetting example list counter (#10940). This is needed often at the beginning of a chapter. - MediaWiki writer: - Put <nowiki> around possible URLs (#11834). Otherwise they get linkified automatically. - Docx reader: - Handle case where non-header rows come before header rows (#11833). - Improve handling of tables with uneven rows (#11833). - RTF Reader: - Add support for nested tables (#11218, Alex). - Typst reader: - Remove handling of ‘block’ as an inline-level element (#11814). - HTML reader: - Handle pre without code (#11810). Preserve whitespace as nonbreaking spaces. - ODT/OpenDocument writers: - Support RTL text direction (#11301). RTL is now properly handled in these cases: dir: rtl (or ltr) in document metadata; an RTL lang in metadata (e.g. he, ar), unless overridden by dir; a dir attribute on a Div. Code blocks remain ltr regardless. - Use style:language-complex rather than fo:language for RTL languages (#11301). - Fix treatment of DefaultHighlighting (#11829). - Docx writer: - Initialize envLang from lang metadata (#11301). This ensures that setting lang will affect the whole document. Previously, setting lang to he was not sufficient to make the document RTL. - JATS writer: - Fix illegal use of p element inside p (#11809). - Ms writer: - Fix treatment of DefaultHighlighting (#11829). (Regression from 3.8.) - ConTeXt writer: - Fix bug in syntax highlighting (#11829). (Regression from 3.8.) - Text.Pandoc.App.Opt: - In Opt, change optHTMLMathMethod to optMathMethod. [API change] - MSI installer: Fix upgrade detection for per-machine installations (#11827, Wrong-Code). Previously, registry records of previous versions were not being removed. - Text.Pandoc.Templates: - Fix bug in getTemplate. When calling fetchItem in getTemplate, we temporarily reset the stSourceURL in CommonState so that the template is sought locally. Previously, an exception in fetchItem would prevent stSourceURL from being set back to its original value. This could result in a local file being fetched instead of a remote one. Note that an exception is triggered when one uses e.g. --template default.html5; in that case getTemplate handles the exception by looking for the file in the user data directory. This patch fixes the bug so that the stSourceURL is reset regardless of whether fetchItem raises an exception. Thanks to Yingjie Su for identifying the problem. - beamer template: remove spurious extra tableofcontents (#11819). - Text.Pandoc.App.CommandLineOptions: - Export OptionSpec, which can encode the type of completion needed by each option (wzy). - Add new unexported module Text.Pandoc.Completion (wzy). - Replace a use of nub with nubOrd. - Use latest releases of djot, asciidoc, typst, texmath. - MANUAL.txt: - Add a note that thanks in typst doesn’t currently work (#11807). - Note that sourcepos extension works for djot too.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.11 --exact`

#### 3.10.2 — 2026-08-12

- x64 wix (machine): pandoc-3.10.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.10.2/pandoc-3.10.2-windows-x86_64.msi
  - sha256: 937ed557c4565f4e7c7e1ee59cb059dfe8aafc9adb5b422bfdf688fcaee63a0b
- x64 wix (user): pandoc-3.10.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.10.2/pandoc-3.10.2-windows-x86_64.msi
  - sha256: 937ed557c4565f4e7c7e1ee59cb059dfe8aafc9adb5b422bfdf688fcaee63a0b
- x64 zip: pandoc-3.10.2-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.10.2/pandoc-3.10.2-windows-x86_64.zip
  - sha256: 52487faaa63f8cef5363d5a771097da001228d61c6f44f32ed41b27a98c0278c
Release notes: I'm pleased to announce the release of pandoc 3.10.2, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.10.2 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.10.2 This release fixes some bugs, including a couple of regressions. One relates to conversion of quotation marks in typst output; the other fixes parsing of math containing ` ag`, `label`, or comments. There is one new feature: a `typst-label` attribute on a Div, Table, Figure, or Header will be used to construct a label in typst output. In addition, pandoc.wasm should now be useable with wasmtime. No API changes, but bumpting third digit because of the `typst-label` behavior change. Thanks to all who contributed, especially new contributors Philipp Gillé and gemmaro. Click to expand changelog - Markdown reader: - Raw HTML: fix handling of void hr element (#11793). - LaTeX writer: - Omit empty caption on unnumbered tables (#11795). - Emit accumulated footnotetext at the first available opportunity (#11773). - Typst writer: - Don’t alter curly quotes in strings, even with smart (#11788). This reverts commit 0484840. - Make writer sensitive to typst-label attribute (#11794). If this attribute is set, the writer will output a label. (This overrides labels based on identifiers, when identifiers are present.) - Typst template: rename horizontalrule to horizontalRule , so it matches the polyfill. (#11784, Ian Max Andolina). - Text.Pandoc.Readers.HTML.TagCategories (unexported): export voidTags. - epub.css: Add support for dark mode (k6G52m4Dz75W). - WASM build: restore legacy exception handling, for compatibility with wasmtime (#11787). - Use new release of asciidoc (fixing problems with row/colspans and footers in tables). - Use new release of texmath (fixing problems with equations containing \tag, \label, or comments). - MANUAL.txt: Correct Asciidoctor name casing (gemmaro, #11782). - INSTALL.md: Update Fedora link to pandoc-cli package (#11798, Philipp Gillé). - CONTRIBUTING.md: remove suggestion to submit Lua filters (#11800). - Add doc/twenty-years-of-pandoc.md. - Changelog - fix pandoc 0.1 release date. - Add release-announcements.txt (scraped from pandoc-announce).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.10.2 --exact`

#### 3.10.1 — 2026-07-22

- x64 wix (machine): pandoc-3.10.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.10.1/pandoc-3.10.1-windows-x86_64.msi
  - sha256: cd2fb4a07bd22139aea56ec43763a61602aaddc9d58b96f7811d71585355e214
- x64 wix (user): pandoc-3.10.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.10.1/pandoc-3.10.1-windows-x86_64.msi
  - sha256: cd2fb4a07bd22139aea56ec43763a61602aaddc9d58b96f7811d71585355e214
- x64 zip: pandoc-3.10.1-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.10.1/pandoc-3.10.1-windows-x86_64.zip
  - sha256: 4725a1883e2171c2e181e6fd45003acb59ca4e9cbe031fdd3b79ef0d697d36aa
Release notes: I'm pleased to announce the release of pandoc 3.10.1, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.10.1 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.10.1 This release contains many small improvements and bug fixes. Some of the more notable ones are mentioned here (see the changelog for details): - t2t (Txt2Tags markup) is now an output format. - It is now possible to use a defaults file without an extension; pandoc will add the .yaml extension only if no file exists with the name specified. - The auto_identifiers extension may now be used with typst input. (however, it is not enabled by default.) - We now use '#divider()' (typst 0.15) for typst horizontal rules, instead of defining our own horizontalRule function. - It is now finally possible to force LaTeX to use a regular floating table rather than a longtable, which is especially important for two-column layouts (longtable does not support them). One does this by adding the `float` class to the table's attributes. - starmath is now used instead of MathML for math in ODT. This produces much better results and improves the editability of equations. - We now automatically enable auto_identifiers when a table of contents is requested, since these require identifiers to link to. - A new flake.nix allows use to use 'nix build' and 'nix run' with pandoc. API changes: New module Text.Pandoc.Writers.Txt2Tags, exporting writeTxt2Tags, also re-exported by Text.Pandoc.Writers. Thanks to all who contributed, especially new contributors Can H. Tartanoglu, Chirag Dhamange, Enrico Spinielli, Robertas, Scott Talbert, Tobias Deiminger, luginf. Click to expand changelog - New output format t2t (Txt2Tags markup, https://txt2tags.org)) (luginf). - New module Text.Pandoc.Writers.Txt2Tags, exporting writeTxt2Tags (loginf) [API change]. Also exported from Text.Pandoc.Writers. - Change adding of .yaml extension in --defaults option (#11717). Previously it was always added if the specified filename lacked an extension. Now it is only added if there is no file with the original name. This facilitates using --defaults with bash/zsh <(..) or =(..). - RST reader: - Fix nested placeholder resolution for inline elements (#11753, Tobias Deiminger). (Regression from pandoc 3.6.) - Treat undefined substitution references as plain text (#11727). This mirrors rst2html behavior. - Markdown reader: - Ordered sublists must start with 1, er equivalent, e.g. i (#11735). This brings the markdown parser in line with commonmark, and avoids a lot of unintended list starts. Note that ordered lists that are not sublists may still start with numbers other than 1. - ODT reader: - Don’t create Emph just because of changed font (#11691). - RTF reader: - Support multi-paragraph list items. - Support legacy \pn/\pntext paragraph numbering (#11686). - Docx reader: - Improve horizontal rule detection (#11689). - Key list numbering off abstractNumId, fixing numbering for restarted lists (#8367). - LaTeX reader: - Handle \hypertarget with one braced parameter (#7418). - DokuWiki reader: - Skip non-cell content after table row (#11739). - Typst reader: - Support auto_identifiers extension (#11041). The extension is available for the typst reader but is off by default; enable it with -f typst+auto_identifiers. The related gfm_auto_identifiers and ascii_identifiers extensions are also made available. - Recognize divider() for horizontal rule (#11540). - HTML reader: - Fix unused variable warning in CI (#11704, Robertas). - Strip language- from all classes, not just first (#11701). Also combine classes from both code and pre class if they are nested. - Powerpoint writer: - Keep tables and surrounding text on same slide (#11433, Chris Callison-Burch). Previously, when a slide contained bullet points before and after a table, content would be split across multiple slides or use a two-column layout that didn’t preserve the source order. - Texinfo writer: - Fix spacing bug around HorizontalRule (#11749). - fix escaping in links (#11758). Previously we dropped periods, commas, etc. This was a regression from 2024. All we really need to do is escape the comma. - LaTeX writer: - Provide a way to use table instead of longtable (#1023). When the float class is attached to a table, a standard floating table will be generated instead of a longtable. Placement can be specified via the latex-placement attribute. This will help, especially, those who use two-column layouts, since longtable is incompatible with these. - Fix footnotes in definition list headings (#8240). - Markdown writer: - Fix ordered list indentation bug (#11762). - Improve identification of code language class by looking it up in the syntax map (#11701). - In YAML metadata, put double quotes around strings that are numbers beginning with 0 or ending with 0 and having a decimal point (#11715). Otherwise they will read as YAML numbers and potentially be modified (e.g. 3.10 -> 3.1). - Docx writer: - Use namespace URI instead of prefix in extractPageLayout (#11697, Robertas). - ODT writer: - Use starmath for math. This improves appearance and editability of equations. The main code changes are due to @jdpipe (#11470). - Image anchoring, percent dimensions, text width resolution (#11746, Can H. Tartanoglu). Inline images now emit text:anchor-type=as-char on their draw:frame, anchoring the frame as a character so it flows with the surrounding text. When both width and height are given and the width is a percentage, the width is now resolved against the reference document text area width, mirroring how the docx writer derives its print width from the reference docx section properties. The height follows the aspect ratio. - RTF writer: - Emit real RTF lists with a list table. Lists were written as plain paragraphs with a literal marker and a hanging indent, carrying none of the \ls/\ilvl references or the \listtable/\listoverridetable that the RTF list model (and pandoc’s own reader) expect, so lists could not round-trip. - Allow fontsize to be specified (#11750). The fontsize is specified in a variable or metadata field and passed through the renderer via a Reader monad. - Typst writer: - Fold lang into pickTypstAttributes (#11673). This ensures that lang attributes will be set for both Divs and Spans. - Add support for tight terms in Typst writer (#11748, Amir Dekel). This just affects whether a blank line is emitted in the markup. Note that pandoc’s default template contains a show rule for terms that will make these blank lines irrelevant, but this change allows one to use tight lists with custom templates. - Further tight term list improvements. For tight list items consisting of just one Plain block, we no longer create a #block for the definition; this allows it to remain on the same line as the term. - Emit divider() as horizontal rule (#11540). - LaTeX template: - The caption package is included and a default spacing set between the caption and the table. - Typst template: - Remove custom show rule for terms. Instead, we use a set rule to set hanging-indent. - Remove old horizontalRule definition from default template. - Polyfill divider for typst < 0.15. - Allow multiword keywords (#11730, Albert Krewinkel). Typst expects single words as keywords, so keywords consisting of multiple words must be quoted (and should not be wrapped). - HTML template: - Remove hard-coded font-size for print CSS. Print CSS now uses the inherited font-size. - epub.css: - Get rid of obsolete #TOC rules (#11747). We don’t generate anything with the TOC id in epubs. A table of contents is in nav#toc and we have rules for that. - Put clause for all headings before individual h1, h2, … (#11742). This is more logical, since the individual clauses are meant to override. - Text.Pandoc.Shared: - Improve makeSections (#11745). Previously it would sometimes create doubled section divs. By leaving the inner heading’s id on the heading itself, and then consolidating the inner and outer section divs, we can avoid this undesirable result. - taskListItemToAscii: handle empty task list case. - taskListItemFromAscii: handle empty task list case (#11599, Chirag Dhamange). - Text.Pandoc.App.CommandLineOptions: - Use optCSL and optBibliography from Opt (#11741). Previously we set optMetadata directly, but that had some unintended effects, especially in interacting with defaults files. With this change, a --csl on the command line can override one set in a prior defaults file. - Text.Pandoc.App: - Enable auto_identifiers when a table of contents is requested (#11041). Table-of-contents entries link to heading identifiers, so when --toc/--table-of-contents is given, force the auto_identifiers extension on for the input format even when it is off by default (as it now is for typst). This makes typst-to-markdown --toc produce working links. - Text.Pandoc.Writers.Shared: - htmlAttrs - don’t add data- prefix for markdown (#11685). This is necessary for the markdown_attribute extension to work properly. - Ensure that IO error messages go to stderr (#11710). - Use emojis 0.1.5, texmath 0.13.2,typst 0.11, typst-symbols 0.3, pandoc-types 1.23.1.2, djot 0.1.4.1, commonmark-extensions 0.2.7.1, skylighting-format-blaze-html 0.1.2.1. - Add Makefile rule to update all-cabal-hashes in flake.lock. - MANUAL.txt: - Clarify comment about table types (#11719). - Small clarification in image section (#11760). - Rewrite “A note on security.” Clarify the risks of using pandoc in a web service and explain how to do so more safely. Note some specific vulnerabilities with the pdf-engine wkhtmltopdf. This incorporates the suggestions made in #11262 and also benefits from a report by Kai Aizen. - Clarify native_numbering extension (#11599). - Include Lua filter to set float attribute on tables.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.10.1 --exact`

#### 3.10 — 2026-06-04

- x64 wix (machine): pandoc-3.10-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.10/pandoc-3.10-windows-x86_64.msi
  - sha256: 5334f560afb99efc2917c95ddd6d4337f4562f57b0122839b611854e2a6678e0
- x64 wix (user): pandoc-3.10-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.10/pandoc-3.10-windows-x86_64.msi
  - sha256: 5334f560afb99efc2917c95ddd6d4337f4562f57b0122839b611854e2a6678e0
- x64 zip: pandoc-3.10-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.10/pandoc-3.10-windows-x86_64.zip
  - sha256: bb808d00fd58762299d64582a9b4c3e4b106cd929e62c5f19bcdcb496f1e54ae
Release notes: https://github.com/jgm/pandoc/releases/tag/3.10

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.10 --exact`

#### 3.9.0.2 — 2026-03-19

- x64 wix (machine): pandoc-3.9.0.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.9.0.2/pandoc-3.9.0.2-windows-x86_64.msi
  - sha256: a7beb0cc40ce4d17ebcd2cd9f28ce000dd1f0aa4d95e3446e9c73ca43aff8f60
- x64 wix (user): pandoc-3.9.0.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.9.0.2/pandoc-3.9.0.2-windows-x86_64.msi
  - sha256: a7beb0cc40ce4d17ebcd2cd9f28ce000dd1f0aa4d95e3446e9c73ca43aff8f60
- x64 zip: pandoc-3.9.0.2-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.9.0.2/pandoc-3.9.0.2-windows-x86_64.zip
  - sha256: c97542f2800f446e788d9f74237856d995421ad1bb3cc8324286840c5f272d3a
Release notes: I'm pleased to announce the release of pandoc 3.9.0.2, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.9.0.2 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.9.0.2 This release just fixes a bad regression in the typst template. Click to expand changelog - Typst template: fix regression introduced in 3.9.0.1 (#11538).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.9.0.2 --exact`

#### 3.9.0.1 — 2026-03-18

- x64 wix (machine): pandoc-3.9.0.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.9.0.1/pandoc-3.9.0.1-windows-x86_64.msi
  - sha256: bfb2e673559655bfc0a22da82e936bda963eb38fafe885b1156e9fce3e2b9e9e
- x64 wix (user): pandoc-3.9.0.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.9.0.1/pandoc-3.9.0.1-windows-x86_64.msi
  - sha256: bfb2e673559655bfc0a22da82e936bda963eb38fafe885b1156e9fce3e2b9e9e
- x64 zip: pandoc-3.9.0.1-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.9.0.1/pandoc-3.9.0.1-windows-x86_64.zip
  - sha256: 5877f28018af6bbc76238600b75bc0829b450e92b0daaae0ad4927696c9d2460
Release notes: I'm pleased to announce the release of pandoc 3.9.0.1, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.9.0.1 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.9.0.1 This is a bug-fix release, with no major new features or API changes, but lots of small improvements. See the changelog for details. Thanks to all who contributed, especially new contributors Agriya Khetarpal, Peter Briggs, Sidney Mau, and λx.x. Click to expand changelog - WASM GUI: - Don’t block everything while pandoc.wasm loads. - Fix bug with Unicode filenames (#11447). - Catch errors loading pandoc. - Docx reader: - Recognize media inside textboxes (#11053, Raymond Berger). - Properly handle media stored with packaged-rooted paths such as /media (#11518). This can be produced by the online version of Word. With this change, media stored at an absolute path will be stored with its original name and not given a SHA1-based name. - Preserve non-textbox content when unwrapping textboxes (#11510, #6893, #11412, #5394, #9633). Treat text inside a textbox containing an image as a figure caption. - Typst reader: - Handle bibliography command (#11460). If this is present, a bibliography section is added to the document and the bibliography paths are added to bibliography in the metadata. This sets things up for using --citeproc. - Textile reader: - Handle block content in cells (#11455). - Docx reader: - Support w:gridBefore table row property (#11464, Jan Tojnar). - LaTeX reader: - Support \footnotemark and \footnotetext (#11450). These commands allow separating the footnote mark from its content, useful in tables, minipages, and other contexts where \footnote cannot be used directly. - Support supertabular environment (#11523, bodigrim). - ODT Reader: - Fix relative linked images (#11369, Tuong Nguyen Manh). - Recognize Preformatted_20_Text style Jan Tojnar This is used by LibreOffice, and we will switch to that as well. - Add block smushing logic (Jan Tojnar). - Support Preformatted Text style (#4841, Jan Tojnar). - Markdown reader: - Fix bug with lists_without_preceding_blankline (#11534). - Typst writer: - Don’t add a carriage return after \ for hard break (#11446). They are not necessary. Note that they can still be included if you use --wrap=preserve and add a newline in your source document. - Improve handling of data: URIs in images. Instead of using an SVG with a link containing the data URI (the solution of #10460), we can now simply produce a bytes object with the requisite bytes. Typst figures out the format automatically. - Fix escaping of quotes (#11463). - Include alt attributes on images (mcanouil). - Properly escape . after bracketed argument (#11511). - Docx writer: - Don’t depend on extractTarget from Docx reader. - Fix section breaks with --top-level-division (#11482, #10578). - EPUB writer: - Add cover metadata for EPUB3 (#11479). This allows file managers to show cover thumbnails for EPUB3 files as well. - Update allowed values for EPUB3 metadata identifier.scheme (#11481, Pascal Wagler). - ODT writer: - Rename inline source class to match LibreOffice (#3390, Jan Tojnar). Rename the text style we use to represent Code inlines from Source_20_Text to Source_Text. This is the same name LibreOffice Writer uses so it will be recognized by the Character Styles section of the Styles menu. - Remove font size from inline source class (Jan Tojnar). This matches what LibreOffice Writer is doing. Also fixes literals inside headings being too small. - Modernize Preformatted Text & Source Text styles (Jan Tojnar). Presumably, font-family-generic and font-pitch will allow to find a replacement on systems that do not have Courier New. - Markdown writer: - Fix rendering of alerts (#11479). We only properly handled the case where the alert started with a paragraph, but it can start with a list or other block type. - Escape literal & that would trigger entity (#11490). - HTML writer: - For revealjs, default scrollProgress to auto (Christophe Dervieux). - PPTX writer: - Register content type for embedded fonts (#11492). - MediaWiki writer: - Use appropriate syntax for external images (#11494). Note that they will only be rendered as images if an option $wgAllowExternalImages is enabled in the MediaWiki instance. - ICML writer: - Support for image object styles (#11498, massifrg). This change allows users to style images in InDesign bysetting the object-style attribute in a pandoc Image, which is mapped to the AppliedObjectStyle attribute in the Rectangle element around an Image element in the resulting ICML. - JATS writer: - Improve representation of Divs (Albert Krewinkel). The writer now checks if the element used to represent (non-special) Divs has any <boxed-text> specific attributes. If it does, the writer keeps wrapping the Div contents in a <boxed-text>, as it did before. Otherwise, the writer falls back to the more appropriate <p> element or simply unwraps the Div if the wrapping element wouldn’t have any attributes. The new behavior gives better semantic results in most cases, as <boxed-text> should be used for text that “is outside the flow of the narrative text”, which doesn’t apply to most divs. “Special” divs, like those used to mark sections, are not affected by this change. - Text.Pandoc.Writers.GridTable: - Normalize tables (#8102). Previously, if an invalid table was passed to toTable, an array index error could be raised. Normalizing the table forces it into a shape that won’t allow this error. - Lua subsystem (Albert Krewinkel): - Add new function pandoc.types.Sources (#11441). - LaTeX template: properly handle keywords with commas. These need to be put in an \xmpquote{..} command. Closes #11528. - HTML styles template: avoid duplicate code selector. Consolidate two clauses. Closes #11484. - Revealjs template: fix type rendering of scroll-view options (Christophe Dervieux, #11486). - Typst template: - Use both place and block for title (Gordon Woodhull). Otherwise the title will be confined to the left column - Put title block in a conditional (#11529). This avoids an empty block for documents that lack metadata information. The empty block causes problems if #set page is used, as it will cause a page break. - Beamer template: add logooption variable (#11452, Sidney Mau). - Text.Pandoc.ImageSize: - Correctly handle percentage width, height on SVG (#11530). Previously we were getting image size of 0 when a percentage was specified for width or height on SVG. With this change, we simply ignore these percentages (becaues ImageSize doesn’t know the size of the containing element). - Re-add -threaded to compile options in pandoc-cli. - Use released djot, asciidoc, texmath, typst. - Allow crypton 1.1, tls 2.2, http-client-tls 0.4. - Require auto-update >= 0.2.6 to fix server on macOS (#11488). - pandoc-cli.cabal: bump base min bound to 4.18 (same as pandoc). - MANUAL.txt: - Note that JSON may be used in YAML metadata blocks (#11525). - Update link for ICML in manual. - Fix outdated OPML spec URL in MANUAL.txt (#11504, Peter Briggs).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.9.0.1 --exact`

#### 3.9 — 2026-02-04

- x64 wix (machine): pandoc-3.9-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-windows-x86_64.msi
  - sha256: bc6a2666e5b5f3c487266ec008634cf85733a01556b6781f17fdee639d26aa97
- x64 wix (user): pandoc-3.9-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-windows-x86_64.msi
  - sha256: bc6a2666e5b5f3c487266ec008634cf85733a01556b6781f17fdee639d26aa97
- x64 zip: pandoc-3.9-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-windows-x86_64.zip
  - sha256: edccdaa95b5a33b3320187f0e291d58a232e21318a8081750bd31f847e598d18
Release notes: I'm pleased to announce the release of pandoc 3.9, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.9 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.9 Starting with this release, pandoc can be compiled to WASM, making it possible to use pandoc in the browser. A full-featured GUI interface is provided at https://pandoc.org/app. Defaults files may now be in either JSON or YAML, and variable interpolation works now for the `defaults` field of a defaults file, making it easier for defaults files to extend others. --extract-media will now create a zip archive containing the media (instead of a directory) if the specified path has a .zip extension. A special class on headings can now be used to reset 'subsequent' status for citations processed using --citeproc. This can be important for some styles, which require that full citation information be given for the first citation to a work in any given chapter. The 'alerts' extension can now be used with pandoc's Markdown. Support has been added for PDF standards and tagging via lualatex. API changes: - Text.Pandoc.Shared exports hasLineBreaks. - The PandocHttpError constructor for PandocError now takes a Text as argument instead of HttpException. Thanks to all who contributed, especially new contributors Albert Lei, Anton Melnikov, Chris Callison-Burch, Jacob Larkin, Yann Trividic, You Jiangbin, benniekiss, and har7an. Click to expand changelog - Add support for compiling pandoc to WASM. (To build, make pandoc.wasm.) A stanza in cabal.project contains the necessary build modifications. We owe this almost entirely to TerrorJack, who created the original proof of context and came up with the necessary build flags and patches to some dependencies. pandoc.wasm has almost all the power of regular pandoc. The main limitations is that it operates in a WASM sandbox and thus cannot use HTTP to fetch resources and cannot run system commands. As a result, JSON filters cannot be used, --embed-resources works only with resources that have been explicitly provided in the WASM sandbox, and PDFs cannot be produced (since that requires running external commands). However, Lua filters can be used, as long as they do not run system commands. A JavaScript bridge module, wasm/pandoc.js, is provided; this handles the setup necessary to run pandoc.wasm in a browser. In addition, a full-featured GUI interface is provided in the wasm subdirectory. make serve from that directory and it will run locally, or visit https://pandoc.org/app. Note that once the relevant code has been downloaded by the browser, it runs entirely in the browser, and the conversions never touch a server. The GUI was developed in interaction with Claude Code. This app includes a WASM version of Typst and can produce PDF output via Typst. - Defaults files may now be either JSON or YAML (though a .yaml extension will still be assumed if the file has no extension). The structure of a JSON defaults file is isomorphic to that of a YAML defaults file. - Variable expansion now works even for the defaults field of defaults files (#8024, Jacob Larkin). - --extract-media will now create a zip archive containing the media (instead of a directory) if the path provided has a .zip extension. - Processing with --citeproc is now affected by a reset-citation-positions class on headings. When the reset-citation-positions class is added to a top-level heading, --citeproc will reset position information at that point in the document. This is needed in order to ensure that the first citation in a chapter to a work that has been cited in a previous chapter will not be in abbreviated form. - RST reader: - Fix definition lists where term ends with - (#11323). This reverts some old code giving special treatment to lines ending in hyphens; I don’t understand why it was there, because rst2html does not seem to do this. - HTML reader: - Revert an earlier change that caused style tags in the body to be ignored (#10643, #11246). - Parse inline style elements as RawInline (#10643, #11246). - Markdown reader: - Fix parsing of inline math ($...$) (#11311, benniekiss). Do not allow blank lines before closing $ delimiter. This brings the parser in line with the documentation. - Allow superscripted spans (#11409). These were being parsed as inline notes. Now we disallow an inline note followed by attributes, as this is almost certainly meant to be a span. - Support alerts extension for pandoc markdown (#9716). It is not enabled by default. - MediaWiki reader: - Add behavior switches support (#11354, Anton Melnikov). They add a field to metadata without producing any text. - Handle non-recognized tags as plain text (#11299). - Better handling of inline tags (#11299). <mark>, <var>, <samp>, and <kbd> now produce Code or Span elements with classes, which can be handled by multiple output formats, instead of simply being parsed as raw HTML tags. - RTF reader: - Ensure a new paragraph on \pard (#11361, Tuong Nguyen Manh). New paragraphs may start with \pard alone without an explicit paragraph break with \par preceding it. - Improve hyperlink parsing more (#10942, Tuong Nguyen Manh). Both the field instruction and its result may be ungrouped. - Fix bug where list items were incorporated into a following table (#11364). - ODT reader: - Add table row and column spans (#11366, Tuong Nguyen Manh). Parse the number-rows-spanned and number-columns-spanned attributes to create Cells for the Table. - DocBook reader: - Support “role” attribute (#11255, Yann Trividic). The role attribute is parsed and added to Pandoc AST elements, using a wrapper Div if needed. - Omit empty title when not required (#11422). This affects example and sidebar elements. - Fix adding wrong metadata (#11300, Tuong Nguyen Manh). Now keep track of the current element stack to only add metadata if inside an appropriate parent element. - DocBook/JATS reader: - Don’t export surrounding space from inline elements (#11398). Previously we would export leading and trailing space inside elements like emphasis or ulink so they appeared outside the resulting pandoc Inline (Emph or Link). This is not really motivated; DocBook and XML in general treats leading and trailing whitespace in this context as significant. - Docx reader: - Handle tables without tblGrid (#11380). - Look inside v:rect as well as v:shape (#11412). - LaTeX reader: - Handle more quote macros from fontspec and ngerman babel (#6120). - Org reader: - Don’t include ‘example’ class when parsing org example blocks (#11339). These are just unmarked code blocks. - Texinfo writer: - Improve handling of certain code blocks (#11312). MediaWiki, for example, will parse a code block containing formatting as a sequence of Code elements separated by LineBreaks. For this we now use a texinfo example block. - Typst writer: - Escape hyphens when needed (#11334). - HTML writer: - Include all classes on highlighted code elements (#11423). Previously, only the language class was included, and the others were dropped. - Slide formats: Make . . . pause work in nested blocks (#7201, #7582). - For revealjs, add idiomatic highlight.js support (#11420, Claude Opus 4.5). When using --syntax-highlighting=idiomatic with reveal.js output, pandoc now generates HTML compatible with reveal.js’s built-in highlight.js plugin: Code blocks use <pre><code class="language-X"> format. The template loads highlight.js CSS, JS, and RevealHighlight plugin. - Markdown writer: - Ensure that \ line breaks are used for commonmark. - Use setext for headers containing line breaks for commonmark (#11341). - Allow display math to start/end with space (#11384). This reverts to earlier < 3.7 behavior. - Properly handle tables with footers (#11416). - JATS writer: - Fix XML output for nested figures (#11362, Albert Krewinkel). Subfigures are now wrapped inside a <fig-group> element. Furthermore, figure content that isn’t allowed as children of <fig> elements, such as raw text, gets wrapped in <p> elements to ensure schema-conforming XML. - AsciiDoc writer: - Use doubled delims in more contexts (#11362). Also escape the # character. - Use a span with role for SmallCaps (#11374). - Export spaces inside delimited constructs like emph. - Docx writer: - Skip directory entries when building media overrides (#11379, You Jiangbin). Pandoc’s docx writer was previously adding an <Override> for /word/media/ in [Content_Types].xml when the reference doc contains media, which violates OPC rules and causes Word to report corruption. - Refactor the monolithic writeDocx into a number of smaller functions (Claude Opus 4.5). - Replace generic XML traversal with direct path navigation (Claude Opus 4.5). Instead of using Data.Generics everywhere to traverse the entire XML tree when setting language attributes, navigate directly to the known path w:docDefaults/w:rPr/w:lang. This is more efficient and removes the dependency on Data.Generics. - EPUB writer: - Don’t use footnote backlinks for EPUBv3. Here we use aside elements, which are popups, and the backlinks are not needed; in some readers they cause a redundant number to appear, since the reader adds a note number. - MediaWiki writer: - Use Doc Text instead of Text for document construction (with Claude Open 4.5). This refactors the writer to use Text.DocLayout combinators (vcat, hcat, literal, blankline, cr, chomp) for building output, following the pattern used by other text format writers (RST, Markdown, Man). This enables better control over line spacing and paragraph separation. - Improve blank space around div elements (#11417). This is merely cosmetic. - PPTX writer:

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.9 --exact`

#### 3.8.3 — 2025-12-01

- x64 wix (machine): pandoc-3.8.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.3/pandoc-3.8.3-windows-x86_64.msi
  - sha256: 06cb0b14ac918890453a7c3021e300413cfd83b4bd7ef0fceb5207c2241a2db9
- x64 wix (user): pandoc-3.8.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.3/pandoc-3.8.3-windows-x86_64.msi
  - sha256: 06cb0b14ac918890453a7c3021e300413cfd83b4bd7ef0fceb5207c2241a2db9
- x64 zip: pandoc-3.8.3-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.8.3/pandoc-3.8.3-windows-x86_64.zip
  - sha256: a77c14078a5c4c6e396d5f5c03f4849eff4a858414bb9e69560bb35528cbf57a
Release notes: I'm pleased to announce the release of pandoc 3.8.3, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.8.3 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.8.3 This release adds three new input formats (asciidoc, pptx, and xlsx) and one new output format (bbcode + variants). It fixes a number of bugs (including some regressions in 3.8). See the changelog for full details. API changes: + New exported module Text.Pandoc.Readers.AsciiDoc, exporting readAsciiDoc. + New module Text.Pandoc.Readers.Pptx, exporting readPptx. + New module Text.Pandoc.Readers.Xlsx, exporting readXlsx. + Text.Pandoc.Readers: Export readAsciiDoc, readXlsx, readPptx. + New module Text.Pandoc.Writers.BBCode, exporting writeBBCode, writeBBCodeSteam, writeBBCodeFluxBB, writeBBCodePhpBB, writeBBCodeHubzilla, writeBBCodeXenforo. + Text.Pandoc.Writers: Export writeBBCode, writeBBCodeSteam, writeBBCodeFluxBB, writeBBCodePhpBB, writeBBCodeHubzilla, writeBBCodeXenforo . + Text.Pandoc.Writers.Shared: Export insertCurrentSpansAtColumn, takePreviousSpansAtColumn and decrementTrailingRowSpans. + Text.Pandoc.Shared: Export allRowsEmpty and tableBodiesToRows. Thanks to all who contributed, especially new contributors Anton Antich, and Asliddinbek Azizovich, and James Barlow. Click to expand changelog - Add asciidoc as an input format (#1456). - Add xlsx (Microsoft Excel) as an input format (Anton Antich). Each worksheet turns into a section containing a table. - Add pptx (PowerPoint) as new input format (Anton Antich). - Add bbcode as a new output format (#11242, reptee). Several variants of BBCode are also supported: bbcode_fluxbb (FluxBB), bbcode_phpbb (phpBB), bbcode_steam (Hubzilla), bbcode_hubzilla (Hubzilla), and bbcode_xenforo (xenForo). - New exported module Text.Pandoc.Readers.AsciiDoc, exporting readAsciiDoc [API change]. - New module Text.Pandoc.Readers.Pptx, exporting readPptx (Anton Antich) [API change]. - New module Text.Pandoc.Readers.Xlsx, exporting readXlsx (Anton Antich) [API change]. - LaTeX reader: - Revert \linebreak as LineBreak (#11272). \linebreak is more of a hint, it shouldn’t produce a hard break. - Better handling of \makeatletter in parsing raw LaTeX (#11270). - Fix spurious paragraph breaks in math environments (#11265, Emmanuel Ferdman). Previously, a math environment with extra space before the \end would get rendered with a blank line, which LaTeX treats as a paragraph break. - Change type on rawLaTeXParser in Text.Pandoc.LaTeX.Parsing. The preparser doesn’t need to return a value. - Fix rawTeXParser (#11253). Make macro expansion in raw LaTeX depend on the setting of the latex_macros extension. Previously macros were always expanded, even in raw TeX in markdown. In addition, there was previously a bug that caused content to be garbled in certain cases. - Handle ifstrequal at a lower level, like the other if commands (#11253). - Move ifstrequal, iftoggle, etc., which were misplaced in environments, to blockCommands, so these commands work properly. - Docx reader: - Handle REF link instruction (#11296, Ezwal). - Check recursively for caption styles (Albert Krewinkel). The docx reader uses caption styles to identify figures and captioned tables. It now checks for known caption styles in the full styles hierarchy of a paragraph instead of just checking the style directly. This allows to recognize caption styles that are built on top of the basic caption style, as is sometimes the case in sophisticated styles. - Markdown reader: - Fix performance issue in links with ' (#10880). - Typst reader: - Handle document metadata and #title (jgm/typst-hs#80). Note that previously, the typst reader never returned document metadata. Now it does, even if the typst document does not contain a #title function that would result in actually printing the title block. - Djot reader: - Add Space elements (#11250). Previously we just got big Str elements with spaces included. But many pandoc writers assume that breakable spaces will be Space elements, and this is also required for automatic wrapping. - RST reader: - Correctly handle intraword emphasis (#11309). - Text.Pandoc.Readers: - Export readAsciiDoc, readXlsx, readPptx [API change]. - New module Text.Pandoc.Writers.BBCode, exporting writeBBCode, writeBBCodeSteam, writeBBCodeFluxBB, writeBBCodePhpBB, writeBBCodeHubzilla, writeBBCodeXenforo [API change]. - LaTeX writer: - Make level 1-3 headings work inside blockquotes (#11281, James Barlow). - Remove split from list of math environments (#11274). - Improve handling of math environments in tex math (#11266). - HTML writer: - Add reveal.js scroll and scrollSnap options to writer and template (#10052, Asliddinbek Azizovich). - Use ‘defer’ when including mathjax script, as recommended in MathJax docs (#11292). - ANSI writer: - Apply row spans in tables (#10149, Tuong Nguyen Manh). The ANSI writer is now able to keep track of row spans and apply them in rows. - Pptx writer: - Handle reference doc without slides (#7536, Tuong Nguyen Manh). - AsciiDoc writer: - Add more table features (#11267, Tuong Nguyen Manh): Row span and column span, footer row, individual horizontal cell alignment. - Typst template: - Fix font for compatibility with typst 0.14, which doesn’t permit an empty array for font (#11238). - Re-add columns to typst template (#11259), fixing a pandoc 3.8 regression. - Fix syntax for bibliography inclusion (#11233, Mickaël Canouil). Previously the syntax was wrong when multiple bibliography files were specified. Typst expects an array. - Text.Pandoc.Writers: - Export writeBBCode, writeBBCodeSteam, writeBBCodeFluxBB, writeBBCodePhpBB, writeBBCodeHubzilla, writeBBCodeXenforo [API change]. - Text.Pandoc.Writers.Shared: - Add functions insertCurrentSpansAtColumn, takePreviousSpansAtColumn and decrementTrailingRowSpans for applying and keeping track of RowSpans over multiple rows (#10149, Tuong Nguyen Manh). [API change] - Text.Pandoc.Logging: - Change message for missing HTML title warning (#11307). Suggest setting the pagetitle variable instead of setting title in metadata. - Lua subsystem: - Preserve common state of custom Lua readers (Albert Krewinkel). The common state is transferred to Lua when calling a custom Lua reader, and is now also transferred back after the reader has finished. This ensures that info messages, warnings, and mediabag entries are available to the main program and all subsequent processing steps. - Text.Pandoc.PDF: - Avoid converting SVG to PDF when non-TeX PDF engine is used (#11275). This fixes a 3.8 regression, which caused documents with SVGs to raise an error when converted to PDF using WeasyPrint. - Fix a 3.8 regression with typst and smart quotes (#11256). Before 3.8, the default behavior when producing a PDF -t typst was to produce smart quotes according to typst’s defaults. (This could be defeated by specifying -t typst-smart.) This behavior broke in 3.8 because of a change to Text.Pandoc.PDF. This change caused smart to be disabled for all formats when producing PDFs, when before it was only disable for TeX-based formats (to avoid bad ligatures). This commit restores the old behavior. Possibly the regression also other affects other non-TeX formats, e.g. HTML. - Text.Pandoc.Shared: - Add functions allRowsEmpty and tableBodiesToRows from the RST writer for reuse in other writers. (Tuong Nguyen Manh) [API change]. - Text.Pandoc.Citeproc: - Allow formatting in locator to be transmitted to citeproc. We do this indirectly, by rendering the formatting using the HTML tags that citeproc recognizes. Fixes jgm/citeproc#68 and jgm/citeproc#163. Note that formatting is only possible for locators given in the explicit form, surrounded by curly braces. It won’t work for implicit locators, since these expect number-like expressions. - New non-exported module Text.Pandoc.Readers.OOXML.Shared containing functions factored out from Text.Pandoc.Readers.Docx.Util (Anton Antich). - Tests: The common file nativeDiff has been extracted from the Docx and Pptx text files and put in Tests.Helpers. - Use asciidoc 0.1, djot 0.1.2.4, texmath 0.13.0.2, typst 0.8.1, citeproc 0.12. - MANUAL.txt: - Improve implicit_figure documentation (#11082). - Give both forms of options when referring to them (#11306). - Update INSTALL.md (#11271).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.8.3 --exact`

#### 3.8.2.1 — 2025-10-20

- x64 wix (machine): pandoc-3.8.2.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-windows-x86_64.msi
  - sha256: fd4dd760e7f696fd93f8c5628b42a359059b1f752bd03c30bf15fe7a824cd7da
- x64 wix (user): pandoc-3.8.2.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-windows-x86_64.msi
  - sha256: fd4dd760e7f696fd93f8c5628b42a359059b1f752bd03c30bf15fe7a824cd7da
- x64 zip: pandoc-3.8.2.1-windows-x86_64.zip
  - url: https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-windows-x86_64.zip
  - sha256: ded73890567ae71b945c8b36b8b33f89b5ed7357a9156a233445b46f92a5bc82
Release notes: I'm pleased to announce the release of pandoc 3.8.2.1, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.8.2.1 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.8.2.1 This is primarily a bug-fix release. There are no API changes. The main motivation for the release is to fix a serious performance regression with --citeproc and the default CSL style, chicago-author-date.csl. This style was recently revised in a way that took much longer for citeproc to parse. This version of pandoc is built with citeproc 0.11, which fixes the performance regression. One new feature (added by Albert Krewinkel) is that the Org reader now parses parameter lists on unknown blocks, and also supports dynamic blocks. Thanks to all who contributed, especially new contributors Emmanuel Ferdman, FoxChillz, mourino, and priiduonu. Of special note: - HTML reader: allow blank space between open and close `iframe`. - RTF reader: improve hyperlink parsing (#11211). - Org reader: - Parse parameter lists on unknown blocks (#11188, Albert Krewinkel). The reader tries to parse the rest of the opening line of a block, e.g., `#+begin_myblock …`, as a parameters list. It first assumes that the parameters are in lisp-style (`:key value`), then alternatively tries to read python-style key-value pairs (`key=value`) and falls back to reading the entire remaining line as a single `parameter` attribute. - Add support for dynamic blocks. - Docx writer: properly handle nested comment spans (#8189, #6959, mourino). - RST writer: Don’t use simple tables with RowSpans (#11214, Tuong Nguyen Manh). - Typst writer: Escape open paren after non-space (#11210). This fixes an issue that occurs if an open paren comes right after e.g. `#strong[test]`. - Typst template: ensure that title block is properly centered (#11221). - LaTeX writer/template: small fix for unnumbered tables for compatibility with older LaTeX installations (#11201). Thanks to @priiduonu for the solution. - MANUAL.txt: Fixed missing backtick (#11209, FoxChillz). - Correct anchor references to `pandoc.text` module documentation (#11111, Emmanuel Ferdman). - Fixed golden test regeneration in Docx reader test. - Allow unicode-data 0.8. - Use citeproc 0.11. This fixes a significant performance regression in pandoc 3.8, which was due to a rewrite of the default chicago-author-date.csl file. Performance with `--citeproc` is now on par with what we had in pandoc 3.7, even with the revised Chicago styles. - MANUAL.txt: remove some redundancy (#11178, Reuben Thomas).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.8.2.1 --exact`

#### 3.8.2.0 — 2025-09-29

- x64 wix (machine): pandoc-3.8.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.2/pandoc-3.8.2-windows-x86_64.msi
  - sha256: b428a6277ea32016c8e1426ed328b47c45599a21d7e5260ee610da1cf975a4db
- x64 wix (user): pandoc-3.8.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.2/pandoc-3.8.2-windows-x86_64.msi
  - sha256: b428a6277ea32016c8e1426ed328b47c45599a21d7e5260ee610da1cf975a4db
Release notes: I'm pleased to announce the release of pandoc 3.8.2, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.8.2 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.8.2 This release fixes a regression in the typst template (since 3.8), which caused links to be omitted. It also adds a new default Markdown extension, `table_attributes`, which allows attributes to be added to tables by putting them after the caption. API change: Add `Ext_table_attributes` constructor to Extension. Of special note: - Markdown reader/writer: implement new `table_attributes` extension (#10884). When `table_attributes` is enabled (as it is by default for pandoc's Markdown), attributes can be attached to a table by including them at the end of the caption. Previously the writer would emit an identifier in this position, but the reader didn't handle it. Now arbitrary attributes are allowed, and they work in both the reader and writer. - Typst writer: don't add superfluous semicolons (#11196). Previously we added semicolons after inline commands not followed by spaces, but mainly this was to deal with one issue: the presence of a semicolon after an inline command, which would be swallowed as a command separator (#9252). This commits adopts an approach that should avoid so many superfluous semicolons: it escapes semicolons that might come right after a command. - Typst template: fix 3.8 regression in which links disappear (#11194). A template change in 3.8 added a show rule for links which causes them to disappear except in special cases. - Text.Pandoc.Parsing: rewrite `oneOfStrings` more efficiently. - LaTeX writer: Fix strikeout in links (#11192, Tuong Nguyen Manh). As in #1294 `\url` and `\href` need to be protected inside an mbox for `soul` commands. - Text.Pandoc.Extensions: Add `Ext_table_attributes` constructor for `Extension` [API change]. * Use released texmath 0.13.0.1. * Update FSF contact information in COPYING (#11183, Bensun Muite). - MANUAL.txt: remove some redundancy (#11178, Reuben Thomas).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.8.2.0 --exact`

#### 3.8.1.0 — 2025-09-29

- x64 wix (machine): pandoc-3.8.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.1/pandoc-3.8.1-windows-x86_64.msi
  - sha256: 8a756f1aab3a6032a60428c98468cccba690624d1cf4d0eed6065bf14e4b95e2
- x64 wix (user): pandoc-3.8.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8.1/pandoc-3.8.1-windows-x86_64.msi
  - sha256: 8a756f1aab3a6032a60428c98468cccba690624d1cf4d0eed6065bf14e4b95e2
Release notes: I'm pleased to announce the release of pandoc 3.8.1, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.8.1 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.8.1 This release introduces a few new features and fixes some bugs and regressions. Of special note: - New output format vimdoc (for Vim documentation). - --syntax-highlighting now works as expected for typst output. - New shorthands variable allows activating babel shorthands in LaTeX/PDF output. - Removed coloring for links in epub.css, so that the reader's defaults will be used. API changes: - New module Text.Pandoc.Writers.Vimdoc, exporting writeVimdoc. - Text.Pandoc.Parsing: new functions tableWithSpans, tableWithSpans', toTableComponentsWithSpans, and toTableComponentsWithSpans'. - Text.Pandoc.Shared: new function removeLinks. - Text.Pandoc.Highlighting: export functions formatTypstBlock, formatTypstInline, styleToTypst (from skylighting). Thanks to all who contributed, especially Tuong Nguyen Manh (who has been working hard to improve table support) and new contributors Raymond Berger and reptee. Click to expand changelog - New output format vimdoc (Vim documentation format) (#11132, reptee). - [API change] Added module Text.Pandoc.Writers.Vimdoc, exporting writeVimdoc. - Markdown reader: - Improve superscript/subscript/inline note parsing (#8652). We do not allow inline notes to be followed by ( or [. Otherwise, we parse inline notes before superscripts. Also, the sub/superscript parsers have been adjusted so that they really exclude unescaped spaces (as they did not before, when the spaces occurred in nested inlines). - Fix simple table alignment (#11136, Tuong Nguyen Manh). Take wide characters into account when determining the alignment. - LaTeX reader: - Ignore \pandocbounded (#11140). - XML reader: - Parse <MetaString> (#11137, massifrg). - Typst reader: - Add support for reading typst pagebreak (#11101, Raymond Berger). The pagebreak is parsed as a HorizontalRule inside a wrapper Div with class page-break. - Docx reader: - Handle figures in indented paragraphs (#11028). - Change default for textwidth. This should only be used if sectPr is not found. - Properly calculate table column widths (#9837, #11147). Previously we assumed that every table took up the full text width. Now we read the text width from the document’s sectPr. - Use Tasty.Golden for Docx reader tests. This way we can update them with --accept. - RST reader: - Fix regression in simple table parsing (#11150). - SkippedContent warning if table directive contains non-tabular content. - Simple tables: leading space in a cell should not cause the contents to be parsed as a block quote (#11146). - Parse :alt: on figure (#11140). Also give a better default if alt is not specified, using the stringified caption rather than the filename. - Support col spans for simple tables (Tuong Nguyen Manh). - Markdown writer: - Improve handling of implicit figures (#11140). Allow implicit figures when alt text differs from caption (in this case, we use an image attribute to add the alt). - Use approximate pipe tables when it’s the only option (#11128). If we have a table with row/colspans that can rendered as an approximate pipe table (without row/colspans), and no other table format is enabled that could render the table, we fall back to an “approximate” pipe table, with no row/colspans. - RST writer: - Ensure blank line before directives (#11162). - Add col spans for simple tables (#10127, Tuong Nguyen Manh). - OpenDocument writer: - Add missing table elements (#10002, Tuong Nguyen Manh). Add missing header rows after the first one, footer rows as well as TableBody header rows. - Docx writer: - Fix regression (from 3.8) in highlighted code (#11156). - Powerpoint writer: - Handle single column (Tuong Nguyen Manh). - Typst writer: - Fix syntax highlighting (#11171, completes #10525). Previously the native typst highlighting was always used, regardless of the setting of --syntax-highlighting. With this change, --syntax-highlighting=none and --syntax-highlighting=<stylename> (with skylighting style) will work. - LaTeX writer: - Make beamer footnotes compatible with pauses (#5954). Previously they would appear before the content to which the note was attached, when there were pauses in a slide. - Avoid \_ in bibliography variable (#11152). - Ensure that unlabelled tables don’t increment counter (#11141). - Protect VERB in caption (#11139, Tuong Nguyen Manh). - Don’t add links to TOC (#11124, Albert Krewinkel). - Fix strikeouts in beamer title (#11168, Tuong Nguyen Manh). - LaTeX template: Add shorthands variable for LaTeX output (#11160). If true, pandoc will allow language-specific shorthands when loading babel. (This is helpful, for example, in getting proper spacing around French punctuation.) - epub.css: Remove coloring for a, a:visiting (#11174). This was causing links in iOS books app not to be distinguished in any way (since underlining is not used there). - Text.Pandoc.Parsing: - [API chage] (Tuong Nguyen Manh). New functions tableWithSpans, tableWithSpans', toTableComponentsWithSpans and toTableComponentsWithSpans' take a list of lists of (Blocks, RowSpan, ColSpan) to parse a Table with different RowSpan and ColSpan values accordingly. New helper functions singleRowSpans and singleColumnSpans help set all RowSpans or ColSpans to be 1 in case the table format only allows setting one or the other. - Text.Pandoc.Class: - Let fetchItem fail if the HTTP request is not successful (Albert Krewinkel). HTTP requests that don’t return a 200 error code are now treated as an error. This ensures that a warning is triggered when using --embed-resources or --extract-media. - Text.Pandoc.Writers.Shared: - Add new function removeLinks [API change] (Albert Krewinkel). The function converts links to spans. It is used, for example, to avoid nested links. The HTML writer used to put the description of nested links into small caps, but uses a simple span now. - Text.Pandoc.Highlighting: export typst functions [API change]. New exported functions formatTypstBlock, formatTypstInline, styleToTypst. - Text.Pandoc.XML: - Add fetchpriority to list of HTML attributes (#11176). - Allow unicode-data 0.7. - Use released djot 0.1.2.3. Fixes a bug in which indentation was swallowed in a code block inside a blockquote.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.8.1.0 --exact`

#### 3.8.0.0 — 2025-09-06

- x64 wix (machine): pandoc-3.8-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8/pandoc-3.8-windows-x86_64.msi
  - sha256: 63e34aadf772a182fb88513d2e5ea894c0c813a9d3a72bd14e0b0d6058f553ac
- x64 wix (user): pandoc-3.8-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.8/pandoc-3.8-windows-x86_64.msi
  - sha256: 63e34aadf772a182fb88513d2e5ea894c0c813a9d3a72bd14e0b0d6058f553ac
Release notes: I'm pleased to announce the release of pandoc 3.8, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.8 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.8 This release comes with many small improvements and a few larger ones. Among the more visible changes: + A new input/output format xml, which exactly represents a pandoc AST in a more easily human-readable form than JSON. The format is documented in doc/xml.md, and schemas can be found in tools/pandoc-xml.*. + A new command line option --syntax-highlighting, which takes the values 'none', 'default', 'idiomatic', a style name, or a path to a theme file. --no-highlighting and --highlight-style are deprecated. + New extensions smart_quotes and special_strings for org mode. These allow pandoc's parsing to more closely reproduce Emacs org-mode's behavior. + The old compact_definition_lists extension has been removed. API changes: + New modules Text.Pandoc.Readers.XML (exporting readXML) and Text.Pandoc.Writers.XML (exporting writeXML). + Text.Pandoc.Extensions: added constructors Ext_smart_quotes, Ext_special_strings; removed Ext_compact_definition_lists. + Text.Pandoc.App now exports versionInfo, a function that takes three parameters that can be filled in by pandoc-cli. + Text.Pandoc.Parsing: tableWith and tableWith' now return a list of lists of Blocks, allowing for multiple header rows. + Text.Pandoc.ImageSize: Add Point and Pica as constructors of ImageSize. Add Avif constructor of ImageType. + Text.Pandoc.Class: CommonState is now opaque and does not support its fields. To compensate for this, we now export several new functions: getRequestHeaders, setRequestHeaders, getSourceURL, getTrace. Thanks to all who contributed, especially new contributors Christopher Kenny, Erik Post, Repetitive, Reuben Thomas, Ryan Gibb, Sean Soon, and massifrg. Click to expand changelog - 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 #9080 (comment). - 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:

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.8.0.0 --exact`

#### 3.7.0.2 — 2025-05-29

- x64 wix (machine): pandoc-3.7.0.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.7.0.2/pandoc-3.7.0.2-windows-x86_64.msi
  - sha256: fe64e16b76855fff6dd15cb9967f5680cbb31495b5ff968dc5e5304cb9b3a23d
- x64 wix (user): pandoc-3.7.0.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.7.0.2/pandoc-3.7.0.2-windows-x86_64.msi
  - sha256: fe64e16b76855fff6dd15cb9967f5680cbb31495b5ff968dc5e5304cb9b3a23d
Release notes: I'm pleased to announce the release of pandoc 3.7.0.2, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.7.0.2 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.7.0.2 This release fixes some regressions in grid table rendering introduced in 3.7. There are a few other nice improvements as well; see the changelog for details. Thanks to all who contributed, especially new contributor GHyman83. Click to expand changelog - 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

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.7.0.2 --exact`

#### 3.7 — 2025-05-15

- x64 wix (machine): pandoc-3.7-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.7/pandoc-3.7-windows-x86_64.msi
  - sha256: 2a855f58f76f7eea28e71200c6121d630ad69391319fbe27cb9fc19e1574173e
- x64 wix (user): pandoc-3.7-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.7/pandoc-3.7-windows-x86_64.msi
  - sha256: 2a855f58f76f7eea28e71200c6121d630ad69391319fbe27cb9fc19e1574173e
Release notes: I'm pleased to announce the release of pandoc 3.7, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.7 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.7 - New command-line option --variable-json. This allows non-string values (such as booleans or maps) to be given to template variables on the command line. - --pdf-engine will now accept groff as a value. - Markdown and RST writers now allow row/colspans in grid tables. In addition, table column widths will expand if needed to contain text that can't be wrapped, avoiding the introduction of unwanted whitespace. - The four_space_rule extension now works for plain output. - Roff formats now use the most portable syntax possible. - Improved handling of inline TeX in Org-mode. - In Lua filters, pandoc.read can now be used in "sandboxed" mode, restricting file or network access, by passing in a list of accessible files as a fourth parameter. API changes: - Text.Pandoc.Writers.Shared: new function delimited. - Text.Pandoc.Writers.Shared: new version of gridTable with changed parameters. - Text.Pandoc.Class: new exported function sandboxWithFileTree. Thanks to all who contributed, especially new contributors Manolis Stamatogiannakis, Mohamed Akram, and Niklas Eicker. Click to expand changelog - 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<em> space </em>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.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.7 --exact`

#### 3.6.4 — 2025-03-16

- x64 wix (machine): pandoc-3.6.4-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6.4/pandoc-3.6.4-windows-x86_64.msi
  - sha256: c8b050467ebe41dcd86f2c47b138cd8b527aed7299392dcd00a6eb71b40eaab7
- x64 wix (user): pandoc-3.6.4-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6.4/pandoc-3.6.4-windows-x86_64.msi
  - sha256: c8b050467ebe41dcd86f2c47b138cd8b527aed7299392dcd00a6eb71b40eaab7
Release notes: Click to expand changelog - 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 <!-- - two --> - 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 (cbe67b9) (#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 roles 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.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.6.4 --exact`

#### 3.6.3 — 2025-02-09

- x64 wix (machine): pandoc-3.6.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6.3/pandoc-3.6.3-windows-x86_64.msi
  - sha256: 1b62900b94ebe8e5881d7763dc1c74827633f0cf72d55a5ab88807d28b87263a
- x64 wix (user): pandoc-3.6.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6.3/pandoc-3.6.3-windows-x86_64.msi
  - sha256: 1b62900b94ebe8e5881d7763dc1c74827633f0cf72d55a5ab88807d28b87263a
Release notes: Click to expand changelog - 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 <abbr> 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.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.6.3 --exact`

#### 3.6.2

- x64 wix (machine): pandoc-3.6.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6.2/pandoc-3.6.2-windows-x86_64.msi
  - sha256: e9a8036cc298ae3d92105d5909c805a0a069cc988e7938703c4041b3e24a13aa

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.6.2 --exact`

#### 3.6.1 — 2024-12-23

- x64 wix (machine): pandoc-3.6.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6.1/pandoc-3.6.1-windows-x86_64.msi
  - sha256: 4eb59305269b932be263e8e427828b0e92ba7f381cdcca3ac62618608a84b578
- x64 wix (user): pandoc-3.6.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6.1/pandoc-3.6.1-windows-x86_64.msi
  - sha256: 4eb59305269b932be263e8e427828b0e92ba7f381cdcca3ac62618608a84b578
Release notes: - 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).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.6.1 --exact`

#### 3.6 — 2024-12-08

- x64 wix (machine): pandoc-3.6-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6/pandoc-3.6-windows-x86_64.msi
  - sha256: efc621bb08901fbf9c78cc71d5c00d8e67eb9318f8ef994d908d71e0d28eb702
- x64 wix (user): pandoc-3.6-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.6/pandoc-3.6-windows-x86_64.msi
  - sha256: efc621bb08901fbf9c78cc71d5c00d8e67eb9318f8ef994d908d71e0d28eb702
Release notes: - 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 <www.example.com>`_. 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.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.6 --exact`

#### 3.5 — 2024-10-05

- x64 wix (machine): pandoc-3.5-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.5/pandoc-3.5-windows-x86_64.msi
  - sha256: 27c0edca626ca830a299851e639115b3c5d982ad40bc2f8fccf1d5f077c4a8bb
- x64 wix (user): pandoc-3.5-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.5/pandoc-3.5-windows-x86_64.msi
  - sha256: 27c0edca626ca830a299851e639115b3c5d982ad40bc2f8fccf1d5f077c4a8bb
Release notes: - 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 <HTML> 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 <WRAP> 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. <HTML> and <html> 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 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 <floats-group> 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. -- 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).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.5 --exact`

#### 3.4 — 2024-09-10

- x64 wix (machine): pandoc-3.4-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.4/pandoc-3.4-windows-x86_64.msi
  - sha256: 6e8b998c2f859501e62ecbb2540e6ce85907430cff3c68c7a83720c4b671ba65
- x64 wix (user): pandoc-3.4-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.4/pandoc-3.4-windows-x86_64.msi
  - sha256: 6e8b998c2f859501e62ecbb2540e6ce85907430cff3c68c7a83720c4b671ba65
Release notes: - 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. - New module: Text.Pandoc.Writers.ANSI [API change] (Evan Silberman). - Docx writer: - Add “SuppressAuthor” and “AuthorOnly” to citationMode when +citations is used (thomjur). - 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 <figcaption> placement sensitive to caption position settings. For tables, <caption> 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 <caption> 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).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.4 --exact`

#### 3.3 — 2024-07-29

- x64 wix (machine): pandoc-3.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.3/pandoc-3.3-windows-x86_64.msi
  - sha256: bff3b8859e4ad933e9d143afa26a4b886c0996d0bd6244f48b36344ba3235d2d
- x64 wix (user): pandoc-3.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.3/pandoc-3.3-windows-x86_64.msi
  - sha256: bff3b8859e4ad933e9d143afa26a4b886c0996d0bd6244f48b36344ba3235d2d
Release notes: - 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.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.3 --exact`

#### 3.2.1 — 2024-06-24

- x64 wix (machine): pandoc-3.2.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.2.1/pandoc-3.2.1-windows-x86_64.msi
  - sha256: 2a8705fa9ff7bc0f2d40ab8700f343e8ecbc293de9d6da4168af775d935d9dbe
- x64 wix (user): pandoc-3.2.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.2.1/pandoc-3.2.1-windows-x86_64.msi
  - sha256: 2a8705fa9ff7bc0f2d40ab8700f343e8ecbc293de9d6da4168af775d935d9dbe
Release notes: https://github.com/jgm/pandoc/releases/tag/3.2.1

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.2.1 --exact`

#### 3.2 — 2024-05-11

- x64 wix (machine): pandoc-3.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.2/pandoc-3.2-windows-x86_64.msi
  - sha256: 0e00bf2c7c4c656019f117d65e84bb29c6746b5c0c9ef4ae05da811ba35c6ed2
- x64 wix (user): pandoc-3.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.2/pandoc-3.2-windows-x86_64.msi
  - sha256: 0e00bf2c7c4c656019f117d65e84bb29c6746b5c0c9ef4ae05da811ba35c6ed2
Release notes: - Change to --file-scope behavior (#8741): previously a Div with an identifier derived from the filename would be added around the contents of each file. This caused problems for “chunking” files into chapters, e.g. in EPUB. We no longer add the surrounding Div. This cooperates better with chunking. Note, however, that if you have relied on the old behavior to link to the beginning of the contents of a file using its filename as identifier, that will no longer work. - Markdown reader: - Allow repeated labels in numbered example lists. Previously if you tried to use the same label as an earlier example list item, you’d get a new number, not the old one, and references to the label would go to the second occurrence. Now an existing label will be reused, and no new number will be generated. Caveat: this only works reliably when the re-used example list item occurs by itself in a list, or occurs in a list of previously used example list items that occur in exactly the same order as previously. - Fix normalCite so it doesn’t consume past a closing ] boundary (#9710). This was causing an exponential performance bug on long lists of links containing potential emphasis characters. - Generalize inlinesInBalancedBrackets to inBalancedBrackets, with a parameter for the inner parser. - Auto-close unclosed divs (#9635). This applies to both fenced and HTML-ish varieties. Otherwise we face an exponential performance problem with backtracking. A warning is issued when a div is implicitly closed. - RST reader: - Fix figclass and align annotations for figures (#7473, Gokul Rajiv). - LaTeX writer: - Use polytonicgreek instead of polutonikogreek with babel (#9698). polutonikogreek is outdated. Also recognize both in the LaTeX reader. - Improve treatment of math inside soul commands (#1294, #5529). soul commands (ul, hl, st) are very fragile and the math must be handled specially. - LaTeX reader: - Fix over-eager macro expansion in conditionals (#9676). - Parse flalign, flalign* math environments (#9679). We parse these as Math elements with an aligned environment. Semantically it’s not exactly the same, but better than falling back to raw LaTeX. - LaTeX template: add titlegraphicoptions variable (#9207, Guilhem Saurel). - Docx reader: - Issue warning rather than error when we can’t parse EndNote citations (see #8433). - Fix anchor in header after anchor (#9626, mbracke). - RTF reader: - Don’t try to handle non-default code pages (#9683). Emit a warning instead. - OpenDocument writer: - Implement custom-style for spans (#9657). - Typst writer: - Add blank line in definition lists with multiple definitions (see #9704). - Property output (#9648, Gordon Woodhull). The Typst writer will pass on specially marked attributes as raw Typst parameters on selected elements. This allows extensive customization using filters. A separate document (doc/typst-property-output.md) has been added that provides extensive documentation and examples of the use of this feature. - Markdown writer: - Don’t try to align columns in pipe tables with lines greater than COLUMNS. The alignment just reduces readibility when the lines soft wrap. - Don’t use raw_attribute syntax for raw blocks, unless there is no other option (see #9677). Macros in a raw_attribute block don’t get interpreted when it is read again by pandoc’s markdown reader. - ConTeXt writer: - Replace depreciated \sc with \setsmallcaps (#9518, James P. Ascher). - Docx writer: - Use conventional styles/indents for Word bullet lists (#7280). - reference.docx: - Use current standard Word theme (#7280). This includes using the sans-serif font Aptos instead of the serif font Cambria, and default colors for headings. - Remove duplicate DefaultParagraphFont in styles.xml. - New module Text.Pandoc.Transforms [API change] (Albert Krewinkel). This module exports the following functions which were formerly exported from Tetx.Pnadoc.Shared: headerShift, filterIpynbOutput, eastAsianLineBreakFilter, as well as some functions that were previously not exported. - Text.Pandoc.Shared: - headerShift, filterIpynbOutput, and eastAsianLineBreakFilter are no longer exported from this module; they are now exported from Text.Pandoc.Transforms (Albert Krewinkel). - Text.Pandoc.Error: - Improve reporting of unsupported extensions errors (#9247, Albert Krewinkel). - Text.Pandoc.App: - Move “transforms” after filters (#9664). This will mean that --shift-heading-level-by affects a heading added by reference-section-title. - Text.Pandoc.App.CommandLineOptions: - Simplify output for OptVersion. Omit the information about versions of dependencies. We no longer emit version info at this level anyway; pandoc-cli intercepts and handles --version. This code would only be called if someone used the pandoc library function handleWithOptInfo in their own program. - Text.Pandoc.ImageSize: - Export ImageSize datatype. - Text.Pandoc.SelfContained: - Merge class attribute when both img and svg specify it (#9652, Carlos Scheidegger). - Text.Pandoc.Logging: - Add ScriptingInfo constructor for LogMessage [API change] (Albert Krewinkel). - Make DocxParserWarning a WARNING, not INFO. [API change]. - Add UnsupportedCodePage constructor to LogMessage [API change]. - Add UnclosedDiv constructor for LogMessage [API change]. - Lua subsystem (Albert Krewinkel: - Add a pandoc.log module. - Uupdate to pandoc-lua-marshal version 0.2.7 (#8916). This fixes counterintuitive behavior of the content property on BulletList and OrderedList items. Unmarshalling of that field now matches the behavior of the constructor. - Use newest zip module. This adds a symlink function to Entry objects, allowing to check if an entry represents a symbolic link. - Improve pandoc.json.decode docs. - Update and fix docs for pandoc.types.Version and pandoc.utils.type. - Add new module pandoc.image The module provides basic querying functions for image properties. - Bump pandoc-lua-engine to 0.2.1.4. - Use latest KaTeX CDN asset (#9707, Salim B). - pandoc-cli: ensure UTF8 when emitting version info. - tools/update-lua-module-docs.lua: improve script-internal docs, cleanup (Albert Krewinkel). - Allow network 3.2. - Use latest versions of texmath, djot, skylighting-core, skylighting. - Fix command test for #9652. - Fix some typos in code comments (#9638, guqicun). - Command tests: include regular PATH after directory with the test executable (ensures that DLLs will be found on Windows). - MANUAL.txt: - Document handout variable for beamer (#9742). - Document formats affected by --slide-level (#9745). - Update the list of required LaTeX packages (#9728, Albert Krewinkel). - Use more descriptive link text for ODT (#9673). - Add clarification about toc-title in docx, pptx (#9645). - Better document truthiness for conditionals (#9661). - Mention that custom-style works with ODT (Ian Max Andolina). - Harmonize typographic dashes (#9688, Salim B). Standardize on --- with no space. - INSTALL.md: Minor tweaks (#9705, Leo Heitmann Ruiz).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.2 --exact`

#### 3.1.13 — 2024-04-07

- x64 wix (machine): pandoc-3.1.13-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.13/pandoc-3.1.13-windows-x86_64.msi
  - sha256: 51da43aaeb93926921beb777d18b2362d9b6a785d1333177291bb5e8834a4874
- x64 wix (user): pandoc-3.1.13-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.13/pandoc-3.1.13-windows-x86_64.msi
  - sha256: 51da43aaeb93926921beb777d18b2362d9b6a785d1333177291bb5e8834a4874
Release notes: - Org reader: - Fix treatment of id property under heading (#9639). - DocBook reader: - Add empty title to admonition div if not present (#9569). This allows admonition elements (e.g. <note>) to work with gfm admonitions even if the <title> is not present. - DokuWiki reader: - Link text cannot contain formatting (e.g., // is not italics) (#9630). - An explicitly empty link text ([[url|]]) works the same as an omitted link text (#9632). - Typst reader: - Support Typst 0.11 table features: col/rowspans, table head and foot (#9588). - Parse cell col/rowspans. - CSLJson writer: - Put $ or $$ around math in csljson output (#9616). - ConTeXt writer: - Fix options order with \externalfigure. The dimensions should come beforeafter the class if both are present. - Typst writer: - Put label after Span, not before. Labels get applied to preceding markup item. - Support Typst 0.11 table features (#9588): colspans, rowspans, cell alignment overrides, relative column widths, header and footer, multiple table bodies with intermediate headers. Row heads are not yet supported. - The default typst template has been modified so that tables don’t have lines by default. As is standard with pandoc, we only add a line under a header or over a footer. However, a different default stroke pattern can easily be added in a template. - More reliable escaping in inline [..] contexts (#9586). For example, we need to escape [\1. April] or it will be treated as an ordered list. - Handle unnumbered on headings (#9585). - LaTeX writer: - Fix math inside strikeout (#9597). - Text.Pandoc.Writers.Shared: - Export isOrderedListMarker [API change]. - Change lhs tests so they don’t use --standalone. This will avoid test failures due to minor changes in skylighting versions, e.g. #9589. - Use latest texmath, typst. - Require pandoc-lua-marshal 0.2.6 (#9613, Albert Krewinkel). Fixes an issue arising when the value of content properties on BlockQuote, Figure, and Div elements was an empty list. - Update lua-filters.md (#9611, Carlos Scheidegger).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.13 --exact`

#### 3.1.12.3 — 2024-03-18

- x64 wix (machine): pandoc-3.1.12.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12.3/pandoc-3.1.12.3-windows-x86_64.msi
  - sha256: ed0bab1bb37c58acd4ab49e485bb01bb0a93e94763150b5c66ba799da0836292
- x64 wix (user): pandoc-3.1.12.3-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12.3/pandoc-3.1.12.3-windows-x86_64.msi
  - sha256: ed0bab1bb37c58acd4ab49e485bb01bb0a93e94763150b5c66ba799da0836292
Release notes: - Markdown reader: Fix bug with footnotes at end of fenced div (#9576). - LaTeX reader: - Improve tokenization of @ (#9555). Make tokenization sensitive to \makeatletter/\makeatother. Previously we just always treated @ as a letter. This led to bad results, e.g. with the sequence \@. E.g., a\@ b would parse as “ab” and a\@b as “a”. - Make withRaw work inside parseFromToks (#9517). This is needed for raw environments to work inside table cells. - Better handling of table colwidths (#9579). Previously the parser just failed if the column width specified in p{} wasn’t a multiple of \linewidth. This led to cases where content was skipped. - Typst writer: - Add ‘kind’ parameter to figures with tables (#9574). - Avoid unnecessary box around image in figure (#9236). - Omit width/height in images unless explicitly specified (#9236). Previously we computed width/heigth for images that didn’t have size information, because otherwise typst would expand the image to fit page width. This typst behavior has changed in 0.11. This change fixes a bug in which images would sometimes overflow page margins, depending on their intrinsic size. - Don’t add hard-coded inset to tables (#9580). Instead, set this globally in the default template, allowing it to be customized. - LaTeX template: Fix block headings support for unnumbered paragraphs (#9542, #6018, Oliver Fabel). - HTML templates: Replace polyfill provider (#9537, @SukkaW). Replace polyfill.io with cdnjs.cloudflare.com/polyfill. polyfill.io has been acquired by Funnull, and the service has become unstable. - Korean translations: delete colon in translation for ‘to’. This was invalid YAML, and not desired anyway, since a colon is added. - Use latest commonmark, commonmark-extensions. This fixes a 3.12 regression in parsing of commonmark/gfm autolinks (jgm/commonmark-hs#151). - Depend on djot 0.1.1.3, which fixes a serious parsing bug affecting regular paragraphs after lists. - Depend on latest skylighting, skylighting-core, typst-hs, texmath. - MANUAL.txt: Change broken link to IDML cookbook (#9563).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.12.3 --exact`

#### 3.1.12.2 — 2024-03-01

- x64 wix (machine): pandoc-3.1.12.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12.2/pandoc-3.1.12.2-windows-x86_64.msi
  - sha256: 31c39d40e54dc37e217de6f1803d351e5649168f7b4e9d6387be2cbf1b787e8c
- x64 wix (user): pandoc-3.1.12.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12.2/pandoc-3.1.12.2-windows-x86_64.msi
  - sha256: 31c39d40e54dc37e217de6f1803d351e5649168f7b4e9d6387be2cbf1b787e8c
Release notes: - Docx reader: - Ensure that table captions are counted (#9518). - Detect caption by style name not id (#9518). The styleId can change depending on the localization. - Avoid emitting empty paragraph where caption was. - Markdown reader: fix regression in link parsing with wikilinks extensions (#9481). This fixes a regression introduced in 3.1.12. - Org reader/writer: support admonitions (#9475). - Org writer: omit extra blank line at end of quote block. - Typst writer: ensure that -, +, etc. are escaped at beginning of block (#9478). Our recent relaxing of escaping (#9386) caused problems for things like emphasized - characters that were rendered using #strong[-]#. This now gets rendered as #strong[\-]. - LaTeX writer: fix bug when a language is specified in two different ways (#9472). If you used lang: de-DE but then had a span or div with lang=de, the preamble would try to load ngerman twice, leading to an error. This fix ensures that a language is only loaded once. - Docx writer: Don’t copy over footnotePr in settings.xml from reference.docx (#9522). - EPUB writer: omit EPUB2-specific meta tag on EPUB3 (#9493). This caused a validation failure in epubs with cover images. - Lua: avoid crashing when an error message is not valid UTF-8 (Albert Krewinkel). - Text.Pandoc.SelfContained: - Add role="img" to svgs. - Add aria-label to svg elements with alt text if present. Screen readers ignore alt attributes on svg elements but do pay attention to aria-label (#9525). - Text.Pandoc.Shared: Fix regression in section numbering in makeSections (#9516). Starting with pandoc 3.1.12, unnumbered sections incremented the section number. - Text.Pandoc.Class: fix openUrl TLS negotiation (#9483). With the release of TLS 2.0.0, the TLS library started requiring Extended Main Secret for the TLS handshake. This caused problems connecting to zotero’s server and others that do not support TLS 1.3. This commit relaxes this requirement. - Depend on djot 0.1.1.0 (fixes rendering on multiline block attributes). - Use new releases of skylighting-format-blaze-html (#9520). Fixes auto-wrapping of long source lines in HTML print media. - Use new commonmark-extensions (fixes issue with the rebase_relative_paths extension when used with commonmark/gfm. - Makefile: improve epub-validation target (#9493). Use --epub-cover-image to catch issues that only arise with that.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.12.2 --exact`

#### 3.1.12.1 — 2024-02-18

- x64 wix (machine): pandoc-3.1.12.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12.1/pandoc-3.1.12.1-windows-x86_64.msi
  - sha256: a2a4c6d84a2f43ba2eda87ec9aa6e299754a28d467e504cdbd112af2e9131877
- x64 wix (user): pandoc-3.1.12.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12.1/pandoc-3.1.12.1-windows-x86_64.msi
  - sha256: a2a4c6d84a2f43ba2eda87ec9aa6e299754a28d467e504cdbd112af2e9131877
Release notes: - EPUB writer: omit EPUBv3-specific accessibility features on epub2 (#9469). Fixes a regression in 3.1.12. - More fixes for SVG ids with --self-contained (#9467). This generalizes the fix to #9420 so it applies to things like style="fill(url(#..." and should fix problems with SVGs including gradients. - Powerpoint writer: properly handle math in headings and tables (#9465). This ensures that paragraphs containing math are wrapped in a mc:AlternateContent node as required. - Makefile: make validate-epub check v2 output too.

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.12.1 --exact`

#### 3.1.12 — 2024-02-15

- x64 wix (machine): pandoc-3.1.12-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12/pandoc-3.1.12-windows-x86_64.msi
  - sha256: 0b3948db47ea68ec0625fd3683db51788dc12f006a75e51ec455ca41b30ef632
- x64 wix (user): pandoc-3.1.12-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.12/pandoc-3.1.12-windows-x86_64.msi
  - sha256: 0b3948db47ea68ec0625fd3683db51788dc12f006a75e51ec455ca41b30ef632
Release notes: - Add djot as input and output format. Djot is a light markup syntax (https://djot.net). - New module Text.Pandoc.Readers.Djot [API change]. The function readDjot is also exported by Text.Pandoc.Readers. - New module Text.Pandoc.Writers.Djot [API change]. The function writeDjot is also exported by Text.Pandoc.Writers. - --number-sections now uses the first digit for the number of the top-level section, no matter what its level. So if the top-level section is level-2, numbers will be 1, 2, etc. rather than 0.1, 0.2, as in the past (#5071). For some backwards compatibility, we revert to the old behavior when the --number-offset option is used. - DocBook reader: - Better handling of <procedure> and <substeps> (#9341): <procedure> now gets parsed as an ordered list, and <substeps> as a sublist. - Man reader: - Move spaces outside of emph/strong (#9445). - MediaWiki reader: - Don’t make leading blanks underscores in image links (#9425). - Allow lowercase image: (#9424). - BibTeX reader: - Support pagetotal in converting BibLaTeX. - Markdown reader: - Fix wikilinks extensions to allow newlines in titles (#9454). - EPUB reader: - Don’t put # characters in identifiers. - LaTeX reader: - Improve treatment of \cref, \Cref (#7463). Use the reference-type ref+label and ref+Label. Also, associate with \vref ref instead of ref+page. - Limited support for \Cref (#7463). - Generate relative widths for \linewidth, \textheight (#9388). - Typst reader: - Fix handling of \overline (#9294). Due to a typo, it was being incorrectly rendered as an \underset. - Improve handling of inline #quote (#9413). - Fix handling of dot(), tilde(), ddot() (jgm/typst-hs#38). - Fix character used for norm (jgm/typst-hs#38). - Typst writer: - Use reference form (e.g. @jones2000[p. 30]) for citations when possible. - Use #ref or @ for links with reference-type="ref" (#7463). This attribute is added to LaTeX \cref, for example. - Improve citation support (#9452). Emit form: "prose" or form: "year" qualifiers if the citation is author-in-text or suppress-author. Strip initial comma from suffix, since typst will add an extra one. - Unescape URI escapes in image paths (#9389). - Handle labels and citaiton ids with spaces and other special characters (#9387). In these cases, we produce an explicit label() rather than using <> or @. - Avoid producing illegal labels (#9387). - Avoid unnecessary escapes (#9386). - LaTeX writer: - Make writer sensitive to empty_paragraphs extension (#9443). - Fix beamer highlighting (mh4ckt3mh4ckt1c4s). - Create valid table even when table is empty (#9350). - Set font fallback for babel main font (Max Heller). - Add some kerns where needed between quotes (#9371). - HTML writer: - Add suffix to multiple footnote section ids, so they are unique (Sam May). This is necessary when --reference-location is block or section. - EPUB writer: - Add ARA roles for accessibility (#9378, Iacobus1983). Footnote references are given role “doc-noteref”, footnote text gets “doc-footnote”, and nav gets “doc-toc”. - Ensure that an alt attribute is always added (#9354). This seems to be required by iBooks; even an empty alt attribute will satisfy it. - Add xml:lang to package element (#9372). - Add accessibility metadata to EPUB metadata (#9372, #9400, Iacobus1983 and John MacFarlane). Reasonable default values are used to ensure that pandoc’s EPUBs conform to the EU Accessibilty Act requirements, but values can be overridden using metadata. - Docx writer: - Restore ability to center-justify table (#9393). The fix to #5947 caused all tables to be left indented. This was necessary to avoid extra indentation in table cells when a table appeared in a list item. This change makes the changes conditional, so that they only affect tables in list items. - Man writer: - Fix bug with long URLs (#9458). URLs with more than 68 characters didn’t display properly because of wrapping. - Support (limited) syntax highlighting in code blocks (#9446). Currently only boldface and italics are supported. The monochrome style might be of use for those generating man pages. - Org writer: - Escape special lines in code blocks (#9218, Albert Krewinkel). - Markdown writer: - Use different width fences for nested divs (#9450). Outer divs have longer fences. This aids clarity for the reader, making it easier to see where the div ends. It also makes the output compatible with some other implementations, e.g. micromark, which require different-width fences for nesting. - Fix output for pipe tables with a huge number of columns (#9346). Previously we got invalid pipe tables when the number of table columns exceeded the setting of --columns. - Powerpoint writer: - Fix regression in layout for slides with figures (#9442). - Use internal column widths in pptx writer tables (#5706, Tomas Dahlqvist). The table writer used to only divide all available width evenly for all columns. In this update the code uses the incoming widths if they are available. If they are not set the earlier even distribution is used. Some of the golden templates are adjusted slightly because of different rounding when using the new calculation model. - Custom writers: - Fix handling of common state (#9229, Albert Krewinkel). The CommonState (PANDOC_STATE in Lua) may change between the time that a custom writer script is first loaded and when the writer is run. However, the writer was always using the initial state, which led to problems, e.g. when the mediabag was updated in a filter, as those updates where not visible to the writer. The state is now updated right before the writer function runs. - Text.Pandoc.SelfContained: - Fix id replacements in SVGs with clipping paths (#9420). This fixes --embed-resources when SVGs have clip-path attributes. - Fix size of duplicated SVGs with --embed-resources (#9439). - ConTeXt template: support font fallback (#9361, Lawrence Chonavel). - Text.Pandoc.Shared: - addPandocAttributes: use wrapper attribute, not wrap, for Divs and Spans added as wrappers to hold attributes on elements that do not accept them. - makeSections behavior changes: - When the optional base level parameter is provided, we no longer ensure that the sequence of heading levels is gapless (#9398). Instead, we set the lowest heading level to the specified base level, and adjust the others accordingly. If an author wants to skip a level, e.g. from level 1 to level 3, they can do that. In general, the heading levels specified in the source document are preserved; makeSections only puts them into a hierarchical structure. - Section numbers are now assigned differently, as described above under --number-sections changes (#5071). - Improve makeSections code for section number calculation. - Text.Pandoc.Chunks: - Autogenerate unique ids for sections missing them (#9383). This is needed for TOC generation to work properly. We can’t create TOC links if there are no ids. This fixes some EPUB validation issues we’ve been getting since switching over to Chunks for chunking. - Improve fixTOCTreePaths. We weren’t adding ids for section headings that don’t head a chunk, but these headings are needed for a TOC. - Lua: catch encoding error in pandoc.read (#9385, Albert Krewinkel). Fixed a bug that could lead to an un-catchable error and program termination when pandoc.read was called with invalid UTF-8 input. - LaTeX template: support font fallback (lawcho). This support is LuaLaTeX-specific. See MANUAL.txt for documentation. - Text.Pandoc.Readers: Add readMan to exports [API change] (George Stagg). - Text.Pandoc.PDF: - Reliably detect when TOC has changed (#9295). Sometimes the TOC changes but there are no warnings: this happens when no labels are present. In this case we must rerun LaTeX. So we now take the SHA1 hash of the TOC file and rerun LaTeX if it changes between runs. - Increase maximum number of LaTeX runs to 4 (#9299). On some documents, 4 runs are needed (e.g. when a LastPage reference is used). - Avoid readFileLazy, which caused improperly cleaned-up temp directories on Windows (#9460). - MANUAL.txt: - Harmonize spelling of Markdown and MultiMarkdown (#9402, Salim B). - Add <pre> to list of exceptions for markdown_in_html_blocks extension (#9305). - Add clarification to docs for --resource-path (#9417). - Makefile: Validate generated EPUB as part of prerelease checks. - Add validation for docx golden files to CI (Edwin Török).

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.12 --exact`

#### 3.1.11 — 2023-12-16

- x64 wix (machine): pandoc-3.1.11-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.11/pandoc-3.1.11-windows-x86_64.msi
  - sha256: e74b9e89ceae98e39af511b4866c59ebc3c5c910d3b28f934b83917894e04b00
- x64 wix (user): pandoc-3.1.11-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.11/pandoc-3.1.11-windows-x86_64.msi
  - sha256: e74b9e89ceae98e39af511b4866c59ebc3c5c910d3b28f934b83917894e04b00
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.11

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.11 --exact`

#### 3.1.10 — 2023-12-12

- x64 wix (machine): pandoc-3.1.10-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.10/pandoc-3.1.10-windows-x86_64.msi
  - sha256: 78f864940535a192feffc145544c7690d150f663de5c06c867bfd0e9b6a1718a
- x64 wix (user): pandoc-3.1.10-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.10/pandoc-3.1.10-windows-x86_64.msi
  - sha256: 78f864940535a192feffc145544c7690d150f663de5c06c867bfd0e9b6a1718a
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.10

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.10 --exact`

#### 3.1.9 — 2023-10-28

- x64 wix (machine): pandoc-3.1.9-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.9/pandoc-3.1.9-windows-x86_64.msi
  - sha256: 0c1b20a705dc2e48083e43cfcb52c7983b8bea06f3344ff88ba8e3c5555d8a41
- x64 wix (user): pandoc-3.1.9-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.9/pandoc-3.1.9-windows-x86_64.msi
  - sha256: 0c1b20a705dc2e48083e43cfcb52c7983b8bea06f3344ff88ba8e3c5555d8a41
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.9

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.9 --exact`

#### 3.1.8 — 2023-09-09

- x64 wix (machine): pandoc-3.1.8-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.8/pandoc-3.1.8-windows-x86_64.msi
  - sha256: 22a6c0a68151bdc6f98aa587c02cf8a3c89cd387f1d3a4004307ef5a6a304727
- x64 wix (user): pandoc-3.1.8-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.8/pandoc-3.1.8-windows-x86_64.msi
  - sha256: 22a6c0a68151bdc6f98aa587c02cf8a3c89cd387f1d3a4004307ef5a6a304727
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.8

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.8 --exact`

#### 3.1.7 — 2023-08-31

- x64 wix (machine): pandoc-3.1.7-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-windows-x86_64.msi
  - sha256: b97bd1053a820698d47547a2ce525d2a3e9a301616b35c22cf4080ba605720a3
- x64 wix (user): pandoc-3.1.7-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-windows-x86_64.msi
  - sha256: b97bd1053a820698d47547a2ce525d2a3e9a301616b35c22cf4080ba605720a3
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.7

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.7 --exact`

#### 3.1.6.2 — 2023-08-22

- x64 wix (machine): pandoc-3.1.6.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.6.2/pandoc-3.1.6.2-windows-x86_64.msi
  - sha256: 6627bb4654d6043b2678c08bff7119a942ed07103678c754faf34c3233ed5535
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.6.2

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.6.2 --exact`

#### 3.1.6.1 — 2023-08-07

- x64 wix (machine): pandoc-3.1.6.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.6.1/pandoc-3.1.6.1-windows-x86_64.msi
  - sha256: 9a9539e62ebf4c797e59f617b3735d548ecd0afaa68c9b4cecc827244f517abc
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.6.1

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.6.1 --exact`

#### 3.1.6 — 2023-07-21

- x64 wix (machine): pandoc-3.1.6-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.6/pandoc-3.1.6-windows-x86_64.msi
  - sha256: e44d7d0918ebcd070d1526c41edb3af282864860c86505df82af99609203d608
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.6

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.6 --exact`

#### 3.1.5

- x64 wix (machine): pandoc-3.1.5-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.5/pandoc-3.1.5-windows-x86_64.msi
  - sha256: 33c03225ecf10812dc69a5c1b524b363df27e6fc03358fbd20c6b4e4d2c0c0cc
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.5

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.5 --exact`

#### 3.1.2 — 2023-03-28

- x64 wix (machine): pandoc-3.1.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.2/pandoc-3.1.2-windows-x86_64.msi
  - sha256: 6a22860bf7d008350bda36f6ec1e292264171b89c68a0727fc80243ee8761c2a
- x64 wix (user): pandoc-3.1.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.2/pandoc-3.1.2-windows-x86_64.msi
  - sha256: 6a22860bf7d008350bda36f6ec1e292264171b89c68a0727fc80243ee8761c2a
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.2

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.2 --exact`

#### 3.1.1 — 2023-03-05

- x64 wix (machine): pandoc-3.1.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.1/pandoc-3.1.1-windows-x86_64.msi
  - sha256: 0d03c7b7b3c43d15a124481bdcb662513b62286dc1372c4deff3fdcf3b5ddf69
- x64 wix (user): pandoc-3.1.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1.1/pandoc-3.1.1-windows-x86_64.msi
  - sha256: 0d03c7b7b3c43d15a124481bdcb662513b62286dc1372c4deff3fdcf3b5ddf69
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1.1

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1.1 --exact`

#### 3.1 — 2023-02-10

- x64 wix (machine): pandoc-3.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1/pandoc-3.1-windows-x86_64.msi
  - sha256: 225aa0389600f66d1ccd78b378a617a9a780cb3d1e41e875124ce94da5ac19ba
- x64 wix (user): pandoc-3.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.1/pandoc-3.1-windows-x86_64.msi
  - sha256: 225aa0389600f66d1ccd78b378a617a9a780cb3d1e41e875124ce94da5ac19ba
Release notes: https://github.com/jgm/pandoc/releases/tag/3.1

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.1 --exact`

#### 3.0.1 — 2023-01-25

- x64 wix (machine): pandoc-3.0.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.0.1/pandoc-3.0.1-windows-x86_64.msi
  - sha256: 185299cbf38e04822a5773756ec919c7b8b6f69ea2092b261d1b85ddc1f92d3f
- x64 wix (user): pandoc-3.0.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.0.1/pandoc-3.0.1-windows-x86_64.msi
  - sha256: 185299cbf38e04822a5773756ec919c7b8b6f69ea2092b261d1b85ddc1f92d3f
Release notes: https://github.com/jgm/pandoc/releases/tag/3.0.1

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.0.1 --exact`

#### 3.0 — 2023-01-18

- x64 wix (machine): pandoc-3.0-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.0/pandoc-3.0-windows-x86_64.msi
  - sha256: 49bdfe386b192ab4093b87902355e3667f74780e19e3530fce57799aaa6976d9
- x64 wix (user): pandoc-3.0-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/3.0/pandoc-3.0-windows-x86_64.msi
  - sha256: 49bdfe386b192ab4093b87902355e3667f74780e19e3530fce57799aaa6976d9
Release notes: https://github.com/jgm/pandoc/releases/tag/3.0

Pin: `winget install --id JohnMacFarlane.Pandoc --version 3.0 --exact`

#### 2.19.2 — 2022-08-22

- x64 wix (machine): pandoc-2.19.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.19.2/pandoc-2.19.2-windows-x86_64.msi
  - sha256: 7d543e03466eb618269ae9e49f1794ddd73860da180f3acea53b0f5f97350259
- x64 wix (user): pandoc-2.19.2-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.19.2/pandoc-2.19.2-windows-x86_64.msi
  - sha256: 7d543e03466eb618269ae9e49f1794ddd73860da180f3acea53b0f5f97350259
Release notes: https://github.com/jgm/pandoc/releases/tag/2.19.2

Pin: `winget install --id JohnMacFarlane.Pandoc --version 2.19.2 --exact`

#### 2.19.1 — 2022-08-18

- x64 wix (machine): pandoc-2.19.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.19.1/pandoc-2.19.1-windows-x86_64.msi
  - sha256: ed4fb05cb6ed4acc99d8a1fcef1d2c8b4e53d5d2f33ee23dcf32a94bc45d76f9
- x64 wix (user): pandoc-2.19.1-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.19.1/pandoc-2.19.1-windows-x86_64.msi
  - sha256: ed4fb05cb6ed4acc99d8a1fcef1d2c8b4e53d5d2f33ee23dcf32a94bc45d76f9
Release notes: https://github.com/jgm/pandoc/releases/tag/2.19.1

Pin: `winget install --id JohnMacFarlane.Pandoc --version 2.19.1 --exact`

#### 2.19 — 2022-08-03

- x64 wix (machine): pandoc-2.19-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.19/pandoc-2.19-windows-x86_64.msi
  - sha256: 61d995da6cd970a0c741516c4b5ac0170993e3ab9f74a9772e7b5ec8344540dc
- x64 wix (user): pandoc-2.19-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.19/pandoc-2.19-windows-x86_64.msi
  - sha256: 61d995da6cd970a0c741516c4b5ac0170993e3ab9f74a9772e7b5ec8344540dc
Release notes: https://github.com/jgm/pandoc/releases/tag/2.19

Pin: `winget install --id JohnMacFarlane.Pandoc --version 2.19 --exact`

#### 2.18 — 2022-04-04

- x64 wix (machine): pandoc-2.18-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.18/pandoc-2.18-windows-x86_64.msi
  - sha256: afbcaa39a85bd44be89346036e09fe31db5712281c42ef384f1f86c97eea9745
- x64 wix (user): pandoc-2.18-windows-x86_64.msi
  - url: https://github.com/jgm/pandoc/releases/download/2.18/pandoc-2.18-windows-x86_64.msi
  - sha256: afbcaa39a85bd44be89346036e09fe31db5712281c42ef384f1f86c97eea9745
Release notes: https://github.com/jgm/pandoc/releases/tag/2.18

Pin: `winget install --id JohnMacFarlane.Pandoc --version 2.18 --exact`
