pandoc- Conversion between markup formats

MaintainerJohn MacFarlane <>




Utility functions and definitions used by the various Pandoc modules.


List processing

splitBy :: Eq a => a -> [a] -> [[a]]Source

Split list by groups of one or more sep.

splitByIndices :: [Int] -> [a] -> [[a]]Source

Split list into chunks divided at specified indices.

substitute :: Eq a => [a] -> [a] -> [a] -> [a]Source

Replace each occurrence of one sublist in a list with another.

Text processing



:: [Char]

list of special characters to escape

-> [(Char, String)] 

Returns an association list of backslash escapes for the designated characters.

escapeStringUsing :: [(Char, String)] -> String -> StringSource

Escape a string of characters, using an association list of characters and strings.

stripTrailingNewlines :: String -> StringSource

Strip trailing newlines from string.

removeLeadingTrailingSpace :: String -> StringSource

Remove leading and trailing space (including newlines) from string.

removeLeadingSpace :: String -> StringSource

Remove leading space (including newlines) from string.

removeTrailingSpace :: String -> StringSource

Remove trailing space (including newlines) from string.

stripFirstAndLast :: String -> StringSource

Strip leading and trailing characters from string

camelCaseToHyphenated :: String -> StringSource

Change CamelCase word to hyphenated lowercase (e.g., camel-case).

toRomanNumeral :: Int -> StringSource

Convert number < 4000 to uppercase roman numeral.

escapeURI :: String -> StringSource

Escape unicode characters in a URI. Characters that are already valid in a URI, including % and ?, are left alone.

unescapeURI :: String -> StringSource

Unescape unicode and some special characters in a URI, but without introducing spaces.



:: Int

Tab stop

-> String


-> String 

Convert tabs to spaces and filter out DOS line endings. Tabs will be preserved if tab stop is set to 0.


wrapped :: Monad m => ([Inline] -> m Doc) -> [Inline] -> m DocSource

Wrap inlines to line length.

wrapIfNeeded :: Monad m => WriterOptions -> ([Inline] -> m Doc) -> [Inline] -> m DocSource

Wrap inlines if the text wrap option is selected.

wrappedTeX :: Monad m => Bool -> ([Inline] -> m Doc) -> [Inline] -> m DocSource

Wrap inlines to line length, treating footnotes in a way that makes sense in LaTeX and ConTeXt.

wrapTeXIfNeeded :: Monad m => WriterOptions -> Bool -> ([Inline] -> m Doc) -> [Inline] -> m DocSource

Wrap inlines if the text wrap option is selected, specialized for LaTeX and ConTeXt.

data BlockWrapper Source

Indicates whether block should be surrounded by blank lines (Pad) or not (Reg).


Pad Doc 
Reg Doc 

wrappedBlocksToDoc :: [BlockWrapper] -> DocSource

Converts a list of wrapped blocks to a Doc, with appropriate spaces around blocks.

hang' :: Doc -> Int -> Doc -> DocSource

A version of hang that works like the version in pretty-

Pandoc block and inline list processing

orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [String]Source

Generate infinite lazy list of markers for an ordered list, depending on list attributes.

normalizeSpaces :: [Inline] -> [Inline]Source

Normalize a list of inline elements: remove leading and trailing Space elements, collapse double Spaces into singles, and remove empty Str elements.



:: [[Block]]

List of list items (each a list of blocks)

-> [[Block]] 

Change final list item from Para to Plain if the list contains no other Para blocks.

data Element Source

Data structure for defining hierarchical Pandoc documents


Blk Block 
Sec Int [Int] String [Inline] [Element] 

hierarchicalize :: [Block] -> [Element]Source

Convert list of Pandoc blocks into (hierarchical) list of Elements

uniqueIdent :: [Inline] -> [String] -> StringSource

Generate a unique identifier from a list of inlines. Second argument is a list of already used identifiers.

isHeaderBlock :: Block -> BoolSource

True if block is a Header block.

headerShift :: Int -> Pandoc -> PandocSource

Shift header levels up or down.

Writer options

data HTMLSlideVariant Source

Varieties of HTML slide shows.



data WriterOptions Source

Options for writers




writerStandalone :: Bool

Include header and footer

writerTemplate :: String

Template to use in standalone mode

writerVariables :: [(String, String)]

Variables to set in template

writerEPUBMetadata :: String

Metadata to include in EPUB

writerTabStop :: Int

Tabstop for conversion btw spaces and tabs

writerTableOfContents :: Bool

Include table of contents

writerSlideVariant :: HTMLSlideVariant

Are we writing S5 or Slidy?

writerIncremental :: Bool

True if lists should be incremental

writerXeTeX :: Bool

Create latex suitable for use by xetex

writerHTMLMathMethod :: HTMLMathMethod

How to print math in HTML

writerIgnoreNotes :: Bool

Ignore footnotes (used in making toc)

writerNumberSections :: Bool

Number sections in LaTeX

writerSectionDivs :: Bool

Put sections in div tags in HTML

writerStrictMarkdown :: Bool

Use strict markdown syntax

writerReferenceLinks :: Bool

Use reference links in writing markdown, rst

writerWrapText :: Bool

Wrap text to line length

writerLiterateHaskell :: Bool

Write as literate haskell

writerEmailObfuscation :: ObfuscationMethod

How to obfuscate emails

writerIdentifierPrefix :: String

Prefix for section & note ids in HTML

writerSourceDirectory :: FilePath

Directory path of 1st source file

writerUserDataDir :: Maybe FilePath

Path of user data directory


defaultWriterOptions :: WriterOptionsSource

Default writer options.

File handling

inDirectory :: FilePath -> IO a -> IO aSource

Perform an IO action in a directory, returning to starting directory.

readDataFile :: Maybe FilePath -> FilePath -> IO StringSource

Read file from specified user data directory or, if not found there, from Cabal data directory.