niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

(Pandoc)ODT形式は改ページ挿入のためのスタイルの指定が必要。

段々わかってきましたね…。

ODT形式は基本的に全てスタイルでやってしまおうという感じがありますが、改ページも改ページを指定したスタイルを使うことで実現しているようです。

PandocのpagebreakのLuaフィルタを使うことで、改ページを簡単に挿入できることを紹介しました。

niszet.hatenablog.com

このフィルタのREADMEを見ればわかりますが、ODT形式の場合は改ページを指定したスタイル、Pagebreakが必要です。

github.com

このスタイル名は任意のものに置き換えが可能で、Pandocに渡す変数、newpage_odt_style を設定するか環境変数 PANDOC_NEWPAGE_ODT_STYLE によって指定が可能とのこと。実際に試して置き換えがされていました。raw記法を使用して直接埋め込むよりはこのフィルタと変数を使用した方が変更容易になってよいでしょう。

Pandocにパラメータを渡す場合、トップレベルに置かないといけないので、インデントはナシで下記のように書きます。

newpage_odt_style: "Heading_20_1"

こうすることで、文中の \newpage がHeading_20_1、つまり見出し1に置き換えることが確認できます(視認性の観点でこのスタイルにしているので、置き換えが出来ることが分かったあとは適当な改ページ用のスタイルを指定するようにしましょう)

スタイルを指定しているのだから、それごとドキュメントにraw記法で埋め込めば出来るのでは?と思うと思いますが、実際やってみましたがコレはダメです。詳細はODFの仕様を見てほしいですが、styleに関連するタグは本文を記述するcontent.xml中のbodyタグでは無効となり、無視されます。

なので、事前準備が必要になりますが、上記の方法で対応するしかないと思います。まぁ、スタイルは自分で作りこんで使うと思うので、もうひと手間かければよい、というだけなので…。

ODTは何でもタグで対応していてすごいなぁと思う一方で、OOXMLというよりはWordが独特すぎるな…という感じがありますね。一長一短ありますが…。

引き続き、ODT関連については調べていきます…。