Jak wstawić odsyłacz na stronie reST / Sphinx do nagłówka podrzędnego lub kotwicy na innej stronie w tym samym zestawie dokumentacji?
python-sphinx
restructuredtext
Sue Walsh
źródło
źródło
Odpowiedzi:
Wyrażenie „reST / Sphinx” sprawia, że zakres pytania jest niejasny. Czy chodzi o reStructuredText w ogóle i Sphinx, czy tylko o reStructuredText używane w Sphinx (a nie o reStructuredText w ogóle)? Omówię oba, ponieważ ludzie używający RST prawdopodobnie napotkają w pewnym momencie oba przypadki:
Sfinks
Oprócz dyrektyw specyficznych dla domeny, które mogą być używane do łączenia się z różnymi jednostkami, takimi jak class (
:class:
), istnieje:ref:
dyrektywa ogólna , udokumentowana tutaj . Podają ten przykład:Chociaż ogólny mechanizm hiperłączy oferowany przez RST działa w Sphinx, dokumentacja odradza używanie go podczas korzystania z Sphinx:
RST, ogólnie
Narzędzia konwertujące pliki RST na HTML niekoniecznie mają pojęcie kolekcji . Dzieje się tak na przykład, jeśli korzystasz z github do konwersji plików RST do HTML lub jeśli używasz narzędzia wiersza poleceń, takiego jak
rst2html
. Niestety, różne metody uzyskiwania pożądanego rezultatu różnią się w zależności od używanego narzędzia. Na przykład, jeśli używaszrst2html
i chcesz, aby plikA.rst
łączył się z sekcją o nazwie „Sekcja” w plikuother.rst
i chcesz, aby ostateczny kod HTML działał w przeglądarce,A.rst
powinien zawierać:Musisz
id
podać link do ostatecznego pliku HTML i wiedzieć, jakie będzie dane sekcji. Jeśli chcesz zrobić to samo dla pliku udostępnianego przez github:Tutaj również musisz znać
id
podane w sekcji. Jednak łączysz się z plikiem RST, ponieważ dopiero po uzyskaniu dostępu do pliku RST tworzony jest kod HTML. (W chwili pisania tej odpowiedzi bezpośredni dostęp do kodu HTML nie jest dozwolony).Pełny przykład jest dostępny tutaj .
źródło
RST, in General
rozczarowująca wiadomość!).. _my-reference-label:
podejścia Sphinx jest to, żemy-reference-label
jest wyświetlany w adresie URL po#
linku. Trzeba więc używać ładnych nazw etykiet. Ponadto spis treści zawsze tworzy#
-link doSection to cross-reference
, a więc kończy się to dwoma różnymi#
-linkami do tej samej sekcji.:ref:`Link title <lmy-reference-label>`
Nowa, lepsza odpowiedź na rok 2016!
Przedłużenie sekcji opryskiwacza pozwala to zrobić łatwo.
potem, później ...
To rozszerzenie jest wbudowane, więc wszystko, czego potrzebujesz, to edycja
conf.py
Jedyną rzeczą, na którą musisz uważać, jest to, że nie możesz teraz powielać nagłówków wewnętrznych w całej kolekcji dokumentów. (Warto było.)
źródło
_page-title-learn-more
). To trochę denerwujące, ale nadal lubię polegać głównie na autosekcji.autosectionlabel_prefix_document
opcję konfiguracji, która pozwala uniknąć problemu z powielonymi nagłówkami, poprzedzając każdą etykietę sekcji nazwą dokumentu, z którego pochodzi.:ref:`Link title <Internal Headline>`
. Możesz również utworzyć łącze bezpośrednio do strony (na przykład:doc:`quickstart`
Przykład:
gdzie
Homebrew
jest sekcja wewnątrz innego dokumentu o nazwieInstallation.rst
.Korzysta z funkcji autosekcji , więc będzie trzeba edytować
config.py
z następującymi elementami :źródło
autosectionlabel_maxdepth
, więc aby autosectionlabel działał, musisz ustawić tę zmienną na> =2
. Ponadto, jeśli są generowane docs do podkatalogu, podobniehtml
, należy poprzedzić bibl z nazwy::ref:'html/Installation:Homebrew'
. Z tego powodu możesz wybrać ogólną nazwę katalogu, na przykładgenerated
, aby referencje były mniej dziwne, gdy są używane z formatami innymi niż HTML. Z tego powodu możesz równie dobrze'Homebrew <Installation.html#Homebrew>'__
użyć odpowiedniego reST i nie być przywiązanym do Sfinksa.html/
prefiksu