diff options
Diffstat (limited to 'changelog')
-rw-r--r-- | changelog | 3340 |
1 files changed, 3285 insertions, 55 deletions
@@ -1,26 +1,3252 @@ -pandoc (1.19.2.4) +pandoc (2.1.2) - * Add dependencies on texmath and skylighting to the executable. - This is needed for dependency version numbers to be available, - with Cabal > 2. + * Markdown reader: + + + Fix parsing bug with nested fenced divs (#4281). Previously we allowed + "nonindent spaces" before the opening and closing `:::`, but this + interfered with list parsing, so now we require the fences to be flush with + the margin of the containing block. + + * Commonmark reader: + + + `raw_html` is now on by default. It can be disabled explicitly + using `-f commonmark-raw_html`. + + * Org reader (Albert Krewinkel): + + + Move citation tests to separate module. + + Allow changing emphasis syntax (#4378). The characters allowed before + and after emphasis can be configured via `#+pandoc-emphasis-pre` and + `#+pandoc-emphasis-post`, respectively. This allows to change which + strings are recognized as emphasized text on a per-document or even + per-paragraph basis. Example: + + #+pandoc-emphasis-pre: "-\t ('\"{" + #+pandoc-emphasis-post: "-\t\n .,:!?;'\")}[" + + * LaTeX reader: + + + Fixed comments inside citations (#4374). + + Fix regression in package options including underscore (#4424). + + Make `--trace` work. + + Fixed parsing of `tabular*` environment (#4279). + + * RST reader: + + + Fix regression in parsing of headers with trailing space (#4280). + + * Muse reader (Alexander Krotov): + + + Enable `<literal>` tags even if amuse extension is enabled. + Amusewiki disables <literal> tags for security reasons. + If user wants similar behavior in pandoc, RawBlocks and RawInlines + can be removed or replaced with filters. + + Remove space prefix from `<literal>` tag contents. + + Do not consume whitespace while looking for closing end tag. + + Convert alphabetical list markers to decimal in round-trip test. + Alphabetical lists are an addition of Text::Amuse. + They are not present in Emacs Muse and can be ambiguous + when list starts with "i.", "c." etc. + + Allow `<quote>` and other tags to be indented. + + Allow single colon in definition list term. + + Fix parsing of verse in lists. + + Improved parsing efficiency. Avoid `parseFromString`. + Lists are parsed in linear instead of exponential time now. + + Replace ParserState with MuseState. + + Prioritize lists with roman numerals over alphabetical lists. + This is to make sure "i." starts a roman numbered list, + instead of a list with letter "i" (followed by "j", "k", ..."). + + Fix directive parsing. + + Parse definition lists with multiple descriptions. + + Parse next list item before parsing more item contents. + + Fixed a bug: headers did not terminate lists. + + Move indentation parsing from `definitionListItem` to `definitionList`. + + Paragraph indentation does not indicate nested quote. + Muse allows indentation to indicate quotation or alignment, + but only on the top level, not within a <quote> or list. + + Require that block tags are on separate lines. + Text::Amuse already explicitly requires it anyway. + + Fix matching of closing inline tags. + + Various internal changes. + + Fix parsing of nested definition lists. + + Require only one space for nested definition list indentation. + + Do not remove trailing whitespace from `<code>`. + + Fix parsing of trailing whitespace. Newline after whitespace now + results in softbreak instead of space. + + * Docx reader (Jesse Rosenthal, except where noted): + + + Handle nested sdt tags (#4415). + + Don't look up dependant run styles if `+styles` is enabled. + + Move pandoc inline styling inside custom-style span. + + Read custom styles (#1843). This will read all paragraph and + character classes as divs and spans, respectively. Dependent styles + will still be resolved, but will be wrapped with appropriate style + tags. It is controlled by the `+styles` extension (`-f docx+styles`). + This can be used in conjunction with the `custom-style` feature in the + docx writer for a pandoc-docx editing workflow. Users can convert from + an input docx, reading the custom-styles, and then use that same input + docx file as a reference-doc for producing an output docx file. Styles + will be maintained across the conversion, even if pandoc doesn't + understand them. + + Small change to Fields hyperlink parser. Previously, unquoted string + required a space at the end of the line (and consumed it). Now we + either take a space (and don't consume it), or end of input. + + Pick table width from the longest row or header (Francesco Occhipinti, + #4360). + + * Muse writer (Alexander Krotov): + + + Change verse markup: `> ` instead of `<verse>` tag. + + Remove empty strings during inline normalization. + + Don't indent nested definition lists. + + Use unicode quotes for quoted text. + + Write image width specified in percent in Text::Amuse mode. + + Don't wrap displayMath into `<verse>`. + + Escape nonbreaking space (`~~`). + + Join code with different attributes during normalization. + + Indent lists inside Div. + + Support definitions with multiple descriptions. + + * Powerpoint writer (Jesse Rosenthal): + + + Use table styles This will use the default table style in the + reference-doc file. As a result they will be easier when using + in a template, and match the color scheme. + + Remove empty slides. Because of the way that slides were split, these + could be accidentally produced by comments after images. When animations + are added, there will be a way to add an empty slide with either + incremental lists or pauses. + + Implement syntax highlighting. Note that background colors can't + be implemented in PowerPoint, so highlighting styles that require + these will be incomplete. + + New test framework for pptx. We now compare the output of the + Powerpoint writer with files that we know to (a) not be corrupt, + and (b) to show the desired output behavior (details below). + + Add `notesMaster` to `presentation.xml` if necessary. + + Ignore links and (end)notes in speaker notes. + + Output speaker notes. + + Read speaker note templates conditionally. If there are speaker + notes in the presentation, we read in the notesMasters templates + from the reference pptx file. + + Fix deletion track changes (#4303, Jesse Rosenthal). + + * Markdown writer: properly escape @ to avoid capture as citation + (#4366). + + * LaTeX writer: + + + Put hypertarget inside figure environment (#4388). + This works around a problem with the endfloat package and + makes pandoc's output compatible with it. + + Fix image height with percentage (#4389). This previously caused + the image to be resized to a percentage of textwidth, rather than + textheight. + + * ConTeXt writer (Henri Menke): + + + New section syntax and support `--section-divs` (#2609). + `\section[my-header]{My Header}` -> + `\section[title={My Header},reference={my-header}]`. + The ConTeXt writer now supports the `--section-divs` option to + write sections in the fenced style, with `\startsection` and + `\stopsection`. + + xtables: correct wrong usage of caption (Henri Menke). + + * Docx writer: + + + Fix image resizing with multiple images (#3930, Andrew Pritchard). + + Use new golden framework (Jesse Rosenthal). + + Make more deterministic to facilitate testing (Jesse Rosenthal). + - `getUniqueId` now calls to the state to get an incremented digit, + instead of calling to P.uniqueHash. + - we always start the PRNG in mkNumbering/mkAbstractNum with the same + seed (1848), so our randoms should be the same each time. + + Fix ids in comment writing (Jesse Rosenthal). Comments from + `--track-changes=all` were producing corrupt docx, because the + writer was trying to get id from the `(ID,_,_)` field of + the attributes, and ignoring the "id" entry in the key-value pairs. We + now check both. + + * Ms writer: Added papersize variable. + + * TEI writer: + + + Use `height` instead of `depth` for images (#4331). + + Ensure that id prefix is always used. + + Don't emit `role` attribute; that was a leftover from the + Docbook writer. + + Use 'xml:id', not 'id' attribute (#4371). + + * AsciiDoc writer: + + + Do not output implicit heading IDs (#4363, Alexander + Krotov). Convert to `asciidoc-auto_identifiers` for old behaviour. + + * RST writer: + + + Remove `blockToRST'` moving its logic into `fixBlocks` + (Francesco Occhipinti). + + Insert comment between lists and quotes (#4248, Francesco Occchipinti). + + * RST template: remove definition of 'math' role as raw. + This used to be needed prior to v 0.8 of docutils, but + now math support is built-in. + + * Slides: Use divs to set incremental/non-incremental (#4381, + Jesse Rosenthal). The old method (list inside blockquote) still + works, but we are encouraging the use of divs with class + `incremental` or `nonincremental`. + + * Text.Pandoc.ImageSize: + + + Make image size detection for PDFs more robust (#4322). + + Determine image size for PDFs (#4322). + + EMF Image size support (#4375, Andrew Pritchard). + + * Text.Pandoc.Extensions: + + + Add `Ext_styles` (Jesse Rosenthal, API change). This will be used in + the docx reader (defaulting to off) to read pargraph and character + styles not understood by pandoc (as divs and spans, respectively). + + Made `Ext_raw_html` default for `commonmark` format. + + * Text.Pandoc.Parsing: + + + Export `manyUntil` (Alexander Krotov, API change). + + Export improved `sepBy1` (Alexander Krotov). + + Export list marker parsers: `upperRoman`, `lowerRoman`, + `decimal`, `lowerAlpha`, `upperAlpha` (Alexander Krotov, API change). + + * Tests/Lua: fix tests on windows (Albert Krewinkel). -pandoc (1.19.2.3) + * Lua: register script name in global variable (#4393). The name of the Lua + script which is executed is made available in the global Lua variable + `PANDOC_SCRIPT_FILE`, both for Lua filters and custom writers. + + * Tests: Abstract powerpoint tests out to OOXML tests (Jesse Rosenthal). + There is very little pptx-specific in these tests, so we abstract out + the basic testing function so it can be used for docx as well. This + should allow us to catch some errors in the docx writer that slipped + by the roundtrip testing. + + * Lua filters: store constructors in registry (Albert Krewinkel). Lua + functions used to construct AST element values are stored in the Lua + registry for quicker access. Getting a value from the registry is much + faster than getting a global value (partly to idiosyncrasies of hslua); + this change results in a considerable performance boost. + + * Documentation: + + + `doc/org.md` Add draft of Org-mode documentation (Albert Krewinkel). + + `doc/lua-filters.md`: document global vars set for filters + (Albert Krewinkel). + + INSTALL.md: mention Stack version. (#4343, Adam Brandizzi). + + MANUAL: add documentation on custom styles (Jesse Rosenthal). + + MANUAL.txt: Document incremental and nonincremental divs (Jesse + Rosenthal). Blockquoted lists are still described, but fenced divs are + presented in preference. + + MANUAL.txt: document header and footer variables (newmana). + + MANUAL.txt: self-contained implies standalone (#4304, Daniel Lublin). + + CONTRIBUTING.md: label was renamed. (#4310, Alexander Brandizzi). + + * Require tagsoup 0.14.3 (#4282), fixing HTML tokenization bug. + + * Use latest texmath. + + * Use latest pandoc-citeproc. + + * Allow exceptions 0.9. + + * Require aeson-pretty 0.8.5 (#4394). + + * Bump blaze-markup, blaze-html lower bounds to 0.8, 0.9 (#4334). + + * Update tagsoup to 0.14.6 (Alexander Krotov, #4282). + + * Removed ghc-prof-options. As of cabal 1.24, sensible defaults are used. + + * Update default.nix to current nixpkgs-unstable for hslua-0.9.5 (#4348, + jarlg). + + +pandoc (2.1.1) + + * Markdown reader: + + + Don't coalesce adjacent raw LaTeX blocks if they are separated by a + blank line. See lierdakil/pandoc-crossref#160. + + Improved `inlinesInBalancedBrackets` (#4272, jgm/pandoc-citeproc#315). + The change both improves performance and fixes a regression whereby + normal citations inside inline notes and figure captions were not + parsed correctly. + + * RST reader: + + + Better handling for headers with an anchor (#4240). Instead of creating a + Div containing the header, we put the id directly on the header. + This way header promotion will work properly. + + Add aligned environment when needed in math (#4254). `rst2latex.py` + uses an `align*` environment for math in `.. math::` blocks, so this + math may contain line breaks. If it does, we put the math in an + `aligned` environment to simulate `rst2latex.py`'s behavior. + + * HTML reader: + + + Fix col width parsing for percentages < 10% (#4262, n3fariox). + + * LaTeX reader: + + + Advance source position at end of stream. + + Pass through macro defs in `rawLaTeXBlock` even if the `latex_macros` + extension is set (#4246). This reverts to earlier behavior and is + probably safer on the whole, since some macros only modify things in + included packages, which pandoc's macro expansion can't modify. + + Fixed pos calculation in tokenizing escaped space. + + Allow macro definitions inside macros (#4253). Previously we went into + an infinite loop with + ``` + \newcommand{\noop}[1]{#1} + \noop{\newcommand{\foo}[1]{#1}} + \foo{hi} + ``` + + Fix inconsistent column widths (#4238). This fixes a bug whereby column + widths for the body were different from widths for the header in some + tables. + + * Docx reader (Jesse Rosenthal): + + + Parse hyperlinks in `instrText` tags (#3389, #4266). This was a form of + hyperlink found in older versions of word. The changes introduced for + this, though, create a framework for parsing further fields in MS Word + (see the spec, ECMA-376-1:2016, §17.16.5, for more on these fields). + We introduce a new module, `Text.Pandoc.Readers.Docx.Fields` which + contains a simple parsec parser. At the moment, only simple hyperlink + fields are accepted, but that can be extended in the future. + + * Muse reader (Alexander Krotov): + + + Parse `~~` as non-breaking space in Text::Amuse mode. + + Refactor list parsing. + + * Powerpoint writer (Jesse Rosenthal): + + + Change reference to `notesSlide` to `endNotesSlide`. + + Move image sizing into `picProps`. + + Improve table placement. + + Make our own `_rels/.rels` file. + + Import reference-doc images properly. + + Move `Presentation.hs` out of `PandocMonad`. + + Refactor into separate modules. T.P.W.Powerpoint.Presentation + defines the Presentation datatype and goes Pandoc->Presentation; + T.P.W.Pandoc.Output goes Presentation->Archive. + Text.Pandoc.Writers.Powerpoint a thin wrapper around the two modules. + + Avoid overlapping blocks in column output. + + Position images correctly in two-column layout. + + Make content shape retrieval environment-aware. + + Improve image handling. We now determine image and caption placement + by getting the dimensions of the content box in a given layout. + This allows for images to be correctly sized and positioned in a + different template. Note that images without captions and headers are + no longer full-screened. We can't do this dependably in different + layouts, because we don't know where the header is (it could be to + the side of the content, for example). + + Read presentation size from reference file. Our presentation size is + now dependent on the reference/template file we use. + + Handle (sub)headers above slidelevel correctly. Above the slidelevel, + subheaders will be printed in bold and given a bit of extra space + before them. Note that at the moment, no distinction is made between + levels of headers above the slide header, though that can be changed. + + Check for required files. Since we now import from reference/dist + file by glob, we need to make sure that we're getting the files we + need to make a non-corrupt Powerpoint. This performs that check. + + Improve templating using `--reference-doc`. Templating should work + much more reliably now. + + Include Notes slide in TOC. + + Set notes slide header to slide-level. + + Add table of contents. This is triggered by the `--toc` flag. Note + that in a long slide deck this risks overrunning the text box. The user + can address this by setting `--toc-depth=1`. + + Set notes slide number correctly. + + Clean up adding metadata slide. We want to count the slide numbers + correctly if it's in there. + + Add anchor links. For anchor-type links (`[foo](#bar)`) we produce + an anchor link. In powerpoint these are links to slides, so we keep + track of a map relating anchors to the slides they occur on. + + Make the slide number available to the blocks. For anchors, + block-processing functions need to know what slide number + they're in. We make the `envCurSlideId` available to blocks. + + Move `curSlideId` to environment. + + Allow setting `toc-title` in metadata. + + Link notes to endnotes slide. + + * Markdown writer: + + + Fix cell width calculation (#4265). Previously we could get + ever-lengthening cell widths when a table was run repeatedly through + `pandoc -f markdown -t markdown`. + + * LaTeX writer: - * Add CPP to Setup.hs so it works with Cabal >= 2 and < 2. + + Escape `&` in lstinline (Robert Schütz). + + * ConTeXt writer: + + + Use xtables instead of Tables (#4223, Henri Menke). + Default to xtables for context output. Natural Tables are used + if the new `ntb` extension is set. + + * HTML writer: + + + Fixed footnote backlinks with `--id-prefix` (#4235). + + * `Text.Pandoc.Extensions`: Added `Ext_ntb` constructor (API change, + Henri Menke). + + * `Text.Pandoc.ImageSize`: add derived `Eq` instance to `Dimension` + (Jesse Rosenthal, API change). + + * Lua filters (Albert Krewinkel): + + + Make `PANDOC_READER_OPTIONS` available. + The options which were used to read the document are made available to + Lua filters via the `PANDOC_READER_OPTIONS` global. + + Add lua module `pandoc.utils.run_json_filter`, which runs a JSON filter + on a Pandoc document. + + Refactor filter-handling code into `Text.Pandoc.Filter.JSON`, + `Text.Pandoc.Filter.Lua`, and `Text.Pandoc.Filter.Path`. + + Improve error messages. Provide more context about the task + which caused an error. + + * data/pandoc.lua (Albert Krewinkel): + + + Accept singleton inline as a list. Every constructor which accepts a + list of inlines now also accepts a single inline element for + convenience. + + Accept single block as singleton list. Every constructor which accepts + a list of blocks now also accepts a single block element for + convenience. Furthermore, strings are accepted as shorthand for + `{pandoc.Str "text"}` in constructors. + + Add attr, listAttributes accessors. Elements with + attributes got an additional `attr` accessor. Attributes were + accessible only via the `identifier`, `classes`, and `attributes`, + which was in conflict with the documentation, which indirectly states + that such elements have the an `attr` property. + + Drop `_VERSION`. Having a `_VERSION` became superfluous, as this + module is closely tied to the pandoc version, which is available via + `PANDOC_VERSION`. + + Fix access to Attr components. Accessing an Attr value (e.g., + ` Attr().classes`) was broken; the more common case of accessing it via + an Inline or Block element was unaffected by this. + + * Move `metaValueToInlines` to from Docx writer to + `Text.Pandoc.Writers.Shared`, so it can be used by other writers + (Jesse Rosenthal). + + * MANUAL.txt: + + + Clarify otherlangs in LaTeX (#4072). + + Clarify `latex_macros` extension. + + Recommend use of `raw_attribute` extension in header includes (#4253). + + * Allow latest QuickCheck, tasty, criterion. + + * Remove custom prelude and ghc 7.8 support. + + * Reduce compiler noise (exact paths for compiled modules). + +pandoc (2.1) + + * Allow filters and lua filters to be interspersed (#4196). Previously + we ran all lua filters before JSON filters. Now we run filters in + the order they are presented on the command line, whether lua or JSON. + There are two incompatible API changes: The type of `applyFilters` + has changed, and `applyLuaFilters` has been removed. `Filter` is + also now exported. + + * Use latest skylighting and omit the `missingIncludes` check, fixing + a major performance regression in earlier releases of the 2.x series + (#4226). Behavior change: If you use a custom syntax definition that + refers to a syntax you haven't loaded, pandoc will now complain when + it is highlighting the text, rather than doing a check at the start. + This change dramatically speeds up invocations of pandoc on short + inputs. + + * Text.Pandoc.Class: make `FileTree` opaque (don't export + `FileTree` constructor). This forces users to interact with it using + `insertInFileTree` and `getFileInfo`, which normalize file names. + + * Markdown reader: + + + Rewrite `inlinesInBalancedBrackets`. The rewrite is much more + direct, avoiding `parseFromString`. And it performs significantly + better; unfortunately, parsing time still increases exponentially + (see #1735). + + Avoid parsing raw tex unless `\` + letter seen. This seems to + help with the performance problem, #4216. + + * LaTeX reader: Simplified a check for raw tex command. + + * Muse reader (Alexander Krotov): + + + Enable round trip test (#4107). + + Automatically translate `#cover` into `#cover-image`. + Amusewiki uses #cover directive to specify cover image. + + * Docx reader (Jesse Rosenthal): + + + Allow for insertion/deletion of paragraphs (#3927). + If the paragraph has a deleted or inserted paragraph break (depending + on the track-changes setting) we hold onto it until the next + paragraph. This takes care of accept and reject. For this we introduce + a new state which holds the ils from the previous para if necessary. + For `--track-changes=all`, we add an empty span with class + `paragraph-insertion`/`paragraph-deletion` at the end of the paragraph + prior to the break to be inserted or deleted. + + Remove unused anchors (#3679). Docx produces a lot of anchors with + nothing pointing to them---we now remove these to produce cleaner + output. Note that this has to occur at the end of the process + because it has to follow link/anchor rewriting. + + Read multiple children of `w:sdtContents`. + + Combine adjacent anchors. There isn't any reason to have numerous + anchors in the same place, since we can't maintain docx's + non-nesting overlapping. So we reduce to a single anchor. + + Improved tests. + + * Muse writer (Alexander Krotov): don't escape URIs from AST + + * Docx writer: + + + Removed redundant subtitle in title (Sebastian Talmon). + + `firstRow` table definition compatibility for Word 2016 (Sebastian + Talmon). Word 2016 seems to use a default value of "1" for table + headers, if there is no firstRow definition (although a default + value of 0 is documented), so all tables get the first Row formatted + as header. Setting the parameter to 0 if the table has no header + row fixes this for Word 2016 + + Fix custom styles with spaces in the name (#3290). + + * Powerpoint writer (Jesse Rosenthal): + + + Ignore Notes div for parity with other slide outputs. + + Set default slidelevel correctly. We had previously defaulted to + slideLevel 2. Now we use the correct behavior of defaulting to the + highest level header followed by content. We change an expected test + result to match this behavior. + + Split blocks correctly for linked images. + + Combine adjacent runs. + + Make inline code inherit code size. Previously (a) the code size + wasn't set when we force size, and (b) the properties was set from + the default, instead of inheriting. + + Simplify `replaceNamedChildren` function. + + Allow linked images. The following markdown: + `[![Image Title](image.jpg)](http://www.example.com)` + will now produce a linked image in the resulting PowerPoint file. + + Fix error with empty table cell. We require an empty `<a:p>` tag, + even if the cell contains no paragraphs---otherwise PowerPoint + complains of corruption. + + Implement two-column slides. This uses the columns/column div + format described in the pandoc manual. At the moment, only two + columns (half the screen each) are allowed. Custom widths are not + supported. + + Added more tests. + + * OpenDocument/ODT writers: improved rendering of formulas (#4170, oltolm). + + * Lua filters (Albert Krewinkel): + + + `data/pandoc.lua`: drop 'pandoc-api-version' from Pandoc objects + + The current pandoc-types version is made available to Lua programs in + the global `PANDOC_API_VERSION`. It contains the version as a list of + numbers. + + The pandoc version available as a global `PANDOC_VERSION` (a list + of numbers). + + `data/pandoc.lua`: make `Attr` an `AstElement`. + + `data/pandoc.lua`: make all types subtypes of `AstElement`. + `Pandoc`, `Meta`, and `Citation` were just plain functions and did + not set a metatable on the returned value, which made it difficult + to amend objects of these types with new behavior. They are now + subtypes of AstElement, meaning that all their objects can gain + new features when a method is added to the behavior object + (e.g., `pandoc.Pandoc.behavior`). + + `data/pandoc.lua`: split type and behavior tables. Clearly distinguish + between a type and the behavioral properties of an instance of that + type. The behavior of a type (and all its subtypes) can now be + amended by adding methods to that types `behavior` object, without + exposing the type objects internals. E.g.: + ```lua + pandoc.Inline.behavior.frob = function () print'42' end + local str = pandoc.Str'hello' + str.frob() -- outputs '42' + ``` + + `data/pandoc.lua`: fix Element inheritance. Extending all elements + of a given type (e.g., all inline elements) was difficult, as the + table used to lookup unknown methods would be reset every time a + new element of that type was created, preventing recursive property + lookup. This is was changed in that all methods and attributes of + supertypes are now available to their subtypes. + + `data/pandoc.lua`: fix attribute names of Citation (#4222). The + fields were named like the Haskell fields, not like the documented, + shorter version. The names are changed to match the documentation + and Citations are given a shared metatable to enable simple + extensibility. + + `data/pandoc.lua`: drop function `pandoc.global_filter`. + + Bump `hslua` version to 0.9.5. This version fixes a bug that made it + difficult to handle failures while getting lists or a Map from Lua. + A bug in pandoc, which made it necessary to always pass a tag when + using MetaList or MetaBlock, is fixed as a result. Using the pandoc + module's constructor functions for these values is now optional + (if still recommended). + + Stop exporting `pushPandocModule` (API change). The introduction + of `runPandocLua` renders direct use of this function obsolete. + + Update generation of module docs for lua filters. + + `Lua.Module.Utils`: make stringify work on `MetaValues` (John + MacFarlane). I'm sure this was intended in the first place, + but currently only `Meta` is supported. + + * Improve benchmarks. + + + Set the default extensions properly. + + Improve benchmark argument parsing. You can now say + `make bench BENCHARGS="markdown latex reader"` and both the + markdown and latex readers will be benchmarked. + + * MANUAL.txt simplify and add more structure (Mauro Bieg). + + * Generate README.md from template and MANUAL.txt. + `make README.md` will generate the README.md after changes + to MANUAL.txt have been made. + + * Update copyright notices to include 2018 (Albert Krewinkel). + +pandoc (2.0.6) + + * Added `jats` as an input format. + + + Add Text.Pandoc.Readers.JATS, exporting `readJATS` (API + change) (Hamish Mackenzie). + + Improved citation handling in JATS reader. JATS citations + are now converted to pandoc citations, and JATS ref-lists + are converted into a `references` field in metadata, suitable + for use with pandoc-citeproc. Thus a JATS article with embedded + bibliographic information can be processed with pandoc and + pandoc-citeproc to produce a formatted bibliography. + + * Allow `--list-extensions` to take an optional FORMAT argument. + This lists the extensions set by default for the selected FORMAT. + The extensions are now alphabetized, and the `+` or `-` + indicating the default setting comes before, rather than after, + the extension. + + * Markdown reader: + + + Preserve original whitespace between blocks. + + Recognize `\placeformula` as context. + + Be pickier about table captions. A caption starts with a `:` which + can't be followed by punctuation. Otherwise we can falsely interpret + the start of a fenced div, or even a table header line like + `:--:|:--:`, as a caption. + + Always use four space rule for example lists. It would be awkward + to indent example list contents to the first non-space character after + the label, since example list labels are often long. Thanks to + Bernhard Fisseni for the suggestion. + + Improve raw tex parsing. Note that the Markdown reader is also + affected by the `latex_macros` extension changes described below + under the LaTeX reader. + + * LaTeX reader: + + + `latex_macros` extension changes (#4179). Don't pass through macro + definitions themselves when `latex_macros` is set. The macros + have already been applied. If `latex_macros` is enabled, then + `rawLaTeXBlock` in Text.Pandoc.Readers.LaTeX will succeed in parsing + a macro definition, and will update pandoc's internal macro map + accordingly, but the empty string will be returned. + + Export `tokenize`, `untokenize` (API change). + + Use `applyMacros` in `rawLaTeXBlock`, `rawLaTeXInline`. + + Refactored `inlineCommand`. + + Fix bug in tokenizer. Material following `^^` was + dropped if it wasn't a character escape. This only affected + invalid LaTeX, so we didn't see it in the wild, but it appeared + in a QuickCheck test failure. + + Fix regression in LateX tokenization (#4159). This mainly affects the + Markdown reader when parsing raw LaTeX with escaped spaces. + + Add tests of LaTeX tokenizer. + + Support `\foreignlanguage` from babel. + + Be more tolerant of `&` character (#4208). This allows us to parse + unknown tabular environments as raw LaTeX. + + * Muse reader (Alexander Krotov): + + + Parse anchors immediately after headings as IDs. + + Require that note references does not start with 0. + + Parse empty comments correctly. + + * Org reader (Albert Krewinkel): + + + Fix asterisks-related parsing error (#4180). + + Support minlevel option for includes (#4154). The level of headers + in included files can be shifted to a higher level by specifying a + minimum header level via the `:minlevel` parameter. E.g. + `#+include: "tour.org" :minlevel 1` will shift the headers in + tour.org such that the topmost headers become level 1 headers. + + Break-up org reader test file into multiple modules. + + * OPML reader: + + + Enable raw HTML and other extensions by default for notes + (#4164). This fixes a regression in 2.0. Note that extensions can + now be individually disabled, e.g. `-f opml-smart-raw_html`. + + * RST reader: + + + Allow empty list items (#4193). + + More accurate parsing of references (#4156). Previously we erroneously + included the enclosing backticks in a reference ID (#4156). This + change also disables interpretation of syntax inside references, as + in docutils. So, there is no emphasis in `` `my *link*`_ ``. + + * Docx reader: + + + Continue lists after interruption (#4025, Jesse Rosenthal). + Docx expects that lists will continue where they left off after an + interruption and introduces a new id if a list is starting again. So + we keep track of the state of lists and use them to define a "start" + attribute, if necessary. + + Add tests for structured document tags unwrapping (Jesse Rosenthal). + + Preprocess Document body to unwrap `w:sdt` elements (Jesse Rosenthal, + #4190). + + * Plain writer: + + + Don't linkify table of contents. + + * RST writer: + + + Fix anchors for headers (#4188). We were missing an `_`. + + * PowerPoint writer (Jesse Rosenthal): + + + Treat lists inside BlockQuotes as lists. We don't yet produce + incremental lists in PowerPoint, but we should at least treat lists + inside BlockQuotes as lists, for compatibility with other slide formats. + + Add ability to force size. This replaces the more specific + `blockQuote runProp`, which only affected the size of blockquotes. We + can use this for notes, etc. + + Implement notes. This currently prints all notes on a final slide. + Note that at the moment, there is a danger of text overflowing the + note slide, since there is no logic for adding further slides. + + Implement basic definition list functionality to PowerPoint writer. + + Don't look for default template file for Powerpoint (#4181). + + Add pptx to isTextFormat list. This is used to check standalone + and not writing to the terminal. + + Obey slide level option (Jesse Rosenthal). + + Introduce tests. + + * Docx writer: + + + Ensure that `distArchive` is the one that comes with pandoc + (#4182). Previously a `reference.docx` in `~/.pandoc` (or the user data + dir) would be used instead, and this could cause problems because a + user-modified docx sometimes lacks vital sections that we count + on the `distArchive` to supply. + + * Org writer: + + + Do not wrap "-" to avoid accidental bullet lists (Alexander Krotov). + + Don't allow fn refs to wrap to beginning of line (#4171, with help from + Alexander Krotov). Otherwise they can be interpreted as footnote + definitions. + + * Muse writer (Alexander Krotov): + + + Don't wrap note references to the next line (#4172). + + * HTML writer: + + + Use br elements in line blocks instead of relying on CSS + (#4162). HTML-based templates have had the custom CSS for + `div.line-block` removed. Those maintaining custom templates will want + to remove this too. We still enclose line blocks in a div with class + `line-block`. + + * LaTeX writer: + + + Use `\renewcommand` for `\textlatin` with babel (#4161). + This avoids a clash with a deprecated `\textlatin` command defined + in Babel. + + Allow fragile=singleslide attribute in beamer slides (#4169). + + Use `\endhead` after `\toprule` in headerless tables (#4207). + + * FB2 writer: + + + Add cover image specified by `cover-image` meta (Alexander Krotov, + #4195). + + * JATS writer (Hamish Mackenzie): + + + Support writing `<fig>` and `<table-wrap>` elements + with `<title>` and `<caption>` inside them by using Divs with class set + to one of `fig`, `table-wrap` or `caption` (Hamish Mackenzie). The + title is included as a Heading so the constraint on where Heading can + occur is also relaxed. + + Leave out empty alt attributes on links. + + Deduplicate image mime type code. + + Make `<p>` optional in `<td>` and `<th>` (#4178). + + Self closing tags for empty xref (#4187). + + Improve support for code language. + + * Custom writer: + + + Use init file to setup Lua interpreter (Albert Krewinkel). + The same init file (`data/init`) that is used to setup the Lua + interpreter for Lua filters is also used to setup the interpreter of + custom writers.lua. + + Define instances for newtype wrapper (Albert Krewinkel). The custom + writer used its own `ToLuaStack` instance definitions, which made + it difficult to share code with Lua filters, as this could result + in conflicting instances. A `Stringify` wrapper is introduced to + avoid this problem. + + Added tests for custom writer. + + Fixed definition lists and tables in `data/sample.lua`. + + * Fixed regression: when target is PDF, writer extensions were being + ignored. So, for example, `pandoc -t latex-smart -o file.pdf` + did not work properly. + + * Lua modules (Albert Krewinkel): + + + Add `pandoc.utils` module, to hold utility functions. + + Create a Haskell module Text.Pandoc.Lua.Module.Pandoc to + define the `pandoc` lua module. + + Make a Haskell module for each Lua module. Move definitions for the + `pandoc.mediabag` modules to a separate Haskell module. + + Move `sha1` from the main `pandoc` module to `pandoc.utils`. + + Add function `pandoc.utils.hierarchicalize` (convert list of + Pandoc blocks into (hierarchical) list of Elements). + + Add function `pandoc.utils.normalize_date` (parses a date and + converts it (if possible) to "YYYY-MM-DD" format). + + Add function `pandoc.utils.to_roman_numeral` (allows conversion + of numbers below 4000 into roman numerals). + + Add function `pandoc.utils.stringify` (converts any AST element + to a string with formatting removed). + + `data/init.lua`: load `pandoc.utils` by default + + Turn pipe, read into full Haskell functions. The `pipe` and `read` + utility functions are converted from hybrid lua/haskell functions + into full Haskell functions. This avoids the need for intermediate + `_pipe`/`_read` helper functions, which have dropped. + + pandoc.lua: re-add missing MetaMap function. This was a bug + introduced in version 2.0.4. + + * Text.Pandoc.Class: Add `insertInFileTree` [API change]. This gives + a pure way to insert an ersatz file into a `FileTree`. In addition, we + normalize paths both on insertion and on lookup. + + * Text.Pandoc.Shared: export `blocksToInlines'` (API change, Maura Bieg). + + * Text.Pandoc.MIME: Add opus to MIME type table as audio/ogg (#4198). + + * Text.Pandoc.Extensions: Alphabetical order constructors for + `Extension`. This makes them appear in order in `--list-extensions`. + + * Allow lenient decoding of latex error logs, which are not always + properly UTF8-encoded (#4200). + + * Update latex template to work with recent versions of beamer. + The old template produced numbered sections with some recent + versions of beamer. Thanks to Thomas Hodgson. + + * Updated reference.docx (#4175). Instead of just "Hello, world", the + document now contains exemplars of most of the styles that have an + effect on pandoc documents. This makes it easier to see the effect + of style changes. + + * Removed `default.theme` data file (#4096). It is no longer needed now + that we have `--print-highlight-style`. + + * Added `stack.lts9.yaml` for building with lts 9 and ghc 8.0.2. + We still need this for the alpine static linux build, since + we don't have ghc 8.2.2 for that yet. + + * Removed `stack.pkg.yaml`. We only really need `stack.yaml`; we + can put flag settings for pandoc-citeproc there. + + * Makefile: Add 'trypandoc' and 'pandoc-templates' targets to + make releases easier. + + * MANUAL.txt: + + + Add note on what formats have `+smart` by default. + + Use native syntax for custom-style (#4174, Mauro Bieg). + + Introduce dedicated Extensions section, since some extensions + affect formats other than markdown (Mauro Bieg, #4204). + + Clarify default html output for `--section-divs` (Richard Edwards). + + * filters.md: say that Text.Pandoc.JSON comes form pandoc-types. + Closes jgm/pandoc-website#16. + + * epub.md: Delete removed `-S` option from command (#4151, Georger Araújo). + +pandoc (2.0.5) + + * Fix a bug in 2.0.4, whereby pandoc could not read the theme files + generated with `--print-highlight-style` (#4133). Improve JSON + serialization of styles. + + * Fix CSS issues involving line numbers (#4128). + Highlighted code blocks are now enclosed in a div with class `sourceCode`. + Highlighting CSS no longer sets a generic color for pre and code; we only + set these for class `sourceCode`. + + * `--pdf-engine-opt`: fix bug where option order was reversed (#4137). + + * Add PowerPoint (pptx) writer (Jesse Rosenthal). + It works following the standard Pandoc conventions for making other + sorts of slides. Caveats: + + + Syntax highlighting is not yet implemented. (This is difficult + because there are no character classes in Powerpoint.) + + Footnotes and Definition lists are not yet implemented. (Notes will + usually take the form of a final slide. + + Image placement and auto-resizing has a few glitches. + + Reference powerpoint files don't work dependably from the command + line. This will be implemented, but at the moment users are advised + to change themes from within Powerpoint. + + * Create shared Text.Pandoc.Writers.OOXML module (Jesse Rosenthal). + This is for functions used by both Powerpoint and Docx writers. + + * Add default pptx data for Powerpoint writer (Jesse Rosenthal). + + * Add `empty_paragraphs` extension. + + + Deprecate `--strip-empty-paragraphs` option. Instead we now + use an `empty_paragraphs` extension that can be enabled on + the reader or writer. By default, disabled. + + Add `Ext_empty_paragraphs` constructor to `Extension`. + + Revert "Docx reader: don't strip out empty paragraphs." + This reverts commit d6c58eb836f033a48955796de4d9ffb3b30e297b. + + Implement `empty_paragraphs` extension in docx reader and writer, + opendocument writer, HTML reader and writer. + + Add tests for `empty_paragraphs` extension. + + * Markdown reader: + + + Don't parse native div as table caption (#4119). + + Improved computation of column widths in pipe tables. + Pipe tables with lines longer than the text width (as set + by `--columns`) are now scaled to text width, with the relative + widths of columns determined by the ratios between the + header lines. Previously we computed column widths using + the ratio of header line lengths to column width, so that + tables with narrow header lines were extremely thin, which + was very rarely the desired result. + + * LaTeX reader: fix `\` before newline (#4134). This should be a space, + as long as it's not followed by a blank line. This has been fixed at the + tokenizer level. + + * Muse reader (Alexander Krotov): + + + Add test for `#disable-tables` directive in Emacs mode. + + Don't allow emphasis to be preceded by letter. + + Add underline support in Emacs Muse mode.. + + Support multiline directives in Amusewiki mode + + * Man writer: omit internal links (#4136). That is, just print the link + text without the URL. + + * Markdown reader: accept processing instructions as raw HTML (#4125). + + * Lua filters (Albert Krewinkel): + + + Use script to initialize the interpreter. The file `init.lua` is + used to initialize the Lua interpreter which is used in Lua filters. + This gives users the option to require libraries which they want to + use in all of their filters, and to extend default modules. + + Fix package loading for Lua 5.1. The list of package searchers is + named `package.loaders` in Lua 5.1 and LuaJIT, and `package.searchers` + in Lua 5.2 and later. + + Refactor lua module handling. The integration with Lua's package/module + system is improved: A pandoc-specific package searcher is prepended to + the searchers in `package.searchers`. The modules `pandoc` and + `pandoc.mediabag` can now be loaded via `require`. + + Bump lower bound of hslua. The release hslua 0.9.3 contains a new + function which makes using Haskell functions as package loaders much + easier. + + * reveal.js template: add title-slide identifier to title slide (#4120). + This allows it to be styled more easily. + + * LaTeX template: Added support for `pagestyle` variable (#4135, + Thomas Hodgson) + + * Add `-threaded` to ghc-options for executable (#4130, fixes a build + error on linux). + + +pandoc (2.0.4) + + * Add `--print-highlight-style` option. This generates a JSON version + of a highlighting style, which can be saved as a `.theme` file, modified, + and used with `--highlight-style` (#4106, #4096). + + * Add `--strip-empty-paragraphs` option. This works for any input format. + It is primarily intended for use with docx and odt documents where + empty paragraphs have been used for inter-paragraph spaces. + + * Support `--webtex` for `gfm` output. + + * Recognize `.muse` file extension. + + * Support beamer `\alert` in LaTeX reader. Closes #4091. + + * Docx reader: don't strip out empty paragraphs (#2252). + Users who have a conversion pipeline from docx may want to consider adding + `--strip-empty-paragraphs` to the command line. + + * Org reader (Albert Krewinkel): Allow empty list items (#4090). + + * Muse reader (Alexander Krotov): + + + Parse markup in definition list terms. + + Allow definition to end with EOF. + + Make code blocks round trip. + + Drop common space prefix from list items. + + Add partial round trip test. + + Don't interpret XML entities. + + Remove `nested`. + + Parse `~~` as non-breaking space in Emacs mode. + + Correctly remove indentation from notes. Exactly one space is + required and considered to be part of the marker. + + Allow list items to be empty. + + Add ordered list test. + + Add more multiline definition tests. + + Don't allow blockquotes within lists. + + Fix reading of multiline definitions. + + Add inline `<literal>` support. + + Concatenate inlines of the same type + + * Docx writer: allow empty paragraphs (#2252). + + * CommonMark/gfm writer: + + + Use raw html for native divs/spans (#4113). This allows a pandoc + markdown native div or span to be rendered in gfm using raw html tags. + + Implement `raw_html` and `raw_tex` extensions. Note that `raw_html` + is enabled by default for `gfm`, while `raw_tex` is disabled by default. + + * Muse writer (Alexander Krotov): + + + Test that inline math conversion result is normalized. + Without normalization this test produced + `<em>a</em><em>b</em><em>c</em>`. + + Improve inline list normalization and move to writer. + + Escape hash symbol. + + Escape `----` to avoid accidental horizontal rules. + + Escape only `</code>` inside code tag. + + Additional `<verbatim>` is not needed as `<code>` is verbatim already. + + * LaTeX writer: + + + Allow specifying just width or height for image size. + Previously both needed to be specified (unless the image was + being resized to be smaller than its original size). + If height but not width is specified, we now set width to + textwidth. If width but not height is specified, we now set + height to textheight. Since we have `keepaspectratio`, this + yields the desired result. + + Escape `~` and `_` in code with `--listings` (#4111). + + * HTML writer: export `tagWithAttributes`. This is a helper allowing + other writers to create single HTML tags. + + * Let papersizes `a0`, `a1`, `a2`, ... be case-insensitive by + converting the case as needed in LaTeX and ConTeXt writers. + + * Change `fixDisplayMath` from `Text.Pandoc.Writers.Shared` + so that it no longer produces empty `Para`'s as an artifact. + + * `Text.Pandoc.Shared.blocksToInlines`: rewrote using builder. + This gives us automatic normalization, so we don't get + for example two consecutive Spaces. + + * Include default CSS for 'underline' class in HTML-based templates. + + * revealjs template: add `tex2jax` configuration for the + math plugin. With the next release of reveal.js, this will + fix the problem of `$`s outside of math contexts being + interpreted as math delimiters (#4027). + + * `pandoc.lua` module for use in lua filters (Albert Krewinkel): + + + Add basic lua List module (#4099, #4081). The List module is + automatically loaded, but not assigned to a global variable. It can be + included in filters by calling `List = require 'List'`. Lists of blocks, + lists of inlines, and lists of classes are now given `List` as a metatable, + making working with them more convenient. E.g., it is now possible to + concatenate lists of inlines using Lua's concatenation operator `..` + (requires at least one of the operants to have `List` as a metatable): + + function Emph (emph) + local s = {pandoc.Space(), pandoc.Str 'emphasized'} + return pandoc.Span(emph.content .. s) + end + + The `List` metatable is assigned to the tables which get passed to + the constructors `MetaBlocks`, `MetaInline`, and `MetaList`. This + enables the use of the resulting objects as lists. + + `Lua/StackInstances`: push Pandoc and Meta via constructor. + Pandoc and Meta elements are now pushed by calling the respective + constructor functions of the pandoc Lua module. This makes serialization + consistent with the way blocks and inlines are pushed to lua and allows + to use List methods with the `blocks` value. + + Add documentation for pandoc.List in `lua-filters.md`. + + * Use latest tagsoup. This fixes a bug in parsing HTML tags with + `&` (but not a valid entity) following them (#4094, #4088). + + * Use skylighting 0.4.4.1, fixing the color of unmarked code text + when `numberLines` is used (#4103). + + * Make `normalizeDate` more forgiving (Mauro Bieg, #4101), not + requiring a leading 0 on single-digit days. + + * Fix `--help` output for `--highlight-style` to include `FILE` (Mauro + Bieg, #4095). + + * Clearer deprecation warning for `--latexmathml, --asciimathml, -m`. + Previously we only mentioned `--latexmathml`, even if `-m` was + used. + + * Changelog: fix description of lua filters in 2.0 release + (Albert Krewinkel). Lua filters were initially run *after* conventional + (JSON) filters. However, this was changed later to make it easier to deal + with files in the mediabag. The changelog is updated to describe that + feature of the 2.0 release correctly. + + * Change Generic JSON instances to TemplateHaskell (Jasper Van der Jeugt, + #4085). This reduces compile time and memory usage significantly. + + * `lua-filters.md`: Added tikz filter example. + + * Create alternative zip file for macOS binaries. + + * Create alternative zip file for Windows binaries. + + * Update INSTALL.md since we now provide zips for binaries. + + * Relax `http-types` dependency (Justus Sagemüller, #4084). + + * Add `epub.md`, `getting-started.md` to docs. These used to live in + the website repo. + + * Add `packages` target to Makefile. + + * Bump bounds for binary, http-types, tasty-hunit + +pandoc (2.0.3) + + * Lua filters: preload text module (Albert Krewinkel, #4077). + The `text` module is preloaded in lua. The module contains some UTF-8 + aware string functions, implemented in Haskell. The module is loaded on + request only, e.g.: + + text = require 'text' + function Str (s) + s.text = text.upper(s.text) + return s + end + + * Allow table-like access to attributes in lua filters (Albert Krewinkel, + #4071). Attribute lists are represented as associative lists in Lua. Pure + associative lists are awkward to work with. A metatable is attached to + attribute lists, allowing to access and use the associative list as if + the attributes were stored in as normal key-value pair in table. + Note that this changes the way `pairs` works on attribute lists. Instead + of producing integer keys and two-element tables, the resulting iterator + function now returns the key and value of those pairs. Use `ipairs` to + get the old behavior. Warning: the new iteration mechanism only works if + pandoc has been compiled with Lua 5.2 or later (current default: 5.3). + + * Text.Pandoc.Parsing.uri: allow `&` and `=` as word characters (#4068). + This fixes a bug where pandoc would stop parsing a URI with an + empty attribute: for example, `&a=&b=` wolud stop at `a`. + (The uri parser tries to guess which punctuation characters + are part of the URI and which might be punctuation after it.) + + * Introduce `HasSyntaxExtensions` typeclass (Alexander Krotov, #4074). + + + Added new `HasSyntaxExtensions` typeclass for `ReaderOptions` and + `WriterOptions`. + + Reimplemented `isEnabled` function from `Options.hs` to accept both + `ReaderOptions` and `WriterOptions`. + + Replaced `enabled` from `CommonMark.hs` with new `isEnabled`. + + * Add `amuse` extension (Alexander Krotov) to enable Amuse wiki + behavior for `muse`. New `Ext_amuse` constructor for + `Extension`. Note: this is switched on by default; for + Emacs behavior, use `muse-amuse`. + + * Muse reader (Alexander Krotov): + + + Count only one space as part of list item marker. + + Produce SoftBreaks on newlines. Now wrapping can be preserved + with `--wrap=preserve`. + + Add Text::Amuse footnote extensions. Footnote end is indicated by + indentation, so footnotes can be placed anywhere in the text, + not just at the end of it. + + Accept Emacs Muse definition lists when `-amuse`. + Emacs Muse does not require indentation. + + * HTML reader: + + + Ensure we don't produce level 0 headers (#4076), even for chapter + sections in epubs. This causes problems because writers aren't set + up to expect these. + + Allow spaces after `\(` and before `\)` with `tex_math_single_backslash`. + Previously `\( \frac{1}{a} < \frac{1}{b} \)` was not parsed as math in + `markdown` or `html` `+tex_math_single_backslash`. + + Parse div with class `line-block` as LineBlock. + + Don't fail with block-level content in figcaption (Mauro Bieg, #4183). + + * MANUAL: clarify that math extensions work with HTML. + Clarify that `tex_math_dollars` and `tex_math_single_backslash` + will work with HTML as well as Markdown. + + * Creole reader: Fix performance issue for longer lists (Sascha Wilde, + #4067). + + * RST reader: better support for 'container' directive (#4066). + Create a div, incorporate name attribute and classes. + + * LaTeX reader: + + + Support column specs like `*{2}{r}` (#4056). This is equivalent to + `rr`. We now expand it like a macro. + + Allow optional args for parbox (#4056). + + Allow optional arguments on `\footnote` (#4062). + + * EPUB writer: Fixed path for cover image (#4069). It was previously + `media/media/imagename`, and should have been `media/imagename`. + + * Markdown writer: fix bug with doubled footnotes in grid tables + (#4061). + + * LaTeX template: include natbib/biblatex after polyglossia (#4073). + Otherwise we seem to get an error; biblatex wants polyglossia + language to be defined. + + * Added examples to lua filters documentation. + + +pandoc (2.0.2) + + * Deprecated ancient HTML math methods: `--latexmathml`, `--gladtex`, + `--mimetex`, `--jsmath`. + + * Fixed URIs in `data/jats.csl`. They were being rendered twice, + leading to invalid XML in default JATS output with pandoc-citeproc. + + * `lua-filters.md`: use real-world man page filter as example. + + * Add lua filter functions `walk_inline` and `walk_block` + in the pandoc module, to apply filters inside particular + inline and block elements. + + * Refactored some code from `Text.Pandoc.Lua.PandocModule` + into new internal module `Text.Pandoc.Lua.Filter`. + + * Markdown reader: + + + Allow fenced code blocks to be indented 1-3 spaces (#4011). + This brings our handling of them into alignment with CommonMark's. + + Fix YAML metadata with "chomp" (`|-`). Previously if a + YAML block under `|-` contained a blank line, pandoc would + not parse it as metadata. + + * Removed `etc.` from abbreviations file. Often `etc.` ends a + sentence, and we want the period to be treated as a + sentence-ending period. + + * Fix regression with `--metadata` (#4054). Values specified with + `--metadata` should replace a metadata value set in the document + itself, rather than creating a list including a new value. + + * EPUB writer: + + + Fix EPUB OCF structure. #3720 had been improperly implemented. + + Fix modified paths for raw HTML tags (src, poster, etc.) + (#4050, #4055). This had not been updated for the new EPUB + container layout, with a separate text/ subdirectory. + + Fix image paths with empty `--epub-subdirectory`. + + * Miscellaneous code cleanup (Alexander Krotov). + + * Use pandoc-types 1.17.3, which adds `Walkable` instances + for `[Block] Block` and `[Inline] Inline`. + + * Remove obsolete `stack.full.yaml` (#4052). + + * Change to using pandoc-citeproc 0.12.1 in binary packages. + + * Consolidate math output method documentation (#4049, Mauro Bieg). + + * `MANUAL.txt`: fix header level of "Extension: emoji" (Albert Krewinkel). + + * Use lua filter to generate man page from `MANUAL.txt`, replacing old + Haskell filters. This is easier and faster. + + * Improved `INSTALL.md`. + + * Update commands to extract deb archive on Linux (#4043, Salim B). + + +pandoc (2.0.1.1) + + * Improved fix to #3989 (parsing of HTML tags containing + `>` in an attribute or comment). The previous fix (in 2.0.1) only + worked in certain cases. + + * FB2 writer (Alexander Krotov): + + + Add `unrecognised` genre to `<title-info>` + (Alexander Krotov). XML schema requires at least one genre. + + Remove `<annotation>` from `<body>`. + + * CommonMark writer: fix strikethrough for `gfm` (#4038). + + * Use texmath 0.10, which adds support for a wider range of + symbols and fixes default column alignments in MathML + and OMML. + + * Highlighting fixes, using skylighting 0.4.3.2: + + + Fix invalid CSS. + + Support `lineAnchors` (or `line-anchors`) in HTML code blocks. + + Ensure that code lines don't get duplicate identifiers (#4031). + The line identifiers are built using the code block's identifier + as a prefix. If the code block has null identifier, we use + `cb1`, `cb2`, etc. + + * Added a few abbreviations to `data/abbreviations`, + and sorted the list (#3984, Wandmalfarbe). + + * Improved support for columns in HTML writer (#4028). + + + Remove `width` attribute from the `div`. + + Remove space between `<div class="column">` elements, + since this prevents columns whose widths sum to 100% + (the space takes up space). + + Move as much as possible of the CSS to the template. + + Ensure that all the HTML-based templates (including epub) + contain the CSS for columns. + + Columns default to 50% width unless they are given a width + attribute. So if you want two equal-width columns, you + can use a div with class `column` and no `width` attribute. + + * SelfContained: use `base64` for css links with media attribute (#4026). + This fixes `--self-contained` with S5. + + * Improve `pandoc-template-mode.el` (Vaclav Haisman). + + * Issue INFO, not WARNING, when a .sty file cannot be + read in LaTeX reader. It is normally not an issue requiring + a fix from the user if .sty files are not found. + + * INSTALL.md: MacOS instructions needed xar -f (adam234). + + * MANUAL.txt: + + + Clarify that --setext-headers doesn't affect gfm output (#4035). + + Clarify what is needed to open and close a div in `fenced_divs` + (#4039, Tristano Ajmone). + + Removed reference to `default.beamer` in docs (#4024). + Also added mention of other templates affecting PDF output + with different settings. + +pandoc (2.0.1) + + * Fixed regression in parsing of HTML comments in markdown and other + non-HTML formats (`Text.Pandoc.Readers.HTML.htmlTag`) (#4019). + The parser stopped at the first `>` character, even if it wasn't + the end of the comment. + + * Creole reader (Sascha Wilde): + + + Fix some minor typos and formatting. + + Add additional test on nowiki-block after para. + + Fix lists with trailing white space. + + * LaTeX reader: handle `%` comment right after command. + For example, `\emph%`. + + * Markdown reader: make sure fenced div closers work in lists. + Previously the following failed: + + ::: {.class} + 1. one + 2. two + ::: + + and you needed a blank line before the closing `:::`. + + * Make `fenced_divs` affect the Markdown writer. If `fenced_divs` is + enabled, Divs will be rendered as fenced divs. + + * LaTeX/Beamer writer: support "blocks" inside columns and other Divs + (#4016). + + * HTML Writer: consistently use dashed class-names (Mauro Bieg, #3556). + Note: this change may require some changes in CSS rules. + `footnoteRef` has become `footnote-ref`, `titleslide` has + become `title-slide`, and `footnoteBack` has become `footnote-back`. + + * JATS writer: Properly pass through author metadata (#4020). + + * FB2 writer (Alexander Krotov): + + + Write blocks outside of `<p>` in definitions. + + Make bullet lists consistent with ordered lists, repeating + the marker for the outer list rather than indenting sublists, + since indentation does not work in readers. + + Add new style FB2 tests. + + * `Text.Pandoc.ImageSize`: Add `Millimeter` constructor to `Dimension` + (#4012) [API change]. Now sizes given in 'mm' are no longer converted + to 'cm'. + + * Revise documentation of small caps syntax (Andrew Dunning, #4013). + + * Fix broken reference links in manual (Andrew Dunning, #4014) + + * Fixed example of slide columns structure in changelog (#4015). + Also documented this feature in MANUAL.txt. + + +pandoc (2.0.0.1) + + * EPUB writer: + + + Fixed filepaths for nonstandard epub-subdirectory values. + + Ensure that epub2 is recognized as a non-text format, + so that a template is used. + + Don't include "prefix" attribute for ibooks for epub2. + It doesn't validate. + + Fix stylesheet paths; previously we had an incorrect + stylesheet path for the cover page and nav page. + + * LaTeX reader: + + + Insert space when needed in macro expansion (#4007). + Sometimes we need to insert a space after a control sequence + to prevent it merging with a following letter. + + Allow unbraced arguments for macros (#4007). + + Allow body of macro definition to be unbraced (#4007). + + * Linux package build: ensure that pandoc-citeproc is statically linked. + + * trypandoc: add native, ms. + +pandoc (2.0) + + [new features] -pandoc (1.19.2.2) + * 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. - * Fix build with GHC 8.2.1 (#3876, Peter Simons). Setup.hs does not - compile with Cabal 2.x, so we require an earlier version via - setup-depends. The following packages need newer versions with - GHC 8.2.1 and had their constraints relaxed accordingly: - executable-path, process, syb, and time. + * 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`. -pandoc (1.19.2.1) + * 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. + + * New input format `creole` (Creole 1.0) (#3994, Sascha Wilde). + + * New syntax for Divs, with `fenced_divs` extension enabled by + default (#168). This gives an attractive, plain-text way to create + containers for block-level content. + + * 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: + + :::::::::::::: {.columns} + ::: {.column width="40%"} + contents... + ::: + ::: {.column width="60%"} + 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 before + 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). Default 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; 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 requires 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 like + + #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 simplify 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`, + and `--latex-engine-opt` to `--pdf-engine-opt`. + + * 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 no 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). + + * Underlined elements are now treated consistently by readers + (#2270, hftf); they are always put in a Span with class `underline`. + This allows the user to treat them differently from other emphasis, + using a filter. Docx, Org, Textile, Txt2Tags, and HTML readers + have been changed. + + * 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 <span class="comment-start" id="0" author="Jesse Rosenthal" + date="2016-05-09T16:13:00Z">I left a comment.</span>some text to + have a comment <span class="comment-end" id="0"></span>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 `<div class="line-block">` 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`. + + Handle `\lettrine` (Mauro Bieg). + + * 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. + + Where previously you used + `writeRST def (readMarkdown def "[foo](url)")`, now you + would use + `runPure $ readMarkdown def (pack "[foo](url)") >>= writeRST def`. + + * 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. + The module also exports some utility functions for parsing options + and running filters. + + * 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` constructor for `Extension`. + + * Add `Ext_fenced_divs` constructor for `Extension'. + + * Add `Ext_four_space_rule` constructor in `Extension`. + + * Add `Ext_gfm_auto_identifiers` constructor for `Extension`. + + * Add `Monoid` instance for `Extensions`. + + * 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`. + + * Add `Text.Pandoc.Readers.Creole`, exporting `readCreole`. + + * 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`. + + Add `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. + + Remove `err`. + + Remove `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. + + Add `underlineSpan`. + + * `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 `<div>` 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 `<source>` rather than `<code>` (among others). + + Add display attribute on `<math>` tags (#3452). This allows display + math to be rendered properly. + + Remove newline before `</ref>` (#2652). + + Don't softbreak lines inside list items (#3531). + + * Org writer: + + + Reduce to two spaces after bullets (#3417, Albert Krewinkel). + + Add unit tests (Alexander Krotov). + + Stop using raw HTML to wrap divs (Albert Krewinkel, #3771). + + Do not strip `#` from Org anchor links (Alexander Krotov). + + * CommonMark writer: + + + Avoid excess blank lines at end of output. + + Prefer pipe tables to HTML tables even if it means losing relative + column width information (#3734). + + Support table, strikethrough extensions, when enabled (as with gfm). + Note that we bypass the commonmark writer from cmark and construct our + own pipe tables, with better results. + + Properly support `--wrap=none`. + + Use smallcaps class for `SmallCaps` (#1592). + + Omit "fig:" prefix in image titles. This is used internally to + indicate internal figures. + + * RST writer: + + + Properly handle table captions. + + Don't wrap lines in in definition list terms. Wrapping is not allowed. + + Implemented `+/-smart` and improved escaping with `+smart`. + + Add empty comments when needed to avoid including a blockquote + in the indented content of a preceding block (#3675). + + Improve grid table output, fix bug with empty rows (#3516). + Uses the new `gridTable` in Writers.Shared, which is here + improved to better handle 0-width cells. + + Remove space at beginning/end of RST code span (#3496). Otherwise + we get invalid RST. There seems to be no way to escape the space. + + Add header anchors when header has non-standard id (#3937). + + Correctly handle inline code containing backticks, using a `:literal:` + role (#3974). + + Don't backslash-escape word-internal punctuation (#3978). + + * Markdown writer: + + + Don't include variables in metadata blocks. Previously variables set + on the command line were included in e.g. YAML metadata, contrary to + documentation and intentions. + + Improved escaping with `+smart`. + + Fixed grid tables embedded in grid tables (#2834). + + Use span with class 'smallcaps' for SmallCaps, instead of a style + attribute as before (#1592). + + Escape initial `%` in a paragraph if the `pandoc_title_blocks` + extension is enabled (#3454). Otherwise in a document starting with + a literal `%` the first line is wrongly interpreted as a title. + + Fixed false ordered lists in YAML metadata (#3492, #1685). Now we + properly escape things that would otherwise start ordered lists, + such as + + --- + title: 1. inline + ... + + Better handling of tables with empty columns (#3337). We now + calculate the number of columns based on the longest row (or the + length of aligns or widths). + + Escape unordered list markers at beginning of paragraph (#3497), to + avoid false interpretation as a list. + + Escape `|` appropriately. + + Ensure space before list at top level (#3487). + + Avoid spurious blanklines at end of document after tables and list, + for example. + + Fixed bugs in simple/multiline list output (#3384). + Previously we got overlong lists with `--wrap=none`. This is fixed. + Previously a multiline list could become a simple list (and would + always become one with `--wrap=none`). + + Don't emit a simple table if `simple_tables` disabled (#3529). + + Case-insensitive reference links (David A Roberts, #3616). + Ensure that we do not generate reference links whose labels differ only + by case. Also allow implicit reference links when the link + text and label are identical up to case. + + Put space before reference link definitions (Mauro Bieg, #3630). + + Better escaping for links (David A. Roberts, #3619). Previously the + Markdown writer would sometimes create links where there were none + in the source. This is now avoided by selectively escaping bracket + characters when they occur in a place where a link might be created. + + Added missing `\n` (David A. Roberts, #3647). + + Fixed duplicated reference links with `--reference-links` + and `--reference-location=section` (#3674). Also ensure that there + are no empty link references `[]`. + + Avoid inline surround-marking with empty content (#3715). + E.g. we don't want `<strong></strong>` to become `****`. + Similarly for emphasis, super/subscript, strikeout. + + Don't allow soft break in header (#3736). + + Make sure `plain`, `markdown_github`, etc. work for raw. + Previously only `markdown` worked. Note: currently a raw block labeled + `markdown_github` will be printed for any `markdown` format. + + Ensure that `+` and `-` are escaped properly so they don't cause + spurious lists (#3773). Previously they were only + if succeeded by a space, not if they were at end of line. + + Use pipe tables if `raw_html` disabled and `pipe_tables` enabled, + even if the table has relative width information (#3734). + + Markdown writer: don't crash on `Str ""`. + + Make `Span` with null attribute transparent. That is, we don't use + brackets or `<span>` tags to mark spans when there are no attributes; + we simply output the contents. + + Escape pipe characters when `pipe_tables` enabled (#3887). + + Better escaping of `<` and `>`. If `all_symbols_escapable` is set, + we backslash escape these. Otherwise we use entities as before. + + When writing plain, don't use ` ` to separate list and indented + code. There's no need for it in this context, since this isn't to be + interpreted using Markdown rules. + + Preserve classes in JS obfuscated links (Timm Albers, #2989). + HTML links containing classes originally now preserve them when using + JavaScript email obfuscation. + + Render `SmallCaps` as a native span when `native_spans` are enabled. + + Always write attributes with `bracketed_spans` (d-dorazio). + + * Man writer: + + + Fix handling of nested font commands (#3568). Previously pandoc emitted + incorrect markup for bold + italic, for example, or bold + code. + + Avoid error for definition lists with no definitions (#3832). + + * DocBook writer: + + + Fix internal links with `writerIdentifierPrefix opt` + (#3397, Mauro Bieg). + + * Docx writer: + + + Don't include bookmarks on headers unless non-null id (#3476). + + Support 9 levels of headers (#1642). + + Allow 9 list levels (#3519). + + Don't take `distArchive` from datadir (#3322). The docx writer takes + components from the distribution's version of `reference.docx` when it + can't find them in a user's custom `reference.docx`. Previously, we + allowed a `reference.docx` in the data directory (e.g. `~/.pandoc`) + to be used as the distribution's reference.docx. This led to a + bizarre situation where pandoc would produce a good docx using + `--template ~/.pandoc/ref.docx`, but if `ref.docx` were moved to + `~/.pandoc/reference.docx`, it would then produce a corrupted docx. + + Fixed handling of soft hyphen (0173) (#3691). + + Better handling of keywords (#3719). + + Cleaner code for handling dir and style attributes for `Div`. + + Use `Set` for dynamic styles to avoid duplicates. + + Removed redundant element from data/docx/word/numbering.xml. + The elements we need are generated when the document is + compiled; this didn't do anything. + + Activate `evenAndOddHeaders` from reference docx (#3901, + Augustín Martín Barbero). + + * ODT/OpenDocument writer: + + + Calculate aspect ratio for percentage-sized images (Mauro Bieg, #3239). + + Use more widely available bullet characters (#1400). The old + characters weren't available in some font sets. These seem to work + well on Windows and Linux versions of LibreOffice. + + Wider labels for lists (#2421). This avoids overly narrow labels for + ordered lists with `()` delimiters. However, arguably it creates + overly wide labels for bullets. Also, lists now start flush with + the margin, rather than indented. + + Fixed dropped elements in some ordered lists (#2434). + + * FB2 writer: + + + Don't render `RawBlock` as code. + + Don't fail with an error on interior headers (e.g. in list) (#3750). + Instead, omit them with an INFO message. + + Add support for "lang" metadata (Alexander Krotov, #3625). + + Format `LineBlock` as poem (Alexander Krotov). Previously writer + produced one paragraph with `<empty-line/>` elements, which are not + allowed inside `<p>` according to FB2 schema. + + Replace `concatMap` with `cMap` (Alexander Krotov). + + Write FB2 lists without nesting blocks inside `<p>` (Alexander + Krotov, #4004) + + * HTML writer: + + + Make sure `html4`, `html5` formats work for raw blocks/inlines. + + Render raw inline environments when `--mathjax` used (#3816). + We previously did this only with raw blocks, on the assumption + that math environments would always be raw blocks. This has changed + since we now parse them as inline environments. + + Ensure we don't get two style attributes for width and height. + + Report when not rendering raw inline/block. + + Issue warning if no title specified and template used (#3473). + + Info message if `lang` is unspecified (#3486). + + Removed unused parameter in `dimensionsToAttributeList`. + + Avoid two class attributes when adding `uri` class (#3716). + + Fix internal links with `writerIdentifierPrefix opt` (#3397, Mauro + Bieg). + + Use revealjs's math plugin for mathjax (#3743). This is a thin + wrapper around mathjax that makes math look better on revealjs. + + Slidy: use h1 for all slides, even if they were originally + level 2 headers (#3566). Otherwise the built-in table of contents + in Slidy breaks. + + * LaTeX writer: + + + Don't render LaTeX images with data: URIs (#3636). Note that + `--extract-media` can be used when the input contains data: URIs. + + Make highlighted code blocks work in footnotes (Timm Albers). + + Don't use figure inside table cell (#3836). + + Use proper code for list enumerators (#3891). This should fix problems + with lists that don't use arabic numerals. + + Always add hypertarget when there's a non-empty identifier (#2719). + Previously the hypertargets were only added when there was actually + a link to that identifier. + + Use `%` after hypertarget before code block. + + Add `\leavevmode` before hypertarget at start of paragraph (#2704, + fixes formatting problems in beamer citations). + + Don't use `lstinline` in \item[..] (#645). If you do, the contents + of item disappear or are misplaced. Use `\texttt` instead. + + Fix problem with escaping in `lstinline` (#1629). Previously the + LaTeX writer created invalid LaTeX when `--listings` was specified and + a code span occured inside emphasis or another construction. + + Fix error with line breaks after empty content (#2874). LaTeX + requires something before a line break, so we insert a `~` if no + printable content has yet been emitted. + + Use BCP47 parser. + + Fixed detection of otherlangs (#3770). We weren't recursing into + inline contexts. + + Handle language in inline code with `--listings` (#3422). + + Write euro symbol directly in LaTeX (Andrew Dunning, #3801). + The textcomp package allows pdfLaTeX to parse `€` directly, making the + `\euro` command unneeded. + + Fixed footnotes in table captions (#2378). Note that if the table has + a first page header and a continuation page header, the notes will + appear only on the first occurrence of the header. + + In `writeBeamer` output, allow hyperlinks to frames (#3220). + Previously you could link to a header above or below slide level but + not *to* slide level. This commit changes that. Hypertargets are + inserted inside frame titles; technically the reference is to just + after the title, but in normal use (where slides are viewed full + screen in a slide show), this does not matter. + + Remove `\strut` at beginning of table cells (#3436). This fixes a + problem with alignment of lists in table cells. The `\strut` at the + end seems to be enough to avoid the too-close spacing that motivated + addition of the strut in #1573. + + Add partial siunitx Support (Marc Schreiber, #3588). + + * ConTeXt writer: + + + Refactored to use BCP47 module. + + Remove unnecessary `$` (Alexander Krotov, #3482). + + Use header identifiers for chapters (#3968). + + * EPUB writer: + + + `title_page.xhtml` is now put in `text/`. + + Don't strip formatting in TOC (#1611). + + * Textile reader: + + + Fix bug for certain links in table cells (#3667). + + Allow 'pre' code in list item (#3916). + + * HTML reader: + + + Added warnings for ignored material (#3392). + + Better sanity checks to avoid parsing unintended things as + raw HTML in the Markdown reader (#3257). + + Revise treatment of `li` with `id` attribute (#3596). Previously we + always added an empty div before the list item, but this created + problems with spacing in tight lists. Now we do this: If the list + item contents begin with a `Plain` block, we modify the `Plain` + block by adding a `Span` around its contents. Otherwise, we add a + `Div` around the contents of the list item (instead of adding an + empty `Div` to the beginning, as before). + + Add `details` tag to list of block tags (#3694). + + Removed `button` from block tag list (#3717). It is already in the + `eitherBlockOrInlineTag` list, and should be both places. + + Use `Set`s instead of lists for block tag lookup. + + Rewrote to use `Text` throughout. Effect on memory usage is modest + (< 10%). + + Use the lang value of `<html>` to set the lang meta value (bucklereed, + #3765). + + Ensure that paragraphs are closed properly when the parent block + element closes, even without `</p>` (#3794). + + Parse `<figure>` and `<figcaption>` (Mauro Bieg, #3813). + + Parse `<main>` like `<div role=main>` (bucklereed, #3791). + `<main>` closes `<p>` and behaves like a block element generally + + Support column alignments (#1881). These can be set either + with a `width` attribute or with `text-width` in a `style` attribute. + + Modified state type to be an instance of `HasLogMessages`, so + `registerHeader` can issue warnings. + + `</td>` or `</th>` should close any open block tag (#3991). + + `<td>` should close an open `<th>` or `<td>`. + + `htmlTag` improvements (#3989). We previously failed on cases + where an attribute contained a `>` character. This patch fixes the + bug, which especially affects raw HTML in Markdown. + + * Txt2Tags reader: + + + Newline is not indentation (Alexander Krotov). + + * MediaWiki reader: + + + Allow extra hyphens after `|-` in tables (#2649). + + Allow blank line after table start (#2649). + + Fixed more table issues (#2649). + + Ensure that list starts begin at left margin (#2606). Including when + they're in tables or other list items. + + Make smart double quotes depend on `smart` extension (#3585). + + Don't do curly quotes inside `<tt>` contexts (#3585). Even if `+smart`. + + Modified state type to be an instance of `HasLogMessages`, so + `registerHeader` can issue warnings. + + * TWiki reader (Alexander Krotov): + + + Remove unnecessary `$` (#3597). + + Simplify `linkText` (#3605). + + * EPUB reader: + + + Minor refactoring, avoiding explicit MediaBag handling. + This all works behind the scenes in CommonState plumbing. + + * Docx reader: + + + Don't drop smartTag contents (#2242). + + Handle local namespace declarations (#3365). Previously we didn't + recognize math, for example, when the xmlns declaration occured on + the element and not the root. + + More efficient trimSps (#1530). Replacing `trimLineBreaks`. This + does the work of `normalizeSpaces` as well, so we avoid the need for + that function here. + + Avoid 0-level headers (Jesse Rosenthal, #3830). We used to parse + paragraphs styled with "HeadingN" as "nth-level header." But if a + document has a custom style named "Heading0", this will produce a + 0-level header, which shouldn't exist. We only parse this style + if N>0. Otherwise we treat it as a normal style name, and + follow its dependencies, if any. + + Add tests for avoiding zero-level header (Jesse Rosenthal). + + * ODT reader: + + + Replaced `collectRights` with Rights from `Data.Either`. + + Remove dead code (Albert Krewinkel). + + * Org reader (Albert Krewinkel, unless noted). + + + Don't allow tables inside list items (John MacFarlane, #3499). + + Disallow tables on list marker lines (#3499). + + Convert markup at beginning of footnotes (John MacFarlane, #3576). + + Allow emphasized text to be followed by `[` (#3577). + + Handle line numbering switch for src blocks. + The line-numbering switch that can be given to source blocks (`-n` with + an start number as an optional parameter) is parsed and translated to a + class/key-value combination used by highlighting and other readers and + writers. + + Stop adding rundoc prefix to src params. Source block parameter names + are no longer prefixed with `rundoc`. This was intended to simplify + working with the rundoc project, a babel runner. However, the rundoc + project is unmaintained, and adding those markers is not the reader's + job anyway. The original language that is specified for a source + element is now retained as the `data-org-language` attribute and only + added if it differs from the translated language. + + Allow multi-word arguments to src block params (#3477). The reader now + correctly parses src block parameter list even if parameter arguments + contain multiple words. + + Avoid creating `nullMeta` by applying `setMeta` directly + (Alexander Krotov). + + Replace `sequence . map` with `mapM`. + + Fix smart parsing behavior. Parsing of smart quotes and special + characters can either be enabled via the `smart` language extension or + the `'` and `-` export options. Smart parsing is active if either the + extension or export option is enabled. Only smart parsing of special + characters (like ellipses and en and em dashes) is enabled by default, + while smart quotes are disabled. Previously, all smart parsing was + disabled unless the language extension was enabled. + + Subject full doc tree to headline transformations (Albert Krewinkel, + #3695). Emacs parses org documents into a tree structure, which is + then post-processed during exporting. The reader is changed to do the + same, turning the document into a single tree of headlines starting + at level 0. + + Fix cite parsing behaviour (Herwig Stuetz). Until now, `org-ref` + cite keys included special characters also at the end. This caused + problems when citations occur right before colons or at the end of + a sentence. With this change, all non alphanumeric characters at + the end of a cite key are ignored. This also adds `,` to the list + of special characters that are legal in cite keys to better mirror + the behaviour of org-export. + + Fix module names in haddock comments. Copy-pasting had lead to + haddock module descriptions containing the wrong module names. + + Recognize babel result blocks with attributes (#3706). Babel + result blocks can have block attributes like captions and names. + Result blocks with attributes were not recognized and were parsed + as normal blocks without attributes. + + Include tags in headlines. The Emacs default is to include tags in the + headline when exporting. Instead of just empty spans, which contain the + tag name as attribute, tags are rendered as small caps and wrapped in + those spans. Non-breaking spaces serve as separators for multiple tags. + + Respect export option for tags (#3713). Tags are appended to + headlines by default, but will be omitted when the `tags` export option + is set to nil. + + Use `tag-name` attribute instead of `data-tag-name`. + + Use `org-language` attribute rather than `data-org-language`. + + Modified state type to be an instance of `HasLogMessages`, so + `registerHeader` can issue warnings. + + End footnotes after two blank lines. Footnotes can not only be + terminated by the start of a new footnote or a header, but also by two + consecutive blank lines. + + Update emphasis border chars (#3933). The org reader was updated to + match current org-mode behavior: the set of characters which are + acceptable to occur as the first or last character in an org emphasis + have been changed and now allows all non-whitespace chars at the + inner border of emphasized text (see `org-emphasis-regexp-components`). + + * RST reader: + + + Fixed small bug in list parsing (#3432). Previously the parser didn't + handle properly this case: + + * - a + - b + * - c + - d + + Handle multiline cells in simple tables (#1166). + + Parse list table directive (Keiichiro Shikano, #3432). + + Make use of `anyLineNewline` (Alexander Krotov, #3686). + + Use `anyLineNewline` in `rawListItem` (Alexander Krotov, #3702). + + Reorganize block parsers for ~20% faster parsing. + + Fixed `..include::` directive (#3880). + + Handle blank lines correctly in line blocks (Alexander Krotov, #3881). + Previously pandoc would sometimes combine two line blocks separated + by blanks, and ignore trailing blank lines within the line block. + + Fix indirect hyperlink targets (#512). + + * Markdown reader: + + + Allow attributes in reference links to start on next line (#3674). + + Parse YAML metadata in a context that sees footnotes defined in + the body of the document (#1279). + + When splitting pipe table cells, skip tex math (#3481). + You might have a `|` character inside math. (Or for that matter + something that the parser might mistake for raw HTML.) + + Treat span with class `smallcaps` as SmallCaps. + This allows users to specify small caps in Markdown this way: + `[my text]{.smallcaps}` (#1592). + + Fixed internal header links (#2397). + This patch also adds `shortcut_reference_links` to the list + of mmd extensions. + + Treat certain environments as inline + when they occur without space surrounding them (#3309, #2171). + E.g. equation, math. This avoids incorrect vertical space + around equations. + + Optimized `nonindentSpaces`. Makes the benchmark go from 40 to 36 ms. + + Allow latex macro definitions indented 1-3 spaces. + Previously they only worked if nonindented. + + Improved parsing of indented raw HTML blocks (#1841). + Previously we inadvertently interpreted indented HTML as + code blocks. This was a regression. We now seek to determine the + indentation level of the contents of an HTML block, and (optionally) + skip that much indentation. As a side effect, indentation may be + stripped off of raw HTML blocks, if `markdown_in_html_blocks` is + used. This is better than having things interpreted as indented + code blocks. + + Fixed smart quotes after emphasis (#2228). E.g. in `*foo*'s 'foo'`. + + Warn for notes defined but not used (#1718). + + Use `anyLineNewline` (Alexander Krotov). + + Interpret YAML metadata as Inlines when possible (#3755). If + the metadata field is all on one line, we try to interpret it as + Inlines, and only try parsing as Blocks if that fails. If it + extends over one line (including possibly the `|` or `>` character + signaling an indented block), then we parse as Blocks. This was + motivated by some German users finding that `date: '22. Juin 2017'` + got parsed as an ordered list. + + Fixed spurious parsing as citation as reference def (#3840). + We now disallow reference keys starting with `@` if the + `citations` extension is enabled. + + Parse `-@roe` as suppress-author citation (pandoc-citeproc#237). + Previously only `[-@roe]` (with brackets) was recognized as + suppress-author, and `-@roe` was treated the same as `@roe`. + + Fixed parsing of fenced code after list when there is no intervening + blank line (#3733). + + Allow raw latex commands starting with `\start` (#3558). Previously + these weren't allowed because they were interpreted as starting + ConTeXt environments, even without a corresponding `\stop`... + + Added `inlines`, `inlines1`. + + Require nonempty alt text for `implicit_figures` (#2844). + A figure with an empty caption doesn't make sense. + + Removed texmath macro material; now all this is handled + in the LaTeX reader functions. + + Fixed bug with indented code following raw LaTeX (#3947). + + * LaTeX reader: + + + Rewrote LaTeX reader with proper tokenization (#1390, + #2118, #3236, #3779, #934, #982). This rewrite is primarily + motivated by the need to get macros working properly. A side benefit + is that the reader is significantly faster. We now tokenize the + input text, then parse the token stream. Macros modify the token + stream, so they should now be effective in any context, including + math. Thus, we no longer need the clunky macro processing + capacities of texmath. + + Parse `\,` to `\8198` (six-per-em space) (Henri Werth). + + Allow `\newcommand\foo{blah}` without braces. + + Support `\lstinputlisting` (#2116). + + Issue warnings when skipping unknown latex commands (#3392). + + Include contents of `\parbox`. + + Allow `\hspace` and `\vspace` to count as raw block or inline. + Previously we would refuse to parse anything as raw inline if + it was in the `blockCommands` list. Now we allow exceptions + if they're listed under ignoreInlines in inlineCommands. + This should make it easier e.g. to include an `\hspace` + between two side-by-side raw LaTeX tables. + + Don't drop contents of `\hypertarget`. + + Handle spaces before `\cite` arguments. + + Allow newpage, clearpage, pagebreak in inline contexts as well as + block contexts (#3494). + + Treat `{{xxx}}` the same as `{xxx}` (#2115). + + Use `pMacroDefinition` in macro (for more direct parsing). + Note that this means that `macro` will now parse one + macro at a time, rather than parsing a whole group together. + + Fixed failures on \ref{}, \label{} with `+raw_tex`. Now these + commands are parsed as raw if `+raw_tex`; otherwise, their argument + is parsed as a bracketed string. + + Don't crash on empty `enumerate` environment (#3707). + + Handle escaped `&` inside table cell (#3708). + + Handle block structure inside table cells (#3709). `minipage` is no + longer required. + + Handle some width specifiers on table columns (#3709). Currently + we only handle the form `0.9\linewidth`. Anything else would have + to be converted to a percentage, using some kind arbitrary assumptions + about line widths. + + Make sure `\write18` is parsed as raw LaTeX. The change is in the + LaTeX reader's treatment of raw commands, but it also affects the + Markdown reader. + + Fixed regression with starred environment names (#3803). + + Handle optional args in raw `\titleformat` (#3804). + + Improved heuristic for raw block/inline. An unknown command at the + beginning of the line that could be either block or inline is + treated as block if we have a sequence of block commands followed by + a newline or a `\startXXX` command (which might start a raw ConTeXt + environment). + + Don't remove macro definitions from the output, even if + `Ext_latex_macros` is set, so that macros will be applied. + Since they're only applied to math in Markdown, removing the macros + can have bad effects. Even for math macros, keeping them should be + harmless. + + Removed `macro`. It is no longer necessary, since the + `rawLaTeXBlock` parser will parse macro definitions. This also avoids + the need for a separate `latexMacro` parser in the Markdown reader. + + Use `label` instead of `data-label` for label in caption (#3639). + + Fixed space after \figurename etc. + + Resolve references to section numbers. + + Fix `\let\a=0` case, with single character token. + + Allow `@` as a letter in control sequences. `@` is commonly used + in macros using `\makeatletter`. Ideally we'd make the tokenizer + sensitive to `\makeatletter` and `\makeatother`, but until then this + seems a good change. + + Track header numbers and correlate with labels. + + Allow `]` inside group in option brackets (#3857). + + lstinline with braces can be used (verb cannot be used with braces) + (Marc Schreiber, #3535). + + Fix keyval funtion: pandoc did not parse options in braces correctly + (Marc Schreiber, #3642). + + When parsing raw LaTeX commands, include trailing space (#1773). + Otherwise things like `\noindent foo` break and turn into + `\noindentfoo`. Affects `-f latex+raw_tex` and `-f markdown` (and other + formats that allow `raw_tex`). + + Don't treat "..." as Quoted (#3958). This caused quotes to be omitted in + `\texttt` contexts. + + Add tests for existing `\includegraphics` behaviour (Ben Firshman). + + Allow space before `=` in bracketd options (Ben Firshman). + + Be more forgiving in parsing command options. This was needed, for + example, to make some minted options work. + + Strip off quotes in `\include` filenames. + + * Added `Text.Pandoc.CSV`, simple (unexported) CSV parser. + + * `Text.Pandoc.PDF`: + + + Got `--resource-path` working with PDF output (#852). + + Fetch images when generating PDF via context (#3380). + To do this, we create the temp directory as a subdirectory + of the working directory. Since context mk IV by default looks + for images in the parent directory, this works. + + Use `report` instead of `warn`, make it sensitive to verbosity settings. + + Use `fillMediaBag` and `extractMedia` to extract media to temp dir. + This reduces code duplication. + + `html2pdf`: use stdin instead of intermediate HTML file + + Removed useless `TEXINPUTS` stuff for `context2pdf`. mkiv context + doesn't use `TEXINPUTS`. + + * `Text.Pandoc.Pretty`: + + + Simplified definition of `realLength`. + + Don't error for blocks of size < 1. Instead, resize to 1 (see #1785). + + * `Text.Pandoc.MIME`: + + + Use `application/javascript` (not `application/x-javascript`). + + Added `emf` to mimeTypes with type `application/x-msmetafile` (#1713). + + * `Text.Pandoc.ImageSize`: + + + Improve SVG image size code (Marc Schreiber, #3580). + + Make `imageSize` recognize basic SVG dimensions (Mauro Bieg, #3462). + + * Use `Control.Monad.State.Strict` throughout. This gives 20-30% speedup + and reduction of memory usage in most of the writers. + + * Use `foldrWithKey` instead of deprecated `foldWithKey`. + + * `Text.Pandoc.SelfContained`: + + + Fixed problem with embedded fonts (#3629). + + Refactored getData from `getDataURI` in `SelfContained`. + + Don't use data URIs for script or style (#3423). Instead, just use + script or style tags with the content inside. The old method with + data URIs prevents certain optimizations outside pandoc. Exception: + data URIs are still used when a script contains `</script>` or a + style contains `</`. + + SelfContained: Handle URL inside material retrieved from a URL + (#3629). This can happen e.g. with an @import of a google web font. + (What is imported is some CSS which contains an url reference + to the font itself.) Also, allow unescaped pipe (|) in URL. + + Load resources from `data-src` (needed for lazy loading in + reveal.js slide shows). + + Handle `data-background-image` attribute on section (#3979). + + * `Text.Pandoc.Parsing`: + + + Added `indentWith` (Alexander Krotov, #3687). + + Added `stateCitations` to `ParserState`. + + Removed `stateChapters` from `ParserState`. + + In `ParserState`, make `stateNotes'` a Map, add `stateNoteRefs`. + + Added `gobbleSpaces` and `gobbleAtMostSpaces`. + + Adjusted type of `insertIncludedFile` so it can be used with token + parser. + + Replace old texmath macro stuff from Parsing. Use Macro from + Text.Pandoc.Readers.LaTeX.Types instead. + + Export `insertIncludedFile`. + + Added `HasLogMessages`, `logMessage`, `reportLogMessages` (#3447). + + Replace partial with total function (Albert Krewinkel). + + Introduce `HasIncludeFiles` type class (Albert Krewinkel). The + `insertIncludeFile` function is generalized to work with all parser + states which are instances of that class. + + Add `insertIncludedFilesF` which returns F blocks (Albert Krewinkel). + The `insertIncludeFiles` function was generalized and renamed + to `insertIncludedFiles'`; the specialized versions are based on that. + + `many1Till`: Check for the end condition before parsing (Herwig + Stuetz). By not checking for the end condition before the first + parse, the parser was applied too often, consuming too much of the + input. This only affects `many1Till p end` where `p` matches on a + prefix of `end`. + + Provide `parseFromString` (#3690). This is a verison of + `parseFromString` specialied to ParserState, which resets + `stateLastStrPos` at the end. This is almost always what we want. + This fixes a bug where `_hi_` wasn't treated as emphasis in the + following, because pandoc got confused about the position of the + last word: `- [o] _hi_`. + + Added `takeP`, `takeWhileP` for efficient parsing of `[Char]`. + + Fix `blanklines` documentation (Alexander Krotov, #3843). + + Give less misleading line information with `parseWithString`. + Previously positions would be reported past the end of the chunk. + We now reset the source position within the chunk and report + positions "in chunk." + + Add `anyLineNewline` (Alexander Krotov). + + Provide shared F monad functions for Markdown and Org readers + (Albert Krewinkel). The `F` monads used for delayed evaluation + of certain values in the Markdown and Org readers are based on a + shared data type capturing the common pattern of both `F` types. + + Add `returnF` (Alexander Krotov). + + Avoid parsing `Notes:**` as a bare URI (#3570). This avoids parsing + bare URIs that start with a scheme + colon + `*`, `_`, or `]`. + + Added `readerAbbreviations` to `ParserState`. Markdown reader + now consults this to determine what is an abbreviation. + + Combine grid table parsers (Albert Krewinkel, #3638). The grid table + parsers for markdown and rst was combined into one single + parser `gridTable`, slightly changing parsing behavior of both + parsers: (1) The markdown parser now compactifies block content + cell-wise: pure text blocks in cells are now treated as paragraphs + only if the cell contains multiple paragraphs, and as plain blocks + otherwise. Before, this was true only for single-column tables. (2) + The rst parser now accepts newlines and multiple blocks in header + cells. + + Generalize tableWith, gridTableWith (Albert Krewinkel). + The parsing functions `tableWith` and `gridTableWith` are generalized + to work with more parsers. The parser state only has to be an + instance of the `HasOptions` class instead of requiring a concrete + type. Block parsers are required to return blocks wrapped into a + monad, as this makes it possible to use parsers returning results + wrapped in `Future`s. + + * `Text.Pandoc.Shared`: + + + Simplify `toRomanNumeral` using guards (Alexander Krotov, #3445) + + `stringify`: handle Quoted better (#3958). Previously we were losing + the quotation marks in Quoted elements. + + * `Text.Pandoc.Writers.Shared`: + + + Export `metaToJSON'`, `addVariablesToJSON` (#3439). + This allows us to add the variables AFTER using the metadata + to generate a YAML header (in the Markdown writer). + + Added `unsmartify` (previously in RST writer). + Undo literal double curly quotes. Previously we left these. + + Generalize type of `metaToJSON` so it can take a Text. Previously a + String was needed as argument; now any ToJSON instance will do. + + Added `gridTable` (previously in Markdown writer). + + `gridTable`: Refactored to use widths in chars. + + `gridTable`: remove unnecessary extra space in cells. + + Fixed `addVariablesToJSON`. It was previously not allowing multiple + values to become lists. + + Pipe tables: impose minimum cell size (see #3526). + + + [default template changes] + + * HTML templates (including EPUB and HTML slide show templates): + + + Make default.html5 polyglot markup conformant (John Luke Bentley, + #3473). Polyglot markup is HTML5 that is also valid XHTML. See + <https://www.w3.org/TR/html-polyglot>. With this change, pandoc's + html5 writer creates HTML that is both valid HTML5 and valid XHTML. + + Regularized CSS in html/epub/html slide templates (#3485). + All templates now include `code{white-space: pre-wrap}` + and CSS for `q` if `--html-q-tags` is used. Previously some templates + had `pre` and others `pre-wrap`; the `q` styles were only sometimes + included. + + CSS for `.smallcaps`, (Mauro Bieg, #1592) + + `default.revealjs`: make `history` default to true. + + `default.revealjs`: use lazy loading (#2283). + + `default.revealjs`: add `mathjax` variable and some conditional code + to use the MathJaX plugin. + + `default.slidy` uses `https` instead of `http` (ickc, #3848). + + `default.dzslides`: Load Google Font using HTTPS by default + (Yoan Blanc). + + * DocBook5 template: Use `lang` and `subtitle` variables (Jens Getreu, + #3855). + + * LaTeX/Beamer template: + + + Combine LaTeX/Beamer templates (Andrew Dunning, #3878). + `default.beamer` has been removed; beamer now uses the + `default.latex` template. Beamer-specific parts are conditional + on the `beamer` variable set by the writer. Note that + `pandoc -D beamer` will return this (combined) template. + + Use `xcolor` for `colorlinks` option (Andrew Dunning, #3877). + Beamer loads `xcolor` rather than `color`, and thus the + `dvipsnames` option doesn't take effect. This also provides a wider + range of colour selections with the `svgnames` option. + + Use starred versions of `xcolor` names (Andrew Dunning). + Prevents changes to documents defined using the `dvipsnames` list (e.g. + `Blue` gives a different result with svgnames enabled). + + Load `polyglossia` after header-includes (#3898). It needs to be + loaded as late as possible. + + Use `unicode-math` (Vaclav Haisman). Use `mathspec` with only + XeLaTeX on request. + + Don't load `fontspec` before `unicode-math` (over there). + The `unicode-math` package loads `fontspec` so explict loading of + `fontspec` before `unicode-math` is not necessary. + + Use `unicode-math` by default in default.latex template. mathspec will + be used in xelatex if the `mathspec` variable is set; otherwise + unicode-math will be used (Václav Haisman). + + Use `dvipsnames` options when `colorlinks` specified (otherwise + we get an error for `maroon`) (Thomas Hodgson). + + Added beamer `titlegraphic` and `logo` variables (Thomas Hodgson). + + Fix typo in fix for notes in tables (#2378, zeeMonkeez). + + Fix `hyperref` options clash (Andrew Dunning, #3847) Avoids an options + clash when loading a package (e.g. `tufte-latex`) that uses + `hyperref` settings different from those in the template. + + Add `natbiboptions` variable (#3768). + + Fix links inside captions in LaTeX output with links-as-notes + (Václav Haisman, #3651). Declare our redefined `\href` robust. + + Load `parskip` before `hyperref` (Václav Haisman, #3654). + + Allow setting Japanese fonts when using LuaLaTeX (Václav Haisman, + #3873). by using the `luatexja-fontspec` and `luatexja-preset` + packages. Use existing `CJKmainfont` and `CJKoptions` template + variables. Add `luatexjafontspecoptions` for `luatexja-fontspec` + and `luatexjapresetoptions` for `luatexja-preset`. + + Added `aspectratio` variable to beamer template (Václav Haisman, + #3723). + + Modified template.latex to fix XeLaTex being used with tables + (lwolfsonkin, #3661). Reordered `lang` variable handling to + immediately before `bidi`. + + * ConTeXt template: Improved font handling: `simplefonts` is now + obsolete in ConTeXt (Pablo Rodríguez). + + + [documentation improvements] + + * MANUAL.txt: + + + Add URL for Prince HTML > PDF engine (Ian, #3919). + + Document that content above slide-level will be omitted in + slide shows. See #3460, #2265. + + Explain `--webtex` SVG url (Mauro Bieg, #3471) + + Small clarification in YAML metadata section. + + Document that html4 is technically XHTML 1.0 transitional. + + Remove refs to highlighting-kate (#3672). + + Document ibooks specific epub metadata. + + Clarify that mathml is used for ODT math. + + Mention limitations of Literate Haskell Support (#3410, + Joachim Breitner). + + Add documentation of limitations of grid tables (Stephen + McDowell, #3864). + + Clarify that meta-json contains transformed values (Jakob Voß, + #3491) Make clear that template variable `meta-json` does not + contain plain text values or JSON output format but field values + transformed to the selected output format. + + * COPYRIGHT: + + + Clarify that templates are dual-licensed. + + Clarify that pandoc-types is BSD3 licensed. + + List new files not written by jgm (Albert Krewinkel). + + Update dates in copyright notices (Albert Krewinkel). This follows + the suggestions given by the FSF for GPL licensed software. + <https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html> + + * INSTALL.md: + + + Improved instructions for tests with patterns. + + Put RPM-based distros on separate point (Mauro Bieg, #3449) + + * CONTRIBUTING.md: + + + Fixed typos (Wandmalfarbe, #3479). + + Add "ask on pandoc-discuss" (Mauro Bieg). + + * Add lua filter documentation in `doc/lua-filters.md`. Note that the + end of this document is autogenerated from `data/pandoc.lua` + using `make doc/lua-filters.md`, which uses `tools/ldoc.ltp` + (Albert Krewinkel). + + * Add `doc/filters.md`. This is the old scripting tutorial from + the website. + + * Add `doc/using-the-pandoc-api.md` (#3289). This gives an introduction + to using pandoc as a Haskell library. + + + [build infrastructure improvements] + + * Removed `data/templates` submodule. Templates are now a subtree + in `data/templates`. This removes the need to do `git submodule + update`. + + * Renamed `tests` -> `test`. + + * Remove `https` flag. Always build with HTTPS support. + + * Use `file-embed` instead of `hsb2hs` to embed data files when + `embed_data_files` flag is set. `file-embed` gives us better dependency + tracking: if a data file changes, ghc/stack/cabal know to recompile + the Data module. This also removes `hsb2hs` as a build dependency. + + * Add `custom-setup` stanza to pandoc, lowercase field names. + + * Add `static` Cabal flag. + + * Name change OSX -> MacOS. Add a -MacOS suffix to mac package rather + than -OSX. Changed local names from osx to macos. + + * make_macos_package.sh - Use strip to reduce executable size. + + * Revised binary linux package. Now a completely static executable + is created, using Docker and alpine. We create both a deb and a + tarball. The old `deb` directory has been replaced with a `linux` + directory. Running `make` in the `linux` directory should + perform the build, putting the binary packages in `artifacts/`. + + * `linux/control.in`: add `Replaces:`, so existing pandoc-citeproc and + pandoc-data packages will be uninstalled; this package provides + both (#3822). Add latex packages as 'suggested', update + description. + + * Remove cpphs build requirement -- it is no longer needed. + + * Replaced `{deb,macos,windows}/stack.yaml` with `stack.pkg.yaml`. + + * Name change OSX -> macOS (ickc, #3869). + + * Fix casing of Linux, UNIX, and Windows (ickc). + + * `.travis.yml`: create a source dist and do cabal build and test there. + That way we catch errors due to files missing from the data + section of pandoc.cabal. + + * Makefile: + + + Split `make haddock` from `make full`. + + Add BRANCH variable for winpkg. + + Add `lint` target. + + Improve `make full`. Disable optimizations. + Build everything, inc. trypandoc and benchmarks. Use parallel build. + + Allow `make test` to take `TESTARGS`. + + * Added new command tests (`Tests.Command`), using small text files + in `test/command/`. Any files added in this directory will be treated + as shell tests (see smart.md for an example). This makes it very easy + to add regression tests etc. + + * Test fixes so we can find data files. In old tests & command tests, + we now set the environment variable `pandoc_datadir`. In lua tests, + we set the datadir explicitly. + + * Refactored `compareOutput` in docx writer test. + + * Consolidated some common functions in `Tests.Helper`. + + * Small change to unbalanced bracket test to speed up test suite. + + * Speed up Native writer quickcheck tests. + + * Use tasty for tests rather than test-framework. + + * Add simple Emacs mode to help with Pandoc templates editing. + (Václav Haisman, #3889). `tools/pandoc-template-mode.el` - * Require skylighting >= 0.1.1.4. - * Adjust test output for skylighting version. - * Relax upper bounds on blaze-html and blaze-markup. pandoc (1.19.2) @@ -319,11 +3545,11 @@ pandoc (1.19) 3. does some postprocessing of the paragraphs that combines tables followed immediately by captions - The ODT writer used the `TableCaption` style for the caption - paragraph. This commit follows the OpenOffice approach which allows - for appending captions to table but uses a built-in style named - `Table` instead of `TableCaption`. Users of a custom `reference.odt` - should change the style's name from `TableCaption` to `Table`. + The ODT writer used the `TableCaption` style for the caption + paragraph. This commit follows the OpenOffice approach which allows + for appending captions to table but uses a built-in style named + `Table` instead of `TableCaption`. Users of a custom `reference.odt` + should change the style's name from `TableCaption` to `Table`. * ODT reader: Infer tables' header props from rows (#3199, Hubert Plociniczak). ODT reader simply provided an empty header list @@ -3274,7 +6500,7 @@ pandoc (1.13.2.1) pandoc (1.13.2) - * TWiki Reader: add new new twiki reader (API chaneg, Alexander Sulfrian). + * TWiki Reader: add new new twiki reader (API change, Alexander Sulfrian). * Markdown reader: @@ -3552,23 +6778,23 @@ pandoc (1.13.2) Now we still support those, but also support the format recommended for epub metadata in the pandoc README: - --- - title: - - type: main - text: My Book - - type: subtitle - text: An investigation of metadata - creator: - - role: author - text: John Smith - - role: editor - text: Sarah Jones - identifier: - - scheme: DOI - text: doi:10.234234.234/33 - publisher: My Press - rights: (c) 2007 John Smith, CC BY-NC - ... + --- + title: + - type: main + text: My Book + - type: subtitle + text: An investigation of metadata + creator: + - role: author + text: John Smith + - role: editor + text: Sarah Jones + identifier: + - scheme: DOI + text: doi:10.234234.234/33 + publisher: My Press + rights: (c) 2007 John Smith, CC BY-NC + ... * `Text.Pandoc.Templates.getDefaultTemplate`: don't fail when called with "fb2" (#1660). @@ -5291,6 +8517,8 @@ pandoc (1.12) + Export `varListToJSON`. * `Text.Pandoc.PDF` exports `makePDF` instead of `tex2pdf`. + The signature of `makePDF` has changed and now contains + an additional argument for pdf engine options. * `Text.Pandoc`: @@ -5313,6 +8541,8 @@ pandoc (1.12) + All bibliography-related fields have been removed from `ReaderOptions` and `WriterOptions`: `writerBiblioFiles`, `readerReferences`, `readerCitationStyle`. + + Removed `writerPdfArgs` from `WriterOptions`. These are now + passed in as a parameter to `makePDF`. * The `Text.Pandoc.Biblio` module has been removed. Users of the pandoc library who want citation support will need to use @@ -8564,7 +11794,7 @@ pandoc (1.5) * Added Maybe datadir parameter to readDataFile, saveOpenDocumentAsODT, latexMathMLScript, s5HeaderIncludes, and getDefaultTemplate. If - Nothing, no user directory is searched for an override. + Nothing, no user directory is searched for an override. * Added 'plain' output format. This is similar to markdown, but removes links, pictures, inline formatting, and most anything that @@ -8678,8 +11908,8 @@ pandoc (1.5) + Allow footnotes to be indented < 4 spaces. This fixes a regression. A test case has been added. + Escape spaces in URLs as %20. Previously they were incorrectly - escaped as +, which is appropriate only for the query part of - a URL. Resolves Issue #220. + escaped as +, which is appropriate only for the query part of + a URL. Resolves Issue #220. + Require two spaces after capital letter + period for list item. Otherwise "E. coli" starts a list. This might change the semantics of some existing documents, since previously the two-space @@ -8806,7 +12036,7 @@ pandoc (1.4) * Pandoc no longer requires Template Haskell. Resolves Issue #186. + Removed need for TH in ODT module. Instead get reference.odt from - data file at run time. + data file at run time. + Removed TH dependency from S5 module. S5 module now exports s5HeaderIncludes, which pandoc.hs includes if writer is s5 and standalone. @@ -8823,7 +12053,7 @@ pandoc (1.4) on unix), or, if not found there, from the system data directory ($CABALDIR/shared/pandoc-VERSION/). All data files, including templates, LaTeXMathML.js, s5 styles, - and reference.odt, can be overridden by the user. + and reference.odt, can be overridden by the user. * s5 files moved from data/ui/default to s5/default. @@ -8848,7 +12078,7 @@ pandoc (1.4) * Added --reference-odt option, so users may customize the styles used in pandoc-generated ODT files. Users may also place a - default reference.odt in the ~\.pandoc directory. + default reference.odt in the ~\.pandoc directory. * ODT writer: + Indented and line-broke styles.xml so it can be modified more easily. @@ -8932,8 +12162,8 @@ pandoc (1.3) * Treat a backslash followed by a newline as a hard line break in markdown. Resolves Issue #154. This is a nice alternative - to markdown's "invisible" way of indicating hardline breaks - using lines that end with two spaces. + to markdown's "invisible" way of indicating hardline breaks + using lines that end with two spaces. * Improved performance of markdown reader by ~10% by eliminating the need for a separate parsing pass for notes. Raw notes are now stored @@ -8944,7 +12174,7 @@ pandoc (1.3) * In markdown reader, treat 4 or more * or _ in a row as literal text. (Trying to parse long strings of * or _ as strong or emph - leads to exponential performance problems.) + leads to exponential performance problems.) * Markdown reader: Use + rather than %20 for spaces in URLs. @@ -8962,8 +12192,8 @@ pandoc (1.3) * Modified html+lhs output to use "haskell" highlighter instead of "literateHaskell". The highlighting module now adds bird tracks - after highlighting (for HTML output), if the code block has the - "literate" class. This gives better results, because kate's + after highlighting (for HTML output), if the code block has the + "literate" class. This gives better results, because kate's haskell highlighter is much better than the literateHaskell highlighter. @@ -9084,7 +12314,7 @@ pandoc (1.2.1) explicit marker. For example: A. my list - #. continued + #. continued Resolves Issue #140. + Allow continuation lines in line blocks. Also added test cases for @@ -9117,7 +12347,7 @@ pandoc (1.2.1) * Added new Haskell version of markdown2pdf, due to Paulo Tanimoto. This should be more portable than the old - shell script. + shell script. * Made 'pandoc -v' more explicit about compiler options. Resolves Issue #139. @@ -9267,7 +12497,7 @@ pandoc (1.1) * Text.Pandoc.Shared: Modified wrappedTeX to eliminate the line break between a footnote and immediately following nonspace characters in LaTeX and ConTeXt output. (This gets interpreted as a space, which - is not desired in cases like "text^[note]---".) Resolves Issue #93. + is not desired in cases like `text^[note]---`.) Resolves Issue #93. * Windows installer: Don't require admin privileges to run installer. Modified pandoc-setup.iss, and changed modpath.iss to @@ -10773,8 +14003,8 @@ pandoc (0.3) unstable; urgency=low * Revised footnote syntax. (See README for full details.) The '[^1]' format now standard in markdown extensions is supported, - as are inline footnotes with this syntax: '^[My note.]'. - The earlier footnote syntax '^(1)' is no longer supported. + as are inline footnotes with this syntax: `^[My note.]`. + The earlier footnote syntax `^(1)` is no longer supported. * Improved HTML representation of footnotes. All footnotes are now auto-numbered and appear in an ordered list at the |