diff --git a/changelog b/changelog
index 0222d552d..38c0d6653 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,1769 @@
+pandoc (2.0)
+
+ [new features]
+
+ * New output format `ms` (groff ms). Complete support, including
+ tables, math, syntax highlighting, and PDF bookmarks. The writer uses
+ texmath's new eqn writer to convert math to eqn format, so a ms file
+ produced with this writer should be processed with `groff -ms -e` if
+ it contains math.
+
+ * New output format `jats` (Journal Article Tag Suite). This is an XML
+ format used in archiving and publishing articles. Note that a
+ URI-encoded CSL stylesheet (`data/jats.csl`) is added automatically
+ unless a stylesheet is specified using `--css`.
+
+ * New output format `gfm` (GitHub-flavored CommonMark) (#3841).
+ This uses bindings to GitHub's fork of cmark, so it should parse
+ gfm exactly as GitHub does (excepting certain postprocessing
+ steps, involving notifications, emojis, etc.). `markdown_github`
+ has been deprecated in favor of `gfm`.
+
+ * New output format `muse` (Emacs Muse) (Alexander Krotov, #3489).
+
+ * New input format `gfm` (GitHub-flavored CommonMark) (#3841).
+ This uses bindings to GitHub's fork of cmark. `markdown_github`
+ has been deprecated in favor of `gfm`.
+
+ * New input format `muse` (Emacs Muse) reader (Alexander Krotov, #3620).
+
+ * New input format `tikiwiki` (TikiWiki markup) (rlpowell, #3800).
+
+ * New input format `vimwiki` (Vimwiki markup) (Yuchen Pei, #3705).
+ Note that there is a new data file, `data/vimwiki.css`, which can
+ be used to display the HTML produced by this reader and
+ pandoc's HTML writer in the style of vimwiki's own HTML
+ export.
+
+ * Added new syntax for including raw content in any output format,
+ enabled by the `raw_attribute` extension (which is on by default
+ for `markdown` and `multimarkdown`). The syntax is the same as
+ for fenced code blocks or code inlines, only with `{=FORMAT}` for
+ attributes, where `FORMAT` is the name of the output format
+ (e.g., `ms`, `html`).
+
+ * Implement multicolumn support for slide formats (#1710).
+ The structure expected is:
+
+
+
+ contents...
+
+
+ contents...
+
+
+
+ Support has been added for beamer and all HTML slide formats.
+
+ * Allows line comments in templates, beginning with `$--` (#3806).
+ (Requires doctemplates 0.2.1.)
+
+ * Add `--eol=crlf|lf|native` flag and writer option to control line endings
+ (Stefan Dresselhaus, #3663, #2097).
+
+ * Add `--log` option to save log messages in JSON format to a file (#3392).
+
+ * Add `--request-header` option, to set request headers when pandoc
+ makes HTTP requests to fetch external resources. For example:
+ `--request-header User-Agent:blah`.
+
+ * Added lua filters (Albert Krewinkel, #3514). The new `--lua-filter`
+ option works like `--filter` but takes pathnames of special lua filters
+ and uses the lua interpreter baked into pandoc, so that no external
+ interpreter is needed. Note that lua filters are all applied after
+ regular filters, regardless of their position on the command line.
+ For documentation of lua filters, see `doc/lua-filters.md`.
+
+ * Set `PANDOC_READER_OPTIONS` in environment where filters are run.
+ This contains a JSON representation of `ReaderOptions`, so filters
+ can access it.
+
+ * Support creation of pdf via groff `ms` and pdfroff.
+ `pandoc -t ms -o output.pdf input.txt`.
+
+ * Support for PDF generation via HTML and `weasyprint` or `prince`
+ (Mauro Bieg, #3909). `pandoc -t html5 -o output.pdf --pdf-engine=prince`.
+
+ * Added `--epub-subdirectory` option (#3720). This specifies the
+ subdirectory in the OCF container that holds the EPUB specific content.
+ We now put all EPUB related content in an `EPUB/` subdirectory by default
+ (later this will be configurable).
+
+ ```
+ mimetype
+ META-INF/
+ com.apple.ibooks.display-options.xml
+ container.xml
+ EPUB/ <<--configurable-->>
+ fonts/ <<--static-->>
+ font.otf
+ media/ <<--static-->>
+ cover.jpg
+ fig1.jpg
+ styles/ <<--static-->>
+ stylesheet.css
+ content.opf
+ toc.ncx
+ text/ <<--static-->>
+ ch001.xhtml
+ ```
+
+ * Added `--resource-path=SEARCHPATH` command line option (#852).
+ SEARCHPATH is separated by the usual character, depending on OS
+ (: on unix, ; on windows). Default resource path is just working
+ directory. However, the working directory must be explicitly
+ specified if the `--resource-path` option is used.
+
+ * Added --abbreviations=FILE option for custom abbreviations file
+ (#256). Dfault abbreviations file (`data/abbreviations`) contains
+ a list of strings that will be recognized by pandoc's
+ Markdown parser as abbreviations. (A nonbreaking space will
+ be inserted after the period, preventing a sentence space in
+ formats like LaTeX.) Users can override the default by putting a file
+ abbreviations in their user data directory (`~/.pandoc` on *nix).
+
+ * Allow a theme file as argument to `--highlight-style`.
+ Also include a sample, `default.theme`, in `data/`.
+
+ * Allow `--syntax-definition` option for dynamic loading of syntax
+ highlighting definitions (#3334).
+
+ * Lists in `markdown` by default now use the CommonMark variable
+ nesting rules (#3511). The indentation required for a block-level
+ item to be included in a list item is no longer fixed, but is
+ determined by the first line of the list item. To be included in
+ the list item, a block must be indented to the level of the first
+ non-space content after the list marker. Exception: if are 5 or more
+ spaces after the list marker, then the content is interpreted as an
+ indented code block, and continuation paragraphs must be indented
+ two spaces beyond the end of the list marker. See the CommonMark
+ spec for more details and examples.
+
+ Documents that adhere to the four-space rule should, in most cases,
+ be parsed the same way by the new rules. Here are some examples
+ of texts that will be parsed differently:
+
+ - a
+ - b
+
+ will be parsed as a list item with a sublist; under the four-space
+ rule, it would be a list with two items.
+
+ - a
+
+ code
+
+ Here we have an indented code block under the list item, even though it
+ is only indented six spaces from the margin, because it is four spaces
+ past the point where a continuation paragraph could begin. With the
+ four-space rule, this would be a regular paragraph rather than a code
+ block.
+
+ - a
+
+ code
+
+ Here the code block will start with two spaces, whereas under
+ the four-space rule, it would start with `code`. With the four-space
+ rule, indented code under a list item always must be indented eight
+ spaces from the margin, while the new rules require only that it
+ be indented four spaces from the beginning of the first non-space
+ text after the list marker (here, `a`).
+
+ This change was motivated by a slew of bug reports from people
+ who expected lists to work differently (#3125, #2367, #2575, #2210,
+ #1990, #1137, #744, #172, #137, #128) and by the growing prevalance
+ of CommonMark (now used by GitHub, for example). Those who
+ prefer the old behavior can use `-f markdown+four_space_rule`.
+
+ * Added `four_space_rule` extension. This triggers the old pandoc
+ parsing rule for content nested under list items (the "four space
+ rule").
+
+ * Added `spaced_reference_links` extension (#2602). It allows whitespace
+ between the two parts of a reference link: e.g.
+
+ [a] [b]
+
+ [b]: url
+
+ This was previously enabled by default; now it is now forbidden by default.
+
+ * Add `space_in_atx_header` extension (#3512). This is enabled by default
+ in pandoc and GitHub markdown but not the other flavors.
+ This requirse a space between the opening #'s and the header
+ text in ATX headers (as CommonMark does but many other implementations
+ do not). This is desirable to avoid falsely capturing things ilke
+
+ #hashtag
+
+ or
+
+ #5
+
+ * Add `sourcefile` and `outputfile` template variables (Roland Hieber,
+ #3431).
+
+ * Allow ibooks-specific metadata in epubs (#2693). You can now have
+ the following fields in your YAML metadata, and it will be treated
+ appropriately in the generated EPUB:
+
+ ```
+ ibooks:
+ version: 1.3.4
+ specified-fonts: false
+ ipad-orientation-lock: portrait-only
+ iphone-orientation-lock: landscape-only
+ binding: true
+ scroll-axis: vertical
+ ```
+
+
+ [behavior changes]
+
+ * Reader functions no longer presuppose that CRs have been
+ stripped from the input. (They strip CRs themselves, before
+ parsing, to simply the parsers.)
+
+ * Added support for translations (localization) (#3559).
+ Currently this only affects the LaTeX reader, for things
+ like `\figurename`. Translation data files for 46 languages
+ can be found in `data/translations`.
+
+ * Make `--ascii` work with DocBook output too.
+
+ * Rename `--latex-engine` to `--pdf-engine`.
+
+ * Removed `--parse-raw` and `readerParseRaw`. These were confusing.
+ Now we rely on the `+raw_tex` or `+raw_html` extension with latex or html
+ input. Thus, instead of `--parse-raw -f latex` we use `-f latex+raw_tex`,
+ and instead of `--parse-raw -f html` we use `-f html+raw_html`.
+
+ * With `--filter` R filters are now recognized, even if they are
+ not executable (#3940, #3941, Andrie de Vries).
+
+ * Support SVG in PDF output, converting with `rsvg2pdf` (#1793).
+
+ * Make epub an alias for epub3, not epub2.
+
+ * Removed `--epub-stylesheet`; use `--css` instead (#3472, #847).
+ Multiple stylesheets may be used. Stylesheets will be taken both from
+ `--css` and from the `stylesheet` metadata field (which can contain
+ either a file path or a list of them).
+
+ * `--mathml` and MathML in HTMLMathMethod longer take an argument.
+ The argument was for a bridge javascript that used to be necessary
+ in 2004. We have removed the script already.
+
+ * `--katex` improvements. The latest version is used, and the
+ autoload script is loaded by default.
+
+ * Change MathJax CDN default since old one is shutting down (#3544).
+ Note: The new URL requires a version number, which we'll have
+ to update manually in subsequent pandoc releases in order to
+ take advantage of mathjax improvements.
+
+ * `--self-contained`: don't incorporate elements with `data-external="1"`
+ (#2656). You can leave an external link as it is by adding the attribute
+ data-external="1" to the element. Pandoc will then not try to
+ incorporate its content when `--self-contained` is used. This is
+ similar to a feature already supported by the EPUB writer.
+
+ * Allow `--extract-media` to work with non-binary input formats
+ (#1583, #2289). If `--extract-media` is supplied with a non-binary
+ input format, pandoc will attempt to extract the contents of all
+ linked images, whether in local files, data: uris, or external uris.
+ They will be named based on the sha1 hash of the contents.
+
+ * Make `papersize: a4` work regardless of the case of `a4`.
+ It is converted to `a4` in LaTeX and `A4` in ConTeXt.
+
+ * Make `east_asian_line_breaks` affect all readers/writers (#3703).
+
+ * Improved behavior of `auto_identifiers` when there are explicit ids
+ (#1745). Previously only autogenerated ids were added to the list
+ of header identifiers in state, so explicit ids weren't taken
+ into account when generating unique identifiers. Duplicated
+ identifiers could result. This simple fix ensures that explicitly given
+ identifiers are also taken into account.
+
+ * Use `table-of-contents` for contents of toc, make `toc` a boolean
+ (#2872). Changed markdown, rtf, and HTML-based templates accordingly.
+ This allows you to set `toc: true` in the metadata; this
+ previously produced strange results in some output formats.
+ For backwards compatibility, `toc` is still set to the
+ toc contents. But it is recommended that you update templates
+ to use `table-of-contents` for the toc contents and `toc`
+ for a boolean flag.
+
+ * Change behavior with binary format output to stdout.
+ Previously, for binary formats, output to stdout was disabled
+ unless we could detect that the output was being piped (and not
+ sent to the terminal). Unfortunately, such detection is not
+ possible on Windows, leaving windows users no way to pipe binary
+ output. So we have changed the behavior in the following way:
+
+ + Output to stdout is allowed when it can be determined that
+ the output is being piped (on non-Windows platforms).
+ + If the `-o` option is not used, binary output is never sent
+ to stdout by default; instead, an error is raised.
+ + If `-o -` is used, binary output is sent to stdout, regardless
+ of whether it is being piped. This works on Windows too.
+
+ * Better error behavior: uses of `error` have been replaced by
+ raising of `PandocError`, which can be trapped and handled by the
+ calling program.
+
+ * Removed `hard_line_breaks` extension from `markdown_github` (#3594).
+ GitHub has two Markdown modes, one for long-form documents like READMEs
+ and one for short things like issue coments. In issue comments, a line
+ break is treated as a hard line break. In README, wikis, etc., it is
+ treated as a space as in regular Markdown. Since pandoc is more likely to
+ be used to convert long-form documents from GitHub Markdown,
+ `-hard_line_breaks` is a better default.
+
+ * Include `backtick_code_blocks` extension in `mardkown_mmd` (#3637).
+
+ * Escape `MetaString` values (as added with `-M/--metadata` flag) (#3792).
+ Previously they would be transmitted to the template without any
+ escaping. Note that `--M title='*foo*'` yields a different result from
+
+ ---
+ title: *foo*
+ ---
+
+ In the latter case, we have emphasis; in the former case, just
+ a string with literal asterisks (which will be escaped
+ in formats, like Markdown, that require it).
+
+ * Allow `em`, `cm`, `in` for image height/width in HTML, LaTeX (#3450).
+
+ * HTML writer: Insert `data-` in front of unsupported attributes. Thus,
+ a span with attribute `foo` gets written to HTML5 with `data-foo`, so
+ it is valid HTML5. HTML4 is not affected. This will allow us to use
+ custom attributes in pandoc without producing invalid HTML. (With help
+ from Wandmalfarbe, #3817.)
+
+ * Plain writer: improved super/subscript rendering. We now
+ handle more non-digit characters for which there are
+ sub/superscripted unicode characters. When unicode
+ sub/superscripted characters are not available, we use
+ `_(..)` or `^(..)` (#3518).
+
+ * Docbook, JATS, TEI writers: print INFO message when omitting interior
+ header (#3750). This only applies to section headers inside list items,
+ e.g., which were otherwise silently omitted.
+
+ * Change to `--reference-links` in Markdown writer (#3701). With
+ `--reference-location` of `section` or `block`, pandoc will now repeat
+ references that have been used in earlier sections. The Markdown
+ reader has also been modified, so that *exactly* repeated references
+ do not generate a warning, only references with the same label but
+ different targets. The idea is that, with references after every block,
+ one might want to repeat references sometimes.
+
+ * ODT/OpenDocument writer:
+
+ + Support `lang` attribute (#1667).
+ + Added support for `--toc` (#2836). Thanks to @anayrat.
+
+ * Docx writer:
+
+ + `lang` meta, see #1667 (Mauro Bieg, #3515).
+ + Change `FigureWithCaption` to `CaptionedFigure` (iandol, #3658).
+ + Use `Table` rather than `Table Normal` for table style (#3275).
+ `Table Normal` is the default table style and can't be modified.
+ + Pass through comments (#2994). We assume that comments are defined as
+ parsed by the docx reader:
+
+ I want I left a comment.some text to
+ have a comment on it.
+
+ We assume also that the id attributes are unique and properly
+ matched between comment-start and comment-end.
+ + Bookmark improvements. Bookmark start/end now surrounds content rather
+ than preceding it. Bookmarks generated for Div with id
+ (jgm/pandoc-citeproc#205).
+ + Add `keywords` metadata to docx document properties (Ian).
+
+ * RST writer: support unknown interpreted text roles by
+ parsing them as `Span` with `role` attributes (#3407). This
+ way they can be manipulated in the AST.
+
+ * HTML writer:
+
+ + Line block: Use class instead of style attribute (#1623). We now
+ issue `
` and include a default definition
+ for `line-block` in the default templates, instead of hard-coding a
+ `style` on the div.
+ + Add class `footnoteBack` to footnote back references (Timm Albers).
+ This allows for easier CSS styling.
+ + Render SmallCaps as span with smallcaps class (#1592), rather than
+ using a style attribute directly. This gives the user more flexibility
+ in styling small caps in CSS.
+ + With reveal.js we use `data-src` instead of `src` for images for
+ lazy loading.
+ + Special-case `.stretch` class for images in reveal.js (#1291).
+ Now in reveal.js, an image with class `stretch` in a paragraph
+ by itself will stretch to fill the whole screen, with no
+ caption or figure environment.
+
+ * Added warnings for non-rendered blocks to writers.
+
+ * Writers now raise an error on template failure.
+
+ * When creating a PDF via LaTeX, warn if the font is missing some
+ characters (#3742).
+
+ * Remove initial check for PDF-creating program (#3819).
+ Instead, just try running it and raise the exception if it
+ isn't found at that point. This improves things for users of Cygwin
+ on Windows, where the executable won't be found by `findExecutable`
+ unless `.exe` is added. The same exception is raised as before, but
+ at a later point.
+
+ * Readers issue warning for duplicate header identifiers (#1745).
+ Autogenerated header identifiers are given suffixes so as not to clash
+ with previously used header identifiers. But they may still coincide with
+ an explicit identifier that is given for a header later in the document,
+ or with an identifier on a div, span, link, or image. We now issue
+ a warning in this case, so users can supply an explicit identifier.
+
+ * CommonMark reader now supports `emoji`, `hard_line_breaks`, `smart`,
+ and `raw_html` extensions.
+
+ * Markdown reader:
+
+ + Don't allow backslash + newline to affect block structure (#3730).
+ Note that as a result of this change, the following, which formerly
+ produced a header with two lines separated by a line break, will
+ now produce a header followed by a paragraph:
+
+ # Hi\
+ there
+
+ This may affect some existing documents that relied on
+ this undocumented and unintended behavior. This change makes pandoc
+ more consistent with other Markdown implementations, and with itself
+ (since the two-space version of a line break doesn't work inside ATX
+ headers, and neither version works inside Setext headers).
+
+
+ * Org reader (Albert Krewinkel, unless noted):
+
+ + Support `table.el` tables (#3314).
+ + Support macros (#3401).
+ + Support the `#+INCLUDE:` file inclusion mechanism (#3510).
+ Recognized include types are `example`, `export`, `src`, and
+ normal org file inclusion. Advanced features like line numbers
+ and level selection are not implemented yet.
+ + Interpret more meta value as inlines. The values of the following
+ meta variables are now interpreted using org-markup instead of
+ treating them as pure strings: `keywords` (comma-separated list of
+ inlines), `subtitle` (inline values), `nocite` (inline values, can
+ be repeated).
+ + Support `\n` export option (#3940). This turns all newlines in the
+ text into hard linebreaks.
+
+ * RST reader:
+
+ + Improved admonition support (#223). We no longer add an
+ `admonition` class, we just use the class for the type of admonition,
+ `note` for example. We put the word corresponding to the label in
+ a paragraph inside a `Div` at the beginning of the admonition with
+ class `admonition-title`. This is about as close as we can get to
+ RST's own output.
+ + Initial support of `.. table` directive. This allows adding captions
+ to tables.
+ + Support `.. line-block` directive. This is deprecated but may still
+ be in older documents.
+ + Support scale and align attributes of images (#2662).
+ + Implemented implicit internal header links (#3475).
+ + Support RST-style citations (#853). The citations appear at the end
+ of the document as a definition list in a special div with id
+ `citations`. Citations link to the definitions.
+ + Recurse into bodies of unknown directives (#3432).
+ In most cases it's better to preserve the content than
+ to emit it. This isn't guaranteed to have good results;
+ it will fail spectacularly for unknown raw or verbatim directives.
+ + Handle chained link definitions (#262). For example,
+
+ .. _hello:
+ .. _goodbye: example.com
+
+ Here both `hello` and `goodbye` should link to `example.com`.
+ + Support anchors (#262). E.g.
+
+ `hello`
+
+ .. _hello:
+
+ paragraph
+
+ This is supported by putting "paragraph" in a `Div` with id `hello`.
+ + Support `:widths:` attribute for table directive.
+ + Implement csv-table directive (#3533). Most attributes are supported,
+ including `:file:` and `:url:`.
+ + Support unknown interpreted text roles by parsing them as Span
+ with "role" attributes (#3407). This way they can be manipulated in
+ the AST.
+
+ * HTML reader: parse a span with class `smallcaps` as `SmallCaps`.
+
+ * LaTeX reader:
+
+ + Implemented `\graphicspath` (#736).
+ + Properly handle column prefixes/suffixes. For example, in
+ `\begin{tabular}{>{$}l<{$}>{$}l<{$} >{$}l<{$}}`
+ each cell will be interpreted as if it has a `$`
+ before its content and a `$` after (math mode).
+ + Handle komascript `\dedication` (#1845). It now adds a
+ `dedication` field to metadata. It is up to the user to supply
+ a template that uses this variable.
+ + Support all `\textXX` commands, where XX = `rm`, `tt`, `up`, `md`,
+ `sf`, `bf` (#3488). Spans with a class are used when there is
+ nothing better.
+ + Expand `\newenvironment` macros (#987).
+ + Add support for LaTeX subfiles package (Marc Schreiber, #3530).
+ + Better support for subfigure package (#3577).
+ A figure with two subfigures turns into two pandoc
+ figures; the subcaptions are used and the main caption
+ ignored, unless there are no subcaptions.
+ + Add support for \vdots (Marc Schreiber, #3607).
+ + Add basic support for hyphenat package (Marc Schreiber, #3603).
+ + Add basic `\textcolor` support (Marc Schreiber).
+ + Add support for `tabularx` environment (Marc Schreiber, #3632).
+ + Better handling of comments inside math environments (#3113).
+ This solves a problem with commented out `\end{eqnarray}` inside
+ an eqnarray (among other things).
+ + Parse tikzpicture as raw verbatim environment if `raw_tex` extension
+ is selected (#3692). Otherwise skip with a warning. This is better
+ than trying to parse it as text!
+ + Add `\colorbox` support (Marc Schreiber).
+ + Set identifiers on Spans used for `\label`.
+ + Have `\setmainlanguage` set `lang` in metadata.
+ + Support etoolbox's `\ifstrequal`.
+ + Support `plainbreak`, `fancybreak` et al from the memoir class
+ (bucklereed, #3833).
+ + Support `\let`. Also, fix regular macros so they're expanded at the
+ point of use, and NOT also the point of definition. `\let` macros,
+ by contrast, are expanded at the point of definition. Added an
+ `ExpansionPoint` field to `Macro` to track this difference.
+ + Support simple `\def` macros. Note that we still don't support
+ macros with fancy parameter delimiters, like `\def\foo#1..#2{...}`.
+ + Support \chaptername, \partname, \abstractname, etc. (#3559,
+ obsoletes #3560).
+ + Put content of `\ref`, `\label`, `\eqref` commands into `Span` with
+ attributes, so they can be handled in filters (Marc Schreiber, #3639)
+ + Add Support for `glossaries` and `acronym` package (Marc Schreiber,
+ #3589). Acronyms are not resolved by the reader, but acronym and
+ glossary information is put into attributes on Spans so that they
+ can be processed in filters.
+ + Use `Link` instead of `Span` for `\ref`. This makes more sense
+ semantically and avoids unnecessary `Span [Link]` nestings when
+ references are resolved.
+ + Rudimentary support for `\hyperlink`.
+ + Support `\textquoteleft|right`, `\textquotedblleft|right` (#3849).
+ + Support `\lq`, `\rq`.
+ + Implement `\newtoggle`, `\iftoggle`, `\toggletrue|false` from etoolbox
+ (#3853).
+ + Support `\RN` and `\Rn`, from biblatex (bucklereed, #3854).
+ + Improved support for `\hyperlink`, `\hypertarget` (#2549).
+ + Support `\k` ogonek accent.
+ + Improve handling of accents. Handle ogonek, and fall back correctly
+ with forms like `\"{}`.
+ + Better support for ogonek accents.
+ + Support for `\faCheck` and `\faClose` (Marc Schreiber, #3727).
+ + Support for `xspace` (Marc Schreiber, #3797).
+ + Support `\setmainlanguage` or `\setdefaultlanguage` (polyglossia)
+ and `\figurename`.
+ + Better handling of `\part` in LaTeX (#1905). Now we parse chapters as
+ level 0 headers, and parts as level -1 headers. After parsing, we
+ check for the lowest header level, and if it's less than 1 we bump
+ everything up so that 1 is the lowest header level. So `\part` will
+ always produce a header; no command-line options are needed.
+ + Add block version of `\textcolor` (Marc Schreiber).
+ + `\textcolor` works as inline and block command (Marc Schreiber).
+ + `\textcolor` will be parse as span at the beginning of a paragraph
+ (Marc Schreiber).
+ + Read polyglossia/babel `\text(LANG){...}` (bucklereed)
+ + Improved handling of include files in LaTeX reader (#3971).
+ Previously `\include` wouldn't work if the included file
+ contained, e.g., a begin without a matching end.
+ + Support `\expandafter` (#3983).
+ + Handle `\DeclareRobustCommand` (#3983). Currently it's just treated
+ as a synonym for `\newcommand`.
+
+ * Math improvements due to updates in texmath:
+
+ + Improved handling of accents and upper/lower delimiters.
+ + Support for output in GNU eqn format (used with *roff).
+ + Allow `\boldsymbol` + a token without braces, and similarly
+ with other styling commands.
+ + Improve parsing of `\mathop` to allow multi-character operator names.
+ + Add thin space after math operators when "faking it with
+ unicode."
+
+ * `walk` is now used instead of `bottomUp` in the `ToJSONFilter`
+ instance for `a -> [a]` (pandoc-types). Note that behavior
+ will be slightly different, since `bottomUp`'s treatment of
+ a function `[a] -> [a]` is to apply it to each sublist of a
+ list, while walk applies it only to maximal sublists.
+ Usually the latter behavior is what is wanted, and the
+ former can be simulated when needed. But there may be
+ existing filters that need to be rewritten in light of the
+ new behavior. Performance should be improved.
+
+ * There are some changes to syntax highlighting due to revisions
+ in the `skylighting` library:
+
+ + Support for `powershell` has been added, and many syntax
+ definitions have been updated.
+ + Background colors have been added to the `kate` style.
+ + The way highlighted code blocks are formatted in HTML has
+ been changed (David Baynard), in ways that may require
+ changes in hard-coded CSS affecting highlighting.
+ (If you haven't included hard-coded highlighting CSS in
+ your template, you needn't change anything.)
+
+
+ [API changes]
+
+ * New module `Text.Pandoc.Class` (Jesse Rosenthal, John MacFarlane).
+ This contains definitions of the `PandocMonad` typeclass, the
+ `PandocIO` and `PandocPure` monads, and associated functions.
+
+ * Changed types of all writers and readers.
+
+ + We now use `Text` instead of `String` in the interface (#3731).
+ (We have not yet changed the internals of most readers to work
+ with `Text`, but making this change in the API now opens up a
+ path to doing that.)
+ + The result is now of form `m a` with constraint `PandocMonad m`.
+ Readers and writers can be combined to form monadic values which
+ can be run using either `runIO` or `runPure`. If `runIO` is used,
+ then both readers and writers will be able to do IO when needed
+ (for include files, for example); if `runPure` is used,
+ then the functions are pure and will not touch IO.
+
+ * New module `Text.Pandoc.Readers` (Albert Krewinkel). This
+ contains reader helper functions formerly defined in the
+ top-level `Text.Pandoc` module.
+
+ + Changed `StringReader` -> `TextReader`.
+ + `getReader` now returns a pair of a reader and
+ `Extensions`, instead of building the extensions into the
+ reader (#3659). The calling code must explicitly set
+ `readerExtensions` using the `Extensions` returned. The
+ point of the change is to make it possible for the calling
+ code to determine what extensions are being used.
+
+ * New module `Text.Pandoc.Writers` (Albert Krewinkel).
+ This contains writer helper functions formerly defined in the
+ top-level `Text.Pandoc` module.
+
+ + Changed `StringWriter` -> `TextWriter`.
+ + `getWriter` now retuns a pair of a reader and
+ `Extensions`, instead of building the extensions into the
+ reader (#3659). The calling code must explicitly set
+ `readerExtensions` using the `Extensions` returned. The
+ point of the change is to make it possible for the calling
+ code to determine what extensions are being used.
+
+ * New module `Text.Pandoc.Lua`, exporting `runLuaFilter` (Albert Krewinkel,
+ #3514).
+
+ * New module `Text.Pandoc.App`. This abstracts out the functionality
+ of the command line program (`convertWithOpts`), so it can be reproduced
+ e.g. in a desktop or web application. Instead of exiting, we throw errors
+ (#3548), which are caught (leading to exit) in pandoc.hs, but allow other
+ users of `Text.Pandoc.App` to recover. `pandoc.hs` is now a 2-liner.
+
+ * New module `Text.Pandoc.Logging` (exported module) (#3392).
+ This now contains the `Verbosity` definition previously in
+ `Text.Pandoc.Options`, as well as a new `LogMessage` datatype that will
+ eventually be used instead of raw strings for warnings. This will enable
+ us, among other things, to provide machine-readable warnings if desired.
+ Include ToJSON instance and showLogMessage. This gives us the possibility
+ of both machine-readable and human-readable output for log messages.
+
+ * New module `Text.Pandoc.BCP47`, with `getLang`, `Lang(..)`, `parseBCP47`.
+
+ * New module `Text.Pandoc.Translations`, exporting `Term`,
+ `Translations`, `readTranslations`.
+
+ * New module `Text.Pandoc.Readers.LaTeX.Types', exporting `Macro`, `Tok`,
+ `TokType`, `Line`, `Column`.
+
+ * `Text.Pandoc.Error`: added many new constructors for `PandocError`.
+
+ * Expose some previously private modules (#3260). These are often
+ helpful to people writing their own reader or writer modules:
+
+ + `Text.Pandoc.Writers.Shared`
+ + `Text.Pandoc.Parsing`
+ + `Text.Pandoc.Asciify`
+ + `Text.Pandoc.Emoji`
+ + `Text.Pandoc.ImageSize`
+ + `Text.Pandoc.Highlighting`
+`
+ * New module `Text.Pandoc.Extensions` (Albert Krewinkel):
+ Extension parsing and processing functions were defined in the top-level
+ `Text.Pandoc` module. These functions are moved to the Extensions
+ submodule as to enable reuse in other submodules.
+
+ * Add `Ext_raw_attribute` to `Extension`.
+
+ * Add `Monoid` instance for `Extensions`.
+
+ * Add `Ext_four_space_rule` constructor in `Extension`.
+
+ * Add `Ext_gfm_auto_identifiers`: new constructor for `Extension`.
+
+ * Add `Text.Pandoc.Writers.Ms`, exporting `writeMs`.
+
+ * Add `Text.Pandoc.Writers.JATS`, exporting `writeJATS`.
+
+ * Add `Text.Pandoc.Writers.Muse`, exporting `writeMuse`.
+
+ * Add `Text.Pandoc.Readers.Muse`, exporting `readMuse`.
+
+ * Add `Text.Pandoc.Readers.TikiWiki`, exporting `readTikiWiki`.
+
+ * Add `Text.Pandoc.Readers.Vimwiki`, exporting `readVimwiki`.
+
+ * Export `setVerbosity` from `Text.Pandoc`.
+
+ * `Text.Pandoc.Pretty`: Add `Eq` instance for `Doc`.
+
+ * `Text.Pandoc.XML`: `toEntities`: changed type to `Text -> Text`.
+
+ * `Text.Pandoc.UTF8`:
+
+ + Export `fromText`, `fromTextLazy`, `toText`, `toTextLazy`.
+ Define `toString`, `toStringLazy` in terms of them.
+ + Add new functions parameterized on `Newline`: `writeFileWith`,
+ `putStrWith`, `putStrLnWith`, `hPutStrWith`, `hPutStrLnWith`.
+
+ * `Text.Pandoc.MediaBag`: removed `extractMediaBag`.
+
+ * `Text.Pandoc.Highlighting`:
+
+ + `highlighting` now returns an Either rather than Maybe.
+ This allows us to display error information returned by the skylighting
+ library. Display a warning if the highlighting library throws an error.
+ + Add parameter for `SyntaxMap` to `highlight`.
+
+ * `Text.Pandoc.Writers.Math`:
+
+ + Export `defaultMathJaxURL`, `defaultKaTeXURL`. This will ensure that
+ we only need to update these in one place.
+
+ * `Text.Pandoc.SelfContained`:
+
+ + Removed `WriterOptions` parameter from `makeSelfContained`.
+ + Put `makeSelfContained` in PandocMonad instead of IO. This removes
+ the need to pass MediaBag around and improves exceptions. It also
+ opens up the possibility of using makeSelfContained purely.
+ + Export `makeDataURI`.
+
+ * `Text.Pandoc.ImageSize`:
+
+ + Export `lengthToDim`, new function `scaleDimension`.
+ + Export `inEm` from ImageSize (#3450).
+ + Change `showFl` and `show` instance for `Dimension` so
+ extra decimal places are omitted.
+ + Added `Em` as a constructor of `Dimension`.
+ + Add `WriterOptions` parameter to `imageSize` signature (Mauro Bieg).
+
+ * `Text.Pandoc.Templates`:
+
+ + Change type of `renderTemplate'`. Now it runs in `PandocMonad`
+ and raises a proper `PandocTemplateError` if there are problems, rather
+ than failing with uncatchable `error`.
+ + Change signature of `getDefaultTemplate`. Now it runs in any instance
+ of `PandocMonad`, and returns a `String` rather than an `Either` value.
+ And it no longer takes a `datadir` parameter, since this can be
+ retrieved from `CommonState`.
+
+ * `Text.Pandoc.Options`:
+
+ + Added `writerEpubSubdirectory` to `WriterOptions` (#3720).
+ The EPUB writer now takes its EPUB subdirectory from this option.
+ + In `WriterOptions`, rename `writerLaTeXEngine` to `writerPdfEngine`
+ and `writerLaTeXArgs` to `writerPdfArgs` (Mauro Bieg, #3909).
+ + Add `writerSyntaxMap` to `WriterOptions`.
+ + Removed `writerEpubStylesheet` from `WriterOptions`.
+ + Remove `writerUserDataDir` from `WriterOptions`. It is now carried
+ in `CommonState` in `PandocMonad` instances. (And thus it can be used
+ by readers too.)
+ + Changed `writerEpubMetadata` to a `Maybe String`.
+ + Removed `readerApplyMacros` from `ReaderOptions`. Now we just check
+ the `latex_macros` reader extension.
+ + FromJSON/ToJSON instances for `ReaderOptions`.
+ + In `HTMLMathMethod`, the `KaTeX` contsructor now takes only
+ one string (for the KaTeX base URL), rather than two.
+ + Removed `writerSourceURL` from `WriterOptions`. We now use
+ `stSourceURL` in `CommonState`, which is set by `setInputFiles`.
+
+ * `Text.Pandoc.Shared`:
+
+ + `tabFilter` now takes a `Text`, not `String`.
+ + `openURL`: Changed type from an Either. Now it will just raise
+ an exception to be trapped later.
+ + Remove `normalizeSpaces` (#1530).
+ + Remove `warn`. (Use `report` from `Text.Pandoc.Class` instead.)
+ + Export a new function `crFilter`.
+ + Added `eastAsianLineBreakFilter` (previously in Markdown reader).
+ + Provide custom `isURI` that rejects unknown schemes.
+ (Albert Krewinkel, #2713). We also export the set of known
+ `schemes`. The new function replaces the function of the same name
+ from `Network.URI`, as the latter did not check whether a scheme is
+ well-known. All official IANA schemes (as of 2017-05-22) are
+ included in the set of known schemes. The four non-official schemes
+ `doi`, `isbn`, `javascript`, and `pmid` are kept.
+ + Removed `err`.
+ + Removed `readDataFile`, `readDefaultDataFile`, `getReferenceDocx`,
+ `getReferenceODT`. These now live in `Text.Pandoc.Class`,
+ where they are defined in terms of `PandocMonad`
+ primitives and have different signatures.
+ + Remove `openURL`. Use `openURL` from `Text.Pandoc.Class` instead.
+
+ * `Text.Pandoc.Readers.HTML`: export new `NamedTag` class.
+
+ * `Text.Pandoc.Readers.Markdown`: remove `readDocxWithWarnings`.
+ With the new API one can simply use `getLog` after running
+ the reader.
+
+ * `Text.Pandoc.Readers.LaTeX`: Changed types for `rawLaTeXInline`
+ and `rawLaTeXBlock`. (Both now return a `String`, and they are
+ polymorphic in state.)
+
+
+ [bug fixes and under-the-hood improvements]
+
+ * TEI writer: Added identifiers on `
` elements.
+
+ * DokuWiki reader: Better handling for code block in list item (#3824).
+
+ * Custom writer: Remove old preprocesesor conditionals (Albert Krewinkel).
+
+ * ZimWiki writer: Removed internal formatting from note and table cells,
+ because ZimWiki does not support it (Alex Ivkin, #3446).
+
+ * MediaWiki writer:
+
+ + Updated list of syntax highlighting languages (#3461).
+ Now `r` gets you `` rather than `` (among others).
+ + Add display attribute on `