【问题标题】:customising Pandoc's HTML output with CSS or a template使用 CSS 或模板自定义 Pandoc 的 HTML 输出
【发布时间】:2013-06-17 21:17:50
【问题描述】:

我有一个 Happstack 程序,它使用 Text.Pandoc 将 Markdown 文档动态转换为 HTML:

import qualified Text.Pandoc as Pandoc
...
    return $ toResponse $ Pandoc.writeHtml Pandoc.def contents

即Pandoc 正在返回一个 Text.Blaze.Html.Html 值。 (这有一个ToMessage 实例,这意味着它可以用作对请求的响应。)

如何在 Pandoc 的输出中插入自定义 CSS 样式表?如果我想自定义 HTML 怎么办?通过用一些其他元素包装<body> 内容?

【问题讨论】:

    标签: haskell pandoc


    【解决方案1】:

    启用 Pandoc 的“独立模式”选项时,它使用模板来格式化输出。 模板及其替代变量可以在WriterOptionswriterTemplatewriterVariables 成员中设置。

    命令行工具有一组它使用的默认模板。您可以使用例如查看格式的默认模板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 "..."
    

    【讨论】:

    • 我正在与

      块作斗争,因为我不想修改我的降价文件,但仍想正确添加 元素......使用@ 987654327@,然后根据我的口味修改模板(主要是在<code>title-block-header</code>元素中添加<code>style="display:none"</code>,并用<code>pandoc -s --template ./template.html --metadata title="$title" "$oldname" -o "$newname"</code>编译解决了我所有的戏剧。

    【解决方案2】:

    您也可以编写自己的模板,例如调用它template.html 并在从命令行调用 pandoc 时使用--template template.html 选项。

    文档位于https://pandoc.org/MANUAL.html#templates,默认模板(用于灵感)位于https://raw.githubusercontent.com/jgm/pandoc-templates/master/default.html5

    【讨论】:

      【解决方案3】:

      从命令行运行时,Pandoc 接受一些参数,允许您在内容 (-B 之前的 &lt;head&gt; 标签 (-H) 中插入一些内容>) 和内容之后 (-A)。我不知道Happstack,但肯定有办法将这些参数传递给Pandoc.writeHtml

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        相关资源
        最近更新 更多