2010-04-21 15 views
23

Beim Schreiben von RST, die mit Sphinx verarbeitet werden, kann die Sphinx LaTeX-Ausgabe keine Zahlen verwenden, wenn auf Zahlen verwiesen wird. Zum Beispiel dieser Code:Referenzieren von Zahlen mit Sphinx und reStructuredText

Die Lemminge angreifen, wie in zu sehen Sie kommen:

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

.. _figlem: 

.. figure:: _static/lemming_invasion.* 

    They're coming! 

Wird in diese umgewandelt werden!

/Bild geht hier/

Abbildung 1.1: Sie kommen!

Aber was ich will, ist der "Standard" LaTeX Art und Weise der Referenzierung Zahlen wie folgt aus:

Die Lemminge angreifen, kann als in Abbildung 1.1

gesehen werden, wie erreiche ich das? Der Code, den ich momentan verwende, ist das, was das Sphinx-Handbuch empfiehlt, aber es produziert nicht die Ausgabe, die ich möchte.

+0

Sieht aus wie ein wichtiges Merkmal auf Anfrage. – fccoelho

+0

Haben Sie jemals eine Lösung gefunden? Ich brauche diese Funktion wirklich. – jterrace

+0

@jterrace Nein, hat nie die Lösung gefunden. – Lucas

Antwort

17

Die Erweiterung numfig macht genau dies. Ich habe es versucht und es hat für mich funktioniert.

+0

Danke! Das funktioniert wie ein Zauber für mich. –

+1

Dies funktionierte zunächst nicht für mich (für HTML), aber ich habe den Fix von 'rrieber' hier verwendet: https://bitbucket.org/arjones6/sphinx-numfig/issue/6/notimplementederror-unknown-node-num_ref und konnte es zur Arbeit bringen. Vielen Dank! –

+0

Wie hast du es zur Arbeit gebracht? Die Diff-Datei, die von rrieber zur Verfügung gestellt wird, stimmt nicht mit der numfig.py überein, die ich aus diesem Bitbucket-Repository geholt habe. –

0

Man kann rohen Latexcode inline verwenden. Für das obige Beispiel wird zunächst eine Rolle für den Rohlatex-Code definiert und dann mit dem Latex-Befehl auf die Figur verwiesen und mit dem Latex-Befehl \label{} eine Beschriftung auf die Figur gesetzt.

sollten folgende Arbeiten:

.. 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}` 

Beachten Sie, dass die \label{} Befehl innerhalb der Beschriftung in der tex-Datei angezeigt wird, aber es ist immer noch akzeptabel, indem sie zumindest pdflatex. Beachten Sie auch, dass vor :raw-latex mindestens ein Leerzeichen stehen sollte.

5

Um die akzeptierte Antwort zu erweitern, können Sie diese Einrichtung schnell wie folgt einrichten. Legen Sie die Datei numfig.py in Ihr Verzeichnis source. Dann conf.py öffnen und die Zeile Kommentar-, der sagt

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

Dann 'numfig' zur Liste extensions hinzuzufügen.

Um in Ihrem rst Dokument erstes Etikett Ihre Figur zu verwenden (zB fig-main):

.. _fig-main: 

.. figure:: main.png 

    This is the figure caption. 

Schließlich können Sie ihre Zahl Nummer mit der :num: Richtlinie, wie diese Referenz:

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

Dies ist jetzt eingebaut und die Inline-Rolle heißt: numref http://www.sphinx-doc.org/en/stable/markup/inline.html#cross-referencing-figures-by-figure-number –

12

In den neuesten Versionen von Sphinx (1.3+), Zahlen zu nummerieren und sie aus dem Text zu referenzieren, wurde ein wenig einfacher, da die Unterstützung dafür jetzt eingebaut ist.

In Ihrem Text, können Sie so etwas wie tun:

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


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

Das Endergebnis sollte so etwas wie „In Bild 1.1 Sie sehen können ...“. Diese Technik funktioniert sowohl mit der Standard-HTML-Ausgabe als auch mit der LaTeX-Ausgabe.

Stellen Sie in Ihrer conf.py Datei sicher, dass Sie das Flag numfig = True setzen. Es gibt auch Konfigurationsoptionen für das Textformat der Referenzen (numfig_format und numfig_secnum_depth).

Referenzen:

+0

Sie sind richtig. Dies funktioniert sowohl für HTML als auch LaTeX (obwohl die Sphinx-Dokumentation sagt, dass es nur für HTML funktioniert). – mzjn

Verwandte Themen