diff options
-rw-r--r-- | changelog | 458 |
1 files changed, 458 insertions, 0 deletions
@@ -1,3 +1,461 @@ +pandoc (2.4) + + [new features] + + * New input format `man` (Yan Pashkovsky, John MacFarlane). + + [behavior changes] + + * `--ascii` is now implemented in the writers, not in Text.Pandoc.App, + via the new `writerPreferAscii` field in `WriterOptions`. + Now the `write*` functions for Docbook, HTML, ICML, JATS, LaTeX, + Ms, Markdown, and OPML are sensitive to `writerPreferAscii`. + Previously the to-ascii translation was done in Text.Pandoc.App, + and thus not available to those using the writer functions + directly. + + * `--ascii` now works with Markdown output. HTML5 character reference + entities are used. + + * `--ascii` now works with LaTeX output. 100% ASCII output can't be + guaranteed, but the writer will use commands like `\"{a}` and `\l` + whenever possible, to avoid emiting a non-ASCII character. + + * For HTML5 output, `--ascii` now uses HTML5 character reference + entities rather than numerical entities. + + * Improved detection of format based on extension (in Text.Pandoc.App). + We now ensure that if someone tries to convert a file for a + format that has a pandoc writer but not a reader, it won't just + default to markdown. + + * Add viz. to abbreviations file (#5007, Nick Fleisher). + + * RST writer: Use simple tables when possible (#4750). + + * CommonMark (and gfm) writer: Add plain text fallbacks. (#4528, + quasicomputational). Previously, the writer would unconditionally + emit HTML output for subscripts, superscripts, strikeouts (if the + strikeout extension is disabled) and small caps, even with + `raw_html` disabled. Now there are plain-text (and, where + possible, fancy Unicode) fallbacks for all of these corresponding + (mostly) to the Markdown fallbacks, and the HTML output is only + used when `raw_html` is enabled. + + * Powerpoint writer: support raw openxml (Jesse Rosenthal, #4976). + This allows raw openxml blocks and inlines to be used in the pptx + writer. Caveats: (1) It's up to the user to write + well-formed openxml. The chances for corruption, especially with + such a brittle format as pptx, is high. (2) Because of + the tricky way that blocks map onto shapes, if you are using + a raw block, it should be the only block on a slide + (otherwise other text might end up overlapping it). (3) The + pptx ooxml namespace abbreviations are different from the + docx ooxml namespaces. Again, it's up to the user to get it + right. Unzipped document and ooxml specification should be + consulted. + + * With `--katex` in HTML formats, do not use the autorenderer (#4946). + We no longer surround formulas with `\(..\)` or `\[..\]`. Instead, + we tell katex to convert the contents of span elements with + class "math". Since math has already been identified, this + avoids wasted time parsing for LaTeX delimiters. Note, however, + that this may yield unexpected results if you have span elements + with class "math" that don't contain LaTeX math. + Also, use latest version of KaTeX by default (0.9.0). + + * The man writer now produces ASCII-only output, using groff escapes, + for portability. + + * ODT writer: + + + Add title, author and date to metadata; any remaining + metadata fields are added as `meta:user-defined` tags. + + Implement table caption numbering (#4949, Nils Carlson). + Captioned tables are numbered and labeled with format "Table 1: + caption", where "Table" is replaced by a translation, depending + on the value of `lang` in metadata. Uncaptioned tables are not + enumerated. + + OpenDocument writer: Implement figure numbering in captions (#4944, + Nils Carlson). Figure captions are now numbered 1, 2, 3, ... + The format in the caption is "Figure 1: caption" and so on + (where "Figure" is replaced by a translation, depending on the + value of `lang` in the metadata). Captioned figures are numbered + consecutively and uncaptioned figures are not enumerated. This + is necessary in order for LibreOffice to generate an + Illustration Index (Table of Figures) for included figures. + + * RST reader: Pass through fields in unknown directives as div attributes + (#4715). Support `class` and `name` attributes for all directives. + + * Org reader: Add partial support for `#+EXCLUDE_TAGS` option. (#4284, + Brian Leung). Headers with the corresponding tags should not + appear in the output. + + * Log warnings about missing title attributes now include a + suggestion about how to fix the problem (#4909). + + * Lua filter changes (Albert Krewinkel): + + + Report traceback when an error occurs. A proper Lua traceback is + added if either loading of a file or execution of a filter + function fails. This should be of help to authors of Lua filters + who need to debug their code. + + + Allow access to pandoc state (#5015). Lua filters and custom + writers now have read-only access to most fields of pandoc's + internal state via the global variable `PANDOC_STATE`. + + + Push ListAttributes via constructor (Albert Krewinkel). + This ensures that ListAttributes, as present in OrderedList elements, + have additional accessors (viz. `start`, `style`, and `delimiter`). + + + Rename ReaderOptions fields, use snake_case. Snake case is used + in most variable names, using camelCase for these fields was an + oversight. A metatable is added to ensure that the old field + names remain functional. + + + Iterate over AST element fields when using `pairs`. This makes + it possible to iterate over all ield names of an AST element by + using a generic `for` loop with pairs`: + + for field_name, field_content in pairs(element) do + ... + end + + Raw table fields of AST elements should be considered an + implementation detail and might change in the future. Accessing + element properties should always happen through the fields + listed in the Lua filter docs. + + Note that the iterator currently excludes the `t`/`tag` field. + + + Ensure that MetaList elements behave like Lists. Methods usable + on Lists can also be used on MetaList objects. + + + Fix MetaList constructor (Albert Krewinkel). Passing a MetaList + object to the constructor `pandoc.MetaList` now returns the + passed list as a MetaList. This is consistent with the + constructor behavior when passed an (untagged) list. + + * Custom writers: Custom writers have access to the global variable + `PANDOC_DOCUMENT`(Albert Krewinkel, #4957). The variable contains + a userdata wrapper around the full pandoc AST and exposes two + fields, `meta` and `blocks`. The field content is only + marshaled on-demand, performance of scripts not accessing the + fields remains unaffected. + + [API changes] + + * Text.Pandoc.Options: add `writerPreferAscii` to `WriterOptions`. + + * Text.Pandoc.Shared: export `splitSentences`. This was previously + duplicated in the Man and Ms writers. + + * New exported module Text.Pandoc.Filter (Albert Krewinkel). + + * Text.Pandoc.Parsing + + + Generalize `gridTableWith` to any `Char` Stream (Alexander Krotov). + + Generalize `readWithM` from `[Char]` to any `Char` Stream. + + * New exposed module Text.Pandoc.Filter (Albert Krewinkel). + + * Text.Pandoc.XML: add `toHtml5Entities`. + + * New exported module Text.Pandoc.Readers.Man (Yan Pashkovsky, John + MacFarlane). + + * Text.Pandoc.Writers.Shared + + + Add exported functions `toSuperscript` and + `toSubscript` (quasicomputational, #4528). + + Remove exported functions `metaValueToInlines`, + `metaValueToString`. Add new exported functions + `lookupMetaBool`, `lookupMetaBlocks`, `lookupMetaInlines`, + `lookupMetaString`. Use these whenever possible for uniformity + in writers (Mauro Bieg, #4907). (Note that + removed function `metaValueToInlines` was in previous + released versions.) + + Add `metaValueToString`. + + * Text.Pandoc.Lua + + + Expose more useful internals (Albert Krewinkel): + + - `runFilterFile` to run a Lua filter from file; + - data type `Global` and its constructors; and + - `setGlobals` to add globals to a Lua environment. + + This module also contains `Pushable` and `Peekable` instances + required to get pandoc's data types to and from Lua. Low-level + Lua operation remain hidden in Text.Pandoc.Lua. + + + Rename `runPandocLua` to `runLua` (Albert Krewinkel). + + + Remove `runLuaFilter`, merging this into Text.Pandoc.Filter.Lua's + `apply` (Albert Krewinkel). + + [bug fixes and under-the-hood improvements] + + * Text.Pandoc.Parsing + + + Make `uri` accept any stream with Char tokens (Alexander Krotov). + + Rewrite `uri` without `withRaw` (Alexander Krotov). + + Generalize `parseFromString` and `parseFromString'` to any + streams with Char token (Alexander Krotov) + + Rewrite `nonspaceChar` using `noneOf` (Alexander Krotov) + + * Text.Pandoc.Shared: Reimplement `mapLeft` using `Bifunctor.first` + (Alexander Krotov). + + * Text.Pandoc.Pretty: Simplify `Text.Pandoc.Pretty.offset` + (Alexander Krotov). + + * Text.Pandoc.App + + + Work around HXT limitation for --syntax-definition with windows + drive (#4836). + + Always preserve tabs for man format. We need it for tables. + + * Text.Pandoc.Readers.Roff: new unexported module for tokenizing + roff documents. + + * New unexported module Text.Pandoc.RoffChar, provided character + escape tables for roff formats. + + * Text.Pandoc.Readers.HTML: Fix `htmlTag` and `isInlineTag` to + accept processing instructions (#3123, regression since 2.0). + + * Text.Pandoc.Readers.JATS: Use `foldl'` instead of `maximum` to + account for empty lists (Alexander Krotov). + + * Text.Pandoc.Readers.RST: Don't allow single-dash separator in + headerless table (#4382). + + * Text.Pandoc.Readers.Org: Parse empty argument array in inline src + blocks (Brian Leung). + + * Text.Pandoc.Readers.Vimwiki: Get rid of `F`, `runF` and `stateMeta'` + in favor of `stateMeta` (Alexander Krotov). + + * Text.Pandoc.Readers.LaTeX + + + Allow space at end of math after `\` (#5010). + + Add support for `nolinkurl` command (#4992, Brian Leung). + + Simplified type on `doMacros'`. + + Tokenize before pulling tokens, rather than after (#4408). This + has some performance penalty but is more reliable. + + Make macroDef polymorphic and allow in inline context. + Otherwise we can't parse something like `\lowercase{\def\x{Foo}}`. + I have actually seen tex like this in the wild. + + Improved parsing of `\def`, `\let`. We now correctly parse: + ``` + \def\bar{hello} + \let\fooi\bar + \def\fooii{\bar} + \fooi +\fooii + + \def\bar{goodbye} + \fooi +\fooii + ``` + + Improve parsing of `\def` argspec. + + Skip `\PackageError` commands (see #4408). + + Fix bugs omitting raw tex (#4527). The default is `-raw_tex`, + so no raw tex should result unless we explicitly say `+raw_tex`. + Previously some raw commands did make it through. + + Moved `isArgTok` to Text.Pandoc.Readers.LaTeX.Parsing. + + Moved `babelLangToBCP`, `polyglossiaLangToBCP` to new module, + Text.Pandoc.Readers.LaTeX.Lang (unexported). + + Simplified accent code using unicode-transforms. + New dependency on unicode-transforms package for normalization. + + Allow verbatim blocks ending with blank lines (#4624). + + Support `breq` math environments: `dmath`, `dgroup`, `darray`. + This collects some of the general-purpose code from the LaTeX reader, + with the aim of making the module smaller. + + * Text.Pandoc.Readers.Markdown + + + Fix awkward soft break movements before abbreviations (#4635). + + Add updateStrPos in a couple places where needed. + + * Text.Pandoc.Readers.Docx: Trigger bold/italic with bCs, iCs + (#4947). These are variants for "complex scripts" like Arabic + and are now treated just like b, i (bold, italic). + + * Text.Pandoc.Readers.Muse (Alexander Krotov) + + + Try to parse lists before trying to parse table. + This ensures that tables inside lists are parsed correctly. + + Forbid whitespace after opening and before closing markup + elements. + + Parse page breaks. + + Simplify `museToPandocTable` to get rid of partial functions. + + Allow footnotes to start with empty line. + + Make sure that the whole text is parsed. + + Allow empty headers. Previously empty headers caused parser to + terminate without parsing the rest of the document. + + Allow examples to be indented with tabs. + + Remove indentation from examples indicated by `{{{` and `}}}`. + + Fix parsing of empty cells. + + Various changes to internals. + + Rewrite some parsers in applicative style. + + Avoid tagsoup dependency. + + Allow table caption to contain `+`. + + * Text.Pandoc.Writers.LaTeX + + + Add newline if math ends in a comment (#4880). This prevents the + closing delimiter from being swalled up in the comment. + + With `--listings`, don't pass through org-babel attributes (#4889). + + With `--biblatex`, use `\autocite` when possible (#4960). + `\autocites{a1}{a2}{a3}` will not collapse the entries. So, if + we don't have prefixes and suffixes, we use instead + `\autocite{a1;a2;a3}`. + + Fix description lists contining highlighted code (#4662). + + * Text.Pandoc.Writers.Man + + + Don't wrap `.SH` and `.SS` lines (#5019). + + Avoid unnecessary `.RS`/`.RE` pair in definition lists with + one paragraph definitions. + + Moved common groff functions to Text.Pandoc.Writers.Groff. + * Fix strong/code combination on man (should be `\f[CB]` not + `\f[BC]`, see #4973). + + Man writer: use `\f[R]` instead of `\f[]` to reset font + (Alexander Krotov, #4973). + + Move `splitSentences` to Text.Pandoc.Shared. + + * Text.Pandoc.Writers.Docx + + + Add framework for custom properties (#3034). So far, we don't + actually write any custom properties, but we have the + infrastructure to add this. + + + Handle tables in table cells (#4953). Although this is not + documented in the spec, some versions of Word require a `w:p` + element inside every table cell. Thus, we add one when the + contents of a cell do not already include one (e.g. when a table + cell contains a table). + + * Text.Pandoc.Writers.OpenDocument: Improve bullet/numbering + alignment (#4385). This change eliminates the large gap we used + to have between bullet and text, and also ensures that numbers + in numbered lists will be right-aligned. + + * Text.Pandoc.Writers.ZimWiki + + + Number ordered list items sequentially, rather than always + with 1 (#4962). + + Remove extra indentation on lists (#4963). + + * Text.Pandoc.Writers.EPUB: Use metadata field `css` instead of + `stylesheet` (Mauro Bieg, #4990). + + * Text.Pandoc.Writers.Markdown: Ensure blank between raw block and + normal content (#4629). Otherwise a raw block can prevent a + paragraph from being recognized as such. + + * Text.Pandoc.Writers.Ms + + + Removed old `escapeBar`. We don't need this now that we use + `@` for math delim. + + Moved common code to Text.Pandoc.Writers.Roff and to + Text.Pandoc.RoffChar. + + Move `splitSentences` to Text.Pandoc.Shared (to avoid duplication + with the man writer). + + * Text.Pandoc.Writers.Muse (Alexander Krotov). + + + Add support for grid tables. + + Fix Muse writer style. + + Use `length` instead of `realLength` to calculate definition + indentation. Muse parsers don't take character width into + account when calculating indentation. + + Do not insert newline before lists. + + Use lightweight markup after `</em>` tag. + + * New unexported module Text.Pandoc.Writers.Roff, providing functions + useful for all roff format writers (man, ms). + + * Text.Pandoc.Lua + + + Move globals handling to separate module Text.Pandoc.Lua.Global + (Albert Krewinkel). + + + Lua filter internals: push Shared.Element as userdata (Albert + Krewinkel). Hierarchical Elements were pushed to Lua as plain + tables. This is simple, but has the disadvantage that marshaling + is eager: all child elements will be marshaled as part of the + object. Using a Lua userdata object instead allows lazy access + to fields, causing content marshaling just (but also each time) + when a field is accessed. Filters which do not traverse the full + element contents tree become faster as a result. + + [default template changes] + + * LaTeX template: add variable hyperrefoptions(#4925, Mathias Walter). + Introduce a new variable `hyperrefoptions` to pass to the hyperref + package. This allows us (for example) to specify `hyperrefoptions: + linktoc=all` in a YAML block. + + * revealjs template: Fix typo in the socket.io javascript plugin (#5006, + Yoan Blanc). + + * Text.Pandoc.Lua.Util: add missing docstring to `defineHowTo` + (Albert Krewinkel). + + * data/pandoc.lua: add datatype ListAttributes (Albert Krewinkel) + + * data/sample.lua: replace custom pipe function with pandoc.utils.pipe + (Albert Krewinkel). + + [documentation improvements] + + * INSTALL.md + + + Add chromeos install instructions (#4958) (Evan Pratten). + + Add note about TinyTeX. + + * MANUAL.txt + + + Change `groff` -> `roff`. + + Implement `--ascii` for Markdown writer. + + Clarify LaTeX image dimensions output (Mauro Bieg). + + * doc/customizing-pandoc.md: added skeleton (Mauro Bieg, #3288). + + * doc/getting-started.md: Added title to test1.md to avoid warning. + + * doc/lua-filters.md: merge type references into main document, + fix description of Code.text (Albert Krewinkel). + + [build infrastructure improvements] + + * Makefile + + + Makefile: added quick-cabal, full-cabal targets. + + Make .msi download targets insensitive to order of appveyor builds. + + * Update benchmarks for ghc 8.6.1. + + * pandoc.cabal: + + + Enable more compiler warnings (Albert Krewinkel). + + Make base lower bound 4.8. + + Bump upper bound for QuickCheck. + + Bump upper bound for binary. + + Updated version bounds for containers and haddock-library (#4974). + + Added docx/docPropos/custom.xml to cabal data-files. + + Require skylighting 0.7.4 (#4920). + + New dependency on unicode-transforms package for normalization. + + * Improved .travis.yml testing and test with GHC 8.6.1 (Albert Krewinkel). + + * Added `tools/changelog-helper.sh`. + + * Added test/grofftest.sh for testing the man reader on real man pages. + pandoc (2.3.1) * RST reader: |