답변:
"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에 생성되는 경우 htmlrefs에 해당 이름을 접두사로 지정해야합니다.:ref:'html/Installation:Homebrew' .. 이러한 이유로 generatedHTML 이외의 형식과 함께 사용할 때 참조를 덜 이상하게 보이게하기 위해 와 같은 일반적인 디렉토리 이름을 선택할 수 있습니다 . 이 때문에 'Homebrew <Installation.html#Homebrew>'__적절한 reST를 사용하고 Sphinx에 묶이지 않는 것이 좋습니다.
html/접두사 가 필요하지 않았다