niszetの日記

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

(Pandoc)OpenDocument形式出力でsyntax highlightingを(ただしインラインCodeかつODTではない)

簡単とは思っていなかったけどやっぱり大変…。

ODT形式の出力はシンタックスハイライトに対応できていません。そのため、これに対応するべくPandocの修正を試みています。

とりあえずissue建てた。

github.com

PRを1個出していて、これはOpenDocument形式での出力時に、対応するコードに対してシンタックスハイライト用のタグが埋め込まれるというもの。

ただし、styleの定義が存在しないのでLibreOfficeで(たぶんMS Wordも同じだけど)開いたときには標準の文字と何も変わらなく見えます。

styles.xmlを更新して対応する文字スタイルを追加しておけば、スタイルが正しくあたるところまでは確認しています。

問題はCodeBlockの処理がDocxのそれと違う事、そしてスタイルを自動生成するコードを作らねばならないことの2点です。

そもそも今のODTではautoのstyleを大量に生成してしまうのでそれってどうなの?というのもあるんですが。この辺りはODT/LOWの思想がどうなっているのかを確認していないので(LOWでファイルをつくってunzipして確認すればよい)追々やっていきまする。

作業時間は1日くらいですが、ほとんどコードとにらめっこしてる時間でしたね。Docxのコードをコピーして型合わせみたいな感じでしたし。

引き続き、PandocのODT形式出力の仕様の強化にむけてやっていきたいと思います(力尽きないといいなぁ…)

追記

そういえばコレはマージされました。さすにす。

あと、CodeBlock対応のために上記のCodeの処理を変えました。

github.com

これはdocxの処理を発想はそのまま、コードは合う形で移植したものです。

とりあえずtestを対応するものに書き換えれば、OpenDocument形式での出力は一応整合するかな。style名は修正したいのだけど。

問題はstyleを実装するWriter/ODT.hsの方で、これを修正するのが骨が折れそうなのです…。とりあえず動くところまでは頑張りたい