Here’s the pandoc README:

Foo:: Div -> Div
#!/usr/bin/env runhaskell -- filter.hs import Text.Pandoc.JSON import qualified Data.Text.IO as TIO import qualified Data.Text as T file2Block :: FilePath -> IO [Block] file2Block f = do contents <- TIO.readFile f return [Plain [Str contents]] doInclude :: Block -> IO Block doInclude cb@(Div (id, classes, namevals) contents) = case lookup (T.pack "include") namevals of Just f -> Div (id, classes, namevals) <$> file2Block (T.unpack f) Nothing -> return cb doInclude x = return x main :: IO () main = toJSONFilter doInclude

test thm1

test thm2

test thm3