nikkie-ftnextの日記

イベントレポートや読書メモを発信

reStructuredTextの画像(figureやimageディレクティブ)は、URLを設定してリンクにできたのか!(targetオプションを知りました)

Sphinx関係の小ネタです。
初めて知って、ちょっと感動しました。

目次

reStructuredTextで画像を表示

Sphinxをはじめよう 第3版』 A.10より

  • reSTで画像を埋め込むにはfigureディレクティブ
  • インライン画像はimageディレクティブ

これらはdocutilsのディレクティブです。

画像のサイズはオプションで変えられます。

  • height
  • width
  • scale

サイズのオプションは、tk0miyaさんのブログが詳しいです。

targetというオプションでリンクにできる!

サイズのオプションの他に、targetというオプションがあることを知りました。

.. figure:: _static/pyconjp2019.jpg
    :target: https://www.flickr.com/photos/pyconjp/48743997848/in/album-72157710870622516/

.. image:: _static/breakfast.jpg
    :target: https://www.flickr.com/photos/pyconjp/48818171768/in/album-72157710870622516/

imageディレクティブ

https://docutils.sourceforge.io/docs/ref/rst/directives.html#image

target : URI or reference name
Nest the image in a hyperlink reference element (make it "clickable").

以下のように書けるんです!

.. image:: <画像のパス>
    :target: <リンク先のURL>

figureディレクティブ

https://docutils.sourceforge.io/docs/ref/rst/directives.html#figure

The "figure" directive supports all options of the "image" directive.

imageディレクティブのオプションはtargetも含めて、figureディレクティブにもあります。

終わりに

reStructuredTextのfigureやimageディレクティブのtargetオプションを知りました。
画像がリンクになります

今回作ったSphinxプロジェクトはこちら

知ったきっかけは、自作のSphinx拡張 sphinx-new-tab-link のissueです。

issueは使っている方がいると分かって嬉しいですし、今回のtargetオプションのような知らないことを知る機会にもなってとてもありがたいです。
こちらのissue1にも対応していくぞ💪


  1. issueは設定値new_tab_link_show_external_link_icon=Trueの挙動のバグです。デフォルト(この設定がオフ)ではimageディレクティブのtargetオプションのリンクは別のタブで開く動きをしました。https://github.com/ftnext/sphinx-new-tab-link/commit/9aed3cca9eb2833880f8436ed8e374ca8f63851d