Universal markup converter
Org reader:
id
property under heading (#9639).DocBook reader:
<note>
) to work with gfm
admonitions even if the <title>
is not present.DokuWiki reader:
//
is not italics) (#9630).[[url|]]
) works the same as an omitted link text (#9632).Typst reader:
CSLJson writer:
$
or $$
around math in csljson
output (#9616).ConTeXt writer:
\externalfigure
. The dimensions should come Typst writer:
[..]
contexts (#9586). For example, we need to escape [\1. April]
or it will be treated as an ordered list.unnumbered
on headings (#9585).LaTeX writer:
Text.Pandoc.Writers.Shared:
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).
Markdown reader: Fix bug with footnotes at end of fenced div (#9576).
LaTeX reader:
@
(#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”.withRaw
work inside parseFromToks
(#9517). This is needed for raw environments to work inside table cells.p{}
wasn’t a multiple of \linewidth
. This led to cases where content was skipped.Typst writer:
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).
Docx reader:
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:
role="img"
to svgs.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.
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.
Add djot
as input and output format. Djot is a light markup syntax (https://djot.net).
readDjot
is also exported by Text.Pandoc.Readers.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:
<procedure>
and <substeps>
(#9341): <procedure>
now gets parsed as an ordered list, and <substeps>
as a sublist.Man reader:
MediaWiki reader:
image:
(#9424).BibTeX reader:
pagetotal
in converting BibLaTeX.Markdown reader:
EPUB reader:
#
characters in identifiers.LaTeX reader:
\cref
, \Cref
(#7463). Use the reference-type ref+label
and ref+Label
. Also, associate with \vref
ref
instead of ref+page
.\Cref
(#7463).\linewidth
, \textheight
(#9388).Typst reader:
\overline
(#9294). Due to a typo, it was being incorrectly rendered as an \underset
.#quote
(#9413).dot()
, tilde()
, ddot()
(jgm/typst-hs#38).norm
(jgm/typst-hs#38).Typst writer:
@jones2000[p. 30]
) for citations when possible.#ref
or @
for links with reference-type="ref"
(#7463). This attribute is added to LaTeX \cref
, for example.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.label()
rather than using <>
or @
.LaTeX writer:
empty_paragraphs
extension (#9443).HTML writer:
--reference-location
is block
or section
.EPUB writer:
xml:lang
to package element (#9372).Docx writer:
Man writer:
monochrome
style might be of use for those generating man pages.Org writer:
Markdown writer:
--columns
.Powerpoint writer:
Custom writers:
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:
--embed-resources
when SVGs have clip-path
attributes.--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:
makeSections
only puts them into a hierarchical structure.--number-sections
changes (#5071).makeSections
code for section number calculation.Text.Pandoc.Chunks:
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:
readFileLazy
, which caused improperly cleaned-up temp directories on Windows (#9460).MANUAL.txt:
<pre>
to list of exceptions for markdown_in_html_blocks
extension (#9305).--resource-path
(#9417).Makefile: Validate generated EPUB as part of prerelease checks.
Add validation for docx golden files to CI (Edwin Török).
Docx reader:
Org reader:
MediaWiki reader:
OPML writer:
--wrap
options & --columns
in contents of notes (#9297).ODT/OpenDocument writers:
office:styles
element in content.xml
, but this is invalid. Instead they must go in styles.xml
. The variable highlighting-styles
no longer has any effect on the default opendocument template, and highlighting styles are not included in opendocument
output.Markdown writer:
Text.Pandoc.PDF:
Docx writer:
LaTeX writer:
--natbib
or --biblatex
(#9275). These will treat a bare number as a page locator, and they will be able to localize it. Note that the recognition of the locator label is locale-sensitive; if lang
is de
, then S. 33
is a page reference, and p. 33
is not!Text.Pandoc.Chunks: Fine tune makeChunks
(#9281).
Default HTML5 template: remove html5shiv (and support for IE < 9).
Makefile:
make quick-stack
: j
was expecting a number (Edwin Török).validate-epub
target, using epubcheck
to test the golden files.validate-docx-golden-tests
target.Typst writer:
;
after typst code, unless followed by space (#9252). Otherwise there’s the potential that the typst code will swallow up a following character.Text.Pandoc.Logging:
MakePDFWarning
constructor to LogMessage [API change].MakePDFInfo
constructor to LogMessage [API change].Text.Pandoc.PDF:
report
with MakePDFWarning
and MakePDFInfo
to relay verbose information and warnings, instead of writing directly to stderr.Makefile: in make prelease
, add checks that pandoc-cli and pandoc have the same version, that pandoc-cli depends on this exact version of pandoc, that there is an entry for this version in the changelog, and that the version numbers in the generated man pages are correct.
Regenerate man pages with pandoc 3.1.10. This properly escapes hyphens and fixes version numbers in man pages for pandoc-server
and pandoc-lua
.
Depend on texmath 0.12.8.6. This omits unneeded lr
s in typst math output.
Depend on typst 0.5. This allows the typst reader to support multiline strings, the version type, and the as
keyword with import
.
Link pandoc-cli version to pandoc version. Henceforth pandoc-cli’s version will be synchronized with pandoc’s, and pandoc-cli will depend on an exact pandoc version. This will avoid confusion by ensuring that cabal install pandoc-cli-X.Y.Z
installs pandoc version X.Y.Z. It will make things more straightforward for upstream packagers (see #9232). This scheme does not follow the Haskell PVP, but that should cause no harm, because this package does not expose a library.
Add alerts
markdown extension. This enables GitHub style markdown alerts as a commonmark extension. This extension is now default for gfm
. It can’t be used with markdown
, only with commonmark
and variants.
Markdown reader:
%
comment (#9193).HTML reader:
MediaWiki reader:
ODT reader:
text:continue-numbering
(#8979, Stephan Meijer).Typst reader:
@foo
) to become citations if there is no corresponding label in the document.cite
elements.cite
.cite
(only one key allowed, a label) (typst 0.9 breaking change).quote
element (typst 0.9).LaTeX reader:
\begin{french}...\end{french}
(#9202).Docx reader:
w:sym
(#9220). We now look up symbols in symbol fonts using the table defined at Text.Pandoc.Readers.Docx.Symbols.w:sym
element.Man reader:
.sp
macro inside lists and block quotes (#9201).LaTeX writer:
\phantomsection
can’t be used in this case, so we need \hypertarget
(#9209).LaTeX template:
bookmark
package unconditionally. This package produces better PDF bookmarks than hyperref
and does it on the first pass.Typst writer:
quote
for block quotes.--toc-depth
as in other writers (#9242).Typst template:
blockquote
in default template. (We now use built-in quote
.)csl
style in the template, falling back to bibliographystyle
if csl
is not specified.Docx writer:
HTML5 writer:
doc-footnote
role is used with aside
and doc-endnotes
with section
.aside
is used only for notes at ends of sections or blocks; if all the notes come at the end of the document, section
is used so we can have the doc-endnotes
role.JATS writer:
Ms writer:
T.P.RoffChar: escape -
as \-
. The groff_man (7)
man page indicates that -
characters will be treated as typographic hyphens and are not appropriate for cases where the output should be copy-pasteable as an ASCII hyphen-minus character. (E.g. in command line options.) However, until a recent update groff man did not actually do this; it treated -
and \-
the same. With the new update (1.23.0) the two are distinguished (see https://lwn.net/Articles/947941/ for background), so now it is important that pandoc escape -
.
Text.Pandoc.Extension: add Ext_alerts
constructor [API change].
Text.Pandoc.PDF: We now default to running LaTeX only once in producing a PDF (instead of twice). This is made possible by the shift to the bookmark
package, which does not require a second pass for PDF bookmarks. If a table of contents is present, we still have to run three times to get the page numbers, and if beamer is used we still do a minimum of two runs.
Text.Pandoc.Shared:
renderTags'
: use minimized tag for rect
.path
element to be minimized.combineAttr
[API change].isTightList
so that it recognizes an item containing only a list which is itself tight as potentially an item in a tight list (#9161).Text.Pandoc.MIME: Ensure we use .svg
not .svgz
as extension for image/svg+xml
mime type. This fixes issues with embedded SVG images in docx output, among other things (#9195).
Text.Pandoc.Class: openURL
improvements for data uris. Only treat data URI as base64
if ‘;base64’ is specified. Otherwise treat as UTF-8 (not 100% reliable but should cover most other cases). Strip off ;base64
(or ;charset=...
or whatever) from mime type (#9195).
Text.Pandoc.SelfContained: Improve treatment of embedded SVGs (#9206, #8948).
id
attribute except when use
element is used.width
, height
attributes from svg element when use
element is used. Instead, add width
and height
100% to the use
element. This seems to get the sizing right.Text.Pandoc.Citeproc: Don’t link citations if suppress-bibliography
specified, for there will be nothing to link to (#9163).
epub.css: add styling for sup and sub (#9160).
Switch from base64
to base64-bytestring
(#9233).
Use newest versions of commonmark, commonmark-extensions, commonmark-pandoc, texmath, typst, skylighting, skylighting-core.
Benchmark: use standalone documents for reader tests. Otherwise typst reader benchmark fails. Note: this means that we are now parsing longer documents, so bench results on readers won’t be comparable to before.
MANUAL.txt: update defaults file docs for bibliography fields (#9173). Recommend using top-level bibliography
csl
, etc. instead of a nested metadata
field. Reason: ${USERDATA}
and ${HOME}
are only expanded in these contexts, not in metadata
.
Move man pages to pandoc-cli package (#9245).
Make reference-section-title
work with jats+element_citations
(#9021).
Add bits
as synonym of jats
as input format.
JATS reader:
CommonMark reader:
Ext_tex_math_gfm
(#9121). Parse GFM-specific math constructions when tex_math_gfm
enabled.DokuWiki reader:
https:%%//%%...
(#9153).<code>
and <file>
as block-level code (#9154). Previously we treated them as inline code in some contexts, but that is not how DokuWiki works.LaTeX reader:
\hfill
, \vfill
, \hskip
, \vskip
, etc. (#9150).Markdown reader:
[^super^](#ref)
wasn’t parsed as a link, due to code that was meant to prevent footnote markers from being recognized as reference links. This commit tightens up that code to avoid this bad effect. We have also added a new restriction on footnote labels: they cannot contain the characters ^
, [
, or ]
. Though this is technically a breaking change, we suspect that the impact will be minimal, as it’s very unlikely people would be using these characters in their note labels.--default-image-extension
to data URIs (#9118).HTML reader:
Creole reader:
Org writer:
*
, |
, #
at beginning of line with ZWS (#9159).ICML writer:
Powerpoint writer:
[Content Types].xml
were being created, one for the mime type image/png
, one for image/png;base64
.LaTeX writer:
=
as the width parameter) (#9140).JATS writer: fix 3.1.4 regression in handling block-level metadata (#9092).
Ms writer: improvements in image handling (#4475).
HTML writer:
Typst writer:
#box
around image to make it inline. (#9104) An #image
by itself in typst is a block-level element. To force images to be inline (as they are in pandoc), we need to add a box with an explicit width. When a width is not given in image attributes, we compute one from the image itself, when possible.(
(#9137). If unescaped (
occurs in certain contexts, it can be parsed as function application.Man writer:
\c
before a .UR
or .MT
, to avoid an extra space, and also after. To ensure that a space at the beginning of the following line doesn’t get swallowed up, we escape it with \
.Text.Pandoc.Extensions:
Ext_tex_math_gfm
constructor to Extension (#9121). [API change]. This handles two GitHub-specific syntaxes for math. This is now default for gfm
, in addition to tex_math_dollars
.Ext_raw_html
and Ext_pipe_tables
in some of the lists (Tim Stewart).Text.Pandoc.Metadata: Add helpful message on some metadata YAML errors (#9155).
Text.Pandoc.Shared:
splitSentences
: don’t split after initials. This improves the man and ms writer output, preventing sentence breaks after initials.addPandocAttributes
function [API change]. This is meant to simplify addition of attributes to Pandoc elements: for elements that don’t have a slot for attributes, an enclosing Div or Span is added to hold the attributes.MANUAL.txt:
Update et
translations (priiduonu).
Updated no
translations (Stephan Daus). Renamed no.yaml (macrolanguage Norwegian) to nb.yaml (Norwegian Bokmål). Created soft symbolic link from no.yaml pointing to nb.yaml.
Lua subsystem: Use the newest LPeg version (lpeg-1.1.*) (#9107, Albert Krewinkel).
Default epub.css
: Apply style to h6, format styles, and combine identical styles under shared selectors (samuel-weinhardt).
Update nix flake with dependencies (piq9117).
LaTeX template: fix \CSLBlock
vertical space (John Purnell).
Allow tasty 1.5 and Diff 0.5.
Require commonmark-extensions 0.2.4, commonmark 0.2.4.
Require texmath 0.12.8.4. This should improve math in powerpoint, fixing empty boxes around roots in some cases.
Require typst 0.3.2.1
JATS reader:
<processing-meta>
element (#9057, Julia Diaz).LaTeX template:
\cite
to break across lines (#9050).display="block"
(#7363). This restores the line break before the block.CSLReferences
environment to avoid depending on enumitem
, which plays badly with beamer. Instead we use a regular list environment. Thanks to @jpcirrus for the concept (#9053).CSLReferences
environment, which again has two parameters. The first determines whether a hanging indent is used (1 = yes, 0 = no), and the second is the entry line spacing (0 = none).CSLRightInline
to avoid inconsistencies in spacing. It shouldn’t be necessary because the paragraph should extend to the right margin (#9058).LaTeX writer:
HTML writer:
Text.Pandoc.Citeproc: always include an entry-spacing
attribute in the Div if the bibliography element contains an entry-spacing attribute (previously we omitted it when it was 0) (#9058).
Clean up pandoc’s own man pages by regenerating with pandoc 3.1.7.
pandoc-lua-engine: bump lower bound for pandoc (#9046).
Depend on texmath 0.12.8.2, fixing binom in typst writer (#9063).