このブログは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を上げようと思います。
ということで、今回の調査はここまで。
真相が分かり次第、追って報告する。
Share