[調査中] Org 9.7になってox-hugoの内部リンクが動かなくなっている


このブログはOrg Modeで書いて、ox-hugoでmarkdownにエクスポートして、hugoで静的サイトに変換して作っているのですが、 気付いたら、他の記事へのリンクを含むエントリがエクスポートできなくなっていました。

症状

Org Modeでは以下のフォーマットで、他のHeadingへのリンクを作成することができ、 ox-hugoでエクスポートするときはサイト内リンクに変換されます。

[[*<Heading>][表示テキスト]]

これを含むエントリをエクスポートするときに、以下のエラーが出てエクスポートできなくなるようになりました。

org-export-data: Org export aborted. Unable to resolve link: “xxxxxx.pre-processed.org” See ‘org-export-with-broken-links’.

pre-processed.orgというのは自分は作成していないのですが、 リンクを解決するために、一時的にox-hugoが作成するバッファ名のようです。

エラーメッセージに書かれているとおり、 org-export-with-broken-linksを t に設定するか、 mark に設定してあげるとエクスポートは動くのですが、 t にするとリンクが無視される、 mark にすると、ここには無効なリンクがありましたと出力されるので、 期待するリンクが貼られるような動作ではありません。

原因の発生バージョン

EmacsにOrg Modeが同梱されるようになり、HEADビルドをしているとOrgがどんどんバージョンアップしていくのですが、 手動でバージョンを下げながら確認していったところ、 どうやらOrg 9.6.xでは発生せず、9.7.0から発生するようになったようです。

メジャーバージョンアップでは破壊的変更もおこなわれるので、他の周辺機能に予期せぬ問題が出ることは十分考えられます。

ox-hugoにも、Org 9.7にすることで問題が発生するようになったとのissueも報告されています。

https://github.com/kaushalmodi/ox-hugo/issues/740

ただ、9.7.7でこの問題は解決したそうですが、自分はまだ解決していません。

今後

エラーまわりを解析していたところ、org-element.elという、Org Modeのプロパティやノードなどを扱うAPI周りに リリースノートには書かれていない変更点が入り、それがox-hugoの意図しない挙動につながってるように見えています。

issue報告してもお任せするのもありなのですが、あまりOrg Modeの内部機能などは知らずに生きてきたので、 せっかくならもう少し原因追求をしてからissueを上げようと思います。

ということで、今回の調査はここまで。

真相が分かり次第、追って報告する。


関連記事