Etiquete y haga referencia a las ecuaciones de LaTeX en modo org

14

Esto es similar a la exportación de Org a referencias de látex y HTML , pero para ecuaciones.

Me gusta usar fragmentos matemáticos de LaTeX en mis archivos de organización, como en

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

Cuando exporto a LaTeX, el \ref{eq:1}correctamente se convierte en un hipervínculo a la ecuación. Pero quiero lograr el siguiente comportamiento adicional:

  1. Dentro del archivo de organización, puedo hacer clic en el texto \ref{eq:1}(el texto no tiene que ser \ref{eq:1}, solo quiero un hipervínculo) y ser llevado a la ecuación. Esta funcionalidad está presente para los encabezados, ya que se [[The Quadratic Equation]]hace clic en el modo Org.

  2. Cuando exporto a HTML, quiero que se mantengan las referencias (en realidad, la etiqueta (1) ni siquiera aparece en la exportación de HTML).

¿Hay alguna manera de lograr esto?

Kevin
fuente
Técnicamente ... envolviendo la ecuación en #+begin_src latex... #+end_srcy luego, si coloca #+name: eq:1y #+label: eq:1, debería poder hacer referencia a este bloque de la manera que desee, es decir, utilizando un enlace [[eq:1][first equation]], pero por alguna razón no funciona para mí (pero podría deberse a los cambios que he realizado).
wvxvw
@wvxvw Si cambiaste el comportamiento advicesolo a través de s, puedes probar sin cambios a través de emacs -Q. Naturalmente, esto no ayuda si cambia las fuentes directamente.
Tobias
@Tobias nah, recuerdo haber parcheado el código Org, específicamente algo relacionado con su inserción \label{}en el entorno literal, pero tendría que desenterrar mis cambios para asegurarme de que es mi culpa. Sin embargo, me ayudaría si alguien pudiera confirmar que la forma sugerida con #+nameetc. funciona.
wvxvw
@wvxvw En html-export obtengo <pre>/ </pre>-Tags alrededor del equationentorno. Por lo tanto, firefox muestra la fuente y no la ecuación.
Tobias
@Tobias, claro, lo olvidé por completo, también necesitarías la by-backendmacro desde aquí: orgmode.org/worg/org-contrib/babel/languages/…
wvxvw

Respuestas:

15

Tuve que ejecutar algunas pruebas, pero logré ejecutar un pequeño archivo que se exporta correctamente a látex y HTML, probé solo en la organización 8.2.10, pero debería funcionar en otras versiones.

La respuesta es en realidad la misma que en la exportación de Org a referencias de látex y HTML

Aquí tengo un pequeño ejemplo.

*  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
fuente
Agradable, esto me funciona fuera de la caja.
Tobias
Esto también funciona para mí en LaTeX, pero no funciona para "fuera de la caja" en HTML, ya que la ecuación ni siquiera tiene un número (probablemente no se esté configurando alguna opción de Mathjax). Ahora, si RefTeX solo admitiera esto, pero esa es otra pregunta. Esperaré un par de días más antes de aceptar, para ver si alguien más interviene :)
Kevin
Acepté, pero veo mi propia respuesta a continuación (la versión posterior de Org tiene soporte fuera de la caja).
Kevin
Obtengo "referencias indefinidas" en LaTeX; no funciona para mí con Emacs 24.5.1 (modo Org 8.2.10)
Reb.Cabin
1
¿Puede esto de alguna manera extenderse a entornos AMS multilínea como aligny subequations, donde la etiqueta es específica de partes de la ecuación?
kdb
5

En realidad, parece que el modo Org 8.3.1 tiene soporte incorporado para lo que está haciendo la pregunta; labely reftrabajar fuera de la caja.

Esto requiere que uno actualice el modo Org a través del administrador de paquetes; luego, quédese (package-initialize)cerca de la parte superior del archivo de inicialización.

EDITAR. Esto no le permite hacer clic \ref{...}e ir a la etiqueta. Para eso, vea la respuesta aceptada arriba, o use org-ref .

Kevin
fuente
1
Pero no puede hacer clic en \ ref {.} Para ir a \ label {.}, ¿Verdad?
rvf0068
No, no puedo. Para eso, debe usar la respuesta de Joafigue anterior o ver mi comentario anterior con respecto a github.com/jkitchin/org-ref . Editaré mi respuesta para reflejar eso.
Kevin
1

Como se describe en Enlaces internos .

Puede usar <<id>>para establecer su identificación de destino y usar [[id]]o [[id][description]](Puede usar C-c C-lpara insertar esto) para encontrar su objetivo.

Esto funciona para mí al exportar a HTML.

Ynjxsjmh
fuente