Haskell 定制Pandoc';使用CSS或模板创建HTML输出
我有一个Happstack程序,可以使用Haskell 定制Pandoc';使用CSS或模板创建HTML输出,haskell,pandoc,Haskell,Pandoc,我有一个Happstack程序,可以使用Text.Pandoc将标记文档动态转换为HTML: import qualified Text.Pandoc as Pandoc ... return $ toResponse $ Pandoc.writeHtml Pandoc.def contents 也就是说,Pandoc正在返回Text.Blaze.Html.Html值。(这有一个ToMessage实例,这意味着它可以用作对请求的响应。) 如何将自定义CSS样式表插入Pandoc的输出?
Text.Pandoc
将标记文档动态转换为HTML:
import qualified Text.Pandoc as Pandoc
...
return $ toResponse $ Pandoc.writeHtml Pandoc.def contents
也就是说,Pandoc正在返回Text.Blaze.Html.Html
值。(这有一个ToMessage
实例,这意味着它可以用作对请求的响应。)
如何将自定义CSS样式表插入Pandoc的输出?如果我想定制HTML,例如用一些其他元素包装
内容,该怎么办?Pandoc从命令行运行时,使用一些参数,允许您在
标记(-H)、内容之前(-B)和内容之后(-A)插入内容。我不知道Happstack,但肯定有办法将这些参数传递给Pandoc。writeHtml
当Pandoc的“独立模式”选项启用时,它会使用模板格式化输出。
模板及其子条件变量可以在writeTemplate
和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 "..."
import Text.Blaze.Html.Renderer.String
导入文本.Pandoc
getHtmlOpts=do
template您也可以编写自己的模板,例如调用它template.html
,并在从命令行调用pandoc时使用--template template.html
选项
文档位于,默认模板(用于灵感)位于