-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpandoc-manual.dj
7520 lines (5854 loc) · 243 KB
/
pandoc-manual.dj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{#synopsis}
# Synopsis
`pandoc` \[_options_\] \[_input-file_\]…
{#description}
# Description
Pandoc is a [Haskell](https://www.haskell.org) library for converting
from one markup format to another, and a command-line tool that uses
this library.
Pandoc can convert between numerous markup and word processing formats,
including, but not limited to, various flavors of
[Markdown](https://daringfireball.net/projects/markdown/),
[HTML](https://www.w3.org/html/),
[LaTeX](https://www.latex-project.org/) and [Word
docx](https://en.wikipedia.org/wiki/Office_Open_XML). For the full lists
of input and output formats, see the `--from` and `--to` [options
below](#general-options). Pandoc can also produce
[PDF](https://www.adobe.com/pdf/) output: see [creating a
PDF](#creating-a-pdf), below.
Pandoc’s enhanced version of Markdown includes syntax for
[tables](#tables), [definition lists](#definition-lists), [metadata
blocks](#metadata-blocks), [footnotes](#footnotes),
[citations](#citations), [math](#math), and much more. See below under
[Pandoc’s Markdown](#pandocs-markdown).
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 (an _abstract syntax tree_ or AST), 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. Users
can also run custom [pandoc filters](https://pandoc.org/filters.html) to
modify the intermediate AST.
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}
## Using pandoc
If no _input-files_ are specified, input is read from _stdin_. Output
goes to _stdout_ by default. For output to a file, use the `-o` option:
```
pandoc -o output.html input.txt
```
By default, pandoc produces a document fragment. To produce a standalone
document (e.g. a valid HTML file including `<head>` and `<body>`), use
the `-s` or `--standalone` flag:
```
pandoc -s -o output.html input.txt
```
For more information on how standalone documents are produced, see
[Templates](#templates) below.
If multiple input files are given, pandoc will concatenate them all
(with blank lines between them) before parsing. (Use `--file-scope` to
parse files individually.)
{#specifying-formats}
## Specifying formats
The format of the input and output can be specified explicitly using
command-line options. The input format can be specified using the
`-f/--from` option, the output format using the `-t/--to` option. 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 input and output formats are listed below under
[Options](#options) (see `-f` for input formats and `-t` for output
formats). You can also use `pandoc --list-input-formats` and
`pandoc --list-output-formats` to print lists of supported formats.
If the input or output format is not specified explicitly, pandoc will
attempt to guess it from the extensions of the 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.
{#character-encoding}
## Character encoding
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`](https://www.gnu.org/software/libiconv/):
```
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}
## Creating a PDF
To produce a PDF, specify an output file with a `.pdf` extension:
```
pandoc test.txt -o test.pdf
```
By default, pandoc will use LaTeX to create the PDF, which requires that
a LaTeX engine be installed (see `--pdf-engine` below). Alternatively,
pandoc can use ConTeXt, roff ms, or HTML as an intermediate format. To
do this, specify an output file with a `.pdf` extension, as before, but
add the `--pdf-engine` option or `-t context`, `-t html`, or `-t ms` to
the command line. The tool used to generate the PDF from the
intermediate format may be specified using `--pdf-engine`.
You can control the PDF style using variables, depending on the
intermediate format used: see [variables for
LaTeX](#variables-for-latex), [variables for
ConTeXt](#variables-for-context), [variables for
`wkhtmltopdf`](#variables-for-wkhtmltopdf), [variables for
ms](#variables-for-ms). When HTML is used as an intermediate format, the
output can be styled using `--css`.
To debug the PDF creation, it can be useful to look at the intermediate
representation: instead of `-o test.pdf`, use for example
`-s -o test.tex` to output the generated LaTeX. You can then test it
with `pdflatex test.tex`.
When using LaTeX, the following packages need to be available (they are
included with all recent versions of [TeX
Live](https://www.tug.org/texlive/)):
[`amsfonts`](https://ctan.org/pkg/amsfonts),
[`amsmath`](https://ctan.org/pkg/amsmath),
[`lm`](https://ctan.org/pkg/lm),
[`unicode-math`](https://ctan.org/pkg/unicode-math),
[`iftex`](https://ctan.org/pkg/iftex),
[`listings`](https://ctan.org/pkg/listings) (if the `--listings` option
is used), [`fancyvrb`](https://ctan.org/pkg/fancyvrb),
[`longtable`](https://ctan.org/pkg/longtable),
[`booktabs`](https://ctan.org/pkg/booktabs),
[`graphicx`](https://ctan.org/pkg/graphicx) (if the document contains
images), [`hyperref`](https://ctan.org/pkg/hyperref),
[`xcolor`](https://ctan.org/pkg/xcolor),
[`soul`](https://ctan.org/pkg/soul),
[`geometry`](https://ctan.org/pkg/geometry) (with the `geometry`
variable set), [`setspace`](https://ctan.org/pkg/setspace) (with
`linestretch`), and [`babel`](https://ctan.org/pkg/babel) (with `lang`).
If `CJKmainfont` is set, [`xeCJK`](https://ctan.org/pkg/xecjk) is
needed. The use of `xelatex` or `lualatex` as the PDF engine requires
[`fontspec`](https://ctan.org/pkg/fontspec). `lualatex` uses
[`selnolig`](https://ctan.org/pkg/selnolig). `xelatex` uses
[`bidi`](https://ctan.org/pkg/bidi) (with the `dir` variable set). If
the `mathspec` variable is set, `xelatex` will use
[`mathspec`](https://ctan.org/pkg/mathspec) instead of
[`unicode-math`](https://ctan.org/pkg/unicode-math). The
[`upquote`](https://ctan.org/pkg/upquote) and
[`microtype`](https://ctan.org/pkg/microtype) packages are used if
available, and [`csquotes`](https://ctan.org/pkg/csquotes) will be used
for [typography](#typography) if the `csquotes` variable or metadata
field is set to a true value. The
[`natbib`](https://ctan.org/pkg/natbib),
[`biblatex`](https://ctan.org/pkg/biblatex),
[`bibtex`](https://ctan.org/pkg/bibtex), and
[`biber`](https://ctan.org/pkg/biber) packages can optionally be used
for [citation rendering](#citation-rendering). The following packages
will be used to improve output quality if present, but pandoc does not
require them to be present: [`upquote`](https://ctan.org/pkg/upquote)
(for straight quotes in verbatim environments),
[`microtype`](https://ctan.org/pkg/microtype) (for better spacing
adjustments), [`parskip`](https://ctan.org/pkg/parskip) (for better
inter-paragraph spaces), [`xurl`](https://ctan.org/pkg/xurl) (for better
line breaks in URLs), [`bookmark`](https://ctan.org/pkg/bookmark) (for
better PDF bookmarks), and
[`footnotehyper`](https://ctan.org/pkg/footnotehyper) or
[`footnote`](https://ctan.org/pkg/footnote) (to allow footnotes in
tables).
{#reading-from-the-web}
## Reading from the Web
Instead of an input file, an absolute URI may be given. In this case
pandoc will fetch the content using HTTP:
```
pandoc -f html -t markdown https://www.fsf.org
```
It is possible to supply a custom User-Agent string or other header when
requesting a document from a URL:
```
pandoc -f html -t markdown --request-header User-Agent:"Mozilla/5.0" \
https://www.fsf.org
```
{#options}
# Options
{#general-options .options}
## General options
: `-f` _FORMAT_, `-r` _FORMAT_, `--from=`_FORMAT_, `--read=`_FORMAT_
Specify input format. _FORMAT_ can be:
{#input-formats}
:::
- `bibtex` ([BibTeX](https://ctan.org/pkg/bibtex) bibliography)
- `biblatex` ([BibLaTeX](https://ctan.org/pkg/biblatex) bibliography)
- `commonmark` ([CommonMark](https://commonmark.org) Markdown)
- `commonmark_x` ([CommonMark](https://commonmark.org) Markdown with
extensions)
- `creole` ([Creole 1.0](http://www.wikicreole.org/wiki/Creole1.0))
- `csljson` ([CSL
JSON](https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html)
bibliography)
- `csv` ([CSV](https://tools.ietf.org/html/rfc4180) table)
- `tsv`
([TSV](https://www.iana.org/assignments/media-types/text/tab-separated-values)
table)
- `docbook` ([DocBook](https://docbook.org))
- `docx` ([Word docx](https://en.wikipedia.org/wiki/Office_Open_XML))
- `dokuwiki` ([DokuWiki markup](https://www.dokuwiki.org/dokuwiki))
- `endnotexml` ([EndNote XML
bibliography](https://support.clarivate.com/Endnote/s/article/EndNote-XML-Document-Type-Definition))
- `epub` ([EPUB](http://idpf.org/epub))
- `fb2`
([FictionBook2](http://www.fictionbook.org/index.php/Eng:XML_Schema_Fictionbook_2.1)
e-book)
- `gfm` ([GitHub-Flavored
Markdown](https://help.github.com/articles/github-flavored-markdown/)),
or the deprecated and less accurate `markdown_github`; use
[`markdown_github`](#markdown-variants) only if you need extensions
not supported in [`gfm`](#markdown-variants).
- `haddock` ([Haddock
markup](https://www.haskell.org/haddock/doc/html/ch03s08.html))
- `html` ([HTML](https://www.w3.org/html/))
- `ipynb` ([Jupyter
notebook](https://nbformat.readthedocs.io/en/latest/))
- `jats` ([JATS](https://jats.nlm.nih.gov) XML)
- `jira`
([Jira](https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all)/Confluence
wiki markup)
- `json` (JSON version of native AST)
- `latex` ([LaTeX](https://www.latex-project.org/))
- `markdown` ([Pandoc’s Markdown](#pandocs-markdown))
- `markdown_mmd`
([MultiMarkdown](https://fletcherpenney.net/multimarkdown/))
- `markdown_phpextra` ([PHP Markdown
Extra](https://michelf.ca/projects/php-markdown/extra/))
- `markdown_strict` (original unextended
[Markdown](https://daringfireball.net/projects/markdown/))
- `mediawiki` ([MediaWiki
markup](https://www.mediawiki.org/wiki/Help:Formatting))
- `man` ([roff man](https://man.cx/groff_man(7)))
- `muse` ([Muse](https://amusewiki.org/library/manual))
- `native` (native Haskell)
- `odt` ([ODT](https://en.wikipedia.org/wiki/OpenDocument))
- `opml` ([OPML](http://dev.opml.org/spec2.html))
- `org` ([Emacs Org mode](https://orgmode.org))
- `ris` ([RIS](https://en.wikipedia.org/wiki/RIS_(file_format))
bibliography)
- `rtf` ([Rich Text
Format](https://en.wikipedia.org/wiki/Rich_Text_Format))
- `rst`
([reStructuredText](https://docutils.sourceforge.io/docs/ref/rst/introduction.html))
- `t2t` ([txt2tags](https://txt2tags.org))
- `textile` ([Textile](https://textile-lang.com))
- `tikiwiki` ([TikiWiki
markup](https://doc.tiki.org/Wiki-Syntax-Text#The_Markup_Language_Wiki-Syntax))
- `twiki` ([TWiki
markup](https://twiki.org/cgi-bin/view/TWiki/TextFormattingRules))
- `typst` ([typst](https://typst.app))
- `vimwiki` ([Vimwiki](https://vimwiki.github.io))
- the path of a custom Lua reader, see [Custom readers and
writers](#custom-readers-and-writers) below
:::
Extensions can be individually enabled or disabled by appending
`+EXTENSION` or `-EXTENSION` to the format name. See
[Extensions](#extensions) below, for a list of extensions and their
names. See `--list-input-formats` and `--list-extensions`, below.
: `-t` _FORMAT_, `-w` _FORMAT_, `--to=`_FORMAT_, `--write=`_FORMAT_
Specify output format. _FORMAT_ can be:
{#output-formats}
:::
- `asciidoc` ([AsciiDoc](https://www.methods.co.nz/asciidoc/)) or
`asciidoctor` ([AsciiDoctor](https://asciidoctor.org/))
- `beamer` ([LaTeX beamer](https://ctan.org/pkg/beamer) slide show)
- `bibtex` ([BibTeX](https://ctan.org/pkg/bibtex) bibliography)
- `biblatex` ([BibLaTeX](https://ctan.org/pkg/biblatex) bibliography)
- `chunkedhtml` (zip archive of multiple linked HTML files)
- `commonmark` ([CommonMark](https://commonmark.org) Markdown)
- `commonmark_x` ([CommonMark](https://commonmark.org) Markdown with
extensions)
- `context` ([ConTeXt](https://www.contextgarden.net/))
- `csljson` ([CSL
JSON](https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html)
bibliography)
- `docbook` or `docbook4` ([DocBook](https://docbook.org) 4)
- `docbook5` (DocBook 5)
- `docx` ([Word docx](https://en.wikipedia.org/wiki/Office_Open_XML))
- `dokuwiki` ([DokuWiki markup](https://www.dokuwiki.org/dokuwiki))
- `epub` or `epub3` ([EPUB](http://idpf.org/epub) v3 book)
- `epub2` (EPUB v2)
- `fb2`
([FictionBook2](http://www.fictionbook.org/index.php/Eng:XML_Schema_Fictionbook_2.1)
e-book)
- `gfm` ([GitHub-Flavored
Markdown](https://help.github.com/articles/github-flavored-markdown/)),
or the deprecated and less accurate `markdown_github`; use
[`markdown_github`](#markdown-variants) only if you need extensions
not supported in [`gfm`](#markdown-variants).
- `haddock` ([Haddock
markup](https://www.haskell.org/haddock/doc/html/ch03s08.html))
- `html` or `html5` ([HTML](https://www.w3.org/html/),
i.e. [HTML5](https://html.spec.whatwg.org/)/XHTML [polyglot
markup](https://www.w3.org/TR/html-polyglot/))
- `html4` ([XHTML](https://www.w3.org/TR/xhtml1/) 1.0 Transitional)
- `icml` ([InDesign
ICML](https://wwwimages.adobe.com/www.adobe.com/content/dam/acom/en/devnet/indesign/sdk/cs6/idml/idml-cookbook.pdf))
- `ipynb` ([Jupyter
notebook](https://nbformat.readthedocs.io/en/latest/))
- `jats_archiving` ([JATS](https://jats.nlm.nih.gov) XML, Archiving
and Interchange Tag Set)
- `jats_articleauthoring` ([JATS](https://jats.nlm.nih.gov) XML,
Article Authoring Tag Set)
- `jats_publishing` ([JATS](https://jats.nlm.nih.gov) XML, Journal
Publishing Tag Set)
- `jats` (alias for `jats_archiving`)
- `jira`
([Jira](https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all)/Confluence
wiki markup)
- `json` (JSON version of native AST)
- `latex` ([LaTeX](https://www.latex-project.org/))
- `man` ([roff man](https://man.cx/groff_man(7)))
- `markdown` ([Pandoc’s Markdown](#pandocs-markdown))
- `markdown_mmd`
([MultiMarkdown](https://fletcherpenney.net/multimarkdown/))
- `markdown_phpextra` ([PHP Markdown
Extra](https://michelf.ca/projects/php-markdown/extra/))
- `markdown_strict` (original unextended
[Markdown](https://daringfireball.net/projects/markdown/))
- `markua` ([Markua](https://leanpub.com/markua/read))
- `mediawiki` ([MediaWiki
markup](https://www.mediawiki.org/wiki/Help:Formatting))
- `ms` ([roff ms](https://man.cx/groff_ms(7)))
- `muse` ([Muse](https://amusewiki.org/library/manual))
- `native` (native Haskell)
- `odt` ([OpenOffice text
document](https://en.wikipedia.org/wiki/OpenDocument))
- `opml` ([OPML](http://dev.opml.org/spec2.html))
- `opendocument` ([OpenDocument](http://opendocument.xml.org))
- `org` ([Emacs Org mode](https://orgmode.org))
- `pdf` ([PDF](https://www.adobe.com/pdf/))
- `plain` (plain text)
- `pptx`
([PowerPoint](https://en.wikipedia.org/wiki/Microsoft_PowerPoint)
slide show)
- `rst`
([reStructuredText](https://docutils.sourceforge.io/docs/ref/rst/introduction.html))
- `rtf` ([Rich Text
Format](https://en.wikipedia.org/wiki/Rich_Text_Format))
- `texinfo` ([GNU Texinfo](https://www.gnu.org/software/texinfo/))
- `textile` ([Textile](https://textile-lang.com))
- `slideous` ([Slideous](https://goessner.net/articles/slideous/) HTML
and JavaScript slide show)
- `slidy` ([Slidy](https://www.w3.org/Talks/Tools/Slidy2/) HTML and
JavaScript slide show)
- `dzslides` ([DZSlides](https://paulrouget.com/dzslides/) HTML5 +
JavaScript slide show)
- `revealjs` ([reveal.js](https://revealjs.com/) HTML5 + JavaScript
slide show)
- `s5` ([S5](https://meyerweb.com/eric/tools/s5/) HTML and JavaScript
slide show)
- `tei` ([TEI Simple](https://github.com/TEIC/TEI-Simple))
- `typst` ([typst](https://typst.app))
- `xwiki` ([XWiki
markup](https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiSyntax/))
- `zimwiki` ([ZimWiki
markup](https://zim-wiki.org/manual/Help/Wiki_Syntax.html))
- the path of a custom Lua writer, see [Custom readers and
writers](#custom-readers-and-writers) below
:::
Note that `odt`, `docx`, `epub`, and `pdf` output will not be directed
to _stdout_ unless forced with `-o -`.
Extensions can be individually enabled or disabled by appending
`+EXTENSION` or `-EXTENSION` to the format name. See
[Extensions](#extensions) below, for a list of extensions and their
names. See `--list-output-formats` and `--list-extensions`, below.
: `-o` _FILE_, `--output=`_FILE_
Write output to _FILE_ instead of _stdout_. If _FILE_ is `-`, output
will go to _stdout_, even if a non-textual format (`docx`, `odt`,
`epub2`, `epub3`) is specified. If the output format is `chunkedhtml`
and _FILE_ has no extension, then instead of producing a `.zip` file
pandoc will create a directory _FILE_ and unpack the zip archive there
(unless _FILE_ already exists, in which case an error will be raised).
: `--data-dir=`_DIRECTORY_
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. On \*nix and macOS systems this will be the `pandoc`
subdirectory of the XDG data directory (by default,
`$HOME/.local/share`, overridable by setting the `XDG_DATA_HOME`
environment variable). If that directory does not exist and
`$HOME/.pandoc` exists, it will be used (for backwards compatibility).
On Windows the default user data directory is `%APPDATA%\pandoc`. You
can find the default user data directory on your system by looking at
the output of `pandoc --version`. Data files placed in this directory
(for example, `reference.odt`, `reference.docx`, `epub.css`,
`templates`) will override pandoc’s normal defaults. (Note that the
user data directory is not created by pandoc, so you will need to
create it yourself if you want to make use of it.)
: `-d` _FILE_, `--defaults=`_FILE_
Specify a set of default option settings. _FILE_ is a YAML file whose
fields correspond to command-line option settings. All options for
document conversion, including input and output files, can be set
using a defaults file. The file will be searched for first in the
working directory, and then in the `defaults` subdirectory of the user
data directory (see `--data-dir`). The `.yaml` extension may be
omitted. See the section [Defaults files](#defaults-files) for more
information on the file format. Settings from the defaults file may be
overridden or extended by subsequent options on the command line.
: `--bash-completion`
Generate a bash completion script. To enable bash completion with
pandoc, add this to your `.bashrc`:
```
eval "$(pandoc --bash-completion)"
```
: `--verbose`
Give verbose debugging output.
: `--quiet`
Suppress warning messages.
: `--fail-if-warnings`
Exit with error status if there are any warnings.
: `--log=`_FILE_
Write log messages in machine-readable JSON format to _FILE_. All
messages above DEBUG level will be written, regardless of verbosity
settings (`--verbose`, `--quiet`).
: `--list-input-formats`
List supported input formats, one per line.
: `--list-output-formats`
List supported output formats, one per line.
: `--list-extensions`\[`=`_FORMAT_\]
List supported extensions for _FORMAT_, one per line, preceded by a
`+` or `-` indicating whether it is enabled by default in _FORMAT_. If
_FORMAT_ is not specified, defaults for pandoc’s Markdown are given.
: `--list-highlight-languages`
List supported languages for syntax highlighting, one per line.
: `--list-highlight-styles`
List supported styles for syntax highlighting, one per line. See
`--highlight-style`.
: `-v`, `--version`
Print version.
: `-h`, `--help`
Show usage message.
{#reader-options .options}
## Reader options
: `--shift-heading-level-by=`_NUMBER_
Shift heading levels by a positive or negative integer. For example,
with `--shift-heading-level-by=-1`, level 2 headings become level 1
headings, and level 3 headings become level 2 headings. Headings
cannot have a level less than 1, so a heading that would be shifted
below level 1 becomes a regular paragraph. Exception: with a shift of
-N, a level-N heading at the beginning of the document replaces the
metadata title. `--shift-heading-level-by=-1` is a good choice when
converting HTML or Markdown documents that use an initial level-1
heading for the document title and level-2+ headings for sections.
`--shift-heading-level-by=1` may be a good choice for converting
Markdown documents that use level-1 headings for sections to HTML,
since pandoc uses a level-1 heading to render the document title.
: `--base-header-level=`_NUMBER_
_Deprecated. Use `--shift-heading-level-by`=X instead, where X =
NUMBER - 1._ Specify the base level for headings (defaults to 1).
: `--indented-code-classes=`_CLASSES_
Specify classes to use for indented code blocks–for example,
`perl,numberLines` or `haskell`. Multiple classes may be separated by
spaces or commas.
: `--default-image-extension=`_EXTENSION_
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.
: `--file-scope`
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`.
If two or more files are processed using `--file-scope`, prefixes
based on the filenames will be added to identifiers in order to
disambiguate them, and internal links will be adjusted accordingly.
For example, a header with identifier `foo` in `subdir/file1.txt` will
have its identifier changed to `subdir__file1.txt__foo`.
In addition, a Div with an identifier based on the filename will be
added around the file’s content, so that internal links to the
filename will point to this Div’s identifier.
: `-F` _PROGRAM_, `--filter=`_PROGRAM_
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 ./caps.py -t latex
```
is equivalent to
```
pandoc -t json | ./caps.py 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`](https://github.com/jgm/pandocfilters), installable
from PyPI. There are also pandoc filter libraries in
[PHP](https://github.com/vinai/pandocfilters-php),
[perl](https://metacpan.org/pod/Pandoc::Filter), and
[JavaScript/node.js](https://github.com/mvhenderson/pandoc-filter-node).
In order of preference, pandoc will look for filters in
1. a specified full or relative path (executable or non-executable),
2. `$DATADIR/filters` (executable or non-executable) where `$DATADIR`
is the user data directory (see `--data-dir`, above),
3. `$PATH` (executable only).
Filters, Lua-filters, and citeproc processing are applied in the order
specified on the command line.
: `-L` _SCRIPT_, `--lua-filter=`_SCRIPT_
Transform the document in a similar fashion as JSON filters (see
`--filter`), but use pandoc’s built-in Lua filtering system. The given
Lua script is expected to return a list of Lua filters which will be
applied in order. Each Lua filter must contain element-transforming
functions indexed by the name of the AST element on which the filter
function should be applied.
The `pandoc` Lua module provides helper functions for element
creation. It is always loaded into the script’s Lua environment.
See the [Lua filters
documentation](https://pandoc.org/lua-filters.html) for further
details.
In order of preference, pandoc will look for Lua filters in
1. a specified full or relative path,
2. `$DATADIR/filters` where `$DATADIR` is the user data directory (see
`--data-dir`, above).
Filters, Lua filters, and citeproc processing are applied in the order
specified on the command line.
: `-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 using
[YAML metadata blocks](#extension-yaml_metadata_block). 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`, `--metadata`
causes 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) and
metadata values will be escaped when inserted into the template.
: `--metadata-file=`_FILE_
Read metadata from the supplied YAML (or JSON) file. This option can
be used with every input format, but string scalars in the metadata
file will always be parsed as Markdown. (If the input format is
Markdown or a Markdown variant, then the same variant will be used to
parse the metadata file; if it is a non-Markdown format, pandoc’s
default Markdown extensions will be used.) This option can be used
repeatedly to include multiple metadata files; values in files
specified later on the command line will be preferred over those
specified in earlier files. Metadata values specified inside the
document, or by using `-M`, overwrite values specified with this
option. The file will be searched for first in the working directory,
and then in the `metadata` subdirectory of the user data directory
(see `--data-dir`).
: `-p`, `--preserve-tabs`
Preserve tabs instead of converting them to spaces. (By default,
pandoc converts tabs to spaces before parsing its input.) Note that
this will only affect tabs in literal code spans and code blocks. Tabs
in regular text are always treated as spaces.
: `--tab-stop=`_NUMBER_
Specify the number of spaces per tab (default is 4).
: `--track-changes=accept`|`reject`|`all`
Specifies what to do with insertions, deletions, and comments produced
by the MS Word "Track Changes" feature. `accept` (the default)
processes all the insertions and deletions. `reject` ignores them.
Both `accept` and `reject` ignore comments. `all` includes all
insertions, deletions, and comments, wrapped in spans with
`insertion`, `deletion`, `comment-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. If a paragraph is inserted or deleted,
`track-changes=all` produces a span with the class
`paragraph-insertion`/`paragraph-deletion` before the affected
paragraph break. This option only affects the docx reader.
: `--extract-media=`_DIR_
Extract images and other media contained in or linked from the source
document to the path _DIR_, creating it if necessary, and adjust the
images references in the document so they point to the extracted
files. Media are downloaded, read from the file system, or extracted
from a binary container (e.g. docx), as needed. The original file
paths are used if they are relative paths not containing `..`.
Otherwise filenames are constructed from the SHA1 hash of the
contents.
: `--abbreviations=`_FILE_
Specifies a custom abbreviations file, with abbreviations one to a
line. If this option is not specified, pandoc will read the data file
`abbreviations` from the user data directory or fall back on a system
default. To see the system default, use
`pandoc --print-default-data-file=abbreviations`. The only use pandoc
makes of this list is in the Markdown reader. Strings found in this
list will be followed by a nonbreaking space, and the period will not
produce sentence-ending space in formats like LaTeX. The strings may
not contain spaces.
: `--trace`
Print diagnostic output tracing parser progress to stderr. This option
is intended for use by developers in diagnosing performance issues.
{#general-writer-options .options}
## General writer options
: `-s`, `--standalone`
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 `pdf`, `epub`, `epub3`, `fb2`, `docx`, and
`odt` output. For `native` output, this option causes metadata to be
included; otherwise, metadata is suppressed.
: `--template=`_FILE_|_URL_
Use the specified file as a custom template for the generated
document. Implies `--standalone`. See [Templates](#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. If no _VAL_ is specified, the key will be
given the value `true`.
: `--sandbox`
Run pandoc in a sandbox, limiting IO operations in readers and writers
to reading the files specified on the command line. Note that this
option does not limit IO operations by filters or in the production of
PDF documents. But it does offer security against, for example,
disclosure of files through the use of `include` directives. Anyone
using pandoc on untrusted user input should use this option.
Note: some readers and writers (e.g., `docx`) need access to data
files. If these are stored on the file system, then pandoc will not be
able to find them when run in `--sandbox` mode and will raise an
error. For these applications, we recommend using a pandoc binary
compiled with the `embed_data_files` option, which causes the data
files to be baked into the binary instead of being stored on the file
system.
: `-D` _FORMAT_, `--print-default-template=`_FORMAT_
Print the system default template for an output _FORMAT_. (See `-t`
for a list of possible _FORMAT_s.) Templates in the user data
directory are ignored. This option may be used with `-o`/`--output` to
redirect output to a file, but `-o`/`--output` must come before
`--print-default-template` on the command line.
Note that some of the default templates use partials, for example
`styles.html`. To print the partials, use `--print-default-data-file`:
for example, `--print-default-data-file=templates/styles.html`.
: `--print-default-data-file=`_FILE_
Print a system default data file. Files in the user data directory are
ignored. This option may be used with `-o`/`--output` to redirect
output to a file, but `-o`/`--output` must come before
`--print-default-data-file` on the command line.
: `--eol=crlf`|`lf`|`native`
Manually specify line endings: `crlf` (Windows), `lf`
(macOS/Linux/UNIX), or `native` (line endings appropriate to the OS on
which pandoc is being run). The default is `native`.
: `--dpi`=_NUMBER_
Specify the default dpi (dots per inch) value for conversion from
pixels to inch/centimeters and vice versa. (Technically, the correct
term would be ppi: pixels per inch.) The default is 96dpi. When images
contain information about dpi internally, the encoded value is used
instead of the default specified by this option.
: `--wrap=auto`|`none`|`preserve`
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 72).
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). In `ipynb`
output, this option affects wrapping of the contents of markdown
cells.
: `--columns=`_NUMBER_
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](#tables) below).
: `--toc`, `--table-of-contents`
Include an automatically generated table of contents (or, in the case
of `latex`, `context`, `docx`, `odt`, `opendocument`, `rst`, or `ms`,
an instruction to create one) in the output document. This option has
no effect unless `-s/--standalone` is used, and it has no effect on
`man`, `docbook4`, `docbook5`, or `jats` output.
Note that if you are producing a PDF via `ms`, the table of contents
will appear at the beginning of the document, before the title. If you
would prefer it to be at the end of the document, use the option
`--pdf-engine-opt=--no-toc-relocation`.
: `--toc-depth=`_NUMBER_
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
headings will be listed in the contents).
: `--strip-comments`
Strip out HTML comments in the Markdown or Textile source, rather than
passing them on to Markdown, Textile or HTML output as raw HTML. This
does not apply to HTML comments inside raw HTML blocks when the
`markdown_in_html_blocks` extension is not set.
: `--no-highlight`
Disables syntax highlighting for code blocks and inlines, even when a
language attribute is given.
: `--highlight-style=`_STYLE_|_FILE_
Specifies the coloring style to be used in highlighted source code.
Options are `pygments` (the default), `kate`, `monochrome`,
`breezeDark`, `espresso`, `zenburn`, `haddock`, and `tango`. For more
information on syntax highlighting in pandoc, see [Syntax
highlighting](#syntax-highlighting), below. See also
`--list-highlight-styles`.
Instead of a _STYLE_ name, a JSON file with extension `.theme` may be
supplied. This will be parsed as a KDE syntax highlighting theme and
(if valid) used as the highlighting style.
To generate the JSON version of an existing style, use
`--print-highlight-style`.
: `--print-highlight-style=`_STYLE_|_FILE_
Prints a JSON version of a highlighting style, which can be modified,
saved with a `.theme` extension, and used with `--highlight-style`.
This option may be used with `-o`/`--output` to redirect output to a
file, but `-o`/`--output` must come before `--print-highlight-style`
on the command line.
: `--syntax-definition=`_FILE_
Instructs pandoc to load a KDE XML syntax definition file, which will
be used for syntax highlighting of appropriately marked code blocks.
This can be used to add support for new languages or to use altered
syntax definitions for existing languages. This option may be repeated
to add multiple syntax definitions.
: `-H` _FILE_, `--include-in-header=`_FILE_|_URL_
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_|_URL_
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_|_URL_
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`.
: `--resource-path=`_SEARCHPATH_
List of paths to search for images and other resources. The paths
should be separated by `:` on Linux, UNIX, and macOS systems, and by
`;` on Windows. If `--resource-path` is not specified, the default
resource path is the working directory. Note that, if
`--resource-path` is specified, the working directory must be
explicitly listed or it will not be searched. For example:
`--resource-path=.:test` will search the working directory and the
`test` subdirectory, in that order. This option can be used
repeatedly. Search path components that come later on the command line
will be searched before those that come earlier, so
`--resource-path foo:bar --resource-path baz:bim` is equivalent to
`--resource-path baz:bim:foo:bar`.
: `--request-header=`_NAME_`:`_VAL_
Set the request header _NAME_ to the value _VAL_ when making HTTP
requests (for example, when a URL is given on the command line, or
when resources used in a document must be downloaded). If you’re
behind a proxy, you also need to set the environment variable
`http_proxy` to `http://...`.
: `--no-check-certificate`
Disable the certificate verification to allow access to unsecure HTTP
resources (for example when the certificate is no longer valid or self
signed).
{#options-affecting-specific-writers .options}
## Options affecting specific writers
: `--self-contained`
_Deprecated synonym for `--embed-resources --standalone`._
: `--embed-resources`
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 `html4`, `html5`, `html+lhs`,
`html5+lhs`, `s5`, `slidy`, `slideous`, `dzslides`, 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). Elements with the attribute
`data-external="1"` will be left alone; the documents they link to
will not be incorporated in the document. Limitation: resources that
are loaded dynamically through JavaScript cannot be incorporated; as a
result, fonts may be missing when `--mathjax` is used, and some
advanced features (e.g. zoom or speaker notes) may not work in an
offline "self-contained" `reveal.js` slide show.
: `--html-q-tags`
Use `<q>` tags for quotes in HTML. (This option only has an effect if
the `smart` extension is enabled for the input format used.)
: `--ascii`
Use only ASCII characters in output. Currently supported for XML and
HTML formats (which use entities instead of UTF-8 when this option is
selected), CommonMark, gfm, and Markdown (which use entities), roff
man and ms (which use hexadecimal escapes), and to a limited degree
LaTeX (which uses standard commands for accented characters when
possible).
: `--reference-links`
Use reference-style links, rather than inline links, in writing
Markdown or reStructuredText. By default inline links are used. The
placement of link references is affected by the `--reference-location`
option.
: `--reference-location=block`|`section`|`document`
Specify whether footnotes (and references, if `reference-links` is
set) are placed at the end of the current (top-level) block, the
current section, or the document. The default is `document`. Currently
this option only affects the `markdown`, `muse`, `html`, `epub`,
`slidy`, `s5`, `slideous`, `dzslides`, and `revealjs` writers. In
slide formats, specifying `--reference-location=section` will cause
notes to be rendered at the bottom of a slide.
: `--markdown-headings=setext`|`atx`
Specify whether to use ATX-style (`#`-prefixed) or Setext-style
(underlined) headings for level 1 and 2 headings in Markdown output.
(The default is `atx`.) ATX-style headings are always used for levels
3+. This option also affects Markdown cells in `ipynb` output.
: `--list-tables`
Render tables as list tables in RST output.
: `--top-level-division=default`|`section`|`chapter`|`part`
Treat top-level headings as the given division type in LaTeX, ConTeXt,
DocBook, and TEI output. The hierarchy order is part, chapter, then
section; all headings are shifted such that the top-level heading
becomes the specified type. The default behavior is to determine the
best division type via heuristics: unless other conditions apply,
`section` is chosen. When the `documentclass` variable is set to
`report`, `book`, or `memoir` (unless the `article` option is
specified), `chapter` is implied as the setting for this option. If
`beamer` is the output format, specifying either `chapter` or `part`
will cause top-level headings to become `\part{..}`, while
second-level headings remain as their default type.
: `-N`, `--number-sections`
Number section headings in LaTeX, ConTeXt, HTML, Docx, ms, or EPUB
output. By default, sections are not numbered. Sections with class
`unnumbered` will never be numbered, even if `--number-sections` is
specified.
: `--number-offset=`_NUMBER_\[`,`_NUMBER_`,`_…_\]
Offset for section headings in HTML output (ignored in other output
formats). The first number is added to the section number for
top-level headings, the second for second-level headings, and so on.
So, for example, if you want the first top-level heading in your
document to be numbered "6", specify `--number-offset=5`. If your
document starts with a level-2 heading which you want to be numbered
"1.5", specify `--number-offset=1,4`. Offsets are 0 by default.
Implies `--number-sections`.
: `--listings`
Use the [`listings`](https://ctan.org/pkg/listings) package for LaTeX
code blocks. The package does not support multi-byte encoding for
source code. To handle UTF-8 you would need to use a custom template.
This issue is fully documented here: [Encoding issue with the listings
package](https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue).
: `-i`, `--incremental`
Make list items in slide shows display incrementally (one by one). The
default is for lists to be displayed all at once.
: `--slide-level=`_NUMBER_
Specifies that headings with the specified level create slides (for
`beamer`, `s5`, `slidy`, `slideous`, `dzslides`). Headings above this
level in the hierarchy are used to divide the slide show into
sections; headings below this level create subheads within a slide.
Valid values are 0-6. If a slide level of 0 is specified, slides will
not be split automatically on headings, and horizontal rules must be
used to indicate slide boundaries. If a slide level is not specified
explicitly, the slide level will be set automatically based on the
contents of the document; see [Structuring the slide
show](#structuring-the-slide-show).
: `--section-divs`