* 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 ouput 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 encounterd.
+ 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 exisiting 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 `<book>` elements but only generic `<divN>` division
elements. Checking the template for a trailing `</book>` 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 emiting 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 `<p>` instead of `<h1>` 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-templates212, Yoan Blanc).
* Beamer template:
+ Restore whitespace between paragraphs. This was
a regression in the last release (jgm/pandoc-templates207).
+ 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-templates208,
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.