pandoc 2.11
Click to expand changelog
-
Add
--citeproc
(-C
) option to trigger built-in citation processing. It is no longer necessary to use the externalpandoc-citeproc
filter.--citeproc
behaves like a filter and can be positioned relative to other filters as they appear on the command line.The new built-in citation processing uses the citeproc library, a reimplementation of CSL citation processing that fixes many of the shortcomings of pandoc-citeproc. In general, citation processing should work much the same as it did with pandoc-citeproc, but with greater fidelity to CSL styles and better performance. (The tests from the pandoc-citeproc package have been carried over to pandoc.) The following differences should be noted:
-
At this point, only some of the writers (HTML, ms, LaTeX) properly interpret CSL display styles. You should get decent output in all formats (at least as good as with pandoc-citeproc), but indentation and block-alignment may not be right.
-
pandoc-citeproc searches the
~/.csl
directory for.csl
styles. Pandoc instead searches thecsl
subdirectory of the pandoc user data directory (e.g.,~/.pandoc/csl
or~/.local/share/pandoc/csl
). Users who already keep CSL styles in~/.csl
may find it convenient to add a symlink. -
Some of the bibliography formats supported by pandoc-citeproc (via hs-bibutils) are no longer supported: Copac, EndNote, ISI, MEDLINE, MODS, and RIS. If you use one of these formats, you may use the
bibutils
utility to convert to BibLaTeX. We now support only BibTeX, BibLaTeX, CSL JSON, and pandoc’s YAML/Markdown analogue of CSL JSON. -
pandoc-citeproc would always retrieve the independent parent of a dependent style by doing an HTTP request. pandoc will now first seek the independent parent locally (in the resource path or in the
csl
subdirectory of the pandoc user data directory) before resorting to HTTP. In addition, you may omit the.csl
extension, e.g.--csl zoology
. -
Using the
--bibliography
option (or includingbibliography
in YAML metadata) no longer triggers citation processing implicitly: one must always use the--citeproc
option if citation processing is wanted.
-
-
Add
csljson
as and input and output format. This allows pandoc to convert betweencsljson
and other bibliography formats (e.g.-f csljson -t markdown -s
or-f bibtex -t csljson
), and to generate formatted versions of CSL JSON bibliographies (e.g.,pandoc -f csljson --citeproc pl.json -o pl.pdf
). -
Added
bibtex
,biblatex
as input formats. This allows pandoc to convert between BibLaTeX and BibTeX and other bibliography formats, and to generated formatted versions of BibTeX/BibLaTeX bibliographies (e.g.,pandoc -f biblatex --citeproc pl.bib -o pl.pdf
). -
Raise informative errors when YAML metadata parsing fails (#6730). Previously the command would succeed, returning empty metadata, with no errors or warnings.
-
Sort languages in
--list-highlight-languages
output (#6718, Albert Krewinkel). Languages were previously sorted by their long name, which leads to unexpected results). -
Add CSS to default HTML template (#6601, Mauro Bieg). This greatly improves the default typography in pandoc’s HTML output. The CSS is sensitive to a number of variables (e.g.
mainfont
,fontsize
,linestretch
): see the manual for details. To restore the earlier, more spartan output, you can disable this with-M document-css=false
. -
Support
--toc-depth
option for ODT writer (#6696, niszet). -
Fix issues with Windows UNC paths with some options (#5127).
-
Remove
fenced_code_blocks
andbacktick_code_blocks
from allowedcommonmark
andgfm
extensions. These shouldn’t really be counted as extensions, because they can’t be disabled in commonmark. Adjust markdown writer to check for the commonmark variant in addition to extensions. -
Add these extensions to
gfm
andcommonmark
:fenced_code_blocks
,backtick_code_blocks
,fenced_code_attributes
. These can’t really be disabled in the reader, but they need to be enabled in the writer or we just get indented code. -
Make sure proper set of extensions is recognized for
commonmark_x
. -
Allow
gfm_auto_identifiers
,ascii_identifiers
extensions fordocx
. -
Markdown reader:
- Add
Maybe FilePath
parameter toyamlToMeta
[API change]. - Export
yamlToRefs
[API change], a version ofyamlToMeta
specialized to references. - Set
citationNoteNum
accurately in citations. - Revise abbreviation support. Don’t insert a nonbreaking space after a potential abbreviation if it comes right before a note or citation. This causes problems for citeproc’s moving of note citations.
- Add
-
LaTeX reader:
- Support missing siunitx commands (#6658).
- Support
squared
,cubed
,tothe
in siunitx (#6657). - Improved uncertainty handling in slunitx.
- Factored out siunitx stuff into separate unexposed module.
- Fix improper empty cell filtering (#6689, Christian Despres).
- Fix parsing of “show name” in
\newtheorem
(#6734). Previously we were just treating it as a string and ignoring accents and formatting. - Prevent wrong nesting of
\multirow
and\multicolumn
table cells (#6603, Laurent P. René de Cotret). - Table cell parser not consuming spaces correctly (#6596, Laurent P. René de Cotret).
- Change
SIRange
toSIrange
(#6617, Emerson Harkin). - Allow blank lines inside
\author
(#6324).
-
DocBook reader:
-
JATS reader:
- Don’t squelch space at end of emphasis and other inline elements; instead, move it outside the element (#6719).
-
RST reader:
- Apply
.. class::
directly to following Header rather than creating a surrounding Div (#6699).
- Apply
-
Docx reader:
- Allow empty dates in comments and tracked changes (#6726, Diego Balseiro).
-
Markdown writer:
- Be less aggressive about using quotes for YAML values, allowing e.g. a quotation mark or bracket as long as it’s not at the beginning of the line.
- Use double quotes for YAML metadata (#6727).
- Sort YAML metadata keys in Markdown output case-insensitive.
-
Asciidoc writer:
- Support asciidoctor’s block figures (#6538, argent0).
-
LaTeX writer:
- Fix spacing issue with list in definition list. When a list occurs at the beginning of a definition list definition, it can start on the same line as the label, which looks bad. Fix that by starting such lists with an
\item[]
.
- Fix spacing issue with list in definition list. When a list occurs at the beginning of a definition list definition, it can start on the same line as the label, which looks bad. Fix that by starting such lists with an
-
HTML writer:
-
ICML writer:
-
Docx writer:
- Better handle list items whose contents are lists (#5948, Michael Hoffmann). If the first element of a bulleted or ordered list is another list, then that first item would previously disappear if the target format is docx.
- Separate adjacent tables (#4315). Word combines adjacent tables, so to prevent this we insert an empty paragraph between two adjacent tables.
-
Org writer:
- Don’t force blank line after headings (#6554).
-
OpenDocument writer:
-
Add Text.Pandoc.Citeproc module, exporting
processCitations
[API change]. This depends on several other, unexported modules under Text.Pandoc.Citeproc. -
Add module Text.Pandoc.Writers.CslJson, exporting
writeCslJson
. [API change] -
Add module Text.Pandoc.Readers.CslJson, exporting
readCslJson
. [API change] -
Add module Text.Pandoc.Readers.BibTeX, exporting
readBibTeX
andreadBibLaTeX
. [API change] -
Text.Pandoc.Filter: Add
CiteprocFilter
constructor to Filter. [API change] This runs the processCitations transformation. We need to treat it like a filter so it can be placed in the sequence of filter runs (after some, before others). In FromYAML, this is parsed fromciteproc
or{type: citeproc}
, so this special filter may be specified either way in a defaults file (or byciteproc: true
, though this gives no control of positioning relative to other filters). -
Add new exported module Text.Pandoc.Writers.AnnotatedTable [API change] (#6655, Christian Despres). This module (which should generally be imported qualified to avoid name conflicts) provides a
Table
type that mirrors the structure of a pandocTable
, but with added inferred information so that the writers do not have to lay out tables themselves. ThetoTable
andfromTable
functions convert between an annotatedTable
and a regular pandocTable
. In addition to producing aTable
with coherent and well-formed annotations, thetoTable
function also normalizes its input table like the table builder does. Tests ensure thattoTable
normalizes tables exactly like the table builder, and that its annotations are coherent. -
Text.Pandoc.Logging:
- Remove unused
CouldNotParseYamlMetadata
constructor forLogMessage
[API change]. - Add
CiteprocWarning
constructor toLogMessage
[API change].
- Remove unused
-
Text.Pandoc.Readers.Metadata: export
yamlBsToRefs
[API change]. These allow specifying an id filter so we parse only references that are used in the document. -
Text.Pandoc.Parsing:
- Export ParseError [API change].
- Add
stateInNote
andstateNoteNumber
toParserState
[API change]. These are used to populate note numbers for citation processing.
-
Fix apparent typos in sample.lua (#6729, William Lupton). Also make the writer less aggressive in escaping quotes.
-
Text.Pandoc.Options:
defaultMathJaxURL
: usetex-chtml-full
instead oftex-mml-chtml
(#6599, Kolen Cheung). This drops the MathML support (which we don’t need for HTML math rendering) and includes the full JavaScript, which makes it possible to use--self-contained
(though there may still be issues if the required math fonts aren’t available). This change should also reduce latency in pages with lots of formulas.- Add
/tex-chtml-full.js
todefaultMathJaxURL
(#6593) Previously we added this in processing command line options, but not in processing defaults files, which was inconsistent.
-
epub.css: Fix cover page selectors and add note explaining their use (#6649, a-vrma).
-
Add data files needed for Text.Pandoc.Citeproc: these include
default.csl
in the data directory and aciteproc
directory that is only used at compile-time for biblatex localizations. Note that we’ve addedfile-embed
as a mandatory rather than a conditional depedency, because of the biblatex localization files. -
Lua filters:
-
Add SimpleTable for backwards compatibility (#6575, Albert Krewinkel). A new type
SimpleTable
is made available to Lua filters. It is similar to theTable
type in pandoc versions before 2.10; conversion functions from and to the new Table type are provided. Old filters using tables now require minimal changes and can use, e.g.,if PANDOC_VERSION > {2,10,1} then pandoc.Table = pandoc.SimpleTable end
and
function Table (tbl) tbl = pandoc.utils.to_simple_table(tbl) … return pandoc.utils.from_simple_table(tbl) end
to work with the current pandoc version.
-
Make
attr
argument optional inTable
constructor (Albert Krewinkel). This changes the Lua API. It is highly unlikely for this change to affect existing filters, since the documentation for the new Table constructor (and type) was incomplete and partly wrong before. The Lua API is now more consistent, as all constructors for elements with attributes now take attributes as the last parameter.
-
-
MANUAL.txt:
- Add a dedicated Citations section which consolidates the information the manual used to contain about citation processing, and incorporates some information formerly found in the pandoc-citeproc man page.
- Add note about lualatex using
selnolig
. - Remove duplicate
seriespage
(#6568, Blake Eryx). - Remove lists of support extensions for markdown variants (#6604). Instead, offer the advice to use
--list-extensions=FORMAT
. - Fix position of attributes in header (Albert Krewinkel).
- Delete obsolete section on compact and loose lists (#6684).
-
doc/lua-filters.md:
- Add info on how to debug Lua filters (#6732, Ian Max Andolina).
- Document Underline type and constructor (Albert Krewinkel).
- Document
body
field (Albert Krewinkel). - Add missing header attribute
- Add missing Link.title field (Albert Krewinkel).
- Make the setting-the-date example conditional (the-solipsist). This makes the example a bit more realistic.
- Remove outdated link table example.
-
doc/org.md:
- Add section on tables (Albert Krewinkel).
- Add section on handling of unknown directives (Albert Krewinkel).
-
CONTRIBUTING.md: fix typo (#6584, Dmitry Volodin).
-
Use golden test framework for command tests. This means that
--accept
can be used to update expected output. -
Use the
smart
extension when generating pandoc’s man page (#6613). -
Release-candidate: don’t build windows i386. So far we haven’t been able to figure out how to get stack to use a 32-bit ghc.
-
Use
null
instead of deprecatedBuilder.isNull
. -
Makefile:
- Fix macospkg target to fetch target from S3 artifacts.
- Fix pandoc-templates target to include all partials.
-
Remove duplicated dependency in pandoc.cabal (#6591, Felix Yan).
-
Sort build depends in pandoc.cabal alphabetically (#6691, Albert Krewinkel).
-
Add .travis.yml for macos release candidate build (#6622). We need to build the release candidate on Travis rather than GitHub actions, because GH has macos 10.15, and binaries compiled on that OS will not work with 10.13. This build is only triggered on
rc/*
branches. -
Remove instructions for building pandoc-citeproc from CI and release binary build instructions. We will no longer distribute pandoc-citeproc.
-
Fix math rendering in trypandoc (this broke after commit d8ad766).
-
Use latest versions of skylighting, commonmark (#6589), comonmark-extensions, commonmark-pandoc, texmath.
-
Relax version bounds for hslua, hslua-module-text, bytestring.
-
Use released pandoc-types 1.22. This changes the JSON encoding slightly for the new table types introduced in 1.21, so they’re more consistent with the rest. Developers of libraries for pandoc filters will want to take note.
-
Fix hlint suggestions, update hlint.yaml (#6680, Christian Despres).
-
Code cleanup (#6678, Joseph C. Sible).
-
Add haddocks to functions in Text.Pandoc.Writers.Shared (Albert Krewinkel).
-
Remove duplicate
tshow
definition. -
Linux release candidate build: use ghc-musl container. This simplifies our build process (over using a customized alpine container).