packages feed

pandoc 2.7 → 2.7.1

raw patch · 53 files changed

+514/−268 lines, 53 filesdep ~cmark-gfm

Dependency ranges changed: cmark-gfm

Files

AUTHORS.md view
@@ -17,6 +17,7 @@ - Antoine Latter - Antonio Terceiro - Arata Mizuki+- Arfon Smith - Arlo O'Keeffe - Artyom Kazak - Agustín Martín Barbero@@ -40,6 +41,7 @@ - Clare Macrae - Clint Adams - Conal Elliott+- Cormac Relf - Craig S. Bosma - Damien Clochard - Daniel Bergey@@ -152,6 +154,8 @@ - Or Neeman - OvidiusCicero - Pablo Rodríguez+- Pascal Wagler+- Paul Tilley - Paul Rivier - Paulo Tanimoto - Peter Wang
MANUAL.txt view
@@ -1,6 +1,6 @@ % Pandoc User's Guide % John MacFarlane-% March 2, 2019+% March 12, 2019  Synopsis ========@@ -695,12 +695,17 @@  :   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.+    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.  `--print-default-data-file=`*FILE*  :   Print a system default data file.  Files in the user data directory-    are ignored.+    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` @@ -784,7 +789,10 @@  :   Prints a JSON version of a highlighting style, which can     be modified, saved with a `.theme` extension, and used-    with `--highlight-style`.+    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* @@ -1016,11 +1024,11 @@          To produce a custom `reference.docx`, first get a copy of         the default `reference.docx`: `pandoc-        --print-default-data-file reference.docx >-        custom-reference.docx`.  Then open `custom-reference.docx`-        in Word, modify the styles as you wish, and save the file.-        For best results, do not make changes to this file other-        than modifying the styles used by pandoc:+        -o custom-reference.docx --print-default-data-file reference.docx`.+        Then open `custom-reference.docx` in Word, modify the+        styles as you wish, and save the file.  For best+        results, do not make changes to this file other than+        modifying the styles used by pandoc:          Paragraph styles: @@ -1078,10 +1086,9 @@          To produce a custom `reference.odt`, first get a copy of         the default `reference.odt`: `pandoc-        --print-default-data-file reference.odt >-        custom-reference.odt`.  Then open `custom-reference.odt` in-        LibreOffice, modify the styles as you wish, and save the-        file.+        -o custom-reference.odt --print-default-data-file reference.odt`.+        Then open `custom-reference.odt` in LibreOffice, modify+        the styles as you wish, and save the file.      PowerPoint @@ -1102,10 +1109,10 @@         `Home` menu to check.)          You can also modify the default `reference.pptx`: first run-        `pandoc --print-default-data-file reference.pptx >-        custom-reference.pptx`, and then modify-        `custom-reference.pptx` in MS PowerPoint (pandoc will use the-        first four layout slides, as mentioned above).+        `pandoc -o custom-reference.pptx --print-default-data-file+        reference.pptx`, and then modify `custom-reference.pptx`+        in MS PowerPoint (pandoc will use the first four layout+        slides, as mentioned above).  `--epub-cover-image=`*FILE* @@ -1200,9 +1207,9 @@  :   Use the specified engine when producing PDF output.     Valid values are `pdflatex`, `lualatex`, `xelatex`, `latexmk`,-    `wkhtmltopdf`, `weasyprint`, `prince`, `context`, and `pdfroff`.-    The default is `pdflatex`.  If the engine is not in your PATH,-    the full path of the engine may be specified here.+    `tectonic`, `wkhtmltopdf`, `weasyprint`, `prince`, `context`,+    and `pdfroff`. The default is `pdflatex`.  If the engine is+    not in your PATH, the full path of the engine may be specified here.  `--pdf-engine-opt=`*STRING* @@ -5028,6 +5035,18 @@ ::: :::::: ````++If you include raw HTML or TeX in an output cell, use the+[raw attribute][Extension: `fenced_attribute`], as shown+in the last cell of the example above.  Although pandoc can+process "bare" raw HTML and TeX, the result is often+interspersed raw elements and normal textual elements, and+in an output cell pandoc expects a single, connected raw+block.  To avoid using raw HTML or TeX except when+marked explicitly using raw attributes, we recommend+specifying the extensions `-raw_html-raw_tex+raw_attribute` when+translating between Markdown and ipynb notebooks.+  Syntax highlighting ===================
changelog view
@@ -1,3 +1,79 @@+pandoc (2.7.1)++  * Add tectonic as an option for --pdf-engine (#5345, Cormac Relf).+    Runs tectonic on STDIN instead of a temporary .tex file, so that it+    looks in the working directory for `\include` and `\input` like the rest+    of the engines.  Allows overriding the output directory+    args with `--pdf-engine-opt=--outdir --pdf-engine-opt="$DIR"`.++  * Allow `-o/--output` to be used with `--print-default-data-file`,+    `--print-highlighting-style`, `--print-default-template`.+    Note that `-o` must occur BEFORE the `--print*` command on the command+    line (this is documented, #5357).++  * LaTeX reader:++    + Support `\underline`, `\ul`, `\uline` (#5359, Paul+      Tilley).  These are parsed as a Span with class `underline`, as+      with other readers.+    + Ensure that `\Footcite` and `\Footcites` get put in a note.++  * ipynb reader:++    + Remove sensitivity to `raw_html`, `raw_tex` extensions.+      We now include every output format. Pruning is handled by+      `--ipynb-output`.+    + Better handling of cell metadata.  We now include even complex cell+      metadata in the Div's attributes (as JSON, in complex cases, or+      as plain strings in simple cases).++  * ipynb writer:++    + Recurse into native divs for output cell data (#5354).+    + Render cell metadata fields from div attributes.++  * Docx writer: avoid extra copy of abstractNum and num elements+    in numbering.xml.  This caused pandoc-produced docx files to+    be uneditable using Word Online (#5358).++  * Markdown writer: improve handling of raw blocks/inline.+    We now emit raw content using `raw_attribute` when no more+    direct method is available.  Use of `raw_attribute` can be+    forced by disabling `raw_html` and `raw_tex`.++  * LaTeX writer: Add classes for frontmatter support (#5353, Andrew Dunning)+    and remove frontmatter from `scrreprt`.++  * LaTeX template:++    + Improve readability (#5363, Andrew Dunning).+    + Robust section numbering removal (#5351, Andrew Dunning).+      Ensures that section numbering does not reappear with custom+      section levels.  See <https://tex.stackexchange.com/questions/473653/>.+    + Better handling of front/main/backmatter (#5348).+      In pandoc 2.7 we assumed that every class with chapters would accept+      `\frontmatter`, `\mainmatter`, and `\backmatter`.  This is not so (e.g.+      report does not).  So pandoc 2.7 breaks on report class by including an+      unsupported command.  Instead of the `book-class` variable, we use two+      variables, `has-chapters` and `has-frontmatter`, and set these+      intelligently in the writer.++  * Text.Pandoc.Shared: Improve `filterIpynbOutput`.  Ensure that+    images are prioritized over text. `best` should include everything+    for ipynb.++  * Tests.Old: specify `--data-dir=../data` to ensure tests can find+    data files even if they haven't been installed.  Remove old+    `pandoc_datadir` environment variable, which hasn't done anything for a+    long time.++  * MANUAL.txt: Add recommendation to use `raw_attribute` with ipynb (#5354).++  * Use cmark-gfm-hs 0.1.8 (note that 0.1.7 is buggy).++  * Use latest pandoc-citeproc, texmath.++ pandoc (2.7)    * Use XDG data directory for user data directory (#3582). Instead of@@ -171,13 +247,14 @@   * LaTeX template:      + Support the `subject` metadata variable (#5289, Pascal Wagler).-    + Add \frontmatter, \mainmatter, \backmatter for book classes (#5306).+    + Add `\frontmatter`, `\mainmatter`, `\backmatter`+      for book classes (#5306).    * epub3 template: Add titlepage class to section (#5269).    * HTML5 template: Add ARIA role `doc-toc` for table of contents (#4213). -  * Make --metadata-file use pandoc-markdown (#5279, #5272, Mauro Bieg).+  * Make `--metadata-file` use selected extensions (#5279, #5272, Mauro Bieg).    * Text.Pandoc.Shared: 
data/bash_completion.tpl view
@@ -34,7 +34,7 @@              return 0              ;;          --pdf-engine)-             COMPREPLY=( $(compgen -W "pdflatex lualatex xelatex latexmk wkhtmltopdf weasyprint prince context pdfroff" -- ${cur}) )+             COMPREPLY=( $(compgen -W "pdflatex lualatex xelatex latexmk tectonic wkhtmltopdf weasyprint prince context pdfroff" -- ${cur}) )              return 0              ;;          --print-default-data-file)
data/templates/default.latex view
@@ -1,4 +1,5 @@-\PassOptionsToPackage{unicode=true$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} % options for packages loaded elsewhere+% Options for packages loaded elsewhere+\PassOptionsToPackage{unicode=true$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} \PassOptionsToPackage{hyphens}{url} $if(colorlinks)$ \PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor}@@ -46,7 +47,7 @@ $for(beameroption)$ \setbeameroption{$beameroption$} $endfor$-% Prevent slide breaks in the middle of a paragraph:+% Prevent slide breaks in the middle of a paragraph \widowpenalties 1 10000 \raggedbottom $if(section-titles)$@@ -173,7 +174,7 @@ \useoutertheme{$outertheme$} $endif$ $endif$-% use upquote if available, for straight quotes in verbatim environments+% Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available   \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}@@ -218,10 +219,10 @@   citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,   urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, $else$-  pdfborder={0 0 0},+  hidelinks, $endif$-  breaklinks=true}-\urlstyle{same}  % don't use monospace font for urls+}+\urlstyle{same} % disable monospaced font for URLs $if(verbatim-in-note)$ \VerbatimFootnotes % allows verbatim text in footnotes $endif$@@ -247,7 +248,7 @@ \usepackage{longtable,booktabs} $if(beamer)$ \usepackage{caption}-% These lines are needed to make table captions work with longtable:+% Make caption package work with longtable \makeatletter \def\fnum@table{\tablename~\thetable} \makeatother@@ -274,16 +275,16 @@ $endif$ $if(strikeout)$ \usepackage[normalem]{ulem}-% avoid problems with \sout in headers with hyperref:+% Avoid problems with \sout in headers with hyperref \pdfstringdefDisableCommands{\renewcommand{\sout}{}} $endif$-\setlength{\emergencystretch}{3em}  % prevent overfull lines+\setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{%   \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} $if(numbersections)$ \setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} $else$-\setcounter{secnumdepth}{-2}+\setcounter{secnumdepth}{-\maxdimen} % remove section numbering $endif$ $if(beamer)$ $else$@@ -304,7 +305,7 @@ \pagestyle{$pagestyle$} $endif$ -% set default figure placement to htbp+% Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother@@ -313,23 +314,23 @@ $header-includes$ $endfor$ $if(lang)$-\ifnum 0\ifxetex 1\fi=0 % if pdftex or luatex-  \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}-$if(babel-newcommands)$-  $babel-newcommands$-$endif$-\else % if xetex-  % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic)+\ifxetex+  % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)   \usepackage{polyglossia}   \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} $for(polyglossia-otherlangs)$   \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} $endfor$+\else+  \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}+$if(babel-newcommands)$+  $babel-newcommands$+$endif$ \fi $endif$ $if(dir)$ \ifxetex-  % load bidi as late as possible as it modifies e.g. graphicx+  % Load bidi as late as possible as it modifies e.g. graphicx   \usepackage{bidi} \fi \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex@@ -383,10 +384,10 @@ $endif$  \begin{document}-$if(title)$-$if(book-class)$+$if(has-frontmatter)$ \frontmatter $endif$+$if(title)$ $if(beamer)$ \frame{\titlepage} $else$@@ -430,18 +431,18 @@ $if(lof)$ \listoffigures $endif$-$if(book-class)$+$if(has-frontmatter)$ \mainmatter $endif$ $body$ -$if(book-class)$+$if(has-frontmatter)$ \backmatter $endif$ $if(natbib)$ $if(bibliography)$ $if(biblio-title)$-$if(book-class)$+$if(has-chapters)$ \renewcommand\bibname{$biblio-title$} $else$ \renewcommand\refname{$biblio-title$}
man/pandoc.1 view
@@ -1,5 +1,5 @@ .\"t-.TH PANDOC 1 "March 2, 2019" "pandoc 2.7"+.TH PANDOC 1 "March 12, 2019" "pandoc 2.7.1" .SH NAME pandoc - general markup converter .SH SYNOPSIS@@ -711,10 +711,16 @@ Print the system default template for an output \f[I]FORMAT\f[R]. (See \f[C]-t\f[R] for a list of possible \f[I]FORMAT\f[R]s.) Templates in the user data directory are ignored.+This option may be used with \f[C]-o\f[R]/\f[C]--output\f[R] to redirect+output to a file, but \f[C]-o\f[R]/\f[C]--output\f[R] must come before+\f[C]--print-default-template\f[R] on the command line. .TP .B \f[C]--print-default-data-file=\f[R]\f[I]FILE\f[R] Print a system default data file. Files in the user data directory are ignored.+This option may be used with \f[C]-o\f[R]/\f[C]--output\f[R] to redirect+output to a file, but \f[C]-o\f[R]/\f[C]--output\f[R] must come before+\f[C]--print-default-data-file\f[R] on the command line. .TP .B \f[C]--eol=crlf\f[R]|\f[C]lf\f[R]|\f[C]native\f[R] Manually specify line endings: \f[C]crlf\f[R] (Windows), \f[C]lf\f[R]@@ -797,6 +803,9 @@ Prints a JSON version of a highlighting style, which can be modified, saved with a \f[C].theme\f[R] extension, and used with \f[C]--highlight-style\f[R].+This option may be used with \f[C]-o\f[R]/\f[C]--output\f[R] to redirect+output to a file, but \f[C]-o\f[R]/\f[C]--output\f[R] must come before+\f[C]--print-highlight-style\f[R] on the command line. .TP .B \f[C]--syntax-definition=\f[R]\f[I]FILE\f[R] Instructs pandoc to load a KDE XML syntax definition file, which will be@@ -1034,7 +1043,7 @@ .PP To produce a custom \f[C]reference.docx\f[R], first get a copy of the default \f[C]reference.docx\f[R]:-\f[C]pandoc --print-default-data-file reference.docx > custom-reference.docx\f[R].+\f[C]pandoc -o custom-reference.docx --print-default-data-file reference.docx\f[R]. Then open \f[C]custom-reference.docx\f[R] in Word, modify the styles as you wish, and save the file. For best results, do not make changes to this file other than modifying@@ -1130,7 +1139,7 @@ .PP To produce a custom \f[C]reference.odt\f[R], first get a copy of the default \f[C]reference.odt\f[R]:-\f[C]pandoc --print-default-data-file reference.odt > custom-reference.odt\f[R].+\f[C]pandoc -o custom-reference.odt --print-default-data-file reference.odt\f[R]. Then open \f[C]custom-reference.odt\f[R] in LibreOffice, modify the styles as you wish, and save the file. .RE@@ -1158,7 +1167,7 @@ check.) .PP You can also modify the default \f[C]reference.pptx\f[R]: first run-\f[C]pandoc --print-default-data-file reference.pptx > custom-reference.pptx\f[R],+\f[C]pandoc -o custom-reference.pptx --print-default-data-file reference.pptx\f[R], and then modify \f[C]custom-reference.pptx\f[R] in MS PowerPoint (pandoc will use the first four layout slides, as mentioned above). .RE@@ -1269,9 +1278,9 @@ .B \f[C]--pdf-engine=\f[R]\f[I]PROGRAM\f[R] Use the specified engine when producing PDF output. Valid values are \f[C]pdflatex\f[R], \f[C]lualatex\f[R],-\f[C]xelatex\f[R], \f[C]latexmk\f[R], \f[C]wkhtmltopdf\f[R],-\f[C]weasyprint\f[R], \f[C]prince\f[R], \f[C]context\f[R], and-\f[C]pdfroff\f[R].+\f[C]xelatex\f[R], \f[C]latexmk\f[R], \f[C]tectonic\f[R],+\f[C]wkhtmltopdf\f[R], \f[C]weasyprint\f[R], \f[C]prince\f[R],+\f[C]context\f[R], and \f[C]pdfroff\f[R]. The default is \f[C]pdflatex\f[R]. If the engine is not in your PATH, the full path of the engine may be specified here.@@ -5934,6 +5943,17 @@ :::::: \f[R] .fi+.PP+If you include raw HTML or TeX in an output cell, use the [raw+attribute][Extension: \f[C]fenced_attribute\f[R]], as shown in the last+cell of the example above.+Although pandoc can process \[dq]bare\[dq] raw HTML and TeX, the result+is often interspersed raw elements and normal textual elements, and in+an output cell pandoc expects a single, connected raw block.+To avoid using raw HTML or TeX except when marked explicitly using raw+attributes, we recommend specifying the extensions+\f[C]-raw_html-raw_tex+raw_attribute\f[R] when translating between+Markdown and ipynb notebooks. .SH SYNTAX HIGHLIGHTING .PP Pandoc will automatically highlight syntax in fenced code blocks that
pandoc.cabal view
@@ -1,5 +1,5 @@ name:            pandoc-version:         2.7+version:         2.7.1 cabal-version:   2.0 build-type:      Simple license:         GPL-2@@ -11,8 +11,8 @@ stability:       alpha homepage:        https://pandoc.org category:        Text-tested-with:     GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3,-                 GHC == 8.6.1+tested-with:     GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4,+                 GHC == 8.6.3 synopsis:        Conversion between markup formats description:     Pandoc is a Haskell library for converting from one markup                  format to another, and a command-line tool that uses@@ -394,7 +394,7 @@                  deepseq >= 1.3 && < 1.5,                  JuicyPixels >= 3.1.6.1 && < 3.4,                  Glob >= 0.7 && < 0.11,-                 cmark-gfm >= 0.1.1 && < 0.2,+                 cmark-gfm >= 0.1.8 && < 0.2,                  doctemplates >= 0.2.1 && < 0.3,                  network-uri >= 2.6 && < 2.7,                  network >= 2.6,
src/Text/Pandoc/App/CommandLineOptions.hs view
@@ -85,7 +85,7 @@   return (opts{ optInputFiles = map normalizePath args })  latexEngines :: [String]-latexEngines  = ["pdflatex", "lualatex", "xelatex", "latexmk"]+latexEngines  = ["pdflatex", "lualatex", "xelatex", "latexmk", "tectonic"]  htmlEngines :: [String] htmlEngines  = ["wkhtmltopdf", "weasyprint", "prince"]@@ -786,7 +786,10 @@      , Option "D" ["print-default-template"]                  (ReqArg-                  (\arg _ -> do+                  (\arg opt -> do+                     let write = case optOutputFile opt of+                                        Just f  -> UTF8.writeFile f+                                        Nothing -> UTF8.hPutStr stdout                      templ <- runIO $ do                                 setUserDataDir Nothing                                 getDefaultTemplate arg@@ -794,7 +797,7 @@                           Right "" -> -- e.g. for docx, odt, json:                             E.throwIO $ PandocCouldNotFindDataFileError                                ("templates/default." ++ arg)-                          Right t -> UTF8.hPutStr stdout t+                          Right t -> write t                           Left e  -> E.throwIO e                      exitSuccess)                   "FORMAT")@@ -802,18 +805,24 @@      , Option "" ["print-default-data-file"]                  (ReqArg-                  (\arg _ -> do+                  (\arg opt -> do+                     let write = case optOutputFile opt of+                                        Just f  -> BS.writeFile f+                                        Nothing -> BS.hPutStr stdout                      runIOorExplode $-                       readDefaultDataFile arg >>= liftIO . BS.hPutStr stdout+                       readDefaultDataFile arg >>= liftIO . write                      exitSuccess)                   "FILE")                   "" -- "Print default data file"      , Option "" ["print-highlight-style"]                  (ReqArg-                  (\arg _ -> do+                  (\arg opt -> do+                     let write = case optOutputFile opt of+                                        Just f  -> B.writeFile f+                                        Nothing -> B.putStr                      sty <- fromMaybe pygments <$> lookupHighlightStyle arg-                     B.putStr $ encodePretty'+                     write $ encodePretty'                        defConfig{confIndent = Spaces 4                                 ,confCompare = keyOrder                                   (map T.pack
src/Text/Pandoc/PDF.hs view
@@ -70,7 +70,7 @@         -> WriterOptions       -- ^ options         -> Pandoc              -- ^ document         -> PandocIO (Either ByteString ByteString)-makePDF program pdfargs writer opts doc = do+makePDF program pdfargs writer opts doc =   case takeBaseName program of     "wkhtmltopdf" -> makeWithWkhtmltopdf program pdfargs writer opts doc     prog | prog `elem` ["weasyprint", "prince"] -> do@@ -107,6 +107,7 @@           source <- writer opts doc'           res <- case baseProg of             "context" -> context2pdf verbosity program pdfargs tmpdir source+            "tectonic" -> tectonic2pdf verbosity program pdfargs tmpdir source             prog | prog `elem` ["pdflatex", "lualatex", "xelatex", "latexmk"]                 -> tex2pdf verbosity program pdfargs tmpdir source             _ -> return $ Left $ UTF8.fromStringLazy@@ -200,6 +201,21 @@     mime = getMimeType fname     doNothing = return (Right fname) +tectonic2pdf :: Verbosity                       -- ^ Verbosity level+             -> String                          -- ^ tex program+             -> [String]                        -- ^ Arguments to the latex-engine+             -> FilePath                        -- ^ temp directory for output+             -> Text                            -- ^ tex source+             -> PandocIO (Either ByteString ByteString)+tectonic2pdf verbosity program args tmpDir source = do+  (exit, log', mbPdf) <- runTectonic verbosity program args tmpDir source+  case (exit, mbPdf) of+       (ExitFailure _, _)      -> return $ Left $ extractMsg log'+       (ExitSuccess, Nothing)  -> return $ Left ""+       (ExitSuccess, Just pdf) -> do+          missingCharacterWarnings verbosity log'+          return $ Right pdf+ tex2pdf :: Verbosity                       -- ^ Verbosity level         -> String                          -- ^ tex program         -> [String]                        -- ^ Arguments to the latex-engine@@ -207,12 +223,9 @@         -> Text                            -- ^ tex source         -> PandocIO (Either ByteString ByteString) tex2pdf verbosity program args tmpDir source = do-  let numruns =-        if takeBaseName program == "latexmk"-           then 1-           else if "\\tableofcontents" `T.isInfixOf` source-                   then 3  -- to get page numbers-                   else 2  -- 1 run won't give you PDF bookmarks+  let numruns | takeBaseName program == "latexmk"        = 1+              | "\\tableofcontents" `T.isInfixOf` source = 3  -- to get page numbers+              | otherwise                                = 2  -- 1 run won't give you PDF bookmarks   (exit, log', mbPdf) <- runTeXProgram verbosity program args 1 numruns                           tmpDir source   case (exit, mbPdf) of@@ -262,6 +275,59 @@  -- running tex programs +runTectonic :: Verbosity -> String -> [String] -> FilePath+              -> Text -> PandocIO (ExitCode, ByteString, Maybe ByteString)+runTectonic verbosity program args' tmpDir' source = do+    let getOutDir acc (a:b:xs) = if a `elem` ["-o", "--outdir"]+                                    then (reverse acc ++ xs, Just b)+                                    else getOutDir (b:a:acc) xs+        getOutDir acc xs = (reverse acc ++ xs, Nothing)+        (args, outDir) = getOutDir [] args'+        tmpDir = fromMaybe tmpDir' outDir+    liftIO $ createDirectoryIfMissing True tmpDir+    -- run tectonic on stdin so it reads \include commands from $PWD instead of a temp directory+    let sourceBL = BL.fromStrict $ UTF8.fromText source+    let programArgs = ["--outdir", tmpDir] ++ args ++ ["-"]+    env <- liftIO getEnvironment+    when (verbosity >= INFO) $ liftIO $+      showVerboseInfo (Just tmpDir) program programArgs env (UTF8.toStringLazy sourceBL)+    (exit, out) <- liftIO $ E.catch+      (pipeProcess (Just env) program programArgs sourceBL)+      (\(e :: IOError) -> if isDoesNotExistError e+                             then E.throwIO $ PandocPDFProgramNotFoundError+                                   program+                             else E.throwIO e)+    when (verbosity >= INFO) $ liftIO $ do+      putStrLn "[makePDF] Running"+      BL.hPutStr stdout out+      putStr "\n"+    let pdfFile = tmpDir </> "texput.pdf"+    (_, pdf) <- getResultingPDF Nothing pdfFile+    return (exit, out, pdf)++-- read a pdf that has been written to a temporary directory, and optionally read+-- logs+getResultingPDF :: Maybe String -> String -> PandocIO (Maybe ByteString, Maybe ByteString)+getResultingPDF logFile pdfFile = do+    pdfExists <- liftIO $ doesFileExist pdfFile+    pdf <- if pdfExists+              -- We read PDF as a strict bytestring to make sure that the+              -- temp directory is removed on Windows.+              -- See https://github.com/jgm/pandoc/issues/1192.+              then (Just . BL.fromChunks . (:[])) `fmap`+                   liftIO (BS.readFile pdfFile)+              else return Nothing+    -- Note that some things like Missing character warnings+    -- appear in the log but not on stderr, so we prefer the log:+    log' <- case logFile of+              Just logFile' -> do+                logExists <- liftIO $ doesFileExist logFile'+                if logExists+                  then liftIO $ Just <$> BL.readFile logFile'+                  else return Nothing+              Nothing -> return Nothing+    return (log', pdf)+ -- Run a TeX program on an input bytestring and return (exit code, -- contents of stdout, contents of produced PDF if any).  Rerun -- a fixed number of times to resolve references.@@ -276,12 +342,11 @@     let file = tmpDir </> "input.tex"     exists <- liftIO $ doesFileExist file     unless exists $ liftIO $ BS.writeFile file $ UTF8.fromText source-    let programArgs =-          if takeBaseName program == "latexmk"-             then ["-interaction=batchmode", "-halt-on-error", "-pdf",-                   "-quiet", "-outdir=" ++ tmpDir] ++ args ++ [file]-             else ["-halt-on-error", "-interaction", "nonstopmode",-                   "-output-directory", tmpDir] ++ args ++ [file]+    let isLatexMk = takeBaseName program == "latexmk"+        programArgs | isLatexMk = ["-interaction=batchmode", "-halt-on-error", "-pdf",+                                   "-quiet", "-outdir=" ++ tmpDir] ++ args ++ [file]+                    | otherwise = ["-halt-on-error", "-interaction", "nonstopmode",+                                   "-output-directory", tmpDir] ++ args ++ [file]     env' <- liftIO getEnvironment     let sep = [searchPathSeparator]     let texinputs = maybe (tmpDir ++ sep) ((tmpDir ++ sep) ++)@@ -306,23 +371,10 @@     if runNumber < numRuns        then runTeXProgram verbosity program args (runNumber + 1) numRuns tmpDir source        else do-         let pdfFile = replaceDirectory (replaceExtension file ".pdf") tmpDir-         pdfExists <- liftIO $ doesFileExist pdfFile-         pdf <- if pdfExists-                   -- We read PDF as a strict bytestring to make sure that the-                   -- temp directory is removed on Windows.-                   -- See https://github.com/jgm/pandoc/issues/1192.-                   then (Just . BL.fromChunks . (:[])) `fmap`-                        liftIO (BS.readFile pdfFile)-                   else return Nothing-         -- Note that some things like Missing character warnings-         -- appear in the log but not on stderr, so we prefer the log:          let logFile = replaceExtension file ".log"-         logExists <- liftIO $ doesFileExist logFile-         log' <- if logExists-                    then liftIO $ BL.readFile logFile-                    else return out-         return (exit, log', pdf)+         let pdfFile = replaceExtension file ".pdf"+         (log', pdf) <- getResultingPDF (Just logFile) pdfFile+         return (exit, fromMaybe out log', pdf)  generic2pdf :: Verbosity             -> String
src/Text/Pandoc/Readers/Ipynb.hs view
@@ -18,6 +18,7 @@ module Text.Pandoc.Readers.Ipynb ( readIpynb ) where import Prelude+import Data.Char (isDigit) import Data.List (isPrefixOf) import Data.Maybe (fromMaybe) import Data.Digest.Pure.SHA (sha1, showDigest)@@ -39,6 +40,7 @@ import Data.Aeson as Aeson import Control.Monad.Except (throwError) import Text.Pandoc.Readers.Markdown (readMarkdown)+import qualified Text.Pandoc.UTF8 as UTF8  readIpynb :: PandocMonad m => ReaderOptions -> Text -> m Pandoc readIpynb opts t = do@@ -99,7 +101,7 @@       return $ B.divWith ("",["cell","raw"],kvs) $ B.rawBlock format'              $ T.unpack source     Ipynb.Code{ codeOutputs = outputs, codeExecutionCount = ec } -> do-      outputBlocks <- mconcat <$> mapM (outputToBlock opts) outputs+      outputBlocks <- mconcat <$> mapM outputToBlock outputs       let kvs' = maybe kvs (\x -> ("execution_count", show x):kvs) ec       return $ B.divWith ("",["cell","code"],kvs') $         B.codeBlockWith ("",[lang],[]) (T.unpack source)@@ -124,23 +126,23 @@       insertMedia fp (Just $ T.unpack mimeType) (encode v)     [] -> report $ CouldNotFetchResource fp "no attachment" -outputToBlock :: PandocMonad m => ReaderOptions -> Output a -> m B.Blocks-outputToBlock _ Stream{ streamName = sName,-                        streamText = Source text } = do+outputToBlock :: PandocMonad m => Output a -> m B.Blocks+outputToBlock Stream{ streamName = sName,+                      streamText = Source text } = do   return $ B.divWith ("",["output","stream",T.unpack sName],[])          $ B.codeBlock $ T.unpack . mconcat $ text-outputToBlock opts DisplayData{ displayData = data',-                                 displayMetadata = metadata' } =+outputToBlock DisplayData{ displayData = data',+                            displayMetadata = metadata' } =   B.divWith ("",["output", "display_data"],[]) <$>-    handleData opts metadata' data'-outputToBlock opts ExecuteResult{ executeCount = ec,-                                   executeData = data',-                                   executeMetadata = metadata' } =+    handleData metadata' data'+outputToBlock ExecuteResult{ executeCount = ec,+                              executeData = data',+                              executeMetadata = metadata' } =   B.divWith ("",["output", "execute_result"],[("execution_count",show ec)])-    <$> handleData opts metadata' data'-outputToBlock _ Err{ errName = ename,-                     errValue = evalue,-                     errTraceback = traceback } = do+    <$> handleData metadata' data'+outputToBlock Err{ errName = ename,+                   errValue = evalue,+                   errTraceback = traceback } = do   return $ B.divWith ("",["output","error"],                          [("ename",T.unpack ename),                           ("evalue",T.unpack evalue)])@@ -149,14 +151,12 @@ -- We want to display the richest output possible given -- the output format. handleData :: PandocMonad m-           => ReaderOptions -> JSONMeta -> MimeBundle -> m B.Blocks-handleData opts metadata (MimeBundle mb) =+           => JSONMeta -> MimeBundle -> m B.Blocks+handleData metadata (MimeBundle mb) =   mconcat <$> mapM dataBlock (M.toList mb)    where -    exts = readerExtensions opts-     dataBlock :: PandocMonad m => (MimeType, MimeData) -> m B.Blocks     dataBlock (mt, BinaryData bs)      | "image/" `T.isPrefixOf` mt@@ -182,14 +182,10 @@      | otherwise = return mempty      dataBlock ("text/html", TextualData t)-      | extensionEnabled Ext_raw_html exts-        = return $ B.rawBlock "html" $ T.unpack t-      | otherwise = return mempty+      = return $ B.rawBlock "html" $ T.unpack t      dataBlock ("text/latex", TextualData t)-      | extensionEnabled Ext_raw_tex exts-        = return $ B.rawBlock "latex" $ T.unpack t-      | otherwise = return mempty+      = return $ B.rawBlock "latex" $ T.unpack t      dataBlock ("text/plain", TextualData t) =       return $ B.codeBlock $ T.unpack t@@ -217,10 +213,11 @@     valueToMetaValue Aeson.Null = MetaString ""  jsonMetaToPairs :: JSONMeta -> [(String, String)]-jsonMetaToPairs = M.toList . M.mapMaybe-     (\case-        MetaString s -> Just s-        MetaBool True -> Just "true"-        MetaBool False -> Just "false"-        -- for now we skip complex cell metadata:-        _ -> Nothing) . jsonMetaToMeta+jsonMetaToPairs = M.toList . M.mapKeys T.unpack . M.map+  (\case+      String t+        | not (T.all isDigit t)+        , t /= "true"+        , t /= "false"+                 -> T.unpack t+      x          -> UTF8.toStringLazy $ Aeson.encode x)
src/Text/Pandoc/Readers/LaTeX.hs view
@@ -866,6 +866,7 @@   , ("slash", lit "/")   , ("textbf", extractSpaces strong <$> tok)   , ("textnormal", extractSpaces (spanWith ("",["nodecor"],[])) <$> tok)+  , ("underline", underlineSpan <$> tok)   , ("ldots", lit "…")   , ("vdots", lit "\8942")   , ("dots", lit "…")@@ -1041,7 +1042,7 @@   , ("footcitetexts", inNote <$> citation "footcitetexts" NormalCitation True)   , ("Autocite", citation "Autocite" NormalCitation False)   , ("Smartcite", citation "Smartcite" NormalCitation False)-  , ("Footcite", citation "Footcite" NormalCitation False)+  , ("Footcite", inNote <$> citation "Footcite" NormalCitation False)   , ("Parencite", citation "Parencite" NormalCitation False)   , ("Supercite", citation "Supercite" NormalCitation False)   , ("Footcitetext", inNote <$> citation "Footcitetext" NormalCitation False)@@ -1054,7 +1055,7 @@   , ("Textcites", citation "Textcites" AuthorInText True)   , ("Cites", citation "Cites" NormalCitation True)   , ("Autocites", citation "Autocites" NormalCitation True)-  , ("Footcites", citation "Footcites" NormalCitation True)+  , ("Footcites", inNote <$> citation "Footcites" NormalCitation True)   , ("Parencites", citation "Parencites" NormalCitation True)   , ("Supercites", citation "Supercites" NormalCitation True)   , ("Footcitetexts", inNote <$> citation "Footcitetexts" NormalCitation True)@@ -1122,6 +1123,10 @@   , ("foreignlanguage", foreignlanguage)   -- include   , ("input", include "input")+  -- soul package+  , ("ul", underlineSpan <$> tok)+  -- ulem package+  , ("uline", underlineSpan <$> tok)   -- plain tex stuff that should just be passed through as raw tex   , ("ifdim", ifdim)   ]
src/Text/Pandoc/Shared.hs view
@@ -105,12 +105,12 @@                   SpacingCombiningMark, EnclosingMark, ConnectorPunctuation)) import Data.Data (Data, Typeable) import Data.List (find, intercalate, intersperse, stripPrefix, sortBy)+import Data.Ord (comparing) import qualified Data.Map as M import Data.Maybe (mapMaybe) import Data.Sequence (ViewL (..), ViewR (..), viewl, viewr) import qualified Data.Set as Set import qualified Data.Text as T-import Data.Ord (comparing) import Data.Version (showVersion) import Network.URI (URI (uriScheme), escapeURIString, parseURI) import Paths_pandoc (version)@@ -679,9 +679,13 @@   where go (Div (ident, ("output":os), kvs) bs) =           case mode of             Nothing  -> Div (ident, ("output":os), kvs) []-            Just fmt -> Div (ident, ("output":os), kvs) $-              take 1 $ sortBy (comparing rank) bs-                where+            -- "best" for ipynb includes all formats:+            Just fmt+              | fmt == Format "ipynb"+                          -> Div (ident, ("output":os), kvs) bs+              | otherwise -> Div (ident, ("output":os), kvs) $+                              take 1 $ sortBy (comparing rank) bs+                 where                   rank (RawBlock (Format "html") _)                     | fmt == Format "html" = (1 :: Int)                     | fmt == Format "markdown" = 2@@ -693,6 +697,7 @@                   rank (RawBlock f _)                     | fmt == f = 1                     | otherwise = 3+                  rank (Para [Image{}]) = 1                   rank _ = 2         go x = x 
src/Text/Pandoc/Writers/Docx.hs view
@@ -465,7 +465,15 @@   let numpath = "word/numbering.xml"   numbering <- parseXml refArchive distArchive numpath   newNumElts <- mkNumbering (stLists st)-  let allElts = onlyElems (elContent numbering) ++ newNumElts+  let pandocAdded e =+       case findAttrBy ((== "abstractNumId") . qName) e >>= safeRead of+         Just numid -> numid >= (990 :: Int)+         Nothing    ->+           case findAttrBy ((== "numId") . qName) e >>= safeRead of+             Just numid -> numid >= (1000 :: Int)+             Nothing    -> False+  let oldElts = filter (not . pandocAdded) $ onlyElems (elContent numbering)+  let allElts = oldElts ++ newNumElts   let numEntry = toEntry numpath epochtime $ renderXml numbering{ elContent =                        -- we want all the abstractNums first, then the nums,                        -- otherwise things break:
src/Text/Pandoc/Writers/Ipynb.hs view
@@ -208,14 +208,14 @@        return (M.insert "text/html" (TextualData (T.pack raw)) mmap, meta)     go (mmap, meta) (RawBlock (Format "latex") raw) =        return (M.insert "text/latex" (TextualData (T.pack raw)) mmap, meta)+    go (mmap, meta) (Div _ bs') = foldM go (mmap, meta) bs'     go (mmap, meta) b = (mmap, meta) <$ report (BlockNotRendered b)  pairsToJSONMeta :: [(String, String)] -> JSONMeta pairsToJSONMeta kvs =-  M.fromList [(T.pack k, case v of-                           "true"  -> Bool True-                           "false" -> Bool False-                           _       -> case safeRead v of-                                        Just n -> Number n-                                        _      -> String (T.pack v))-             | (k,v) <- kvs , k /= "execution_count" ]+  M.fromList [(T.pack k, case Aeson.decode (UTF8.fromStringLazy v) of+                           Just val -> val+                           Nothing  -> String (T.pack v))+             | (k,v) <- kvs+             , k /= "execution_count"+             ]
src/Text/Pandoc/Writers/LaTeX.hs view
@@ -63,7 +63,7 @@               , stUrl           :: Bool          -- true if document has visible URL link               , stGraphics      :: Bool          -- true if document contains images               , stLHS           :: Bool          -- true if document has literate haskell code-              , stBook          :: Bool          -- true if document uses book or memoir class+              , stHasChapters   :: Bool          -- true if document has chapters               , stCsquotes      :: Bool          -- true if document uses csquotes               , stHighlighting  :: Bool          -- true if document has highlighted code               , stIncremental   :: Bool          -- true if beamer lists should be displayed bit by bit@@ -88,10 +88,10 @@                 , stUrl = False                 , stGraphics = False                 , stLHS = False-                , stBook = case writerTopLevelDivision options of-                                TopLevelPart    -> True-                                TopLevelChapter -> True-                                _               -> False+                , stHasChapters = case writerTopLevelDivision options of+                                    TopLevelPart    -> True+                                    TopLevelChapter -> True+                                    _               -> False                 , stCsquotes = False                 , stHighlighting = False                 , stIncremental = writerIncremental options@@ -128,7 +128,6 @@       isInternalLink _                     = []   modify $ \s -> s{ stInternalLinks = query isInternalLink blocks' }   let template = fromMaybe "" $ writerTemplate options-  -- set stBook depending on documentclass   let colwidth = if writerWrapText options == WrapAuto                     then Just $ writerColumns options                     else Nothing@@ -138,17 +137,25 @@               (fmap render' . blockListToLaTeX)               (fmap render' . inlineListToLaTeX)               meta-  let bookClasses = ["memoir","book","report","scrreprt","scrbook"]-  let documentClass = case P.parse pDocumentClass "template" template of-                              Right r -> r-                              Left _  -> ""-  case lookup "documentclass" (writerVariables options) `mplus`-        fmap stringify (lookupMeta "documentclass" meta) of-         Just x  | x `elem` bookClasses -> modify $ \s -> s{stBook = True}-                 | otherwise            -> return ()-         Nothing | documentClass `elem` bookClasses-                                        -> modify $ \s -> s{stBook = True}-                 | otherwise               -> return ()+  let chaptersClasses = ["memoir","book","report","scrreprt","scrbook","extreport","extbook","tufte-book"]+  let frontmatterClasses = ["memoir","book","scrbook","extbook","tufte-book"]+  -- these have \frontmatter etc.+  beamer <- gets stBeamer+  let documentClass =+        case lookup "documentclass" (writerVariables options) `mplus`+              fmap stringify (lookupMeta "documentclass" meta) of+                 Just x -> x+                 Nothing ->+                  case P.parse pDocumentClass "template" template of+                     Right r -> r+                     Left _+                      | beamer    -> "beamer"+                      | otherwise -> case writerTopLevelDivision options of+                                       TopLevelPart    -> "book"+                                       TopLevelChapter -> "book"+                                       _               -> "article"+  when (documentClass `elem` chaptersClasses) $+     modify $ \s -> s{ stHasChapters = True }   -- check for \usepackage...{csquotes}; if present, we'll use   -- \enquote{...} for smart quotes:   let headerIncludesField :: FromJSON a => Maybe a@@ -163,7 +170,6 @@                                else case reverse blocks' of                                  Header 1 _ il : _ -> (init blocks', il)                                  _                 -> (blocks', [])-  beamer <- gets stBeamer   blocks''' <- if beamer                   then toSlides blocks''                   else return blocks''@@ -197,17 +203,13 @@    let context  =  defField "toc" (writerTableOfContents options) $                   defField "toc-depth" (show (writerTOCDepth options --                                              if stBook st+                                              if stHasChapters st                                                  then 1                                                  else 0)) $                   defField "body" main $                   defField "title-meta" titleMeta $                   defField "author-meta" (intercalate "; " authorsMeta) $-                  defField "documentclass" (if beamer-                                               then ("beamer" :: String)-                                               else if stBook st-                                                    then "book"-                                                    else "article") $+                  defField "documentclass" documentClass $                   defField "verbatim-in-note" (stVerbInNote st) $                   defField "tables" (stTable st) $                   defField "strikeout" (stStrikeout st) $@@ -215,7 +217,8 @@                   defField "numbersections" (writerNumberSections options) $                   defField "lhs" (stLHS st) $                   defField "graphics" (stGraphics st) $-                  defField "book-class" (stBook st) $+                  defField "has-chapters" (stHasChapters st) $+                  defField "has-frontmatter" (documentClass `elem` frontmatterClasses) $                   defField "listings" (writerListings options || stLHS st) $                   defField "beamer" beamer $                   (if stHighlighting st@@ -991,7 +994,7 @@                     else braces (text "\\texorpdfstring"                          <> braces txt                          <> braces (text plain))-  book <- gets stBook+  book <- gets stHasChapters   opts <- gets stOptions   let topLevelDivision = if book && writerTopLevelDivision opts == TopLevelDefault                          then TopLevelChapter
src/Text/Pandoc/Writers/Markdown.hs view
@@ -444,30 +444,35 @@     mdLines <- mapM (inlineListToMarkdown opts) lns     return $ (vcat $ map (hang 2 (text "| ")) mdLines) <> blankline   else blockToMarkdown opts $ linesToPara lns-blockToMarkdown' opts b@(RawBlock f str)-  | f `elem` ["markdown", "markdown_github", "markdown_phpextra",-              "markdown_mmd", "markdown_strict"]-              = return $ text str <> text "\n"-  | f `elem` ["html", "html5", "html4"] && isEnabled Ext_raw_html opts = do-    plain <- asks envPlain-    return $ if plain-                then empty-                else if isEnabled Ext_markdown_attribute opts-                        then text (addMarkdownAttribute str) <> text "\n"-                        else text str <> text "\n"-  | f `elem` ["latex", "tex"] && isEnabled Ext_raw_tex opts = do-    plain <- asks envPlain-    return $ if plain-                then empty-                else text str <> text "\n"-  | f == "plain" = do-    plain <- asks envPlain-    return $ if plain-                then text str <> text "\n"-                else empty-  | otherwise = do-      report $ BlockNotRendered b-      return empty+blockToMarkdown' opts b@(RawBlock f str) = do+  plain <- asks envPlain+  let Format fmt = f+  let rawAttribBlock = return $+         (text "```{=" <> text fmt <> "}") $$+         text str $$+         (text "```" <> text "\n")+  let renderEmpty = mempty <$ report (BlockNotRendered b)+  case () of+    _ | plain -> renderEmpty+      | f `elem` ["markdown", "markdown_github", "markdown_phpextra",+                  "markdown_mmd", "markdown_strict"] ->+            return $ text str <> text "\n"+      | f `elem` ["html", "html5", "html4"] ->+            case () of+              _ | isEnabled Ext_markdown_attribute opts -> return $+                    text (addMarkdownAttribute str) <> text "\n"+                | isEnabled Ext_raw_html opts -> return $+                    text str <> text "\n"+                | isEnabled Ext_raw_attribute opts -> rawAttribBlock+                | otherwise -> renderEmpty+      | f `elem` ["latex", "tex"] ->+            case () of+              _ | isEnabled Ext_raw_tex opts -> return $+                    text str <> text "\n"+                | isEnabled Ext_raw_attribute opts -> rawAttribBlock+                | otherwise -> renderEmpty+      | isEnabled Ext_raw_attribute opts -> rawAttribBlock+      | otherwise -> renderEmpty blockToMarkdown' opts HorizontalRule = do   return $ blankline <> text (replicate (writerColumns opts) '-') <> blankline blockToMarkdown' opts (Header level attr inlines) = do@@ -1115,17 +1120,33 @@         | otherwise -> (\x -> cr <> x <> cr) `fmap`             (texMathToInlines DisplayMath str >>= inlineListToMarkdown opts) inlineToMarkdown opts il@(RawInline f str) = do+  let tickGroups = filter (\s -> '`' `elem` s) $ group str+  let numticks   = if null tickGroups+                     then 1+                     else 1 + maximum (map length tickGroups)   plain <- asks envPlain-  if (plain && f == "plain") || (not plain &&-     ( f `elem` ["markdown", "markdown_github", "markdown_phpextra",-                 "markdown_mmd", "markdown_strict"] ||-       (isEnabled Ext_raw_tex opts && (f == "latex" || f == "tex")) ||-       (isEnabled Ext_raw_html opts && f `elem` ["html", "html4", "html5"])-     ))-    then return $ text str-    else do-      report $ InlineNotRendered il-      return empty+  let Format fmt = f+  let rawAttribInline = return $+         text (replicate numticks '`') <> text str <>+         text (replicate numticks '`') <> text "{=" <> text fmt <> text "}"+  let renderEmpty = mempty <$ report (InlineNotRendered il)+  case () of+    _ | plain -> renderEmpty+      | f `elem` ["markdown", "markdown_github", "markdown_phpextra",+                  "markdown_mmd", "markdown_strict"] ->+            return $ text str+      | f `elem` ["html", "html5", "html4"] ->+            case () of+              _ | isEnabled Ext_raw_html opts -> return $ text str+                | isEnabled Ext_raw_attribute opts -> rawAttribInline+                | otherwise -> renderEmpty+      | f `elem` ["latex", "tex"] ->+            case () of+              _ | isEnabled Ext_raw_tex opts -> return $ text str+                | isEnabled Ext_raw_attribute opts -> rawAttribInline+                | otherwise -> renderEmpty+      | isEnabled Ext_raw_attribute opts -> rawAttribInline+      | otherwise -> renderEmpty inlineToMarkdown opts (LineBreak) = do   plain <- asks envPlain   if plain || isEnabled Ext_hard_line_breaks opts
stack.yaml view
@@ -11,11 +11,12 @@ packages: - '.' extra-deps:-- pandoc-citeproc-0.16.1.1+- pandoc-citeproc-0.16.1.3 - skylighting-0.7.7 - skylighting-core-0.7.7 - ipynb-0.1-- texmath-0.11.2.1+- texmath-0.11.2.2+- cmark-gfm-0.1.8 ghc-options:    "$locals": -fhide-source-paths -XNoImplicitPrelude resolver: lts-13.9
test/Tests/Old.hs view
@@ -192,9 +192,11 @@       "org-select-tags.org" "org-select-tags.native"     ]   , testGroup "ipynb"-    [ test' "reader" ["-f", "ipynb", "-t", "native", "-s"]+    [ test' "reader" ["-f", "ipynb-raw_html-raw_tex+raw_attribute",+                      "-t", "native", "-s"]       "ipynb/simple.ipynb" "ipynb/simple.out.native"-    , test' "writer" ["-f", "native", "-t", "ipynb", "-s"]+    , test' "writer" ["-f", "native", "-t",+                      "ipynb-raw_html-raw_tex+raw_attribute", "-s"]       "ipynb/simple.in.native" "ipynb/simple.ipynb"     ]   ]@@ -288,8 +290,7 @@                                    Just d   -> [("DYLD_LIBRARY_PATH", d),                                                 ("LD_LIBRARY_PATH", d)]               let env = dynlibEnv ++-                        [("TMP","."),("LANG","en_US.UTF-8"),("HOME", "./"),-                         ("pandoc_datadir","..")]+                        [("TMP","."),("LANG","en_US.UTF-8"),("HOME", "./")]               (ec, out) <- pipeProcess (Just env) pandocPath options mempty               if ec == ExitSuccess                  then return $ filter (/='\r') . normalizer@@ -297,7 +298,7 @@                    -- filter \r so the tests will work on Windows machines                  else fail $ "Pandoc failed with error code " ++ show ec         updateGolden = UTF8.writeFile norm-        options = ["--quiet"] ++ [inp] ++ opts+        options = ["--data-dir=../data","--quiet"] ++ [inp] ++ opts  compareValues :: FilePath -> [String] -> String -> String -> IO (Maybe String) compareValues norm options expected actual = do
test/docx/golden/block_quotes.docx view

binary file changed (10147 → 10022 bytes)

test/docx/golden/codeblock.docx view

binary file changed (10007 → 9882 bytes)

test/docx/golden/comments.docx view

binary file changed (10328 → 10203 bytes)

test/docx/golden/custom_style_no_reference.docx view

binary file changed (10092 → 9967 bytes)

test/docx/golden/definition_list.docx view

binary file changed (9986 → 9861 bytes)

test/docx/golden/document-properties-short-desc.docx view

binary file changed (9902 → 9872 bytes)

test/docx/golden/document-properties.docx view

binary file changed (10388 → 10358 bytes)

test/docx/golden/headers.docx view

binary file changed (10134 → 10009 bytes)

test/docx/golden/image.docx view

binary file changed (26810 → 26685 bytes)

test/docx/golden/inline_code.docx view

binary file changed (9929 → 9804 bytes)

test/docx/golden/inline_formatting.docx view

binary file changed (10115 → 9990 bytes)

test/docx/golden/inline_images.docx view

binary file changed (26865 → 26740 bytes)

binary file changed (10150 → 10025 bytes)

test/docx/golden/links.docx view

binary file changed (10329 → 10204 bytes)

test/docx/golden/lists.docx view

binary file changed (10400 → 10281 bytes)

test/docx/golden/lists_continuing.docx view

binary file changed (10199 → 10078 bytes)

test/docx/golden/lists_restarting.docx view

binary file changed (10199 → 10077 bytes)

test/docx/golden/nested_anchors_in_header.docx view

binary file changed (10196 → 10166 bytes)

test/docx/golden/notes.docx view

binary file changed (10100 → 9975 bytes)

test/docx/golden/table_one_row.docx view

binary file changed (9950 → 9825 bytes)

test/docx/golden/table_with_list_cell.docx view

binary file changed (10317 → 10197 bytes)

test/docx/golden/tables.docx view

binary file changed (10332 → 10207 bytes)

test/docx/golden/track_changes_deletion.docx view

binary file changed (9973 → 9848 bytes)

test/docx/golden/track_changes_insertion.docx view

binary file changed (9956 → 9831 bytes)

test/docx/golden/track_changes_move.docx view

binary file changed (9990 → 9865 bytes)

test/docx/golden/unicode.docx view

binary file changed (9914 → 9789 bytes)

test/docx/golden/verbatim_subsuper.docx view

binary file changed (9962 → 9837 bytes)

test/ipynb/simple.in.native view
@@ -6,8 +6,10 @@  [CodeBlock ("",["python"],[]) "print(\"hello\")"] ,Div ("",["cell","markdown"],[])  [Header 2 ("pyout",[],[]) [Str "Pyout"]]-,Div ("",["cell","code"],[])- [CodeBlock ("",["python"],[]) "from IPython.display import HTML\nHTML(\"\"\"\n<script>\nconsole.log(\"hello\");\n</script>\n<b>HTML</b>\n\"\"\")"]-,Div ("",["cell","markdown"],[])+,Div ("",["cell","code"],[("execution_count","2")])+ [CodeBlock ("",["python"],[]) "from IPython.display import HTML\nHTML(\"\"\"\n<script>\nconsole.log(\"hello\");\n</script>\n<b>HTML</b>\n\"\"\")"+ ,Div ("",["output","execute_result"],[("execution_count","2")])+  [RawBlock (Format "html") "<script>\nconsole.log(\"hello\");\n</script>\n<b>HTML</b>\nhello"]]+,Div ("",["cell","markdown"],[("tags","[\"foo\",\"bar\"]")])  [Header 2 ("image",[],[]) [Str "Image"]  ,Para [Str "This",Space,Str "image",Space,Image ("",[],[]) [Str "the",Space,Str "moon"] ("lalune.jpg",""),Space,Str "will",Space,Str "be",Space,Str "included",Space,Str "as",Space,Str "a",Space,Str "cell",SoftBreak,Str "attachment."]]]
test/ipynb/simple.ipynb view
@@ -30,9 +30,24 @@   },   {    "cell_type": "code",-   "execution_count": null,+   "execution_count": 2,    "metadata": {},-   "outputs": [],+   "outputs": [+    {+     "output_type": "execute_result",+     "execution_count": 2,+     "metadata": {},+     "data": {+      "text/html": [+       "<script>\n",+       "console.log(\"hello\");\n",+       "</script>\n",+       "<b>HTML</b>\n",+       "hello"+      ]+     }+    }+   ],    "source": [     "from IPython.display import HTML\n",     "HTML(\"\"\"\n",@@ -45,7 +60,12 @@   },   {    "cell_type": "markdown",-   "metadata": {},+   "metadata": {+    "tags": [+     "foo",+     "bar"+    ]+   },    "source": [     "Image\n",     "-----\n",
test/ipynb/simple.out.native view
@@ -6,8 +6,10 @@  [CodeBlock ("",["python"],[]) "print(\"hello\")"] ,Div ("",["cell","markdown"],[])  [Header 2 ("pyout",[],[]) [Str "Pyout"]]-,Div ("",["cell","code"],[])- [CodeBlock ("",["python"],[]) "from IPython.display import HTML\nHTML(\"\"\"\n<script>\nconsole.log(\"hello\");\n</script>\n<b>HTML</b>\n\"\"\")"]-,Div ("",["cell","markdown"],[])+,Div ("",["cell","code"],[("execution_count","2")])+ [CodeBlock ("",["python"],[]) "from IPython.display import HTML\nHTML(\"\"\"\n<script>\nconsole.log(\"hello\");\n</script>\n<b>HTML</b>\n\"\"\")"+ ,Div ("",["output","execute_result"],[("execution_count","2")])+  [RawBlock (Format "html") "<script>\nconsole.log(\"hello\");\n</script>\n<b>HTML</b>\nhello"]]+,Div ("",["cell","markdown"],[("tags","[\"foo\",\"bar\"]")])  [Header 2 ("image",[],[]) [Str "Image"]  ,Para [Str "This",Space,Str "image",Space,Image ("",[],[]) [Str "the",Space,Str "moon"] ("lalune.jpg",""),Space,Str "will",Space,Str "be",Space,Str "included",Space,Str "as",Space,Str "a",Space,Str "cell",SoftBreak,Str "attachment."]]]
test/latex-reader.latex view
@@ -1,23 +1,18 @@ \documentclass{article}-\usepackage[mathletters]{ucs} \usepackage[utf8x]{inputenc}-\setlength{\parindent}{0pt}-\setlength{\parskip}{6pt plus 2pt minus 1pt} -\usepackage[breaklinks=true,unicode=true]{hyperref}+\usepackage{hyperref} \usepackage[normalem]{ulem}-% avoid problems with \sout in headers with hyperref:-\pdfstringdefDisableCommands{\renewcommand{\sout}{}} \usepackage{enumerate}+\usepackage{setspace} \usepackage{fancyvrb} \usepackage{graphicx}-\usepackage{url}--\setcounter{secnumdepth}{0} \VerbatimFootnotes % allows verbatim text in footnotes+ \title{Pandoc Test Suite} \author{John MacFarlane \and Anonymous} \date{July 17, 2006}+ \begin{document} \maketitle 
test/lhs-test.latex view
@@ -1,4 +1,5 @@-\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere+% Options for packages loaded elsewhere+\PassOptionsToPackage{unicode=true}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[@@ -15,7 +16,7 @@   \defaultfontfeatures{Scale=MatchLowercase}   \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi-% use upquote if available, for straight quotes in verbatim environments+% Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available   \usepackage[]{microtype}@@ -35,9 +36,9 @@ \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \hypersetup{-  pdfborder={0 0 0},-  breaklinks=true}-\urlstyle{same}  % don't use monospace font for urls+  hidelinks,+}+\urlstyle{same} % disable monospaced font for URLs \usepackage{color} \usepackage{fancyvrb} \newcommand{\VerbBar}{|}@@ -76,10 +77,10 @@ \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}} \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}-\setlength{\emergencystretch}{3em}  % prevent overfull lines+\setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{%   \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}-\setcounter{secnumdepth}{-2}+\setcounter{secnumdepth}{-\maxdimen} % remove section numbering % Redefines (sub)paragraphs to behave more like sections \ifx\paragraph\undefined\else   \let\oldparagraph\paragraph@@ -90,7 +91,7 @@   \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} \fi -% set default figure placement to htbp+% Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother
test/lhs-test.latex+lhs view
@@ -1,4 +1,5 @@-\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere+% Options for packages loaded elsewhere+\PassOptionsToPackage{unicode=true}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[@@ -15,7 +16,7 @@   \defaultfontfeatures{Scale=MatchLowercase}   \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi-% use upquote if available, for straight quotes in verbatim environments+% Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available   \usepackage[]{microtype}@@ -35,18 +36,18 @@ \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \hypersetup{-  pdfborder={0 0 0},-  breaklinks=true}-\urlstyle{same}  % don't use monospace font for urls+  hidelinks,+}+\urlstyle{same} % disable monospaced font for URLs \usepackage{listings} \newcommand{\passthrough}[1]{#1} \lstset{defaultdialect=[5.3]Lua} \lstset{defaultdialect=[x86masm]Assembler} \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}-\setlength{\emergencystretch}{3em}  % prevent overfull lines+\setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{%   \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}-\setcounter{secnumdepth}{-2}+\setcounter{secnumdepth}{-\maxdimen} % remove section numbering % Redefines (sub)paragraphs to behave more like sections \ifx\paragraph\undefined\else   \let\oldparagraph\paragraph@@ -57,7 +58,7 @@   \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} \fi -% set default figure placement to htbp+% Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother
test/writer.latex view
@@ -1,4 +1,5 @@-\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere+% Options for packages loaded elsewhere+\PassOptionsToPackage{unicode=true}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[@@ -15,7 +16,7 @@   \defaultfontfeatures{Scale=MatchLowercase}   \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi-% use upquote if available, for straight quotes in verbatim environments+% Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available   \usepackage[]{microtype}@@ -38,9 +39,9 @@ \hypersetup{   pdftitle={Pandoc Test Suite},   pdfauthor={John MacFarlane; Anonymous},-  pdfborder={0 0 0},-  breaklinks=true}-\urlstyle{same}  % don't use monospace font for urls+  hidelinks,+}+\urlstyle{same} % disable monospaced font for URLs \VerbatimFootnotes % allows verbatim text in footnotes \usepackage{graphicx,grffile} \makeatletter@@ -52,12 +53,12 @@ % using explicit options in \includegraphics[width, height, ...]{} \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} \usepackage[normalem]{ulem}-% avoid problems with \sout in headers with hyperref:+% Avoid problems with \sout in headers with hyperref \pdfstringdefDisableCommands{\renewcommand{\sout}{}}-\setlength{\emergencystretch}{3em}  % prevent overfull lines+\setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{%   \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}-\setcounter{secnumdepth}{-2}+\setcounter{secnumdepth}{-\maxdimen} % remove section numbering % Redefines (sub)paragraphs to behave more like sections \ifx\paragraph\undefined\else   \let\oldparagraph\paragraph@@ -68,7 +69,7 @@   \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} \fi -% set default figure placement to htbp+% Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother
test/writers-lang-and-dir.latex view
@@ -1,4 +1,5 @@-\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere+% Options for packages loaded elsewhere+\PassOptionsToPackage{unicode=true}{hyperref} \PassOptionsToPackage{hyphens}{url} % \documentclass[@@ -16,7 +17,7 @@   \defaultfontfeatures{Scale=MatchLowercase}   \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} \fi-% use upquote if available, for straight quotes in verbatim environments+% Use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \IfFileExists{microtype.sty}{% use microtype if available   \usepackage[]{microtype}@@ -36,13 +37,13 @@ \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \hypersetup{-  pdfborder={0 0 0},-  breaklinks=true}-\urlstyle{same}  % don't use monospace font for urls-\setlength{\emergencystretch}{3em}  % prevent overfull lines+  hidelinks,+}+\urlstyle{same} % disable monospaced font for URLs+\setlength{\emergencystretch}{3em} % prevent overfull lines \providecommand{\tightlist}{%   \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}-\setcounter{secnumdepth}{-2}+\setcounter{secnumdepth}{-\maxdimen} % remove section numbering % Redefines (sub)paragraphs to behave more like sections \ifx\paragraph\undefined\else   \let\oldparagraph\paragraph@@ -53,12 +54,21 @@   \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} \fi -% set default figure placement to htbp+% Set default figure placement to htbp \makeatletter \def\fps@figure{htbp} \makeatother -\ifnum 0\ifxetex 1\fi=0 % if pdftex or luatex+\ifxetex+  % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)+  \usepackage{polyglossia}+  \setmainlanguage[]{english}+  \setotherlanguage[]{german}+  \setotherlanguage[variant=british]{english}+  \setotherlanguage[variant=swiss]{german}+  \setotherlanguage[]{spanish}+  \setotherlanguage[]{french}+\else   \usepackage[shorthands=off,ngerman,british,nswissgerman,spanish,french,main=english]{babel}   \newcommand{\textgerman}[2][]{\foreignlanguage{ngerman}{#2}}   \newenvironment{german}[2][]{\begin{otherlanguage}{ngerman}}{\end{otherlanguage}}@@ -69,18 +79,9 @@   \AddBabelHook{spanish}{afterextras}{\renewcommand{\textspanish}[2][]{\foreignlanguage{spanish}{##2}}}   \newcommand{\textfrench}[2][]{\foreignlanguage{french}{#2}}   \newenvironment{french}[2][]{\begin{otherlanguage}{french}}{\end{otherlanguage}}-\else % if xetex-  % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic)-  \usepackage{polyglossia}-  \setmainlanguage[]{english}-  \setotherlanguage[]{german}-  \setotherlanguage[variant=british]{english}-  \setotherlanguage[variant=swiss]{german}-  \setotherlanguage[]{spanish}-  \setotherlanguage[]{french} \fi \ifxetex-  % load bidi as late as possible as it modifies e.g. graphicx+  % Load bidi as late as possible as it modifies e.g. graphicx   \usepackage{bidi} \fi \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex