Total Pageviews

Saturday, 20 August 2016

Pandoc- 一个万能的文档转换器

Pandoc User’s Guide


pandoc [options] [input-file]…


Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library. It can read MarkdownCommonMarkPHP Markdown ExtraGitHub-Flavored MarkdownMultiMarkdown, and (subsets of) TextilereStructuredTextHTMLLaTeXMediaWiki markupTWiki markupHaddock markupOPMLEmacs Org modeDocBooktxt2tagsEPUBODT and Word docx; and it can write plain text, MarkdownCommonMarkPHP Markdown ExtraGitHub-Flavored MarkdownMultiMarkdownreStructuredTextXHTMLHTML5LaTeX(including beamer slide shows), ConTeXtRTFOPMLDocBookOpenDocumentODTWord docxGNU TexinfoMediaWiki markupDokuWiki markupZimWiki markupHaddock markupEPUB (v2 or v3), FictionBook2Textilegroff man pages, Emacs Org modeAsciiDocInDesign ICMLTEI Simple, and SlidySlideousDZSlidesreveal.js or S5 HTML slide shows. It can also produce PDFoutput on systems where LaTeX, ConTeXt, or wkhtmltopdf is installed.
Pandoc’s enhanced version of Markdown includes syntax for footnotestables, flexible ordered listsdefinition listsfenced code blockssuperscripts and subscriptsstrikeoutmetadata blocks, automatic tables of contents, embedded LaTeX mathcitations, and Markdown inside HTML block elements. (These enhancements, described below under Pandoc’s Markdown, can be disabled using the markdown_strict input or output format.)
In contrast to most existing tools for converting Markdown to HTML, which use regex substitutions, pandoc has a modular design: it consists of a 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.
Because pandoc’s intermediate representation of a document is less expressive than many of the formats it converts between, one should not expect perfect conversions between every format and every other. Pandoc attempts to preserve the structural elements of a document, but not formatting details such as margin size. And some document elements, such as complex tables, may not fit into pandoc’s simple document model. While conversions from pandoc’s Markdown to all formats aspire to be perfect, conversions from formats more expressive than pandoc’s Markdown can be expected to be lossy.

Using pandoc

If no input-file is specified, input is read from stdin. Otherwise, the input-files are concatenated (with a blank line between each) and used as input. Output goes to stdout by default (though output to stdout is disabled for the odtdocxepub, and epub3 output formats). For output to a file, use the -o option:
pandoc -o output.html input.txt
By default, pandoc produces a document fragment, not a standalone document with a proper header and footer. To produce a standalone document, use the -s or --standalone flag:
pandoc -s -o output.html input.txt
For more information on how standalone documents are produced, see Templates, below.
Instead of a file, an absolute URI may be given. In this case pandoc will fetch the content using HTTP:
pandoc -f html -t markdown
If multiple input files are given, pandoc will concatenate them all (with blank lines between them) before parsing. This feature is disabled for binary input formats such as EPUBodt, and docx.
The format of the input and output can be specified explicitly using command-line options. The input format can be specified using the -r/--read or -f/--from options, the output format using the -w/--write or -t/--to options. Thus, to convert hello.txt from Markdown to LaTeX, you could type:
pandoc -f markdown -t latex hello.txt
To convert hello.html from HTML to Markdown:
pandoc -f html -t markdown hello.html
Supported output formats are listed below under the -t/--to option. Supported input formats are listed below under the -f/--from option. Note that the rsttextilelatex, and html readers are not complete; there are some constructs that they do not parse.
If the input or output format is not specified explicitly, pandoc will attempt to guess it from the extensions of the input and output filenames. Thus, for example,
pandoc -o hello.tex hello.txt
will convert hello.txt from Markdown to LaTeX. If no output file is specified (so that output goes to stdout), or if the output file’s extension is unknown, the output format will default to HTML. If no input file is specified (so that input comes from stdin), or if the input files’ extensions are unknown, the input format will be assumed to be Markdown unless explicitly specified.
Pandoc uses the UTF-8 character encoding for both input and output. If your local character encoding is not UTF-8, you should pipe input and output through iconv:
iconv -t utf-8 input.txt | pandoc | iconv -f utf-8
Note that in some output formats (such as HTML, LaTeX, ConTeXt, RTF, OPML, DocBook, and Texinfo), information about the character encoding is included in the document header, which will only be included if you use the -s/--standalone option.

Creating a PDF

To produce a PDF, specify an output file with a .pdf extension. By default, pandoc will use LaTeX to convert it to PDF:
pandoc test.txt -o test.pdf
Production of a PDF requires that a LaTeX engine be installed (see --latex-engine, below), and assumes that the following LaTeX packages are available: amsfontsamsmathlmifxetexifluatexeurosymlistings (if the --listings option is used), fancyvrblongtablebooktabsgraphicx and grffile (if the document contains images), hyperrefulemgeometry(with the geometry variable set), setspace (with linestretch), and babel (with lang). The use of xelatex or lualatex as the LaTeX engine requires fontspecxelatex uses mathspecpolyglossia (with lang), xecjk, and bidi (with the dir variable set). The upquote and microtype packages are used if available, and csquotes will be used for smart punctuation if added to the template or included in any header file. The natbibbiblatexbibtex, and biber packages can optionally be used for citation rendering. These are included with all recent versions of TeX Live.
Alternatively, pandoc can use ConTeXt or wkhtmltopdf to create a PDF. To do this, specify an output file with a .pdf extension, as before, but add -t context or -t html5 to the command line.
PDF output can be controlled using variables for LaTeX (if LaTeX is used) and variables for ConTeXt(if ConTeXt is used). If wkhtmltopdf is used, then the variables margin-leftmargin-rightmargin-topmargin-bottom, and papersize will affect the output, as will --css.


General options

Specify input format. FORMAT can be native (native Haskell), json (JSON version of native AST), markdown (pandoc’s extended Markdown), markdown_strict (original unextended Markdown), markdown_phpextra (PHP Markdown Extra), markdown_github (GitHub-Flavored Markdown), markdown_mmd (MultiMarkdown), commonmark (CommonMark Markdown), textile (Textile), rst (reStructuredText), html (HTML), docbook (DocBook), t2t (txt2tags), docx (docx), odt (ODT), epub (EPUB), opml (OPML), org (Emacs Org mode), mediawiki (MediaWiki markup), twiki (TWiki markup), haddock (Haddock markup), or latex (LaTeX). If +lhs is appended to markdownrstlatex, or html, the input will be treated as literate Haskell source: see Literate Haskell support, below. Markdown syntax extensions can be individually enabled or disabled by appending +EXTENSION or -EXTENSION to the format name. So, for example, markdown_strict+footnotes+definition_lists is strict Markdown with footnotes and definition lists enabled, and markdown-pipe_tables+hard_line_breaks is pandoc’s Markdown without pipe tables and with hard line breaks. See Pandoc’s Markdown, below, for a list of extensions and their names.
Specify output format. FORMAT can be native (native Haskell), json (JSON version of native AST), plain (plain text), markdown (pandoc’s extended Markdown), markdown_strict(original unextended Markdown), markdown_phpextra (PHP Markdown Extra), markdown_github (GitHub-Flavored Markdown), markdown_mmd (MultiMarkdown), commonmark (CommonMark Markdown), rst (reStructuredText), html (XHTML), html5(HTML5), latex (LaTeX), beamer (LaTeX beamer slide show), context (ConTeXt), man (groff man), mediawiki (MediaWiki markup), dokuwiki (DokuWiki markup), zimwiki (ZimWiki markup), textile (Textile), org (Emacs Org mode), texinfo (GNU Texinfo), opml (OPML), docbook (DocBook 4), docbook5 (DocBook 5), opendocument (OpenDocument), odt(OpenOffice text document), docx (Word docx), haddock (Haddock markup), rtf (rich text format), epub (EPUB v2 book), epub3 (EPUB v3), fb2 (FictionBook2 e-book), asciidoc(AsciiDoc), icml (InDesign ICML), tei (TEI Simple), slidy (Slidy HTML and javascript slide show), slideous (Slideous HTML and javascript slide show), dzslides (DZSlides HTML5 + javascript slide show), revealjs (reveal.js HTML5 + javascript slide show), s5 (S5 HTML and javascript slide show), or the path of a custom lua writer (see Custom writers, below). Note that odtepub, and epub3 output will not be directed to stdout; an output filename must be specified using the -o/--output option. If +lhs is appended to markdownrstlatexbeamerhtml, or html5, the output will be rendered as literate Haskell source: see Literate Haskell support, below. Markdown syntax extensions can be individually enabled or disabled by appending +EXTENSION or -EXTENSION to the format name, as described above under -f.
-o FILE--output=FILE
Write output to FILE instead of stdout. If FILE is -, output will go to stdout. (Exception: if the output format is odtdocxepub, or epub3, output to stdout is disabled.)
Specify the user data directory to search for pandoc data files. If this option is not specified, the default user data directory will be used. This is, in Unix:
in Windows XP:
C:\Documents And Settings\USERNAME\Application Data\pandoc
and in Windows Vista or later:
You can find the default user data directory on your system by looking at the output of pandoc --version. A reference.odtreference.docxepub.csstemplatesslidyslideous, or s5 directory placed in this directory will override pandoc’s normal defaults.
Generate a bash completion script. To enable bash completion with pandoc, add this to your .bashrc:
 eval "$(pandoc --bash-completion)"
Give verbose debugging output. Currently this only has an effect with PDF output.
Print version.
Show usage message.

Reader options

Parse untranslatable HTML codes and LaTeX environments as raw HTML or LaTeX, instead of ignoring them. Affects only HTML and LaTeX input. Raw HTML can be printed in Markdown, reStructuredText, Emacs Org mode, HTML, Slidy, Slideous, DZSlides, reveal.js, and S5 output; raw LaTeX can be printed in Markdown, reStructuredText, Emacs Org mode, LaTeX, and ConTeXt 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.)
Produce typographically correct output, converting straight quotes to curly quotes, --- to em-dashes, -- to en-dashes, and ... to ellipses. Nonbreaking spaces are inserted after certain abbreviations, such as “Mr.” (Note: This option is selected automatically when the output format is latex or context, unless --no-tex-ligatures is used. It has no effect for latex input.)
Selects the pandoc <= behavior for parsing smart dashes: - before a numeral is an en-dash, and -- is an em-dash. This option is selected automatically for textile input.
Specify the base level for headers (defaults to 1).
Specify classes to use for indented code blocks–for example, perl,numberLines or haskell. Multiple classes may be separated by spaces or commas.
Specify a default extension to use when image paths/URLs have no extension. This allows you to use the same source for formats that require different kinds of images. Currently this option only affects the Markdown and LaTeX readers.
Parse each file individually before combining for multifile documents. This will allow footnotes in different files with the same identifiers to work as expected. If this option is set, footnotes and links will not work across files. Reading binary files (docx, odt, epub) implies --file-scope.
Specify an executable to be used as a filter transforming the pandoc AST after the input is parsed and before the output is written. The executable should read JSON from stdin and write JSON to stdout. The JSON must be formatted like pandoc’s own JSON input and output. The name of the output format will be passed to the filter as the first argument. Hence,
pandoc --filter ./ -t latex
is equivalent to
pandoc -t json | ./ latex | pandoc -f json -t latex
The latter form may be useful for debugging filters.
Filters may be written in any language. Text.Pandoc.JSON exports toJSONFilter to facilitate writing filters in Haskell. Those who would prefer to write filters in python can use the module pandocfilters, installable from PyPI. There are also pandoc filter libraries in PHPperl, and javascript/node.js.
Note that the EXECUTABLE will be sought in the user’s PATH, and not in the working directory, if no directory is provided. If you want to run a script in the working directory, preface the filename with ./.
-M KEY[=VAL], --metadata=KEY[:VAL]
Set the metadata field KEY to the value VAL. A value specified on the command line overrides a value specified in the document. Values will be parsed as YAML boolean or string values. If no value is specified, the value will be treated as Boolean true. Like --variable--metadatacauses template variables to be set. But unlike --variable--metadata affects the metadata of the underlying document (which is accessible from filters and may be printed in some output formats).
Normalize the document after reading: merge adjacent Str or Emph elements, for example, and remove repeated Spaces.
Preserve tabs instead of converting them to spaces (the default). Note that this will only affect tabs in literal code spans and code blocks; tabs in regular text will be treated as spaces.
Specify the number of spaces per tab (default is 4).
Specifies what to do with insertions, deletions, and comments produced by the MS Word “Track Changes” feature. accept (the default), inserts all insertions, and ignores all deletions. rejectinserts all deletions and ignores insertions. Both accept and reject ignore comments. allputs in insertions, deletions, and comments, wrapped in spans with insertiondeletioncomment-start, and comment-end classes, respectively. The author and time of change is included. all is useful for scripting: only accepting changes from a certain reviewer, say, or before a certain date. This option only affects the docx reader.
Extract images and other media contained in a docx or epub container to the path DIR, creating it if necessary, and adjust the images references in the document so they point to the extracted files. This option only affects the docx and epub readers.

General writer options

Produce output with an appropriate header and footer (e.g. a standalone HTML, LaTeX, TEI, or RTF file, not a fragment). This option is set automatically for pdfepubepub3fb2docx, and odt output.
Use FILE as a custom template for the generated document. Implies --standalone. See Templates, below, for a description of template syntax. If no extension is specified, an extension corresponding to the writer will be added, so that --template=special looks for special.html for HTML output. If the template is not found, pandoc will search for it in the templates subdirectory of the user data directory (see --data-dir). If this option is not used, a default template appropriate for the output format will be used (see -D/--print-default-template).
-V KEY[=VAL], --variable=KEY[:VAL]
Set the template variable KEY to the value VAL when rendering the document in standalone mode. This is generally only useful when the --template option is used to specify a custom template, since pandoc automatically sets the variables used in the default templates. If no VAL is specified, the key will be given the value true.
-D FORMAT--print-default-template=FORMAT
Print the system default template for an output FORMAT. (See -t for a list of possible FORMATs.) Templates in the user data directory are ignored.
Print a system default data file. Files in the user data directory are ignored.
Specify the dpi (dots per inch) value for conversion from pixels to inch/centimeters and vice versa. The default is 96dpi. Technically, the correct term would be ppi (pixels per inch).
Determine how text is wrapped in the output (the source code, not the rendered version). With auto (the default), pandoc will attempt to wrap lines to the column width specified by --columns (default 80). With none, pandoc will not wrap lines at all. With preserve, pandoc will attempt to preserve the wrapping from the source document (that is, where there are nonsemantic newlines in the source, there will be nonsemantic newlines in the output as well).
Deprecated synonym for --wrap=none.
Specify length of lines in characters. This affects text wrapping in the generated source code (see --wrap). It also affects calculation of column widths for plain text tables (see Tables below).
Include an automatically generated table of contents (or, in the case of latexcontextdocx, and rst, an instruction to create one) in the output document. This option has no effect on mandocbookdocbook5slidyslideouss5, or odt output.
Specify the number of section levels to include in the table of contents. The default is 3 (which means that level 1, 2, and 3 headers will be listed in the contents).
Disables syntax highlighting for code blocks and inlines, even when a language attribute is given.
Specifies the coloring style to be used in highlighted source code. Options are pygments (the default), katemonochromeespressozenburnhaddock, and tango. For more information on syntax highlighting in pandoc, see Syntax highlighting, below.
-H FILE--include-in-header=FILE
Include contents of FILE, verbatim, at the end of the header. This can be used, for example, to include special CSS or javascript in HTML documents. This option can be used repeatedly to include multiple files in the header. They will be included in the order specified. Implies --standalone.
-B FILE--include-before-body=FILE
Include contents of FILE, verbatim, at the beginning of the document body (e.g. 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. This option can be used repeatedly to include multiple files. They will be included in the order specified. Implies --standalone.
-A FILE--include-after-body=FILE
Include contents of FILE, verbatim, at the end of the document body (before the </body> tag in HTML, or the \end{document} command in LaTeX). This option can be used repeatedly to include multiple files. They will be included in the order specified. Implies --standalone.

Options affecting specific writers

Produce a standalone HTML file with no external dependencies, using data: URIs to incorporate the contents of linked scripts, stylesheets, images, and videos. The resulting file should be “self-contained,” in the sense that it needs no external files and no net access to be displayed properly by a browser. This option works only with HTML output formats, including htmlhtml5html+lhshtml5+lhss5slidyslideousdzslides, and revealjs. Scripts, images, and stylesheets at absolute URLs will be downloaded; those at relative URLs will be sought relative to the working directory (if the first source file is local) or relative to the base URL (if the first source file is remote). Limitation: resources that are loaded dynamically through JavaScript cannot be incorporated; as a result, --self-contained does not work with --mathjax, and some advanced features (e.g. zoom or speaker notes) may not work in an offline “self-contained” reveal.js slide show.
Use <q> tags for quotes in HTML.
Use only ascii characters in output. Currently supported only for HTML output (which uses numerical entities instead of UTF-8 when this option is selected).
Use reference-style links, rather than inline links, in writing Markdown or reStructuredText. By default inline links are used.
Use ATX-style headers in Markdown and asciidoc output. The default is to use setext-style headers for levels 1-2, and then ATX headers.
Treat top-level headers as chapters in LaTeX, ConTeXt, and DocBook output. When the LaTeX document class is set to reportbook, or memoir (unless the article option is specified), this option is implied. If beamer is the output format, top-level headers will become \part{..}.
Number section headings in LaTeX, ConTeXt, HTML, or EPUB output. By default, sections are not numbered. Sections with class unnumbered will never be numbered, even if --number-sections is specified.
Offset for section headings in HTML output (ignored in other output formats). The first number is added to the section number for top-level headers, the second for second-level headers, and so on. So, for example, if you want the first top-level header in your document to be numbered “6”, specify --number-offset=5. If your document starts with a level-2 header which you want to be numbered “1.5”, specify --number-offset=1,4. Offsets are 0 by default. Implies --number-sections.
Do not use the TeX ligatures for quotation marks, apostrophes, and dashes (`...'``..''-----) when writing or reading LaTeX or ConTeXt. In reading LaTeX, parse the characters `', and - literally, rather than parsing ligatures for quotation marks and dashes. In writing LaTeX or ConTeXt, print unicode quotation mark and dash characters literally, rather than converting them to the standard ASCII TeX ligatures. Note: normally --smart is selected automatically for LaTeX and ConTeXt output, but it must be specified explicitly if --no-tex-ligatures is selected. If you use literal curly quotes, dashes, and ellipses in your source, then you may want to use --no-tex-ligatures without --smart.
Use the listings package for LaTeX code blocks
Make list items in slide shows display incrementally (one by one). The default is for lists to be displayed all at once.
Specifies that headers with the specified level create slides (for beamers5slidyslideousdzslides). Headers above this level in the hierarchy are used to divide the slide show into sections; headers below this level create subheads within a slide. The default is to set the slide level based on the contents of the document; see Structuring the slide show.
Wrap sections in <div> tags (or <section> tags in HTML5), and attach identifiers to the enclosing <div> (or <section>) rather than the header itself. See Header identifiers, below.
Specify a method for obfuscating mailto: links in HTML documents. none leaves mailto:links as they are. javascript obfuscates them using javascript. references obfuscates them by printing their letters as decimal or hexadecimal character references. The default is none.
Specify a prefix to be added to all automatically generated identifiers in HTML and DocBook output, and to footnote numbers in Markdown output. This is useful for preventing duplicate identifiers when generating fragments to be included in other pages.
-T STRING--title-prefix=STRING
Specify STRING 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). Implies --standalone.
-c URL--css=URL
Link to a CSS style sheet. This option can be used repeatedly to include multiple files. They will be included in the order specified.
Use the specified file as a style reference in producing an ODT. For best results, the reference ODT should be a modified version of an ODT produced using pandoc. The contents of the reference ODT are ignored, but its stylesheets are used in the new ODT. If no reference ODT is specified on the command line, pandoc will look for a file reference.odt in the user data directory (see --data-dir). If this is not found either, sensible defaults will be used.
Use the specified file as a style reference in producing a docx file. For best results, the reference docx should be a modified version of a docx file produced using pandoc. The contents of the reference docx are ignored, but its stylesheets and document properties (including margins, page size, header, and footer) are used in the new docx. If no reference docx is specified on the command line, pandoc will look for a file reference.docx in the user data directory (see --data-dir). If this is not found either, sensible defaults will be used. The following styles are used by pandoc: [paragraph] Normal, Body Text, First Paragraph, Compact, Title, Subtitle, Author, Date, Abstract, Bibliography, Heading 1, Heading 2, Heading 3, Heading 4, Heading 5, Heading 6, Block Text, Footnote Text, Definition Term, Definition, Caption, Table Caption, Image Caption, Figure, Figure With Caption, TOC Heading; [character] Default Paragraph Font, Body Text Char, Verbatim Char, Footnote Reference, Hyperlink; [table] Normal Table.
Use the specified CSS file to style the EPUB. If no stylesheet is specified, pandoc will look for a file epub.css in the user data directory (see --data-dir). If it is not found there, sensible defaults will be used.
Use the specified image as the EPUB cover. It is recommended that the image be less than 1000px in width and height. Note that in a Markdown source document you can also specify cover-image in a YAML metadata block (see EPUB Metadata, below).
Look in the specified XML file for metadata for the EPUB. The file should contain a series of Dublin Core elements. For example:
 <dc:rights>Creative Commons</dc:rights>
By default, pandoc will include the following metadata elements: <dc:title> (from the document title), <dc:creator> (from the document authors), <dc:date> (from the document date, which should be in ISO 8601 format), <dc:language> (from the lang variable, or, if is not set, the locale), and <dc:identifier id="BookId"> (a randomly generated UUID). Any of these may be overridden by elements in the metadata file.
Note: if the source document is Markdown, a YAML metadata block in the document can be used instead. See below under EPUB Metadata.

Universal markup converter