Commit graph

182 commits

Author SHA1 Message Date
Albert Krewinkel
1fc07ff4da Refactor top-level division selection (#3261)
The "default" option is no longer represented as `Nothing` but via a new
type constructor, making the `Maybe` wrapper superfluous.

The default behavior of using heuristics can now be enabled explicitly
by setting `--top-level-division=default`.

API change (`Text.Pandoc.Options`): The `Division` type was renamed to
`TopLevelDivision`. The `Section`, `Chapter`, and `Part` constructors
were renamed to `TopLevelSection`, `TopLevelChapter`, and
`TopLevelPart`, respectively. An additional `TopLevelDefault`
constructor was added, which is now also the new default value of the
`writerTopLevelDivision` field in `WriterOptions`.
2016-11-27 20:31:04 +01:00
Albert Krewinkel
baa25362a4 Allow to overwrite top-level division type heuristics (#3258)
Pandoc uses heuristics to determine the most resonable top-level
division type when emitting LaTeX or Docbook markup.  It is now possible
to overwrite this implicitly set top-level division via the
`top-level-division` command line parameter.

API change (`Text.Pandoc.Options`): the type of the
`writerTopLevelDivision` field in of the `WriterOptions` data type is
altered from `Division` to `Maybe Division`. The field's default value
is changed from `Section` to `Nothing`.

Closes: #3197
2016-11-26 21:43:46 +01:00
John MacFarlane
77753747d1 Cleaned up filter-finding.
* Removed a hardcoded '/' that may have caused problems with Windows
  paths.
* Cleaned up the logic.
2016-11-21 22:18:05 +01:00
John MacFarlane
ac6dfe0b4e Changed resolution of filter paths.
- We now first treat the argument of `--filter` as a full (absolute
  or relative) path, looking for a program there.  If it's found,
  we run it.
- If not, and if it is a simple program name or a relative path,
  we try resolving it relative to `$DATADIR/filters`.
- If this fails, then we treat it as a program name and look in
  the user's PATH.

Previously if you did `--filter foo` and you had `foo` in your
path and also an executable `foo` in your working directory,
the one in the path would be used. Now the one in the working
directory is used.

In addition, when you do `--filter foo/bar.hs`, pandoc will now
find a filter `$DATADIR/filters/foo/bar.hs` -- assuming there
isn't a `foo/bar.hs` relative to the working directory.

@jkr note the slight revision of what we had before.
This was motivated by the idea that one might clone filter
repositories into the filters subdirectory; it is nice to
be able to run them as `reponame/filtername`.
2016-11-21 15:32:27 +01:00
John MacFarlane
20b2269fb7 In --version, trap error in getAppUserDataDirectory.
This fixes a crash with `pandoc --version` on unusual systems with
no real user (e.g. SQL Server 2016).  Closes #3241.
2016-11-18 11:25:13 +01:00
John MacFarlane
7db4dd46dc Allow file:// URIs as arguments.
Also improved default reader format detection.  Previously
with a URI ending in .md or .markdown, pandoc would assume HTML input.
Now it treats these as markdown.

Closes #3196.
2016-11-05 20:24:29 +01:00
John MacFarlane
e6422b1deb Improved error if they give wrong arg to --top-level-division. 2016-11-03 11:17:10 +01:00
John MacFarlane
626d0b7193 Print highlighting-kate version in --version. 2016-10-26 21:57:29 +02:00
John MacFarlane
d51e475bad Export Text.Pandoc.Error in Text.Pandoc.
[API change]
2016-10-24 22:31:36 +02:00
John MacFarlane
10bd57ecb6 Fixed typo in deprecation warning. 2016-10-24 16:05:26 +02:00
John MacFarlane
738806112b Allow binary formats to be written to stdout unless tty output.
Only works on posix.  On Windows, pandoc works as before and
requires an output file parameter for binary formats.

Closes #2677.
2016-10-23 22:16:00 +02:00
John MacFarlane
273d90bc19 Added --list-* options.
Added `--list-input-formats`, `--list-output-formats`,
`--list-extensions`, `--list-highlight-languages`,
`--list-highlight-styles`.

Removed list of highlighting languages from `--version`
output.

Removed list of input and output formats from default
`--help` output.

Closes #3173.
2016-10-23 21:35:54 +02:00
Albert Krewinkel
595a171407
Add option for top-level division type
The `--chapters` option is replaced with `--top-level-division` which allows
users to specify the type as which top-level headers should be output. Possible
values are `section` (the default), `chapter`, or `part`.

The formats LaTeX, ConTeXt, and Docbook allow `part` as top-level division, TEI
only allows to set the `type` attribute on `div` containers.  The writers are
altered to respect this option in a sensible way.
2016-10-19 13:12:57 +02:00
Oliver Matthews
23fb52ef7d
Add --parts command line option to LaTeX writer.
Add --parts command line argument.
This only effects LaTeX writer, and only for non-beamer output formats.
It changes the output levels so the top level is 'part', the next
'chapter' and then into sections.
2016-09-06 21:43:45 +02:00
Jesse Rosenthal
14209b2ba0 Add reference-location options to executable. 2016-10-11 15:17:07 -04:00
KolenCheung
4d621f43d9 Replace Google Chart API by CodeCogs 2016-10-06 11:04:37 +02:00
KolenCheung
f7d92b5765 Update KaTeX to v0.6.0 2016-10-03 23:53:16 -07:00
Jakob Voß
06fa6986d1 Execute .js filters with node 2016-09-30 07:20:43 +02:00
Jesse Rosenthal
ec6d0638be Check $DATADIR/filters for filters
If the `$DATADIR/filters` is present, pandoc will look in it for filters
specified without a path, before looking in the $PATH. Note that unlike
executables in $PATH, the `filters` dir may contain scripts that are not
executable (pandoc will try to execute them using an associated
interpreter, if possible).

Note: the `filters` dir has priority over the user path. In order of
preference, pandoc will look in:

  1. a specified full or relative path (executable or non-executable)
  2. `$DATADIR/filters` (executable or non-executable)
  3. `$PATH` (executable only)

This closes #3127.
2016-09-27 11:56:39 -04:00
Waldir Pimenta
35e1d6d9f7 synchronize spacing of footnotes in help output
- remove a space between `[` and `*` in the list of input formats, to match the list of output formats
- add space after the `*`s, for improved readability
2016-08-16 15:54:24 +01:00
John MacFarlane
58d60b1c85 Changed email-obfuscation default to no obfuscation.
- `writerEmailObfuscation` in `defaultWriterOptions` is now
  `NoObfuscation`
- the default for the command-line `--email-obfuscation` option is
  now `none`.

Closes #2988.
2016-06-20 10:37:23 -07:00
John MacFarlane
054e6abd0d Revert "New method for checking for presence of tex program."
This reverts commit 285bbf61cf.
2016-05-12 21:01:30 -07:00
John MacFarlane
5d8d8b0de1 Revert "Use shell instead of proc to check for latex program."
This reverts commit ee45be5723.
2016-05-12 21:00:33 -07:00
John MacFarlane
1b8d006ac8 Revert "Require process >= 1.2.1."
This reverts commit 07a4320ba9.
2016-05-12 20:59:08 -07:00
John MacFarlane
07a4320ba9 Require process >= 1.2.1.
We need `createProcess_` to be exported.
2016-05-12 11:08:56 -07:00
John MacFarlane
1ddc71e01e Added some CSS to handle older versions of process.
`createProcess_` is in Internals until process 1.2.1.
2016-05-11 17:43:47 -07:00
John MacFarlane
ee45be5723 Use shell instead of proc to check for latex program.
This should get .bat files on Windows.  Closes #2903, with luck.
2016-05-11 14:01:18 -07:00
John MacFarlane
02993c2cc7 Made detection of latex program more robust.
Catch not-found error.
Improves on 285bbf61cf to fix #2903.
2016-05-10 09:29:11 -07:00
John MacFarlane
285bbf61cf New method for checking for presence of tex program.
Now instead of using `findExecutable`, which has limitations
on Windows, we just do `progname --version` and see if it
returns successfully.  Closes #2903.
2016-05-09 20:52:20 -07:00
KolenCheung
59ddbdee4f Loading the full MathJax config to maximize loading speed 2016-05-09 19:49:09 -07:00
John MacFarlane
e08c26c777 Change default mathjax setup to use TeX-AMS_CHTML configuration.
This is designed for cases where the input is always TeX and maximal
conformity with TeX is desired.

It seems to be smaller and load faster than what we used before.
See #2858.
2016-05-09 13:40:13 -07:00
John MacFarlane
2571328700 Use new CommonHTML output for MathJax (updated default MathJax URL).
Closes #2858.
2016-05-09 13:29:35 -07:00
John MacFarlane
3660e55e48 Fixed copyright dates. 2016-03-22 17:17:21 -07:00
Jesse Rosenthal
a8a2d4f224 Fix stdin handling for file-scope
Regardless of input type, we should use default handling if we are
dealing with stdin. In other words, there should be no file-scope if
there are no files. This was an issue with pandoc json, which could be
piped on stdin, but which was read by default with `--file-scope`.
2016-03-21 17:02:07 -04:00
Jesse Rosenthal
09b4f294bf pandoc.hs: Also use filescope for json files.
JSON files have metadata and list structure, so they can't be simply
catted, but they're useful as intermediate build files in large projects.
2016-03-15 13:08:34 -04:00
Jesse Rosenthal
5c055b4cf3 Introduce file-scope parsing (parse-before-combine)
Traditionally pandoc operates on multiple files by first concetenating
them (around extra line breaks) and then processing the joined file. So
it only parses a multi-file document at the document scope. This has the
benefit that footnotes and links can be in different files, but it also
introduces a couple of difficulties:

  - it is difficult to join files with footnotes without some sort of
    preprocessing, which makes it difficult to write academic documents
    in small pieces.

  - it makes it impossible to process multiple binary input files, which
    can't be catted.

  - it makes it impossible to process files from different input
    formats.

This commit introduces alternative method. Instead of catting the files
first, it parses the files first, and then combines the parsed
output. This makes it impossible to have links across multiple files,
and auto-identified headers won't work correctly if headers in multiple
files have the same name. On the other hand, footnotes across multiple
files will work correctly and will allow more freedom for input formats.

Since ByteStringReaders can currently only read one binary file, and
will ignore subsequent files, we also changes the behavior to
automatically parse before combining if using the ByteStringReader. If
we use one file, it will work as normal. If there is more than one file
it will combine them after parsing (assuming that the format is the
same).

Note that this is intended to be an optional method, defaulting to
off. Turn it on with `--file-scope`.
2016-03-15 12:52:51 -04:00
csforste
25a9ca697a Add TEI Writer. 2016-01-19 14:03:57 -05:00
John MacFarlane
a5efd2af11 Improved default template lookup for custom lua scripts.
Previously, if you tried to do `pandoc -s -t /path/to/lua/script.lua`,
pandoc would look for the template in
`~/.pandoc/templates/default./path/to/lua/script.lua`.
With this change it will look in the more reasonable
`~/.pandoc/templates/default.script.lua`.

This makes it possible to store default templates for custom
writers.

Closes #2625.
2016-01-06 15:47:09 -08:00
John MacFarlane
197f301795 Revert "Make file globbing work on windows."
This reverts commit 363ecfebc3.
2016-01-06 11:11:59 -08:00
John MacFarlane
363ecfebc3 Make file globbing work on windows.
Windows cmd doesn't expand wildcards; the application has to
do this.  So on windows we use 'glob' to expand.
2016-01-06 10:44:56 -08:00
John MacFarlane
0a768f1cc5 Added preliminary support for PDF creation via wkhtmltopdf.
To use this:

    pandoc -t html5 -o result.pdf

(and add `--mathjax` if you have math.)
2015-12-21 17:22:12 -08:00
John MacFarlane
a6d810af15 Factored out convertWithOpts 2015-12-14 11:21:54 -08:00
John MacFarlane
c16efea983 Removed "compatibility mode" when called as hsmarkdown. 2015-12-14 11:21:54 -08:00
John MacFarlane
678e7da709 Removed deprecated --strict option entirely. 2015-12-14 11:21:54 -08:00
John MacFarlane
b747243e8d Removed deprecated options --offline and --html5.
These have been deprecated forever.
2015-12-11 23:57:36 -08:00
John MacFarlane
536b6bf538 Implemented SoftBreak and new --wrap option.
Added threefold wrapping option.

* Command line option: deprecated `--no-wrap`, added
  `--wrap=[auto|none|preserve]`
* Added WrapOption, exported from Text.Pandoc.Options
* Changed type of writerWrapText in WriterOptions from
  Bool to WrapOption.
* Modified Text.Pandoc.Shared functions for SoftBreak.
* Supported SoftBreak in writers.
* Updated tests.
* Updated README.

Closes #1701.
2015-12-11 23:55:08 -08:00
John MacFarlane
f0670cccbb hlint refactorings. 2015-11-22 07:27:35 -08:00
John MacFarlane
244cd5644b Merge branch 'new-image-attributes' of https://github.com/mb21/pandoc into mb21-new-image-attributes
* 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.
2015-11-19 23:14:23 -08:00
John MacFarlane
ed1173ace6 Rationalized behavior of --no-tex-ligatures and --smart.
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.
2015-11-19 20:30:41 -08:00
Andrew Dunning
ec0a22746b Allow .adoc file extension for AsciiDoc.
`.adoc` is the extension recommended at <http://asciidoctor.org/docs/asciidoc-writers-guide/>.
2015-11-16 13:37:13 -05:00