6

以下を使用してMarkdownドキュメントをHTMLに動的に変換するHappstackプログラムがありますText.Pandoc

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

つまり、Pandoc はText.Blaze.Html.Html値を返しています。(これにはToMessage、リクエストへのレスポンスとして使用できることを意味するインスタンスがあります。)

カスタム CSS スタイルシートを Pandoc の出力に挿入するにはどうすればよいですか? <body>コンテンツを他の要素でラップするなど、HTML をカスタマイズしたい場合はどうすればよいですか?

4

3 に答える 3

7

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 "..."
于 2014-04-19T20:53:27.593 に答える
1

<head>Pandoc をコマンド ラインから実行すると、タグ ( -H )、コンテンツの前 ( -B ) およびコンテンツの後 ( -A )に何かを挿入できるいくつかの引数を取ります。Happstack についてはわかりませんが、これらのパラメーターをPandoc.writeHtml

于 2013-09-06T11:43:16.200 に答える