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.
This works because:
1) texmath handles these environments just fine,
2) and so does MathJax;
3) when writing LaTeX we detect these environments in Math elements
and emit them verbatim instead of putting them in `$..$` or
`$$..$$`.
Closes#9711. Closes#9296.
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.
The behavior of `special_string` is brought closer to the reference
implementation in that `\-` is now treated as a soft hyphen.
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.
Closes: #6539
See #11019. Previously, centering tables in `reference.docx` would leave
the header row left-aligned. Why the OOXML 'standard' would allow table
elements to be aligned differently from the rest of the table in the
first place is anyone's guess.
With the previous behavior it was impossible to have an image
file containing `#` or `?`. For the motivation for the previous
behavior, see commit 1d137fb.
Closes#11021.
Translating entities by name ultimately relies on
Commonmark.Entity.lookupEntity, which de facto requires the entity name
to be followed by a semicolon. Paste a semicolon onto the end of the
entity name read from POD to look it up.
Fixes#11015
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.
Closes#11017.
Some of the readers (e.g. djot) add "wrapper" divs to hold attributes
for elements that have no slot for attributes in the pandoc AST. With
this change, the HTML reader "unwraps" these wrappers so that the
attributes go on the intended elements.
Closes#11014.
- The `PANDOC_STATE` is no longer a userdata object, but a table that
behaves like the old object.
- Log messages in `PANDOC_STATE.log` are now in temporal order.
Text.Pandoc.Class now exports CommonState as an opaque object,
without its fields. [API change]
The internal module Text.Pandoc.Class.CommonState still exports
the fields.
Text.Pandoc.Class now exports the following new functions:
`getRequestHeaders`, `setRequestHeaders`, `getSourceURL`,
`getTrace`. [API change]
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.
Closes: #10680
[API change]
This allows us to cache the HTTP client manager and reuse it for
many requests, instead of creating it again (an expensive
operation) for each request. (The documentation for `newManager`
advises sharing a single manager between requests.)
This fixes a memory leak and performance issue in files with
a large number of remote images. Closes#10997.
This adds a reader and writer for an XML format equivalent to `native`
and `json`.
XML schemas for validation can be found in `tools/pandoc-xml.*`.
The format is documented in `doc/xml.md`.
API changes:
- Add module Text.Pandoc.Readers.XML, exporting `readXML`.
- Add module Text.Pandoc.Writers.XML, exporting `writeXML`.
A new unexported module Text.Pandoc.XMLFormat is also added.