niszetの日記

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

PandocのODT形式のTOC出力は「目次と索引の更新」をしないと中身が空になる

対処法?があるかは確認中ですが…。

docx形式の場合、目次はフィールドコードが入ってます。一部抜粋するとこういうタグが…。

<w:fldChar w:fldCharType="begin" w:dirty="true" />
<w:instrText xml:space="preserve">TOC \o &quot;1-3&quot; \h \z \u</w:instrText>
<w:fldChar w:fldCharType="separate" />
<w:fldChar w:fldCharType="end" />

ODT形式の場合は全てがstyleになっているようです。値はひょっとしたらアプリが起動時に更新したり等はあるかもですが、基本的には値がそのまま入っている感じですね。なので、ドキュメント単体でデータとして閉じている、ということになるのかな。docxの場合はMS Wordで開かないとフィールドコード部分に実の値が入ってなくても良いので(開いた後に保存したら値入るかも…未確認)

ということで、原理的?にODT形式の場合はLOWで開いて更新をかける必要がありそうです。

が、これは面倒くさいので、LOのAPIで何とかならないだろうか…?と考えています。これがRのパッケージとして作れれば、作成後に更新をかけることも可能…(?)

APIは6.4のものになってるので、7.0はまだなのかな…。とりあえず、取っ掛かりとして可能かどうかは見れそうなのでちょっと見ておきますか…。

api.libreoffice.org

追記

K4氏に最近この話題なかった?と言われてちょっと確認しましたが、

groups.google.com

これのリンク先のissueの最後の方、

github.com

が関連する話題ですが、LibreOffice側も認識はしているけど自動で更新はしていない状態が15年?ということなので、LibreOffice本体がこの機能を実装するというのはちょっと期待できないかな、という感じですね。