Releases

1.8.2.1 (2011-08-01)

  • Adjusted Arbitrary instance to help avoid timeouts in tests.

  • Added Tests.Writers.Markdown to cabal file.

  • Relaxed version bounds on pandoc-types, test-framework.

1.8.2 (2011-07-30)

  • Added script to produce OS X package.

  • Made templates directory a git submodule. This should make it easier for people to revise their custom templates when the default templates change.

  • Changed template naming scheme: FORMAT.template -> default.FORMAT. Note: If you have existing templates in ~/.pandoc/templates, you must rename them to conform to the new scheme!

  • Default template improvements:

    • HTML: Display author and date after title.
    • HTML: Made table of contents more customizable. The container for the TOC is now in the template, so users can insert a header or other styling. (Thanks to Bruce D’Arcus for the suggestion.)
    • HTML, Slidy, S5: Enclose scripts in CDATA tags.
    • Slidy, S5: Added s5-url and slidy-url variables, instead of hard-coding. If you want to put your slidy files in the slidy subdirectory, for example, you can do pandoc -t slidy -V slidy-url=slidy -s.
    • LaTeX: Use \and to separate authors in LaTeX documents (reader & writer). Closes #279.
    • LaTeX: Set \emergencystretch to prevent overfull lines.
    • LaTeX: Use different hyperref options for xetex, fixing problems with unicode bookmarks (thanks to CircleCode).
    • LaTeX: Removed ucs package, use utf8 rather than utf8x with inputenc. This covers fewer characters but is more robust with other packages, and ucs is unmaintained. Users who need better unicode support should use xelatex or lualatex.
  • If a template specified with --template is not found, look for it in datadir. Also, if no extension is provided, supply one based on the writer. So now you can put your special.latex template in ~/.pandoc/templates, and use it from any directory via pandoc -t latex --template special.

  • Added nonspaceChar to Text.Pandoc.Parsing.

  • Fixed smart quotes bug, now handling '...hi' properly.

  • RST reader:

    • Partial support for labeled footnotes.
    • Improved accuracy of simpleReferenceName parser.
  • HTML reader:

    • Substitute correct unicode characters for characters in the 128..159 range, which are often found even in HTML that purports to be UTF-8.
  • LaTeX reader: Handle \subtitle command (a subtitle is added to the title, after a colon and linebreak). Closes #280.

  • Leaner reference.odt.

  • Added unexported module Text.Pandoc.MIME for use in the ODT writer.

  • ODT writer: Construct manifest.xml based on archive contents. This fixes a bug in ODTs containing images. Recent versions of LibreOffice would reject these as corrupt, because manifest.xml did not contain a reference to the image files.

  • LaTeX writer:

    • Make verbatim environments flush to avoid spurious blank lines. Closes #277.
    • Use \texttt and escapes insntead of \verb!...!, which is too fragile (doesn’t work in command arguments).
    • Use \enquote{} for quotes if the template includes the csquotes package. This provides better support for local quoting styles. (Thanks to Andreas Wagner for the idea.)
  • ConTeXt writer: Make \starttyping/\stoptyping flush with margin, preventing spurious blank lines.

  • Slidy writer:

    • Use non-minimized version of slidy.css with --offline option, so users can more easily edit it.
    • Also fixed a bug in the CSS that prevented proper centering of title (now reported and fixed upstream).
  • S5 writer:

    • Replaced s5/default/slides.js.{comment,packed} with new compressed s5/default/slides.min.js.
    • Use data: protocol to embed S5 CSS in <link> tags, when --offline is specified. Using inline CSS didn’t work with Chrome or Safari. This fixes offline S5 on those browsers.
  • HTML writer: Removed English title on footnote backlinks. This is incongrous in non-English documents.

  • Docbook writer:

    • Use CALS tables. (Some older docbook software does not work well with XHTML tables.) Closes #77.
    • Use programlisting tags (instead of screen) for code blocks.
  • markdown2pdf:

    • Calls latex with -halt-on-error -interaction nonstopmode instead of -interaction=batchmode, which essentially just ignored errors, leading to bad results. Better to know when something is wrong.
    • Fixed issues with non-UTF-8 output of pdflatex.
    • Better error reporting.
  • --mathjax now takes an optional URL argument. If it is not provided, pandoc links directly to the (secure) mathjax CDN, as now recommended (thanks to dsanson).

  • Deprecated --xetex option in pandoc. It is no longer needed, since the LaTeX writer now produces a file that can be processed by latex, pdflatex, lualatex, or xelatex.

  • Introduced --luatex option to markdown2pdf. This causes lualatex to be used to create the PDF.

1.8.1.2 (2011-07-16)

  • Added --epub-cover-image option.

  • Documented --biblatex and --natbib options.

  • Allow --section-divs with slidy output. Resolves Issue #296.

  • Disallow notes within notes in reST and markdown. These previously caused infinite looping and stack overflows. For example:

    [^1]
    
    [^1]: See [^1]

    Note references are allowed in reST notes, so this isn’t a full implementation of reST. That can come later. For now we need to prevent the stack overflows. Partially resolves Issue #297.

  • EPUB writer: Allow non-plain math methods.

  • Forbid ()s in citation item keys. Resolves Issue #304: problems with (@item1; @item2) because the final paren was being parsed as part of the item key.

  • Changed URI parser so it doesn’t include trailing punctuation. So, in RST, http://google.com. should be parsed as a link followed by a period. The parser is smart enough to recognize balanced parentheses, as often occur in wikipedia links: http://foo.bar/baz_(bam).

  • Markdown+lhs reader: Require space after inverse bird tracks, so that HTML tags can be used freely at the left margin of a markdown+lhs document. Thanks to Conal Elliot for the suggestion.

  • Markdown reader: Fixed bug in footnote order (reported by CircleCode).

  • RST reader:
    • Fixed bug in in field lists with multi-line items at the end of the list.
    • Added parentheses to RST specialChars, so (http://google.com) will be parsed as a link in parens. Resolves Issue #291.
    • Allow | followed by newline in RST line block.
  • LaTeX reader:
    • Support \dots.
    • Gobble option & space after linebreak \\[10pt].
  • Textile reader:
    • Make it possible to have colons after links. (qerub)
    • Make it possible to have colons after links. (Christoffer Sawicki)
  • HTML reader:
    • Skip spaces after <b>, <emph>, etc.
    • Handle tbody, thead in simple tables. Closes #274.
    • Implicit Paras instead of Plains in some contexts.
  • OpenDocument writer: Use special First paragraph style for first paragraph after most non-paragraph blocks. This allows users to specify e.g. that only paragraphs after the first paragraph of a block are to be indented. Thanks to Andrea Rossato for the patch. Closes #20.

  • LaTeX writer: use deVerb on table and picture captions. Otherwise LaTeX complains about \verb inside command argument. Thanks to bbanier for reporting the bug.

  • Markdown writer: Insert HTML comment btw list and indented code block. This prevents the code block from being interpreted as part of the list.

  • EPUB writer: Add a meta element specify the cover. Some EPUB e-readers, such as the Nook, require a meta element inside the OPF metadata block to ensure the cover image is properly displayed. (Kelsey Hightower)

  • HTML writer: Use embed tag for images with non-image extensions. (e.g. PDFs). Closes #264.

  • LaTeX writer: Improved tables.

    • More space between lines, top-align cells.
    • Use ctable package, which allows footnotes and provides additional options.
    • Made cell alignments work in multiline tables.
    • Closes #271, #272.
  • Un-URI-escape image filenames in LaTeX, ConTeXt, RTF, Texinfo. Also do this when copying image files into EPUBs and ODTs. Closes #263.

  • Changed to github issue tracker.

  • Added failing emph/strong markdown test case due to Perry Wagle.

  • Slidy improvements:
    • Updated to use Slidy2.
    • Fixed bug, unclosed div tag.
    • Added duration variable in template. Setting this activates the timer.
    • Use ‘titlepage’ instead of ‘cover’ for title div.

1.8.1.1 (2011-02-13)

  • markdown2pdf: Removed some debugging lines accidentally included in the 1.8.1 release. With those lines, the temp directory is created in the working directory, and it is not deleted. This fix restores the original behavior.

1.8.1 (2011-02-13)

  • Added --ascii option. Currently supported only in HTML writer, which it causes to use numerical entities instead of UTF-8.

  • EPUB writer: --toc now works to provide a table of contents at the beginning of each chapter.

  • LaTeX writer: Change figure defaults to htbp. This prevents “too many unprocessed floats.” Resolves Issue #285.

  • Text.Pandoc.UTF8: Encode filenames even when using recent base.

  • markdown2pdf: Fixed filename encoding issues. With help from Paulo Tanimoto. Resolves Issue #286.

  • HTML writer: Put line breaks in section divs.

  • Text.Pandoc.Shared: Make writerSectionDivs default to False.

1.8.0.3 (2011-02-05)

  • Fixed Source-repository stanza in cabal file.

1.8.0.2 (2011-02-05)

  • HTML writer:

    • Stringify alt text instead of converting to HTML.
    • Break lines after block elements, not inside tags. HTML output now closely resembles that of tidy. Resolves Issue #134.
  • Markdown reader: Fixed bug in footnote block parser (pointed out by Jesse Rosenthal). The problem arose when the blank line at the end of a footnote block contained indenting spaces.

  • Shared: Improved ‘normalize’ function so it normalizes Spaces too. In normal form, Space elements only occur to separate two non-Space elements. So, we never have [Space], or [, …, Space].

  • Tests:

    • Improved Arbitrary instance.
    • Added timeout for test instances.
  • README:

    • Added section on four-space rule for lists. Resolves Issue #283.
    • Clarified optional arguments on math options.
  • markdown2pdf: Fixed bug with output file extensions. Previously markdown2pdf test.txt -o test.en.pdf would produce test.pdf, not test.en.pdf. Thanks to Paolo Tanimoto for the fix.

1.8.0.1 (2001-01-31)

  • Revised Interact.hs so that it works with the CPP macros in the UTF8 module.

  • Revised Setup.hs so that we don’t call MakeManPage.hs unless the man pages are out of date.

1.8 (2011-01-30)

New features

  • Support for citations using Andrea Rossato’s citeproc-hs 0.3. You can now write, for example,

    Water is wet [see @doe99, pp. 33-35; also @smith04, ch. 1].

    and, when you process your document using pandoc, specifying a citation style using --csl and a bibliography using --bibliography, the citation will be replaced by an appropriately formatted citation, and a list of works cited will be added to the end of the document.

    This means that you can switch effortlessly between different citation and bibliography styles, including footnote, numerical, and author-date formats. The bibliography can be in any of the following formats: MODS, BibTeX, BibLaTeX, RIS, EndNote, EndNote XML, ISI, MEDLINE, Copac, or JSON. See the README for further details.

    Citations are supported in the markdown reader, using a special syntax, and in the LaTeX reader, using natbib or biblatex syntax. (Thanks to Nathan Gass for the natbib and biblatex support.)

  • New textile reader and writer. Thanks to Paul Rivier for contributing the textile reader, an almost complete implementation of the textile syntax used by the ruby RedCloth library. Resolves Issue #51.

  • New org writer, for Emacs Org-mode, contributed by Puneeth Chaganti.

  • New json reader and writer, for reading and writing a JSON representation of the native Pandoc AST. These are much faster than the native reader and writer, and should be used for serializing Pandoc to text. To convert between the JSON representation and native Pandoc, use encodeJSON and decodeJSON from Text.JSON.Generic.

  • A new jsonFilter function in Text.Pandoc makes it easy to write scripts that transform a JSON-encoded pandoc document. For example:

    -- removelinks.hs - removes links from document
    import Text.Pandoc
    main = interact $ jsonFilter $ bottomUp removeLink
             where removeLink (Link xs _) = Emph xs
                   removeLink x = x

    To use this to remove links while translating markdown to LaTeX:

    pandoc -t json | runghc removelinks.hs | pandoc -f json -t latex
  • Attributes are now allowed in inline Code elements, for example:

    In this code, `ulist ! [theclass "special"] << elts`{.haskell} is...

    The attribute syntax is the same as for delimited code blocks. Code inline has an extra argument place for attributes, just like CodeBlock. Inline code will be highlighted in HTML output, if pandoc is compiled with highlighting support. Resolves Issue #119.

  • New RawBlock and RawInline elements (replacing RawHtml, HtmlInline, and TeX) provide lots of flexibility in writing scripts to transform Pandoc documents. Scripts can now change how each element is rendered in each output format.

  • You can now define LaTeX macros in markdown documents, and pandoc will apply them to TeX math. For example,

    \newcommand{\plus}[2]{#1 + #2}
    $\plus{3}{4}$

    yields 3+4. Since the macros are applied in the reader, they will work in every output format, not just LaTeX.

  • LaTeX macros can also be used in LaTeX documents (both in math and in non-math contexts).

  • A new --mathjax option has been added for displaying math in HTML using MathJax. Resolves issue #259.

  • Footnotes are now supported in the RST reader. (Note, however, that unlike docutils, pandoc ignores the numeral or symbol used in the note; footnotes are put in an auto-numbered ordered list.) Resolves Issue #258.

  • A new --normalize option causes pandoc to normalize the AST before writing the document. This means that, for example, *hi**there* will be rendered as <em>hithere</em> instead of <em>hi</em><em>there</em>. This is not the default, because there is a significant performance penalty.

  • A new --chapters command-line option causes headers in DocBook, LaTeX, and ConTeXt to start with “chapter” (level one). Resolves Issue #265.

  • In DocBook output, <chapter> is now used for top-level headers if the template contains <book>. Resolves Issue #265.

  • A new --listings option in pandoc and markdown2pdf causes the LaTeX writer to use the listings package for code blocks. (Thanks to Josef Svennigsson for the pandoc patch, and Etienne Millon for the markdown2pdf patch.)

  • markdown2pdf now supports --data-dir.

  • URLs in autolinks now have class “url” so they can be styled.

  • Improved prettyprinting in most formats. Lines will be wrapped more evenly and duplicate blank lines avoided.

  • New --columns command-line option sets the column width for line wrapping and relative width calculations for tables.

  • Made --smart work in HTML, RST, and Textile readers, as well as markdown.

  • Added --html5 option for HTML5 output.

  • Added support for listings package in LaTeX reader (Puneeth Chaganti).

  • Added support for simple tables in the LaTeX reader.

  • Added support for simple tables in the HTML reader.

  • Significant performance improvements in many readers and writers.

API and program changes

  • Moved Text.Pandoc.Definition from the pandoc package to a new auxiliary package, pandoc-types. This will make it possible for other programs to supply output in Pandoc format, without depending on the whole pandoc package.

  • Added Attr field to Code.

  • Removed RawHtml, HtmlInline, and TeX elements; added generic RawBlock and RawInline.

  • Moved generic functions to Text.Pandoc.Generic. Deprecated processWith, replacing it with two functions, bottomUp and topDown. Removed previously deprecated functions processPandoc and queryPandoc.

  • Added Text.Pandoc.Builder, for building Pandoc structures.

  • Text.Pandoc now exports association lists readers and writers.

  • Added Text.Pandoc.Readers.Native, which exports readNative. readNative can now read full pandoc documents, block lists, blocks, inline lists, or inlines. It will interpret Str "hi" as if it were Pandoc (Meta [] [] []) [Plain [Str "hi"]]. This should make testing easier.

  • Removed deprecated -C/--custom-header option. Use --template instead.

  • --biblio-file has been replaced by --bibliography. --biblio-format has been removed; pandoc now guesses the format from the file extension (see README).

  • pandoc will treat an argument as a URI only if it has an http(s) scheme. Previously pandoc would treat some Windows pathnames beginning with C:/ as URIs.

  • The --sanitize-html option and the stateSanitize field in ParserState have been removed. Sanitization is better done in the resulting HTML using xss-sanitize, which is based on pandoc’s sanitization, but improved.

  • pandoc now adds a newline to the end of its output in fragment mode (= not --standalone).

  • Added support for lang in html tag in the HTML template, so you can do pandoc -s -V lang=es, for example.

  • highlightHtml in Text.Pandoc.Highlighting now takes a boolean argument that selects between “inline” and “block” HTML.

  • Text.Pandoc.Writers.RTF now exports rtfEmbedImage. Images are embedded in RTF output when possible (png, jpeg). Resolves Issue #275.

  • Added Text.Pandoc.Pretty. This is better suited for pandoc than the pretty package. Changed all writers that used Text.PrettyPrint.HughesPJ to use Text.Pandoc.Pretty instead.

  • Rewrote writeNative using the new prettyprinting module. It is now much faster. The output has been made more consistent and compressed. writeNative is also now sensitive to writerStandalone, and will simplyprint a block list if writerStandalone` is False.

  • Removed Text.Pandoc.Blocks. Text.Pandoc.Pretty allows you to define blocks and concatenate them, so a separate module is no longer needed.

  • Text.Pandoc.Shared:

    • Added writerColumns, writerChapters, and writerHtml5 to WriterOptions.
    • Added normalize.
    • Removed unneeded prettyprinting functions: wrapped, wrapIfNeeded, wrappedTeX, wrapTeXIfNeeded, hang', BlockWrapper, wrappedBlocksToDoc.
    • Made splitBy take a test instead of an element.
    • Added findDataFile, refactored readDataFile.
    • Added stringify. Rewrote inlineListToIdentifier using stringify.
    • Fixed inlineListToIdentifier to treat ‘\160’ as ’ ’.
  • Text.Pandoc.Readers.HTML:

    • Removed rawHtmlBlock, anyHtmlBlockTag, anyHtmlInlineTag, anyHtmlTag, anyHtmlEndTag, htmlEndTag, extractTagType, htmlBlockElement, htmlComment
    • Added htmlTag, htmlInBalanced, isInlineTag, isBlockTag, isTextTag
  • Moved smartPunctuation from Text.Pandoc.Readers.Markdown to Text.Pandoc.Readers.Parsing, and parameterized it with an inline parser.

  • Ellipses are no longer allowed to contain spaces. Previously we allowed ’. . .’, ’ . . . ’, etc. This caused too many complications, and removed author’s flexibility in combining ellipses with spaces and periods.

  • Allow linebreaks in URLs (treat as spaces). Also, a string of consecutive spaces or tabs is now parsed as a single space. If you have multiple spaces in your URL, use %20%20.

  • Text.Pandoc.Parsing:

    • Removed refsMatch.
    • Hid Key constructor.
    • Removed custom Ord and Eq instances for Key.
    • Added toKey and fromKey to convert between Key and [Inline].
    • Generalized type on readWith.
  • Small change in calculation of relative widths of table columns. If the size of the header > the specified column width, use the header size as 100% for purposes of calculating relative widths of columns.

  • Markdown writer now uses some pandoc-specific features when --strict is not specified: \ newline is used for a hard linebreak instead of two spaces then a newline. And delimited code blocks are used when there are attributes.

  • HTML writer: improved gladTeX output by setting ENV appropriately for display or inline math (Jonathan Daugherty).

  • LaTeX writer: Use \paragraph, \subparagraph for level 4,5 headers.

  • LaTeX reader:

    • \label{foo} and \ref{foo} now become {foo} instead of (foo).
    • \index{} commands are skipped.
  • Added fontsize variable to default LaTeX template. This makes it easy to set the font size using markdown2pdf: markdown2pdf -V fontsize=12pt input.txt.

  • Fixed problem with strikeout in LaTeX headers when using hyperref, by adding a command to the default LaTeX template that disables \sout inside pdf strings. Thanks to Joost Kremers for the fix.

  • The COLUMNS environment variable no longer has any effect.

Under-the-hood improvements

  • Pandoc now compiles with GHC 7. (This alone leads to a significant performance improvement, 15-20%.)

  • Completely rewrote HTML reader using tagsoup as a lexer. The new reader is faster and more accurate. Unlike the old reader, it does not get bogged down on some input (Issues #277, 255). And it handles namespaces in tags (Issue #274).

  • Replaced escapeStringAsXML with a faster version.

  • Rewrote spaceChar and some other parsers in Text.Pandoc.Parsing for a significant performance boost.

  • Improved performance of all readers by rewriting parsers.

  • Simplified Text.Pandoc.CharacterReferences by using entity lookup functions from TagSoup.

  • Text.Pandoc.UTF8 now uses the unicode-aware IO functions from System.IO if base >= 4.2. This gives support for windows line endings on windows.

  • Remove duplications in documentation by generating the pandoc man page from README, using MakeManPage.hs.

  • README now includes a full description of markdown syntax, including non-pandoc-specific parts. A new pandoc_markdown man page is extracted from this, so you can look up markdown syntax by doing man pandoc_markdown.

  • Completely revised test framework (with help from Nathan Gass). The new test framework is built when the tests Cabal flag is set. It includes the old integration tests, but also some new unit and quickcheck tests. Test output has been much improved, and you can now specify a glob pattern after cabal test to indicate which tests should be run; for example cabal test citations will run all the citation tests.

  • Added a shell script, stripansi.sh, for filtering ANSI control sequences from test output: cabal test | ./stripansi.sh > test.log.

  • Added Interact.hs to make it easier to use ghci while developing. Interact.hs loads ghci from the src directory, specifying all the options needed to load pandoc modules (including specific package dependencies, which it gets by parsing dist/setup-config).

  • Added Benchmark.hs, testing all readers + writers using criterion.

  • Added stats.sh, to make it easier to collect and archive benchmark and lines-of-code stats.

  • Added upper bounds to all cabal dependencies.

  • Include man pages in extra-source-files. This allows users to install pandoc from the tarball without needing to build the man pages.

Bug fixes

  • Filenames are encoded as UTF8. Resolves Issue #252.

  • Handle curly quotes better in --smart mode. Previously, curly quotes were just parsed literally, leading to problems in some output formats. Now they are parsed as Quoted inlines, if --smart is specified. Resolves Issue #270.

  • Text.Pandoc.Parsing: Fixed bug in grid table parser. Spaces at end of line were not being stripped properly, resulting in unintended LineBreaks.

  • Markdown reader:

    • Allow HTML comments as inline elements in markdown. So, aaa <!-- comment --> bbb can be a single paragraph.
    • Fixed superscripts with links: ^[link](/foo)^ gets recognized as a superscripted link, not an inline note followed by garbage.
    • Fixed regression, making markdown reference keys case-insensitive again. Resolves Issue #272.
    • Properly handle abbreviations (like Mr.) at the end of a line.
    • Better handling of intraword underscores, avoiding exponential slowdowns in some cases. Resolves Issue #182.
    • Fixed bug in alignments in tables with blank rows in the header.
  • RST reader:

    • Field lists now allow spaces in field names, and block content in field values. (Thanks to Lachlan Musicman for pointing out the bug.)
    • Definition list items are now always Para instead of Plain, matching behavior of rst2xml.py.
    • In image blocks, the description is parsed properly and used for the alt attribute, not also the title.
    • Skip blank lines at beginning of file. Resolves Debian #611328.
  • LaTeX reader:

    • Improved parsing of preamble. Previously you’d get unexpected behavior on a document that contained \begin{document} in, say, a verbatim block.
    • Allow spaces between \begin or \end and {.
    • Support \L and \l.
    • Skip comments inside paragraphs.
  • LaTeX writer:

    • Escape strings in \href{..}.
    • In nonsimple tables, put cells in \parbox.
  • OpenDocument writer: don’t print raw TeX.

  • Markdown writer:

    • Fixed bug in Image. URI was getting unescaped twice!
    • Avoid printing extra blank lines at the end if there are no notes or references.
  • LaTeX and ConTeXt: Escape [ and ] as {[} and {]}. This avoids unwanted interpretation as an optional argument.

  • ConTeXt writer: Fixed problem with inline code. Previously } would be rendered \type{}}. Now we check the string for ‘}’ and ‘{’. If it contains neither, use \type{}; otherwise use \mono{} with an escaped version of the string.

  • : now allowed in HTML tags. Resolves Issue #274.

1.6 (2010-07-24)

  • New EPUB and HTML Slidy writers. (Issue #122)

    • EPUB is a standard ebook format, used in Apple’s iBooks for the iPad and iPhone, Barnes and Noble’s nook reader, the Sony reader, and many other devices, and by online ebook readers like bookworm. (Amazon’s Kindle uses a different format, MobiPocket, but EPUB books can easily be converted to Kindle format.) Now you can write your book in markdown and produce an ebook with a single command! I’ve put up a short tutorial here.
    • Slidy, like S5, is a system for producing HTML+javascript slide shows.
  • All input is assumed to be UTF-8, no matter what the locale and ghc version, and all output is UTF-8. This reverts to pre-1.5 behavior. Also, a BOM, if present, is stripped from the input.

  • Markdown now supports grid tables, whose cells can contain arbitrary block elements. (Issue #43)

  • Sequentially numbered example lists in markdown with @ marker.

  • Markdown table captions can begin with a bare colon and no longer need to include the English word “table.” Also, a caption can now occur either before or after the table. (Issue #227)

  • New command-line options:

    • --epub-stylesheet allows you to specify a CSS file that will be used to style your ebook.
    • --epub-metadata allows you to specify metadata for the ebook.
    • --offline causes the generated HTML slideshow to include all needed scripts and stylesheets.
    • --webtex causes TeX math to be converted to images using the Google Charts API (unless a different URL is specified).
    • --section-divs causes div tags to be added around each section in an HTML document. (Issue #230, 239)
  • Default behavior of S5 writer in standalone mode has changed: previously, it would include all needed scripts and stylesheets in the generated HTML; now, only links are included unless the --offline option is used.

  • Default behavior of HTML writer has changed. Between 1.2 and 1.5, pandoc would enclose sections in div tags with identifiers on the div tags, so that the sections can be manipulated in javascript. This caused undesirable interactions with raw HTML div tags. So, starting with 1.6, the default is to put the identifiers directly on the header tags, and not to include the divs. The --section-divs option selects the 1.2-1.5 behavior.

  • API changes:

    • HTMLMathMethod: Added WebTeX, removed MimeTeX.
    • WriterOptions: Added writerUserDataDir, writerSourceDirectory, writerEPUBMetadata fields. Removed writerIncludeBefore, writerIncludeAfter.
    • Added headerShift to Text.Pandoc.Shared.
    • Moved parsing code and ParserState from Text.Pandoc.Shared to a new module, Text.Pandoc.Parsing.
    • Added stateHasChapters to ParserState.
    • Added HTMLSlideVariant.
    • Made KeyTable a map instead of an association list.
    • Added accessors for Meta fields (docTitle, docAuthors, docDate).
    • Pandoc, Meta, Inline, and Block have been given Ord instances.
    • Reference keys now have a type of their own (Key), with its own Ord instance for case-insensitive comparison.
    • Added Text.Pandoc.Writers.EPUB.
    • Added Text.Pandoc.UUID.
    • Removed Text.Pandoc.ODT, added Text.Pandoc.Writers.ODT. Removed saveOpenDocumentAsODT, added writeODT.
    • Added Text.Pandoc.Writers.Native and writeNative. Removed prettyPandoc.
    • Added Text.Pandoc.UTF8 for portable UTF8 string IO.
    • Removed Text.Pandoc.Writers.S5 and the writeS5 function. Moved s5Includes to a new module, Text.Pandoc.S5. To write S5, you now use writeHtml with writerSlideVariant set to S5Slides or SlidySlides.
  • Template changes. If you use custom templates, please update them, particularly if you use syntax highlighting with pandoc. The old HTML templates hardcoded highlighting CSS that will no longer work with the most recent version of highlighting-kate.

    • HTML template: avoid empty meta tag if no date.
    • HTML template: Use default highlighting CSS from highlighting-kate instead of hard-coding the CSS into the template.
    • HTML template: insert-before text goes before the title, and immediately after the <body> tag, as documented. (Issue #241)
    • Added slidy and s5 templates.
    • Added amssymb to preamble of latex template. (github Issue 1)
  • Removed excess newlines at the end of output. Note: because output will not contain an extra newline, you may need to make adjustments if you are inserting pandoc’s output into a template.

  • In S5 and slidy, horizontal rules now cause a new slide, so you are no longer limited to one slide per section.

  • Improved handling of code in man writer. Inline code is now monospace, not bold, and code blocks now use .nf (no fill) and .IP (indented para).

  • HTML reader parses <tt> as Code. (Issue #247)

  • html+lhs output now contains bird tracks, even when compiled without highlighting support. (Issue #242)

  • Colons are now no longer allowed in autogenerated XML/HTML identifiers, since they have a special meaning in XML.

  • Code improvements in ODT writer. Remote images are now replaced with their alt text rather than a broken link.

  • LaTeX reader improvements:

    • Made latex \section, \chapter parsers more forgiving of whitespace.
    • Parse \chapter{} in latex.
    • Changed rawLaTeXInline to accept \section, \begin, etc.
    • Use new rawLaTeXInline' in LaTeX reader, and export rawLaTeXInline for use in markdown reader.
    • Fixes bug wherein \section{foo} was not recognized as raw TeX in markdown document.
  • LaTeX writer: images are automatically shrunk if they would extend beyond the page margin.

  • Plain, markdown, RST writers now use unicode for smart punctuation.

  • Man writer converts math to unicode when possible, as in other writers.

  • markdown2pdf can now recognize citeproc options.

  • Command-line arguments are converted to UTF-8. (Issue #234)

  • Text.Pandoc.TeXMath has been rewritten to use texmath’s parser. This allows it to handle a wider range of formulas. Also, if a formula cannot be converted, it is left in raw TeX; formulas are no longer partially converted.

  • Unicode curly quotes are left alone when parsing smart quotes. (Issue #143)

  • Cabal file changes:

    • Removed parsec < 3 restriction.
    • Added ‘threaded’ flag for architectures where GHC lacks a threaded runtime.
    • Use ‘threaded’ only for markdown2pdf; it is not needed for pandoc.
    • Require highlighting-kate 0.2.7.
  • Use explicit imports from Data.Generics. Otherwise we have a conflict with the ‘empty’ symbol, introduced in syb >= 0.2. (Issue #237)

  • New data files: slidy/slidy.min.js, slidy/slidy.min.css, epub.css.

1.5.1.1 (2010-03-29)

  • Fixed header identifiers (uniqueIdent in Shared) so they work as advertized in README and are guaranteed to be valid XHTML names. Thanks to Xyne for reporting the bug.

1.5.1 (2010-03-23)

  • Fixed treatment of unicode characters in URIs.
  • Revised Setup.hs so it works with debian’s build process.
  • Fixed bug in OpenDocument writer that led to invalid XML for some input.

1.5.0.1 (2010-03-21)

  • HTML writer: Fixed error in math writer (with MathML option) that caused an infinite loop for unparsable MathML.

1.5 (2010-03-20)

  • Moved repository to github.
  • New --mathml option, for display of TeX math as MathML.
  • New --data-dir option, allowing users to specify a data directory other than ~/.pandoc. Files placed in this directory will be used instead of system defaults.
  • New --base-header-level option. For example, --base-header-level=2 changes level 1 headers to level 2, level 2 to level 3, etc.
  • New ‘plain’ output format: plain text without pictures, hyperlinks, inline formatting, or anything else that looks even vaguely markupish.
  • Titles and authors in title blocks can now span multiple lines, as long as the continuation lines begin with a space character.
  • When given an absolute URI as a parameter, pandoc will fetch the content via HTTP.
  • The HTML reader has been made much more forgiving. It no longer requires well-formed xhtml as input.
  • html2markdown has been removed; it is no longer necessary, given the last two changes. pandoc can be used by itself to convert web pages to markdown or other formats.
  • hsmarkdown has also been removed. Use pandoc --strict instead. Or symlink pandoc’s executable to hsmarkdown; pandoc will then behave like hsmarkdown used to.
  • An image in a paragraph by itself is now rendered as a figure in most writers, with the alt text as the caption.
  • Incomplete support for reST tables (simple and grid). Thanks to Eric Kow. Colspans and rowspans not yet supported.
  • In mediawiki, links with relative URLs are now formatted as wikilinks. Also, headers have been promoted: = head = is now level 1 instead of level 2.
  • The markdown reader now handles “inverse bird tracks” when parsing literate haskell. These are used for haskell example code that is not part of the literate program.
  • The -B and -A options now imply -s and no longer work in fragment mode.
  • Headerless tables are now printed properly in all writers. In addition, tbody, thead, and cols are used in HTML and Docbook tables.
  • Improved build system; removed obsolete Makefile.
  • In LaTeX writer, \chapter is now used instead of \section. when the documentclass is book, report, or memoir.
  • Many small bug fixes. See changelog for details.

1.4 (2010-01-02)

  • New template system replaces old headers, giving users much more control over pandoc’s output in --standalone mode. Added --template and --variable options. The --print-default-header option is now --print-default-template. See README under “Templates” for details.
  • The old --custom-header option should still work, but it has been deprecated.
  • New --reference-odt option allows users to customize styles in ODT output.
  • Users may now put custom templates, s5 styles, and a reference ODT in the ~/.pandoc directory, where they will override system defaults. See README for details.
  • Unicode is now used whenever possible in HTML and XML output. Entities are used only where necessary (&gt;, &lt;, &quot;, &amp;).
  • Authors and dates may now include formatting and notes.
  • Added --xetex option for pandoc and markdown2pdf.
  • Windows installer now includes highlighting support and markdown2pdf and hsmarkdown wrappers.
  • Pandoc no longer requires Template Haskell, which should make it more portable.
  • Pandoc can now be built on GHC 6.12, as well as earlier versions.
  • See README for other small improvements and bug fixes.

1.3 (2009-12-10)

  • Added --id-prefix option to help prevent duplicate identifiers when you’re generating HTML fragments.
  • Added --indented-code-classes option, which specifies default highlighting syntax for indented code blocks.
  • --number-sections now affects HTML output.
  • Improved syntax for markdown definition lists.
  • Better looking simple tables.
  • Markdown tables without headers are now possible.
  • New hard line break syntax: backslash followed by newline.
  • Improved performance of markdown reader by ~10% by eliminating the need for a separate parsing pass for notes.
  • Improved syntax highlighting for literate Haskell.
  • Support for “..code-block” directive in RST reader.
  • Windows binary now includes highlighting support.
  • Many bug fixes and small improvements. See changelog for details.

1.2.1 (2009-07-18)

  • Improved the efficiency of the markdown reader’s abbreviation parsing (should give a big performance boost with --smart).
  • HTML writer now wraps sections in divs with unique identifiers, for easier manipulation.
  • Improved LaTeX reader’s coverage of math modes.
  • Added a portable Haskell version of markdown2pdf (thanks to Paolo Tanimoto).
  • Made --strict compatible with --standalone and --toc.
  • Many other small improvements and bug fixes. See changelog for details.

1.2 (2009-03-01)

  • 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 --email-obfuscation option.
  • Brought citeproc support up to date for citeproc-hs-0.2.
  • Many bugs fixed. See changelog for details.

1.1 (2008-11-06)

  • New --jsmath option supporting use of pandoc with [jsMath].
  • Classes on HTML table output for better CSS styling.
  • Windows installer no longer requires admin privileges.
  • Many bugs fixed. See changelog for details.

1.0 (2008-09-13)

  • New writers for MediaWiki, GNU Texinfo (thanks to Peter Wang), OpenDocument XML (thanks to Andrea Rossato), and ODT (OpenOffice document).
  • New delimited code blocks, with optional syntax highlighting.
  • Reorganized build system: pandoc can now be built using standard Cabal tools. It can be compiled on Windows without Cygwin. The tests can also be run without perl or unix tools.
  • LaTeXMathML replaces ASCIIMathML for rendering math in HTML.
  • Support for “displayed” math.
  • Common abbreviations are now handled more intelligently, with a non-breaking space (and not a sentence-ending space) after the period.
  • Code is -Wall clean.
  • Many bug fixes and small improvements. See changelog for full details.

0.46 (2008-01-08)

  • Added a --sanitize-html option (and a corresponding parameter in ParserState for those using the pandoc libraries in programs). This option causes pandoc to sanitize HTML (in HTML or Markdown input) using a whitelist method. Possibly harmful HTML elements are replaced with HTML comments. This should be useful in the context of web applications, where pandoc may be used to convert user input into HTML.
  • Made -H, -A, and -B options cumulative: if they are specified multiple times, multiple files will be included.
  • Many bug fixes and small improvements. See changelog for full details.

0.45 (2007-12-09)

  • Many bug fixes and structural improvements. See changelog for full details.
  • Improved treatment of math. Math is now rendered using unicode by default in HTML, RTF, and DocBook output. For more accurate display of math in HTML, --gladtex, --mimetex, and --asciimathml options are provided. See the User’s Guide for details.
  • Removed support for box-style block quotes in markdown.
  • More idiomatic ConTeXt output.
  • Text wrapping in ConTeXt and LaTeX output.
  • Pandoc now correctly handles all standard line endings (CR, LF, CRLF).
  • New --no-wrap option that disables line wrapping and minimizes whitespace in HTML output.
  • Build process is now compatible with both GHC 6.8 and GHC 6.6. GHC and GHC_PKG environment variables may be used to specify which version of the compiler to use, when multiple versions are installed.