Etichetta e riferimento alle equazioni LaTeX in modalità org


14

Questo è simile all'esportazione dell'organizzazione in lattice e riferimenti HTML , ma per equazioni.

Mi piace usare i frammenti di matematica LaTeX nei miei file organizzativi, come 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}, ...

Quando esporto in LaTeX, \ref{eq:1}si trasforma correttamente in un collegamento ipertestuale all'equazione. Ma voglio ottenere il seguente comportamento aggiuntivo:

  1. All'interno del file org, posso fare clic sul testo \ref{eq:1}(il testo non deve essere \ref{eq:1}, voglio solo un collegamento ipertestuale) ed essere portato all'equazione. Questa funzionalità è presente per le intestazioni, poiché [[The Quadratic Equation]]diventa selezionabile in modalità Org.

  2. Quando esporto in HTML, voglio mantenere i riferimenti (in realtà, l'etichetta (1) non compare nemmeno nell'esportazione HTML).

C'è un modo per raggiungere questo obiettivo?


Tecnicamente ... avvolgendo l'equazione in #+begin_src latex... #+end_srce quindi, se si posiziona #+name: eq:1e #+label: eq:1, si dovrebbe essere in grado di fare riferimento a questo blocco nel modo desiderato, ovvero utilizzando un collegamento [[eq:1][first equation]], ma per qualche motivo non funziona per me (ma potrebbe essere dovuto alle modifiche che ho apportato).
wvxvw,

@wvxvw Se il comportamento è stato modificato advicesolo tramite s, è possibile verificare senza modifiche tramite emacs -Q. Naturalmente, questo non aiuta se hai cambiato direttamente le fonti.
Tobias,

@Tobias nah, ricordo di aver corretto il codice Org, in particolare qualcosa collegato al suo inserimento \label{}nell'ambiente testuale, ma avrei bisogno di scavare le mie modifiche per assicurarmi che fosse colpa mia. Mi aiuterebbe però, se qualcuno potesse confermare che il modo suggerito con #+nameetc funziona.
wvxvw,

@wvxvw A html-export ottengo <pre>/ </pre>-Tags in tutto l' equationambiente. Pertanto, Firefox mostra l'origine e non l'equazione.
Tobias,

@Tobias, giusto, me ne sono completamente dimenticato, avresti anche bisogno della by-backendmacro da qui: orgmode.org/worg/org-contrib/babel/languages/…
wvxvw

Risposte:


15

Ho dovuto eseguire alcuni test, ma sono riuscito a eseguire un piccolo file che esporta correttamente in latex e HTML, ho testato solo in org 8.2.10, ma dovrebbe funzionare su altre versioni.

La risposta è in realtà la stessa dell'esportazione dell'organizzazione in lattice e riferimenti HTML

Qui ho un piccolo esempio

*  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]]

Bene, questo funziona per me fuori dagli schemi.
Tobias,

Questo funziona anche per me in LaTeX, ma non funziona per "out of the box" in HTML, poiché l'equazione non ha nemmeno un numero (alcune opzioni di Mathjax non sono state impostate, probabilmente). Ora, se solo RefTeX lo supportasse, ma questa è un'altra domanda. Aspetterò ancora un paio di giorni prima di accettare, per vedere se qualcun altro entrerà in campo :)
Kevin,

Ho accettato, ma vedi la mia risposta di seguito (la versione successiva di Org ha il supporto pronto all'uso).
Kevin,

Ottengo "riferimenti indefiniti" in LaTeX; non funziona per me con Emacs 24.5.1 (modalità Org 8.2.10)
Reb.Cabin

1
Questo può in qualche modo essere esteso ad ambienti AMS multilinea come aligne subequations, dove l'etichetta è specifica per parti dell'equazione?
kdb,

5

In realtà, sembra che la modalità Org 8.3.1 abbia il supporto integrato per ciò che la domanda sta ponendo; labele reflavorare fuori dagli schemi.

Ciò richiede l'aggiornamento della modalità Org tramite il gestore pacchetti; in seguito, resta (package-initialize)vicino alla parte superiore del file di inizializzazione.

MODIFICARE. Ciò non consente di fare clic su \ref{...}e andare all'etichetta. Per questo, consulta la risposta accettata sopra o usa org-ref .


1
Ma non puoi fare clic su \ ref {.} Per andare a \ label {.}, Giusto?
rvf0068,

No, non posso. Per questo, devi usare la risposta di Joafigue sopra o vedere il mio commento sopra riguardo github.com/jkitchin/org-ref . Modificherò la mia risposta per riflettere ciò.
Kevin,

1

Come descritto in Collegamenti interni .

Puoi usare <<id>>per impostare il tuo ID target e usare [[id]]o [[id][description]](Puoi usare C-c C-lper inserirlo) per trovare il tuo target.

Questo funziona per me durante l'esportazione in HTML.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.