画像を読み込んでいるファイルを、別の階層にあるファイルから include
ディレクティブで読み込むと、相対パスの位置が変わってしまいます。
画像を読み込んでいるファイルを単体で表示したときにはそのファイルからの相対パスになりますが、include
しているファイルを表示したときには、include
しているファイルからの相対パスになってしまいます。
同様のことで悩んでいる方はそれなりにいるようで、実際私もかなり困っています。
- https://qiita.com/hyt126/items/7a070bc2b1e185b9146f
- https://qiita.com/ihgs/items/3c7a4fa9a2a81b23da82
- https://discuss.asciidoctor.org/Strange-issues-with-asciidoc-imagesdir-stops-working-td8194.html
とりあえずの解決方法としては、私にとっては以下の方法が一番役に立ちました。
ちょっと手間ですが、include
直前で imagedir
を都度セットします。
:imagesdir: hoge
include::hoge/included_file.adoc
ただし、多重で include している場合は上記では上手くいきません。
この場合は、試行錯誤の結果、以下のようにすることで上手くいきました。
ifdef::imagesdir[:imagesdir: {imagesdir}/hoge]
ifndef::imagesdir[:imagesdir: hoge]
include::hoge/included_file.adoc
imagesdir
が既に定義されている(=別のファイルから include されている)場合は、現在の imagesdir
に付加する形で imagesdir
を再定義します。imagesdir
が定義されていない(=別のファイルから include されていない)場合は、前述と同じように imagesdir
を定義します。