답변:
"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 파일을 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에 직접 액세스하는 것은 허용되지 않습니다.)
RST, in General
실망스런 소식 임에도 불구하고 !)
.. _my-reference-label:
접근 방식 의 단점은 링크 my-reference-label
뒤의 URL에 표시 된다는 것 입니다 #
. 따라서 예쁜 레이블 이름을 사용해야합니다. 또한 TOC는 항상에 대한- #
링크를 생성 Section to cross-reference
하므로 #
동일한 섹션에 대한 두 개의 서로 다른- 링크로 끝납니다 .
: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
. 또한 문서가과 같이 subdir에 생성되는 경우 html
refs에 해당 이름을 접두사로 지정해야합니다.:ref:'html/Installation:Homebrew'
.. 이러한 이유로 generated
HTML 이외의 형식과 함께 사용할 때 참조를 덜 이상하게 보이게하기 위해 와 같은 일반적인 디렉토리 이름을 선택할 수 있습니다 . 이 때문에 'Homebrew <Installation.html#Homebrew>'__
적절한 reST를 사용하고 Sphinx에 묶이지 않는 것이 좋습니다.
html/
접두사 가 필요하지 않았다