静的サイト作成ツール Hakyll で日本語を含むページを作成したとき、以下の図の反転部分のように余分な空白が入ってしまうことがあります。
これは内部で動いている Pandoc が Markdown ファイルに含まれている改行文字を空白文字に変換するために起こります。
このような挙動を望まないユーザーのために 1.16.0.1 から east_asian_line_breaks
という拡張が加えられています。以下でその使い方を説明します。
まず上記の拡張を使うため <project-name>.cabal
で使用する pandoc
のバージョンが 1.16.0.1
以降になるようにしてください。また以下で示すコードにおいて集合の演算を使うため、それをそのまま使う場合は <project-name>.cabal
の依存関係に containers
も追加してください。
依存関係の設定が終わったら、以下のように site.hs
を変更します。
import qualified Data.Set as S
import Text.Pandoc.Options (Extension(Ext_east_asian_line_breaks), readerExtensions)
-- omission --
customPandocCompiler =
let
defaultExtensions = readerExtensions defaultHakyllReaderOptions
newExtensions = S.insert Ext_east_asian_line_breaks defaultExtensions
readerOptions = defaultHakyllReaderOptions { readerExtensions = newExtensions }
in
pandocCompilerWith readerOptions defaultHakyllWriterOptions
今回追加する Ext_east_asian_line_breaks
は writerExtensions
ではなく readerExtensions
に追加するようです。その後、この customPandocCompiler
で pandocCompiler
を置き換え、stack build
してください。
最後に stack exec site clean
, stack exec site watch
で出来上がりを確認して終わりです。