Beschriften und referenzieren Sie LaTeX-Gleichungen im org-Modus

14

Dies ähnelt dem Org-Export in Latex- und HTML-Referenzen , gilt jedoch für Gleichungen.

Ich verwende gerne LaTeX-Mathe-Schnipsel in meinen Org-Dateien wie in

* The Quadratic Equation
The roots of $ax^2 + bx + c$ are given by
\begin{equation}
\label{eq:1}
x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}
\end{equation}

According to Equation \ref{eq:1}, ...

Wenn ich nach LaTeX exportiere, \ref{eq:1}verwandelt sich das korrekt in einen Hyperlink zur Gleichung. Ich möchte aber folgendes zusätzliches Verhalten erreichen:

  1. In der Organisationsdatei kann ich auf den Text klicken \ref{eq:1}(der Text muss nicht sein \ref{eq:1}, ich möchte nur einen Hyperlink) und zur Gleichung weitergeleitet werden. Diese Funktionalität ist für Überschriften verfügbar, da [[The Quadratic Equation]]im Org-Modus darauf geklickt werden kann.

  2. Wenn ich nach HTML exportiere, möchte ich, dass die Referenzen erhalten bleiben (tatsächlich wird das Label (1) beim HTML-Export nicht einmal angezeigt).

Gibt es eine Möglichkeit, dies zu erreichen?

Kevin
quelle
Technisch ... die Gleichung einwickeln in #+begin_src latex... #+end_srcund dann, wenn Sie #+name: eq:1und platzieren #+label: eq:1, sollten Sie in der Lage sein, diesen Block so zu referenzieren, wie Sie möchten, dh einen Link zu verwenden [[eq:1][first equation]], aber aus irgendeinem Grund funktioniert es bei mir nicht (aber es könnte an den von mir vorgenommenen Änderungen liegen).
wvxvw
@wvxvw Wenn Sie das Verhalten nur über advices geändert haben , können Sie ohne Änderungen über testen emacs -Q. Dies hilft natürlich nicht, wenn Sie die Quellen direkt geändert haben.
Tobias
@Tobias nah, ich erinnere mich, dass ich Org-Code gepatcht habe, insbesondere etwas, das damit zusammenhängt, dass er \label{}in eine wörtliche Umgebung eingefügt wurde , aber ich müsste meine Änderungen ausgraben, um sicherzugehen, dass es meine Schuld ist. Es würde mir aber helfen, wenn jemand bestätigen könnte, dass der vorgeschlagene Weg mit #+nameetc funktioniert.
wvxvw
@wvxvw Beim HTML-Export bekomme ich <pre>/ </pre>-Tags um die equationUmgebung. Daher zeigt Firefox die Quelle und nicht die Gleichung.
Tobias
@Tobias, richtig, ich habe es komplett vergessen, du würdest auch das by-backendMakro von hier brauchen : orgmode.org/worg/org-contrib/babel/languages/…
wvxvw

Antworten:

15

Ich musste einige Tests ausführen, aber ich konnte eine kleine Datei ausführen, die korrekt in Latex und HTML exportiert wurde. Ich habe sie nur in org 8.2.10 getestet, sie sollte jedoch in anderen Versionen funktionieren.

Die Antwort ist die gleiche wie beim Org-Export in Latex- und HTML-Referenzen

Hier habe ich ein kleines Beispiel

*  This is a latex experiment
so with the text...
#+NAME: code:1
#+BEGIN_SRC shell-script
echo hello world 
#+END_SRC
[[code:1]] is a reference to src block

#+NAME: eqn:1
\begin{equation}
    f(x) =  \sum\limits_0^\infty(f^{(n)}(x)|_{x=0} \cdot x)
\end{equation}

And this is an equation [[eqn:1]]
Joafigue
quelle
Schön, das funktioniert bei mir sofort.
Tobias
Dies funktioniert auch in LaTeX, aber nicht für "out of the box" in HTML, da die Gleichung nicht einmal eine Zahl enthält (wahrscheinlich ist keine Mathjax-Option festgelegt). Nun, wenn nur RefTeX dies unterstützen würde, aber das ist eine andere Frage. Ich werde noch ein paar Tage warten, bevor ich mich anmelde, um zu sehen, ob sich noch jemand anmeldet :)
Kevin
Ich habe zugestimmt, sehe aber meine eigene Antwort unten (eine neuere Version von Org bietet sofortige Unterstützung).
Kevin
Ich erhalte "undefinierte Referenzen" in LaTeX. funktioniert bei mir nicht mit Emacs 24.5.1 (Org-Modus 8.2.10)
Reb.Cabin
1
Kann dies irgendwie auf mehrzeilige AMS-Umgebungen wie alignund erweitert werden subequations, in denen die Bezeichnung für Teile der Gleichung spezifisch ist?
kdb
5

Tatsächlich scheint der Org-Modus 8.3.1 eine eingebaute Unterstützung für die gestellten Fragen zu haben. labelund refarbeiten aus der Box.

Hierfür muss der Org-Modus über den Paket-Manager aktualisiert werden. Danach kleben Sie (package-initialize)in der Nähe des oberen Bereichs der Initialisierungsdatei.

BEARBEITEN. Dadurch können Sie nicht auf klicken \ref{...}und zum Etikett wechseln. Lesen Sie dazu die oben akzeptierte Antwort oder verwenden Sie org-ref .

Kevin
quelle
1
Aber Sie müssen nicht auf \ ref {.} Klicken, um zu \ label {.} Zu gelangen, oder?
rvf0068
Nein ich kann nicht. Dafür musst du entweder die Antwort von Joafigue verwenden oder meinen Kommentar zu github.com/jkitchin/org-ref lesen . Ich werde meine Antwort entsprechend anpassen.
Kevin
1

Wie unter Interne Links beschrieben .

Mit können Sie <<id>>Ihre Ziel-ID festlegen und mit [[id]]oder [[id][description]](Sie können diese C-c C-leinfügen) Ihr Ziel finden.

Dies funktioniert bei mir beim Exportieren nach HTML.

Ynjxsjmh
quelle