Sphinxで脚注をビルド時に集約する
脚注機能の概要
reStructuredTextの
この文には、本文に直接的な記述をする必要こそ無いものの、
簡易的な補足情報があるのが望ましい語句が使われている。 [#]_
.. [#] とはいえ、興味がある人のみ参照すれば良いやつ
reST形式のa タグに
この
脚注に関する標準的な挙動
手っ取り早く、docutils にrst2pseudoxml.py で
<document source="example-footnotes.rst">
<paragraph>
この文には、本文に直接的な記述をする必要こそ無いものの、
簡易的な補足情報があるのが望ましい語句が使われている。
<footnote_reference auto="1" ids="footnote-reference-1" refid="footnote-1">
1
<footnote auto="1" backrefs="footnote-reference-1" ids="footnote-1" names="1">
<label>
1
<paragraph>
とはいえ、興味がある人のみ参照すれば良いやつ
階層構造と
最初の
paragraph要素内に、脚注参照先を 示す footnote_reference要素が定義される。 paragraph要素の直後に、 脚注本体を 意味する footnote要素が定義される。
これ自体は
では、
docutilsの拡張はSphinxでも利用できる。 [#]_
.. [#] 逆は必ずしも可能とはいえない。
Sphinx拡張は組み合わせることが可能。 [#]_
.. [#] ただし、設定のバッティングに注意すること。
前提と
<document source="example-footnotes.rst">
<paragraph>
docutilsの拡張はSphinxでも利用できる。
<footnote_reference auto="1" ids="footnote-reference-1" refid="footnote-1">
1
<footnote auto="1" backrefs="footnote-reference-1" ids="footnote-1" names="1">
<label>
1
<paragraph>
逆は必ずしも可能とはいえない。
<paragraph>
Sphinx拡張は組み合わせることが可能。
<footnote_reference auto="1" ids="footnote-reference-2" refid="footnote-2">
2
<footnote auto="1" backrefs="footnote-reference-2" ids="footnote-2" names="2">
<label>
2
<paragraph>
ただし、設定のバッティングに注意すること。
基本的にはparagraph のfootnote が
しかし、
Sphinxビルドと脚注
まずdocutils の
つまり
とはdocutils + Sphinx の
docutilsの拡張はSphinxでも利用できる。 [#]_
Sphinx拡張は組み合わせることが可能。 [#]_
.. [#] 逆は必ずしも可能とはいえない。
.. [#] ただし、設定のバッティングに注意すること。
この
その
そこで、
Sphinx拡張として
プレーンではない
実際の
"""Prototype of ``atsphinx-footnotes``.
.. note:: Deprecated
"""
from sphinx.application import Sphinx
from sphinx.util.docutils import nodes
def collect_footnotes(app: Sphinx, doctree: nodes.document): # noqa: D103
footnotes = nodes.section()
for footnote in doctree.traverse(nodes.footnote):
footnote.parent.remove(footnote)
footnotes.append(footnote)
if len(footnotes.children):
footnotes.insert(0, nodes.rubric(text="※脚注"))
doctree.append(footnotes)
def setup(app: Sphinx): # noqa: D103
app.connect("doctree-read", collect_footnotes)
基本的なfootnote 要素を
Sphinxのdoctree-read とdocutils にdoctree オブジェクトは
このdoctree から.traverse() をfootnote 要素をsection 要素にsections にfootnote がdoctree 直下に
実際に
PyPIに登録するか否か
現時点では、
例えば、.. rubric:: ※脚注 とsection の
日本語以外だと
何が 記載されているべきか rubric以外の要素を 使った ほうが 良いのか そも
そも、 脚注である ことを 示す必要を 感じてないのではないか
極論を
※脚注