reST / Sphinx 페이지의 상호 참조를 동일한 문서 세트의 다른 페이지에있는 하위 헤더 또는 앵커에 삽입하는 방법은 무엇입니까?
답변
“reST / Sphinx”라는 표현은 질문의 범위를 명확하지 않게 만듭니다. 그것은 일반적으로 reStructuredText에 대한인가 와 스핑크스, 또는 단지 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를 사용할 때 사용하지 말 것을 권장합니다.
ref를 사용하는 것은 섹션에 대한 표준 reStructuredText 링크 (예 :
Section title
_) 를 사용하는 것이 좋습니다. 이는 파일간에, 섹션 제목이 변경 될 때 및 상호 참조를 지원하는 모든 빌더에 대해 작동하기 때문입니다.
RST, 일반
RST 파일을 HTML로 변환하는 도구에는 반드시 컬렉션 개념이있는 것은 아닙니다 . 예를 들어 github를 사용하여 RST 파일을 HTML로 변환하거나 rst2html
. 불행히도 원하는 결과를 얻기 위해 사용하는 다양한 방법은 사용중인 도구에 따라 다릅니다. 예를 들어, rst2html
파일 A.rst
을 사용 하고 파일 에서 “섹션”이라는 섹션에 파일 을 연결 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에 직접 액세스하는 것은 허용되지 않습니다.)
답변
2016 년 새롭고 더 나은 답변!
autosection 확장은 쉽게이 작업을 수행 할 수 있습니다.
=============
Some Document
=============
Internal Headline
=================
그럼 나중에 …
===============
Some Other Doc
===============
A link- :ref:`Internal Headline`
이 확장 기능은 내장되어 있으므로 편집 만하면됩니다. conf.py
extensions = [
.
. other
. extensions
. already
. listed
.
'sphinx.ext.autosectionlabel',
]
주의해야 할 유일한 사항은 이제 문서 컬렉션에서 내부 헤드 라인을 복제 할 수 없다는 것입니다. (그럴 가치가 있습니다.)
답변
예:
Hey, read the :ref:`Installation:Homebrew` section.
Homebrew
라는 다른 문서 내의 섹션은 어디에 있습니까 Installation.rst
?
이것은 자동 섹션 기능을 사용하므로 다음을 사용하여 편집해야합니다 config.py
.
extensions = [
'sphinx.ext.autosectionlabel'
]
autosectionlabel_prefix_document = True