We currently treat all memoir templates as books. This means that pandoc
will infer the `--chapters` argument, even if the `article` iption is
set for memoir.
This commit makes pandoc treats the document as an article if there is
an article option (i.e., `\documentclass[12pt,article]{memoir}`).
Note that this refactors out the parsec parsers for document class and
options, to make it a little clearer what's going on.
Previously smart quotes were incorrect in the following:
'$\neg(x \in x)$'.
(because of the following period). This commit fixes the problem,
which was introduced by commit 4229cf2d92.
This gives better results when people write e.g. `\TeX{}` in Markdown.
\TeX{} and \LaTeX{}
now works as expected with `pandoc -f markdown -t latex`.
Closes#2687.
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.
- Text.Pandoc.XML.fromEntities: handle entities without a
semicolon. Always lookup character references with the
trailing ';', even if it wasn't present. And never add
it when looking up numerical entities. (This is what
tagsoup seems to require.)
- Text.Pandoc.Parsing.characterReference: Always lookup
character references with the trailing ';', and leave off
the ';' when looking up numerical entities.
This fixes a regression for e.g. `⟨`.
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.
If `geometry` has no value, but `margin-left`, `margin-right`,
`margin-top`, and/or `-margin-bottom` are given, a default value
for `geometry` is created from these.
Note that these variables already affect PDF production via HTML5
with wkhtmltopdf.
Variables margin-top, margin-bottom, margin-left, margin-right.
Setting them with css inside @page doesn't seem to work, at least
with the released wkhtmltopdf.
* 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?
This partially addresses jgm/pandoc-citeproc#143.
It does not use the native asciidoc syntax for citations,
but it does get the links to individual citations working.
Text.Pandoc.Options: Added `Ext_east_asian_line_breaks` constructor to
`Extension` (API change).
This extension is like `ignore_line_breaks`, but smarter -- it
only ignores line breaks between two East Asian wide characters.
This makes it better suited for writing with a mix of East Asian
and non-East Asian scripts.
Closes#2586.
Previously pipe table columns got relative widths (based
on the header underscore lines) when the source of one of the rows was
greater in width than the column width. This gave bad results in some
cases where much of the width of the row was due to nonprinting
material (e.g. link URLs). Now pandoc only looks at printable
width (the width of a plain string version of the source), which
should give better results.
Thanks to John Muccigrosso for bringing up the issue.
Previously we tried to get the image size from the image even
if an explicit size was specified. Since we still can't get
image size for PDFs, this made it impossible to use PDF images
in docx.
Now we don't try to get the image size when a size is already
explicitly specified.
This contains a JSON version of all the metadata, in the
format selected for the writer.
So, for example, to get just the YAML metadata, you can
run pandoc with the following custom template:
$meta-json$
Closes#2019. The intent is to make it easier for static
site generators and other tools to get at the metadata.
Change 5527465c introduced a `DummyListItem` type in Docx/Parse.hs. In
retrospect, this seems like it mixes parsing and iterpretation
excessively. What's *really* going on is that we have a list item
without and associate level or numeric info. We can decide what to do
what that in Docx.hs (treat it like a list paragraph), but the parser
shouldn't make that decision.
This commit makes what is going on a bit more explicit. `LevelInfo` is
now a Maybe value in the `ListItem` type. If it's a Nothing, we treat
it as a ListParagraph. If it's a Just, it's a normal list item.
* Old `link_attributes` -> `mmd_link_attributes`
* Recently added `common_link_attributes` -> `link_attributes`
Note: this change could break some existing workflows.
* 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.
This change makes `--no-tex-ligatures` affect the LaTeX reader
as well as the LaTeX and ConTeXt writers. If it is used,
the LaTeX reader will parse characters `` ` ``, `'`, and `-`
literally, rather than parsing ligatures for quotation marks
and dashes. And the LaTeX writer will print unicode quotation
mark and dash characters literally, rather than converting
them to the standard ASCII ligatures.
Note that `--smart` has no affect on the LaTeX reader.
`--smart` is still the default for all input formats when
LaTeX or ConTeXt is the output format, *unless* `--no-tex-ligatures`
is used.
Some examples to illustrate the logic:
```
% echo "'hi'" | pandoc -t latex
`hi'
% echo "'hi'" | pandoc -t latex --no-tex-ligatures
'hi'
% echo "'hi'" | pandoc -t latex --no-tex-ligatures --smart
‘hi’
% echo "'hi'" | pandoc -f latex --no-tex-ligatures
<p>'hi'</p>
% echo "'hi'" | pandoc -f latex
<p>’hi’</p>
```
Closes#2541.
These come up when people create a list item and then delete the
bullet. It doesn't refer to any real list item, and we used to ignore
it.
We handle it with a DummyListItem type, which, in Docx.hs, is turned
into a normal paragraph with a "ListParagraph" class. If it follow
another list item, it is folded as another paragraph into that item. If
it doesn't, it's just its own (usually indented, and therefore
block-quoted) paragraph.
We don't have a place yet for styles or sizes on images, but
we can skip the attributes rather than incorrectly taking them
to be part of the filename.
Closes#2515.
Automatic styles can now be inserted in the template,
since the template, not the writer, now provides the
enclosing `<office:automatic-styles>` tags.
Closes#2520.
Previously, when using headers below the slide level, pauses are left
uninterpreted into pauses. In my opinion, unexpected behavior but
intentional looking at the code.
Fixes#2530
There are separate relationship (link) files for foot and
endnotes. These had previously been grouped together which led to
links not working correctly in notes. This should finally fix that.
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.
By default pandoc downloads all linked media and includes it in the
EPUB container. This can be disabled by setting `data-external`
on the tags linking to media that should not be downloaded.
Example:
<audio controls="1">
<source src="http://www.sixbarsjail.it/tmp/bach_toccata.mp3"
type="audio/mpeg"></source>
</audio>
Closes#2473.
Don't use custom prelude for latest ghc.
This is a better approach to making 'stack ghci' and 'cabal repl'
work. Instead of using NoImplicitPrelude, we only use the custom
prelude for older ghc versions. The custom prelude presents a
uniform API that matches the current base version's prelude.
So, when developing (presumably with latest ghc), we don't
use a custom prelude at all and hence have no trouble with ghci.
The custom prelude no longer exports (<>): we now want to
match the base 4.8 prelude behavior.
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.
Footnotes aren't allowed in the list of figures. This
patch causes footnotes to be stripped from captions when
entered into the list of figures.
Footnotes still don't actually WORK in captions in latex/pdf,
but at least an error is no longer raised.
See #1506.
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.
We now allow blank metadata fields. These were explicitly
disallowed before.
For background see #2026. The issue in #2026 has since
been fixed in another way, so there is no need to forbid
blank metadata fields.
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.
This way we have uniform separators, whether on Windows or Linux.
This should solve a problem where on some Windows versions
the data files weren't being found.
Closes#2459.
- 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.
These changes are intended to make the writer more
useful to people who are processing small fragments,
which may for example look like this:
### third level header from previous section
## second level header
Previously such fragments got turned into two
headers of the same level. The new algorithm
avoids doing any normalization until we hit the
minimal-level header in the fragment (here, the
second level header).
Closes#2394.
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.
`src/Text/Pandoc/Shared.hs`, so that all Writers can access this variable
without importing `src/Text/Pandoc.hs`, preventing circular import.
* pandoc.hs: Import pandocVersion from `Text.Pandoc.Shared`.
* src/Text/Pandoc.hs: Remove the definition of pandocVersion
and relevant import.
* src/Text/Pandoc/Shared.hs: Add the definition of pandocVersion
and relevant import.
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.
Having access to the entire document will be needed when handling
elements which refer to other elements. This is needed for e.g. <xref>
or <link>, both of which reference other elements (by the 'id'
attribute) for the label text.
I suppose that in practice, the [Content] returned by parseXML always
only contains one 'Elem' value -- the document element. However, I'm not
totally sure about it, so let's just pass all the Content along.
I plan to use the parsed and normalized XML tree read in readDocBook in
other places - prepare that commit by factoring this code out into a
separate, shared, definition.
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.
This makes TOC linking work properly.
The same thing needs to be done to the org reader to fix#2354;
in addition, `Ext_auto_identifiers` should be added to the list
of default extensions for org in Text.Pandoc.
The issue was originally reported by CasperVector as
https://github.com/gentoo-haskell/gentoo-haskell/issues/427
Mainfests itself as a builg failure full of missing zip-archive
names:
src/Text/Pandoc/Shared.hs:756:49:
Not in scope: type constructor or class ‘Archive’
src/Text/Pandoc/Shared.hs:777:38: Not in scope: ‘toEntry’
src/Text/Pandoc/Shared.hs:786:19:
Not in scope: ‘toArchive’
Perhaps you meant ‘mbArchive’ (line 778)
Included Codec.Archive.Zip unconditionally.
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
* Added `Ext_common_link_attributes` constructor to `Extension`
(for link and image attributes).
* Added this to `pandocExtensions` and `phpMarkdownExtraExtensions`.
* Added `writerDpi` to `WriterOptions`.
* pandoc.hs: Added `--dpi` option.
* Updated README for `--dpi` and `common_link_attributes` extension.
Patch due to mb21, with some modifications: `writerDpi` is now an
`Int` rather than a `Double`.
Previously the left-hand column could not start with 4 or
more spaces indent. This was inconvenient for right-aligned
left columns.
Note that the first (header column) must still have 3 or fewer
spaces indentation, or the table will be treated as an indented
code block.
Technically this isn't allowed in an HTML comment, but
we've always allowed it, and so do most other implementations.
It is handy if e.g. you want to put command line arguments
in HTML comments.
If a documentclass isn't specified in metadata, but the
template has a hardwired bookish documentclass, act as if
`--chapters` was used. This was the default in earlier
versions, but it has been broken for a little while.
Previously we disallowed `-` at the end of an autolink,
and disallowed the combination `=-`.
This commit liberalizes the rules for allowing punctuation in
a bare URI.
Added test cases.
One potential drawback is that you can no longer put a bare
URI in em dashes like this
this uri---http://example.com---is an example.
But in this respect we now match github's treatment of bare URIs.
Closes#2299.
With this change `<div class="notes">` and also `<div class="notes"
role="note">` will be output if `-t dzslides` is used. So we can
have speaker notes in dzslides too.
Thanks to maybegeek.