Commit graph

10535 commits

Author SHA1 Message Date
Jesse Rosenthal
b010113f3f Powerpoint writer: Move Presentation.hs out of PandocMonad
We don't need it for anything but the log messages, and we can just
keep track of that in state and pass it along to the `writePowerpoint`
function. This will simplify the code.
2018-01-15 10:01:59 -05:00
Jesse Rosenthal
a7d131cf44 Powerpoint writer: Ignore anchor links to nowehere.
We don't convert a '#target' ExternalTarget to an InternalTarget if
`target` is not in the AnchorMap. We just remove the link. This
prevents broken links in the Powerpoint output.
2018-01-15 08:56:20 -05:00
John MacFarlane
0e16155aaf Remove custom prelude and ghc 7.8 support. 2018-01-14 23:31:49 -08:00
John MacFarlane
a1397ee081 Revert "Custom prelude - only export <> from Data.Monoid."
This reverts commit 01ea3edf0f.
2018-01-14 23:23:48 -08:00
John MacFarlane
01ea3edf0f Custom prelude - only export <> from Data.Monoid. 2018-01-14 23:04:47 -08:00
John MacFarlane
39f3d67848 Fix import. 2018-01-14 22:57:05 -08:00
John MacFarlane
2cd5b55d51 Fix cabal to use base-compat with ghc < 7.10. 2018-01-14 22:50:46 -08:00
Jesse Rosenthal
3156722ac4 Powerpoint writer: Fix anchor links.
They were broken when I refactored (the Output module wanted to use
state left over from the construction of the Presentation type). This
change introduces a new type `LinkTarget = InternalTarget |
ExternalTarget`. Internal target points to a slide number, and these
will all be resolved before the Presentation is passed along to the
Output module.
2018-01-14 21:59:06 -05:00
John MacFarlane
2c00540485 Use base-compat for our custom prelude.
This should give us more complete coverage of newer
base features.

See #4255.
2018-01-14 18:34:26 -08:00
John MacFarlane
9184e1a55b Clarified latex_macros extension. 2018-01-14 16:05:13 -08:00
John MacFarlane
615a99c2c2 RST reader: add aligned environment when needed in math.
rst2latex.py uses an align* environment for math in
`.. math::` blocks, so this math may contain line breaks.
If it does, we put the math in an `aligned` environment
to simulate rst2latex.py's behavior.

Closes #4254.
2018-01-14 15:11:11 -08:00
John MacFarlane
d9584d73f9 Markdown reader: Improved inlinesInBalancedBrackets.
The change both improves performance and fixes a
regression whereby normal citations inside inline notes
were not parsed correctly.

Closes jgm/pandoc-citeproc#315.
2018-01-14 12:24:21 -08:00
John MacFarlane
cd80b8d76f Allow latest QuickCheck. 2018-01-14 12:24:21 -08:00
John MacFarlane
4debcf7bdc LaTeX reader: Advance source position at end of stream. 2018-01-14 12:24:21 -08:00
John MacFarlane
e5abee82f2 Shorten unbalanced brackets test.
It was taking a lot of time.
2018-01-14 12:24:21 -08:00
Jesse Rosenthal
431f6166fa Powerpoint writer: Refactor into separate modules.
There are two steps in the conversion: a conversion from pandoc to a
Presentation datatype modeling pptx, and a conversion from
Presentation to a pptx archive. The two steps were sharing the same
state and environment, and the code was getting a bit
spaghetti-ish. This separates the conversion into separate
modules (T.P.W.Powerpoint.Presentation, which defineds the
Presentation datatype and goes Pandoc->Presentation)
and (T.P.W.Pandoc.Output, which goes Presentation->Archive).
Text.Pandoc.Writers.Powerpoint a thin wrapper around the two modules.
2018-01-14 09:39:39 -05:00
Jesse Rosenthal
90dcd0bc87 Powerpoint writer: Avoid overlapping blocks in column output.
Just as a slide can't have an image and text on the same slide because
of overlapping, we can't have both in a single column. We run
splitBlocks on the text in the column and discard the rest.
2018-01-14 01:50:16 -05:00
Jesse Rosenthal
64c4451ef3 Powerpoint writer: Position images correctly in two-column layout.
You can have two images side-by-side, or text alongside an image. The
image will be fit correctly within the column.
2018-01-14 01:50:16 -05:00
Jesse Rosenthal
1577289672 Powerpoint writer: Make content shape retrieval environment-aware
We put `getContentShape` and `getContentShapeSize` inside the P monad,
so that we can (in the future) make use of knowledge of what slide
environment we're in to get the correct shape. This will allow us, for
example, to get individual columns for a two-column layout, and place
images in them appropriately.
2018-01-14 01:50:16 -05:00
John MacFarlane
e7d95cadf5 LaTeX reader: pass through macro defs in rawLaTeXBlock...
even if the `latex_macros` extension is set.
This reverts to earlier behavior and is probably safer
on the whole, since some macros only modify things in
included packages, which pandoc's macro expansion can't
modify.

Closes #4246.
2018-01-13 22:12:32 -08:00
John MacFarlane
485535464d LaTeX reader: fixed pos calculation in tokenizing escaped space. 2018-01-13 22:04:55 -08:00
Jesse Rosenthal
50b64bcf1c Powerpoint writer: Improve image handling.
We now determine image and caption placement by getting the dimensions
of the content box in a given layout. This allows for images to be
correctly sized and positioned in a different template.

Note that iamges without captions and headers are no longer
full-screened. We can't do this dependably in different layouts,
because we don't know where the header is (it could be to the side of
the content, for example).
2018-01-13 21:42:38 -05:00
Albert Krewinkel
2c71604554
data/pandoc.lua: add attr, listAttributes accessors
Elements with attributes got an additional `attr` accessor. Attributes
were accessible only via the `identifier`, `classes`, and `attributes`,
which was in conflict with the documentation, which indirectly states
that such elements have the an `attr` property.
2018-01-13 23:24:13 +01:00
Albert Krewinkel
e0cb0dab18
data/pandoc.lua: accept single block as singleton list
Every constructor which accepts a list of blocks now also accepts a
single block element for convenience.  Furthermore, strings are accepted as
shorthand for `{pandoc.Str "text"}` in constructors.
2018-01-13 22:32:22 +01:00
John MacFarlane
e5e69e68c9 MANUAL: recommend use of raw_attribute extension in header includes.
See #4253.
2018-01-13 12:22:25 -08:00
John MacFarlane
dca0032b0e LaTeX reader: allow macro definitions inside macros.
Previously we went into an infinite loop with

```
\newcommand{\noop}[1]{#1}
\noop{\newcommand{\foo}[1]{#1}}
\foo{hi}
```

See #4253.
2018-01-13 12:22:25 -08:00
John MacFarlane
44222e0373 LaTeX reader: allow macro definitions inside macros.
Previously we went into an infinite loop with

```
\newcommand{\noop}[1]{#1}
\noop{\newcommand{\foo}[1]{#1}}
\foo{hi}
```

See #4253.
2018-01-13 12:11:36 -08:00
Jesse Rosenthal
944ed5e098 Powerpoint writer: read presentation size from reference file.
Our presentation size is now dependent on the reference/template file
we use. This will make it easier to set different output sizes by
supplying different reference files. The alternative (allowing a user
to explicitly set output size regardless of the template) will lead to
too many thorny issues, as explicitly set sizes at the various level
of powerpoint layout would have to be reset.
2018-01-13 14:58:46 -05:00
Albert Krewinkel
9fdd266677
data/pandoc.lua: accept singleton inline as a list
Every constructor which accepts a list of inlines now also accepts a
single inline element for convenience.
2018-01-13 18:52:17 +01:00
Albert Krewinkel
1d639456d3
data/pandoc.lua: drop _VERSION
Having a _VERSION became superfluous, as this module is closely tied to
the pandoc version, which is available via PANDOC_VERSION.
2018-01-13 15:38:15 +01:00
Jesse Rosenthal
e08776b9d5 Powerpoint writer: code cleanup
Last commit accidentally left commented-out code in.
2018-01-13 09:34:03 -05:00
Jesse Rosenthal
a842d3ae7d Powerpoint writer: Handle (sub)headers above slidelevel correctly.
Above the slidelevel, subheaders will be printed in bold and given a
bit of extra space before them. Note that at the moment, no
distinction is made between levels of headers above the slide header,
though that can be changed. (It has to be changed in pandoc, since
PowerPoint has no concept of paragraph or character classes.)

This allows us to clean up the code as well: the code in
`blockToParagraphs` since it will only touch content blocks, and
therefore will not deal with headers at or below the slidelevel.
2018-01-13 09:08:28 -05:00
Jesse Rosenthal
194f08d17a Powerpoint writer: Check for required files
Since we now import from reference/dist file by glob, we need to make
sure that we're getting the files we need to make a non-corrupt
Powerpoint. This performs that check.

(In the process, this change also cleaned up a lot of commented-out
code left from the switch to the new reference-doc method.)
2018-01-13 07:37:02 -05:00
Jesse Rosenthal
a2870a1aeb Powerpoint writer: Improve templating using --reference-doc
Templating should work much more reliably now. There is still some
problem with image placement when we change sizes. A further commit
will address this.
2018-01-12 22:59:03 -05:00
Albert Krewinkel
8d5422f36b
Lua modules: add function pandoc.utils.run_json_filter
Runs a JSON filter on a Pandoc document.
2018-01-13 00:07:03 +01:00
Albert Krewinkel
5d49cbd35e
Move filter functions to separate module 2018-01-13 00:05:11 +01:00
Albert Krewinkel
6528082401
Lua filters: improve error messages
Provide more context about the task which caused an error.
2018-01-12 21:28:27 +01:00
Jesse Rosenthal
f130109b90 Powerpoint writer: Include Notes slide in TOC 2018-01-12 14:27:53 -05:00
Albert Krewinkel
5b852f8d2a
Lua filters: make PANDOC_READER_OPTIONS available
The options which were used to read the document are made available to
Lua filters via the `PANDOC_READER_OPTIONS` global.
2018-01-12 18:54:19 +01:00
Jesse Rosenthal
624abeec5c Powerpoint writer: allow setting toc-title in metadata.
Accompanying change in MANUAL.txt
2018-01-12 11:09:17 -05:00
Jesse Rosenthal
6d74b35751 Move metaValueToInlines to T.P.W.Shared
This will allow the Powerpoint writer to use it as well.
2018-01-12 11:06:03 -05:00
Jesse Rosenthal
1d9c2770e3 Powerpoint writer: Set notes slide header with slide-level
It used to be hardcoded to 2. This will set it to the appropriate
slide-level.
2018-01-12 10:48:28 -05:00
Jesse Rosenthal
021e5ac89d Powerpoint writer: Add table of contents
This is triggered by the `--toc` flag. Note that in a long slide deck
this risks overrunning the text box. The user can address this by
setting `--toc-depth=1`.
2018-01-12 10:43:02 -05:00
Jesse Rosenthal
4ce07c20d7 Powerpoint writer: Set notes slide number correctly
Previously, this hadn't been aware of a metadata slide. We also
clarify the logic for setting the startnumber of different slide
sections correctly.
2018-01-12 10:00:59 -05:00
Jesse Rosenthal
53c48dd2c9 Powerpoint writer: Ignore internal links without targets.
If the user entered an internal link without a corresponding anchor,
it would produce a corrupted file. Now we check the anchor map, and
make sure the target is in the file. If it isn't, we ignore it.
2018-01-12 09:45:01 -05:00
Jesse Rosenthal
0b66b56523 Powerpoint writer: Clean up adding metadata slide
We want to count the slide numbers correctly if it's in there.
2018-01-12 09:24:15 -05:00
Jesse Rosenthal
2afca42f77 Powerpoint writer: Add anchor links
For anchor-type links (`[foo](#bar)`) we produce an anchor link. In
powerpoint these are links to slides, so we keep track of a map
relating anchors to the slides they occur on.
2018-01-12 06:56:09 -05:00
Jesse Rosenthal
da72d0f412 Powerpoint writer: Make the slide number available to the blocks.
For anchors, block-processing functions need to know what slide number
they're in. We make the envCurSlideId available to blocks.
2018-01-12 06:56:09 -05:00
Jesse Rosenthal
206545c675 Powerpoint writer: move curSlideId to environment.
It really isn't a moving state, and that can be misleading.
2018-01-12 06:56:09 -05:00
John MacFarlane
9f888659f7 MANUAL.txt: clarify otherlangs in LaTeX.
Closes #4072.
2018-01-11 21:03:09 -08:00