@@ -1,3 +1,1769 @@
1+pandoc (2.0)
2+
3+ [new features]
4+
5+ * New output format `ms` (groff ms). Complete support, including
6+ tables, math, syntax highlighting, and PDF bookmarks. The writer uses
7+ texmath's new eqn writer to convert math to eqn format, so a ms file
8+ produced with this writer should be processed with `groff -ms -e` if
9+ it contains math.
10+
11+ * New output format `jats` (Journal Article Tag Suite). This is an XML
12+ format used in archiving and publishing articles. Note that a
13+ URI-encoded CSL stylesheet (`data/jats.csl`) is added automatically
14+ unless a stylesheet is specified using `--css`.
15+
16+ * New output format `gfm` (GitHub-flavored CommonMark) (#3841).
17+ This uses bindings to GitHub's fork of cmark, so it should parse
18+ gfm exactly as GitHub does (excepting certain postprocessing
19+ steps, involving notifications, emojis, etc.). `markdown_github`
20+ has been deprecated in favor of `gfm`.
21+
22+ * New output format `muse` (Emacs Muse) (Alexander Krotov, #3489).
23+
24+ * New input format `gfm` (GitHub-flavored CommonMark) (#3841).
25+ This uses bindings to GitHub's fork of cmark. `markdown_github`
26+ has been deprecated in favor of `gfm`.
27+
28+ * New input format `muse` (Emacs Muse) reader (Alexander Krotov, #3620).
29+
30+ * New input format `tikiwiki` (TikiWiki markup) (rlpowell, #3800).
31+
32+ * New input format `vimwiki` (Vimwiki markup) (Yuchen Pei, #3705).
33+ Note that there is a new data file, `data/vimwiki.css`, which can
34+ be used to display the HTML produced by this reader and
35+ pandoc's HTML writer in the style of vimwiki's own HTML
36+ export.
37+
38+ * Added new syntax for including raw content in any output format,
39+ enabled by the `raw_attribute` extension (which is on by default
40+ for `markdown` and `multimarkdown`). The syntax is the same as
41+ for fenced code blocks or code inlines, only with `{=FORMAT}` for
42+ attributes, where `FORMAT` is the name of the output format
43+ (e.g., `ms`, `html`).
44+
45+ * Implement multicolumn support for slide formats (#1710).
46+ The structure expected is:
47+
48+ <div class="columns">
49+ <div class="column" width="40%">
50+ contents...
51+ </div>
52+ <div class="column" width="60%">
53+ contents...
54+ </div>
55+ </div>
56+
57+ Support has been added for beamer and all HTML slide formats.
58+
59+ * Allows line comments in templates, beginning with `$--` (#3806).
60+ (Requires doctemplates 0.2.1.)
61+
62+ * Add `--eol=crlf|lf|native` flag and writer option to control line endings
63+ (Stefan Dresselhaus, #3663, #2097).
64+
65+ * Add `--log` option to save log messages in JSON format to a file (#3392).
66+
67+ * Add `--request-header` option, to set request headers when pandoc
68+ makes HTTP requests to fetch external resources. For example:
69+ `--request-header User-Agent:blah`.
70+
71+ * Added lua filters (Albert Krewinkel, #3514). The new `--lua-filter`
72+ option works like `--filter` but takes pathnames of special lua filters
73+ and uses the lua interpreter baked into pandoc, so that no external
74+ interpreter is needed. Note that lua filters are all applied after
75+ regular filters, regardless of their position on the command line.
76+ For documentation of lua filters, see `doc/lua-filters.md`.
77+
78+ * Set `PANDOC_READER_OPTIONS` in environment where filters are run.
79+ This contains a JSON representation of `ReaderOptions`, so filters
80+ can access it.
81+
82+ * Support creation of pdf via groff `ms` and pdfroff.
83+ `pandoc -t ms -o output.pdf input.txt`.
84+
85+ * Support for PDF generation via HTML and `weasyprint` or `prince`
86+ (Mauro Bieg, #3909). `pandoc -t html5 -o output.pdf --pdf-engine=prince`.
87+
88+ * Added `--epub-subdirectory` option (#3720). This specifies the
89+ subdirectory in the OCF container that holds the EPUB specific content.
90+ We now put all EPUB related content in an `EPUB/` subdirectory by default
91+ (later this will be configurable).
92+
93+ ```
94+ mimetype
95+ META-INF/
96+ com.apple.ibooks.display-options.xml
97+ container.xml
98+ EPUB/ <<--configurable-->>
99+ fonts/ <<--static-->>
100+ font.otf
101+ media/ <<--static-->>
102+ cover.jpg
103+ fig1.jpg
104+ styles/ <<--static-->>
105+ stylesheet.css
106+ content.opf
107+ toc.ncx
108+ text/ <<--static-->>
109+ ch001.xhtml
110+ ```
111+
112+ * Added `--resource-path=SEARCHPATH` command line option (#852).
113+ SEARCHPATH is separated by the usual character, depending on OS
114+ (: on unix, ; on windows). Default resource path is just working
115+ directory. However, the working directory must be explicitly
116+ specified if the `--resource-path` option is used.
117+
118+ * Added --abbreviations=FILE option for custom abbreviations file
119+ (#256). Dfault abbreviations file (`data/abbreviations`) contains
120+ a list of strings that will be recognized by pandoc's
121+ Markdown parser as abbreviations. (A nonbreaking space will
122+ be inserted after the period, preventing a sentence space in
123+ formats like LaTeX.) Users can override the default by putting a file
124+ abbreviations in their user data directory (`~/.pandoc` on *nix).
125+
126+ * Allow a theme file as argument to `--highlight-style`.
127+ Also include a sample, `default.theme`, in `data/`.
128+
129+ * Allow `--syntax-definition` option for dynamic loading of syntax
130+ highlighting definitions (#3334).
131+
132+ * Lists in `markdown` by default now use the CommonMark variable
133+ nesting rules (#3511). The indentation required for a block-level
134+ item to be included in a list item is no longer fixed, but is
135+ determined by the first line of the list item. To be included in
136+ the list item, a block must be indented to the level of the first
137+ non-space content after the list marker. Exception: if are 5 or more
138+ spaces after the list marker, then the content is interpreted as an
139+ indented code block, and continuation paragraphs must be indented
140+ two spaces beyond the end of the list marker. See the CommonMark
141+ spec for more details and examples.
142+
143+ Documents that adhere to the four-space rule should, in most cases,
144+ be parsed the same way by the new rules. Here are some examples
145+ of texts that will be parsed differently:
146+
147+ - a
148+ - b
149+
150+ will be parsed as a list item with a sublist; under the four-space
151+ rule, it would be a list with two items.
152+
153+ - a
154+
155+ code
156+
157+ Here we have an indented code block under the list item, even though it
158+ is only indented six spaces from the margin, because it is four spaces
159+ past the point where a continuation paragraph could begin. With the
160+ four-space rule, this would be a regular paragraph rather than a code
161+ block.
162+
163+ - a
164+
165+ code
166+
167+ Here the code block will start with two spaces, whereas under
168+ the four-space rule, it would start with `code`. With the four-space
169+ rule, indented code under a list item always must be indented eight
170+ spaces from the margin, while the new rules require only that it
171+ be indented four spaces from the beginning of the first non-space
172+ text after the list marker (here, `a`).
173+
174+ This change was motivated by a slew of bug reports from people
175+ who expected lists to work differently (#3125, #2367, #2575, #2210,
176+ #1990, #1137, #744, #172, #137, #128) and by the growing prevalance
177+ of CommonMark (now used by GitHub, for example). Those who
178+ prefer the old behavior can use `-f markdown+four_space_rule`.
179+
180+ * Added `four_space_rule` extension. This triggers the old pandoc
181+ parsing rule for content nested under list items (the "four space
182+ rule").
183+
184+ * Added `spaced_reference_links` extension (#2602). It allows whitespace
185+ between the two parts of a reference link: e.g.
186+
187+ [a] [b]
188+
189+ [b]: url
190+
191+ This was previously enabled by default; now it is now forbidden by default.
192+
193+ * Add `space_in_atx_header` extension (#3512). This is enabled by default
194+ in pandoc and GitHub markdown but not the other flavors.
195+ This requirse a space between the opening #'s and the header
196+ text in ATX headers (as CommonMark does but many other implementations
197+ do not). This is desirable to avoid falsely capturing things ilke
198+
199+ #hashtag
200+
201+ or
202+
203+ #5
204+
205+ * Add `sourcefile` and `outputfile` template variables (Roland Hieber,
206+ #3431).
207+
208+ * Allow ibooks-specific metadata in epubs (#2693). You can now have
209+ the following fields in your YAML metadata, and it will be treated
210+ appropriately in the generated EPUB:
211+
212+ ```
213+ ibooks:
214+ version: 1.3.4
215+ specified-fonts: false
216+ ipad-orientation-lock: portrait-only
217+ iphone-orientation-lock: landscape-only
218+ binding: true
219+ scroll-axis: vertical
220+ ```
221+
222+
223+ [behavior changes]
224+
225+ * Reader functions no longer presuppose that CRs have been
226+ stripped from the input. (They strip CRs themselves, before
227+ parsing, to simply the parsers.)
228+
229+ * Added support for translations (localization) (#3559).
230+ Currently this only affects the LaTeX reader, for things
231+ like `\figurename`. Translation data files for 46 languages
232+ can be found in `data/translations`.
233+
234+ * Make `--ascii` work with DocBook output too.
235+
236+ * Rename `--latex-engine` to `--pdf-engine`.
237+
238+ * Removed `--parse-raw` and `readerParseRaw`. These were confusing.
239+ Now we rely on the `+raw_tex` or `+raw_html` extension with latex or html
240+ input. Thus, instead of `--parse-raw -f latex` we use `-f latex+raw_tex`,
241+ and instead of `--parse-raw -f html` we use `-f html+raw_html`.
242+
243+ * With `--filter` R filters are now recognized, even if they are
244+ not executable (#3940, #3941, Andrie de Vries).
245+
246+ * Support SVG in PDF output, converting with `rsvg2pdf` (#1793).
247+
248+ * Make epub an alias for epub3, not epub2.
249+
250+ * Removed `--epub-stylesheet`; use `--css` instead (#3472, #847).
251+ Multiple stylesheets may be used. Stylesheets will be taken both from
252+ `--css` and from the `stylesheet` metadata field (which can contain
253+ either a file path or a list of them).
254+
255+ * `--mathml` and MathML in HTMLMathMethod longer take an argument.
256+ The argument was for a bridge javascript that used to be necessary
257+ in 2004. We have removed the script already.
258+
259+ * `--katex` improvements. The latest version is used, and the
260+ autoload script is loaded by default.
261+
262+ * Change MathJax CDN default since old one is shutting down (#3544).
263+ Note: The new URL requires a version number, which we'll have
264+ to update manually in subsequent pandoc releases in order to
265+ take advantage of mathjax improvements.
266+
267+ * `--self-contained`: don't incorporate elements with `data-external="1"`
268+ (#2656). You can leave an external link as it is by adding the attribute
269+ data-external="1" to the element. Pandoc will then not try to
270+ incorporate its content when `--self-contained` is used. This is
271+ similar to a feature already supported by the EPUB writer.
272+
273+ * Allow `--extract-media` to work with non-binary input formats
274+ (#1583, #2289). If `--extract-media` is supplied with a non-binary
275+ input format, pandoc will attempt to extract the contents of all
276+ linked images, whether in local files, data: uris, or external uris.
277+ They will be named based on the sha1 hash of the contents.
278+
279+ * Make `papersize: a4` work regardless of the case of `a4`.
280+ It is converted to `a4` in LaTeX and `A4` in ConTeXt.
281+
282+ * Make `east_asian_line_breaks` affect all readers/writers (#3703).
283+
284+ * Improved behavior of `auto_identifiers` when there are explicit ids
285+ (#1745). Previously only autogenerated ids were added to the list
286+ of header identifiers in state, so explicit ids weren't taken
287+ into account when generating unique identifiers. Duplicated
288+ identifiers could result. This simple fix ensures that explicitly given
289+ identifiers are also taken into account.
290+
291+ * Use `table-of-contents` for contents of toc, make `toc` a boolean
292+ (#2872). Changed markdown, rtf, and HTML-based templates accordingly.
293+ This allows you to set `toc: true` in the metadata; this
294+ previously produced strange results in some output formats.
295+ For backwards compatibility, `toc` is still set to the
296+ toc contents. But it is recommended that you update templates
297+ to use `table-of-contents` for the toc contents and `toc`
298+ for a boolean flag.
299+
300+ * Change behavior with binary format output to stdout.
301+ Previously, for binary formats, output to stdout was disabled
302+ unless we could detect that the output was being piped (and not
303+ sent to the terminal). Unfortunately, such detection is not
304+ possible on Windows, leaving windows users no way to pipe binary
305+ output. So we have changed the behavior in the following way:
306+
307+ + Output to stdout is allowed when it can be determined that
308+ the output is being piped (on non-Windows platforms).
309+ + If the `-o` option is not used, binary output is never sent
310+ to stdout by default; instead, an error is raised.
311+ + If `-o -` is used, binary output is sent to stdout, regardless
312+ of whether it is being piped. This works on Windows too.
313+
314+ * Better error behavior: uses of `error` have been replaced by
315+ raising of `PandocError`, which can be trapped and handled by the
316+ calling program.
317+
318+ * Removed `hard_line_breaks` extension from `markdown_github` (#3594).
319+ GitHub has two Markdown modes, one for long-form documents like READMEs
320+ and one for short things like issue coments. In issue comments, a line
321+ break is treated as a hard line break. In README, wikis, etc., it is
322+ treated as a space as in regular Markdown. Since pandoc is more likely to
323+ be used to convert long-form documents from GitHub Markdown,
324+ `-hard_line_breaks` is a better default.
325+
326+ * Include `backtick_code_blocks` extension in `mardkown_mmd` (#3637).
327+
328+ * Escape `MetaString` values (as added with `-M/--metadata` flag) (#3792).
329+ Previously they would be transmitted to the template without any
330+ escaping. Note that `--M title='*foo*'` yields a different result from
331+
332+ ---
333+ title: *foo*
334+ ---
335+
336+ In the latter case, we have emphasis; in the former case, just
337+ a string with literal asterisks (which will be escaped
338+ in formats, like Markdown, that require it).
339+
340+ * Allow `em`, `cm`, `in` for image height/width in HTML, LaTeX (#3450).
341+
342+ * HTML writer: Insert `data-` in front of unsupported attributes. Thus,
343+ a span with attribute `foo` gets written to HTML5 with `data-foo`, so
344+ it is valid HTML5. HTML4 is not affected. This will allow us to use
345+ custom attributes in pandoc without producing invalid HTML. (With help
346+ from Wandmalfarbe, #3817.)
347+
348+ * Plain writer: improved super/subscript rendering. We now
349+ handle more non-digit characters for which there are
350+ sub/superscripted unicode characters. When unicode
351+ sub/superscripted characters are not available, we use
352+ `_(..)` or `^(..)` (#3518).
353+
354+ * Docbook, JATS, TEI writers: print INFO message when omitting interior
355+ header (#3750). This only applies to section headers inside list items,
356+ e.g., which were otherwise silently omitted.
357+
358+ * Change to `--reference-links` in Markdown writer (#3701). With
359+ `--reference-location` of `section` or `block`, pandoc will now repeat
360+ references that have been used in earlier sections. The Markdown
361+ reader has also been modified, so that *exactly* repeated references
362+ do not generate a warning, only references with the same label but
363+ different targets. The idea is that, with references after every block,
364+ one might want to repeat references sometimes.
365+
366+ * ODT/OpenDocument writer:
367+
368+ + Support `lang` attribute (#1667).
369+ + Added support for `--toc` (#2836). Thanks to @anayrat.
370+
371+ * Docx writer:
372+
373+ + `lang` meta, see #1667 (Mauro Bieg, #3515).
374+ + Change `FigureWithCaption` to `CaptionedFigure` (iandol, #3658).
375+ + Use `Table` rather than `Table Normal` for table style (#3275).
376+ `Table Normal` is the default table style and can't be modified.
377+ + Pass through comments (#2994). We assume that comments are defined as
378+ parsed by the docx reader:
379+
380+ I want <span class="comment-start" id="0" author="Jesse Rosenthal"
381+ date="2016-05-09T16:13:00Z">I left a comment.</span>some text to
382+ have a comment <span class="comment-end" id="0"></span>on it.
383+
384+ We assume also that the id attributes are unique and properly
385+ matched between comment-start and comment-end.
386+ + Bookmark improvements. Bookmark start/end now surrounds content rather
387+ than preceding it. Bookmarks generated for Div with id
388+ (jgm/pandoc-citeproc#205).
389+ + Add `keywords` metadata to docx document properties (Ian).
390+
391+ * RST writer: support unknown interpreted text roles by
392+ parsing them as `Span` with `role` attributes (#3407). This
393+ way they can be manipulated in the AST.
394+
395+ * HTML writer:
396+
397+ + Line block: Use class instead of style attribute (#1623). We now
398+ issue `<div class="line-block">` and include a default definition
399+ for `line-block` in the default templates, instead of hard-coding a
400+ `style` on the div.
401+ + Add class `footnoteBack` to footnote back references (Timm Albers).
402+ This allows for easier CSS styling.
403+ + Render SmallCaps as span with smallcaps class (#1592), rather than
404+ using a style attribute directly. This gives the user more flexibility
405+ in styling small caps in CSS.
406+ + With reveal.js we use `data-src` instead of `src` for images for
407+ lazy loading.
408+ + Special-case `.stretch` class for images in reveal.js (#1291).
409+ Now in reveal.js, an image with class `stretch` in a paragraph
410+ by itself will stretch to fill the whole screen, with no
411+ caption or figure environment.
412+
413+ * Added warnings for non-rendered blocks to writers.
414+
415+ * Writers now raise an error on template failure.
416+
417+ * When creating a PDF via LaTeX, warn if the font is missing some
418+ characters (#3742).
419+
420+ * Remove initial check for PDF-creating program (#3819).
421+ Instead, just try running it and raise the exception if it
422+ isn't found at that point. This improves things for users of Cygwin
423+ on Windows, where the executable won't be found by `findExecutable`
424+ unless `.exe` is added. The same exception is raised as before, but
425+ at a later point.
426+
427+ * Readers issue warning for duplicate header identifiers (#1745).
428+ Autogenerated header identifiers are given suffixes so as not to clash
429+ with previously used header identifiers. But they may still coincide with
430+ an explicit identifier that is given for a header later in the document,
431+ or with an identifier on a div, span, link, or image. We now issue
432+ a warning in this case, so users can supply an explicit identifier.
433+
434+ * CommonMark reader now supports `emoji`, `hard_line_breaks`, `smart`,
435+ and `raw_html` extensions.
436+
437+ * Markdown reader:
438+
439+ + Don't allow backslash + newline to affect block structure (#3730).
440+ Note that as a result of this change, the following, which formerly
441+ produced a header with two lines separated by a line break, will
442+ now produce a header followed by a paragraph:
443+
444+ # Hi\
445+ there
446+
447+ This may affect some existing documents that relied on
448+ this undocumented and unintended behavior. This change makes pandoc
449+ more consistent with other Markdown implementations, and with itself
450+ (since the two-space version of a line break doesn't work inside ATX
451+ headers, and neither version works inside Setext headers).
452+
453+
454+ * Org reader (Albert Krewinkel, unless noted):
455+
456+ + Support `table.el` tables (#3314).
457+ + Support macros (#3401).
458+ + Support the `#+INCLUDE:` file inclusion mechanism (#3510).
459+ Recognized include types are `example`, `export`, `src`, and
460+ normal org file inclusion. Advanced features like line numbers
461+ and level selection are not implemented yet.
462+ + Interpret more meta value as inlines. The values of the following
463+ meta variables are now interpreted using org-markup instead of
464+ treating them as pure strings: `keywords` (comma-separated list of
465+ inlines), `subtitle` (inline values), `nocite` (inline values, can
466+ be repeated).
467+ + Support `\n` export option (#3940). This turns all newlines in the
468+ text into hard linebreaks.
469+
470+ * RST reader:
471+
472+ + Improved admonition support (#223). We no longer add an
473+ `admonition` class, we just use the class for the type of admonition,
474+ `note` for example. We put the word corresponding to the label in
475+ a paragraph inside a `Div` at the beginning of the admonition with
476+ class `admonition-title`. This is about as close as we can get to
477+ RST's own output.
478+ + Initial support of `.. table` directive. This allows adding captions
479+ to tables.
480+ + Support `.. line-block` directive. This is deprecated but may still
481+ be in older documents.
482+ + Support scale and align attributes of images (#2662).
483+ + Implemented implicit internal header links (#3475).
484+ + Support RST-style citations (#853). The citations appear at the end
485+ of the document as a definition list in a special div with id
486+ `citations`. Citations link to the definitions.
487+ + Recurse into bodies of unknown directives (#3432).
488+ In most cases it's better to preserve the content than
489+ to emit it. This isn't guaranteed to have good results;
490+ it will fail spectacularly for unknown raw or verbatim directives.
491+ + Handle chained link definitions (#262). For example,
492+
493+ .. _hello:
494+ .. _goodbye: example.com
495+
496+ Here both `hello` and `goodbye` should link to `example.com`.
497+ + Support anchors (#262). E.g.
498+
499+ `hello`
500+
501+ .. _hello:
502+
503+ paragraph
504+
505+ This is supported by putting "paragraph" in a `Div` with id `hello`.
506+ + Support `:widths:` attribute for table directive.
507+ + Implement csv-table directive (#3533). Most attributes are supported,
508+ including `:file:` and `:url:`.
509+ + Support unknown interpreted text roles by parsing them as Span
510+ with "role" attributes (#3407). This way they can be manipulated in
511+ the AST.
512+
513+ * HTML reader: parse a span with class `smallcaps` as `SmallCaps`.
514+
515+ * LaTeX reader:
516+
517+ + Implemented `\graphicspath` (#736).
518+ + Properly handle column prefixes/suffixes. For example, in
519+ `\begin{tabular}{>{$}l<{$}>{$}l<{$} >{$}l<{$}}`
520+ each cell will be interpreted as if it has a `$`
521+ before its content and a `$` after (math mode).
522+ + Handle komascript `\dedication` (#1845). It now adds a
523+ `dedication` field to metadata. It is up to the user to supply
524+ a template that uses this variable.
525+ + Support all `\textXX` commands, where XX = `rm`, `tt`, `up`, `md`,
526+ `sf`, `bf` (#3488). Spans with a class are used when there is
527+ nothing better.
528+ + Expand `\newenvironment` macros (#987).
529+ + Add support for LaTeX subfiles package (Marc Schreiber, #3530).
530+ + Better support for subfigure package (#3577).
531+ A figure with two subfigures turns into two pandoc
532+ figures; the subcaptions are used and the main caption
533+ ignored, unless there are no subcaptions.
534+ + Add support for \vdots (Marc Schreiber, #3607).
535+ + Add basic support for hyphenat package (Marc Schreiber, #3603).
536+ + Add basic `\textcolor` support (Marc Schreiber).
537+ + Add support for `tabularx` environment (Marc Schreiber, #3632).
538+ + Better handling of comments inside math environments (#3113).
539+ This solves a problem with commented out `\end{eqnarray}` inside
540+ an eqnarray (among other things).
541+ + Parse tikzpicture as raw verbatim environment if `raw_tex` extension
542+ is selected (#3692). Otherwise skip with a warning. This is better
543+ than trying to parse it as text!
544+ + Add `\colorbox` support (Marc Schreiber).
545+ + Set identifiers on Spans used for `\label`.
546+ + Have `\setmainlanguage` set `lang` in metadata.
547+ + Support etoolbox's `\ifstrequal`.
548+ + Support `plainbreak`, `fancybreak` et al from the memoir class
549+ (bucklereed, #3833).
550+ + Support `\let`. Also, fix regular macros so they're expanded at the
551+ point of use, and NOT also the point of definition. `\let` macros,
552+ by contrast, are expanded at the point of definition. Added an
553+ `ExpansionPoint` field to `Macro` to track this difference.
554+ + Support simple `\def` macros. Note that we still don't support
555+ macros with fancy parameter delimiters, like `\def\foo#1..#2{...}`.
556+ + Support \chaptername, \partname, \abstractname, etc. (#3559,
557+ obsoletes #3560).
558+ + Put content of `\ref`, `\label`, `\eqref` commands into `Span` with
559+ attributes, so they can be handled in filters (Marc Schreiber, #3639)
560+ + Add Support for `glossaries` and `acronym` package (Marc Schreiber,
561+ #3589). Acronyms are not resolved by the reader, but acronym and
562+ glossary information is put into attributes on Spans so that they
563+ can be processed in filters.
564+ + Use `Link` instead of `Span` for `\ref`. This makes more sense
565+ semantically and avoids unnecessary `Span [Link]` nestings when
566+ references are resolved.
567+ + Rudimentary support for `\hyperlink`.
568+ + Support `\textquoteleft|right`, `\textquotedblleft|right` (#3849).
569+ + Support `\lq`, `\rq`.
570+ + Implement `\newtoggle`, `\iftoggle`, `\toggletrue|false` from etoolbox
571+ (#3853).
572+ + Support `\RN` and `\Rn`, from biblatex (bucklereed, #3854).
573+ + Improved support for `\hyperlink`, `\hypertarget` (#2549).
574+ + Support `\k` ogonek accent.
575+ + Improve handling of accents. Handle ogonek, and fall back correctly
576+ with forms like `\"{}`.
577+ + Better support for ogonek accents.
578+ + Support for `\faCheck` and `\faClose` (Marc Schreiber, #3727).
579+ + Support for `xspace` (Marc Schreiber, #3797).
580+ + Support `\setmainlanguage` or `\setdefaultlanguage` (polyglossia)
581+ and `\figurename`.
582+ + Better handling of `\part` in LaTeX (#1905). Now we parse chapters as
583+ level 0 headers, and parts as level -1 headers. After parsing, we
584+ check for the lowest header level, and if it's less than 1 we bump
585+ everything up so that 1 is the lowest header level. So `\part` will
586+ always produce a header; no command-line options are needed.
587+ + Add block version of `\textcolor` (Marc Schreiber).
588+ + `\textcolor` works as inline and block command (Marc Schreiber).
589+ + `\textcolor` will be parse as span at the beginning of a paragraph
590+ (Marc Schreiber).
591+ + Read polyglossia/babel `\text(LANG){...}` (bucklereed)
592+ + Improved handling of include files in LaTeX reader (#3971).
593+ Previously `\include` wouldn't work if the included file
594+ contained, e.g., a begin without a matching end.
595+ + Support `\expandafter` (#3983).
596+ + Handle `\DeclareRobustCommand` (#3983). Currently it's just treated
597+ as a synonym for `\newcommand`.
598+
599+ * Math improvements due to updates in texmath:
600+
601+ + Improved handling of accents and upper/lower delimiters.
602+ + Support for output in GNU eqn format (used with *roff).
603+ + Allow `\boldsymbol` + a token without braces, and similarly
604+ with other styling commands.
605+ + Improve parsing of `\mathop` to allow multi-character operator names.
606+ + Add thin space after math operators when "faking it with
607+ unicode."
608+
609+ * `walk` is now used instead of `bottomUp` in the `ToJSONFilter`
610+ instance for `a -> [a]` (pandoc-types). Note that behavior
611+ will be slightly different, since `bottomUp`'s treatment of
612+ a function `[a] -> [a]` is to apply it to each sublist of a
613+ list, while walk applies it only to maximal sublists.
614+ Usually the latter behavior is what is wanted, and the
615+ former can be simulated when needed. But there may be
616+ existing filters that need to be rewritten in light of the
617+ new behavior. Performance should be improved.
618+
619+ * There are some changes to syntax highlighting due to revisions
620+ in the `skylighting` library:
621+
622+ + Support for `powershell` has been added, and many syntax
623+ definitions have been updated.
624+ + Background colors have been added to the `kate` style.
625+ + The way highlighted code blocks are formatted in HTML has
626+ been changed (David Baynard), in ways that may require
627+ changes in hard-coded CSS affecting highlighting.
628+ (If you haven't included hard-coded highlighting CSS in
629+ your template, you needn't change anything.)
630+
631+
632+ [API changes]
633+
634+ * New module `Text.Pandoc.Class` (Jesse Rosenthal, John MacFarlane).
635+ This contains definitions of the `PandocMonad` typeclass, the
636+ `PandocIO` and `PandocPure` monads, and associated functions.
637+
638+ * Changed types of all writers and readers.
639+
640+ + We now use `Text` instead of `String` in the interface (#3731).
641+ (We have not yet changed the internals of most readers to work
642+ with `Text`, but making this change in the API now opens up a
643+ path to doing that.)
644+ + The result is now of form `m a` with constraint `PandocMonad m`.
645+ Readers and writers can be combined to form monadic values which
646+ can be run using either `runIO` or `runPure`. If `runIO` is used,
647+ then both readers and writers will be able to do IO when needed
648+ (for include files, for example); if `runPure` is used,
649+ then the functions are pure and will not touch IO.
650+
651+ * New module `Text.Pandoc.Readers` (Albert Krewinkel). This
652+ contains reader helper functions formerly defined in the
653+ top-level `Text.Pandoc` module.
654+
655+ + Changed `StringReader` -> `TextReader`.
656+ + `getReader` now returns a pair of a reader and
657+ `Extensions`, instead of building the extensions into the
658+ reader (#3659). The calling code must explicitly set
659+ `readerExtensions` using the `Extensions` returned. The
660+ point of the change is to make it possible for the calling
661+ code to determine what extensions are being used.
662+
663+ * New module `Text.Pandoc.Writers` (Albert Krewinkel).
664+ This contains writer helper functions formerly defined in the
665+ top-level `Text.Pandoc` module.
666+
667+ + Changed `StringWriter` -> `TextWriter`.
668+ + `getWriter` now retuns a pair of a reader and
669+ `Extensions`, instead of building the extensions into the
670+ reader (#3659). The calling code must explicitly set
671+ `readerExtensions` using the `Extensions` returned. The
672+ point of the change is to make it possible for the calling
673+ code to determine what extensions are being used.
674+
675+ * New module `Text.Pandoc.Lua`, exporting `runLuaFilter` (Albert Krewinkel,
676+ #3514).
677+
678+ * New module `Text.Pandoc.App`. This abstracts out the functionality
679+ of the command line program (`convertWithOpts`), so it can be reproduced
680+ e.g. in a desktop or web application. Instead of exiting, we throw errors
681+ (#3548), which are caught (leading to exit) in pandoc.hs, but allow other
682+ users of `Text.Pandoc.App` to recover. `pandoc.hs` is now a 2-liner.
683+
684+ * New module `Text.Pandoc.Logging` (exported module) (#3392).
685+ This now contains the `Verbosity` definition previously in
686+ `Text.Pandoc.Options`, as well as a new `LogMessage` datatype that will
687+ eventually be used instead of raw strings for warnings. This will enable
688+ us, among other things, to provide machine-readable warnings if desired.
689+ Include ToJSON instance and showLogMessage. This gives us the possibility
690+ of both machine-readable and human-readable output for log messages.
691+
692+ * New module `Text.Pandoc.BCP47`, with `getLang`, `Lang(..)`, `parseBCP47`.
693+
694+ * New module `Text.Pandoc.Translations`, exporting `Term`,
695+ `Translations`, `readTranslations`.
696+
697+ * New module `Text.Pandoc.Readers.LaTeX.Types', exporting `Macro`, `Tok`,
698+ `TokType`, `Line`, `Column`.
699+
700+ * `Text.Pandoc.Error`: added many new constructors for `PandocError`.
701+
702+ * Expose some previously private modules (#3260). These are often
703+ helpful to people writing their own reader or writer modules:
704+
705+ + `Text.Pandoc.Writers.Shared`
706+ + `Text.Pandoc.Parsing`
707+ + `Text.Pandoc.Asciify`
708+ + `Text.Pandoc.Emoji`
709+ + `Text.Pandoc.ImageSize`
710+ + `Text.Pandoc.Highlighting`
711+`
712+ * New module `Text.Pandoc.Extensions` (Albert Krewinkel):
713+ Extension parsing and processing functions were defined in the top-level
714+ `Text.Pandoc` module. These functions are moved to the Extensions
715+ submodule as to enable reuse in other submodules.
716+
717+ * Add `Ext_raw_attribute` to `Extension`.
718+
719+ * Add `Monoid` instance for `Extensions`.
720+
721+ * Add `Ext_four_space_rule` constructor in `Extension`.
722+
723+ * Add `Ext_gfm_auto_identifiers`: new constructor for `Extension`.
724+
725+ * Add `Text.Pandoc.Writers.Ms`, exporting `writeMs`.
726+
727+ * Add `Text.Pandoc.Writers.JATS`, exporting `writeJATS`.
728+
729+ * Add `Text.Pandoc.Writers.Muse`, exporting `writeMuse`.
730+
731+ * Add `Text.Pandoc.Readers.Muse`, exporting `readMuse`.
732+
733+ * Add `Text.Pandoc.Readers.TikiWiki`, exporting `readTikiWiki`.
734+
735+ * Add `Text.Pandoc.Readers.Vimwiki`, exporting `readVimwiki`.
736+
737+ * Export `setVerbosity` from `Text.Pandoc`.
738+
739+ * `Text.Pandoc.Pretty`: Add `Eq` instance for `Doc`.
740+
741+ * `Text.Pandoc.XML`: `toEntities`: changed type to `Text -> Text`.
742+
743+ * `Text.Pandoc.UTF8`:
744+
745+ + Export `fromText`, `fromTextLazy`, `toText`, `toTextLazy`.
746+ Define `toString`, `toStringLazy` in terms of them.
747+ + Add new functions parameterized on `Newline`: `writeFileWith`,
748+ `putStrWith`, `putStrLnWith`, `hPutStrWith`, `hPutStrLnWith`.
749+
750+ * `Text.Pandoc.MediaBag`: removed `extractMediaBag`.
751+
752+ * `Text.Pandoc.Highlighting`:
753+
754+ + `highlighting` now returns an Either rather than Maybe.
755+ This allows us to display error information returned by the skylighting
756+ library. Display a warning if the highlighting library throws an error.
757+ + Add parameter for `SyntaxMap` to `highlight`.
758+
759+ * `Text.Pandoc.Writers.Math`:
760+
761+ + Export `defaultMathJaxURL`, `defaultKaTeXURL`. This will ensure that
762+ we only need to update these in one place.
763+
764+ * `Text.Pandoc.SelfContained`:
765+
766+ + Removed `WriterOptions` parameter from `makeSelfContained`.
767+ + Put `makeSelfContained` in PandocMonad instead of IO. This removes
768+ the need to pass MediaBag around and improves exceptions. It also
769+ opens up the possibility of using makeSelfContained purely.
770+ + Export `makeDataURI`.
771+
772+ * `Text.Pandoc.ImageSize`:
773+
774+ + Export `lengthToDim`, new function `scaleDimension`.
775+ + Export `inEm` from ImageSize (#3450).
776+ + Change `showFl` and `show` instance for `Dimension` so
777+ extra decimal places are omitted.
778+ + Added `Em` as a constructor of `Dimension`.
779+ + Add `WriterOptions` parameter to `imageSize` signature (Mauro Bieg).
780+
781+ * `Text.Pandoc.Templates`:
782+
783+ + Change type of `renderTemplate'`. Now it runs in `PandocMonad`
784+ and raises a proper `PandocTemplateError` if there are problems, rather
785+ than failing with uncatchable `error`.
786+ + Change signature of `getDefaultTemplate`. Now it runs in any instance
787+ of `PandocMonad`, and returns a `String` rather than an `Either` value.
788+ And it no longer takes a `datadir` parameter, since this can be
789+ retrieved from `CommonState`.
790+
791+ * `Text.Pandoc.Options`:
792+
793+ + Added `writerEpubSubdirectory` to `WriterOptions` (#3720).
794+ The EPUB writer now takes its EPUB subdirectory from this option.
795+ + In `WriterOptions`, rename `writerLaTeXEngine` to `writerPdfEngine`
796+ and `writerLaTeXArgs` to `writerPdfArgs` (Mauro Bieg, #3909).
797+ + Add `writerSyntaxMap` to `WriterOptions`.
798+ + Removed `writerEpubStylesheet` from `WriterOptions`.
799+ + Remove `writerUserDataDir` from `WriterOptions`. It is now carried
800+ in `CommonState` in `PandocMonad` instances. (And thus it can be used
801+ by readers too.)
802+ + Changed `writerEpubMetadata` to a `Maybe String`.
803+ + Removed `readerApplyMacros` from `ReaderOptions`. Now we just check
804+ the `latex_macros` reader extension.
805+ + FromJSON/ToJSON instances for `ReaderOptions`.
806+ + In `HTMLMathMethod`, the `KaTeX` contsructor now takes only
807+ one string (for the KaTeX base URL), rather than two.
808+ + Removed `writerSourceURL` from `WriterOptions`. We now use
809+ `stSourceURL` in `CommonState`, which is set by `setInputFiles`.
810+
811+ * `Text.Pandoc.Shared`:
812+
813+ + `tabFilter` now takes a `Text`, not `String`.
814+ + `openURL`: Changed type from an Either. Now it will just raise
815+ an exception to be trapped later.
816+ + Remove `normalizeSpaces` (#1530).
817+ + Remove `warn`. (Use `report` from `Text.Pandoc.Class` instead.)
818+ + Export a new function `crFilter`.
819+ + Added `eastAsianLineBreakFilter` (previously in Markdown reader).
820+ + Provide custom `isURI` that rejects unknown schemes.
821+ (Albert Krewinkel, #2713). We also export the set of known
822+ `schemes`. The new function replaces the function of the same name
823+ from `Network.URI`, as the latter did not check whether a scheme is
824+ well-known. All official IANA schemes (as of 2017-05-22) are
825+ included in the set of known schemes. The four non-official schemes
826+ `doi`, `isbn`, `javascript`, and `pmid` are kept.
827+ + Removed `err`.
828+ + Removed `readDataFile`, `readDefaultDataFile`, `getReferenceDocx`,
829+ `getReferenceODT`. These now live in `Text.Pandoc.Class`,
830+ where they are defined in terms of `PandocMonad`
831+ primitives and have different signatures.
832+ + Remove `openURL`. Use `openURL` from `Text.Pandoc.Class` instead.
833+
834+ * `Text.Pandoc.Readers.HTML`: export new `NamedTag` class.
835+
836+ * `Text.Pandoc.Readers.Markdown`: remove `readDocxWithWarnings`.
837+ With the new API one can simply use `getLog` after running
838+ the reader.
839+
840+ * `Text.Pandoc.Readers.LaTeX`: Changed types for `rawLaTeXInline`
841+ and `rawLaTeXBlock`. (Both now return a `String`, and they are
842+ polymorphic in state.)
843+
844+
845+ [bug fixes and under-the-hood improvements]
846+
847+ * TEI writer: Added identifiers on `<div>` elements.
848+
849+ * DokuWiki reader: Better handling for code block in list item (#3824).
850+
851+ * Custom writer: Remove old preprocesesor conditionals (Albert Krewinkel).
852+
853+ * ZimWiki writer: Removed internal formatting from note and table cells,
854+ because ZimWiki does not support it (Alex Ivkin, #3446).
855+
856+ * MediaWiki writer:
857+
858+ + Updated list of syntax highlighting languages (#3461).
859+ Now `r` gets you `<source>` rather than `<code>` (among others).
860+ + Add display attribute on `<math>` tags (#3452). This allows display
861+ math to be rendered properly.
862+ + Remove newline before `</ref>` (#2652).
863+ + Don't softbreak lines inside list items (#3531).
864+
865+ * Org writer:
866+
867+ + Reduce to two spaces after bullets (#3417, Albert Krewinkel).
868+ + Add unit tests (Alexander Krotov).
869+ + Stop using raw HTML to wrap divs (Albert Krewinkel, #3771).
870+ + Do not strip `#` from Org anchor links (Alexander Krotov).
871+
872+ * CommonMark writer:
873+
874+ + Avoid excess blank lines at end of output.
875+ + Prefer pipe tables to HTML tables even if it means losing relative
876+ column width information (#3734).
877+ + Support table, strikethrough extensions, when enabled (as with gfm).
878+ Note that we bypass the commonmark writer from cmark and construct our
879+ own pipe tables, with better results.
880+ + Properly support `--wrap=none`.
881+ + Use smallcaps class for `SmallCaps` (#1592).
882+ + Omit "fig:" prefix in image titles. This is used internally to
883+ indicate internal figures.
884+
885+ * RST writer:
886+
887+ + Properly handle table captions.
888+ + Don't wrap lines in in definition list terms. Wrapping is not allowed.
889+ + Implemented `+/-smart` and improved escaping with `+smart`.
890+ + Add empty comments when needed to avoid including a blockquote
891+ in the indented content of a preceding block (#3675).
892+ + Improve grid table output, fix bug with empty rows (#3516).
893+ Uses the new `gridTable` in Writers.Shared, which is here
894+ improved to better handle 0-width cells.
895+ + Remove space at beginning/end of RST code span (#3496). Otherwise
896+ we get invalid RST. There seems to be no way to escape the space.
897+ + Add header anchors when header has non-standard id (#3937).
898+ + Correctly handle inline code containing backticks, using a `:literal:`
899+ role (#3974).
900+ + Don't backslash-escape word-internal punctuation (#3978).
901+
902+ * Markdown writer:
903+
904+ + Don't include variables in metadata blocks. Previously variables set
905+ on the command line were included in e.g. YAML metadata, contrary to
906+ documentation and intentions.
907+ + Improved escaping with `+smart`.
908+ + Fixed grid tables embedded in grid tables (#2834).
909+ + Use span with class 'smallcaps' for SmallCaps, instead of a style
910+ attribute as before (#1592).
911+ + Escape initial `%` in a paragraph if the `pandoc_title_blocks`
912+ extension is enabled (#3454). Otherwise in a document starting with
913+ a literal `%` the first line is wrongly interpreted as a title.
914+ + Fixed false ordered lists in YAML metadata (#3492, #1685). Now we
915+ properly escape things that would otherwise start ordered lists,
916+ such as
917+
918+ ---
919+ title: 1. inline
920+ ...
921+ + Better handling of tables with empty columns (#3337). We now
922+ calculate the number of columns based on the longest row (or the
923+ length of aligns or widths).
924+ + Escape unordered list markers at beginning of paragraph (#3497), to
925+ avoid false interpretation as a list.
926+ + Escape `|` appropriately.
927+ + Ensure space before list at top level (#3487).
928+ + Avoid spurious blanklines at end of document after tables and list,
929+ for example.
930+ + Fixed bugs in simple/multiline list output (#3384).
931+ Previously we got overlong lists with `--wrap=none`. This is fixed.
932+ Previously a multiline list could become a simple list (and would
933+ always become one with `--wrap=none`).
934+ + Don't emit a simple table if `simple_tables` disabled (#3529).
935+ + Case-insensitive reference links (David A Roberts, #3616).
936+ Ensure that we do not generate reference links whose labels differ only
937+ by case. Also allow implicit reference links when the link
938+ text and label are identical up to case.
939+ + Put space before reference link definitions (Mauro Bieg, #3630).
940+ + Better escaping for links (David A. Roberts, #3619). Previously the
941+ Markdown writer would sometimes create links where there were none
942+ in the source. This is now avoided by selectively escaping bracket
943+ characters when they occur in a place where a link might be created.
944+ + Added missing `\n` (David A. Roberts, #3647).
945+ + Fixed duplicated reference links with `--reference-links`
946+ and `--reference-location=section` (#3674). Also ensure that there
947+ are no empty link references `[]`.
948+ + Avoid inline surround-marking with empty content (#3715).
949+ E.g. we don't want `<strong></strong>` to become `****`.
950+ Similarly for emphasis, super/subscript, strikeout.
951+ + Don't allow soft break in header (#3736).
952+ + Make sure `plain`, `markdown_github`, etc. work for raw.
953+ Previously only `markdown` worked. Note: currently a raw block labeled
954+ `markdown_github` will be printed for any `markdown` format.
955+ + Ensure that `+` and `-` are escaped properly so they don't cause
956+ spurious lists (#3773). Previously they were only
957+ if succeeded by a space, not if they were at end of line.
958+ + Use pipe tables if `raw_html` disabled and `pipe_tables` enabled,
959+ even if the table has relative width information (#3734).
960+ + Markdown writer: don't crash on `Str ""`.
961+ + Make `Span` with null attribute transparent. That is, we don't use
962+ brackets or `<span>` tags to mark spans when there are no attributes;
963+ we simply output the contents.
964+ + Escape pipe characters when `pipe_tables` enabled (#3887).
965+ + Better escaping of `<` and `>`. If `all_symbols_escapable` is set,
966+ we backslash escape these. Otherwise we use entities as before.
967+ + When writing plain, don't use ` ` to separate list and indented
968+ code. There's no need for it in this context, since this isn't to be
969+ interpreted using Markdown rules.
970+ + Preserve classes in JS obfuscated links (Timm Albers, #2989).
971+ HTML links containing classes originally now preserve them when using
972+ javascript email obfuscation.
973+ + Render `SmallCaps` as a native span when `native_spans` are enabled.
974+ + Always write attributes with `bracketed_spans` (d-dorazio).
975+
976+ * Man writer:
977+
978+ + Fix handling of nested font commands (#3568). Previously pandoc emitted
979+ incorrect markup for bold + italic, for example, or bold + code.
980+ + Avoid error for definition lists with no definitions (#3832).
981+
982+ * DocBook writer:
983+
984+ + Fix internal links with `writerIdentifierPrefix opt`
985+ (#3397, Maura Bieg).
986+
987+ * Docx writer:
988+
989+ + Don't include bookmarks on headers unless non-null id (#3476).
990+ + Support 9 levels of headers (#1642).
991+ + Allow 9 list levels (#3519).
992+ + Don't take `distArchive` from datadir (#3322). The docx writer takes
993+ components from the distribution's version of `reference.docx` when it
994+ can't find them in a user's custom `reference.docx`. Previously, we
995+ allowed a `reference.docx` in the data directory (e.g. `~/.pandoc`)
996+ to be used as the distribution's reference.docx. This led to a
997+ bizarre situation where pandoc would produce a good docx using
998+ `--template ~/.pandoc/ref.docx`, but if `ref.docx` were moved to
999+ `~/.pandoc/reference.docx`, it would then produce a corrupted docx.
1000+ + Fixed handling of soft hyphen (0173) (#3691).
1001+ + Better handling of keywords (#3719).
1002+ + Cleaner code for handling dir and style attributes for `Div`.
1003+ + Use `Set` for dynamic styles to avoid duplicates.
1004+ + Removed redundant element from data/docx/word/numbering.xml.
1005+ The elements we need are generated when the document is
1006+ compiled; this didn't do anything.
1007+ + Activate `evenAndOddHeaders` from reference docx (#3901,
1008+ Augustín Martín Barbero).
1009+
1010+ * ODT/OpenDocument writer:
1011+
1012+ + Calculate aspect ratio for percentage-sized images (Mauro Bieg, #3239).
1013+ + Use more widely available bullet characters (#1400). The old
1014+ characters weren't available in some font sets. These seem to work
1015+ well on Windows and Linux versions of LibreOffice.
1016+ + Wider labels for lists (#2421). This avoids overly narrow labels for
1017+ ordered lists with `()` delimiters. However, arguably it creates
1018+ overly wide labels for bullets. Also, lists now start flush with
1019+ the margin, rather than indented.
1020+ + Fixed dropped elements in some ordered lists (#2434).
1021+
1022+ * FB2 writer:
1023+
1024+ + Don't render `RawBlock` as code.
1025+ + Don't fail with an error on interior headers (e.g. in list) (#3750).
1026+ Instead, omit them with an INFO message.
1027+ + Add support for "lang" metadata (Alexander Krotov, #3625).
1028+ + Format `LineBlock` as poem (Alexander Krotov). Previously writer
1029+ produced one paragraph with `<empty-line/>` elements, which are not
1030+ allowed inside `<p>` according to FB2 schema.
1031+ + Replace `concatMap` with `cMap` (Alexander Krotov).
1032+
1033+ * HTML writer:
1034+
1035+ + Make sure `html4`, `html5` formats work for raw blocks/inlines.
1036+ + Render raw inline environments when `--mathjax` used (#3816).
1037+ We previously did this only with raw blocks, on the assumption
1038+ that math environments would always be raw blocks. This has changed
1039+ since we now parse them as inline environments.
1040+ + Ensure we don't get two style attributes for width and height.
1041+ + Report when not rendering raw inline/block.
1042+ + Issue warning if no title specified and template used (#3473).
1043+ + Info message if `lang` is unspecified (#3486).
1044+ + Removed unused parameter in `dimensionsToAttributeList`.
1045+ + Avoid two class attributes when adding `uri` class (#3716).
1046+ + Fix internal links with `writerIdentifierPrefix opt` (#3397, Maura
1047+ Bieg).
1048+ + Use revealjs's math plugin for mathjax (#3743). This is a thin
1049+ wrapper around mathjax that makes math look better on revealjs.
1050+ + Slidy: use h1 for all slides, even if they were originally
1051+ level 2 headers (#3566). Otherwise the built-in table of contents
1052+ in Slidy breaks.
1053+
1054+ * LaTeX writer:
1055+
1056+ + Don't render LaTeX images with data: URIs (#3636). Note that
1057+ `--extract-media` can be used when the input contains data: URIs.
1058+ + Make highlighted code blocks work in footnotes (Timm Albers).
1059+ + Don't use figure inside table cell (#3836).
1060+ + Use proper code for list enumerators (#3891). This should fix problems
1061+ with lists that don't use arabic numerals.
1062+ + Always add hypertarget when there's a non-empty identifier (#2719).
1063+ Previously the hypertargets were only added when there was actually
1064+ a link to that identifier.
1065+ + Use `%` after hypertarget before code block.
1066+ + Add `\leavevmode` before hypertarget at start of paragraph (#2704,
1067+ fixes formatting problems in beamer citations).
1068+ + Don't use `lstinline` in \item[..] (#645). If you do, the contents
1069+ of item disappear or are misplaced. Use `\texttt` instead.
1070+ + Fix problem with escaping in `lstinline` (#1629). Previously the
1071+ LaTeX writer created invalid LaTeX when `--listings` was specified and
1072+ a code span occured inside emphasis or another construction.
1073+ + Fix error with line breaks after empty content (#2874). LaTeX
1074+ requires something before a line break, so we insert a `~` if no
1075+ printable content has yet been emitted.
1076+ + Use BCP47 parser.
1077+ + Fixed detection of otherlangs (#3770). We weren't recursing into
1078+ inline contexts.
1079+ + Handle language in inline code with `--listings` (#3422).
1080+ + Write euro symbol directly in LaTeX (Andrew Dunning, #3801).
1081+ The textcomp package allows pdfLaTeX to parse `€` directly, making the
1082+ `\euro` command unneeded.
1083+ + Fixed footnotes in table captions (#2378). Note that if the table has
1084+ a first page header and a continuation page header, the notes will
1085+ appear only on the first occurrence of the header.
1086+ + In `writeBeamer` output, allow hyperlinks to frames (#3220).
1087+ Previously you could link to a header above or below slide level but
1088+ not *to* slide level. This commit changes that. Hypertargets are
1089+ inserted inside frame titles; technically the reference is to just
1090+ after the title, but in normal use (where slides are viewed full
1091+ screen in a slide show), this does not matter.
1092+ + Remove `\strut` at beginning of table cells (#3436). This fixes a
1093+ problem with alignment of lists in table cells. The `\strut` at the
1094+ end seems to be enough to avoid the too-close spacing that motivated
1095+ addition of the strut in #1573.
1096+ + Add partial siunitx Support (Marc Schreiber, #3588).
1097+
1098+ * ConTeXt writer:
1099+
1100+ + Refactored to use BCP47 module.
1101+ + Remove unnecessary `$` (Alexander Krotov, #3482).
1102+ + Use header identifiers for chapters (#3968).
1103+
1104+ * EPUB writer:
1105+
1106+ + `title_page.xhtml` is now put in `text/`.
1107+ + Don't strip formatting in TOC (#1611).
1108+
1109+ * Textile reader:
1110+
1111+ + Fix bug for certain links in table cells (#3667).
1112+ + Allow 'pre' code in list item (#3916).
1113+
1114+ * HTML reader:
1115+
1116+ + Added warnings for ignored material (#3392).
1117+ + Better sanity checks to avoid parsing unintended things as
1118+ raw HTML in the Markdown reader (#3257).
1119+ + Revise treatment of `li` with `id` attribute (#3596). Previously we
1120+ always added an empty div before the list item, but this created
1121+ problems with spacing in tight lists. Now we do this: If the list
1122+ item contents begin with a `Plain` block, we modify the `Plain`
1123+ block by adding a `Span` around its contents. Otherwise, we add a
1124+ `Div` around the contents of the list item (instead of adding an
1125+ empty `Div` to the beginning, as before).
1126+ + Add `details` tag to list of block tags (#3694).
1127+ + Removed `button` from block tag list (#3717). It is already in the
1128+ `eitherBlockOrInlineTag` list, and should be both places.
1129+ + Use `Set`s instead of lists for block tag lookup.
1130+ + Rewrote to use `Text` throughout. Effect on memory usage is modest
1131+ (< 10%).
1132+ + Use the lang value of `<html>` to set the lang meta value (bucklereed,
1133+ #3765).
1134+ + Ensure that paragraphs are closed properly when the parent block
1135+ element closes, even without `</p>` (#3794).
1136+ + Parse `<figure>` and `<figcaption>` (Mauro Bieg, #3813).
1137+ + Parse `<main>` like `<div role=main>` (bucklereed, #3791).
1138+ `<main>` closes `<p>` and behaves like a block element generally
1139+ + Support column alignments (#1881). These can be set either
1140+ with a `width` attribute or with `text-width` in a `style` attribute.
1141+ + Modified state type to be an instance of `HasLogMessages`, so
1142+ `registerHeader` can issue warnings.
1143+
1144+ * Txt2Tags reader:
1145+
1146+ + Newline is not indentation (Alexander Krotov).
1147+
1148+ * MediaWiki reader:
1149+
1150+ + Allow extra hyphens after `|-` in tables (#2649).
1151+ + Allow blank line after table start (#2649).
1152+ + Fixed more table issues (#2649).
1153+ + Ensure that list starts begin at left margin (#2606). Including when
1154+ they're in tables or other list items.
1155+ + Make smart double quotes depend on `smart` extension (#3585).
1156+ + Don't do curly quotes inside `<tt>` contexts (#3585). Even if `+smart`.
1157+ + Modified state type to be an instance of `HasLogMessages`, so
1158+ `registerHeader` can issue warnings.
1159+
1160+ * TWiki reader (Alexander Krotov):
1161+
1162+ + Remove unnecessary `$` (#3597).
1163+ + Simplify `linkText` (#3605).
1164+
1165+ * EPUB reader:
1166+
1167+ + Minor refactoring, avoiding explicit MediaBag handling.
1168+ This all works behind the scenes in CommonState plumbing.
1169+
1170+ * Docx reader:
1171+
1172+ + Don't drop smartTag contents (#2242).
1173+ + Handle local namespace declarations (#3365). Previously we didn't
1174+ recognize math, for example, when the xmlns declaration occured on
1175+ the element and not the root.
1176+ + More efficient trimSps (#1530). Replacing `trimLineBreaks`. This
1177+ does the work of `normalizeSpaces` as well, so we avoid the need for
1178+ that function here.
1179+ + Avoid 0-level headers (Jesse Rosenthal, #3830). We used to parse
1180+ paragraphs styled with "HeadingN" as "nth-level header." But if a
1181+ document has a custom style named "Heading0", this will produce a
1182+ 0-level header, which shouldn't exist. We only parse this style
1183+ if N>0. Otherwise we treat it as a normal style name, and
1184+ follow its dependencies, if any.
1185+ + Add tests for avoiding zero-level header (Jesse Rosenthal).
1186+
1187+ * ODT reader:
1188+
1189+ + Replaced `collectRights` with Rights from `Data.Either`.
1190+ + Remove dead code (Albert Krewinkel).
1191+
1192+ * Org reader (Albert Krewinkel, unless noted).
1193+
1194+ + Don't allow tables inside list items (John MacFarlane, #3499).
1195+ + Disallow tables on list marker lines (#3499).
1196+ + Convert markup at beginning of footnotes (John MacFarlane, #3576).
1197+ + Allow emphasized text to be followed by `[` (#3577).
1198+ + Handle line numbering switch for src blocks.
1199+ The line-numbering switch that can be given to source blocks (`-n` with
1200+ an start number as an optional parameter) is parsed and translated to a
1201+ class/key-value combination used by highlighting and other readers and
1202+ writers.
1203+ + Stop adding rundoc prefix to src params. Source block parameter names
1204+ are no longer prefixed with `rundoc`. This was intended to simplify
1205+ working with the rundoc project, a babel runner. However, the rundoc
1206+ project is unmaintained, and adding those markers is not the reader's
1207+ job anyway. The original language that is specified for a source
1208+ element is now retained as the `data-org-language` attribute and only
1209+ added if it differs from the translated language.
1210+ + Allow multi-word arguments to src block params (#3477). The reader now
1211+ correctly parses src block parameter list even if parameter arguments
1212+ contain multiple words.
1213+ + Avoid creating `nullMeta` by applying `setMeta` directly
1214+ (Alexander Krotov).
1215+ + Replace `sequence . map` with `mapM`.
1216+ + Fix smart parsing behavior. Parsing of smart quotes and special
1217+ characters can either be enabled via the `smart` language extension or
1218+ the `'` and `-` export options. Smart parsing is active if either the
1219+ extension or export option is enabled. Only smart parsing of special
1220+ characters (like ellipses and en and em dashes) is enabled by default,
1221+ while smart quotes are disabled. Previously, all smart parsing was
1222+ disabled unless the language extension was enabled.
1223+ + Subject full doc tree to headline transformations (Albert Krewinkel,
1224+ #3695). Emacs parses org documents into a tree structure, which is
1225+ then post-processed during exporting. The reader is changed to do the
1226+ same, turning the document into a single tree of headlines starting
1227+ at level 0.
1228+ + Fix cite parsing behaviour (Herwig Stuetz). Until now, `org-ref`
1229+ cite keys included special characters also at the end. This caused
1230+ problems when citations occur right before colons or at the end of
1231+ a sentence. With this change, all non alphanumeric characters at
1232+ the end of a cite key are ignored. This also adds `,` to the list
1233+ of special characters that are legal in cite keys to better mirror
1234+ the behaviour of org-export.
1235+ + Fix module names in haddock comments. Copy-pasting had lead to
1236+ haddock module descriptions containing the wrong module names.
1237+ + Recognize babel result blocks with attributes (#3706). Babel
1238+ result blocks can have block attributes like captions and names.
1239+ Result blocks with attributes were not recognized and were parsed
1240+ as normal blocks without attributes.
1241+ + Include tags in headlines. The Emacs default is to include tags in the
1242+ headline when exporting. Instead of just empty spans, which contain the
1243+ tag name as attribute, tags are rendered as small caps and wrapped in
1244+ those spans. Non-breaking spaces serve as separators for multiple tags.
1245+ + Respect export option for tags (#3713). Tags are appended to
1246+ headlines by default, but will be omitted when the `tags` export option
1247+ is set to nil.
1248+ + Use `tag-name` attribute instead of `data-tag-name`.
1249+ + Use `org-language` attribute rather than `data-org-language`.
1250+ + Modified state type to be an instance of `HasLogMessages`, so
1251+ `registerHeader` can issue warnings.
1252+ + End footnotes after two blank lines. Footnotes can not only be
1253+ terminated by the start of a new footnote or a header, but also by two
1254+ consecutive blank lines.
1255+ + Update emphasis border chars (#3933). The org reader was updated to
1256+ match current org-mode behavior: the set of characters which are
1257+ acceptable to occur as the first or last character in an org emphasis
1258+ have been changed and now allows all non-whitespace chars at the
1259+ inner border of emphasized text (see `org-emphasis-regexp-components`).
1260+
1261+ * RST reader:
1262+
1263+ + Fixed small bug in list parsing (#3432). Previously the parser didn't
1264+ handle properly this case:
1265+
1266+ * - a
1267+ - b
1268+ * - c
1269+ - d
1270+ + Handle multiline cells in simple tables (#1166).
1271+ + Parse list table directive (Keiichiro Shikano, #3432).
1272+ + Make use of `anyLineNewline` (Alexander Krotov, #3686).
1273+ + Use `anyLineNewline` in `rawListItem` (Alexander Krotov, #3702).
1274+ + Reorganize block parsers for ~20% faster parsing.
1275+ + Fixed `..include::` directive (#3880).
1276+ + Handle blank lines correctly in line blocks (Alexander Krotov, #3881).
1277+ Previously pandoc would sometimes combine two line blocks separated
1278+ by blanks, and ignore trailing blank lines within the line block.
1279+ + Fix indirect hyperlink targets (#512).
1280+
1281+ * Markdown reader:
1282+
1283+ + Allow attributes in reference links to start on next line (#3674).
1284+ + Parse YAML metadata in a context that sees footnotes defined in
1285+ the body of the document (#1279).
1286+ + When splitting pipe table cells, skip tex math (#3481).
1287+ You might have a `|` character inside math. (Or for that matter
1288+ something that the parser might mistake for raw HTML.)
1289+ + Treat span with class `smallcaps` as SmallCaps.
1290+ This allows users to specify small caps in Markdown this way:
1291+ `[my text]{.smallcaps}` (#1592).
1292+ + Fixed internal header links (#2397).
1293+ This patch also adds `shortcut_reference_links` to the list
1294+ of mmd extensions.
1295+ + Treat certain environments as inline
1296+ when they occur without space surrounding them (#3309, #2171).
1297+ E.g. equation, math. This avoids incorrect vertical space
1298+ around equations.
1299+ + Optimized `nonindentSpaces`. Makes the benchmark go from 40 to 36 ms.
1300+ + Allow latex macro definitions indented 1-3 spaces.
1301+ Previously they only worked if nonindented.
1302+ + Improved parsing of indented raw HTML blocks (#1841).
1303+ Previously we inadvertently interpreted indented HTML as
1304+ code blocks. This was a regression. We now seek to determine the
1305+ indentation level of the contents of an HTML block, and (optionally)
1306+ skip that much indentation. As a side effect, indentation may be
1307+ stripped off of raw HTML blocks, if `markdown_in_html_blocks` is
1308+ used. This is better than having things interpreted as indented
1309+ code blocks.
1310+ + Fixed smart quotes after emphasis (#2228). E.g. in `*foo*'s 'foo'`.
1311+ + Warn for notes defined but not used (#1718).
1312+ + Use `anyLineNewline` (Alexander Krotov).
1313+ + Interpret YAML metadata as Inlines when possible (#3755). If
1314+ the metadata field is all on one line, we try to interpret it as
1315+ Inlines, and only try parsing as Blocks if that fails. If it
1316+ extends over one line (including possibly the `|` or `>` character
1317+ signaling an indented block), then we parse as Blocks. This was
1318+ motivated by some German users finding that `date: '22. Juin 2017'`
1319+ got parsed as an ordered list.
1320+ + Fixed spurious parsing as citation as reference def (#3840).
1321+ We now disallow reference keys starting with `@` if the
1322+ `citations` extension is enabled.
1323+ + Parse `-@roe` as suppress-author citation (pandoc-citeproc#237).
1324+ Previously only `[-@roe]` (with brackets) was recognized as
1325+ suppress-author, and `-@roe` was treated the same as `@roe`.
1326+ + Fixed parsing of fenced code after list when there is no intervening
1327+ blank line (#3733).
1328+ + Allow raw latex commands starting with `\start` (#3558). Previously
1329+ these weren't allowed because they were interpreted as starting
1330+ ConTeXt environments, even without a corresponding `\stop`...
1331+ + Added `inlines`, `inlines1`.
1332+ + Require nonempty alt text for `implicit_figures` (#2844).
1333+ A figure with an empty caption doesn't make sense.
1334+ + Removed texmath macro material; now all this is handled
1335+ in the LaTeX reader functions.
1336+ + Fixed bug with indented code following raw LaTeX (#3947).
1337+
1338+ * LaTeX reader:
1339+
1340+ + Rewrote LaTeX reader with proper tokenization (#1390,
1341+ #2118, #3236, #3779, #934, #982). This rewrite is primarily
1342+ motivated by the need to get macros working properly. A side benefit
1343+ is that the reader is significantly faster. We now tokenize the
1344+ input text, then parse the token stream. Macros modify the token
1345+ stream, so they should now be effective in any context, including
1346+ math. Thus, we no longer need the clunky macro processing
1347+ capacities of texmath.
1348+ + Parse `\,` to `\8198` (six-per-em space) (Henri Werth).
1349+ + Allow `\newcommand\foo{blah}` without braces.
1350+ + Support `\lstinputlisting` (#2116).
1351+ + Issue warnings when skipping unknown latex commands (#3392).
1352+ + Include contents of `\parbox`.
1353+ + Allow `\hspace` and `\vspace` to count as raw block or inline.
1354+ Previously we would refuse to parse anything as raw inline if
1355+ it was in the `blockCommands` list. Now we allow exceptions
1356+ if they're listed under ignoreInlines in inlineCommands.
1357+ This should make it easier e.g. to include an `\hspace`
1358+ between two side-by-side raw LaTeX tables.
1359+ + Don't drop contents of `\hypertarget`.
1360+ + Handle spaces before `\cite` arguments.
1361+ + Allow newpage, clearpage, pagebreak in inline contexts as well as
1362+ block contexts (#3494).
1363+ + Treat `{{xxx}}` the same as `{xxx}` (#2115).
1364+ + Use `pMacroDefinition` in macro (for more direct parsing).
1365+ Note that this means that `macro` will now parse one
1366+ macro at a time, rather than parsing a whole group together.
1367+ + Fixed failures on \ref{}, \label{} with `+raw_tex`. Now these
1368+ commands are parsed as raw if `+raw_tex`; otherwise, their argument
1369+ is parsed as a bracketed string.
1370+ + Don't crash on empty `enumerate` environment (#3707).
1371+ + Handle escaped `&` inside table cell (#3708).
1372+ + Handle block structure inside table cells (#3709). `minipage` is no
1373+ longer required.
1374+ + Handle some width specifiers on table columns (#3709). Currently
1375+ we only handle the form `0.9\linewidth`. Anything else would have
1376+ to be converted to a percentage, using some kind arbitrary assumptions
1377+ about line widths.
1378+ + Make sure `\write18` is parsed as raw LaTeX. The change is in the
1379+ LaTeX reader's treatment of raw commands, but it also affects the
1380+ Markdown reader.
1381+ + Fixed regression with starred environment names (#3803).
1382+ + Handle optional args in raw `\titleformat` (#3804).
1383+ + Improved heuristic for raw block/inline. An unknown command at the
1384+ beginning of the line that could be either block or inline is
1385+ treated as block if we have a sequence of block commands followed by
1386+ a newline or a `\startXXX` command (which might start a raw ConTeXt
1387+ environment).
1388+ + Don't remove macro definitions from the output, even if
1389+ `Ext_latex_macros` is set, so that macros will be applied.
1390+ Since they're only applied to math in Markdown, removing the macros
1391+ can have bad effects. Even for math macros, keeping them should be
1392+ harmless.
1393+ + Removed `macro`. It is no longer necessary, since the
1394+ `rawLaTeXBlock` parser will parse macro definitions. This also avoids
1395+ the need for a separate `latexMacro` parser in the Markdown reader.
1396+ + Use `label` instead of `data-label` for label in caption (#3639).
1397+ + Fixed space after \figurename etc.
1398+ + Resolve references to section numbers.
1399+ + Fix `\let\a=0` case, with single character token.
1400+ + Allow `@` as a letter in control sequences. `@` is commonly used
1401+ in macros using `\makeatletter`. Ideally we'd make the tokenizer
1402+ sensitive to `\makeatletter` and `\makeatother`, but until then this
1403+ seems a good change.
1404+ + Track header numbers and correlate with labels.
1405+ + Allow `]` inside group in option brackets (#3857).
1406+ + lstinline with braces can be used (verb cannot be used with braces)
1407+ (Marc Schreiber, #3535).
1408+ + Fix keyval funtion: pandoc did not parse options in braces correctly
1409+ (Marc Schreiber, #3642).
1410+ + When parsing raw LaTeX commands, include trailing space (#1773).
1411+ Otherwise things like `\noindent foo` break and turn into
1412+ `\noindentfoo`. Affects `-f latex+raw_tex` and `-f markdown` (and other
1413+ formats that allow `raw_tex`).
1414+ + Don't treat "..." as Quoted (#3958). This caused quotes to be omitted in
1415+ `\texttt` contexts.
1416+ + Add tests for existing `\includegraphics` behaviour (Ben Firshman).
1417+ + Allow space before `=` in bracketd options (Ben Firshman).
1418+ + Be more forgiving in parsing command options. This was needed, for
1419+ example, to make some minted options work.
1420+ + Strip off quotes in `\include` filenames.
1421+
1422+ * Added `Text.Pandoc.CSV`, simple (unexported) CSV parser.
1423+
1424+ * `Text.Pandoc.PDF`:
1425+
1426+ + Got `--resource-path` working with PDF output (#852).
1427+ + Fetch images when generating PDF via context (#3380).
1428+ To do this, we create the temp directory as a subdirectory
1429+ of the working directory. Since context mk IV by default looks
1430+ for images in the parent directory, this works.
1431+ + Use `report` instead of `warn`, make it sensitive to verbosity settings.
1432+ + Use `fillMediaBag` and `extractMedia` to extract media to temp dir.
1433+ This reduces code duplication.
1434+ + `html2pdf`: use stdin instead of intermediate HTML file
1435+ + Removed useless `TEXINPUTS` stuff for `context2pdf`. mkiv context
1436+ doesn't use `TEXINPUTS`.
1437+
1438+ * `Text.Pandoc.Pretty`:
1439+
1440+ + Simplified definition of `realLength`.
1441+ + Don't error for blocks of size < 1. Instead, resize to 1 (see #1785).
1442+
1443+ * `Text.Pandoc.MIME`:
1444+
1445+ + Use `application/javascript` (not `application/x-javascript`).
1446+ + Added `emf` to mimeTypes with type `application/x-msmetafile` (#1713).
1447+
1448+ * `Text.Pandoc.ImageSize`:
1449+
1450+ + Improve SVG image size code (Marc Schreiber, #3580).
1451+ + Make `imageSize` recognize basic SVG dimensions (Mauro Bieg, #3462).
1452+
1453+ * Use `Control.Monad.State.Strict` throughout. This gives 20-30% speedup
1454+ and reduction of memory usage in most of the writers.
1455+
1456+ * Use `foldrWithKey` instead of deprecated `foldWithKey`.
1457+
1458+ * `Text.Pandoc.SelfContained`:
1459+
1460+ + Fixed problem with embedded fonts (#3629).
1461+ + Refactored getData from `getDataURI` in `SelfContained`.
1462+ + Don't use data URIs for script or style (#3423). Instead, just use
1463+ script or style tags with the content inside. The old method with
1464+ data URIs prevents certain optimizations outside pandoc. Exception:
1465+ data URIs are still used when a script contains `</script>` or a
1466+ style contains `</`.
1467+ + SelfContained: Handle URL inside material retrieved from a URL
1468+ (#3629). This can happen e.g. with an @import of a google web font.
1469+ (What is imported is some CSS which contains an url reference
1470+ to the font itself.) Also, allow unescaped pipe (|) in URL.
1471+ + Load resources from `data-src` (needed for lazy loading in
1472+ reveal.js slide shows).
1473+ + Handle `data-background-image` attribute on section (#3979).
1474+
1475+ * `Text.Pandoc.Parsing`:
1476+
1477+ + Added `indentWith` (Alexander Krotov, #3687).
1478+ + Added `stateCitations` to `ParserState`.
1479+ + Removed `stateChapters` from `ParserState`.
1480+ + In `ParserState`, make `stateNotes'` a Map, add `stateNoteRefs`.
1481+ + Added `gobbleSpaces` and `gobbleAtMostSpaces`.
1482+ + Adjusted type of `insertIncludedFile` so it can be used with token
1483+ parser.
1484+ + Replace old texmath macro stuff from Parsing. Use Macro from
1485+ Text.Pandoc.Readers.LaTeX.Types instead.
1486+ + Export `insertIncludedFile`.
1487+ + Added `HasLogMessages`, `logMessage`, `reportLogMessages` (#3447).
1488+ + Replace partial with total function (Albert Krewinkel).
1489+ + Introduce `HasIncludeFiles` type class (Albert Krewinkel). The
1490+ `insertIncludeFile` function is generalized to work with all parser
1491+ states which are instances of that class.
1492+ + Add `insertIncludedFilesF` which returns F blocks (Albert Krewinkel).
1493+ The `insertIncludeFiles` function was generalized and renamed
1494+ to `insertIncludedFiles'`; the specialized versions are based on that.
1495+ + `many1Till`: Check for the end condition before parsing (Herwig
1496+ Stuetz). By not checking for the end condition before the first
1497+ parse, the parser was applied too often, consuming too much of the
1498+ input. This only affects `many1Till p end` where `p` matches on a
1499+ prefix of `end`.
1500+ + Provide `parseFromString` (#3690). This is a verison of
1501+ `parseFromString` specialied to ParserState, which resets
1502+ `stateLastStrPos` at the end. This is almost always what we want.
1503+ This fixes a bug where `_hi_` wasn't treated as emphasis in the
1504+ following, because pandoc got confused about the position of the
1505+ last word: `- [o] _hi_`.
1506+ + Added `takeP`, `takeWhileP` for efficient parsing of `[Char]`.
1507+ + Fix `blanklines` documentation (Alexander Krotov, #3843).
1508+ + Give less misleading line information with `parseWithString`.
1509+ Previously positions would be reported past the end of the chunk.
1510+ We now reset the source position within the chunk and report
1511+ positions "in chunk."
1512+ + Add `anyLineNewline` (Alexander Krotov).
1513+ + Provide shared F monad functions for Markdown and Org readers
1514+ (Albert Krewinkel). The `F` monads used for delayed evaluation
1515+ of certain values in the Markdown and Org readers are based on a
1516+ shared data type capturing the common pattern of both `F` types.
1517+ + Add `returnF` (Alexander Krotov).
1518+ + Avoid parsing `Notes:**` as a bare URI (#3570). This avoids parsing
1519+ bare URIs that start with a scheme + colon + `*`, `_`, or `]`.
1520+ + Added `readerAbbreviations` to `ParserState`. Markdown reader
1521+ now consults this to determine what is an abbreviation.
1522+ + Combine grid table parsers (Albert Krewinkel, #3638). The grid table
1523+ parsers for markdown and rst was combined into one single
1524+ parser `gridTable`, slightly changing parsing behavior of both
1525+ parsers: (1) The markdown parser now compactifies block content
1526+ cell-wise: pure text blocks in cells are now treated as paragraphs
1527+ only if the cell contains multiple paragraphs, and as plain blocks
1528+ otherwise. Before, this was true only for single-column tables. (2)
1529+ The rst parser now accepts newlines and multiple blocks in header
1530+ cells.
1531+ + Generalize tableWith, gridTableWith (Albert Krewinkel).
1532+ The parsing functions `tableWith` and `gridTableWith` are generalized
1533+ to work with more parsers. The parser state only has to be an
1534+ instance of the `HasOptions` class instead of requiring a concrete
1535+ type. Block parsers are required to return blocks wrapped into a
1536+ monad, as this makes it possible to use parsers returning results
1537+ wrapped in `Future`s.
1538+
1539+ * `Text.Pandoc.Shared`:
1540+
1541+ + Simplify `toRomanNumeral` using guards (Alexander Krotov, #3445)
1542+ + `stringify`: handle Quoted better (#3958). Previously we were losing
1543+ the quotation marks in Quoted elements.
1544+
1545+ * `Text.Pandoc.Writers.Shared`:
1546+
1547+ + Export `metaToJSON'`, `addVariablesToJSON` (#3439).
1548+ This allows us to add the variables AFTER using the metadata
1549+ to generate a YAML header (in the Markdown writer).
1550+ + Added `unsmartify` (previously in RST writer).
1551+ Undo literal double curly quotes. Previously we left these.
1552+ + Generalize type of `metaToJSON` so it can take a Text. Previously a
1553+ String was needed as argument; now any ToJSON instance will do.
1554+ + Added `gridTable` (previously in Markdown writer).
1555+ + `gridTable`: Refactored to use widths in chars.
1556+ + `gridTable`: remove unnecessary extra space in cells.
1557+ + Fixed `addVariablesToJSON`. It was previously not allowing multiple
1558+ values to become lists.
1559+ + Pipe tables: impose minimum cell size (see #3526).
1560+
1561+
1562+ [default template changes]
1563+
1564+ * HTML templates (including EPUB and HTML slide show templates):
1565+
1566+ + Make default.html5 polyglot markup conformant (John Luke Bentley,
1567+ #3473). Polyglot markup is HTML5 that is also valid XHTML. See
1568+ <https://www.w3.org/TR/html-polyglot>. With this change, pandoc's
1569+ html5 writer creates HTML that is both valid HTML5 and valid XHTML.
1570+ + Regularized CSS in html/epub/html slide templates (#3485).
1571+ All templates now include `code{white-space: pre-wrap}`
1572+ and CSS for `q` if `--html-q-tags` is used. Previously some templates
1573+ had `pre` and others `pre-wrap`; the `q` styles were only sometimes
1574+ included.
1575+ + CSS for `.smallcaps`, (Mauro Bieg, #1592)
1576+ + `default.revealjs`: make `history` default to true.
1577+ + `default.revealjs`: use lazy loading (#2283).
1578+ + `default.revealjs`: add `mathjax` variable and some conditional code
1579+ to use the MathJaX plugin.
1580+ + `default.slidy` uses `https` instead of `http` (ickc, #3848).
1581+ + `default.dzslides`: Load Google Font using HTTPS by default
1582+ (Yoan Blanc).
1583+
1584+ * DocBook5 template: Use `lang` and `subtitle` variables (Jens Getreu,
1585+ #3855).
1586+
1587+ * LaTeX/Beamer template:
1588+
1589+ + Combine LaTeX/Beamer templates (Andrew Dunning, #3878).
1590+ `default.beamer` has been removed; beamer now uses the
1591+ `default.latex` template. Beamer-specific parts are conditional
1592+ on the `beamer` variable set by the writer. Note that
1593+ `pandoc -D beamer` will return this (combined) template.
1594+ + Use `xcolor` for `colorlinks` option (Andrew Dunning, #3877).
1595+ Beamer loads `xcolor` rather than `color`, and thus the
1596+ `dvipsnames` option doesn't take effect. This also provides a wider
1597+ range of colour selections with the `svgnames` option.
1598+ + Use starred versions of `xcolor` names (Andrew Dunning).
1599+ Prevents changes to documents defined using the `dvipsnames` list (e.g.
1600+ `Blue` gives a different result with svgnames enabled).
1601+ + Load `polyglossia` after header-includes (#3898). It needs to be
1602+ loaded as late as possible.
1603+ + Use `unicode-math` (Vaclav Haisman). Use `mathspec` with only
1604+ XeLaTeX on request.
1605+ + Don't load `fontspec` before `unicode-math` (over there).
1606+ The `unicode-math` package loads `fontspec` so explict loading of
1607+ `fontspec` before `unicode-math` is not necessary.
1608+ + Use `unicode-math` by default in default.latex template. mathspec will
1609+ be used in xelatex if the `mathspec` variable is set; otherwise
1610+ unicode-math will be used (Václav Haisman).
1611+ + Use `dvipsnames` options when `colorlinks` specified (otherwise
1612+ we get an error for `maroon`) (Thomas Hodgson).
1613+ + Added beamer `titlegraphic` and `logo` variables (Thomas Hodgson).
1614+ + Fix typo in fix for notes in tables (#2378, zeeMonkeez).
1615+ + Fix `hyperref` options clash (Andrew Dunning, #3847) Avoids an options
1616+ clash when loading a package (e.g. `tufte-latex`) that uses
1617+ `hyperref` settings different from those in the template.
1618+ + Add `natbiboptions` variable (#3768).
1619+ + Fix links inside captions in LaTeX output with links-as-notes
1620+ (Václav Haisman, #3651). Declare our redefined `\href` robust.
1621+ + Load `parskip` before `hyperref` (Václav Haisman, #3654).
1622+ + Allow setting Japanese fonts when using LuaLaTeX (Václav Haisman,
1623+ #3873). by using the `luatexja-fontspec` and `luatexja-preset`
1624+ packages. Use existing `CJKmainfont` and `CJKoptions` template
1625+ variables. Add `luatexjafontspecoptions` for `luatexja-fontspec`
1626+ and `luatexjapresetoptions` for `luatexja-preset`.
1627+ + Added `aspectratio` variable to beamer template (Václav Haisman,
1628+ #3723).
1629+ + Modified template.latex to fix XeLaTex being used with tables
1630+ (lwolfsonkin, #3661). Reordered `lang` variable handling to
1631+ immediately before `bidi`.
1632+
1633+ * ConTeXt template: Improved font handling: `simplefonts` is now
1634+ obsolete in ConTeXt (Pablo Rodríguez).
1635+
1636+
1637+ [documentation improvements]
1638+
1639+ * MANUAL.txt:
1640+
1641+ + Add URL for Prince HTML > PDF engine (Ian, #3919).
1642+ + Document that content above slide-level will be omitted in
1643+ slide shows. See #3460, #2265.
1644+ + Explain `--webtex` SVG url (Mauro Bieg, #3471)
1645+ + Small clarification in YAML metadata section.
1646+ + Document that html4 is technically XHTML 1.0 transitional.
1647+ + Remove refs to highlighting-kate (#3672).
1648+ + Document ibooks specific epub metadata.
1649+ + Clarify that mathml is used for ODT math.
1650+ + Mention limitations of Literate Haskell Support (#3410,
1651+ Joachim Breitner).
1652+ + Add documentation of limitations of grid tables (Stephen
1653+ McDowell, #3864).
1654+ + Clarify that meta-json contains transformed values (Jakob Voß,
1655+ #3491) Make clear that template variable `meta-json` does not
1656+ contain plain text values or JSON output format but field values
1657+ transformed to the selected output format.
1658+
1659+ * COPYRIGHT:
1660+
1661+ + Clarify that templates are dual-licensed.
1662+ + Clarify that pandoc-types is BSD3 licensed.
1663+ + List new files not written by jgm (Albert Krewinkel).
1664+ + Update dates in copyright notices (Albert Krewinkel). This follows
1665+ the suggestions given by the FSF for GPL licensed software.
1666+ <https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html>
1667+
1668+ * INSTALL.md:
1669+
1670+ + Improved instructions for tests with patterns.
1671+ + Put RPM-based distros on separate point (Mauro Bieg, #3449)
1672+
1673+ * CONTRIBUTING.md:
1674+
1675+ + Fixed typos (Wandmalfarbe, #3479).
1676+ + Add "ask on pandoc-discuss" (Mauro Bieg).
1677+
1678+ * Add lua filter documentation in `doc/lua-filters.md`. Note that the
1679+ end of this document is autogenerated from `data/pandoc.lua`
1680+ using `make doc/lua-filters.md`, which uses `tools/ldoc.ltp`
1681+ (Albert Krewinkel).
1682+
1683+ * Add `doc/filters.md`. This is the old scripting tutorial from
1684+ the website.
1685+
1686+
1687+ [build infrastructure improvements]
1688+
1689+ * Removed `data/templates` submodule. Templates are now a subtree
1690+ in `data/templates`. This removes the need to do `git submodule
1691+ update`.
1692+
1693+ * Renamed `tests` -> `test`.
1694+
1695+ * Remove `https` flag. Always build with HTTPS support.
1696+
1697+ * Use `file-embed` instead of `hsb2hs` to embed data files when
1698+ `embed_data_files` flag is set. `file-embed` gives us better dependency
1699+ tracking: if a data file changes, ghc/stack/cabal know to recompile
1700+ the Data module. This also removes `hsb2hs` as a build dependency.
1701+
1702+ * Add `custom-setup` stanza to pandoc, lowercase field names.
1703+
1704+ * Add `static` Cabal flag.
1705+
1706+ * Name change OSX -> MacOS. Add a -MacOS suffix to mac package rather
1707+ than -OSX. Changed local names from osx to macos.
1708+
1709+ * make_macos_package.sh - Use strip to reduce executable size.
1710+
1711+ * Strip executables in linux package.
1712+
1713+ * Remove cpphs build requirement -- it is no longer needed.
1714+
1715+ * Replaced `{deb,macos,windows}/stack.yaml` with `stack.pkg.yaml`.
1716+
1717+ * Added `linux` directory. This provides a Makefile and Dockerfile
1718+ sufficient for producing a linux executable. If Docker is installed,
1719+ this should suffice: `make setup && make build`. The binary will be
1720+ placed in `artifacts/`.
1721+
1722+ * `linux/control.in`: add `Replaces:`, so existing pandoc-citeproc and
1723+ pandoc-data packages will be uninstalled; this package provides
1724+ both (#3822). Add latex packages as 'suggested', update
1725+ description.
1726+
1727+ * Name change OSX -> macOS (ickc, #3869).
1728+
1729+ * Fix casing of Linux, UNIX, and Windows (ickc).
1730+
1731+ * `.travis.yml`: create a source dist and do cabal build and test there.
1732+ That way we catch errors due to files missing from the data
1733+ section of pandoc.cabal.
1734+
1735+ * Makefile:
1736+
1737+ + Split `make haddock` from `make full`.
1738+ + Add BRANCH variable for winpkg.
1739+ + Add `lint` target.
1740+ + Improve `make full`. Disable optimizations.
1741+ Build everything, inc. trypandoc and benchmarks. Use parallel build.
1742+ + Allow `make test` to take `TESTARGS`.
1743+
1744+ * Added new command tests (`Tests.Command`), using small text files
1745+ in `test/command/`. Any files added in this directory will be treated
1746+ as shell tests (see smart.md for an example). This makes it very easy
1747+ to add regression tests etc.
1748+
1749+ * Test fixes so we can find data files. In old tests & command tests,
1750+ we now set the environment variable `pandoc_datadir`. In lua tests,
1751+ we set the datadir explicitly.
1752+
1753+ * Refactored `compareOutput` in docx writer test.
1754+
1755+ * Consolidated some common functions in `Tests.Helper`.
1756+
1757+ * Small change to unbalanced bracket test to speed up test suite.
1758+
1759+ * Speed up Native writer quickcheck tests.
1760+
1761+ * Use tasty for tests rather than test-framework.
1762+
1763+ * Add simple Emacs mode to help with Pandoc templates editing.
1764+ (Václav Haisman, #3889). `tools/pandoc-template-mode.el`
1765+
1766+
11767pandoc (1.19.2)
21768
31769 * Use skylighting library instead of highlighting-kate for syntax