2010-04-21 5 views
23

Quando si scrive RST che verrà elaborato con Sphinx, non è possibile ottenere l'output di Sphinx LaTeX per utilizzare i numeri di figura quando si fa riferimento alle cifre. Per esempio, questo codice:Riferimenti a cifre con numeri in Sfinge e Testo ricostruito

The lemmings are attacking, as can be seen in :ref:`figlem`. 

.. _figlem: 

.. figure:: _static/lemming_invasion.* 

    They're coming! 

sarà convertito in questo:

I lemming stanno attaccando, come si può vedere nel Stanno arrivando!

/immagine va qui/

Figura 1.1: Stanno arrivando!

Ma quello che voglio è il modo "standard" LaTeX di figure che fanno riferimento, in questo modo:

I lemming stanno attaccando, come si può visto in Figura 1.1

Come faccio a raggiungere questo? Il codice che sto attualmente usando è quello che raccomanda il manuale Sphinx, ma non produce l'output che voglio.

+0

si presenta come un elemento importante alla richiesta. – fccoelho

+0

Hai mai trovato una soluzione a questo? Ho davvero bisogno di questa funzionalità. – jterrace

+0

@jterrace No, non ho mai trovato la soluzione. – Lucas

risposta

17

L'estensione numfig fa esattamente questo. L'ho provato e ha funzionato per me.

+0

Grazie! Questo funziona come un fascino per me. –

+1

Inizialmente non funzionava per me (per HTML), ma ho usato la correzione da 'rrieber' qui: https://bitbucket.org/arjones6/sphinx-numfig/issue/6/notimplementederror-unknown-node-num_ref ed è stato in grado di farlo funzionare. Grazie! –

+0

Come hai fatto a farlo funzionare? Il file diff fornito da rrieber non corrisponde al numfig.py che ho preso da quel repository di bitbucket. –

0

Uno può utilizzare il codice in lattice grezzo, in linea. Per l'esempio sopra, un ruolo per codice grezzo in lattice viene prima definito e utilizzato per fare riferimento alla figura con il comando \ref{} latex e per impostare un'etichetta per la figura con il comando \label{} latex.

Il seguente dovrebbe funzionare:

.. role:: raw-latex(raw) 
    :format: latex 

The lemmings are attacking, as can be seen in :ref:`figlem` 
on figure :raw-latex:`\ref{pic:lem}`. 

.. _figlem: 

.. figure:: _static/lemming_invasion.* 

    They're coming! :raw-latex:`\label{pic:lem}` 

Nota che verrà visualizzato il comando \label{} all'interno del sottotitolo nel file tex, ma è ancora accettabile, almeno per pdflatex. Si noti inoltre che deve esserci almeno uno spazio prima dello :raw-latex.

5

Per espandere la risposta accettata, è possibile ottenere rapidamente questa configurazione come segue. Inserire il file numfig.py nella directory source. Quindi aprire conf.py e togliere il commento alla riga che dice

sys.path.insert(0, os.path.abspath('.')) 

Quindi aggiungere 'numfig' alla lista extensions.

da utilizzare nel documento rst, prima etichetta la tua figura (ad esempio, fig-main):

.. _fig-main: 

.. figure:: main.png 

    This is the figure caption. 

Infine, è possibile fare riferimento il suo numero di figura utilizzando la direttiva :num:, in questo modo:

Refer to the main figure (Figure :num:`fig-main`). 
+1

Questo è ora integrato e il ruolo inline è chiamato: numref http://www.sphinx-doc.org/en/stable/markup/inline.html#cross-referencing-figures-by-figure-number –

12

Nelle ultime versioni di Sfinge (1.3+), la numerazione delle cifre e la loro referenziazione dal testo sono diventate un po 'più semplici in quanto il supporto per questo è ora integrato.

nel testo, si può fare qualcosa di simile:

.. _label: 
.. figure:: images/figure.* 


At :numref:`label` you can see... 

Il risultato finale dovrebbe essere qualcosa del tipo "A Fig 1.1 è possibile vedere ...". Questa tecnica funziona sia con l'output HTML predefinito che con l'output LaTeX.

Nel file conf.py, assicurarsi di impostare il flag numfig = True. Esistono anche opzioni di configurazione per il formato di testo dei riferimenti (numfig_format e numfig_secnum_depth).

Riferimenti:

+0

You sono giusti. Funziona sia per HTML che per LaTeX (anche se la documentazione di Sphinx dice che funziona solo per HTML). – mzjn