pandoc- Conversion between markup formats

MaintainerJohn MacFarlane <>
Safe HaskellNone




Utility functions and definitions used by the various Pandoc modules.


List processing

splitBy :: (a -> Bool) -> [a] -> [[a]]Source

Split list by groups of one or more sep.

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

splitStringByIndices :: [Int] -> [Char] -> [[Char]]Source

Split string 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 whitespace in URI.



:: 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.


normalizeDate :: String -> Maybe StringSource

Parse a date and convert (if possible) to YYYY-MM-DD format.

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.

normalize :: (Eq a, Data a) => a -> aSource

Normalize Pandoc document, consolidating doubled Spaces, combining adjacent Strs and Emphs, remove Nulls and empty elements, etc.

stringify :: [Inline] -> StringSource

Convert list of inlines to a string with formatting removed.



:: [[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 HTMLMathMethod Source


LaTeXMathML (Maybe String) 
JsMath (Maybe String) 
WebTeX String 
MathML (Maybe String) 
MathJax String 


data CiteMethod Source




data ObfuscationMethod Source

Methods for obfuscating email addresses in HTML.

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, Slidy or Slideous?

writerIncremental :: Bool

True if lists should be incremental

writerXeTeX :: Bool

Deprecated: writerXeTeX no longer does anything

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

writerColumns :: Int

Characters in a line (for text wrapping)

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

writerCiteMethod :: CiteMethod

How to print cites

writerBiblioFiles :: [FilePath]

Biblio files to use for citations

writerHtml5 :: Bool

Produce HTML5

writerBeamer :: Bool

Produce beamer LaTeX slide show

writerSlideLevel :: Maybe Int

Force header level of slides

writerChapters :: Bool

Use chapter for top-level sects

writerListings :: Bool

Use listings package for code

writerHighlight :: Bool

Highlight source code

writerHighlightStyle :: Style

Style to use for highlighting

writerSetextHeaders :: Bool

Use setext headers for levels 1-2 in markdown

writerTeXLigatures :: Bool

Use tex ligatures quotes, dashes in latex


defaultWriterOptions :: WriterOptionsSource

Default writer options.

File handling

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

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

findDataFile :: Maybe FilePath -> FilePath -> IO FilePathSource

Get file path for data file, either from specified user data directory, or, if not found there, from Cabal data directory.

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

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

Error handling

err :: Int -> String -> IO aSource

warn :: String -> IO ()Source