Sometimes we will want to get back something different than we started
with in a round-trip test. This allows for that, and makes the perfect
roundtrip a special case.
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 (e.g. `[[file:image.jpg]]` leading to a broken image `<img
src="file:image.jpg"/>)
Thanks to @bsag for noticing this bug.
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.
This fixes#3016.
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.
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.
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.
This fixes half of #2496 and #2999.
The link
`<foo>`_
should have `foo` as both its link text and its URL.
See RST spec at
<http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#embedded-uris-and-aliases>
"The reference text may also be omitted, in which case the URI will be
duplicated for use as the reference text. This is useful for relative
URIs where the address or file name is also the desired reference text:
See `<a_named_relative_link>`_ or `<an_anonymous_relative_link>`__
for details."
Closes Debian #828167 -- reported by Christian Heller.
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.
- `writerEmailObfuscation` in `defaultWriterOptions` is now
`NoObfuscation`
- the default for the command-line `--email-obfuscation` option is
now `none`.
Closes#2988.
Org mode allows arbitrary raw inlines ("export snippets" in Emacs
parlance) to be included as `@@format:raw foreign format text@@`.
Support for this features is added to the Org reader.
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.
See https://tex.stackexchange.com/questions/313266/and-non-ascii-characters-in-headings
This affects inputs this like
# %á
with pdf output via xelatex.
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.
This closes#1978.
Org-mode version 9 usees a new syntax for export blocks. Instead of
`#+BEGIN_<FORMAT>`, where `<FORMAT>` is the format of the block's
content, the new format uses `#+BEGIN_export <FORMAT>` instead. Both
types are supported.
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.
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.
The reader and writer erroneously used `ID`. This is corrected by using
`CUSTOM_ID` where appropriate.
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.
This closes#1962.
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.
This closes#1877.
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.
This closes#1906.
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.
The last fix for whitespace handling of inline LaTeX commands was
incorrect, preventing correct recognition of inline LaTeX commands which
contain spaces. This fix ensures that only trailing whitespace is cut
off.
The org-reader was droping 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.
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.
This fixes#2616.
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.
The org reader was padding rows to the length of the longest table row.
This was done due to a misunderstanding of how Org handles tables. This
feature reflected how Org-mode handles tables when pressing <TAB>. The
Org exporter however, which is what the reader should implement, doesn't
do any of this. So this was a mis-feature that made the reader more
complex and reduced comparability. It was hence removed.
Change types of divs.
From Docbook "sect#" and "simplesect" to "level#" and
"section."
Add tests.
Add mention of TEI to README.
Small changes to TEI writer.
The convention used by pandoc for figures is to mark them by prefixing
the name with "fig:". The org reader failed to do this if a figure had
no name. The test for this was broken as well.
This fixes#2643.
Continue scanning for comment subtrees beyond only the first block.
Note to self: when writing an recursive function, don't forget to, you
know, actually recurse.
Shout to @mrvdb for noticing this.
This fixes#2628.
The reader previously did allow this, following redcloth,
which happily parses
Html blocks can be <div>inlined</div> as well.
as
<p>Html blocks can be <div>inlined</div> as well.</p>
This is invalid HTML, and this kind of thing can lead
to parsing problems (stack overflows) as well. So this
commit undoes this behavior. The above sample now produces;
<p>Html blocks can be</p>
<div>
<p>inlined</p>
</div>
<p>as well.</p>
+ Start cell on new line unless it's a single Para or Plain.
+ For single Para or Plain, insert a space after the `|` to
avoid problems when the text begins with a character like
`-`.
Closes#2604, closes#2606.
* Added `thanks` variable
* Use `parskip.sty` when `indent` isn't set (fall
back to using `setlength` as before if `parskip.sty`
isn't available).
* Use `biblio-style` with biblatex.
* Added `biblatexoptions` variable.
* Added `section-titles` variable (defaults to true)
to enable/suppress section title pages in beamer
slide shows.
* Moved beamer themes after fonts, so that themes can
change fonts. (Previously the fonts set were being
clobbered by lmodern.sty.)
`file:filename` rather than `file://./filename`.
I think this is right; it matches what we had before
with people actually using the ICML writer, and seems
to match examples in the spec. I don't
have a copy of InDesign I can test on, though.
@DigitalPublishingToolkit and @mb21, can you have
a look?
- only pass options to color package if colorlinks is set
- make definition of `\euro` conditional in xelatex/lualatex,
as it is already for pdflatex
(Andrew Dunning)
* Removed setting of `subject` in PDF metadata.
This used to be set to the subtitle, but really the subtitle
need not give the subject. Also, `subtitle` can contain formatting,
so we'd need, at least, a plain text version for this.
* Moved `header-includes` before setting of `\title`, `\author`,
etc. This allows these macros to be redefined.
* Use `\subtitle` command for `subtitle`, instead of tacking it
on to the title as before. We give a no-op fallback definition if it is
not defined. This change should produce much better results
in classes that support `\subtitle`. With the default article
class, which does not define `\subtitle`, subtitles will no
longer be printed unless the user defines `\subtitle` and
redefines `\maketitle`.
* Moved redefinitions of `\paragraph` and `\subparagraph` to
before header-includes.
* Bumped version to 1.16.
* Added Attr field to Link and Image.
* Added `common_link_attributes` extension.
* Updated readers for link attributes.
* Updated writers for link attributes.
* Updated tests
* Updated stack.yaml to build against unreleased versions of
pandoc-types and texmath.
* Fixed various compiler warnings.
Closes#261.
TODO:
* Relative (percentage) image widths in docx writer.
* ODT/OpenDocument writer (untested, same issue about percentage widths).
* Update pandoc-citeproc.
Definition list markers (i.e. double colons `::`) must be surrounded by
whitespace to start a definition item. This rule was not checked
before, resulting in bugs with footnotes and some link types.
Thanks to @conklech for noticing and reporting this issue.
This fixes#2518.
Smart quotes, ellipses, and dashes should behave like normal quotes,
single dashes, and dots with respect to text markup parsing. The parser
state was not updated properly in all cases, which has been fixed.
Thanks to @conklech for reporting this issue.
This fixes#2513.
Markup as the very first item in a header wasn't recognized. This was
caused by an incorrect parser state: positions at which inline markup
can start need to be marked explicitly by changing the parser state.
This wasn't done for headers. The proper function to update the state
is now called at the beginning of the header parser, fixing this issue.
This fixes#2504.
If a pipe table contains a line longer than the column
width (as set by `--columns` or 80 by default), relative
widths are computed based on the widths of the separator lines
relative to the column width.
This should solve persistent problems with long pipe tables in
LaTeX/PDF output, and give more flexibility for determining
relative column widths in other formats, too.
For narrower pipe tables, column widths of 0 are used,
telling pandoc not to specify widths explicitly in output
formats that permit this.
Closes#2471.
Closes#2480.
Note that although smart punctuation is part of the textile
spec, it's not always wanted when converting from textile
to, say, Markdown. So it seems better to make this an option.
- Added `keywords` to HTML templates and fixed alignment.
- Updated dzslides template from source.
- Added `lang`, `dir`, `quotes` to HTML templates;
always make author and date display conditional.
- Fixed `author` and `date` in asciidoc; added `keywords`, `abstract`.
- Updated tests.
Org-mode allows to skip the argument of a code block header argument if
it's toggling a value. Argument-less headers are now recognized,
avoiding weird parsing errors.
The fixes are not exactly pretty, but neither is the code that was
fixed. So I guess it's about par for the course. However, a rewrite of
the header parsing code wouldn't hurt in the long run.
Thanks to @jo-tham for filing the bug report.
This fixes#2269.
Paragraphs can be followed by lists, even if there is no blank line
between the two blocks. However, this should only be true if the
paragraph is not within a list, were the preceding block should be
parsed as a plain instead of paragraph (to allow for compact lists).
Thanks to @rgaiacs for bringing this up.
This fixes#2464.
Tightened up the inline HTML parser so it disallows
TagWarnings.
This only affects the markdown reader when the `markdown_in_html_blocks`
option is disabled.
Closes#2469.
- The (non-exported) prelude is in prelude/Prelude.hs.
- It exports Monoid and Applicative, like base 4.8 prelude,
but works with older base versions.
- It exports (<>) for mappend.
- It hides 'catch' on older base versions.
This allows us to remove many imports of Data.Monoid
and Control.Applicative, and remove Text.Pandoc.Compat.Monoid.
It should allow us to use -Wall again for ghc 7.10.
If we're producing a fragment, just skip normalization.
After all, the fragment might be somewhere in the middle
of the document. It's more important for fragments to
have consistency in rendering (so they can be pieced
together) than to normalize.
This closes#2394. It's simpler and more robust than
my earlier fix.
Previously `<section>` tags were just parsed as raw HTML
blocks. With this change, section elements are parsed as
Div elements with the class "section". The HTML writer will
use `<section>` tags to render these Divs in HTML5; otherwise
they will be rendered as `<div class="section">`.
Closes#2438.
docbook-xsl, a set of XSLT scripts to generate HMTL out of DocBook,
tries harder to generate a nice xref text. Depending on the element
being linked to, it looks at the title or other descriptive child
elements. Let's do that, too.
'xref' is used to create cross references to other parts of the
document. It is an empty element - the cross reference text depends on
various attributes. Quoting 'DocBook: The Definitive Guide':
1. If the endterm attribute is specified on xref, the content of the
element pointed to by endterm will be used as the text of the
cross-reference.
2. Otherwise, if the object pointed to has a specified XRefLabel, the
content of that attribute will be used as the cross-reference text.
The previous verse parsing code made the faulty assumption that empty
strings are valid (and empty) inlines. This isn't the case, so lines
are changed to contain at least a newline.
It would generally be nicer and faster to keep the newlines while
splitting the string. However, this would require more code, which
seems unjustified for a simple (and fairly rare) block as *verse*.
This fixes#2402.
Previously the parser failed on this kind of case
.. role:: indirect(code)
.. role:: py(indirect)
:language: python
:py:`hi`
Now it currectly recognizes `:py:` as a code role.
The previous test for this didn't work, because the
name of the indirect role was the same as the language
defined its parent, os it didn't really test for this
behavior. Updated test.