niszetの日記

細かい情報を載せていくブログ

(Pandoc)PandocのシンタックスハイライトはWriter依存

読み解くの大変っす…。

Pandocのシンタックスハイライトはskylightingが担っています。これはPandoc内に埋め込まれているので、フィルタ等で制御できる奴ではないです。

github.com

で、Pandocは特定の出力形式にのみハイライト対応しています。

Currently highlighting is supported only for HTML, EPUB, Docx, Ms, and LaTeX/PDF output. 

とのこと。

pandoc.org

ODTについて対応していないことは日記にも書きました。

niszet.hatenablog.com

これは結局どういうことか?というと、掲題のとおりPandocのWriter内で対応する処理が書かれているかどうか?に依存します。対応する文字トークンに対してスタイルを生成してドキュメント内に納める、といったことをする必要があります。

Docx.hsではここ(styleToOpenXml)で処理しています。

github.com

これをODTにも移植すればいいはずなので、検討中です。

でもまぁコードを読んでいると、

where alltoktypes = enumFromTo KeywordTok NormalTok

とかあるわけです。このTok系はSkylighting内で定義されていて、Styles.hsの中にいます。

github.com

コレら、依存しているモジュールを読み解かないといけないので大変…。と言っても最低限で良いし、HackageとかVSCode上のHaskell拡張によってどのモジュールなのか、定義はどうなのかがわかるのでそれほどではないんですけどね。順を追ってやれば理解できるのではないかなと思っていますが…。

ドキュメントを書き出す場合、書き出す順序が重要なので普通のプログラムとあまり見た目で変わりなく(そうか?)、処理がそれぞれ関数化されているなぁ…で見ていけば良いので、対応関係を取ることが比較的やりやすいのではと思います。

みんなもPandocのWriterのコード読んでcontributeしようよ(私はまだしていないけど。