pandoc (2.6) PROVISIONAL * Implement task lists (#3051, Mauro Bieg). Added `task_lists` extension. Task lists are supported from markdown and gfm input. They should work, to some degree, in all output formats, though in most formats you'll get a bullet list with a unicode character for the box. In HTML, you get checkboxes and in LaTeX/PDF output, a box is used as the list marker. API changes: + Added constructor `Ext_task_lists` to `Extension`. + Added `taskListItemFromAscii` and `taskListItemToAscii` to Text.Pandoc.Shared. * Add DokuWiki reader (#1792, Alexander Krotov). This adds Text.Pandoc.Readers.DokuWiki [API change], and adds `dokuwiki` as an input format. * HTML reader: handle empty `start` attribute (see #5162). * RST reader: + Change treatment of `number-lines` directive (Brian Leung, #5207). Directives of this type without numeric inputs should not have a `startFrom` attribute; with a blank value, the writers can produce extra whitespace. + Removed superfluous `sourceCode` class on code blocks (#5047). + Handle `sourcecode` directive as synonynm for `code` (#5204). * Markdown reader: + Remove `sourceCode` class for literate Haskell code blocks (#5047). Reverse order of `literate` and `haskell` classes on code blocks when parsing literate Haskell, so `haskell` is first. * Org reader: + Handle `minlevel` option differently (#5190, Brian Leung). When `minlevel` exceeds the original minimum level observed in the file to be included, every heading should be shifted rightward. + Allow for case of `:minlevel == 0` (#5190). + Fix treatment of links to images (#5191, Albert Krewinkel). Links with descriptions which are pointing to images are no longer parsed as inline images, but as links. * TWiki reader: Fix performance issue with underscores (#3921). * LaTeX reader: + Remove `sourceCode` class for literate Haskell code blocks (#5047). Reverse order of `literate` and `haskell` classes on code blocks when parsing literate Haskell, so `haskell` is first. + Support `\DeclareMathOperator` (#5149). + Support `\inputminted` (#5103). * Man reader: + Use `mapLeft` from Shared instead of defining own. * Docx reader (Jesse Rosenthal): + Handle level overrides (#5134). * Docx writer (Jesse Rosenthal): + Make Level into a real type, instead of an alias for a tuple. * ICML writer (Mauro Bieg): + Support custom-styles (#5137, see #2106). + Support unnumbered headers. closes #5140 * Org writer: preserve line-numbering for example and code blocks (Brian Leung). * Man/Ms writers: don't escape `-` as `\-`. The `\-` gets rendered in HTML and PDF as a unicode minus sign. * RST writer: don't wrap simple table header lines (#5128). * Asciidoc writer: Shorter delimiters for tables, blockquotes (#4364). This matches asciidoctor reference docs. * Dokuwiki writer: Remove automatic `:` prefix before internal image links (#5183, Damien Clochard). This prevented users from making relative image links. * Zimwiki writer: remove automatic colon prefix before internal images (#5183, Damien Clochard). * MediaWiki writer: fix caption, use 'thumb' instead of 'frame' (#5105). Captions used to have the word 'caption' prepended; this has been removed. Also, 'thumb' is used instead of 'frame' to allow images to be resized. * reveal.js writer: + Ensure that we don't get > 2 levels of section nesting, even with slide level > 2 (#5168). + If slide level == N but there is no N-level header, make sure the next header with level > N gets treated as a slide and put in a section, rather than remaining loose (#5168). * Markdown writer: + Make `plain` RawBlocks pass through in `plain` output. + Include needed whitespace after HTML figure (#5121). We use HTML for a figure in markdown dialects that can't represent it natively. * Commonmark writer: + Fix handling of SoftBreak with `hard_line_breaks` (#5195). + Implement `--toc` (`writerTableOfContents`) in commonmark/gfm writers (#5172). * EPUB writer: + Ensure that picture transforms are done on metadata too. + Small fixes to `nav.xhtml`: Add 'landmarks' id attribute to the landmarks nav. Replace old default CSS removing numbers from ol.toc li with new rules that match `nav#toc ol, nav#landmarks ol`. We keep the `toc` class on `ol` for backwards compatibility. * LaTeX writer: + Make raw content marked `beamer` pass through in `beamer` output (pandoc/lua-filters#40). + Beamer: avoid duplicated `fragile` property in some cases (#5208). * RTF writer: use `toTableOfContents` from Shared to replace old duplicated code. * Pptx writer: use `toTableOfContents` from Shared to replace old duplicated code. * Custom writers: + Allow '-' in filenames for custom lua writers (#5187). + sample.lua: add `SingleQuoted`, `DoubleQuoted` (#5104). * reveal.js template: Add `zoomKey` config (#4249). * HTML5 template: Remove unnecessary type="text/css" on style and link for HTML5 (#5146). * LaTeX template (Andrew Dunning) + Prevent fontspec from scaling `mainfont` to match the default font, Latin Modern. For example, a main font set to 12pt could previously appear between 11pt to 13pt depending on its design. To return to the earlier rendering, use `-V mainfontoptions="Scale=MatchLowercase"` (#5212, #5218). + Display monospaced fonts without TeX ligatures when using `--pdf-engine=lualatex`. It now matches the behaviour of other engines (#5212, #5218). + Remove the deprecated `romanfont` variable. The functionality of `mainfont` is identical (#5218). + Render `\subtitle` with the standard document classes. Previously, `subtitle` only appeared when using the KOMA-Script classes or Beamer (#5213). + Use Babel instead of Polyglossia for LuaLaTeX. This avoids several language selection problems, notably with retaining French spacing conventions when switching to a verbatim environment or another language; and in printing Greek text without hyphenation (#5193). + Use the [`xurl`](https://ctan.org/pkg/xurl) package if available, improving the appearance of URLs by allowing them to break at additional points. Requires TeX Live 2018 or later; run `tlmgr update --all` if you experience problems with URLs appearing after link text (#5193). + Use [`bookmark`](https://ctan.org/pkg/bookmark) if available, which can correct the levels of headings where `hyperref` cannot: see the [KOMA-Script 3.26 release notes](https://komascript.de/release3.26) (#5193). + Require the [`xcolor`](https://ctan.org/pkg/xcolor) package to avoid a possible error when using additional packages alongside footnotes in tables (#5193, closes #4861). + Remove obsolete `fixltx2e` package, which has no functionality with TeX Live 2015 or later (#5193). + Allow multiple `fontfamilies.options` (#5193, closes #5194). + Reindent file (#5193). * LaTeX template: let KOMA document class handle parskip when applicable (#5143, Enno). * Text.Pandoc.Readers: Changed types of `readJSON`; it now runs in an instance of PandocMonad, like the other readers and writers. [API change] * Text.Pandoc.Writers: Changed types of `writeJSON`; it now runs in an instance of PandocMonad, like the other readers and writers. [API change] * Text.Pandoc.Error: Added `PandocUTF8DecodingError` constructor for `PandocError`. [API change] * Text.Pandoc.Writers.Shared - add `toTableOfContents`. [API change] This is refactored out from the Markdown writer. It can be used in other writers to create a table of contents. * Improve error messages for UTF-8 decoding errors. Now we give the filename and byte offset (#4765). * Text.Pandoc.XML: Strip out illegal XML characters in `escapeXMLString` (#5119). * Text.Pandoc.Process: update `pipeProcess` (Albert Krewinkel). The implementation of `pipeProcess` was rewritten to fix sporadic failures caused by prematurely closed pipes. * Use `safeRead` instead of `read` everywhere in the code (John MacFarlane, Mauro Bieg, #5162, #5180). * Text.Pandoc.SelfContained: Decompress `.svgz` when converting to `data:` URI (#5163, Alexander Krotov). * Text.Pandoc.Parsing: Remove unused `HasHeaderMap` (#5175, Alexander Krotov). [API change] * Simplify/fix reading of `--metadata` values on command line to avoid problems relating to hvr/HsYAML#7 (#5177). * Removed custom Setup.hs, use build-type: simple. The only thing we gained from the custom build was automatic installation of the man page when using 'cabal install'. But custom builds cause problems, e.g., with cross-compilation. Installation of the man page is better handled by packagers. Note to packagers (e.g. Debian): it may be necessary to add a step installing the man page with the next release. * Allow latest http-client, tasty, zip-archive, Glob. * Require skylighting >= 0.7.5, adding support for sml, J, typescript. * Tests: Cleaned up `findPandoc` in `Tests.Helpers`, so it works well with cabal v2. * INSTALL.md: + Use button for installer links (John MacFarlane, Mauro Bieg, #5167). + Fix links and bump required stack version (max). + Improve installation notes on associated software (Andrew Dunning). Includes explanation of how to install related tools with package managers (since the method of installing `rsvg-convert` is not obvious). * doc/org.md: improve documentation of org features (Albert Krewinkel). * MANUAL: + Clarify automatic identifiers (#5201). We remove non-alphanumerics. This includes, e.g., emojis. + Fix example for Div with id (Geoffrey Ely). + Update list of LaTeX packages used. + Make it clear that `hard_line_breaks` works in `gfm` (see #5195). * trypandoc: Fix CSS and viewport. pandoc (2.5) * Text.Pandoc.App: split into several unexported submodules (Albert Krewinkel): Text.Pandoc.App.FormatHeuristics, Text.Pandoc.App.Opt, Text.Pandoc.App.CommandLineOptions, Text.Pandoc.App.OutputSettings. This is motivated partly by the desire to reduce recompilations when something is modified, since App previously depended on virtually every other module. * Text.Pandoc.Extensions + Semantically, `gfm_auto_identifiers` is now a modifier of `auto_identifiers`; for identifiers to be set, `auto_identifiers` must be turned on, and then the type of identifier produced depends on `gfm_auto_identifiers` and `ascii_identifiers` are set. Accordingly, `auto_identifiers` is now added to `githubMarkdownExtensions` (#5057). + Remove `ascii_identifiers` from `githubMarkdownExtensions`. GitHub doesn't seem to strip non-ascii characters any more. * Text.Pandoc.Lua.Module.Utils (Albert Krewinkel) + Test AST object equality via Haskell (#5092). Equality of Lua objects representing pandoc AST elements is tested by unmarshalling the objects and comparing the result in Haskell. A new function `equals` which performs this test has been added to the `pandoc.utils` module. + Improve stringify. Meta value strings (MetaString) and booleans (MetaBool) are now converted to the literal string and the lowercase boolean name, respectively. Previously, all values of these types were converted to the empty string. * Text.Pandoc.Parsing: Remove Functor and Applicative constraints where Monad already exists (Alexander Krotov). * Text.Pandoc.Pretty: Don't render BreakingSpace at end of line or beginning of line (#5050). * Text.Pandoc.Readers.Markdown + Fix parsing of citations, quotes, and underline emphasis after symbols. Starting with pandoc 2.4, citations, quoted inlines, and underline emphasis were no longer recognized after certain symbols, like parentheses (#5099, #5053). + In pandoc 2.4, a soft break after an abbreviation would be relocated before it to allow for insertion of a nonbreaking space after the abbreviation. This behavior is here reverted. A soft break after an abbreviation will remain, and no nonbreaking space will be added. Those who care about this issue should take care not to end lines with an abbreviation, or to insert nonbreaking spaces manually. * Text.Pandoc.Readers.FB2: Do not throw error for unknown elements in `` (Alexander Krotov). Some libraries include custom elements in their FB2 files. * Text.Pandoc.Readers.HTML + Allow `tfoot` before body rows (#5079). + Parse `` as a Span with class "small" (#5080). + Allow thead containing a row with `td` rather than `th` (#5014). * Text.Pandoc.Readers.LaTeX + Cleaned up handling of dimension arguments. Allow decimal points, preceding space. + Don't allow arguments for verbatim, etc. + Allow space before bracketed options. + Allow optional arguments after `\\` in tables. + Improve parsing of `\tiny`, `\scriptsize`, etc. Parse as raw, but know that these font changing commands take no arguments. * Text.Pandoc.Readers.Muse + Trim whitespace before parsing grid table cells (Alexander Krotov). + Add grid tables support (Alexander Krotov). * Text.Pandoc.Shared + For bibliography match Div with id `refs`, not class `references`. This was a mismatch between pandoc's docx, epub, latex, and markdown writers and the behavior of pandoc-citeproc, which actually looks for a div with id `refs` rather than one with class `references`. + Exactly match GitHub's identifier generating algorithm (#5057). + Add parameter for `Extensions` to `uniqueIdent` and `inlineListToIdentifier` (#5057). [API change] This allows these functions to be sensitive to the settings of `Ext_gfm_auto_identifiers` and `Ext_ascii_identifiers`, and allows us to use `uniqueIdent` in the CommonMark reader, replacing custom code. It also means that `gfm_auto_identifiers` can now be used in all formats. * Text.Pandoc.Writers.AsciiDoc + Use `.`+ as list markers to support nested ordered lists (#5087). + Support list number styles (#5089). + Render Spans using `[#id .class]#contents#` (#5080). * Text.Pandoc.Writers.CommonMark + Respect `--ascii` (#5043, quasicomputational). + Make sure `--ascii` affects quotes, super/subscript. * Text.Pandoc.Writers.Docx + Fix bookmarks to headers with long titles (#5091). Word has a 40 character limit for bookmark names. In addition, bookmarks must begin with a letter. Since pandoc's auto-generated identifiers may not respect these constraints, some internal links did not work. With this change, pandoc uses a bookmark name based on the SHA1 hash of the identifier when the identifier isn't a legal bookmark name. + Add bookmarks to code blocks (Nikolay Yakimov). + Add bookmarks to images (Nikolay Yakimov). + Refactor common bookmark creation code into a function (Nikolay Yakimov). * Text.Pandoc.Writers.EPUB: Handle calibre metadata (#5098). Nodes of the form are now included from an epub XML metadata file. You can also include this information in your YAML metadata, like so: calibre: series: Classics on War and Policitics In addition, ibooks-specific metadata can now be included via an XML file. (Previously, it could only be included via YAML metadata, see #2693.) * Text.Pandoc.Writers.HTML: Use plain `"` instead of `"` outside of attributes. * Text.Pandoc.Writers.ICML: Consolidate adjacent strings, inc. spaces. This avoids splitting up the output unnecessarily into separate elements. * Text.Pandoc.Writers.LaTeX: Don't emit `[<+->]` unless beamer output, even if `writerIncremental` is True (#5072). * Text.Pandoc.Writers.Muse (Alexander Krotov). + Output tables as grid tables if they have multi-line cells. + Indent simple tables only on the top level. + Output tables with one column as grid tables. + Add support for `--reference-location`. + Internal improvements. * Text.Pandoc.Writers.OpenDocument: Fix list indentation (Nils Carlson, #5095). This was a regression in pandoc 2.4. * Text.Pandoc.Writers.RTF: Fix warnings for skipped raw inlines. * Text.Pandoc.Writers.Texinfo: Add blank line before `@menu` section (#5055). * Text.Pandoc.XML: in `toHtml5Entities`, prefer shorter entities when there are several choices for a particular character. * data/abbreviations + Add additional abbreviations (Andrew Dunning) Many of these borrowed from the Chicago Manual of Style 10.42, 'Scholarly abbreviations'. * Templates + Asciidoc template: add :lang: to title header is lang is set in metadata (#5088). * pandoc.cabal: Add cabal flag `derive_json_via_th` (Albert Krewinkel) Disabling the flag will cause derivation of ToJSON and FromJSON instances via GHC Generics instead of Template Haskell. The flag is enabled by default, as deriving via Generics can be slow (see #4083). * trypandoc: + Tweaked drop-down lists. + Put link to site in footer. + Preselect output format. + Update on change of in or out format. + Add man input format. * MANUAL.txt: + Fix outdated description of latex_macros extension. + Clarified placement of bibliography. + Added "A note on security." + Fix note on curly brace syntx for locators. + Document new explicit syntax for citeproc locators. + Remove confusing cross-links for some extensions. + Don't put pandoc in code ticks in heading. + Document that `--ascii` works for gfm and commonmark too. + Add `man` to `--from` options. * doc/customizing-pandoc.md: various improvements (Mauro Bieg). 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). * AsciiDoc writer: always use single-line section headers, instead of the old underline style (#5038). Previously the single-line style would be used if `--atx-headers` was specified, but now it is always used. * 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. + Add `ToString` typeclass (Alexander Krotov). * 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 that is a `ToString` instance (Alexander Krotov). * 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. + Split command line parsing code into a separate unexported module, Text.Pandoc.App.CommandLineOptions (Albert Krewinkel). * 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). + Parse `Text` without converting to `[Char]` (Alexander Krotov). * Text.Pandoc.Readers.Creole: Parse `Text` without converting to `[Char]` (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.AsciiDoc: Prevent illegal nestings. Adjust header levels so that n+1 level headers are only found under n level headers, and the top level is 1. * 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 `` 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). + Add variable `romanfont`, `romanfontoptions` (#4665, OvidiusCicero). * AsciiDoc template: use single-line style for title. * 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: + Parse RST inlines containing newlines (#4912, Francesco Occhipinti). This eliminates a regression introduced after pandoc 2.1.1, which caused inline constructions containing newlines not to be recognized. + Fix bug with internal link targets (#4919). They were gobbling up indented content underneath. * Markdown reader: distinguish autolinks in the AST. With this change, autolinks are parsed as Links with the `uri` class. (The same is true for bare links, if the `autolink_bare_uris` extension is enabled.) Email autolinks are parsed as Links with the `email` class. This allows the distinction to be represented in the AST. * Org reader: + Force inline code blocks to honor export options (Brian Leung). + Parse empty argument array in inline src blocks (Brian Leung). * Muse reader (Alexander Krotov): + Added additional tests. + Do not allow code markup to be followed by digit. + Remove heading level limit. + Simplify `` tag parsers + Parse Text instead of String. Benchmark shows 7% improvement. + Get rid of HTML parser dependency. + Various code improvements. * ConTeXt writer: change `\` to `/` in Windows image paths (#4918). We do this in the LaTeX writer, and it avoids problems. Note that `/` works as a LaTeX path separator on Windows. * LaTeX writer: + Add support for multiprenote and multipostnote arguments with `--biblatex` (Brian Leung, #4930). The multiprenotes occur before the first prefix of a multicite, and the multipostnotes follow the last suffix. + Fix a use of `last` that might take empty list. If you ran with `--biblatex` and have an empty document (metadata but no blocks), pandoc would previously raise an error because of the use of `last` on an empty list. * RTF writer: Fix build failure with ghc-8.6.1 caused by missing MonadFail instance (Jonas Scholl). * ODT Writer: Improve table header row style handling (Nils Carlson). This changes the way styles for cells in the header row and normal rows are handled in ODT tables. Previously a new (but identical) style was generated for every table, specifying the style of the cells within the table. After this change there are two style definitions for table cells, one for the cells in the header row, one for all other cells. This doesn't change the actual styles, but makes post-processing changes to the table styles much simpler as it is no longer necessary to introduce new styles for header rows and there are now only two styles where there was previously one per table. * HTML writer: + Don't add `uri` class to presumed autolinks. Formerly the `uri` class was added to autolinks by the HTML writer, but it had to guess what was an autolink and could not distinguish `[http://example.com](http://example.com)` from ``. It also incorrectly recognized `[pandoc](pandoc)` as an autolink. Now the HTML writer simply passes through the `uri` attribute if it is present, but does not add anything. + Avoid adding extra section nestings for revealjs. Previously revealjs title slides at level (slidelevel - 1) were nested under an extra section element, even when the section contained no additional (vertical) content. That caused problems for some transition effects. + Omit unknown attributes in EPUB2 output. For example, `epub:type` attributes should not be passed through, or the epub produced will not validate. * JATS writer: remove 'role' attribute on 'bold' and 'sc' elements (#4937). The JATS spec does not allow these. * Textile writer: don't represent `uri` class explicitly for autolinks (#4913). * Lua filters (Albert Krewinkel): + Cleanup filter execution code. + Better error on test failure. * HTML, Muse reader tests: reduce time taken by round-trip test. * Added cabal.project. * MANUAL: `epub:type` is only useful for epub3 (Maura Bieg). * Use hslua v1.0.0 (Albert Krewinkel). * Fix `translations/ru` to use modern Russian orthography (Ivan Trubach). * Build Windows binary using ghc 8.6.1 and cabal new-build. This fixes issues with segfaults in the 32-bit Windows binaries (#4283). pandoc (2.3) * Add `--metadata-file` option (Mauro Bieg, #1960), which allows users to specify metadata in a YAML file, regardless of the input format (#1960). * Text.Pandoc.Writers.Shared: export `isDisplayMath` (API change). * Text.Pandoc.Readers.Markdown: export `yamlToMeta` (API change, Mauro Bieg). * Text.Pandoc.Readers.LaTeX.Types: + New type `ArgSpec` (API change). + Second parameter of `Macro` constructor is now `[ArgSpec]` instead of `Int` (API change). * Markdown reader: + Use `tex` instead of `latex` for raw tex-ish content. We can't always tell if it's LaTeX, ConTeXt, or plain TeX. Better just to use `tex` always. Note that if `context` or `latex` specifically is desired, you can still force that in a markdown document by using the raw attribute. Note that this change may affect some filters, if they assume that raw tex parsed by the Markdown reader will be RawBlock (Format `latex`). In most cases it should be trivial to modify the filters to accept `tex` as well. + Refactor and reorganize YAML code (Mauro Bieg). + Make `example_lists` work for interrupted lists without `startnum` (#4908). * HTML reader: + Parse `` or a style contains `. 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 explicit 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. * 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` pandoc (1.19.2) * Use skylighting library instead of highlighting-kate for syntax highlighting. Skylighting is faster and more accurate (#3363). Later we'll be able to add features like warning messages, dynamic loading of xml syntax definitions, and dynamic loading of themes. * Added a new highlight style, `breezeDark`. * Text.Pandoc.Highlighting: Update list of `listings` languages (#3374). This allows more languages to be used when using the `--listings` option. * OpenDocument writer: + Small refactoring. Removed separate 'parent' parameter in paraStyle. + Don't profilerate text styles unnecessarily (#3371). This change makes the writer create only as many temporary text styles as are absolutely necessary. It also consolidates adjacent nodes with the same style. * Org reader (Albert Krewinkel): + Allow short hand for single-line raw blocks (Albert Krewinkel, #3366). Single-line raw blocks can be given via `#+FORMAT: raw line`, where `FORMAT` must be one of `latex`, `beamer`, `html`, or `texinfo`. + Accept org-ref citations followed by commas (Albert Krewinkel). Bugfix for an issue which, whenever the citation was immediately followed by a comma, prevented correct parsing of org-ref citations. + Ensure emphasis markup can be nested. Nested emphasis markup (e.g. `/*strong and emphasized*/`) was interpreted incorrectly in that the inner markup was not recognized. + Remove pipe char irking the haddock coverage tool (Albert Krewinkel). * Docx reader: Empty header should be list of lists (Jesse Rosenthal). In the past, the docx reader wrote an empty header as an empty list. It should have the same width as a row (and be filled with empty cells). * MediaWiki reader: + Improved handling of display math (#3362). Sometimes display math is indented with more than one colon. Previously we handled these cases badly, generating definition lists and missing the math. + Fix quotation mark parsing (#3336, tgkokk). Change MediaWiki reader's behavior when the smart option is parsed to match other readers' behavior. * Markdown reader: + Fixed `-f markdown_github-hard_line_breaks+escaped_line_breaks` (#3341). Previously this did not properly enable escaped line breaks. + Disallow space between inline code and attributes (#3326, #3323, Mauro Bieg). * DocBook5 writer: make id attribute xml:id, fixes #3329 (#3330, Mauro Bieg). * Added some test cases for ODT reader (#3306, #3308, Hubert Plociniczak). * LaTeX writer: allow tables with empty cells to count as "plain." This addresses a problem of too-wide tables when empty cells are used. Thanks to Joost Kremers for reporting the issue. * Org writer: prefix footnote numbers with `fn:` (Albert Krewinkel). Unprefixed numbers where used by older org-mode versions, but are no longer supported. * HTML writer: don't process pars with empty RawInline, (#1040, #3327, Mauro Bieg). * Markdown writer: Fix display math with `--webtex` (#3298). * Fix sample.lua so it properly handles raw blocks/inlines (#3358, bumper314). * Templates: + default.latex: Moved geometry after hyperref (Václav Haisman). Otherwise PDF sizes can be wrong in some circumstances. + Copied a few changes from default.latex to default.beamer (Wandmalfarbe). + default.latex, default.beamer: Changed position of `\VerbatimNotes` and `fancyvrb`. This fixes hyperlinks on footnotes in documents that contain verbatim in notes (#3361). (Note: the beamer template was updated to match the LaTeX template, but at this point verbatim in notes seems not to work in beamer.) + default.latex: Allow passing `microtypeoptions` to microtype (Václav Haisman). + default.latex: Add hyphen option to url package. + default.docbook5: Fix namespace declarations (Mauro Bieg). * Moved `make_osx_package.sh` to `osx/` directory. * Travis continuous integration: + Fix false positives with dist build. + Speed improvements (Kolen Cheung, #3304, #3357). * MANUAL.txt: + Clarify that blank space is needed around footnotes (#3352). + Fixed typo (#3351, Alexey Rogechev). + Note that `--wrap=auto` does not work in HTML output. + Default `--columns` width is 72, not 80. + Fixed broken links (#3316, Kolen Cheung). + Document usage of `@*` in nocite section (#3333, John Muccigrosso). * INSTALL.md: + Indent code so it's properly formatted (#3335, Bheesham Persaud). + Added instructions for extracting binary from OSX, Windows packages. * CONTRIBUTING.md: Describe labels currently used in issue tracker (Albert Krewinkel). The labels have changed over time, the list of labels is updated to reflect the current set of labels used in the issue tracker. * Rearrange and extend badges in README (Albert Krewinkel, #3354) * Bumped version bounds for dependencies. pandoc (1.19.1) * Set `PANDOC_VERSION` environment variable for filters (#2640). This allows filters to check the pandoc version that produced the JSON they are receiving. * Docx reader: Ensure one-row tables don't have header (#3285, Jesse Rosenthal). Tables in MS Word are set by default to have special first-row formatting, which pandoc uses to determine whether or not they have a header. This means that one-row tables will, by default, have only a header -- which we imagine is not what people want. This change ensures that a one-row table is not understood to be a header only. Note that this means that it is impossible to produce a header-only table from docx, even though it is legal pandoc. But we believe that in nearly all cases, it will be an accidental (and unwelcome) result * HTML reader: + Fixed some bad regressions in HTML table parser (#3280). This regression leads to the introduction of empty rows in some circumstances. + Understand `style=width:` as well as `width` in `col` (#3286). * RST reader: + Print warnings when keys, substitition, notes not found. Previously the parsers failed and we got raw text. Now we get a link with an empty URL, or empty inlines in the case of a note or substitution. + Fix hyperlink aliases (#3283). * Man writer: Ensure that periods are escaped at beginning of line (#3270). * LaTeX writer: Fix unnumbered headers when used with `--top-level` (#3272, Albert Krewinkel). Fix interaction of top-level divisions `part` or `chapter` with unnumbered headers when emitting LaTeX. Headers are ensured to be written using stared commands (like `\subsection*{}`). * LaTeX template: use comma not semicolon to separate keywords for `pdfkeywords`. Thanks to Wandmalfarbe. * Markdown writer: Fixed incorrect word wrapping (#3277). Previously pandoc would sometimes wrap lines too early due to this bug. * Text.Pandoc.Pretty: Added `afterBreak` [API change]. This makes it possible to insert escape codes for content that needs escaping at the beginning of a line. * Removed old MathMLInHTML.js from 2004, which should no longer be needed for MathML with modern browsers. * Fixed tests with dynamic linking (#2709). * Makefile: Use stack instead of cabal for targets. This is just a convenience for developers. * Fixed bash completion of filenames with space (#2749). * MANUAL: improved documentation on how to create a custom `reference.docx`. * Fix minor spelling typos in the manual (#3273, Anthony Geoghegan) pandoc (1.19) * Changed resolution of filter paths. + We now first treat the argument of `--filter` as a full (absolute or relative) path, looking for a program there. If it's found, we run it. + If not, and if it is a simple program name or a relative path, we try resolving it relative to `$DATADIR/filters`. + If this fails, then we treat it as a program name and look in the user's PATH. + Removed a hardcoded '/' that may have caused problems with Windows paths. Previously if you did `--filter foo` and you had `foo` in your path and also an executable `foo` in your working directory, the one in the path would be used. Now the one in the working directory is used. In addition, when you do `--filter foo/bar.hs`, pandoc will now find a filter `$DATADIR/filters/foo/bar.hs` -- assuming there isn't a `foo/bar.hs` relative to the working directory. * Allow `file://` URIs as arguments (#3196). Also improved default reader format detection. Previously with a URI ending in .md or .markdown, pandoc would assume HTML input. Now it treats these as markdown. * Allow to overwrite top-level division type heuristics (#3258, Albert Krewinkel). Pandoc uses heuristics to determine the most reasonable top-level division type when emitting LaTeX or Docbook markup. It is now possible to overwrite this implicitly set top-level division via the `top-level-division` command line parameter. * Text.Pandoc.Options \[API changes\]: + Removed `writerStandalone` field in `WriterOptions`, made `writerTemplate` a `Maybe` value. Previously setting `writerStandalone = True` did nothing unless a template was provided in writerTemplate. Now a fragment will be generated if `writerTemplate` is `Nothing`; otherwise, the specified template will be used and standalone output generated. + `Division` has been renamed `TopLevelDivision` (#3197). The `Section`, `Chapter`, and `Part` constructors were renamed to `TopLevelSection`, `TopLevelChapter`, and `TopLevelPart`, respectively. An additional `TopLevelDefault` constructor was added, which is now also the new default value of the `writerTopLevelDivision` field in `WriterOptions`. * Improved error if they give wrong arg to `--top-level-division`. * Use new module from texmath to lookup MS font codepoints in Docx reader. Removed unexported module Text.Pandoc.Readers.Docx.Fonts. Its code now lives in texmath (0.9). * DocBook reader: Fixed xref lookup (#3243). It previously only worked when the qnames lacked the docbook namespace URI. * HTML reader: + Improved table parsing (#3027). We now check explicitly for non-1 rowspan or colspan attributes, and fail when we encounter them. Previously we checked that each row had the same number of cells, but that could be true even with rowspans/colspans. And there are cases where it isn't true in tables that we can handle fine -- e.g. when a tr element is empty. So now we just pad rows with empty cells when needed. + Treat `` as MathML by default unless something else is explicitly specified in xmlns. Provided it parses as MathML, of course. Also fixed default which should be to inline math if no display attribute is used. + Only treat "a" element as link if it has href (#3226). Otherwise treat as span. * Docx reader (Jesse Rosenthal): + Add a placeholder value for CHART. We wrap `[CHART]` in a ``. Note that it maps to inlines because, in docx, anything in a drawing tag can be part of a larger paragraph. + Be more specific in parsing images We not only want `w:drawing`, because that could also include charts. Now we specify `w:drawing/pic:pic`. This shouldn't change behavior at all, but it's a first step toward allowing other sorts of drawing data as well. + Abstract out function to avoid code repetition. + Update tests for img title and alt (#3204). + Handle Alt text and titles in images. We use the "description" field as alt text and the "title" field as title. These can be accessed through the "Format Picture" dialog in Word. + Docx reader utils: handle empty namespace in `elemName`. Previously, if given an empty namespace `(elemName ns "" "foo")` `elemName` would output a QName with a `Just ""` namespace. This is never what we want. Now we output a `Nothing`. If someone *does* want a `Just ""` in the namespace, they can enter the QName value explicitly. * ODT reader/writer: + Inline code when text has a special style (Hubert Plociniczak). When a piece of text has a text `Source_Text` then we assume that this is a piece of the document that represents a code that needs to be inlined. Adapted the writer to also reflect that change. Previously it was just writing a 'preformatted' text using a non-distinguishable font style. Code blocks are still not recognized by the ODT reader. That's a separate issue. + Infer table's caption from the paragraph (#3224, Hubert Plociniczak). ODT's reader always put empty captions for the parsed tables. This commit 1. checks paragraphs that follow the table definition 2. treats specially a paragraph with a style named 'Table' 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`. * ODT reader: Infer tables' header props from rows (#3199, Hubert Plociniczak). ODT reader simply provided an empty header list which meant that the contents of the whole table, even if not empty, was simply ignored. While we still do not infer headers we at least have to provide default properties of columns. * Markdown reader: + Allow reference link labels starting with `@...` if `citations` extension disabled (#3209). Example: in \[link text\]\[@a\] `link text` isn't hyperlinked because `[@a]` is parsed as a citation. Previously this happened whether or not the `citations` extension was enabled. Now it happens only if the `citations` extension is enabled. + Allow alignments to be specified in Markdown grid tables. For example, +-------+---------------+--------------------+ | Right | Left | Centered | +=========:+:=================+:=============:+ | Bananas | $1.34 | built-in wrapper | +-------+---------------+--------------------+ + Allow Small Caps elements to be created using bracketed spans (as they already can be using HTML-syntax spans) (#3191, Kolen Cheung). * LaTeX reader: + Don't treat `\vspace` and `\hspace` as block commands (#3256). Fixed an error which came up, for example, with `\vspace` inside a caption. (Captions expect inlines.) + Improved table handling. We can now parse all of the tables emitted by pandoc in our tests. The only thing we don't get yet are alignments and column widths in more complex tables. See #2669. + Limited support for minipage. + Allow for `[]`s inside LaTeX optional args. Fixes cases like: + Handle BVerbatim from fancyvrb (#3203). + Handle hungarumlaut (#3201). + Allow beamer-style `<...>` options in raw LaTeX (also in Markdown) (#3184). This allows use of things like `\only<2,3>{my content}` in Markdown that is going to be converted to beamer. * Use pre-wrap for code in dzslides template (Nicolas Porcel). Otherwise overly long code will appear on every slide. * Org reader (Albert Krewinkel): + Respect column width settings (#3246). Table column properties can optionally specify a column's width with which it is displayed in the buffer. Some exporters, notably the ODT exporter in org-mode v9.0, use these values to calculate relative column widths. The org reader now implements the same behavior. Note that the org-mode LaTeX and HTML exporters in Emacs don't support this feature yet, which should be kept in mind by users who use the column widths parameters. + Allow HTML attribs on non-figure images (#3222). Images which are the only element in a paragraph can still be given HTML attributes, even if the image does not have a caption and is hence not a figure. The following will add set the `width` attribute of the image to `50%`: +ATTR\_HTML: :width 50% ======================= \[\[file:image.jpg\]\] + Support `ATTR_HTML` for special blocks (#3182). Special blocks (i.e. blocks with unrecognized names) can be prefixed with an `ATTR_HTML` block attribute. The attributes defined in that meta-directive are added to the `Div` which is used to represent the special block. + Support the `todo` export option. The `todo` export option allows to toggle the inclusion of TODO keywords in the output. Setting this to `nil` causes TODO keywords to be dropped from headlines. The default is to include the keywords. + Add support for todo-markers. Headlines can have optional todo-markers which can be controlled via the `#+TODO`, `#+SEQ_TODO`, or `#+TYP_TODO` meta directive. Multiple such directives can be given, each adding a new set of recognized todo-markers. If no custom todo-markers are defined, the default `TODO` and `DONE` markers are used. Todo-markers are conceptually separate from headline text and are hence excluded when autogenerating headline IDs. The markers are rendered as spans and labelled with two classes: One class is the markers name, the other signals the todo-state of the marker (either `todo` or `done`). * LaTeX writer: + Use `\autocites*` when "suppress-author" citation used. + Ensure that simple tables have simple cells (#2666). If cells contain more than a single Plain or Para, then we need to set nonzero widths and put contents into minipages. + Remove invalid inlines in sections (#3218, Hubert Plociniczak). * Markdown writer: + Fix calculation of column widths for aligned multiline tables (#1911, Björn Peemöller). This also fixes excessive CPU and memory usage for tables when `--columns` is set in such a way that cells must be very tiny. Now cells are guaranteed to be big enough so that single words don't need to line break, even if this pushes the line length above the column width. + Use bracketed form for native spans when `bracketed_spans` enabled (#3229). + Fixed inconsistent spacing issue (#3232). Previously a tight bullet sublist got rendered with a blank line after, while a tight ordered sublist did not. Now we don't get the blank line in either case. + Fix escaping of spaces in super/subscript (#3225). Previously two backslashes were inserted, which gave a literal backslash. + Adjust widths in Markdown grid tables so that they match on round-trip. * Docx writer: + Give full detail when there are errors converting tex math. + Handle title text in images (Jesse Rosenthal). We already handled alt text. This just puts the image "title" into the docx "title" attr. + Fixed XML markup for empty cells (#3238). Previously the Compact style wasn't being applied properly to empty cells. * HTML writer: + Updated `renderHtml` import from blaze-html. * Text.Pandoc.Pretty: + Fixed some bugs that caused blank lines in tables (#3251). The bugs caused spurious blank lines in grid tables when we had things like `blankline $$ blankline`. + Add exported function `minOffet` \[API change\] (Björn Peemöller). + Added error message for illegal call to `block` (Björn Peemöller). * Text.Pandoc.Shared: + Put `warn` in MonadIO. + `fetchItem`: Better handling of protocol-relative URL (#2635). If URL starts with `//` and there is no "base URL" (as there would be if a URL were used on the command line), then default to http:. * Export Text.Pandoc.getDefaultExtensions \[API change\] (#3178). * In --version, trap error in `getAppUserDataDirectory` (#3241). This fixes a crash with `pandoc --version` on unusual systems with no real user (e.g. SQL Server 2016). * Added weigh-pandoc for memory usage diagnostics (#3169). * Use correct mime types for woff and woff2 (#3228). * Remove make\_travis\_yml.hs (#3235, Kolen Cheung). * changelog: Moved an item that was misplaced in the 1.17.2 section to the 1.18 section where it belongs. * CONTRIBUTING.md: minor change in wording and punctuation (#3252, Kolen Cheung). * Further revisions to manual for `--version` changes (#3244). pandoc (1.18) * Added `--list-input-formats`, `--list-output-formats`, `--list-extensions`, `--list-highlight-languages`, and `--list-highlight-styles` (#3173). Removed list of highlighting languages from `--version` output. Removed list of input and output formats from default `--help` output. * Added `--reference-location=block|section|document` option (Jesse Rosenthal). This determines whether Markdown link references and footnotes are placed at the end of the document, the end of the section, or the end of the top-level block. * Added `--top-level-division=section|chapter|part` (Albert Krewinkel). This determines what a level-1 header corresponds to in LaTeX, ConTeXt, DocBook, and TEI output. The default is `section`. The `--chapters` option has been deprecated in favor of `--top-level-division=chapter`. * Added `LineBlock` constructor for `Block` (Albert Krewinkel). This is now used in parsing RST and Markdown line blocks, DocBook `linegroup`/`line` combinations, and Org-mode `VERSE` blocks. Previously `Para` blocks with hard linebreaks were used. `LineBlock`s are handled specially in the following output formats: AsciiDoc (as `[verse]` blocks), ConTeXt (`\startlines`/`\endlines`), HTML (`div` with a style), Markdown (line blocks if `line_blocks` is enabled), Org-mode (`VERSE` blocks), RST (line blocks). In other output formats, a paragraph with hard linebreaks is emitted. * Allow binary formats to be written to stdout (but not to tty) (#2677). Only works on posix, since we use the unix library to check whether output is to tty. On Windows, pandoc works as before and always requires an output file parameter for binary formats. * Changed JSON output format (Jesse Rosenthal). Previously we used generically generated JSON, but this was subject to change depending on the version of aeson pandoc was compiled with. To ensure stability, we switched to using manually written ToJSON and FromJSON instances, and encoding the API version. **Note:** pandoc filter libraries will need to be revised to handle the format change. Here is a summary of the essential changes: + The toplevel JSON format is now `{"pandoc-api-version" : [MAJ, MIN, REV], "meta" : META, "blocks": BLOCKS}` instead of `[{"unMeta": META}, [BLOCKS]]`. Decoding fails if the major and minor version numbers don't match. + Leaf nodes no longer have an empty array for their "c" value. Thus, for example, a `Space` is encoded as `{"t":"Space"}` rather than `{"t":"Space","c":[]}` as before. * Removed `tests/Tests/Arbitrary.hs` and added a `Text.Pandoc.Arbitrary` module to pandoc-types (Jesse Rosenthal). This makes it easier to use QuickCheck with pandoc types outside of pandoc itself. * Add `bracketed_spans` Markdown extension, enabled by default in pandoc `markdown`. This allows you to create a native span using this syntax: `[Here is my span]{#id .class key="val"}`. * Added `angle_brackets_escapable` Markdown extension (#2846). This is needed because github flavored Markdown has a slightly different set of escapable symbols than original Markdown; it includes angle brackets. * Export `Text.Pandoc.Error` in `Text.Pandoc` [API change]. * Print highlighting-kate version in `--version`. * `Text.Pandoc.Options`: + `Extension` has new constructors `Ext_brackted_spans` and `Ext_angle_brackets_escapable` [API change]. + Added `ReferenceLocation` type [API change] (Jesse Rosenthal). + Added `writerReferenceLocation` field to `WriterOptions` (Jesse Rosenthal). * `--filter`: we now check `$DATADIR/filters` for filters before looking in the path (#3127, Jesse Rosenthal, thanks to Jakob Voß for the idea). Filters placed in this directory need not be executable; if the extension is `.hs`, `.php`, `.pl`, `.js`, or `.rb`, pandoc will run the right interpreter. * For `--webtex`, replace deprecated Google Chart API by CodeCogs as default (Kolen Cheung). * Removed `raw_tex` extension from `markdown_mmd` defaults (Kolen Cheung). * Execute .js filters with node (Jakob Voß). * Textile reader: + Support `bc..` extended code blocks (#3037). Also, remove trailing newline in code blocks (consistently with Markdown reader). + Improve table parsing. We now handle cell and row attributes, mostly by skipping them. However, alignments are now handled properly. Since in pandoc alignment is per-column, not per-cell, we try to devine column alignments from cell alignments. Table captions are also now parsed, and textile indicators for thead and tfoot no longer cause parse failure. (However, a row designated as tfoot will just be a regular row in pandoc.) + Improve definition list parsing. We now allow multiple terms (which we concatenate with linebreaks). An exponential parsing bug (#3020) is also fixed. + Disallow empty URL in explicit link (#3036). * RST reader: + Use Div instead of BlockQuote for admonitions (#3031). The Div has class `admonition` and (if relevant) one of the following: `attention`, `caution`, `danger`, `error`, `hint`, `important`, `note`, `tip`, `warning`. **Note:** This will change the rendering of some RST documents! The word ("Warning", "Attention", etc.) is no longer added; that must be done with CSS or a filter. + A Div is now used for `sidebar` as well. + Skip whitespace before note (Jesse Rosenthal, #3163). RST requires a space before a footnote marker. We discard those spaces so that footnotes will be adjacent to the text that comes before it. This is in line with what rst2latex does. + Allow empty lines when parsing line blocks (Albert Krewinkel). * Markdown reader: + Allow empty lines when parsing line blocks (Albert Krewinkel). + Allow attributes on autolinks (#3183, Daniele D'Orazio). * LaTeX reader: + More robust parsing of unknown environments (#3026). We no longer fail on things like `^` inside options for tikz. + Be more forgiving of non-standard characters, e.g. `^` outside of math. Some custom environments give these a meaning, so we should try not to fall over when we encounter them. + Drop duplicate `*` in bibtexKeyChars (Albert Krewinkel) * MediaWiki reader: + Fix for unquoted attribute values in mediawiki tables (#3053). Previously an unquoted attribute value in a table row could cause parsing problems. + Improved treatment of verbatim constructions (#3055). Previously these yielded strings of alternating Code and Space elements; we now incorporate the spaces into the Code. Emphasis etc. is still possible inside these. + Properly interpret XML tags in pre environments (#3042). They are meant to be interpreted as literal text. * EPUB reader: don't add root path to data: URIs (#3150). Thanks to @lep for the bug report and patch. * Org reader (Albert Krewinkel): + Preserve indentation of verse lines (#3064). Leading spaces in verse lines are converted to non-breaking spaces, so indentation is preserved. + Ensure image sources are proper links. Image sources as those in plain images, image links, or figures, must be proper URIs or relative file paths to be recognized as images. This restriction is now enforced for all image sources. This also fixes the reader's usage of uncleaned image sources, leading to `file:` prefixes not being deleted from figure images. Thanks to @bsag for noticing this bug. + Trim verse lines properly (Albert Krewinkel). + Extract meta parsing code to module. Parsing of meta-data is well separable from other block parsing tasks. Moving into new module to get small files and clearly arranged code. + Read markup only for special meta keys. Most meta-keys should be read as normal string values, only a few are interpreted as marked-up text. + Allow multiple, comma-separated authors. Multiple authors can be specified in the `#+AUTHOR` meta line if they are given as a comma-separated list. + Give precedence to later meta lines. The last meta-line of any given type is the significant line. Previously the value of the first line was kept, even if more lines of the same type were encountered. + Read LaTeX_header as header-includes. LaTeX-specific header commands can be defined in `#+LaTeX_header` lines. They are parsed as format-specific inlines to ensure that they will only show up in LaTeX output. + Set documentclass meta from LaTeX_class. + Set classoption meta from LaTeX_class_options. + Read HTML_head as header-includes. HTML-specific head content can be defined in `#+HTML_head` lines. They are parsed as format-specific inlines to ensure that they will only show up in HTML output. + Respect `author` export option. The `author` option controls whether the author should be included in the final markup. Setting `#+OPTIONS: author:nil` will drop the author from the final meta-data output. + Respect `email` export option. The `email` option controls whether the email meta-field should be included in the final markup. Setting `#+OPTIONS: email:nil` will drop the email field from the final meta-data output. + Respect `creator` export option. The `creator` option controls whether the creator meta-field should be included in the final markup. Setting `#+OPTIONS: creator:nil` will drop the creator field from the final meta-data output. Org-mode recognizes the special value `comment` for this field, causing the creator to be included in a comment. This is difficult to translate to Pandoc internals and is hence interpreted the same as other truish values (i.e. the meta field is kept if it's present). + Respect unnumbered header property (#3095). Sections the `unnumbered` property should, as the name implies, be excluded from the automatic numbering of section provided by some output formats. The Pandoc convention for this is to add an "unnumbered" class to the header. The reader treats properties as key-value pairs per default, so a special case is added to translate the above property to a class instead. + Allow figure with empty caption (Albert Krewinkel, #3161). A `#+CAPTION` attribute before an image is enough to turn an image into a figure. This wasn't the case because the `parseFromString` function, which processes the caption value, would fail on empty values. Adding a newline character to the caption value fixes this. * Docx reader: + Use XML convenience functions (Jesse Rosenthal). The functions `isElem` and `elemName` (defined in Docx/Util.hs) make the code a lot cleaner than the original XML.Light functions, but they had been used inconsistently. This puts them in wherever applicable. + Handle anchor spans with content in headers. Previously, we would only be able to figure out internal links to a header in a docx if the anchor span was empty. We change that to read the inlines out of the first anchor span in a header. + Let headers use existing id. Previously we always generated an id for headers (since they wouldn't bring one from Docx). Now we let it use an existing one if possible. This should allow us to recurs through anchor spans. + Use all anchor spans for header ids. Previously we only used the first anchor span to affect header ids. This allows us to use all the anchor spans in a header, whether they're nested or not (#3088). + Test for nested anchor spans in header. This ensures that anchor spans in header with content (or with other anchor spans inside) will resolve to links to a header id properly. * ODT reader (Hubert Plociniczak) + Include list's starting value. Previously the starting value of the lists' items has been hardcoded to 1. In reality ODT's list style definition can provide a new starting value in one of its attributes. + Infer caption from the text following the image. Frame can contain other frames with the text boxes. + Add `fig:` to title for Image with a caption (as expected by pandoc's writers). + Basic support for images in ODT documents. + Don't duplicate text for anchors (#3143). When creating an anchor element we were adding its representation as well as the original content, leading to text duplication. * DocBook writer: + Include an anchor element when a div or span has an id (#3102). Note that DocBook does not have a class attribute, but at least this provides an anchor for internal links. * LaTeX writer: + Don't use * for unnumbered paragraph, subparagraph. The starred variants don't exist. This helps with part of #3058...it gets rid of the spurious `*`s. But we still have numbers on the 4th and 5th level headers. + Properly escape backticks in verbatim (#3121, Jesse Rosenthal). Otherwise they can cause unintended ligatures like `` ?` ``. + Handle NARRAOW NO-BREAK SPACE into LaTeX (Vaclav Zeman) as `\,`. + Don't include `[htbp]` placement for figures (#3103, Václav Haisman). This allows figure placement defaults to be changed by the user in the template. * HTML writer (slide show formats): In slide shows, don't change slide title to level 1 header (#2221). * TEI writer: remove heuristic to detect book template (Albert Krewinkel). TEI doesn't have `` elements but only generic `` division elements. Checking the template for a trailing `` is nonsensical. * MediaWiki writer: transform filename with underscores in images (#3052). `foo bar.jpg` becomes `foo_bar.jpg`. This was already done for internal links, but it also needs to happen for images. * ICML writer: replace partial function (!!) in table handling (#3175, Mauro Bieg). * Man writer: allow section numbers that are not a single digit (#3089). * AsciiDoc writer: avoid unnecessary use of "unconstrained" emphasis (#3068). In AsciiDoc, you must use a special form of emphasis (double `__`) for intraword emphasis. Pandoc was previously using this more than necessary. * EPUB writer: use stringify instead of plain writer for metadata (#3066). This means that underscores won't be used for emphasis, or CAPS for bold. The metadata fields will just have unadorned text. * Docx Writer: + Implement user-defined styles (Jesse Rosenthal). Divs and Spans with a `custom-style` key in the attributes will apply the corresponding key to the contained blocks or inlines. + Add ReaderT env to the docx writer (Jesse Rosenthal). + Clean up and streamline RTL behavior (Jesse Rosenthal, #3140). You can set `dir: rtl` in YAML metadata, or use `-M dir=rtl` on the command line. For finer-grained control, you can set the `dir` attribute in Div or Span elements. * Org writer (Albert Krewinkel): + Remove blank line after figure caption. Org-mode only treats an image as a figure if it is directly preceded by a caption. + Ensure blank line after figure. An Org-mode figure should be surrounded by blank lines. The figure would be recognized regardless, but images in the following line would unintentionally be treated as figures as well. + Ensure link targets are paths or URLs. Org-mode treats links as document internal searches unless the link target looks like a URL or file path, either relative or absolute. This change ensures that this is always the case. + Translate language identifiers. Pandoc and Org-mode use different programming language identifiers. An additional translation between those identifiers is added to avoid unexpected behavior. This fixes a problem where language specific source code would sometimes be output as example code. + Drop space before footnote markers (Albert Krewinkel, #3162). The writer no longer adds an extra space before footnote markers. * Markdown writer: + Don't emit HTML for tables unless `raw_html` extension is set (#3154). Emit `[TABLE]` if no suitable table formats are enabled and raw HTML is disabled. + Check for the `raw_html` extension before emitting a raw HTML block. + Abstract out note/ref function (Jesse Rosenthal). + Add ReaderT monad for environment variables (Jesse Rosenthal). * HTML, EPUB, slidy, revealjs templates: Use `

` instead of `

` for subtitle, author, date (#3119). Note that, as a result of this change, authors may need to update CSS. * revealjs template: Added `notes-server` option (jgm/pandoc-templates#212, Yoan Blanc). * Beamer template: + Restore whitespace between paragraphs. This was a regression in the last release (jgm/pandoc-templates#207). + Added `themeoptions` variable (Carsten Gips). + Added `beamerarticle` variable. This causes the `beamerarticle` package to be loaded in beamer, to produce an article from beamer slides. (Carsten Gips) + Added support for `fontfamilies` structured variable (Artem Klevtsov). + Added hypersetup options (Jake Zimmerman). * LaTeX template: + Added dummy definition for `\institute`. This isn't a standard command, and we want to avoid a crash when `institute` is used with the default template. + Define default figure placement (Václav Haisman), since pandoc no longer includes `[htbp]` for figures. Users with custom templates will want to add this. See #3103. + Use footnote package to fix notes in tables (jgm/pandoc-templates#208, Václav Haisman). * Moved template compiling/rendering code to a separate library. `doctemplates`. This allows the pandoc templating system to be used independently. * Text.Pandoc.Error: Fix out of index error in `handleError` (Matthew Pickering). The fix is to not try to show the exact line when it would cause an out-of-bounds error as a result of included files. * Text.Pandoc.Shared: Add `linesToBlock` function (Albert Krewinkel). * Text.Pandoc.Parsing.emailAddress: tighten up parsing of email addresses. Technically `**@user` is a valid email address, but if we allow things like this, we get bad results in markdown flavors that autolink raw email addresses (see #2940). So we exclude a few valid email addresses in order to avoid these more common bad cases. * Text.Pandoc.PDF: Don't crash with nonexistent image (#3100). Instead, emit the alt text, emphasized. This accords with what the ODT writer currently does. The user will still get a warning about a nonexistent image. * Fix example in API documentation (#3176, Thomas Weißschuh). * Tell where to get tarball in INSTALL (#3062). * Rename README to MANUAL.txt and add GitHub-friendly README.md (Albert Krewinkel, Kolen Cheung). * Replace COPYING with Markdown version COPYING.md from GNU (Kolen Cheung). * MANUAL.txt: + Put note on structured vars in separate paragraph (#2148, Albert Krewinkel). Make it clearer that structured author variables require a custom template + Note that `--katex` works best with `html5` (#3077). + Fix the LaTeX and EPUB links in manual (Morton Fox). + Document `biblio-title` variable. * Improve spacing of footnotes in `--help` output (Waldir Pimenta). * Update KaTeX to v0.6.0 (Kolen Cheung). * Allow latest dependencies. * Use texmath 0.8.6.6 (#3040). * Allow http-client 0.4.30, which is the version in stackage lts. Previously we required 0.5. Remove CPP conditionals for earlier versions. * Remove support for GHC < 7.8 (Jesse Rosenthal). + Remove Compat.Monoid. + Remove an inline monad compatibility macro. + Remove Text.Pandoc.Compat.Except. + Remove directory compat. + Change constraint on mtl. + Remove unnecessary CPP condition in UTF8. + Bump base lower bound to 4.7. + Remove 7.6 build from .travis.yaml. + Bump supported ghc version in CONTRIBUTING.md. + Add note about GHC version support to INSTALL. + Remove GHC 7.6 from list of tested versions (Albert Krewinkel). + Remove TagSoup compat. + Add EOL note to time compat module. Because time 1.4 is a boot library for GHC 7.8, we will support the compatibility module as long as we support 7.8. But we should be clear about when we will no longer need it. + Remove blaze-html CPP conditional. + Remove unnecessary CPP in custom Prelude. pandoc (1.17.2) * Added Zim Wiki writer, template and tests. `zimwiki` is now a valid output format. (Alex Ivkin) * Changed email-obfuscation default to no obfuscation (#2988). + `writerEmailObfuscation` in `defaultWriterOptions` is now `NoObfuscation`. + the default for the command-line `--email-obfuscation` option is now `none`. * Docbook writer: Declare xlink namespace in Docbook5 output (Ivo Clarysse). * Org writer: + Support arbitrary raw inlines (Albert Krewinkel). Org mode allows arbitrary raw inlines ("export snippets" in Emacs parlance) to be included as `@@format:raw foreign format text@@`. + Improve Div handling (Albert Krewinkel). Div blocks handling is changed to make the output look more like idiomatic org mode: - Div-wrapped content is output as-is if the div's attribute is the null attribute. - Div containers with an id but neither classes nor key-value pairs are unwrapped and the id is added as an anchor. - Divs with classes associated with greater block elements are wrapped in a `#+BEGIN`...`#+END` block. - The old behavior for Divs with more complex attributes is kept. * HTML writer: + Better support for raw LaTeX environments (#2758). Previously we just passed all raw TeX through when MathJax was used for HTML math. This passed through too much. With this patch, only raw LaTeX environments that MathJax can handle get passed through. This patch also causes raw LaTeX environments to be treated as math, when possible, with MathML and WebTeX output. * Markdown writer: use raw HTML for simple, pipe tables with linebreaks (#2993). Markdown line breaks involve a newline, and simple and pipe tables can't contain one. * Make --webtex work with the Markdown writer (#1177). This is a convenient option for people using websites whose Markdown flavors don't provide for math. * Docx writer: + Set paragraph to FirstPara after display math (Jesse Rosenthal). We treat display math like block quotes, and apply FirstParagraph style to paragraphs that follow them. These can be styled as the user wishes. (But, when the user is using indentation, this allows for paragraphs to continue after display math without indentation.) + Use actual creation time as doc prop (Jesse Rosenthal). Previously, we had used the user-supplied date, if available, for Word's document creation metadata. This could lead to weird results, as in cases where the user post-dates a document (so the modification might be prior to the creation). Here we use the actual computer time to set the document creation. * LaTeX writer: + Don't URI-escape image source (#2825). Usually this is a local file, and replacing spaces with `%20` ruins things. + Allow 'standout' as a beamer frame option (#3007). `## Slide title {.standout}`. * RST reader: Fixed links with no explicit link text. The link `` ``_ `` should have `foo` as both its link text and its URL. See RST spec at Closes Debian #828167 -- reported by Christian Heller. * Textile reader: + Fixed attributes (#2984). Attributes can't be followed by a space. So, `_(class)emph_` but `_(noclass) emph_`. + Fixed exponential parsing bug (#3020). + Fix overly aggressive interpretation as images (#2998). Spaces are not allowed in the image URL in textile. * LaTeX reader: + Fix `\cite` so it is a NormalCitation not AuthorInText. + Strip off double quotes around image source if present (#2825). Avoids interpreting these as part of the literal filename. * Org reader: + Add semicolon to list of special chars (Albert Krewinkel) Semicolons are used as special characters in citations syntax. This ensures the correct parsing of Pandoc-style citations: `[prefix; @key; suffix]`. Previously, parsing would have failed unless there was a space or other special character as the last character. + Add support for "Berkeley-style" cites (Albert Krewinkel, #1978). A specification for an official Org-mode citation syntax was drafted by Richard Lawrence and enhanced with the help of others on the orgmode mailing list. Basic support for this citation style is added to the reader. + Support arbitrary raw inlines (Albert Krewinkel). Org mode allows arbitrary raw inlines ("export snippets" in Emacs parlance) to be included as `@@format:raw foreign format text@@`. + Remove partial functions (Albert Krewinkel, #2991). Partial functions like `head` lead to avoidable errors and should be avoided. They are replaced with total functions. + Support figure labels (Albert Krewinkel, #2496, #2999). Figure labels given as `#+LABEL: thelabel` are used as the ID of the respective image. This allows e.g. the LaTeX to add proper `\label` markup. + Improve tag and properties type safety (Albert Krewinkel). Specific newtype definitions are used to replace stringly typing of tags and properties. Type safety is increased while readability is improved. + Parse as headlines, convert to blocks (Albert Krewinkel). Emacs org-mode is based on outline-mode, which treats documents as trees with headlines are nodes. The reader is refactored to parse into a similar tree structure. This simplifies transformations acting on document (sub-)trees. * Refactor comment tree handling (Albert Krewinkel). Comment trees were handled after parsing, as pattern matching on lists is easier than matching on sequences. The new method of reading documents as trees allows for more elegant subtree removal. * Support archived trees export options (Albert Krewinkel). Handling of archived trees can be modified using the `arch` option. Archived trees are either dropped, exported completely, or collapsed to include just the header when the `arch` option is nil, non-nil, or `headline`, respectively. * Put export setting parser into module (Albert Krewinkel). Export option parsing is distinct enough from general block parsing to justify putting it into a separate module. * Support headline levels export setting (Albert Krewinkel). The depths of headlines can be modified using the `H` option. Deeper headlines will be converted to lists. * Replace ugly code with view pattern (Albert Krewinkel). Some less-than-smart code required a pragma switching of overlapping pattern warnings in order to compile seamlessly. Using view patterns makes the code easier to read and also doesn't require overlapping pattern checks to be disabled. * Fix parsing of verbatim inlines (Albert Krewinkel, #3016). Org rules for allowed characters before or after markup chars were not checked for verbatim text. This resultet in wrong parsing outcomes of if the verbatim text contained e.g. space enclosed markup characters as part of the text (`=is_substr = True=`). Forcing the parser to update the positions of allowed/forbidden markup border characters fixes this. * LaTeX template: fix for obscure hyperref/xelatex issue. Here's a minimal case: \documentclass[]{article} \usepackage{hyperref} \begin{document} \section{\%á} \end{document} Without this change, this fails on the second invocation of xelatex. This affects inputs this like `# %á` with pdf output via xelatex. * trypandoc: call results 'html' instead of 'result'. This is for better compatibility with babelmark2. * Document MultiMarkdown as input/output format (Albert Krewinkel, #2973). MultiMarkdown was only mentioned as a supported Markdown dialect but not as a possible input or output format. A brief mention is added everywhere the other supported markdown dialects are mentioned. * Document Org mode as a format containing raw HTML (Albert Krewinkel) Raw HTML is kept when the output format is Emacs Org mode. * Implement `RawInline` and `RawBlock` in sample lua custom writer (#2985). * Text.Pandoc.Shared: + Introduce blocksToInlines function (Jesse Rosenthal). This is a lossy function for converting `[Block] -> [Inline]`. Its main use, at the moment, is for docx comments, which can contain arbitrary blocks (except for footnotes), but which will be converted to spans. This is, at the moment, pretty useless for everything but the basic `Para` and `Plain` comments. It can be improved, but the docx reader should probably emit a warning if the comment contains more than this. + Add BlockQuote to blocksToInlines (Jesse Rosenthal). + Add further formats for `normalizeDate` (Jesse Rosenthal). We want to avoid illegal dates -- in particular years with greater than four digits. We attempt to parse series of digits first as `%Y%m%d`, then `%Y%m`, and finally `%Y`. + `normalizeDate` should reject illegal years (Jesse Rosenthal). We only allow years between 1601 and 9999, inclusive. The ISO 8601 actually says that years are supposed to start with 1583, but MS Word only allows 1601-9999. This should stop corrupted word files if the date is out of that range, or is parsed incorrectly. + Improve year sanity check in normalizeDate (Jesse Rosenthal). Previously we parsed a list of dates, took the first one, and then tested its year range. That meant that if the first one failed, we returned nothing, regardless of what the others did. Now we test for sanity before running `msum` over the list of Maybe values. Anything failing the test will be Nothing, so will not be a candidate. * Docx reader: + Add simple comment functionality. (Jesse Rosenthal). This adds simple track-changes comment parsing to the docx reader. It is turned on with `--track-changes=all`. All comments are converted to inlines, which can list some information. In the future a warning will be added for comments with formatting that seems like it will be excessively denatured. Note that comments can extend across blocks. For that reason there are two spans: `comment-start` and `comment-end`. `comment-start` will contain the comment. `comment-end` will always be empty. The two will be associated by a numeric id. + Enable warnings in top-level reader (Jesse Rosenthal). Previously we had only allowed for warnings in the parser. Now we allow for them in the `Docx.hs` as well. The warnings are simply concatenated. + Add warning for advanced comment formatting. (Jesse Rosenthal). We can't guarantee we'll convert every comment correctly, though we'll do the best we can. This warns if the comment includes something other than Para or Plain. + Add tests for warnings. (Jesse Rosenthal). + Add tests for comments (Jesse Rosenthal). We test for comments, using all track-changes options. Note that we should only output comments if `--track-changes=all`. We also test for emitting warnings if there is complicated formatting. * README: update to include track-changes comments. (Jesse Rosenthal) * Improved Windows installer - don't ignore properties set on command-line. See #2708. Needs testing to see if this resolves the issue. Thanks to @nkalvi. * Process markdown extensions on command line in L->R order (#2995). Previously they were processed, very unintuitively, in R->L order, so that `markdown-tex_math_dollars+tex_math_dollars` had `tex_math_dollars` disabled. * Added `secnumdepth` variable to LaTeX template (#2920). * Include table of contents in README.html in Windows package. * Writers: treat SoftBreak as space for stripping (Jesse Rosenthal) In Writers.Shared, we strip leading and trailing spaces for display math. Since SoftBreak's are treated as spaces, we should strip those too. * beamer, latex templates: pass biblatexoptions directly in package load. This allows runtime optinos to be used. Fixes jgm/pandoc-citeproc#201 * CPP workaround for deprecation of `parseUrl` in http-client. * Removed some redundant class constraints. * make_oxs_package.sh - use OSX env variable. * Replaced INSTALL with INSTALL.md, incorporating INSTALL and the old installing page from website. * Added `winpkg` target to Makefile. This downloads the windows package from appveyor and signs it using the key. * Document Org mode as a format containing raw TeX (Albert Krewinkel). Raw TeX is kept verbatim when the output format is Emacs Org mode. * Support math with haddock-library >= 1.4. * Removed `-rtsopts` from library stanza. It has no effect, and Hackage wouldn't accept the package. * Update library dependency versions. pandoc (1.17.1) * New output format: `docbook5` (Ivo Clarysse). * `Text.Pandoc.Options`: Add `writerDocBook5` to `WriterOptions` (API change). * Org writer: + Add :PROPERTIES: drawer support (Albert Krewinkel, #1962). This allows header attributes to be added to org documents in the form of `:PROPERTIES:` drawers. All available attributes are stored as key/value pairs. This reflects the way the org reader handles `:PROPERTIES:` blocks. + Add drawer capability (Carlos Sosa). For the implementation of the Drawer element in the Org Writer, we make use of a generic Block container with attributes. The presence of a `drawer` class defines that the `Div` constructor is a drawer. The first class defines the drawer name to use. The key-value list in the attributes defines the keys to add inside the Drawer. Lastly, the list of Block elements contains miscellaneous blocks elements to add inside of the Drawer. + Use `CUSTOM_ID` in properties (Albert Krewinkel). The `ID` property is reserved for internal use by Org-mode and should not be used. The `CUSTOM_ID` property is to be used instead, it is converted to the `ID` property for certain export format. * LaTeX writer: + Ignore `--incremental` unless output format is beamer (#2843). + Fix polyglossia to babel env mapping (Mauro Bieg, #2728). Allow for optional argument in square brackets. + Recognize `la-x-classic` as Classical Latin (Andrew Dunning). This allows one to access the hyphenation patterns in CTAN's hyph-utf8. + Add missing languages from hyph-utf8 (Andrew Dunning). + Improve use of `\strut` with `\minipage` inside tables (Jose Luis Duran). This improves spacing in multiline tables. + Use `{}` around options containing special chars (#2892). + Avoid lazy `foldl`. + Don't escape underscore in labels (#2921). Previously they were escaped as `ux5f`. + brazilian -> brazil for polyglossia (#2953). * HTML writer: Ensure mathjax link is added when math appears in footnote (#2881). Previously if a document only had math in a footnote, the MathJax link would not be added. * EPUB writer: set `navpage` variable on nav page. This allows templates to treat it differently. * DocBook writer: + Use docbook5 if `writerDocbook5` is set (Ivo Clarysse). + Properly handle `ulink`/`link` (Ivo Clarysse). * EPUB reader: + Unescape URIs in spine (#2924). + EPUB reader: normalise link id (Mauro Bieg). * Docx Reader: + Parse `moveTo` and `moveFrom` (Jesse Rosenthal). `moveTo` and `moveFrom` are track-changes tags that are used when a block of text is moved in the document. We now recognize these tags and treat them the same as `insert` and `delete`, respectively. So, `--track-changes=accept` will show the moved version, while `--track-changes=reject` will show the original version. + Tests for track-changes moving (Jesse Rosenthal). * ODT, EPUB, Docx readers: throw `PandocError` on unzip failure (Jesse Rosenthal) Previously, `readDocx`, `readEPUB`, and `readOdt` would error out if zip-archive failed. We change the archive extraction step from `toArchive` to `toArchiveOrFail`, which returns an Either value. * Markdown, HTML readers: be more forgiving about unescaped `&` in HTML (#2410). We are now more forgiving about parsing invalid HTML with unescaped `&` as raw HTML. (Previously any unescaped `&` would cause pandoc not to recognize the string as raw HTML.) * Markdown reader: + Added bracket syntax for native spans (#168). + Fix pandoc title blocks with lines ending in 2 spaces (#2799). + Added `-s` to markdown-reader-more test. * HTML reader: fixed bug in `pClose`. This caused exponential parsing behavior in documnets with unclosed tags in `dl`, `dd`, `dt`. * MediaWiki reader: Allow spaces before `!` in MediaWiki table header (roblabla). * RST reader: Support `:class:` option for code block in RST reader (Sidharth Kapur). * Org reader (all Albert Krewinkel, except where noted otherwise): + Stop padding short table rows. Emacs Org-mode doesn't add any padding to table rows. The first row (header or first body row) is used to determine the column count, no other magic is performed. + Refactor rows-to-table conversion. This refactors the codes conversing a list table lines to an org table ADT. The old code was simplified and is now slightly less ugly. + Fix handling of empty table cells, rows (Albert Krewinkel, #2616). This fixes Org mode parsing of some corner cases regarding empty cells and rows. Empty cells weren't parsed correctly, e.g. `|||` should be two empty cells, but would be parsed as a single cell containing a pipe character. Empty rows where parsed as alignment rows and dropped from the output. + Fix spacing after LaTeX-style symbols. The org-reader was dropping space after unescaped LaTeX-style symbol commands: `\ForAll \Auml` resulted in `∀Ä` but should give `∀ Ä` instead. This seems to be because the LaTeX-reader treats the command-terminating space as part of the command. Dropping the trailing space from the symbol-command fixes this issue. + Print empty table rows. Empty table rows should not be dropped from the output, so row-height is always set to be at least 1. + Move parser state into separate module. The org reader code has become large and confusing. Extracting smaller parts into submodules should help to clean things up. + Add support for sub/superscript export options. Org-mode allows to specify export settings via `#+OPTIONS` lines. Disabling simple sub- and superscripts is one of these export options, this options is now supported. + Support special strings export option Parsing of special strings (like `...` as ellipsis or `--` as en dash) can be toggled using the `-` option. + Support emphasized text export option. Parsing of emphasized text can be toggled using the `*` option. This influences parsing of text marked as emphasized, strong, strikeout, and underline. Parsing of inline math, code, and verbatim text is not affected by this option. + Support smart quotes export option. Reading of smart quotes can be toggled using the `'` option. + Parse but ignore export options. All known export options are parsed but ignored. + Refactor block attribute handling. A parser state attribute was used to keep track of block attributes defined in meta-lines. Global state is undesirable, so block attributes are no longer saved as part of the parser state. Old functions and the respective part of the parser state are removed. + Use custom `anyLine`. Additional state changes need to be made after a newline is parsed, otherwise markup may not be recognized correctly. This fixes a bug where markup after certain block-types would not be recognized. + Add support for `ATTR_HTML` attributes (#1906). Arbitrary key-value pairs can be added to some block types using a `#+ATTR_HTML` line before the block. Emacs Org-mode only includes these when exporting to HTML, but since we cannot make this distinction here, the attributes are always added. The functionality is now supported for figures. + Add `:PROPERTIES:` drawer support (#1877). Headers can have optional `:PROPERTIES:` drawers associated with them. These drawers contain key/value pairs like the header's `id`. The reader adds all listed pairs to the header's attributes; `id` and `class` attributes are handled specially to match the way `Attr` are defined. This also changes behavior of how drawers of unknown type are handled. Instead of including all unknown drawers, those are not read/exported, thereby matching current Emacs behavior. + Use `CUSTOM_ID` in properties. See above on Org writer changes. + Respect drawer export setting. The `d` export option can be used to control which drawers are exported and which are discarded. Basic support for this option is added here. + Ignore leading space in org code blocks (Emanuel Evans, #2862). Also fix up tab handling for leading whitespace in code blocks. + Support new syntax for export blocks. Org-mode version 9 uses a new syntax for export blocks. Instead of `#+BEGIN_`, where `` is the format of the block's content, the new format uses `#+BEGIN_export ` instead. Both types are supported. + Refactor `BEGIN...END` block parsing. + Fix handling of whitespace in blocks, allowing content to be indented less then the block header. + Support org-ref style citations. The *org-ref* package is an org-mode extension commonly used to manage citations in org documents. Basic support for the `cite:citeKey` and `[[cite:citeKey][prefix text::suffix text]]` syntax is added. + Split code into separate modules, making for cleaner code and better decoupling. * Added `docbook5` template. * `--mathjax` improvements: + Use new CommonHTML output for MathJax (updated default MathJax URL, #2858). + Change default mathjax setup to use `TeX-AMS_CHTML` configuration. This is designed for cases where the input is always TeX and maximal conformity with TeX is desired. It seems to be smaller and load faster than what we used before. See #2858. + Load the full MathJax config to maximize loading speed (KolenCheung). * Bumped upper version bounds to allow use of latest packages and compilation with ghc 8. * Require texmath 0.8.6.2. Closes several texmath-related bugs (#2775, #2310, #2310, #2824). This fixes behavior of roots, e.g. `\sqrt[3]{x}`, and issues with sub/superscript positioning and matrix column alignment in docx. * README: + Clarified documentation of `implicit_header_references` (#2904). + Improved documentation of `--columns` option. * Added appveyor setup, with artifacts (Jan Schulz). * stack.yaml versions: Use proper flags used for texmath, pandoc-citeproc. * LaTeX template: support for custom font families (vladipus). Needed for correct polyglossia operation with Cyrillic fonts and perhaps can find some other usages. Example usage in YAML metadata: fontfamilies: - name: \cyrillicfont font: Liberation Serif - name: \cyrillicfonttt options: Scale=MatchLowercase font: Liberation * Create unsigned msi as build artifact in appveyor build. * On travis, test with ghc 8.0.1; drop testing for ghc 7.4.1. pandoc (1.17.0.3) * LaTeX writer: Fixed position of label in figures (#2813). Previously the label wasn't in the right place, and `\ref` wouldn't work properly. * Added .tei test files to pandoc.cabal so they'll be included in tarball (#2811). * Updated copyright dates. pandoc (1.17.0.2) * Fixed serious regression in `htmlInBalanced`, which caused newlines to be omitted in some raw HTML blocks in Markdown (#2804). pandoc (1.17.0.1) * File scope is no longer used when there are no input files (i.e., when input comes from stdin). Previously file scope was triggered when the `json` reader was specified and input came from `stdin`, and this caused no output to be produced. (Fix due to Jesse Rosenthal; thanks to Fedor Sheremetyev for calling the bug to our attention.) * Improved documentation of templates (#2797). pandoc (1.17) * Added `--file-scope` option (Jesse Rosenthal). By default pandoc operates on multiple files by first concatenating them (around extra line breaks) and then processing the joined file. So it only parses a multi-file document at the document scope. This has the benefit that footnotes and links can be in different files, but for some purposes it is useful to parse the individual files first and then combine their outputs (e.g. when the files use footnotes or links with the same labels). The `--file-scope` option causes pandoc to parse the files first, and then combine the parsed output, instead of combining before parsing. `--file-scope` is selected automatically for binary input files (which cannot be concatenated) and for pandoc json. * Add TEI Writer (Chris Forster) and `tei` output format. * Added a general `ByteStringReader` with warnings, used by the docx reader (API change, Jesse Rosenthal). * Add `readDocxWithWarnings` (API change, Jesse Rosenthal). * Changed type of `Shared.uniqueIdent`'s argument from `[String]` to `Set String.` This avoids performance problems in documents with many identically named headers (API change, #2671). * Removed `tex_math_single_backslash` from `markdown_github` options (#2707). * Make language extensions as well as full language names trigger syntax highlighting. For example, `py` will now work as well as `python` (jgm/highlighting-kate#83). * Added `institute` variable to latex, beamer templates (Fraser Tweedale, Josef Svenningsson). * Docx reader (Jesse Rosenthal): + Handle alternate content. Some word functions (especially graphics) give various choices for content so there can be backwards compatibility. + Don't turn numbered headers into lists. + Docx Reader: Add state to the parser, for warnings + Update feature checklist in source code. + Get rid of `Modifiable` typeclass. + Add tests for adjacent hyperlinks. + Add a "Link" modifier to `Reducible`. We want to make sure that links have their spaces removed, and are appropriately smushed together (#2689). * HTML reader: + Fixed behavior of base tag (#2777). If the base path does not end with slash, the last component will be replaced. E.g. base = `http://example.com/foo` combines with `bar.html` to give `http://example.com/bar.html`. If the href begins with a slash, the whole path of the base is replaced. E.g. base = `http://example.com/foo/` combines with `/bar.html` to give `http://example.com/bar.html`. + Rewrote `htmlInBalanced`. This version avoids an exponential performance problem with ` in a comment or string. + More lenient non-quoted attribute values. Now we accept anything but a space character, quote, or <>. This helps in parsing e.g. www.google.com! + Bare & signs are now parsed as a string. This is a common HTML mistake. + Skip a bare < in malformed HTML. * Removed html2markdown and hsmarkdown. + html2markdown is no longer needed, since you can now pass URI arguments to pandoc and directly convert web pages. (Note, however, that pandoc assumes the pages are UTF8. html2markdown made an attempt to guess the encoding and convert them.) + hsmarkdown is pointless -- a large executable that could be replaced by 'pandoc --strict'. * In most writers, an image in a paragraph by itself is now rendered as a figure, with the alt text as the caption. (Texinfo, HTML, RST, MediaWiki, Docbook, LaTeX, ConTeXt, HTML.) Other images are rendered inline. * Depend on extensible-exceptions. This allows pandoc to be compiled on GHC 6.8. * Added --base-header-level option. For example, --base-header-level=2 will change level 1 headers to level 2, level 2 to level 3, etc. Closes Debian #563416. * Incomplete support for RST tables (simple and grid). Thanks to Eric Kow. Colspans and rowspans not yet supported. * Added accessors (docTitle, docAuthors, docDate) to Meta type. * MediaWiki writer: format links with relative URLs as wikilinks. The new rule: If the link target is an absolute URL, an external link is created. Otherwise, a wikilink is created. * Text.Pandoc.Shared: Export uniqueIdent, and don't allow tilde in identifier. Note: This may break links to sections that involve tildes. * Markdown(+lhs) reader: handle "inverse bird tracks." Inverse bird tracks (<) are used for haskell example code that is not part of the literate Haskell program. Resolves Issue #211. * LaTeX reader: + Recognize '\ ' (interword space). + Recognize nonbreaking space '~'. + Ignore \section, \pdfannot, \pdfstringdef. Ignore alt title in section headers. Don't treat \section as inline LaTeX. Resolves Issue #202. + LaTeX reader: allow any special character to be escaped. Resolves Issue #221. + LaTeX reader: treat \paragraph and \subparagraph as level 4, 5 headers. Resolves Issue #207. * Use template variables for include-before/after. + These options now imply -s; previously they worked also in fragment mode. + Users can now adjust position of include-before and include-after text in the templates. + Default position of include-before moved back (as it was before 1.4) before table of contents. + Resolves Issue #217. * Don't print an empty table header: (all writers). Resolves Issue #210. * HTML, Docbook writer: Use tbody, thead, and cols in tables. * HTML writer: Don't include TOC div if table of contents is empty. * Markdown writer: Fixed citations. Previously the markdown writer printed raw citation codes, e.g. [geach1970], rather than the expanded citations provided by citeproc, e.g. (Geach 1970). Now it prints the expanded citations. This means that the document produced can be processed as a markdown document without citeproc. Thanks to dsanson for reporting, and Andrea Rossato for the patch. * Improved and simplified title block in context template. Previously it caused an error if there was no title. This method should also be easier for users to customize. * Markdown reader: + Treat p., pp., sec., ch., as abbreviations in smart mode. + Disallow blank lines in inline code span. + 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. + 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 requirement was only enforced when the second word started with a capital letter. But it is consistent with the existing documentation and follows the principle of least surprise. Resolves Issue #212. * LaTeX template: redefine labelwidth when using enumerate package. Otherwise the list labels (numbers) often extend past the left margin, which looks bad. * Mediawiki writer: Don't print a "== Notes ==" header before references. This is too English-centric. Writers can provide their own header at the end of the document. * Promoted mediawiki headers. '= head =' is now level 1, '== head ==' level 2, etc. This seems to be correct; it's only by convention that wikipedia articles have level 2 headers at most. Patch due to Eric Kow. * RunTests.hs: Set LANG to a UTF-8 locale. Use 'pandoc --data-dir=' so data files don't need to have been installed. This removes the need to set HOME. * HTML reader: + Handle spaces before . Resolves Issue #216. + Be forgiving in parsing a bare list within a list. The following is not valid xhtml, but the intent is clear:
  1. one
    1. sub
  2. two
We'll treat the
    as if it's in a
  1. . Resolves Issue #215. * Updated INSTALL instructions. cabal method is now promoted. * Updated markdown2pdf man page. It no longer says all pandoc options are accepted. * README/man pages: Removed advice to pipe through tidy before HTML reader. This is obsolete, now that we have a forgiving HTML parser. * LaTeX writer: set numbersections template variable, so the section numbering options work again. * Removed obsolete Makefile. * Website: renamed index.txt.in -> index.txt. * New batch file to make-windows-installer. + Removed old Makefile.windows + Added make-windows-installer.bat + Modified default installer name in pandoc-setup.iss * Removed freebsd and macports directories. They are no longer up to date. * Setup.hs: + Made man page building sensitive to build verbosity. + Improved detection of highlighting support in test hook. + Install wrapper scripts into cabal bin directory. + Also simplified installManpages. + Setup.hs: install manpages to mandir. Code borrowed from darcs. * Changed default of writerXeTeX to False. * HTML writer: don't include empty UL if --toc but no sections. Resolves Issue #199. * LaTeX writer: + If book, report, or memoir documentclass, use \chapter{} for first-level headers. Otherwise use \section{}. + Removed stLink, link template variable. Reason: we now always include hyperref in the template. * LaTeX template: + Only show \author if there are some. + Always include hyperref package. It is used not just for links but for toc, section heading bookmarks, footnotes, etc. Also added unicode=true on hyperref options. * markdown2pdf: always do at least two runs. hyperref bookmarks require this. * cabal file: Removed unneeded dependency on template-haskell. * Windows installer - fixed bug in data file locations. Resolves Issue #197. * Deprecated --custom-header in documentation. Removed old "Custom Headers" section in README. pandoc (1.4) [ John MacFarlane ] * Pandoc will now compile with either GHC 6.10 or 6.12. + Don't use System.IO.UTF8 when compiling with 6.12 + Use -fno-warn-unused-do-bind option when compiling with 6.12 * Replaced old headers with templates. Now users have much more control over the way documents appear in --standalone mode, and writer code is simplified. Resolves Issues #59, 147. Every effort has been made to retain backwards compatibility. So, the --custom-header option should still work as before. + Added Text.Pandoc.Templates. This provides functions for retrieving default templates and for rendering templates. + System templates (in the pandoc data directory) can be overridden by user templates in $HOME/.pandoc/templates. + Removed Text.Pandoc.DefaultHeaders. + Removed data/headers directory. + Added templates directory. + Added writerTemplate and writerVariables fields to WriterOptions. + Removed writerTitlePrefix, writerHeader fields from WriterOptions. + Changed --print-default-header to --print-default-template. + Added --template option. + Added -V/--variable option to set custom template variables. * 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. + Removed TH dependency from S5 module. S5 module now exports s5HeaderIncludes, which pandoc.hs includes if writer is s5 and standalone. + Refactored LaTeXMathML not to use TH. * Meta is now Meta [Inline] [[Inline]] [Inline] rather than Meta [Inline] [String] String. Authors and date in Meta are now lists of Inline elements rather than raw strings. This means that they can be formatted and can include footnotes. NOTE: This may be a breaking change for those using pandoc as a library. * Added readDataFile to Text.Pandoc.Shared. This retrieves a data file from the user pandoc data directory (~/.pandoc 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. * s5 files moved from data/ui/default to s5/default. * Use unicode instead of entities in HTML and XML output. Resolves Issue #163. * Prettier HTML footnote references: put anchor inside sup, instead of other way. Resolves Issue #191. Thanks to infinity0x. * Added --xetex option to pandoc and markdown2pdf. If --xetex is specified, pandoc produces latex suitable for processing by xelatex, and markdown2pdf uses xelatex to create the PDF. Resolves Issue #185. * RTF writer: multiple authors now occupy multiple paragraphs rather than using a line break. * Man writer: now the "--after-body" will come after the "AUTHORS" section, whereas before it would come before it. This is a slight break from backwards compatibility. * 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. * ODT writer: + Indented and line-broke styles.xml so it can be modified more easily. + Omitted some unnecessary style declarations. + Don't wrap text in OpenDocument writer. The tags are too long, making wrapping ugly and pointless. * LaTeX reader: use \\ to separate multiple authors. * Markdown reader: use ; as separator between authors. This allows you to use ',' within author names: e.g. "John Jones, Jr." * S5 writer: use linebreak to separate authors in title page. * RST reader: Allow :: before lhs code block. The RST spec requires the :: before verbatim blocks. This :: should not be treated as literal colons. Resolves Issue #189. * Documented pandoc 1.3's new definition list syntax in README. (An oversight in the last release.) * markdown2pdf.hs: + interpret ! in a log as an error line. + --toc now works properly. * Changes in RunTests.hs: + Use the Diff library rather than a local copy of Diff.hs. (This vastly increases performance.) This change means that 'cabal test' presupposes that the Diff library is installed. + Removed tests/Diff.hs from cabal file. + Changed RunTests to use local environment. We need at least HOME, so pandoc can find its data directory. * Updated windows installer to install data files in the app directory. * Windows installer now installs portable wrappers hsmarkdown and markdown2pdf. pandoc (1.3) [ John MacFarlane ] * Added --id-prefix option (Issue #41). This adds a prefix to all automatically generated HTML identifiers, which helps prevent duplicate identifiers when you're generating a fragment (say a blog post). * Added --indented-code-classes option. This specifies classes to use for indented code blocks. (Patch due to buttock; Issue #87.) * --number-sections now affects HTML output as well as ConTeXt and LaTeX (Issue #150). * Improved syntax for markdown definition lists (Issue #24). Definition lists are now more compatible with PHP Markdown Extra. + You can have multiple definitions for a term (but still not multiple terms). + Multi-block definitions no longer need a column before each block (indeed, this will now cause multiple definitions). + The marker no longer needs to be flush with the left margin, but can be indented at or two spaces. Also, ~ as well as : can be used as the marker (this suggestion due to David Wheeler.) + There can now be a blank line between the term and the definitions. * Better looking simple tables. Resolves Issue #180. + Markdown reader: simple tables are now given column widths of 0. + Column width of 0 is interpreted as meaning: use default column width. + Writers now include explicit column width information only for multiline tables. (Exception: RTF writer, which requires column widths. In this case, columns are given equal widths, adding up to the text width.) + Simple tables should now look better in most output formats. * Allow markdown tables without headers (Issue #50). The new syntax is described in README. Also allow optional line of dashes at bottom of simple tables. * Compensate for width of final table column (Issue #144). * 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. * Improved performance of markdown reader by ~10% by eliminating the need for a separate parsing pass for notes. Raw notes are now stored on the first pass (which parses references), then parsed when the note is inserted into the AST. The stateNotes field in ParserState is now a list of [(String, String)] pairs instead of [(String, [Block])]. * 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.) * Markdown reader: Use + rather than %20 for spaces in URLs. * Fixed htmlComment parser, adding a needed 'try'. * Don't print raw HTML in man output. * Allow . _ and ~ in header identifiers. * Specially mark code blocks that were "literate" in the input. They can then be treated differently in the writers. This allows authors to distinguish bits of the literate program they are writing from source code examples, even if the examples are marked as Haskell for highlighting. (Issue #174.) * 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 haskell highlighter is much better than the literateHaskell highlighter. * Fixed handling of footnotes in titles (HTML) and headers (LaTeX). (Issue #137.) * Support for "..code-block" directive in RST reader. Not core RST, but used in Sphinx for code blocks annotated with syntax information. Thanks to Luke Plant for the patch. * Added "head" to list of block-level HTML tags. Resolves Issue #108. * Added stripTags to Text.Pandoc.XML. This is used in the HTML writer. * Set utf-8 encoding in texinfo headers. * Docbook writer: add ids to sections. Use link for internal links. (Issue #60.) * Blank lines after lists in MediaWiki writer. * Properly handle commented-out list items in markdown. Resolves Issue #142. Example: - a - c * Changed heuristic in compactify. compactify has to decide whether a Para that ends a list is a Para intentionally, or just because of the blank lines at the end of every list. In the latter case the Para is turned to a Plain. The old heuristic was: change final Para to Plain iff the other items all end in Plain. This produces bad results when, for example, an item contains just a Plain and an HTML comment, as it does in the list above. The new heuristic: change final Para to Plain iff the other items don't contain a Para. * Added % as an rst underline character. Resolves Issue #173. * Fix inline math parser so that \$ is allowed in math. Resolves Issue #169. * Translate \int (integral) into unicode when using unicode math method. Resolves Issue #177. * markdown2pdf.hs improvements: + Use System.IO.UTF8. + Print error messages on last attempt. + Do not create a backup when overwriting a PDF (Issue #166). + Accept --longopt=val options. + Added man/man1/markdown2pdf.1 to extra-tmp-files in cabal, so that it is properly cleaned. * Added haddock comments warning that readers assume \n line endings. * Updated COPYRIGHT file. * Makefile: Changed EXECSBASE so it doesn't pull in hsmarkdown & markdown2pdf. Otherwise strip tries to strip shell scripts when you install using 'make'. * Changed Makefile so it doesn't build Haskell wrappers. * Fixed Makefile so it doesn't try to build man pages in build-doc. * Install pcre3.dll in Windows install script; this allows us to package a version of pandoc with highlighting support. pandoc (1.2.1) [ John MacFarlane ] * Fixed regression with --preserveTabs. Brought back optPreserveTabs. The trick of setting tabStop to 0 to mean "preserve tabs" had a bad side effect: strings of 0 spaces were interpreted as indentation. So, with --preserve-tabs, unindented paragraphs were treated as code. Resolves Issue #138. * HTML writer: wrap sections in divs. Resolves Issue #70. + hierarchicalize has been rationalized; it builds a hierarchical representation of the document from the headers, and simultaneously gives each section a unique identifier based on the heading title. + Identifiers are now attached to the divs rather than to the headers themselves. + Table of content backlinks go to the beginning of the table, rather than to the section reference that was clicked. + Code for constructing identifiers has been moved to Text.Pandoc.Shared from the HTML writer, since it is now consumed only by hierarchicalize. + In --strict mode, pandoc just prints bare headings, as before (unless --toc has been specified). + In s5 output, it does not wrap sections in divs, as that seems to confuse the s5 javascript. * Man writer: break lines at end of each sentence. groff expects this and treats '.' and '?' differently when followed by line ending as opposed to ordinary space. Also, don't escape periods. Instead, use zero-width character \& to avoid unwanted interpretation of periods at start of line. Resolves Issue #148. * Markdown writer: Added '#' and '>' to list of characters to be escaped in markdown output. Removed '<', as it is not an officially escapable character. This partially resolves Issue #96. * Make --smart the default for man output format. Otherwise we have trouble dividing lists of endlines into sentences. * DocBook writer: Use language attribute to indicate source language in code blocks. * RST reader: + Allow # to continue list, even if the list was started with an explicit marker. For example: A. my list #. continued Resolves Issue #140. + Allow continuation lines in line blocks. Also added test cases for line blocks for RST reader. Resolves Issue #149. + Allow explicit links with spaces in URL: `link `_ * Improved LaTeX reader's coverage of math modes. Remove displaymath* (which is not in LaTeX) and recognize all the amsmath environments that are alternatives to eqnarray, namely equation, equation*, gather, gather*, gathered, multline, multline*, align, align*, alignat, alignat*, aligned, alignedat, split. Resolves Issue #103. Thanks to shreevatsa.public for the patch. * Markdown reader: + Allow -, _, :, . in markdown attribute names. These are legal in XML attribute names. + Use non-breaking spaces in abbreviations. + Markdown reader: improved efficiency of abbreviation parsing. Instead of a separate abbrev parser, we just check for abbreviations each time we parse a string. This gives a huge performance boost with -S. Resolves Issue #141. * Improved efficiency of shared parsers: hexNum, htmlComment, whitespace, indentSpaces. * Export HTMLMathMethod in Text.Pandoc. * Export languagesByExtension in Text.Pandoc.Highlighting. * Added new Haskell version of markdown2pdf, due to Paulo Tanimoto. This should be more portable than the old shell script. * Made 'pandoc -v' more explicit about compiler options. Resolves Issue #139. * pandoc.hs: Made --strict compatible with --standalone, --toc. * Use Paths_pandoc to get version number, instead of hard-coding it into Text/Pandoc.hs. pandoc (1.2) [ John MacFarlane ] * Added support for literate Haskell. lhs support is triggered by '+lhs' suffixes in formats. For example, 'latex+lhs' is literate Haskell LaTeX. '.lhs' files are treated by default as literate markdown. + Added stateLiterateHaskell to parser state. + Added parser for lhsCodeBlock to Markdown, RST, LaTeX readers. + Added parser for |inline lhs| to LaTeX reader. + Added writerLiterateHaskell to WriterOptions. + Added lhs support to Markdown, RST, LaTeX, HTML writers. + Added definition of code environment to LaTeX header. + Added tests (run only if highlighting support compiled in). + Documented lhs features in man page and README. * In Text.Pandoc.Definition, added processWith, processWithM, and queryWith, and deprecated processPandoc and queryPandoc for these more general functions. * Fixed bug in mediawiki writer: improper closing tags in tables. Thanks to Benct Philip Jonsson for reporting the bug. * Added --email-obfuscation option. + Added writer option for email obfuscation. + Implemented email obfuscation options in HTML writer. + Added option to option parser. + Documented in README and pandoc man page. + Resolves Issue #97. * LaTeX writer: fixed bug with empty table cells. Resolves Issue #107. Thanks to rodja.trappe for the patch. * Fixed bug with header spacing in Markdown and RST writers. A null header (Meta [] [] []) should not cause a blank line at the beginning of output. But a blank line is needed between a non-null header and the main text. * Markdown reader: Relax spacing rules for $$ in display math. Now space and newlines are allowed after the opening $$ and before the closing $$. However, the display math cannot contain an entirely blank line. Resolves Issue #105. * Markdown reader: Gobble space after Plain blocks containing only raw html inline. Otherwise following header blocks are not parsed correctly, since the parser sees blank space before them. Resolves Issue #124. * Markdown reader: Allow " as well as '' to end a latex double-quote. * Conditionally depend on syb and base >= 4 if ghc >= 6.10. Resolves Issue #109. * Fixed problems in RST and markdown output due to bug in pretty-1.0.1.0 + Added hang' function to Text.Pandoc.Shared; this will be used instead of hang, which doesn't work properly in pretty-1.0.1.0. When pretty is upgraded, we can go back to hang. See http://article.gmane.org/gmane.comp.lang.haskell.general/16687 + Use hang' (and some different techniques) in RST and markdown writers. Some output is now a bit different. * Brought citeproc support up to date for citeproc-hs-0.2. (Patch by Andrea Rossato.) * Moved all haskell source to src subdirectory. Renamed Main.hs to pandoc.hs. * Rewrote hsmarkdown in Haskell for portability (src/hsmarkdown.hs). For now, keeping the old shell script too. * Added TemplateHaskell to Extensions for executable, removed -threaded for library. Thanks to duncan.coutts for the bug report. Resolves Issue #121. * Moved some Extra-Source-Files to Data-Files. * Moved tabFilter to Shared. * In pandoc.hs, removed optPreserveTabs; instead, tabstop of 0 means preserve tabs. * Minor code cleanup based on hlint suggestions. pandoc (1.1) [ John MacFarlane ] * Main.hs: + Changed date on copyright message in Main.hs. + Have the '-v' option print syntax highlighting languages separated by commas, and wrapped in lines, instead of in five columns as before. * Added --jsmath option. Resolves Issue #68. + Added --jsmath option to Main.hs + Added JsMath to HTMLMathMethod in Text.Pandoc.Shared. + Handle math appropriately in HTML writer when JsMath selected. + Documented the option in README and man page. * Text.Pandoc.Shared: Changed compactify to use a better heuristic for tight and loose lists. Final Para is changed to Plain if all other list items *end* with a Plain block. Addresses Issue #99. * HTML reader: + Added colons to protocols in unsanitaryURI. Closes Issue #88. + HTML reader: Don't interpret contents of
     blocks as markdown.
          Added rawVerbatimBlock parser.  Resolves Issue #94.
    
      * Markdown reader:
    
        + Allow URLs with spaces in them in links and references, but escape
          them as "%20".
        + Allow blank space at the end of horizontal rules.
    
      * RST reader: Modified 'unknownDirective' parser to handle comment
        blocks correctly, and added tests for comment blocks. Resolves Issue
        #86. Closes Debian Bug #500662.
    
      * HTML writer:
    
        + Include classes on tr elements in HTML output:
          "header", "odd", "even".  This allows tables to be styled with
          lines in alternating colors.  Resolves Issue #91.
        + Enclose all LaTeXMathML bits in .
          This prevents parts of the document that are not math from being
          interpreted as math by LaTeXMathML.js.
    
      * OpenDocument and ODT writers:  Added support for HorizontalRule elements,
        which were formerly ignored.  Resolves Issue #95.
    
      * 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.
    
      * Windows installer: Don't require admin privileges to run
        installer.  Modified pandoc-setup.iss, and changed modpath.iss to
        modify HKCU path if user lacks admin privileges.  Also fixed case
        where oldpath is empty (previously this led to the new path
        beginning with a semicolon).
    
      * Updated INSTALL instructions for Arch packages and OS X install using
        cabal-install.
    
      * Removed the (now unneeded) debian directory.
        Removed empty Codec and System directories.
    
      * Moved odt-styles/ to data/.  Removed unneeded variable in Makefile.
    
      * Modified Setup.hs so that the "test" target returns an error status
        when tests fail, and "build" returns a success status if
        the build succeeds.  Resolves Issue #100.
    
      * Added BUGS to files in tarball.
    
    
    pandoc (1.0.0.1)
    
      [ John MacFarlane ]
    
      * Removed spurious reference to pdf output format from pandoc(1) man page.
    
    pandoc (1.0)
    
      [ Andrea Rossato ]
    
      * Added new OpenDocument writer.
    
      * Added support for SmallCaps inline element.
    
      * Added support for integrating pandoc with citeproc-hs.
    
        + Added Cite element to definition and writers.
        + Added Text.Pandoc.Biblio module
        + Note: This support is included only if the 'citeproc'
          Cabal configuration flag is set.
    
      * Made Pandoc data structure an instance of Typeable.
        Added new processPandoc and queryPandoc functions, to query
        or transform matching elements in a Pandoc structure.
    
      [ Peter Wang ]
    
      * Added new Texinfo writer.
    
      [ John MacFarlane ]
    
      * Changes to Texinfo writer:
    
        + No space between paragraph and following @verbatim (provides more
          pleasing appearance in text formats)
        + Blank line consistently after list environments.
        + Removed deVerb.
        + Use @code instead of @verb for inline code (this solves the character
          escaping problem for texi2dvi and texi2pdf).
        + Added news of Texinfo writer to README.
        + Added Texinfo to list of formats in man page, and removed extra 'groff'.
        + Added texi & texinfo extensions to Main.hs, and fixed bug in determining
          default output extension.
        + Modified disallowedInNode in Texinfo writer to correct list of disallowed characters.
    
      * Added tests for OpenDocument writer.
    
      * Added ODT writer (using zip-archive library to package output of
        OpenDocument writer).  Added odt-styles directory with default ODT styles.
    
      * Added new mediawiki writer and tests.
    
      * Markdown reader: Added support for delimited code blocks, with optional
        syntax highlighting using highlighting-kate (if the 'highlighting'
        configuration option is selected).
    
        + Currently highlighting is supported only in the HTML writer.
        + Delimited code blocks can have attributes; using the language name as
          class triggers highlighting.
        + New Attributes parameter in CodeBlock structure.
        + --version now indicates whether syntax highlighting support is compiled
          in, and prints a list of supported languages
    
      * Removed debian directory. Pandoc is no longer a native debian package.
    
      * Changes to build process:  pandoc can now be built from the repository
        using Cabal.  No unix tools are needed (so, pandoc can be built on Windows
        without Cygwin).
    
        + Include shell scripts themselves in repo, rather than generating from wrappers.
          Removed wrappers directory and wrappers Makefile target.
        + Text/Pandoc/ASCIIMathML.hs, Text/Pandoc/DefaultHeaders.hs,
          and Text/Pandoc/Writers/S5.hs are no longer built in Makefile
          from templates in the templates/ directory. Instead, they use template
          haskell to read data at compile time from the relevant files in data/.
          Template haskell functions go in a new module, Text.Pandoc.TH.
        + man pages are now generated in Setup.hs hook, not by Makefile
        + Makefile 'tarball' target now calls Cabal's 'sdist'
        + Added "Extra-Source-Files" to pandoc.cabal, so sdist contains everything needed
        + Added "Build-Type" field to pandoc.cabal to avoid warning.
        + Added to "Extra-source-files" and "Extra-tmp-files" in pandoc.cabal,
          so 'sdist' and 'clean' will work properly.
        + Setup.hs now generates man pages in a postbuild hook.
        + Added dependency-checking to Setup.hs, so it only rebuilds things
          that need rebuilding.
        + Added 'library' and 'executable' configuration flags.
          Cabal can now be told to build just the library or just the executable.
        + CABALOPTS may now be specified with 'make' to pass Cabal configuration flags.
          For example:  CABALOPTS=-fhighlighting make
    
      * Rewrote test suite so it doesn't depend on perl or unix tools.
    
        + Replaced old runtests.pl with a Haskell script RunTests.hs.
        + Added Diff.hs module to be used by RunTests.hs instead of unix 'diff'.
        + Added test hook to Setup.hs, so tests may be run from cabal.
        + Changed Makefile's 'test' target to run tests via cabal.
        + Removed old generate.sh.
        + Since we no longer have 'sed' to filter out raw HTML sections
          from the docbook writer test, or raw LaTeX sections from the
          context writer test, we now just include these sections.
          They can be taken out if it is necessary to process the files.
        + Updated latex and context writer tests to remove extra spaces
          after '\\item'
        + Added a markdown table reader test.
        + Added markdown-reader-more.txt to test suite, for additional test cases
          for raw ConTeXt environments and more.
    
      * Compatibility fixes for CPP, Cabal, and haddock:
    
        + Use CPP in "Extensions" field in pandoc.cabal.
        + Removed use of backslash string continuations in source files.
    
      * Removed pandoc.cabal.ghc66.  We now require Cabal >= 1.2, GHC >= 6.8,
        base >= 3.
    
      * Require parsec < 3.
        The compatibility module in parsec 3.0.0 gives far worse performance than
        parsec 2.1.  Eventually pandoc will be upgraded to use the new bytestring
        version of parsec, and then we'll go to parsec 3.0.0.
    
      * Removed Text.Regex dependencies by rewriting using plain Haskell
        (Text.Pandoc.Writers.RTF, Text.Pandoc.Writers.HTML, Main.hs)
    
      * Moved Text.Pandoc.Writers.DefaultHeaders -> Text.Pandoc.DefaultHeaders.
    
      * Makefile:
    
        + Added 'configure' as dependency of 'uninstall-all'.
          (It uses the Cabal build program.)
        + Makefile:  only use --with-hc-pkg if GHC_PKG is defined.
          Note that Cabal will automatically choose the ghc-pkg appropriate
          for the compiler selected, so normally specifying GHC by itself
          is sufficient.
    
      * Removed Text.Pandoc.UTF8 module; instead, depend on utf8-string and use
        its IO and conversion functions.
    
      * Added -Wall to ghc-options in pandoc.cabal.  Cleaned up modules so that
        everything is -Wall clean.
    
        + Added pragma to HTML writer to avoid deprecation warning for use of "start" attribute.
        + Added pragma to Text/Pandoc/Shared.hs to get rid of "orphan instance" warnings.
          (These are caused by the Lift instance for ByteString.)
    
      * Changed the comment used to replace unsafe HTML if sanitize-html option
        selected.
    
      * Made -c/--css option repeatable on the command line (like -H, -A, -B).
    
      * Moved XML-formatting functions to new unexported module Text.Pandoc.XML.
    
      * Escape '\160' as " ", not " " in XML.
        "nbsp" isn't a predefined XML entity.
    
      * Fixed bug in RST reader, which would choke on: "p. one\ntwo\n".
        Added some try's in ordered list parsers.
    
      * Man writer:  don't escape " as \".
    
      * Allow newline before URL in markdown link references.  Resolves Issue #81.
        Added tests for this issue in new "markdown-reader-more" tests.
        Changed RunTests.hs to run these tests.
    
      * Support for display math.  Resolves Issue #47.
    
        + Added a DisplayMath/InlineMath selector to Math inlines.
        + Markdown parser yields DisplayMath for $$...$$.
        + LaTeX parser yields DisplayMath when appropriate.  Removed
          mathBlock parsers, since the same effect is achieved by the math
          inline parsers, now that they handle display math.
        + Writers handle DisplayMath as appropriate for the format.
        + Modified tests accordingly; added new tests for display math.
    
      * Use LaTeXMathML instead of ASCIIMathML.  LaTeXMathML is closer
        to LaTeX in its display of math, and supports many non-math LaTeX environments.
    
        + Changed -m option to use LaTeXMathML rather than ASCIIMathML.
        + Modified HTML writer to print raw TeX when LaTeXMathML is
          being used instead of suppressing it.
        + Removed ASCIIMathML files from data/ and added LaTeXMathML.
        + Replaced ASCIIMathML with LaTeXMathML in source files.
        + Modified README and pandoc man page source.
        + Added --latexmathml option (kept --asciimathml as a synonym
          for backwards compatibility)
    
      * Markdown reader: Parse setext headers before atx headers.
        Test case:
           # hi
           ====
        parsed by Markdown.pl as an H1 header with contents "# hi".
    
      * Markdown reader: Treat "mixed" lists the same way as Markdown.pl does.
        The marker on the first list item determines the type of the whole
        list.  Thus, a list like
           1. one
           -  two
           *  three
        gets parsed as a single ordered list.  (Previous versions of pandoc
        treated this as an ordered list with an unordered sublist.)
    
      * Markdown smart typography:
    
        + Em dashes no longer eat surrounding whitespace.  Resolves Issue #69.
        + Use nonbreaking spaces after known abbreviations in markdown parser.
          Thus, for example, "Mr. Brown" comes out as "Mr.~Brown" in LaTeX, and does
          not produce a sentence-separating space.  Resolves Issue #75.
    
      * Markdown writer: Print unicode \160 literally, rather than as  .
    
      * Treat '\ ' in (extended) markdown as nonbreaking space.
        Print nonbreaking space appropriately in each writer (e.g. ~ in LaTeX).
    
      * The '--sanitize-html' option now examines URIs in markdown links
        and images, and in HTML href and src attributes.  If the URI scheme
        is not on a whitelist of safe schemes, it is rejected.  The main point
        is to prevent cross-site scripting attacks using 'javascript:' URIs.
        See http://www.mail-archive.com/markdown-discuss@six.pairlist.net/msg01186.html
        and http://ha.ckers.org/xss.html.  Resolves Issue #62.
    
      * HTML writer:
    
        + Override Text.XHtml's stringToHtml function,
          so that characters below 0xff are not converted to numerical entity
          references. Also convert '\160' to " ". This should aid readability
          and editability of the HTML source. It does presuppose that the HTML
          will be served as UTF-8.
        + In code blocks, change leading newlines to 
    tags. (Some browsers ignore them.) Resolves Issue #71. See http://six.pairlist.net/pipermail/markdown-discuss/2008-May/001297.html + Use style attributes rather than css classes for strikethrough and ordered list styles. This works better when fragments, rather than standalone documents, are generated. * HTML reader: Count anything that isn't a known block (HTML) tag as an inline tag (rather than the other way around). Added "html", "head", and "body" to list of block tags. Resolves Issue #66, allowing to count as an inline tag. * RTF writer: Fixed bug. Extra spaces were being printed after emphasized, boldface, and other inline elements. Resolves Issue #64. * LaTeX reader: improvements in raw LaTeX parsing. + "loose punctuation" (like {}) parsed as Space + Para elements must contain more than Str "" and Space elements + Added parser for "\ignore" command used in literate haskell. + Reworked unknownCommand and rawLaTeXInline: when not in "parse raw" mode, these parsers simply strip off the command part and allow the arguments to be parsed normally. So, for example, \blorg{\emph{hi}} will be parsed as Emph "hi" rather than Str "{\\emph{hi}}". + Parse lhs "code" environments as verbatim. Refactored parsers for verbatim environments. + Removed specialEnvironment parser. + parse '{}', if present, after \textless, \textgreater, \textbar, \textbackslash, \ldots. + Parse unescaped special characters verbatim rather than changing them to spaces. This way arguments of unknown commands will appear in braces. * Parse raw ConTeXt environments as TeX in markdown reader. Resolves Issue #73. * Moved BlockWrapper and wrappedBlocksToDoc from ConTeXt writer to Shared. * Made some structural changes to parsing of raw LaTeX environments. Previously there was a special block parser for LaTeX environments. It returned a Para element containing the raw TeX inline. This has been removed, and the raw LaTeX environment parser is now used in the rawLaTeXInline parser. The effect is exactly the same, except that we can now handle consecutive LaTeX and ConTeXt environments not separated by spaces. This new flexibility is required by the example in Issue #73: \placeformula \startformula L_{1} = L_{2} \stopformula API change: The LaTeX reader now exports rawLaTeXEnvironment' (which returns a string) rather than rawLaTeXEnvironment (which returns a block element). This is more likely to be useful in other applications. * Use \textsubscr instead of \textsubscript for LaTeX subscript macro. \textsubscript conflicts with a definition in the memoir class. Resolves Issue #65. * Removed unneeded space after "\\item" in LaTeX and ConTeXt output. * Added amsmath package to default LaTeX header. Resolves Issue #48. * Added \setupitemize[autointro] to ConTeXt header, to prevent orphaned list introduction lines. * Changed Float to Double in definition of Table element. (Double is more efficient in GHC.) * Fixed bug in Markdown parser: regular $s triggering math mode. For example: "shoes ($20) and socks ($5)." The fix consists in two new restrictions: + the $ that ends a math span may not be directly followed by a digit. + no blank lines may be included within a math span. Thanks to Joseph Reagle for noticing the bug. * Use Data.List's 'intercalate' instead of custom 'joinWithSep'. Removed 'joinWithSep' from Text.Pandoc.Shared. * Updated README and man pages. Acknowledge contributors in README. Added paragraph to README about producing S5 with separate CSS/javascript. * Updated INSTALL to reflect new build system (including configuration options) and document new dependencies. Added note to INSTALL that Cabal >= 1.2 is required for build. Resolves Issue #74. * Fixed some haddock documentation errors. * Small fix to markdown2pdf man page: only input needs to be piped through iconv. pandoc (0.46) unstable; urgency=low [ John MacFarlane ] * Made -H, -A, and -B options cumulative: if they are specified multiple times, multiple files will be included. * Added optional HTML sanitization using a whitelist. When this option is specified (--sanitize-html on the command line), unsafe HTML tags will be replaced by HTML comments, and unsafe HTML attributes will be removed. This option should be especially useful for those who want to use pandoc libraries in web applications, where users will provide the input. + Main.hs: Added --sanitize-html option. + Text.Pandoc.Shared: Added stateSanitizeHTML to ParserState. + Text.Pandoc.Readers.HTML: - Added whitelists of sanitaryTags and sanitaryAttributes. - Added parsers to check these lists (and state) to see if a given tag or attribute should be counted unsafe. - Modified anyHtmlTag and anyHtmlEndTag to replace unsafe tags with comments. - Modified htmlAttribute to remove unsafe attributes. - Modified htmlScript and htmlStyle to remove these elements if unsafe. + Modified README and man pages to document new option. * Improved handling of email addresses in markdown and reStructuredText. Consolidated uri and email address parsers. (Resolves Issue #37.) + New emailAddress and uri parsers in Text.Pandoc.Shared. - uri parser uses parseURI from Network.URI. - emailAddress parser properly handles email addresses with periods in them. + Removed uri and emailAddress parsers from Text.Pandoc.Readers.RST and Text.Pandoc.Readers.Markdown. * Markdown reader: + Fixed emph parser so that "*hi **there***" is parsed as a Strong nested in an Emph. (A '*' is only recognized as the end of the emphasis if it's not the beginning of a strong emphasis.) + Moved blockQuote parser before list parsers for performance. + Modified 'source' parser to allow backslash-escapes in URLs. So, for example, [my](/url\(1\)) yields a link to /url(1). Resolves Issue #34. + Disallowed links within links. (Resolves Issue #35.) - Replaced inlinesInBalanced with inlinesInBalancedBrackets, which instead of hard-coding the inline parser takes an inline parser as a parameter. - Modified reference and inlineNote to use inlinesInBalancedBrackets. - Removed unneeded inlineString function. - Added inlineNonLink parser, which is now used in the definition of reference. - Added inlineParsers list and redefined inline and inlineNonLink parsers in terms of it. - Added failIfLink parser. + Better handling of parentheses in URLs and quotation marks in titles. - 'source' parser first tries to parse URL with balanced parentheses; if that doesn't work, it tries to parse everything beginning with '(' and ending with ')'. - source parser now uses an auxiliary function source'. - linkTitle parser simplified and improved, under assumption that it will be called in context of source'. + Make 'block' conditional on strictness state, instead of using failIfStrict in block parsers. Use a different ordering of parsers in strict mode (raw HTML block before paragraph) for performance. In non-strict mode use rawHtmlBlocks instead of htmlBlock. Simplified htmlBlock, since we know it's only called in strict mode. + Improved handling of raw HTML. (Resolves Issue #36.) - Tags that can be either block or inline (e.g. ) should be treated as block when appropriate and as inline when appropriate. Thus, for example, hi should be treated as a paragraph with inline tags, while hi should be treated as a paragraph within tags. - Moved htmlBlock after para in list of block parsers. This ensures that tags that can be either block or inline get parsed as inline when appropriate. - Modified rawHtmlInline' so that block elements aren't treated as inline. - Modified para parser so that paragraphs containing only HTML tags and blank space are not allowed. Treat these as raw HTML blocks instead. + Fixed bug wherein HTML preceding a code block could cause it to be parsed as a paragraph. The problem is that the HTML parser used to eat all blank space after an HTML block, including the indentation of the code block. (Resolves Issue #39.) - In Text.Pandoc.Readers.HTML, removed parsing of following space from rawHtmlBlock. - In Text.Pandoc.Readers.Markdown, modified rawHtmlBlocks so that indentation is eaten *only* on the first line after the HTML block. This means that in
    foo
    the foo won't be treated as a code block, but in
    foo
    it will. This seems the right approach for least surprise. * RST reader: + Fixed bug in parsing explicit links (resolves Issue #44). The problem was that we were looking for inlines until a '<' character signaled the start of the URL; so, if you hit a reference-style link, it would keep looking til the end of the document. Fix: change inline => (notFollowedBy (char '`') >> inline). Note that this won't allow code inlines in links, but these aren't allowed in resT anyway. + Cleaned up parsing of reference names in key blocks and links. Allow nonquoted reference links to contain isolated '.', '-', '_', so so that strings like 'a_b_' count as links. + Removed unnecessary check for following link in str. This is unnecessary now that link is above str in the definition of 'inline'. * HTML reader: + Modified rawHtmlBlock so it parses and tags. This allows these tags to be handled correctly in Markdown. HTML reader now uses rawHtmlBlock', which excludes and , since these are handled in parseHtml. (Resolves Issue #38.) + Fixed bug (emph parser was looking for `` tag, not ``). + Don't interpret contents of style tags as markdown. (Resolves Issue #40.) - Added htmlStyle, analogous to htmlScript. - Use htmlStyle in htmlBlockElement and rawHtmlInline. - Moved "script" from the list of tags that can be either block or inline to the list of block tags. + Modified rawHtmlBlock to use anyHtmlBlockTag instead of anyHtmlTag and anyHtmlEndTag. This fixes a bug in markdown parsing, where inline tags would be included in raw HTML blocks. + Modified anyHtmlBlockTag to test for (not inline) rather than directly for block. This allows us to handle e.g. docbook in the markdown reader. * LaTeX reader: Properly recognize --parse-raw in rawLaTeXInline. Updated LaTeX reader test to use --parse-raw. * HTML writer: + Modified rules for automatic HTML header identifiers to ensure that identifiers begin with an alphabetic character. The new rules are described in README. (Resolves Issue #33.) + Changed handling of titles in HTML writer so you don't get "titleprefix - " followed by nothing. * ConTeXt writer: Use wrappers around Doc elements to ensure proper spacing. Each block element is wrapped with either Pad or Reg. Pad'ed elements are guaranteed to have a blank line in between. * RST writer: + Refactored RST writer to use a record instead of a tuple for state, and to include options in state so it doesn't need to be passed as a parameter. + Use an interpreted text role to render math in restructuredText. See http://www.american.edu/econ/itex2mml/mathhack.rst for the strategy. [ Recai Oktaş ] * Debian packaging changes: + Remove the empty 'include' directory in -dev package, which lintian complains about. + Bump Standarts-Version to 3.7.3. + Use new 'Homepage:' field to specify the upstream URL on suggestion of lintian. -- Recai Oktaş Tue, 08 Jan 2008 05:13:31 +0200 pandoc (0.45) unstable; urgency=low [ John MacFarlane ] * Simplified parsing of reference keys and notes in markdown and RST readers: The Reference data structure from Text.Pandoc.Shared is no longer needed, since referenceKey and noteBlock parses return strings (as many blank lines as were occupied by the key or note) and update state themselves. getPosition and setPosition are now used to ensure that error messages will give the correct line number. This yields cleaner (and slightly faster) code, with more accurate parsing error messages. * Added new Math inline element: + Markdown and LaTeX readers now convert TeX math into Math elements, not TeX. + This allows math to be treated differently from raw TeX in output. TeX elements are no longer printed in output formats other than Markdown, LaTeX, and ConTeXt. But Math elements are always printed. * New default handling of math in writers: + New module Text.Pandoc.Readers.TeXMath exports readTeXMath, which parses raw TeX math and outputs a string of Pandoc inlines that tries to render it as far as possible using unicode characters, lapsing into literal TeX when needed. + readTeXMath is now used for default HTML output in HTML, S5, RTF, and Docbook, if no other method for displaying math in HTML is specified. Enclosing $'s are no longer printed by default. + By default, math is put inside ``. This way it can be distinguished from the surrounding text, e.g. put in a different font. * New --gladtex and --mimetex options for display of math in HTML: + If --gladtex is specified, math is output between `` tags, so it can be processed by gladTeX. + If --mimetex is specified, math is put in `` tags with a link to the mimetex CGI script (or any other script that takes TeX math as input and outputs an image). The URL of the script may be specified, but defaults to /cgi-bin/mimetex.cgi. + HTMLMathMethod structure in WriterOptions keeps track of how to display math in HTML output. + Updated README with a description of the four options for displaying math in HTML. * HTML reader: + Fixed bug: parser for minimized attributes should not swallow trailing spaces. + Simplified HTML attribute parsing. + Changed parsing of code blocks in HTML reader: `` tag is no longer needed. `
    ` suffices. All HTML tags in the code block
          (e.g. for syntax highlighting) are skipped, because they are not
          portable to other output formats. A `...` block not
          surrounded by `
    ` now counts as inline HTML, not a code block.
        + Remove just one leading and one trailing newline from contents of
          `
    ...
    ` in codeBlock parser. * Markdown reader: + Removed support for box-style block quotes. + Require space before title in links and references. This fixes a bug in parsing URLs like http://silly/url(withparen). + Improved and simplified setextHeader parser. + Fixed logic in smart quote parsing, adding some needed 'try' statements. + Fixed smart quote parsing so that unicode characters 8216 and 8217 are recognized as single quotes, and 8220 and 8221 as double quotes. * RST reader: + Fixed bug in parsing of code blocks. Previously a full tab indent was required, but RST allows code to be indented any amount. Resolves Issue #27. + Allow field lists to be indented. + Parse the contents of field lists instead of treating as a raw string. + Represent field lists as definition lists instead of blockquotes. + Fixed bug in which metadata would be overridden if the document contained multiple field lists. + Parse fields associated with '.. image::' blocks, and use 'alt' field, if given, for image alt and title attributes. * LaTeX reader: + Modified specialChar so that '"' characters are parsed. + Fixed a bug in parsing of \[ \] math blocks (thanks to Mark Kalderon). * HTML writer: + Changes in handling of math (see above). + Don't produce HTML for table of contents if there are no headers. (This would be an empty list, which is invalid XHTML.) * Markdown writer: + Don't print title attribute if title is empty. (This differs from the behavior of Markdown.pl, and agrees with PHP Markdown. But John Gruber has indicated that he prefers this behavior.) Adjusted test suite accordingly. + Fixed incorrect line wrapping in paragraphs including hard line breaks. Resolves Issue #25. + Fixed bug in markdown writer: If an ordered list item began with a marker greater than 3 characters in width, and the item took more than one line, it would appear on the line after the list marker, e.g.: (12) My list item. Multiline. Now it works as follows: (12) My list item. Multiline. * RST writer + Fixed bug in RST writer's handling of ordered lists. Previously, list items with multiple lines would not always line up with single-line list items. Now, list items are nested the length of the list marker + 1. This looks better and ensures that list items all line up. (Note that list markers are padded to the length of the longest list marker in the series.) + Use 3-space indent for unordered lists. + If label for a link reference contains a colon, surround it by ` signs so it won't be interpreted as the end of the link label. * LaTeX writer: + Cleaner output for footnotes. Footnotes now always begin on a new line, and the final } is on a line by itself only when it needs to be (i.e. only when the note ends with a Verbatim environment). + Added writer options to state, so state doesn't need to be passed as a parameter. + Text wrapping now provided, using wrapTeXIfNeeded. * ConTeXt writer: many improvements for more idiomatic ConTeXt output (thanks to Idris Samawi Hamid for suggestions). + PrettyPrint module now used for output. + Writer options are now in state, so they don't have to be passed as a parameter. + Text wrapping now provided, using wrapTeXIfNeeded. + Better treatment of footnotes: footnotes are always on lines by themselves, and the final } is on a line by itself only when it needs to be (after \stoptyping). + Use \subject, \subsubject, ... or \section, \subsection, ... for headings, depending on whether --number-sections option is selected. + Extra blank line inserted after \stopitemize + Use new, "official" definition of blockquote environment. Also, use blank line after \startblockquote to balance blank line at the end. + Both itemized and enumerated lists are now generated using \start-stopitemize, with appropriate options. Removed definitions of ltxenum and ltxitem, which are no longer needed. Provided defaults for itemized lists in the preamble. State keeps track of ordered list level, so that when default numbering is specified, the appropriate scheme can be used. + Changed \useurl to \useURL. + Changed link color from red to blue. + Use \subsubsubsubsection etc., since these are supported (up to at least sub x 5). * Text.Pandoc.Shared: + Save and restore position in parseFromString, so that accurate error messages can be given. + Improved efficiency of romanNumeral parser. + Added wrappedTeX and wrapTeXIfNeeded functions. These ensure that footnotes occur on lines by themselves (to make them easier to see and move) and do not screw up line wrapping. * Text.Pandoc.UTF8: modified fromUTF8 to strip out the BOM if present. Windows Notepad and other applications insert a BOM at the beginning of a UTF8 file. * Main.hs (tabFilter): Treat '\r' at end of line as newline (in addition to "\r\n" and '\n'). * Added a writer option for wrapped text and a command-line option '--no-wrap', which disables text wrapping and minimizes whitespace in HTML. (Resolves Issue #26.) + Added support for '--no-wrap' to Main.hs. + Added wrapIfNeeded function to Text.Pandoc.Shared. + Use wrapIfNeeded instead of wrapped in the RST, Man, Docbook, and Markdown writers. + Added render and renderFragment helpers to HTML writer. * Modified html2markdown to run tidy only if the HTML cannot be parsed. Previously html2markdown piped all input through tidy before passing it to pandoc. This caused problems on certain pages (e.g. http://daringfireball.com/markdown) which have well-formed XHTML that causes tidy to choke. The solution is to pipe through tidy only if pandoc cannot parse the input by itself. This means that a temp file is now always used, even when input comes from a local file or standard input. * Removed 'version' constant from Main.hs; added 'pandocVersion' to Text.Pandoc library. * pandoc.cabal: + Modified to work with GHC 6.8 and Cabal configurations. (For GHC 6.8, pretty and containers must be added to Build-Depends, and it is desirable to use the -O2 compiler option.) Cabal configurations allows one to select options depending on the compiler version. For GHC 6.6, the splitBase option can be disabled. + pandoc.cabal.ghc66 is provided for users with older versions of Cabal, which do not support configurations. + Use Ghc-Prof-Options to ensure that '-auto-all' is used when '--enable-(executable|library)-profiling' is specified. Updated PROFILING instructions accordingly. * Makefile: + Makefile now checks GHC version. If GHC is 6.6, pandoc.cabal.ghc66 is copied to pandoc.cabal, and the old pandoc.cabal is copied to pandoc.cabal.orig. Otherwise, pandoc.cabal is copied to pandoc.cabal.orig but otherwise unmodified. This way, the Makefile will work properly with either GHC 6.6 or 6.8. + Changed BUILDCONF to point to dist/setup-config, not .setup-config. This is where current versions of Cabal put it. + Added $(BUILDCMD) target, so setup doesn't get compiled every time. + Removed dependency of templates on ./templates, which is circular now that templates is a subdirectory of the top-level. * MacPorts Portfile: + Modified to install the pandoc library in addition to programs. + Installation must be done manually rather than using Makefile's install-all. + Note that the library must be registered in the activate phase, after the library files have been copied out of the destroot. Cabal generates a 'register.sh' script that will do this. * debian/control: Added libghc6-network-dev, libghc6-xhtml-dev, and libghc6-mtl-dev as dependencies for libghc6-pandoc-dev. Closes: #445235 * debian/rules: Converted to UTF-8. * Changed pandoc home page to http://johnmacfarlane.net/pandoc/. * Updated ASCIIMathML.js to latest version. * Directory structure: + Moved everything from src into the top-level directory. + Changed references to source directory in Makefile and pandoc.cabal.*. + Moved ASCIIMathML.js, headers, and ui into templates directory. + Modified fillTemplates.pl to reflect new paths. [ Recai Oktaş ] * Makefile: Fixed the issue of having two copies of the library documentation under some usage scenarios. * Replaced 'ghc' with '$(GHC)' in Makefile, and made GHC and GHC_PKG configurable through the environment, to support unusual ghc installations. For example: GHC=/opt/ghc/bin/ghc GHC_PKG=/opt/ghc/bin/ghc-pkg make -- Recai Oktaş Sun, 07 Oct 2007 20:51:43 +0300 pandoc (0.44) unstable; urgency=low [ John MacFarlane ] * Fixed bug in HTML writer: when --toc was used, anchors were put around headers, which is invalid XHTML (block content within inline element). Now the anchors are put inside the header tags. Resolves Issue #23. * Added xmlns attribute to html element in html writer tests. This attribute is added by more recent versions of the xhtml library (>= 3000), and is required for valid XHTML. [ Recai Oktaş ] * On configure, compile 'Setup.hs' to 'setup' and use 'setup' as the build command instead of 'runhaskell', which, on some platforms (such as s390, alpha, m68k), throws the following error: runhaskell Setup.hs configure --prefix=/usr ghc-6.6.1: not built for interactive use This causes a serious FTBFS bug. Closes: #440668. -- Recai Oktaş Mon, 03 Sep 2007 18:24:02 +0300 pandoc (0.43) unstable; urgency=low [ John MacFarlane ] * The focus of this release is performance. The markdown parser is about five times faster than in 0.42, based on benchmarks with the TextMate manual. * Main.hs: Replaced CRFilter and tabFilter with single function tabFilter, which operates on the whole string rather than breaking it into lines, and handles dos-style line-endings as well as tabs. * Added separate LaTeX reader and native reader tests; removed round-trip tests. * Text.Pandoc.Shared: + Removed tabsToSpaces and tabsInLine (they were used only in Main.hs.) + General code cleanup (to elimante warnings when compiling with -Wall.) + Added 'wrapped' function, which helps wrap text into paragraphs, using the prettyprinting library. + Rewrote charsInBalanced and charsInBalanced'. - Documented restriction: open and close must be distinct characters. - Rearranged options for greater efficiency. - Bug fix: Changed inner call to charsInBalanced inside charsInBalanced' to charsInBalanced'. + anyLine now requires that the line end with a newline (not eof). This is a harmless assumption, since we always add newlines to the end of a block before parsing with anyLine, and it yields a 10% speed boost. + Removed unnecessary 'try' in anyLine. + Removed unneeded 'try' from romanNumeral parser. + Use notFollowedBy instead of notFollowedBy' in charsInBalanced. + Removed unneeded 'try' in parseFromString. + Removed unneeded 'try' from stringAnyCase. (Now it behaves like 'string'.) + Changed definition of 'enclosed' in Text.Pandoc.Shared so that 'try' is not automatically applied to the 'end' parser. Added 'try' in calls to 'enclosed' where needed. Slight speed increase. * Writers: + Replaced individual wrapping routines in RST, Man, and Markdown writers with 'wrapped' from Text.Pandoc.Shared. + Rewrote LaTeX writer to use the prettyprinting library, so we get word wrapping, etc. + Modified latex writer tests for new latex writer using prettyprinter. + Fixed bug in LaTeX writer: autolinks would not cause '\usepackage{url}' to be put in the document header. Also, changes to state in enumerated list items would be overwritten. + In Markdown writer, escape paragraphs that begin with ordered list markers, so they don't get interpreted as ordered lists. * Text.Pandoc.Reades.LaTeX: + Fixed bug in LaTeX reader, which wrongly assumed that the roman numeral after "enum" in "setcounter" would consist entirely of "i"s. 'enumiv' is legitimate. + LaTeX command and environment names can't contain numbers. + Rearranged order of parsers in inline for slight speed improvement. + Added '`' to special characters and 'unescapedChar'. * Text.Pandoc.Readers.RST: + Removed unneeded try's in RST reader; also minor code cleanup. + Removed tabchar. + Rearranged parsers in inline (doubled speed). * Text.Pandoc.Readers.Markdown: + Skip notes parsing if running in strict mode. (This yields a nice speed improvement in strict mode.) + Simplify autolink parsing code, using Network.URI to test for URIs. Added dependency on network library to debian/control and pandoc.cabal. + More perspicuous definition of nonindentSpaces. + Removed unneeded 'try' in 'rawLine'. + Combined linebreak and whitespace into a new whitespace parser, to avoid unnecessary reparsing of space characters. + Removed unnecessary 'try' in 'codeBlock', 'ellipses', 'noteMarker', 'multilineRow', 'dashedLine', 'rawHtmlBlocks'. + Use lookAhead in parsers for setext headers and definition lists to see if the next line begins appropriately; if not, don't waste any more time parsing. + Don't require blank lines after code block. (It's sufficient to end code block with a nonindented line.) + Changed definition of 'emph': italics with '_' must not be followed by an alphanumeric character. This is to help prevent interpretation of e.g. `[LC_TYPE]: my_type` as `[LCTYPE]:mytype`. + Improved Markdown.pl-compatibility in referenceLink: the two parts of a reference-style link may be separated by one space, but not more... [a] [link], [not] [a link]. + Fixed markdown inline code parsing so it better accords with Markdown.pl: the marker for the end of the code section is a clump of the same number of `'s with which the section began, followed by a non-` character. So, for example, ` h ``` i ` -> `h ``` i`. + Split 'title' into 'linkTitle' and 'referenceTitle', since the rules are slightly different. + Rewrote 'para' for greater efficiency. + Rewrote link parsers for greater efficiency. + Removed redundant 'referenceLink' in definition of inline (it's already in 'link'). + Refactored escapeChar so it doesn't need 'try'. + Refactored hrule for performance in Markdown reader. + More intelligent rearranging of 'inline' so that most frequently used parsers are tried first. + Removed tabchar parser, as whitespace handles tabs anyway. * Text.Pandoc.CharacterReferences: + Refactored. + Removed unnecessary 'try's for a speed improvement. + Removed unnecessary '&' and ';' from the entity table. * Build process: + Makefile: Get VERSION from cabal file, not Main.hs. + Modified MacPorts Portfile: - Depend on haddock - Build and install libraries and library documentation in addition to pandoc executable - Added template item for md5 sum in Portfile.in. - Incorporated changes from MacPorts repository (r28278). + FreeBSD port: Don't try to generate distinfo in Makefile. It can be made using 'make makesum' in FreeBSD. + Make both freebsd and macports targets depend on tarball. * Website and documentation: + Updated INSTALL instructions. + Added pandocwiki demo to website. + Removed local references to Portfile, since pandoc is now in the MacPorts repository. -- Recai Oktaş Sun, 02 Sep 2007 15:50:11 +0300 pandoc (0.42) unstable; urgency=low [ John MacFarlane ] * Main.hs: Use utf8 conversion on the extra files loaded with the -H, -C, -B, and -A options. This fixes problems with unicode characters in these files. * Exposed Text.Pandoc.ASCIIMathML, since it is imported in Text.Pandoc.Readers.HTML and without it we get a linking error when using the library. * Markdown reader: + Added new rule for enhanced markdown ordered lists: if the list marker is a capital letter followed by a period (including a single-letter capital roman numeral), then it must be followed by at least two spaces. The point of this is to avoid accidentally treating people's initials as list markers: a paragraph might begin, "B. Russell was an English philosopher," and this shouldn't be treated as a list. Documented change in README. + Blocks that start with "p. " and a digit are no longer treated as ordered lists (it's a page number). + Added a needed 'try' to listItem. + Removed check for a following setext header in endline. A full test is too inefficient (doubles benchmark time), and the substitute we had before is not 100% accurate. + Don't use Code elements for autolinks if --strict specified. * LaTeX writer: When a footnote ends with a Verbatim environment, the close } of the footnote cannot occur on the same line or an error occurs. Fixed this by adding a newline before the closing } of every footnote. * HTML writer: + Removed incorrect "{}" around style information in HTML tables. Column widths now work properly in HTML. + If --strict option is specified (and --toc is not), don't include identifiers in headers, for better Markdown compatibility. * Build process: + Separated $(web_dest) and website targets. + In website, index.txt is now constructed from template index.txt.in. + Added freebsd target to Markefile. This creates the freebsd Makefile from Makefile.in, and creates distinfo. Removed Makefile and distinfo from the repository. + Added macport target to Makefile. Portfile is built from template Portfile.in. + Removed OSX package targets. (Too many difficulties involving dependencies on dynamic libraries.) + More complete INSTALL instructions for all architectures. * Website: + Added a programming demo, pandocwiki. [ Recai Oktaş ] * Do not forget to close pandoc's ITP. Closes: #391666 -- Recai Oktaş Sun, 26 Aug 2007 22:51:32 +0300 pandoc (0.41) unstable; urgency=low [ John MacFarlane ] * Fixed bugs in HTML reader: + Skip material at end *only if* `` is present (previously, only part of the document would be parsed if an error was found; now a proper error message is given). + Added new constant eitherBlockOrInline with elements that may count either as block-level or as inline. Modified isInline and isBlock to take this into account. + Modified rawHtmlBlock to accept any tag (even an inline tag): this is innocuous, because rawHtmlBlock is tried only if a regular inline element can't be parsed. + Added a necessary 'try' in definition of 'para'. * Fixed bug in markdown ordered list parsing. The problem was that anyOrderedListStart did not check for a space following the ordered list marker. So in 'A.B. 2007' the parser would be expecting a list item, but would not find one, causing an error. Fixed a similar bug in the RST reader. Resolves Issue #22. * Refactored RST and Markdown readers using parseFromString. * LaTeX reader will now skip anything after \end{document}. * Fixed blockquote output in markdown writer: previously, block quotes in indented contexts would be indented only in the first line. * Added note to INSTALL about variations in versions of the xhtml library that can lead to failed tests (thanks to Leif LeBaron). -- Recai Oktaş Sun, 19 Aug 2007 23:26:07 +0300 pandoc (0.4) unstable; urgency=low [ John MacFarlane ] * Added two new output formats: groff man pages and ConTeXt. By default, output files with extensions ".ctx" and ".context" are assumed to be ConTeXt, and output files with single-digit extensions are assumed to be man pages. * Enhanced ordered lists (documented in README, under Lists): + The OrderedList block element now stores information about list number style, list number delimiter, and starting number. + The readers parse this information when possible. + The writers use this information to style ordered lists. + The enhancement can be disabled using the --strict option. * Added support for tables (with a new Table block element). Two kinds of tables are supported: a simple table with one-line rows, and a more complex variety with multiline rows. All output formats are supported, but only markdown tables are parsed at the moment. The syntax is documented in README. * Added support for definition lists (with a new DefinitionList block element). All output and input formats are supported. The syntax is documented in README. * Added support for superscripts and subscripts (with new Superscript and Subscript inline elements). All input and output formats. The syntax is documented in README. * Added support for strikeout (with a new Strikeout inline element). All input and output formats are supported. Thanks to Bradley Kuhn, who contributed a patch. The syntax is documented in README. Resolves Issue #18. * Added a --toc|--table-of-contents option. This causes an automatically generated table of contents (or an instruction that creates one) to be inserted at the beginning of the document. Not supported in S5, DocBook, or man page writers. * Modified the -m|--asciimathml option: + If an optional URL argument is provided, a link is inserted instead of the contents of the ASCIIMathML.js script. + Nothing is inserted unless the document actually contains LaTeX math. * Removed Blank block element as unnecessary. * Removed Key and Note blocks from the Pandoc data structure. All links are now stored as explicit links, and note contents are stored with the (inline) notes. + All link Targets are now explicit (URL, title) pairs; there is no longer a 'Ref' target. + Markdown and RST parsers now need to extract data from key and note blocks and insert them into the relevant inline elements. Other parsers have been simplified, since there is no longer any need to construct separate key and note blocks. + Markdown, RST, and HTML writers need to construct lists of notes; Markdown and RST writers need to construct lists of link references (when the --reference-links option is specified); and the RST writer needs to construct a list of image substitution references. All writers have been rewritten to use the State monad when state is required. + Several functions (generateReference, keyTable, replaceReferenceLinks, replaceRefLinksBlockList, and some auxiliaries used by them) have been removed from Text.Pandoc.Shared, since they are no longer needed. New functions and data structures (Reference, isNoteBlock, isKeyBlock, isLineClump) have been added. The functions inTags, selfClosingTag, inTagsSimple, and inTagsIndented have been moved to the DocBook writer, since that is now the only module that uses them. NoteTable is now exported in Text.Pandoc.Shared. + Added stateKeys and stateNotes to ParserState; removed stateKeyBlocks, stateKeysUsed, stateNoteBlocks, stateNoteIdentifiers, stateInlineLinks. + Added writerNotes and writerReferenceLinks to WriterOptions. * Added Text.Pandoc module that exports basic readers, writers, definitions, and utility functions. This should export everything needed for most uses of Pandoc libraries. The haddock documentation includes a short example program. * Text.Pandoc.ASCIIMathML is no longer an exported module. * Added Text.Pandoc.Blocks module to help in printing markdown and RST tables. This module provides functions for working with fixed-width blocks of text--e.g., placing them side by side, as in a table row. * Refactored to avoid reliance on Haskell's Text.Regex library, which (a) is slow, and (b) does not properly handle unicode. This fixed some strange bugs, e.g. in parsing S-cedilla, and improved performance. + Replaced 'gsub' with a general list function 'substitute' that does not rely on Text.Regex. + Rewrote extractTagType in HTML reader so that it doesn't use regexs. + In Markdown reader, replaced email regex test with a custom email autolink parser (autoLinkEmail). Also replaced selfClosingTag regex with a custom function isSelfClosingTag. + Modified Docbook writer so that it doesn't rely on Text.Regex for detecting 'mailto' links. + Removed escapePreservingRegex and reamped entity-handling functions in Text.Pandoc.Shared and Text.Pandoc.CharacterReferences to avoid reliance on Text.Regex (see below on character reference handling changes). * Renamed Text.Pandoc.Entities as Text.Pandoc.CharacterReferences. * Changed handling of XML entities. Entities are now parsed (and unicode characters returned) in the Markdown and HTML readers, rather than being handled in the writers. In HTML and Docbook writers, UTF-8 is now used instead of entities for characters above 128. This makes the HTML and DocBook output much more readable and more easily editable. + Removed sgmlHexEntity, sgmlDecimalEntity, sgmlNamedEntity, and sgmlCharacterEntity regexes from Text.Pandoc.Shared. + Renamed escapeSGMLChar to escapeCharForXML. Added escapeStringForXML. Moved both functions to Text.Pandoc.Writers.Docbook. + Added characterReference parser to Text.Pandoc.CharacterReferences. This parses a string and return a unicode character. + Rewrote decodeCharacterReferences to use the new parser instead of Text.Regex. + Added new charRef parser for Markdown and HTML, which replaces the old 'entity' parser. Added '&' as a special character in Markdown reader. + Modified HTML and Markdown readers to call decodeEntities on all raw strings (e.g. authors, dates, link titles), to ensure that no unprocessed entities are included in the native representation of the document. (In the HTML reader, most of this work is done by a change in extractAttributeName.) + In XML and Markdown output, escape unicode nonbreaking space as ' ', since a unicode non-breaking space is impossible to distinguish visually from a regular space. (Resolves Issue #3.) + Removed encodeEntitiesNumerical. + Use Data.Map for entityTable and (new) reverseEntityTable, for a slight performance boost over the old association list. + Removed unneeded decodeEntities from 'str' parser in HTML and Markdown readers. * Text.Pandoc.UTF8: Renamed encodeUTF8 to toUTF8, decodeUTF8 to fromUTF8, for clarity. * Replaced old haskell98 module names replaced by hierarchical module names, e.g. List by Data.List. Removed haskell98 from dependencies in pandoc.cabal, and added mtl (needed for state monad). Substituted xhtml for html. * Refactored and cleaned up character escaping in writers, using backslashEscapes and escapeStringUsing functions. * Instead of adding "\n\n" to the end of an input string in Main.hs, this is now done in the readers. This makes the libraries behave the way you'd expect from the pandoc program. Resolves Issue #10. * URLs and email addresses in autolinks are now typeset as Code. * In Main.hs, changed putStr to putStrLn -- mainly because MacOS X doesn't display the whole output unless there's a line ending. * Major code cleanup in all modules, for greater consistency, concision, and readability. * HTML reader: + Fixed several bugs (extractTagType, attribute parsing). + Remove Null blocks in lists of blocks when possible. + Allow HTML comments as raw HTML inline. * Markdown reader: + Ordered list items may no longer begin with uppercase letters, or letters greater than 'n'. (This prevents first initials and page reference, e.g. 'p. 400', from being parsed as beginning lists.) Also, numbers beginning list items may no longer end with ')', which is now allowed only after letters. Note: These changes may cause documents to be parsed differently. Users should take care in upgrading. + Changed autoLink parsing to conform better to Markdown.pl's behavior. `` is not treated as a link, but ``, ``, and `` are. + Cleaned up handling of embedded quotes in link titles. Now these are stored as a '"' character, not as '"'. + Use lookAhead parser for the 'first pass' (looking for reference keys), instead of parsing normally, then using setInput to reset input. This yields a slight performance boost. + Fixed several bugs in smart quote recognition. + Fixed bug in indentSpaces (which didn't properly handle cases with mixed spaces and tabs). + Consolidated 'text', 'special', and 'inline' into 'inline'. + Fixed bug which allowed URL and title to be separated by multiple blank lines in links and reference keys. They can be on separate lines but can't have blank lines between them. + Correctly handle bracketed text inside inline footnotes and links,using new function inlinesInBalanced. Resolves Issue #14. + Fixed bug in footnotes: links in footnotes were not being processed. Solution: three-stage parse. First, get all the reference keys and add information to state. Next, get all the notes and add information to state. (Reference keys may be needed at this stage.) Finally, parse everything else. + Replaced named constants like 'emphStart' with literals. + Removed an extra occurrence of escapedChar in definition of inline. * RST reader: + Allow the URI in a RST hyperlink target to start on the line after the reference key. + Added 'try' in front of 'string', where needed, or used a different parser. This fixes a bug where ````` would not be correctly parsed as a verbatim `. + Fixed slow performance in parsing inline literals in RST reader. The problem was that ``#`` was seen by 'inline' as a potential link or image. Fix: inserted 'notFollowedBy (char '`')' in link parsers. Resolves Issue #8. + Use lookAhead instead of getInput/setInput in RST reader. Removed unneeded getState call, since lookAhead automatically saves and restores the parser state. + Allow hyperlink target URIs to be split over multiple lines, and to start on the line after the reference. Resolves Issue #7. + Fixed handling of autolinks. * LaTeX reader: + Replaced 'choice [(try (string ...), ...]' idiom with 'oneOfStrings', for clarity. + Added clauses for tilde and caret. Tilde is \ensuremath{\sim}, and caret is \^{}, not \^ as before. + Added parsing for \url. + Parse \texttt{} as code, provided there's nothing fancy inside. * HTML writer: + Modified HTML writer to use the Text.XHtml library. This results in cleaner, faster code, and it makes it easier to use Pandoc in other projects, like wikis, which use Text.XHtml. Two functions are now provided, writeHtml and writeHtmlString: the former outputs an Html structure, the latter a rendered string. The S5 writer is also changed, in parallel ways (writeS5, writeS5String). + The Html header is now written programmatically, so it has been removed from the 'headers' directory. The S5 header is still needed, but the doctype and some of the meta declarations have been removed, since they are written programmatically. This change introduces a new dependency on the xhtml package. + Fixed two bugs in email obfuscation involving improper escaping of '&' in the `