我有一个 Happstack 程序,它使用Text.Pandoc以下命令将 Markdown 文档动态转换为 HTML :
import qualified Text.Pandoc as Pandoc
...
return $ toResponse $ Pandoc.writeHtml Pandoc.def contents
Run Code Online (Sandbox Code Playgroud)
即 Pandoc 正在返回一个Text.Blaze.Html.Html值。(这有一个ToMessage实例,这意味着它可以用作对请求的响应。)
如何在 Pandoc 的输出中插入自定义 CSS 样式表?如果我想自定义 HTML,例如通过<body>用一些其他元素包装内容怎么办?
当启用 Pandoc 的“独立模式”选项时,它使用模板来格式化输出。模板及其替换变量可以在writerTemplate和 的writerVariables成员中设置WriterOptions。
命令行工具有一组它使用的默认模板。您可以使用例如查看格式的默认模板pandoc -D html。
使用库时,默认使用空模板。您可以使用 以编程方式获取默认模板getDefaultTemplate。
下面是一些示例代码:
import Text.Blaze.Html.Renderer.String
import Text.Pandoc
getHtmlOpts = do
template <- either (error . show) id
`fmap` getDefaultTemplate Nothing "html"
return $ def
{ writerStandalone = True
, writerTemplate = template
, writerVariables = [
("css", "/path/to/style.css"),
("header-includes",
"<style>p { background-color: magenta; }</style>")]
}
main = do
opts <- getHtmlOpts
putStrLn $ renderHtml $ writeHtml opts $ readMarkdown def "..."
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4822 次 |
| 最近记录: |