git.iko.soy/typeable/pandoc
on 40a78ea help sign in
16 files changed+76−322
since splitsnapshots
unifiedsplit
cabal.project+1−1 data/templates/default.latex+29−29 data/templates/styles.html+1−2 doc/faqs.md−128 src/Text/Pandoc/Citeproc.hs+26−49 src/Text/Pandoc/Writers/HTML.hs+1−6 stack.yaml+1−1 test/command/7394.md−85 test/lhs-test.html+1−2 test/lhs-test.html+lhs+1−2 test/lhs-test.latex+3−3 test/lhs-test.latex+lhs+3−3 test/writer.html4+1−2 test/writer.html5+1−2 test/writer.latex+4−4 test/writers-lang-and-dir.latex+3−3
cabal.project+1−1
@@ -10,4 +10,4 @@ source-repository-package
1010source-repository-package
1111 type: git
1212 location: https://github.com/jgm/citeproc
13− tag: 4ce0501cd6f9c86eee087afcf878c256e49b9615
13+ tag: 85277c4baa6c0350baf29247583ae0f438f7c9c5
data/templates/default.latex+29−29
@@ -36,6 +36,35 @@ $for(classoption)$
3636 $classoption$$sep$,
3737$endfor$
3838]{$documentclass$}
39+$if(title)$
40+\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
41+$endif$
42+$if(subtitle)$
43+$if(beamer)$
44+$else$
45+\usepackage{etoolbox}
46+\makeatletter
47+\providecommand{\subtitle}[1]{% add subtitle to \maketitle
48+ \apptocmd{\@title}{\par {\large #1 \par}}{}{}
49+}
50+\makeatother
51+$endif$
52+\subtitle{$subtitle$}
53+$endif$
54+\author{$for(author)$$author$$sep$ \and $endfor$}
55+\date{$date$}
56+$if(beamer)$
57+$if(institute)$
58+\institute{$for(institute)$$institute$$sep$ \and $endfor$}
59+$endif$
60+$if(titlegraphic)$
61+\titlegraphic{\includegraphics{$titlegraphic$}}
62+$endif$
63+$if(logo)$
64+\logo{\includegraphics{$logo$}}
65+$endif$
66+$endif$
67+
3968$if(beamer)$
4069$if(background-image)$
4170\usebackgroundtemplate{%
@@ -423,35 +452,6 @@ $if(csquotes)$
423452\usepackage{csquotes}
424453$endif$
425454
426−$if(title)$
427−\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
428−$endif$
429−$if(subtitle)$
430−$if(beamer)$
431−$else$
432−\usepackage{etoolbox}
433−\makeatletter
434−\providecommand{\subtitle}[1]{% add subtitle to \maketitle
435− \apptocmd{\@title}{\par {\large #1 \par}}{}{}
436−}
437−\makeatother
438−$endif$
439−\subtitle{$subtitle$}
440−$endif$
441−\author{$for(author)$$author$$sep$ \and $endfor$}
442−\date{$date$}
443−$if(beamer)$
444−$if(institute)$
445−\institute{$for(institute)$$institute$$sep$ \and $endfor$}
446−$endif$
447−$if(titlegraphic)$
448−\titlegraphic{\includegraphics{$titlegraphic$}}
449−$endif$
450−$if(logo)$
451−\logo{\includegraphics{$logo$}}
452−$endif$
453−$endif$
454−
455455\begin{document}
456456$if(has-frontmatter)$
457457\frontmatter
data/templates/styles.html+1−2
@@ -14,7 +14,7 @@ body {
1414 padding-top: $if(margin-top)$$margin-top$$else$50px$endif$;
1515 padding-bottom: $if(margin-bottom)$$margin-bottom$$else$50px$endif$;
1616 hyphens: auto;
17− overflow-wrap: break-word;
17+ word-wrap: break-word;
1818 text-rendering: optimizeLegibility;
1919 font-kerning: normal;
2020}
@@ -93,7 +93,6 @@ $endif$
9393pre code {
9494 padding: 0;
9595 overflow: visible;
96− overflow-wrap: normal;
9796}
9897.sourceCode {
9998 background-color: transparent;
doc/faqs.mddeleted−128
@@ -1,128 +0,0 @@
1−% FAQs
2−
3−::: faqs
4−
5−## How can I convert a whole directory of files from Markdown to RTF?
6−
7−On linux or OSX:
8−
9− for f in *.txt; do pandoc "$f" -s -o "${f%.txt}.rtf"; done
10−
11−
12−In Windows Powershell:
13−
14− gci -r -i *.txt |foreach{$rtf=$_.directoryname+"\"+$_.basename+".rtf";pandoc -f markdown -s $_.name -o $rtf}
15−
16−## I used pandoc to convert a document to ICML (or OPML or RTF), and when I try to open it I'm told it's invalid. What have I done wrong?
17−
18−Be sure to use the `-s` or `--standalone` flag, or you just get a
19−fragment, not a full document with the required header:
20−
21− pandoc -s -f markdown -t icml -o my.icml my.md
22−
23−## I get a blank document when I try to convert a markdown document in Chinese to PDF.
24−
25−By default, pandoc uses pdflatex to generate the PDF, and pdflatex
26−doesn't handle Chinese characters. But you can change the default to
27−use xelatex instead. You should also make sure you're using a font
28−with Chinese glyphs. For example:
29−
30− pandoc -o c.pdf --pdf-engine=xelatex -V mainfont='Adobe Ming Std'
31−
32−## The Windows installer does a single user install, rather than installing pandoc for all users. How can I install pandoc for all users?
33−
34−Run the following command as admin:
35−
36− msiexec /i pandoc-VERSION.msi ALLUSERS=1
37−
38−This will put pandoc in `C:\Program Files\Pandoc`.
39−You can install Pandoc to a different directory by setting APPLICATIONFOLDER parameter,
40−for example:
41−
42− msiexec /i pandoc-1.11.1.msi ALLUSERS=1 APPLICATIONFOLDER="C:\Pandoc"
43−
44−## How do I change the margins in PDF output?
45−
46−The option
47−
48− -V geometry:margin=1in
49−
50−will set the margins to one inch on each side. If you don't want uniform
51−margins, you can do something like
52−
53− -V geometry:"top=2cm, bottom=1.5cm, left=1cm, right=1cm"
54−
55−Or
56−
57− -V geometry:"left=3cm, width=10cm"
58−
59−For more options, see the documentation for the LaTeX [geometry
60−package](https://www.ctan.org/pkg/geometry).
61−
62−## How does pandoc compare to multimarkdown?
63−
64−Here is a [wiki
65−page](https://github.com/jgm/pandoc/wiki/Pandoc-vs-Multimarkdown)
66−comparing the two.
67−
68−## When I specify an image width of 50% and convert to LaTeX, pandoc sets the height to textheight and the aspect ratio isn't preserved. How can I prevent this?
69−
70−For example, if you convert an image with `{width="50%"}`, the LaTeX produced
71−will be `\includegraphics[width=0.5\textwidth,height=\textheight]`.
72−
73−This output presupposes the following code in pandoc's default latex
74−template:
75−
76−```
77−% Scale images if necessary, so that they will not overflow the page
78−% margins by default, and it is still possible to overwrite the defaults
79−% using explicit options in \includegraphics[width, height, ...]{}
80−\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
81−```
82−
83−If you don't have this in your custom template, you should
84−add it. If we didn't set the `height` explicitly in this way,
85−the image would not be resized correctly unless it was
86−being resized to smaller than its original size.
87−
88−## Pandoc sometimes uses too much memory. How can I limit the memory used by pandoc?
89−
90−`pandoc +RTS -M30m -RTS` will limit heap memory to 30MB.
91−When converting a document requires more than this, an out of
92−memory error will be issued.
93−
94−## When using `--include-in-header` with PDF or LaTeX output, how do I reference tex declarations coming after `$header-includes$` in the default template?
95−
96−For various reasons, the `$header-includes$` are not at the very
97−end of the LaTeX preamble. This poses a problem when the code
98−you are inserting depends on declarations in the preamble coming
99−after the `$header-includes$` location. For example, you might
100−want to reference the `\author` and `\title` metadata values
101−(set at the very bottom of the preamble) and present them in
102−margins. In that case you can wrap your code in `etoolbox`'s
103−`\AtEndPreamble`. The technique is demonstrated in [this
104−gist](https://gist.github.com/JohnLukeBentley/9dda6166b9ee5c4127afd2b8cd16b70a).
105−When using `\AtEndPreamble`, keep any `makeatletter` or
106−`makeatother` outside of the `\AtEndPreamble`, as shown in the
107−example.
108−
109−## How can I convert PDFs to other formats using pandoc?
110−
111−You can't. You can try opening the PDF in Word or Google Docs
112−and saving in a format from which pandoc can convert directly.
113−
114−## Do I really need to install a 1 GB TeX installation to produce a PDF using pandoc?
115−
116−No. You can get by with a relatively small TeX installation,
117−for example, by starting with MacTeX's Basic TeX distribution
118−and using the `tlmgr` tool to install a few packages required by pandoc
119−(see https://pandoc.org/MANUAL.html#creating-a-pdf).
120−
121−Or, you can produce PDFs via HTML and `wkhtmltopdf`,
122−or via groff ms and `pdfroff`. (These don't produce as nice
123−topography as TeX, particularly when it comes to math, but they
124−may be fine for many purposes.)
125−
126−
127−:::
128−
src/Text/Pandoc/Citeproc.hs+26−49
@@ -27,7 +27,7 @@ import Text.Pandoc.Error (PandocError(..))
2727import Text.Pandoc.Extensions (pandocExtensions)
2828import Text.Pandoc.Logging (LogMessage(..))
2929import Text.Pandoc.Options (ReaderOptions(..))
30−import Text.Pandoc.Shared (stringify, ordNub, tshow)
30+import Text.Pandoc.Shared (stringify, ordNub, blocksToInlines, tshow)
3131import qualified Text.Pandoc.UTF8 as UTF8
3232import Text.Pandoc.Walk (query, walk, walkM)
3333import Control.Applicative ((<|>))
@@ -49,7 +49,6 @@ import qualified Data.Text as T
4949import System.FilePath (takeExtension)
5050import Safe (lastMay, initSafe)
5151
52−
5352processCitations :: PandocMonad m => Pandoc -> m Pandoc
5453processCitations (Pandoc meta bs) = do
5554 style <- getStyle (Pandoc meta bs)
@@ -99,10 +98,8 @@ processCitations (Pandoc meta bs) = do
9998 let metanocites = lookupMeta "nocite" meta
10099 let Pandoc meta'' bs' =
101100 maybe id (setMeta "nocite") metanocites .
102− walk (mvPunct moveNotes locale) .
103− (if styleIsNoteStyle sopts
104− then walk addNote . walk deNote
105− else id) .
101+ walk (map capitalizeNoteCitation . mvPunct moveNotes locale) .
102+ walk deNote .
106103 evalState (walkM insertResolvedCitations $ Pandoc meta' bs)
107104 $ cits
108105 return $ Pandoc meta''
@@ -564,62 +561,42 @@ extractText (FancyVal x) = toText x
564561extractText (NumVal n) = T.pack (show n)
565562extractText _ = mempty
566563
567−-- Here we take the Spans with class csl-note that are left
568−-- after deNote has removed nested ones, and convert them
569−-- into real notes.
570−addNote :: Inline -> Inline
571−addNote (Span ("",["csl-note"],[]) ils) =
572− Note [Para $
573− B.toList . addTextCase Nothing CapitalizeFirst . B.fromList $ ils]
574−addNote x = x
575−
576−-- Here we handle citation notes that occur inside footnotes
577−-- or other citation notes, in a note style. We don't want
578−-- notes inside notes, so we convert these to parenthesized
579−-- or comma-separated citations.
580−deNote :: Inline -> Inline
581−deNote (Note bs) =
582− case bs of
583− [Para (cit@(Cite (c:_) _) : ils)]
584− | citationMode c /= AuthorInText ->
585− -- if citation is first in note, no need to parenthesize.
586− Note [Para (walk removeNotes $ cit : walk addParens ils)]
587− _ -> Note (walk removeNotes . walk addParens $ bs)
588−
564+capitalizeNoteCitation :: Inline -> Inline
565+capitalizeNoteCitation (Cite cs [Note [Para ils]]) =
566+ Cite cs
567+ [Note [Para $ B.toList $ addTextCase Nothing CapitalizeFirst
568+ $ B.fromList ils]]
569+capitalizeNoteCitation x = x
570+
571+deNote :: [Inline] -> [Inline]
572+deNote [] = []
573+deNote (Note bs:rest) =
574+ Note (walk go bs) : deNote rest
589575 where
590− addParens [] = []
591− addParens (Cite (c:cs) ils : zs)
576+ go [] = []
577+ go (Cite (c:cs) ils : zs)
592578 | citationMode c == AuthorInText
593− = Cite (c:cs) (concatMap (noteAfterComma (needsPeriod zs)) ils) :
594− addParens zs
579+ = Cite (c:cs) (concatMap (noteAfterComma (needsPeriod zs)) ils) : go zs
595580 | otherwise
596− = Cite (c:cs) (concatMap noteInParens ils) : addParens zs
597− addParens (x:xs) = x : addParens xs
598−
599− removeNotes (Span ("",["csl-note"],[]) ils) = Span ("",[],[]) ils
600− removeNotes x = x
601−
581+ = Cite (c:cs) (concatMap noteInParens ils) : go zs
582+ go (x:xs) = x : go xs
602583 needsPeriod [] = True
603584 needsPeriod (Str t:_) = case T.uncons t of
604585 Nothing -> False
605586 Just (c,_) -> isUpper c
606587 needsPeriod (Space:zs) = needsPeriod zs
607588 needsPeriod _ = False
608−
609− noteInParens (Span ("",["csl-note"],[]) ils)
589+ noteInParens (Note bs')
610590 = Space : Str "(" :
611− removeFinalPeriod ils ++ [Str ")"]
591+ removeFinalPeriod (blocksToInlines bs') ++ [Str ")"]
612592 noteInParens x = [x]
613−
614− noteAfterComma needsPer (Span ("",["csl-note"],[]) ils)
615− | not (null ils)
593+ noteAfterComma needsPer (Note bs')
616594 = Str "," : Space :
617− if needsPer
618− then ils
619− else removeFinalPeriod ils
595+ (if needsPer
596+ then id
597+ else removeFinalPeriod) (blocksToInlines bs')
620598 noteAfterComma _ x = [x]
621−
622−deNote x = x
599+deNote (x:xs) = x : deNote xs
623600
624601-- Note: we can't use dropTextWhileEnd indiscriminately,
625602-- because this would remove the final period on abbreviations like Ibid.
src/Text/Pandoc/Writers/HTML.hs+1−6
@@ -26,13 +26,8 @@ module Text.Pandoc.Writers.HTML (
2626 writeSlideous,
2727 writeDZSlides,
2828 writeRevealJs,
29− tagWithAttributes,
30− inlineToHtml,
31− blockToHtml,
32− WriterState(..),
33− defaultWriterState
29+ tagWithAttributes
3430 ) where
35−
3631import Control.Monad.State.Strict
3732import Data.Char (ord)
3833import Data.List (intercalate, intersperse, partition, delete, (\\), foldl')
stack.yaml+1−1
@@ -14,7 +14,7 @@ extra-deps:
1414- git: https://github.com/jgm/doctemplates
1515 commit: 428c26d5303cf7a2b1051fe1ffd9aafe9ba71c81
1616- git: https://github.com/jgm/citeproc
17− commit: 4ce0501cd6f9c86eee087afcf878c256e49b9615
17+ commit: 85277c4baa6c0350baf29247583ae0f438f7c9c5
1818ghc-options:
1919 "$locals": -fhide-source-paths -Wno-missing-home-modules
2020resolver: lts-18.0
test/command/7394.mddeleted−85
@@ -1,85 +0,0 @@
1−```
2−% pandoc -f markdown -t plain --citeproc
3−---
4−csl: command/chicago-fullnote-bibliography.csl
5−references:
6−- author:
7− - family: Wandt
8− given: Manfred
9− edition: 6
10− id: wandt2014ges-sv
11− issued: 2014
12− publisher: Franz Vahlen
13− publisher-place: München
14− title: Gesetzliche schuldverhältnisse
15− title-short: Gesetzl SV
16− type: book
17−- author:
18− - family: Smith
19− given: Zenda
20− edition: 6
21− id: smith2015
22− issued: 2015
23− publisher: Macmillan
24− publisher-place: New York
25− title: A verb and a noun
26− type: book
27−---
28−
29−Hi^[@wandt2014ges-sv.].
30−
31−Hi^[[@wandt2014ges-sv].].
32−
33−Hi^[[See also @wandt2014ges-sv].].
34−
35−Hi^[See also @wandt2014ges-sv.].
36−
37−Hi^[@wandt2014ges-sv [@smith2015].].
38−
39−Hi^[[@wandt2014ges-sv; @smith2015].].
40−
41−Hi [@wandt2014ges-sv].
42−
43−Hi [see also @wandt2014ges-sv].
44−
45−^D
46−Hi[1].
47−
48−Hi[2].
49−
50−Hi[3].
51−
52−Hi[4].
53−
54−Hi[5].
55−
56−Hi[6].
57−
58−Hi.[7]
59−
60−Hi.[8]
61−
62−Smith, Zenda. A Verb and a Noun. 6th ed. New York: Macmillan, 2015.
63−
64−Wandt, Manfred. Gesetzliche Schuldverhältnisse. 6th ed. München: Franz
65−Vahlen, 2014.
66−
67−[1] Manfred Wandt, Gesetzliche Schuldverhältnisse, 6th ed. (München:
68−Franz Vahlen, 2014).
69−
70−[2] Wandt.
71−
72−[3] See also Wandt.
73−
74−[4] See also Wandt.
75−
76−[5] Wandt, Zenda Smith, A Verb and a Noun, 6th ed. (New York: Macmillan,
77−2015).
78−
79−[6] Wandt, Gesetzl SV; Smith, A Verb and a Noun.
80−
81−[7] Wandt, Gesetzl SV.
82−
83−[8] See also Wandt.
84−```
85−
test/lhs-test.html+1−2
@@ -21,7 +21,7 @@
2121 padding-top: 50px;
2222 padding-bottom: 50px;
2323 hyphens: auto;
24− overflow-wrap: break-word;
24+ word-wrap: break-word;
2525 text-rendering: optimizeLegibility;
2626 font-kerning: normal;
2727 }
@@ -92,7 +92,6 @@
9292 pre code {
9393 padding: 0;
9494 overflow: visible;
95− overflow-wrap: normal;
9695 }
9796 .sourceCode {
9897 background-color: transparent;
test/lhs-test.html+lhs+1−2
@@ -21,7 +21,7 @@
2121 padding-top: 50px;
2222 padding-bottom: 50px;
2323 hyphens: auto;
24− overflow-wrap: break-word;
24+ word-wrap: break-word;
2525 text-rendering: optimizeLegibility;
2626 font-kerning: normal;
2727 }
@@ -92,7 +92,6 @@
9292 pre code {
9393 padding: 0;
9494 overflow: visible;
95− overflow-wrap: normal;
9695 }
9796 .sourceCode {
9897 background-color: transparent;
test/lhs-test.latex+3−3
@@ -4,6 +4,9 @@
44%
55\documentclass[
66]{article}
7+\author{}
8+\date{}
9+
710\usepackage{amsmath,amssymb}
811\usepackage{lmodern}
912\usepackage{iftex}
@@ -85,9 +88,6 @@
8588 \usepackage{selnolig} % disable illegal ligatures
8689\fi
8790
88−\author{}
89−\date{}
90−
9191\begin{document}
9292
9393\hypertarget{lhs-test}{%
test/lhs-test.latex+lhs+3−3
@@ -4,6 +4,9 @@
44%
55\documentclass[
66]{article}
7+\author{}
8+\date{}
9+
710\usepackage{amsmath,amssymb}
811\usepackage{lmodern}
912\usepackage{iftex}
@@ -52,9 +55,6 @@
5255 \usepackage{selnolig} % disable illegal ligatures
5356\fi
5457
55−\author{}
56−\date{}
57−
5858\begin{document}
5959
6060\hypertarget{lhs-test}{%
test/writer.html4+1−2
@@ -24,7 +24,7 @@
2424 padding-top: 50px;
2525 padding-bottom: 50px;
2626 hyphens: auto;
27− overflow-wrap: break-word;
27+ word-wrap: break-word;
2828 text-rendering: optimizeLegibility;
2929 font-kerning: normal;
3030 }
@@ -95,7 +95,6 @@
9595 pre code {
9696 padding: 0;
9797 overflow: visible;
98− overflow-wrap: normal;
9998 }
10099 .sourceCode {
101100 background-color: transparent;
test/writer.html5+1−2
@@ -24,7 +24,7 @@
2424 padding-top: 50px;
2525 padding-bottom: 50px;
2626 hyphens: auto;
27− overflow-wrap: break-word;
27+ word-wrap: break-word;
2828 text-rendering: optimizeLegibility;
2929 font-kerning: normal;
3030 }
@@ -95,7 +95,6 @@
9595 pre code {
9696 padding: 0;
9797 overflow: visible;
98− overflow-wrap: normal;
9998 }
10099 .sourceCode {
101100 background-color: transparent;
test/writer.latex+4−4
@@ -4,6 +4,10 @@
44%
55\documentclass[
66]{article}
7+\title{Pandoc Test Suite}
8+\author{John MacFarlane \and Anonymous}
9+\date{July 17, 2006}
10+
711\usepackage{amsmath,amssymb}
812\usepackage{lmodern}
913\usepackage{iftex}
@@ -67,10 +71,6 @@
6771 \usepackage{selnolig} % disable illegal ligatures
6872\fi
6973
70−\title{Pandoc Test Suite}
71−\author{John MacFarlane \and Anonymous}
72−\date{July 17, 2006}
73−
7474\begin{document}
7575\maketitle
7676
test/writers-lang-and-dir.latex+3−3
@@ -5,6 +5,9 @@
55\documentclass[
66 english,
77]{article}
8+\author{}
9+\date{}
10+
811\usepackage{amsmath,amssymb}
912\usepackage{lmodern}
1013\usepackage{iftex}
@@ -84,9 +87,6 @@
8487 \newenvironment{LTR}{\beginL}{\endL}
8588\fi
8689
87−\author{}
88−\date{}
89−
9090\begin{document}
9191
9292\hypertarget{empty-divs-and-spans}{%