Oznacz i odczytaj równania LaTeX w trybie org

15

Jest to podobne do eksportowania do lateksu i odniesień HTML , ale w przypadku równań.

Lubię używać fragmentów matematycznych LaTeX w moich plikach org, jak w

* 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}, ...

Kiedy eksportuję do LaTeX, \ref{eq:1}poprawnie zmienia się w hiperłącze do równania. Ale chcę osiągnąć następujące dodatkowe zachowanie:

  1. W pliku org mogę kliknąć tekst \ref{eq:1}(tekst nie musi być \ref{eq:1}, chcę tylko hiperłącze) i przejść do równania. Ta funkcja jest dostępna dla nagłówków, ponieważ można ją [[The Quadratic Equation]]kliknąć w trybie Org.

  2. Kiedy eksportuję do HTML, chcę, aby referencje były przechowywane (w rzeczywistości etykieta (1) nawet nie pojawia się w eksporcie HTML).

Czy istnieje sposób na osiągnięcie tego?

Kevin
źródło
Technicznie ... zawijając równanie do #+begin_src latex... #+end_srca następnie, jeśli umieścisz #+name: eq:1i #+label: eq:1, powinieneś być w stanie odwołać się do tego bloku tak, jak chcesz, tj. Używając linku [[eq:1][first equation]], ale z jakiegoś powodu to nie działa dla mnie (ale może to być spowodowane wprowadzonymi przeze mnie zmianami).
wvxvw
@wvxvw Jeśli zmieniłeś zachowanie przez advices, tylko możesz testować bez zmian przez emacs -Q. Oczywiście nie pomaga to w przypadku bezpośredniej zmiany źródeł.
Tobias
@Tobias, nie, pamiętam łatanie kodu organizacji, w szczególności coś związanego z wstawianiem go \label{}do pełnego środowiska, ale musiałbym wykopać moje zmiany, aby upewnić się, że to moja wina. Pomogłoby mi to, gdyby ktoś mógł potwierdzić, że sugerowany sposób z #+nameetc działa.
wvxvw,
@wvxvw W html-export dostaję <pre>/ </pre>-Tagi wokół equationśrodowiska. Dlatego firefox pokazuje źródło, a nie równanie.
Tobias
@Tobias, racja, zupełnie o tym zapomniałem, potrzebujesz również by-backendmakra tutaj: orgmode.org/worg/org-contrib/babel/languages/…
wvxvw

Odpowiedzi:

15

Musiałem uruchomić test, ale udało mi się uruchomić mały plik, który poprawnie eksportuje zarówno do lateksu, jak i HTML, testowałem tylko w org 8.2.10, ale powinien działać na innych wersjach.

Odpowiedź jest w rzeczywistości taka sama jak w przypadku eksportu Orga do referencji lateksowych i HTML

Tutaj mam mały przykład

*  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
źródło
Fajnie, to działa dla mnie po wyjęciu z pudełka.
Tobias
Działa to również dla mnie w LaTeX, ale nie działa w trybie „po wyjęciu z pudełka” w HTML, ponieważ równanie nie ma nawet liczby (pewna opcja Mathjax prawdopodobnie nie jest ustawiona). Teraz, jeśli tylko RefTeX by to obsługiwał, ale to kolejne pytanie. Poczekam jeszcze kilka dni, zanim zaakceptuję, aby sprawdzić, czy ktoś jeszcze zagra :)
Kevin
Zaakceptowałem, ale zobacz moją własną odpowiedź poniżej (późniejsza wersja Org ma wsparcie po wyjęciu z pudełka).
Kevin
Otrzymuję „niezdefiniowane referencje” w LaTeX; nie działa dla mnie z Emacsem 24.5.1 (tryb Org 8.2.10)
Reb.Cabin
1
Czy można to jakoś rozszerzyć na wieloliniowe środowiska AMS, takie jak aligni subequations, gdzie etykieta jest specyficzna dla części równania?
kdb
5

W rzeczywistości wydaje się, że tryb Org 8.3.1 ma wbudowaną obsługę tego, o co pyta pytanie; labeli refpracować po wyjęciu z pudełka.

Wymaga to aktualizacji trybu organizacji za pomocą menedżera pakietów; następnie trzymaj się (package-initialize)blisko góry pliku inicjującego.

EDYTOWAĆ. Nie pozwala to na kliknięcie \ref{...}i przejście do etykiety. W tym celu zapoznaj się z zaakceptowaną odpowiedzią powyżej lub użyj org-ref .

Kevin
źródło
1
Ale nie możesz kliknąć \ ref {.}, Aby przejść do \ label {.}, Prawda?
rvf0068
Nie, nie mogę. W tym celu musisz użyć powyższej odpowiedzi Joafigue lub zobaczyć mój komentarz powyżej dotyczący github.com/jkitchin/org-ref . Zmienię swoją odpowiedź, aby to odzwierciedlić.
Kevin
1

Jak opisano w linkach wewnętrznych .

Możesz użyć, <<id>>aby ustawić identyfikator celu i użyć [[id]]lub [[id][description]](Możesz użyć, C-c C-laby wstawić to), aby znaleźć swój cel.

Działa to dla mnie podczas eksportowania do HTML.

Ynjxsjmh
źródło