pandoc 2.14.0.2 → 2.14.0.3
raw patch · 19 files changed
+258/−174 lines, 19 filesdep ~commonmarkdep ~skylightingdep ~skylighting-corePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: commonmark, skylighting, skylighting-core
API changes (from Hackage documentation)
Files
- MANUAL.txt +4/−4
- changelog.md +38/−0
- data/templates/default.revealjs +70/−128
- man/pandoc.1 +2/−2
- pandoc.cabal +4/−4
- src/Text/Pandoc/MediaBag.hs +10/−5
- src/Text/Pandoc/Parsing.hs +4/−5
- src/Text/Pandoc/Readers/Metadata.hs +3/−0
- src/Text/Pandoc/Readers/Txt2Tags.hs +21/−1
- src/Text/Pandoc/Writers/HTML.hs +50/−0
- src/Text/Pandoc/Writers/LaTeX.hs +1/−1
- src/Text/Pandoc/Writers/LaTeX/Table.hs +11/−3
- src/Text/Pandoc/Writers/Markdown.hs +3/−3
- stack.yaml +4/−11
- test/command/2874.md +2/−2
- test/command/7272.md +4/−1
- test/command/7397.md +14/−0
- test/command/7400.md +9/−0
- test/tables/nordics.latex +4/−4
MANUAL.txt view
@@ -1,7 +1,7 @@ --- title: Pandoc User's Guide author: John MacFarlane-date: June 11, 2021+date: June 20, 2021 --- # Synopsis@@ -6504,9 +6504,9 @@ 4. The HTML generated by pandoc is not guaranteed to be safe. If `raw_html` is enabled for the Markdown input, users can inject arbitrary HTML. Even if `raw_html` is disabled,- users can include dangerous content in attributes for- headings, spans, and code blocks. To be safe, you should- run all the generated HTML through an HTML sanitizer.+ users can include dangerous content in URLs and attributes.+ To be safe, you should run all the generated HTML through+ an HTML sanitizer. # Authors
changelog.md view
@@ -1,5 +1,43 @@ # Revision history for pandoc +## pandoc 2.14.0.3 (2021-06-22)++ * Text.Pandoc.MediaBag `insertMediaBag`: ensure we get a sane mediaPath+ for URLs (#7391). In earlier 2.14.x versions, we'd get+ incorrect paths for resources downloaded from URLs when the+ media are extracted (including in PDF production).+ * Text.Pandoc.Parsing: improve `emailAddress` (#7398).+ Previously the parser would accept characters in domains+ that are illegal in domains, and this sometimes caused it+ to gobble bits of the following text.+ * txt2tags reader: modify the email address parser so+ it still includes form parameters, even after the change to+ `emailAddress` in Text.Pandoc.Parsing.+ * Text.Pandoc.Readers.Metadata: Fix regression with comment-only YAML+ metadata blocks (#7400).+ * reveal.js writer and template: better handling of options. Previously+ it was impossible to specify false values for options that default to+ true (e.g. `center`); setting the option to false just caused the portion+ of the template setting the option to be omitted. Now we prepopulate+ all the variables with their default values, including them all+ unconditionally and allowing them to be overridden.+ * Markdown writer: Fix regression in code blocks with attributes (#7397).+ Code blocks with a single class but nonempty attributes+ were having attributes drop as a result of #7242.+ * LaTeX writer:+ + Add strut at end of minipage if it contains line breaks.+ Without them, the last line is not as tall as it should be in+ some cases.+ + Always use a minipage for cells with line breaks, when+ width information is available (#7393). Otherwise the way we treat them+ can lead to content that overflows a cell.+ + Use `\strut` instead of `~` before `\\` in empty line.+ * Use lts-18.0 stack resolver.+ * Require skylighting 0.10.5.2 (adding support for Swift).+ * Require commonmark 0.2.1.+ * Rephrase section on unsafe HTML in manual.+ * Create SECURITY.md+ ## pandoc 2.14.0.2 (2021-06-13) * Fix MediaBag regressions (#7345). iIn the 2.14 release `--extract-media`
data/templates/default.revealjs view
@@ -90,256 +90,198 @@ // Full list of configuration options available at: // https://revealjs.com/config/ Reveal.initialize({-$if(center)$- // Determines whether slide content should be vertically centered- center: $center$,-$endif$ -$if(controls)$ // Display controls in the bottom right corner controls: $controls$,-$endif$-$if(controlsTutorial)$+ // Help the user learn the controls by providing hints, for example by // bouncing the down arrow when they first encounter a vertical slide controlsTutorial: $controlsTutorial$,-$endif$-$if(controlsLayout)$+ // Determines where controls appear, "edges" or "bottom-right" controlsLayout: '$controlsLayout$',-$endif$-$if(controlsBackArrows)$+ // Visibility rule for backwards navigation arrows; "faded", "hidden" // or "visible" controlsBackArrows: '$controlsBackArrows$',-$endif$-$if(progress)$+ // Display a presentation progress bar progress: $progress$,-$endif$-$if(slideNumber)$+ // Display the page number of the current slide slideNumber: $slideNumber$,-$endif$-$if(showSlideNumber)$+ // 'all', 'print', or 'speaker' showSlideNumber: '$showSlideNumber$',-$endif$+ // Add the current slide number to the URL hash so that reloading the // page/copying the URL will return you to the same slide- hash: $if(hash)$$hash$$else$true$endif$,-$if(hashOneBasedIndex)$+ hash: $hash$,+ // Start with 1 for the hash rather than 0 hashOneBasedIndex: $hashOneBasedIndex$,-$endif$-$if(history)$++ // Flags if we should monitor the hash and change slides accordingly+ respondToHashChanges: $respondToHashChanges$,+ // Push each slide change to the browser history history: $history$,-$endif$-$if(keyboard)$+ // Enable keyboard shortcuts for navigation keyboard: $keyboard$,-$endif$-$if(overview)$+ // Enable the slide overview mode overview: $overview$,-$endif$-$if(center)$++ // Disables the default reveal.js slide layout (scaling and centering)+ // so that you can use custom CSS layout+ disableLayout: false,+ // Vertical centering of slides center: $center$,-$endif$-$if(touch)$+ // Enables touch navigation on devices with touch input touch: $touch$,-$endif$-$if(loop)$+ // Loop the presentation loop: $loop$,-$endif$-$if(rtl)$+ // Change the presentation direction to be RTL rtl: $rtl$,-$endif$-$if(navigationMode)$+ // see https://revealjs.com/vertical-slides/#navigation-mode navigationMode: '$navigationMode$',-$endif$-$if(shuffle)$+ // Randomizes the order of slides each time the presentation loads shuffle: $shuffle$,-$endif$-$if(fragments)$+ // Turns fragments on and off globally fragments: $fragments$,-$endif$-$if(fragmentInURL)$+ // Flags whether to include the current fragment in the URL, // so that reloading brings you to the same fragment position fragmentInURL: $fragmentInURL$,-$endif$-$if(embedded)$+ // Flags if the presentation is running in an embedded mode, // i.e. contained within a limited portion of the screen embedded: $embedded$,-$endif$-$if(help)$+ // Flags if we should show a help overlay when the questionmark // key is pressed help: $help$,-$endif$-$if(pause)$- // Flags if it should be possible to pause the presentation (blackout)- pause: $pause$,-$endif$-$if(showNotes)$++ // Flags if it should be possible to pause the presentation (blackout)+ pause: $pause$,+ // Flags if speaker notes should be visible to all viewers showNotes: $showNotes$,-$endif$-$if(autoPlayMedia)$- // Global override for autoplaying embedded media (video/audio/iframe)- // - null: Media will only autoplay if data-autoplay is present- // - true: All media will autoplay, regardless of individual setting- // - false: No media will autoplay, regardless of individual setting++ // Global override for autoplaying embedded media (null/true/false) autoPlayMedia: $autoPlayMedia$,-$endif$-$if(preloadIframes)$- // Global override for preloading lazy-loaded iframes- // - null: Iframes with data-src AND data-preload will be loaded when within- // the viewDistance, iframes with only data-src will be loaded when visible- // - true: All iframes with data-src will be loaded when within the viewDistance- // - false: All iframes with data-src will be loaded only when visible++ // Global override for preloading lazy-loaded iframes (null/true/false) preloadIframes: $preloadIframes$,-$endif$-$if(autoSlide)$+ // Number of milliseconds between automatically proceeding to the // next slide, disabled when set to 0, this value can be overwritten // by using a data-autoslide attribute on your slides autoSlide: $autoSlide$,-$endif$-$if(autoSlideStoppable)$+ // Stop auto-sliding after user input autoSlideStoppable: $autoSlideStoppable$,-$endif$-$if(autoSlideMethod)$+ // Use this method for navigation when auto-sliding autoSlideMethod: $autoSlideMethod$,-$endif$-$if(defaultTiming)$+ // Specify the average time in seconds that you think you will spend // presenting each slide. This is used to show a pacing timer in the // speaker view defaultTiming: $defaultTiming$,-$endif$-$if(totalTime)$- // Specify the total time in seconds that is available to- // present. If this is set to a nonzero value, the pacing- // timer will work out the time available for each slide,- // instead of using the defaultTiming value- totalTime: $totalTime$,-$endif$-$if(minimumTimePerSlide)$- // Specify the minimum amount of time you want to allot to- // each slide, if using the totalTime calculation method. If- // the automated time allocation causes slide pacing to fall- // below this threshold, then you will see an alert in the- // speaker notes window- minimumTimePerSlide: $minimumTimePerSlide$,-$endif$-$if(mouseWheel)$+ // Enable slide navigation via mouse wheel mouseWheel: $mouseWheel$,-$endif$-$if(rollingLinks)$- // Apply a 3D roll to links on hover- rollingLinks: $rollingLinks$,-$endif$-$if(hideInactiveCursor)$++ // The display mode that will be used to show slides+ display: '$display$',+ // Hide cursor if inactive hideInactiveCursor: $hideInactiveCursor$,-$endif$-$if(hideCursorTime)$+ // Time before the cursor is hidden (in ms) hideCursorTime: $hideCursorTime$,-$endif$-$if(hideAddressBar)$- // Hides the address bar on mobile devices- hideAddressBar: $hideAddressBar$,-$endif$-$if(previewLinks)$+ // Opens links in an iframe preview overlay previewLinks: $previewLinks$,-$endif$-$if(transition)$- // Transition style- transition: '$transition$', // none/fade/slide/convex/concave/zoom-$endif$-$if(transitionSpeed)$- // Transition speed- transitionSpeed: '$transitionSpeed$', // default/fast/slow-$endif$-$if(backgroundTransition)$++ // Transition style (none/fade/slide/convex/concave/zoom)+ transition: '$transition$',++ // Transition speed (default/fast/slow)+ transitionSpeed: '$transitionSpeed$',+ // Transition style for full page slide backgrounds- backgroundTransition: '$backgroundTransition$', // none/fade/slide/convex/concave/zoom-$endif$-$if(viewDistance)$+ // (none/fade/slide/convex/concave/zoom)+ backgroundTransition: '$backgroundTransition$',+ // Number of slides away from the current that are visible viewDistance: $viewDistance$,-$endif$-$if(mobileViewDistance)$+ // Number of slides away from the current that are visible on mobile // devices. It is advisable to set this to a lower number than // viewDistance in order to save resources. mobileViewDistance: $mobileViewDistance$,-$endif$ $if(parallaxBackgroundImage)$+ // Parallax background image parallaxBackgroundImage: '$parallaxBackgroundImage$', // e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'" $else$ $if(background-image)$+ // Parallax background image parallaxBackgroundImage: '$background-image$', // e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'" $endif$ $endif$ $if(parallaxBackgroundSize)$+ // Parallax background size parallaxBackgroundSize: '$parallaxBackgroundSize$', // CSS syntax, e.g. "2100px 900px" $endif$ $if(parallaxBackgroundHorizontal)$+ // Amount to move parallax background (horizontal and vertical) on slide change // Number, e.g. 100 parallaxBackgroundHorizontal: $parallaxBackgroundHorizontal$, $endif$ $if(parallaxBackgroundVertical)$+ parallaxBackgroundVertical: $parallaxBackgroundVertical$, $endif$ $if(width)$+ // The "normal" size of the presentation, aspect ratio will be preserved // when the presentation is scaled to fit different resolutions. Can be // specified using percentage units. width: $width$, $endif$ $if(height)$+ height: $height$, $endif$ $if(margin)$+ // Factor of the display size that should remain empty around the content margin: $margin$, $endif$ $if(minScale)$+ // Bounds for smallest/largest possible scale to apply to content minScale: $minScale$, $endif$ $if(maxScale)$+ maxScale: $maxScale$, $endif$-$if(zoomKey)$- // Modifier key used to click-zoom to part of the slide- zoomKey: '$zoomKey$',-$endif$-$if(display)$- // The display mode that will be used to show slides- display: '$display$',-$endif$ $if(mathjax)$+ math: { mathjax: '$mathjaxurl$', config: 'TeX-AMS_HTML-full',
man/pandoc.1 view
@@ -1,7 +1,7 @@ '\" t .\" Automatically generated by Pandoc 2.14.0.1 .\"-.TH "Pandoc User\[cq]s Guide" "" "June 11, 2021" "pandoc 2.14.0.2" ""+.TH "Pandoc User\[cq]s Guide" "" "June 20, 2021" "pandoc 2.14.0.3" "" .hy .SH NAME pandoc - general markup converter@@ -7708,7 +7708,7 @@ If \f[C]raw_html\f[R] is enabled for the Markdown input, users can inject arbitrary HTML. Even if \f[C]raw_html\f[R] is disabled, users can include dangerous-content in attributes for headings, spans, and code blocks.+content in URLs and attributes. To be safe, you should run all the generated HTML through an HTML sanitizer. .SH AUTHORS
pandoc.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: pandoc-version: 2.14.0.2+version: 2.14.0.3 build-type: Simple license: GPL-2.0-or-later license-file: COPYING.md@@ -451,7 +451,7 @@ bytestring >= 0.9 && < 0.12, case-insensitive >= 1.2 && < 1.3, citeproc >= 0.4.0.1 && < 0.4.1,- commonmark >= 0.2 && < 0.3,+ commonmark >= 0.2.1 && < 0.3, commonmark-extensions >= 0.2.1.2 && < 0.3, commonmark-pandoc >= 0.2.1 && < 0.3, connection >= 0.3.1,@@ -484,8 +484,8 @@ random >= 1 && < 1.3, safe >= 0.3.18 && < 0.4, scientific >= 0.3 && < 0.4,- skylighting >= 0.10.5.1 && < 0.10.6,- skylighting-core >= 0.10.5.1 && < 0.10.6,+ skylighting >= 0.10.5.2 && < 0.10.6,+ skylighting-core >= 0.10.5.2 && < 0.10.6, split >= 0.2 && < 0.3, syb >= 0.1 && < 0.8, tagsoup >= 0.14.6 && < 0.15,
src/Text/Pandoc/MediaBag.hs view
@@ -26,13 +26,14 @@ import qualified Data.ByteString.Lazy as BL import Data.Data (Data) import qualified Data.Map as M-import Data.Maybe (fromMaybe)+import Data.Maybe (fromMaybe, isNothing) import Data.Typeable (Typeable) import System.FilePath import Text.Pandoc.MIME (MimeType, getMimeTypeDef, extensionFromMimeType) import Data.Text (Text) import qualified Data.Text as T import Data.Digest.Pure.SHA (sha1, showDigest)+import Network.URI (URI (..), parseURI) data MediaItem = MediaItem@@ -76,16 +77,20 @@ , mediaContents = contents , mediaMimeType = mt } fp' = canonicalize fp- newpath = if isRelative fp && ".." `notElem` splitPath fp+ uri = parseURI fp+ newpath = if isRelative fp+ && isNothing uri+ && ".." `notElem` splitPath fp then T.unpack fp' else showDigest (sha1 contents) <> "." <> ext fallback = case takeExtension fp of ".gz" -> getMimeTypeDef $ dropExtension fp _ -> getMimeTypeDef fp mt = fromMaybe fallback mbMime- ext = case takeExtension fp of- '.':e -> e- _ -> maybe "" T.unpack $ extensionFromMimeType mt+ path = maybe fp uriPath uri+ ext = case takeExtension path of+ '.':e -> e+ _ -> maybe "" T.unpack $ extensionFromMimeType mt -- | Lookup a media item in a 'MediaBag', returning mime type and contents.
src/Text/Pandoc/Parsing.hs view
@@ -188,7 +188,7 @@ import Control.Monad.Reader ( asks, runReader, MonadReader(ask), Reader, ReaderT(ReaderT) ) import Data.Char (chr, isAlphaNum, isAscii, isAsciiUpper, isAsciiLower,- isPunctuation, isSpace, ord, toLower, toUpper)+ isSpace, ord, toLower, toUpper) import Data.Default ( Default(..) ) import Data.Functor (($>)) import Data.List (intercalate, transpose)@@ -693,13 +693,12 @@ mailbox = intercalate "." <$> (emailWord `sepBy1'` dot) domain = intercalate "." <$> (subdomain `sepBy1'` dot) dot = char '.'- subdomain = many1 $ alphaNum <|> innerPunct+ subdomain = many1 $ alphaNum <|> innerPunct (=='-') -- this excludes some valid email addresses, since an -- email could contain e.g. '__', but gives better results -- for our purposes, when combined with markdown parsing:- innerPunct = try (satisfy (\c -> isEmailPunct c || c == '@')- <* notFollowedBy space- <* notFollowedBy (satisfy isPunctuation))+ innerPunct f = try (satisfy f+ <* notFollowedBy (satisfy (not . isAlphaNum))) -- technically an email address could begin with a symbol, -- but allowing this creates too many problems. -- See e.g. https://github.com/jgm/pandoc/issues/2940
src/Text/Pandoc/Readers/Metadata.hs view
@@ -45,6 +45,9 @@ Right [] -> return . return $ mempty Right [YAML.Doc (YAML.Scalar _ YAML.SNull)] -> return . return $ mempty+ -- the following is what we get from a comment:+ Right [YAML.Doc (YAML.Scalar _ (YAML.SUnknown _ ""))]+ -> return . return $ mempty Right _ -> Prelude.fail "expected YAML object" Left (yamlpos, err') -> do pos <- getPosition
src/Text/Pandoc/Readers/Txt2Tags.hs view
@@ -478,8 +478,28 @@ -- raw URLs in text are automatically linked url :: T2T Inlines url = try $ do- (rawUrl, escapedUrl) <- try uri <|> emailAddress+ (rawUrl, escapedUrl) <- try uri <|> emailAddress' return $ B.link rawUrl "" (B.str escapedUrl)++emailAddress' :: T2T (Text, Text)+emailAddress' = do+ (base, mailURI) <- emailAddress+ query <- option "" emailQuery+ return (base <> query, mailURI <> query)++emailQuery :: T2T Text+emailQuery = do+ char '?'+ parts <- kv `sepBy1` (char '&')+ return $ "?" <> T.intercalate "&" parts++kv :: T2T Text+kv = do+ k <- T.pack <$> many1 alphaNum+ char '='+ let vchar = alphaNum <|> try (oneOf "%._/~:,=$@&+-;*" <* lookAhead alphaNum)+ v <- T.pack <$> many1 vchar+ return (k <> "=" <> v) uri :: T2T (Text, Text) uri = try $ do
src/Text/Pandoc/Writers/HTML.hs view
@@ -317,6 +317,10 @@ | otherwise -> mempty Nothing -> mempty let mCss :: Maybe [Text] = lookupContext "css" metadata+ let true :: Text+ true = "true"+ let false :: Text+ false = "false" let context = (if stHighlighting st then case writerHighlightStyle opts of Just sty -> defField "highlighting-css"@@ -344,6 +348,52 @@ PlainMath -> defField "displaymath-css" True WebTeX _ -> defField "displaymath-css" True _ -> id) .+ (if slideVariant == RevealJsSlides+ then -- set boolean options explicitly, since+ -- template can't distinguish False/undefined+ defField "controls" true .+ defField "controlsTutorial" true .+ defField "controlsLayout" ("bottom-right" :: Text) .+ defField "controlsBackArrows" ("faded" :: Text) .+ defField "progress" true .+ defField "slideNumber" false .+ defField "showSlideNumber" ("all" :: Text) .+ defField "hashOneBasedIndex" false .+ defField "hash" false .+ defField "respondToHashChanges" true .+ defField "history" false .+ defField "keyboard" true .+ defField "overview" true .+ defField "disableLayout" false .+ defField "center" true .+ defField "touch" true .+ defField "loop" false .+ defField "rtl" false .+ defField "navigationMode" ("default" :: Text) .+ defField "shuffle" false .+ defField "fragments" true .+ defField "fragmentInURL" true .+ defField "embedded" false .+ defField "help" true .+ defField "pause" true .+ defField "showNotes" false .+ defField "autoPlayMedia" ("null" :: Text) .+ defField "preloadIframes" ("null" :: Text) .+ defField "autoSlide" ("0" :: Text) .+ defField "autoSlideStoppable" true .+ defField "autoSlideMethod" ("null" :: Text) .+ defField "defaultTiming" ("null" :: Text) .+ defField "mouseWheel" false .+ defField "display" ("block" :: Text) .+ defField "hideInactiveCursor" true .+ defField "hideCursorTime" ("5000" :: Text) .+ defField "previewLinks" false .+ defField "transition" ("slide" :: Text) .+ defField "transitionSpeed" ("default" :: Text) .+ defField "backgroundTransition" ("fade" :: Text) .+ defField "viewDistance" ("3" :: Text) .+ defField "mobileViewDistance" ("2" :: Text)+ else id) . defField "document-css" (isNothing mCss && slideVariant == NoSlides) . defField "quotes" (stQuotes st) . -- for backwards compatibility we populate toc
src/Text/Pandoc/Writers/LaTeX.hs view
@@ -919,7 +919,7 @@ inlineToLaTeX LineBreak = do emptyLine <- gets stEmptyLine setEmptyLine True- return $ (if emptyLine then "~" else "") <> "\\\\" <> cr+ return $ (if emptyLine then "\\strut " else "") <> "\\\\" <> cr inlineToLaTeX SoftBreak = do wrapText <- gets (writerWrapText . stOptions) case wrapText of
src/Text/Pandoc/Writers/LaTeX/Table.hs view
@@ -26,7 +26,8 @@ ( Doc, braces, cr, empty, hcat, hsep, isEmpty, literal, nest , text, vcat, ($$) ) import Text.Pandoc.Shared (blocksToInlines, splitBy, tshow)-import Text.Pandoc.Walk (walk)+import Text.Pandoc.Walk (walk, query)+import Data.Monoid (Any(..)) import Text.Pandoc.Writers.LaTeX.Caption (getCaption) import Text.Pandoc.Writers.LaTeX.Notes (notesToLaTeX) import Text.Pandoc.Writers.LaTeX.Types@@ -261,8 +262,13 @@ Para{} -> True Plain{} -> True _ -> False+ let hasLineBreak LineBreak = Any True+ hasLineBreak _ = Any False+ let hasLineBreaks = getAny $ query hasLineBreak blocks result <-- if not hasWidths || (celltype /= HeaderCell && all isPlainOrPara blocks)+ if not hasWidths || (celltype /= HeaderCell+ && all isPlainOrPara blocks+ && not hasLineBreaks) then blockListToLaTeX $ walk fixLineBreaks $ walk displayMathToInline blocks else do@@ -275,7 +281,9 @@ let halign = literal $ alignCommand align return $ "\\begin{minipage}" <> valign <> braces "\\linewidth" <> halign <> cr <>- cellContents <> cr <>+ cellContents <>+ (if hasLineBreaks then "\\strut" else mempty)+ <> cr <> "\\end{minipage}" modify $ \st -> st{ stExternalNotes = externalNotes } when (rowspan /= RowSpan 1) $
src/Text/Pandoc/Writers/Markdown.hs view
@@ -256,10 +256,10 @@ then hang (writerTabStop opts) (marker <> spacer) contents else marker <> spacer <> contents --- | (Code) blocks with a single class can just use it standalone,--- no need to bother with curly braces.+-- | (Code) blocks with a single class and no attributes can just use it+-- standalone, no need to bother with curly braces. classOrAttrsToMarkdown :: Attr -> Doc Text-classOrAttrsToMarkdown ("",[cls],_) = literal cls+classOrAttrsToMarkdown ("",[cls],[]) = literal cls classOrAttrsToMarkdown attrs = attrsToMarkdown attrs -- | Ordered list start parser for use in Para below.
stack.yaml view
@@ -7,18 +7,11 @@ packages: - '.' extra-deps:-- haddock-library-1.10.0-- hslua-1.3.0-- hslua-module-path-0.1.0-- jira-wiki-markup-1.4.0-- random-1.2.0-- unicode-collation-0.1.3-- citeproc-0.4.0.1-- commonmark-0.2-- commonmark-extensions-0.2.1.2-- commonmark-pandoc-0.2.1+- commonmark-0.2.1+- skylighting-core-0.10.5.2+- skylighting-0.10.5.2 ghc-options: "$locals": -fhide-source-paths -Wno-missing-home-modules-resolver: lts-17.12+resolver: lts-18.0 nix: packages: [zlib]
test/command/2874.md view
@@ -3,12 +3,12 @@ <a></a> <br/> ^D-{}~\\+{}\strut \\ ``` ``` % pandoc -f html -t latex <a name="foo"></a><br/> ^D-\protect\hypertarget{foo}{}{}~\\+\protect\hypertarget{foo}{}{}\strut \\ ```
test/command/7272.md view
@@ -18,7 +18,10 @@ >{\raggedright\arraybackslash}p{(\columnwidth - 0\tabcolsep) * \real{1.00}}@{}} \toprule \endhead-{\vtop{\hbox{\strut text}\hbox{\strut text2 }}} \\+\begin{minipage}[t]{\linewidth}\raggedright+{ text\\+text2 }\strut+\end{minipage} \\ \bottomrule \end{longtable} ```
+ test/command/7397.md view
@@ -0,0 +1,14 @@+````+% pandoc -t markdown+~~~~ { .haskell startFrom="100"}+qsort [] = []+qsort (x:xs) = qsort (filter (< x) xs) ++ [x] +++ qsort (filter (>= x) xs)+~~~~+^D+``` {.haskell startFrom="100"}+qsort [] = []+qsort (x:xs) = qsort (filter (< x) xs) ++ [x] +++ qsort (filter (>= x) xs)+```+````
+ test/command/7400.md view
@@ -0,0 +1,9 @@+```+% pandoc -t native -s+---+# Comment only+...+^D+Pandoc (Meta {unMeta = fromList []})+[]+```
test/tables/nordics.latex view
@@ -11,10 +11,10 @@ Capital \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Population\\-(in 2018)+(in 2018)\strut \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Area\\-(in km\textsuperscript{2})+(in km\textsuperscript{2})\strut \end{minipage} \\ \midrule \endfirsthead@@ -25,10 +25,10 @@ Capital \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Population\\-(in 2018)+(in 2018)\strut \end{minipage} & \begin{minipage}[b]{\linewidth}\centering Area\\-(in km\textsuperscript{2})+(in km\textsuperscript{2})\strut \end{minipage} \\ \midrule \endhead