niszetの日記

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

(Pandoc)ODT形式での出力はraw記法もフォローしているのでやりたいことが大体出来る

ODT出力の場合に出来ることがどこまであるかを全部チェックしていく

他のファイル形式の出力と同様に、PandocでODT形式で出力する場合にも、generic-raw-attributeを使用して出力ファイルに直接文字列を埋め込むようなことが可能です。これは対象のファイルに直接埋め込まれるため、出力ファイル形式の文法的に正しいものでなくてはいけません。

pandoc.org

例えば以下のコードを(行頭のバックスラッシュは、はてな上でbacktick x3を入れるための苦肉の策。コピペするときは取り除いてください)埋め込むことで、任意の位置にAuthorスタイルが適用された"Author"という文字列を埋め込むことが出来ます。

\```{=opendocument}
<text:p text:style-name="Author">Author</text:p>
\```

例として上記のコードを書きましたが、実際に使用する場合は所望の箇所に必ず同じ書式で書かれて欲しいということが多いと思いますので、テンプレートかreference.odtのどちらかを使用する方が良いでしょう。

raw記法は何でも出力できてしまうので、ゴミデータを入れると出力ファイルが破損して開けないということもあるので注意しましょう。出力先のファイル形式の文法的に正しいもの以外が入っている場合の挙動はアプリケーション依存となります。使用の際は出力するファイル形式の文法仕様をしっかり確認しましょう。

MS WordやLibreOfficeWriterは破損したドキュメントもある程度読んでくれますが(特にMS Wordはそうです)、意図したように復元されるとは限らないですし、エラーのないデータが生成できるようにしましょう。

ODT形式の場合、文法の詳細は最新のODF1.3の仕様を確認してください。

しかし、Pandocは現時点ではODFのバージョン1.2として出力しているので、1.3と1.2の更新部分に相当する記述を埋め込むと意図しない結果になるかもしれませんので注意が必要かもしれません(未調査です…)

ODF1.3についてはこの記事などを見ると良いかもです(ドキュメントへのリンクもあって便利…)

ja.blog.documentfoundation.org

ということで、ODT形式でもraw記法が使用可能なので、body部分に埋め込めるタグであればカスタマイズが容易に出来そうですね。