Come inserire un riferimento incrociato in una pagina reST/Sfinge su un'intestazione secondaria o su un'ancora in un'altra pagina nello stesso set di documentazione?Aggiunta di un riferimento incrociato a un sottotitolo o ancora in un'altra pagina
risposta
Ignorare questa risposta, non funziona: un uso migliore la risposta da Louis
per l'ancora, è possibile definire i nomi di ancoraggio "corte" in questo modo:
.. _ShortAnchor:
Target Header goes here
=======================
Some text.
fare riferimento a tale uso intestazione:
For more details, see ShortAnchor_.
Nota, che questo espande anche ShortAnchor al nome completo dell'intestazione.
Si può anche utilizzare il nome completo di intestazione come:
See `Target Header goes here`_ chapter.
ma questo è più soggetto a errori di modifiche di testo dell'intestazione.
Tutto questo funziona su più file sorgente che fanno parte di una documentazione finale.
Questo non ha funzionato per me quando l'ancora a cui volevo fare riferimento era in un documento diverso, invece ho trovato che l'uso di: ref: funzionava comunque (si veda: http://sphinx.pocoo.org /markup/inline.html#cross-referencing-arbitrary-locations) –
Questo tipo di schivare la domanda. Cosa succede se ci sono nomi di intestazione duplicati, come si fa riferimento l'intestazione in un documento specifico? Cosa succede se non si desidera aggiungere nomi univoci ovunque? – davidism
@davidism L'uso di ancore corte ti rende responsabile della creazione di un codice univoco nell'intero set di documenti. Questa è una regola. Ti consente di spostare sezioni su pagine e ancore e riferimenti ancora funzionanti. Se vuoi usare intestazioni "lunghe" duplicate nel tuo set, fallo, le ancore corte permetteranno un riferimento esatto. –
L'espressione "reST/Sphinx" rende poco chiara la portata della domanda. Riguarda reStructuredText in generale e Sfinge, oppure solo su reStructuredText come utilizzato in Sfinge (e non in ReStructuredText in generale)? Sto andando a coprire sia in quanto persone che utilizzano RST sono probabilità di incorrere in entrambi i casi a un certo punto:
Sfinge
Oltre alle direttive specifiche del dominio che possono essere utilizzati per creare un collegamento a diverse entità come le classi (:class:
) c'è la direttiva generale :ref:
, documentata here. Danno questo esempio:
.. _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`.
Sebbene il meccanismo di collegamenti ipertestuali generale offerto dalla RST funziona nella Sfinge, la documentazione raccomanda di non usarlo quando si utilizza Sfinge:
Utilizzando ref è consigliato su link reStructuredText standard alle sezioni (come
Section title
_) perché funziona su tutti i file, quando le intestazioni delle sezioni sono cambiate e per tutti i costruttori che supportano riferimenti incrociati.
RST, in generale
Gli strumenti che convertono file RST in HTML non hanno necessariamente una nozione di raccolta. Questo è il caso ad esempio se ci si basa su github per convertire i file RST in HTML o se si utilizza uno strumento da riga di comando come rst2html
. Sfortunatamente, i vari metodi da utilizzare per ottenere il risultato desiderato variano a seconda dello strumento che si sta utilizzando.Per esempio, se si utilizza rst2html
e si desidera archiviare A.rst
collegare a una sezione chiamata "sezione" nel file other.rst
e si desidera che la finale HTML di lavorare in un browser, quindi A.rst
conterrebbe:
`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.
Hai per collegarsi al file HTML finale e devi sapere che cosa sarà la id
assegnata alla sezione. Se si vuole fare lo stesso per un file servito attraverso 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``.
Anche qui è necessario conoscere il id
dato alla sezione. Tuttavia, si collega al file RST poiché solo quando si accede al file RST viene creato l'HTML. (Al momento della stesura di questa risposta, l'accesso diretto all'HTML non è consentito.)
Un esempio completo è disponibile here.
Risposta molto migliore di quella accettata dal proprietario della domanda. (Nonostante il fatto che "RST, in generale", fosse una notizia deludente!) – dlm
Uno svantaggio della Sphinx '.. _my-reference-label:' l'approccio è che 'my-reference-label' è mostrato nell'URL dopo' # 'nel link. Quindi è necessario utilizzare nomi di etichette carini. Inoltre, il sommario crea sempre un collegamento "#" a "Sezione per il rimando", e quindi uno finisce con due diversi '#' -links nella stessa sezione. –
Nuova, migliore risposta per il 2016!
Il autosection extension consente di farlo facilmente.
=============
Some Document
=============
Internal Headline
=================
poi, più tardi ...
===============
Some Other Doc
===============
A link- :ref:`Internal Headline`
Questa estensione è built-in, quindi tutto ciò che serve è modificare conf.py
extensions = [
.
. other
. extensions
. already
. listed
.
'sphinx.ext.autosectionlabel',
]
L'unica cosa che dovete stare attenti di questo è che ora non è possibile duplicare i titoli interni nella raccolta di documenti. (Vale la pena.)
Da quando ho scritto questa risposta, ho scoperto in pratica un paio di problemi con questo approccio. Innanzitutto, la ridenominazione delle sezioni è un problema. In secondo luogo, spesso hai titoli di sezioni brevi come "Ulteriori informazioni" o "panoramica" che vuoi utilizzare, cosa che non puoi fare se lo stai facendo.Soluzione: aggiungi il titolo della sezione quando/se rinomini; aggiungi un titolo di sezione per i titoli delle sezioni brevi (come '_page-title-learn-more'). È un po 'fastidioso, ma mi piace ancora di più affidarsi all'autosection. –
Sphinx 1.6 introduce l'opzione di configurazione ['' autosectionlabel_prefix_document''] (http://www.sphinx-doc.org/en/stable/ext/autosectionlabel.html#confval-autosectionlabel_prefix_document) che consente di evitare il problema dei titoli duplicati prefisso ogni etichetta di sezione con il nome del documento da cui proviene. – pmos
- 1. Aggiunta di un riferimento a Intestazione da un controllo
- 2. Aggiunta di un nuovo blocco di riferimento a Magento
- 3. Maven: aggiunta di un riferimento a un progetto padre pom
- 4. Riferimento incrociato XSL
- 5. Come sovrascrivere un sottotitolo in Moose :: Role?
- 6. Campo incrociato con un numero grande o indefinito di categorie
- 7. Dare ai grafici un sottotitolo in matplotlib
- 8. Restituzione di un riferimento a una variabile locale o temporanea
- 9. Aggiunta di un riferimento jar esterno in Android.m
- 10. È sicuro associare un riferimento a un oggetto non ancora costruito in C++?
- 11. Riferimento a un riferimento in C++
- 12. aggiunta di una console a un Jframe
- 13. Sfinge: articolo indicizzato con riferimento incrociato
- 14. aggiunta di un evento click a fullcalendar
- 15. Aggiunta di un riferimento "winmd" rispetto all'aggiunta di un riferimento al progetto
- 16. Come si passa un intervallo a un sottotitolo in VBA di Word?
- 17. Memorizzare un riferimento a un riferimento in Python?
- 18. Come riferimento incrociato un'equazione in un file di aiuto R/roxygen2
- 19. Aggiunta di un passaggio a gcc?
- 20. Aggiunta di un controllo a un elenco di controlli dinamicamente
- 21. Aggiunta di un riferimento tra i progetti Java di Eclipse
- 22. Salvataggio di un riferimento a un int
- 23. Ancora denominata in un'applicazione a singola pagina (SPA)
- 24. Riferimento a un puntatore
- 25. Aggiunta o rimozione efficiente di elementi a un vettore o elenco in R?
- 26. Aggiunta di elementi a un array C#
- 27. Aggiunta di tag CSS personalizzati a un documento html RMarkdown
- 28. Un riferimento a un delegato costituisce un riferimento a un oggetto (per impedire la garbage collection)?
- 29. In C++ 11, c'è ancora la necessità di passare un riferimento a un oggetto che accetterà l'output di una funzione?
- 30. Aggiunta di un intero a NSMutableArray
Possibile duplicato di [Come creare un hyper link interno nella documentazione della sfinge] (https://stackoverflow.com/questions/4385315/how-to-make-an-internal-hyper-link- in-sphinx-documentation) –