2006-10-29 20:58:20 +01:00
|
|
|
% Pandoc
|
2006-10-17 16:22:29 +02:00
|
|
|
% John MacFarlane
|
2006-10-29 20:32:49 +01:00
|
|
|
% October 30, 2006
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc is a [Haskell] library for converting from one markup format
|
2006-10-27 05:28:22 +02:00
|
|
|
to another, and a command-line tool that uses this library. It can read
|
|
|
|
[markdown] and (subsets of) [reStructuredText], [HTML], and [LaTeX],
|
2006-10-27 05:16:13 +02:00
|
|
|
and it can write [markdown], [reStructuredText], [HTML], [LaTeX], [RTF],
|
2006-10-29 20:58:20 +01:00
|
|
|
and [S5] HTML slide shows. Pandoc's version of markdown contains some
|
2006-10-27 05:16:13 +02:00
|
|
|
enhancements, like footnotes and embedded LaTeX.
|
|
|
|
|
|
|
|
In contrast to existing tools for converting markdown to HTML, which
|
2006-10-29 20:58:20 +01:00
|
|
|
use regex substitutions, Pandoc has a modular design: it consists of a
|
2006-10-27 05:16:13 +02:00
|
|
|
set of readers, which parse text in a given format and produce a native
|
|
|
|
representation of the document, and a set of writers, which convert
|
|
|
|
this native representation into a target format. Thus, adding an input
|
|
|
|
or output format requires only adding a reader or writer.
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
[markdown]: http://daringfireball.net/projects/markdown/
|
|
|
|
[reStructuredText]: http://docutils.sourceforge.net/docs/ref/rst/introduction.html
|
|
|
|
[S5]: http://meyerweb.com/eric/tools/s5/
|
|
|
|
[HTML]: http://www.w3.org/TR/html40/
|
|
|
|
[LaTeX]: http://www.latex-project.org/
|
|
|
|
[RTF]: http://en.wikipedia.org/wiki/Rich_Text_Format
|
|
|
|
[Haskell]: http://www.haskell.org/
|
|
|
|
|
|
|
|
(c) 2006 John MacFarlane (jgm At berkeley.edu). Released under the
|
|
|
|
[GPL], version 2 or greater. This software carries no warranty of
|
|
|
|
any kind. (See LICENSE for full copyright and warranty notices.)
|
2006-10-28 08:35:35 +02:00
|
|
|
Recai Oktaş (roktas At debian.org) deserves credit for the build
|
|
|
|
system, the debian package, and the robust wrapper scripts.
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
[GPL]: http://www.gnu.org/copyleft/gpl.html
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
# Using Pandoc
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
If you run `pandoc` without arguments, it will accept input from
|
|
|
|
STDIN. If you run it with file names as arguments, it will take input
|
|
|
|
from those files. It accepts several command-line options. For a
|
|
|
|
list, type
|
|
|
|
|
|
|
|
pandoc -h
|
|
|
|
|
|
|
|
The most important options specify the format of the source file and
|
|
|
|
the output. The default reader is markdown; the default writer is
|
|
|
|
HTML. So if you don't specify a reader or writer, `pandoc` will
|
2006-10-27 05:16:13 +02:00
|
|
|
convert markdown to HTML. For example,
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
pandoc hello.txt
|
|
|
|
|
|
|
|
will convert `hello.txt` from markdown to HTML. For other conversions,
|
|
|
|
you must specify a reader and/or a writer using the `-r` and `-w`
|
|
|
|
flags. To convert markdown to LaTeX, you would write:
|
|
|
|
|
|
|
|
pandoc -w latex hello.txt
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
To convert html to markdown:
|
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
pandoc -r html -w markdown hello.txt
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
Supported writers include `markdown`, `latex`, `html`, `rtf` (rich text
|
|
|
|
format), `rst` (reStructuredText), and `s5` (which produces an HTML
|
|
|
|
file that acts like powerpoint). Supported readers include `markdown`,
|
|
|
|
`html`, `latex`, and `rst`. Note that the `rst` reader only parses
|
|
|
|
a subset of reStructuredText syntax. For example, it doesn't handle
|
|
|
|
tables, definition lists, option lists, or footnotes. It handles only the
|
|
|
|
constructs expressible in unextended markdown. But for simple documents
|
|
|
|
it should be adequate. The `latex` and `html` readers are also limited
|
|
|
|
in what they can do.
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
`pandoc` writes its output to STDOUT. If you want to write to a file,
|
|
|
|
use redirection:
|
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
pandoc hello.txt > hello.html
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
Note that you can specify multiple input files on the command line.
|
|
|
|
`pandoc` will concatenate them all (with blank lines between them)
|
|
|
|
before parsing:
|
|
|
|
|
|
|
|
pandoc -s chapter1.txt chapter2.txt chapter3.txt references.txt > book.html
|
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
(The `-s` option here tells `pandoc` to produce a standalone HTML file,
|
|
|
|
with a proper header, rather than a fragment. For more details on this
|
|
|
|
and many other command-line options, see below.)
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
# Character encodings
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
Unfortunately, due to limitations in GHC, `pandoc` does not automatically
|
|
|
|
detect the system's local character encoding. Hence, all input and
|
2006-11-01 05:32:00 +01:00
|
|
|
output is assumed to be in the UTF-8 encoding. If your local character
|
|
|
|
encoding is not UTF-8 and you use accented or foreign characters,
|
|
|
|
you should pipe the input and output through [`iconv`]. For example,
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-11-01 05:32:00 +01:00
|
|
|
iconv -t utf-8 source.txt | pandoc | iconv -f utf-8 > output.html
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
will convert `source.txt` from the local encoding to UTF-8, then
|
2006-11-01 05:32:00 +01:00
|
|
|
convert it to HTML, then convert back to the local encoding,
|
|
|
|
putting the output in `output.html`.
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
[`iconv`]: http://www.gnu.org/software/libiconv/
|
|
|
|
|
2006-11-01 05:32:00 +01:00
|
|
|
The shell scripts (described below) automatically convert the input
|
|
|
|
from the local encoding to UTF-8 before running them through `pandoc`,
|
|
|
|
then convert the output back to the local encoding.
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-11-13 16:47:01 +01:00
|
|
|
## LaTeX and UTF-8
|
|
|
|
|
|
|
|
LaTeX sources produced by Pandoc use `ucs.sty`, which is included in many
|
|
|
|
LaTeX distributions. This allows LaTeX to process UTF-8 characters.
|
|
|
|
If your installation of LaTeX does not include `ucs.sty`, you will get an
|
|
|
|
error when you try to compile a LaTeX file produced by Pandoc, or when
|
|
|
|
you use the `markdown2pdf` script (described below). If this happens,
|
|
|
|
install the [unicode] package from [CTAN]. (Get the `unicode.zip`
|
|
|
|
file from CTAN, unpack it, and copy the whole `unicode` directory into
|
|
|
|
`~/texmf/tex/latex/`. You may also need to run `mktexlsr` or `texhash`
|
|
|
|
before the files can be found by TeX.)
|
|
|
|
|
|
|
|
[CTAN]: http://www.ctan.org
|
|
|
|
[unicode]: http://www.ctan.org/tex-archive/macros/latex/contrib/unicode/
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
# The shell scripts
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
For convenience, five shell scripts have been included that make it
|
|
|
|
easy to run `pandoc` without remembering all the command-line options.
|
2006-11-01 05:32:00 +01:00
|
|
|
All of the scripts use `iconv` to convert to and from the local
|
|
|
|
character encoding. All of the scripts presuppose that `pandoc`
|
|
|
|
is in the path, and some have additional requirements. (For example,
|
|
|
|
`html2markdown` uses `tidy`, and `markdown2pdf` uses `pdflatex`.)
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-11-01 05:32:00 +01:00
|
|
|
1. `markdown2html` converts markdown to HTML. (This can be used
|
|
|
|
as a replacement for `Markdown.pl`.)
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
2. `html2markdown` can take either a filename or a URL as argument. If
|
2006-10-27 05:16:13 +02:00
|
|
|
it is given a URL, it uses `curl`, `wget`, or an available text-based
|
|
|
|
browser to fetch the contents of the specified URL, then filters this
|
2006-11-01 05:32:00 +01:00
|
|
|
through `tidy` to straighten up the HTML, and finally passes
|
|
|
|
this HTML to `pandoc` to produce markdown text:
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
html2markdown http://www.fsf.org
|
|
|
|
|
|
|
|
html2markdown www.fsf.org
|
|
|
|
|
|
|
|
html2markdown subdir/mylocalfile.html
|
|
|
|
|
2006-11-01 05:32:00 +01:00
|
|
|
3. `latex2markdown` converts a LaTeX file to markdown:
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
latex2markdown mytexfile.tex
|
|
|
|
|
|
|
|
4. `markdown2latex` converts markdown to LaTeX:
|
|
|
|
|
|
|
|
markdown2latex mytextfile.txt
|
|
|
|
|
2006-11-01 05:32:00 +01:00
|
|
|
5. `markdown2pdf` converts markdown to PDF using `pdflatex`:
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
markdown2pdf mytextfile.txt
|
|
|
|
|
2006-11-14 02:43:55 +01:00
|
|
|
creates a file `mytextfile.pdf`. To specify a different
|
|
|
|
name for the output file, use the `-o` option:
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-11-14 02:43:55 +01:00
|
|
|
markdown2pdf -o final-draft.pdf mytextfile.txt
|
|
|
|
|
|
|
|
If you want to use `pandoc`'s command-line options in these scripts,
|
2006-11-12 02:50:56 +01:00
|
|
|
put the options in the environment variable `PANDOC_OPTS`. For
|
|
|
|
example, to convert `tusks.txt` to `tusks.html` using smart quotes,
|
|
|
|
ellipses, and dashes, with "Elephants" as the page title prefix:
|
|
|
|
|
|
|
|
PANDOC_OPTS="-S -T Elephants" markdown2html tusks.txt > tusks.html
|
|
|
|
|
|
|
|
To make these options persistent, use `export`:
|
|
|
|
|
|
|
|
export PANDOC_OPTS="-S -T Elephants"
|
|
|
|
markdown2html tusks.txt > tusks.html
|
|
|
|
markdown2html trunk.txt > trunk.html
|
|
|
|
|
2006-11-13 16:47:01 +01:00
|
|
|
You may also specify options on the command line, separating them
|
2006-11-14 02:43:55 +01:00
|
|
|
from the arguments with '` -- `':
|
2006-11-13 16:47:01 +01:00
|
|
|
|
|
|
|
markdown2html tusks.txt -- -S -T Elephants
|
|
|
|
|
|
|
|
Options specified in this way will override any options set in
|
2006-11-14 02:43:55 +01:00
|
|
|
`PANDOC_OPTS`.
|
2006-11-13 16:47:01 +01:00
|
|
|
|
2006-10-17 16:22:29 +02:00
|
|
|
# Command-line options
|
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
Various command-line options can be used to customize the output.
|
2006-10-17 16:22:29 +02:00
|
|
|
For a complete list, type
|
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
pandoc --help
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
`-p` or `--preserve-tabs` causes tabs in the source text to be
|
|
|
|
preserved, rather than converted to spaces (the default).
|
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
`--tabstop` allows the user to set the tab stop (which defaults to 4).
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
`-R` or `--parse-raw` causes the HTML and LaTeX readers to parse HTML
|
|
|
|
codes and LaTeX environments that it can't translate as raw HTML or
|
|
|
|
LaTeX. Raw HTML can be printed in markdown, reStructuredText, HTML,
|
|
|
|
and S5 output; raw LaTeX can be printed in markdown, reStructuredText,
|
|
|
|
and LaTeX output. The default is for the readers to omit
|
|
|
|
untranslatable HTML codes and LaTeX environments. (The LaTeX reader
|
|
|
|
does pass through untranslatable LaTeX commands, even if `-R` is not
|
|
|
|
specified.)
|
|
|
|
|
|
|
|
`-s` or `--standalone` causes `pandoc` to produce a standalone file,
|
|
|
|
complete with appropriate document headers. By default, `pandoc`
|
|
|
|
produces a fragment.
|
|
|
|
|
|
|
|
`--custom-header` can be used to specify a custom document header. To
|
|
|
|
see the headers used by default, use the `-D` option: for example,
|
|
|
|
`pandoc -D html` prints the default HTML header.
|
|
|
|
|
|
|
|
`-c` or `--css` allows the user to specify a custom stylesheet that
|
|
|
|
will be linked to in HTML and S5 output.
|
|
|
|
|
|
|
|
`-H` or `--include-in-header` specifies a file to be included
|
|
|
|
(verbatim) at the end of the document header. This can be used, for
|
|
|
|
example, to include special CSS or javascript in HTML documents.
|
|
|
|
|
|
|
|
`-B` or `--include-before-body` specifies a file to be included
|
|
|
|
(verbatim) at the beginning of the document body (after the `<body>`
|
|
|
|
tag in HTML, or the `\begin{document}` command in LaTeX). This can be
|
|
|
|
used to include navigation bars or banners in HTML documents.
|
|
|
|
|
|
|
|
`-A` or `--include-after-body` specifies a file to be included
|
|
|
|
(verbatim) at the end of the docment body (before the `</body>` tag in
|
|
|
|
HTML, or the `\end{document}` command in LaTeX).
|
|
|
|
|
|
|
|
`-T` or `--title-prefix` specifies a string to be included as a prefix
|
|
|
|
at the beginning of the title that appears in the HTML header (but not
|
|
|
|
in the title as it appears at the beginning of the HTML body). (See
|
|
|
|
below on Titles.)
|
|
|
|
|
|
|
|
`-S` or `--smartypants` causes `pandoc` to produce typographically
|
|
|
|
correct HTML output, along the lines of John Gruber's [Smartypants].
|
|
|
|
Straight quotes are converted to curly quotes, `---` to dashes, and
|
|
|
|
`...` to ellipses.
|
|
|
|
|
|
|
|
[Smartypants]: http://daringfireball.net/projects/smartypants/
|
|
|
|
|
|
|
|
`-m` or `--asciimathml` will cause LaTeX formulas (between $ signs) in
|
|
|
|
HTML or S5 to display as formulas rather than as code. The trick will
|
|
|
|
not work in all browsers, but it works in Firefox. Peter Jipsen's
|
|
|
|
[ASCIIMathML] script is used to do the magic.
|
|
|
|
|
|
|
|
[ASCIIMathML]: http://www1.chapman.edu/~jipsen/mathml/asciimath.html
|
|
|
|
|
|
|
|
`-i` or `--incremental` causes all lists in S5 output to be displayed
|
|
|
|
incrementally by default (one item at a time). The normal default
|
2006-10-27 05:16:13 +02:00
|
|
|
is for lists to be displayed all at once.
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
`-N` or `--number-sections` causes sections to be numbered in LaTeX
|
|
|
|
output. By default, sections are not numbered.
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
# Pandoc's markdown vs. standard markdown
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
In parsing markdown, Pandoc departs from and extends [standard markdown]
|
|
|
|
in a few respects. (To run Pandoc on the official
|
2006-10-27 05:16:13 +02:00
|
|
|
markdown test suite, type `make test-markdown`.)
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
[standard markdown]: http://daringfireball.net/projects/markdown/syntax
|
|
|
|
|
|
|
|
## Lists
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc behaves differently from standard markdown on some "edge
|
2006-10-17 16:22:29 +02:00
|
|
|
cases" involving lists. Consider this source:
|
|
|
|
|
|
|
|
1. First
|
|
|
|
2. Second:
|
|
|
|
- Fee
|
|
|
|
- Fie
|
|
|
|
- Foe
|
|
|
|
|
|
|
|
3. Third
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc transforms this into a "compact list" (with no `<p>` tags
|
2006-10-17 16:22:29 +02:00
|
|
|
around "First", "Second", or "Third"), while markdown puts `<p>`
|
|
|
|
tags around "Second" and "Third" (but not "First"), because of
|
2006-10-29 20:58:20 +01:00
|
|
|
the blank space around "Third". Pandoc follows a simple rule:
|
2006-10-17 16:22:29 +02:00
|
|
|
if the text is followed by a blank line, it is treated as a
|
|
|
|
paragraph. Since "Second" is followed by a list, and not a blank
|
|
|
|
line, it isn't treated as a paragraph. The fact that the list
|
|
|
|
is followed by a blank line is irrelevant.
|
|
|
|
|
|
|
|
## Literal quotes in titles
|
|
|
|
|
|
|
|
Standard markdown allows unescaped literal quotes in titles, as
|
|
|
|
in
|
|
|
|
|
|
|
|
[foo]: "bar "embedded" baz"
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc requires all quotes within titles to be escaped:
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
[foo]: "bar \"embedded\" baz"
|
|
|
|
|
|
|
|
## Reference links
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc allows implicit reference links in either of two styles:
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
1. Here's my [link]
|
|
|
|
2. Here's my [link][]
|
|
|
|
|
|
|
|
[link]: linky.com
|
|
|
|
|
|
|
|
If there's no corresponding reference, the implicit reference link
|
|
|
|
will appear as regular bracketed text. Note: even `[link][]` will
|
|
|
|
appear as `[link]` if there's no reference for `link`. If you want
|
|
|
|
`[link][]`, use a backslash escape: `\[link]\[]`.
|
|
|
|
|
|
|
|
## Footnotes
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc's markdown allows footnotes, using the following syntax:
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
here is a footnote reference,^(1) and another.^(longnote)
|
|
|
|
|
|
|
|
^(1) Here is the footnote. It can go anywhere in the document,
|
|
|
|
except in embedded contexts like block quotes or lists.
|
|
|
|
|
|
|
|
^(longnote) Here's the other note. This one contains multiple
|
2006-10-27 05:16:13 +02:00
|
|
|
blocks.
|
2006-10-17 16:22:29 +02:00
|
|
|
^
|
|
|
|
^ Caret characters are used to indicate that the blocks all belong
|
|
|
|
to a single footnote (as with block quotes).
|
|
|
|
^
|
|
|
|
^ If you want, you can use a caret at the beginning of every line,
|
|
|
|
^ as with blockquotes, but all that you need is a caret at the
|
|
|
|
^ beginning of the first line of the block and any preceding
|
|
|
|
^ blank lines.
|
|
|
|
|
|
|
|
Footnote references may not contain spaces, tabs, or newlines.
|
|
|
|
|
|
|
|
## Embedded HTML
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc treats embedded HTML in markdown a bit differently than
|
2006-10-17 16:22:29 +02:00
|
|
|
Markdown 1.0. While Markdown 1.0 leaves HTML blocks exactly as they
|
2006-10-29 20:58:20 +01:00
|
|
|
are, Pandoc treats text between HTML tags as markdown. Thus, for
|
|
|
|
example, Pandoc will turn
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>*one*</td>
|
|
|
|
<td>[a link](http://google.com)</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|
|
|
|
into
|
|
|
|
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td><em>one</em></td>
|
|
|
|
<td><a href="http://google.com">a link</a></td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|
2006-10-27 05:16:13 +02:00
|
|
|
whereas Markdown 1.0 will preserve it as is.
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
There is one exception to this rule: text between `<script>` and
|
|
|
|
`</script>` tags is not interpreted as markdown.
|
|
|
|
|
|
|
|
This departure from standard markdown should make it easier to mix
|
|
|
|
markdown with HTML block elements. For example, one can surround
|
|
|
|
a block of markdown text with `<div>` tags without preventing it
|
|
|
|
from being interpreted as markdown.
|
|
|
|
|
|
|
|
## Title blocks
|
|
|
|
|
|
|
|
If the file begins with a title block
|
|
|
|
|
|
|
|
% title
|
|
|
|
% author(s) (separated by commas)
|
|
|
|
% date
|
|
|
|
|
|
|
|
it will be parsed as bibliographic information, not regular text. (It
|
|
|
|
will be used, for example, in the title of standalone LaTeX or HTML
|
|
|
|
output.) The block may contain just a title, a title and an author,
|
|
|
|
or all three lines. Each must begin with a % and fit on one line.
|
|
|
|
The title may contain standard inline formatting. If you want to
|
|
|
|
include an author but no title, or a title and a date but no author,
|
|
|
|
you need a blank line:
|
|
|
|
|
|
|
|
% My title
|
|
|
|
%
|
|
|
|
% June 15, 2006
|
|
|
|
|
|
|
|
Titles will be written only when the `--standalone` (`-s`) option is
|
|
|
|
chosen. In HTML output, titles will appear twice: once in the
|
|
|
|
document head -- this is the title that will appear at the top of the
|
|
|
|
window in a browser -- and once at the beginning of the document body.
|
|
|
|
The title in the document head can have an optional prefix attached
|
|
|
|
(`--title-prefix` or `-T` option). The title in the body appears as
|
|
|
|
an H1 element with class "title", so it can be suppressed or
|
|
|
|
reformatted with CSS.
|
|
|
|
|
|
|
|
If a title prefix is specified with `-T` and no title block appears
|
|
|
|
in the document, the title prefix will be used by itself as the
|
|
|
|
HTML title.
|
|
|
|
|
|
|
|
## Box-style blockquotes
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Pandoc supports emacs-style boxquote block quotes, in addition to
|
2006-10-17 16:22:29 +02:00
|
|
|
standard markdown (email-style) boxquotes:
|
|
|
|
|
|
|
|
,----
|
|
|
|
| They look like this.
|
|
|
|
`----
|
|
|
|
|
|
|
|
## Inline LaTeX
|
|
|
|
|
|
|
|
Anything between two $ characters will be parsed as LaTeX math. The
|
|
|
|
opening $ must have a character immediately to its right, while the
|
|
|
|
closing $ must have a character immediately to its left. Thus,
|
|
|
|
`$20,000 and $30,000` won't parse as math. The $ character can be
|
|
|
|
escaped with a backslash if needed.
|
|
|
|
|
|
|
|
If you pass the `-m` (`--asciimathml`) option to `pandoc`, it will
|
|
|
|
include the [ASCIIMathML] script in the resulting HTML. This will
|
|
|
|
cause LaTeX math to be displayed as formulas in better browsers.
|
|
|
|
|
|
|
|
[ASCIIMathML]: http://www1.chapman.edu/~jipsen/asciimath.html
|
|
|
|
|
|
|
|
Inline LaTeX commands will also be preserved and passed unchanged
|
|
|
|
to the LaTeX writer. Thus, for example, you can use LaTeX to
|
|
|
|
include BibTeX citations:
|
|
|
|
|
|
|
|
This result was proved in \cite{jones.1967}.
|
|
|
|
|
|
|
|
You can also use LaTeX environments. For example,
|
|
|
|
|
|
|
|
\begin{tabular}{|l|l|}\hline
|
|
|
|
Age & Frequency \\ \hline
|
|
|
|
18--25 & 15 \\
|
|
|
|
26--35 & 33 \\
|
|
|
|
36--45 & 22 \\ \hline
|
|
|
|
\end{tabular}
|
|
|
|
|
|
|
|
Note, however, that material between the begin and end tags will
|
|
|
|
be interpreted as raw LaTeX, not as markdown.
|
|
|
|
|
|
|
|
## Custom headers
|
|
|
|
|
|
|
|
When run with the "standalone" option (`-s`), `pandoc` creates a
|
|
|
|
standalone file, complete with an appropriate header. To see the
|
|
|
|
default headers used for html and latex, use the following commands:
|
|
|
|
|
|
|
|
pandoc -D html
|
|
|
|
|
|
|
|
pandoc -D latex
|
|
|
|
|
|
|
|
If you want to use a different header, just create a file containing
|
|
|
|
it and specify it on the command line as follows:
|
|
|
|
|
|
|
|
pandoc --header=MyHeaderFile
|
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
# Producing S5 with Pandoc
|
2006-10-17 16:22:29 +02:00
|
|
|
|
2006-10-29 20:58:20 +01:00
|
|
|
Producing an [S5] slide show with Pandoc is easy. A title page is
|
2006-10-17 16:22:29 +02:00
|
|
|
constructed automatically from the document's title block (see above).
|
|
|
|
Each section (with a level-one header) produces a single slide. (Note
|
|
|
|
that if the section is too big, the slide will not fit on the page; S5
|
2006-10-27 05:16:13 +02:00
|
|
|
is not smart enough to produce multiple pages.)
|
2006-10-17 16:22:29 +02:00
|
|
|
|
|
|
|
Here's the markdown source for a simple slide show, `eating.txt`:
|
|
|
|
|
|
|
|
% Eating Habits
|
|
|
|
% John Doe
|
|
|
|
% March 22, 2005
|
|
|
|
|
|
|
|
# In the morning
|
|
|
|
|
|
|
|
- Eat eggs
|
|
|
|
- Drink coffee
|
|
|
|
|
|
|
|
# In the evening
|
|
|
|
|
|
|
|
- Eat spaghetti
|
|
|
|
- Drink wine
|
|
|
|
|
|
|
|
To produce the slide show, simply type
|
|
|
|
|
|
|
|
pandoc -w s5 -s eating.txt > eating.html
|
|
|
|
|
|
|
|
and open up `eating.html` in a browser. The HTML file embeds
|
|
|
|
all the required javascript and CSS, so no other files are necessary.
|
|
|
|
|
|
|
|
Note that by default, the S5 writer produces lists that display
|
|
|
|
"all at once." If you want your lists to display incrementally
|
|
|
|
(one item at a time), use the `-i` option. If you want a
|
|
|
|
particular list to depart from the default (that is, to display
|
|
|
|
incrementally without the `-i` option and all at once with the
|
|
|
|
`-i` option), put it in a block quote:
|
|
|
|
|
|
|
|
> - Eat spaghetti
|
|
|
|
> - Drink wine
|
|
|
|
|
|
|
|
In this way incremental and nonincremental lists can be mixed in
|
|
|
|
a single document.
|
|
|
|
|