回答:
「reST / Sphinx」という表現は、質問の範囲を不明確にします。それは一般的にreStructuredText と Sphinx についてですか、それともに関するものです使用される reStructuredTextに関するものだけですか(一般的にreStructuredTextではありません)。RSTを使用している人はいつの時点でも両方のケースに遭遇する可能性が高いので、両方を取り上げます。
クラス(:class:
)などのさまざまなエンティティへのリンクに使用できるドメイン固有のディレクティブの他に、一般的な:ref:
ディレクティブがあります。彼らはこの例を示します:
.. _my-reference-label:
Section to cross-reference
--------------------------
This is the text of the section.
It refers to the section itself, see :ref:`my-reference-label`.
RSTによって提供される一般的なハイパーリンクメカニズムはSphinxでも機能しますが、ドキュメントではSphinxを使用する場合はそれを使用しないことを推奨しています。
セクションへの標準のreStructuredTextリンクよりもrefを使用することをお勧めします(
Section title
_など)ます。これは、セクション見出しが変更された場合、および相互参照をサポートするすべてのビルダーに対して、ファイル全体で機能するためです。
RSTファイルをHTMLに変換するツールには、必ずしもコレクションという概念はありません。たとえば、githubを使用してRSTファイルをHTMLに変換する場合や、などのコマンドラインツールを使用する場合ですrst2html
。残念ながら、望ましい結果を得るために使用するさまざまな方法は、使用しているツールによって異なります。たとえば、を使用してrst2html
、file A.rst
をfile内の「Section」という名前のセクションにリンクさother.rst
せ、最終的なHTMLをブラウザーで機能させA.rst
たい場合は、次のようになります。
`This <other.html#section>`__ is a reference to a section in another
file, which works with ``rst2html``. Unfortunately, it does not work
when the HTML is generated through github.
最終的なHTMLファイルにリンクする必要がありid
、セクションに与えられるものが何であるかを知る必要があります。githubを通じて提供されるファイルに対して同じことをしたい場合:
`This <other.rst#section>`__ is a reference to a section in another
file, which works on github. Unfortunately, it does not work when you
use ``rst2html``.
ここでもあなたid
はセクションに与えられたものを知る必要があります。ただし、HTMLが作成されるのはRSTファイルにアクセスしたときだけなので、RSTファイルにリンクします。(この回答を書いている時点では、HTMLに直接アクセスすることは許可されていません。)
RST, in General
、残念なニュースでした!)
.. _my-reference-label:
アプローチの欠点は、my-reference-label
URLの後#
のリンクに表示されることです。したがって、かなりのラベル名を使用する必要があります。また、目次では常に#
への-link が作成されるため、同じセクションへのSection to cross-reference
2つの異なる-link が作成され#
ます。
:ref:`Link title <lmy-reference-label>`
2016年の新しい、より良い答え!
autosection拡張機能は、あなたがこれを簡単に行うことができます。
=============
Some Document
=============
Internal Headline
=================
じゃあ後で...
===============
Some Other Doc
===============
A link- :ref:`Internal Headline`
この拡張機能は組み込みなので、編集するだけです conf.py
extensions = [
.
. other
. extensions
. already
. listed
.
'sphinx.ext.autosectionlabel',
]
あなたが注意しなければならない唯一のことは、今あなたはドキュメントコレクション全体で内部の見出しを複製することができないということです。(価値がある。)
_page-title-learn-more
ます。それは少し面倒ですが、私は依然としてオートセクションに依存するのが好きです。
autosectionlabel_prefix_document
オプションが導入されており、各セクションラベルの前にドキュメントの名前を付けることで、見出しの重複問題を回避できます。
:ref:`Link title <Internal Headline>`
。また、次のようなページ(quickstart.rstなど)に直接リンクすることもできます:doc:`quickstart`
例:
Hey, read the :ref:`Installation:Homebrew` section.
どこHomebrew
名付け異なるドキュメント内のセクションですInstallation.rst
。
これは自動セクション機能を使用するためconfig.py
、次のように編集する必要があります。
extensions = [
'sphinx.ext.autosectionlabel'
]
autosectionlabel_prefix_document = True
autosectionlabel_maxdepth
ため、autosectionlabelを機能させるには、その変数を> =に設定する必要があります2
。また、のようにドキュメントがサブディレクトリに生成される場合はhtml
、refの前にその名前を付ける必要があります:ref:'html/Installation:Homebrew'
。このため、のような一般的なディレクトリ名を選択してgenerated
、HTML以外の形式で参照を使用するときに見た目が悪くならないようにすることができます。このため、'Homebrew <Installation.html#Homebrew>'__
Sphinxに縛られずに、適切なreSTを使用することもできます。
html/
プレフィックスは必要ありませんでした