Yanıtlar:
"ReST / Sphinx" ifadesi sorunun kapsamını belirsizleştiriyor. Genel olarak reStructuredText ve Sphinx ile mi ilgili , yoksa yalnızca Sphinx'te kullanılan reStructuredText ile mi ilgili (ve genel olarak reStructuredText değil)? Her ikisini de ele alacağım çünkü RST kullanan kişiler bir noktada her iki durumla da karşılaşacaklar:
Sınıflar ( :class:
) gibi çeşitli varlıklara bağlanmak için kullanılabilecek alana özgü yönergelerin yanı sıra, burada:ref:
belgelenen genel bir yönerge de vardır . Bu örneği veriyorlar:
.. _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 tarafından sunulan genel köprü oluşturma mekanizması Sphinx'te çalışsa da, dokümantasyon Sphinx'i kullanırken bunu kullanmamanızı tavsiye ediyor:
Ref kullanımı, bölümlere olan standart reStructuredText bağlantıları yerine (
Section title
_ gibi ) tavsiye edilir çünkü dosyalar arasında, bölüm başlıkları değiştirildiğinde ve çapraz referansları destekleyen tüm oluşturucular için çalışır.
RST dosyalarını HTML'ye dönüştüren araçlar mutlaka bir koleksiyon kavramına sahip değildir . Örneğin, RST dosyalarını HTML'ye dönüştürmek için github'a güveniyorsanız veya gibi bir komut satırı aracı kullanıyorsanız, durum budur rst2html
. Ne yazık ki, istenen sonucu elde etmek için kullanılacak çeşitli yöntemler, kullandığınız araca bağlı olarak değişir. Örneğin, rst2html
file kullanıyorsanız ve dosyada A.rst
"Bölüm" adlı bir bölüme bağlanmak other.rst
istiyorsanız ve son HTML'nin bir tarayıcıda çalışmasını A.rst
istiyorsanız , o zaman şunları içerir:
`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.
Son HTML dosyasına bağlanmanız ve id
bölüme verilenin ne olacağını bilmeniz gerekir. Aynı şeyi github üzerinden sunulan bir dosya için yapmak istiyorsanız:
`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``.
Burada da id
bölüme verilenleri bilmeniz gerekiyor . Ancak, RST dosyasına bağlantı oluşturursunuz, çünkü HTML yalnızca RST dosyasına erişildiğinde oluşturulur. (Bu cevabı yazarken, HTML'ye doğrudan erişime izin verilmez.)
Tam bir örnek burada mevcuttur .
RST, in General
, hayal kırıklığı yaratan bir haberdi!)
.. _my-reference-label:
yaklaşımının bir dezavantajı , bağlantıdan my-reference-label
sonra URL'de gösterilmesidir #
. Bu yüzden güzel etiket isimleri kullanmak gerekir. Ayrıca, TOC her zaman bir #
-bağlantı oluşturur Section to cross-reference
ve bu nedenle biri #
aynı bölüme iki farklı bağlantıyla son bulur.
:ref:`Link title <lmy-reference-label>`
2016 için yeni, daha iyi yanıt!
Otomatik bölüm uzantısı bunu kolayca yapmanızı sağlar.
=============
Some Document
=============
Internal Headline
=================
daha sonra...
===============
Some Other Doc
===============
A link- :ref:`Internal Headline`
Bu uzantı yerleşiktir, bu nedenle tek ihtiyacınız olan şey düzenlemek conf.py
extensions = [
.
. other
. extensions
. already
. listed
.
'sphinx.ext.autosectionlabel',
]
Dikkat etmeniz gereken tek şey, artık belge koleksiyonunda dahili başlıkları kopyalayamayacağınızdır. (Buna değer.)
_page-title-learn-more
). Biraz can sıkıcı ama yine de çoğunlukla otomatik kesmeye güvenmeyi seviyorum.
autosectionlabel_prefix_document
yapılandırma seçeneğini sunar .
:ref:`Link title <Internal Headline>`
. Ayrıca,:doc:`quickstart`
Misal:
Hey, read the :ref:`Installation:Homebrew` section.
Homebrew
adlı farklı bir belgenin içindeki bir bölüm nerede Installation.rst
.
Bu, otomatik algılama özelliğini kullanır , bu nedenle config.py
aşağıdakilerle düzenlemeniz gerekir :
extensions = [
'sphinx.ext.autosectionlabel'
]
autosectionlabel_prefix_document = True
autosectionlabel_maxdepth
, bu nedenle otomatik bölüm etiketinin çalışması için bu değişkeni> = olarak ayarlamanız gerekir 2
. Docs dizine yazma üretilir Ayrıca, gibi html
, onun adıyla ref önek gerekir: :ref:'html/Installation:Homebrew'
. Bu nedenle generated
, HTML dışındaki biçimlerle kullanıldığında referansları daha az tuhaf hale getirmek için bazı genel dizin isimleri seçmek isteyebilirsiniz . Bu nedenle, 'Homebrew <Installation.html#Homebrew>'__
Sfenks'e bağlı kalmadan, doğru reST kullanmaya devam edebilirsiniz .
html/
önek