niszetの日記

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

docxのstyle id とstyle nameの問題

ようやく問題が何かがわかってきました…

半年くらい前からK4氏が見つけたこのIssueが解決しておらず、

github.com

春の技術書典で話聞いたときはふ~んって思ってましたが、掘り下げてみるとこれは結構厄介な問題でした。ので、とりあえず議論に参加してみた。

何が起きるか?

たぶん、非Ascii語圏特有の問題ですが、docx中のstyle nameとWord上で表示されるスタイル名は異なります。上記Issueでも書いた通り、Titleが表題だったり。その場合、docx中のstyle idはstyle nameとは異なる値となります。ただ、saveする前のdocxではstyle idは化けていないので、JP語圏とかで開いてsaveするとダメなのでしょう。

md -> docx で生成するときはstyle nameの一致を見ているようで(実行時の挙動からそう見える)、docx -> md はstyle idを吐いているようです。そのため、両者が不一致すると docx -> md -> docx で変換するとオリジナルのdocxと再生成したdocxでスタイルが異なってしまう。これが問題かなーという形で再提起してみました。

style id を使うとしてもJP語圏とAscii語圏でファイルやり取りするとダメっぽいんだけど、その場合はstyle nameを使うとかかなぁ…。この問題はMS Wordのイケていない挙動に引きずられているので解決はなかなか難しい気がします…。が、やっていきましょう。