Étiqueter et référencer les équations LaTeX en mode org


15

Ceci est similaire à l' exportation Org vers des références latex et HTML , mais pour les équations.

J'aime utiliser des extraits de mathématiques LaTeX dans mes fichiers d'organisation, comme dans

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

Lorsque j'exporte vers LaTeX, le \ref{eq:1}se transforme correctement en hyperlien vers l'équation. Mais je veux obtenir le comportement supplémentaire suivant:

  1. À l'intérieur du fichier org, je peux cliquer sur le texte \ref{eq:1}(le texte n'a pas besoin d'être \ref{eq:1}, je veux juste un lien hypertexte) et être amené à l'équation. Cette fonctionnalité est présente pour les en-têtes, car en [[The Quadratic Equation]]devient cliquable en mode Org.

  2. Lorsque j'exporte en HTML, je veux que les références soient conservées (en fait, l'étiquette (1) n'apparaît même pas dans l'exportation HTML).

Existe-t-il un moyen d'y parvenir?


Techniquement ... encapsuler l'équation dans #+begin_src latex... #+end_srcet ensuite, si vous placez #+name: eq:1et #+label: eq:1, vous devriez pouvoir référencer ce bloc comme vous le souhaitez, c'est-à-dire en utilisant un lien [[eq:1][first equation]], mais pour une raison quelconque, cela ne fonctionne pas pour moi (mais cela pourrait être dû aux modifications que j'ai apportées).
wvxvw

@wvxvw Si vous avez modifié le comportement via advices uniquement, vous pouvez tester sans modifications via emacs -Q. Naturellement, cela n'aide pas si vous changez directement les sources.
Tobias

@Tobias nah, je me souviens d'avoir corrigé du code Org, en particulier quelque chose lié à son insertion \label{}dans un environnement textuel, mais je devrais déterrer mes modifications pour m'assurer que c'est ma faute. Cela m'aiderait cependant si quelqu'un pouvait confirmer que la méthode suggérée avec #+nameetc. fonctionne.
wvxvw

@wvxvw À html-export, j'obtiens <pre>/ </pre>-Tags autour de l' equationenvironnement. Par conséquent, Firefox montre la source et non l'équation.
Tobias

@Tobias, à droite, je l'ai complètement oublié, vous auriez également besoin de la by-backendmacro d'ici: orgmode.org/worg/org-contrib/babel/languages/…
wvxvw

Réponses:


15

J'ai dû exécuter un test, mais j'ai réussi à exécuter un petit fichier qui s'exporte correctement à la fois en latex et en HTML, je n'ai testé que dans l'organisation 8.2.10, mais cela devrait fonctionner sur d'autres versions.

La réponse est en fait la même que dans l' exportation Org vers des références latex et HTML

Ici, j'ai un petit exemple

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

Bien, cela fonctionne pour moi hors de la boîte.
Tobias

Cela fonctionne aussi pour moi dans LaTeX, mais cela ne fonctionne pas pour "prêt à l'emploi" en HTML, car l'équation n'a même pas de nombre (une option Mathjax n'est pas définie, probablement). Maintenant, si seulement RefTeX soutenait cela, mais c'est une autre question. J'attendrai quelques jours de plus avant d'accepter, pour voir si quelqu'un d'autre va sonner :)
Kevin

J'ai accepté, mais voir ma propre réponse ci-dessous (la version ultérieure d'Org a un support prêt à l'emploi).
Kevin

J'obtiens des "références non définies" dans LaTeX; ne fonctionne pas pour moi avec Emacs 24.5.1 (mode Org 8.2.10)
Cabine Reb

1
Est-ce que cela peut d'une manière ou d'une autre être étendu aux environnements AMS multilignes comme alignet subequations, où l'étiquette est spécifique à des parties de l'équation?
kdb

5

En fait, il semble que le mode Org 8.3.1 dispose d'un support intégré pour ce que la question demande; labelet reftravailler hors de la boîte.

Cela nécessite de mettre à jour le mode Org via le gestionnaire de packages; ensuite, restez (package-initialize)près du haut du fichier d'initialisation.

ÉDITER. Cela ne vous permet pas de cliquer sur \ref{...}et d'accéder à l'étiquette. Pour cela, veuillez consulter la réponse acceptée ci-dessus, ou utilisez org-ref .


1
Mais vous ne pouvez pas cliquer sur \ ref {.} Pour accéder à \ label {.}, Non?
rvf0068

Non je ne peux pas. Pour cela, vous devez utiliser la réponse de Joafigue ci-dessus ou voir mon commentaire ci-dessus concernant github.com/jkitchin/org-ref . Je vais modifier ma réponse pour refléter cela.
Kevin

1

Comme décrit dans Liens internes .

Vous pouvez utiliser <<id>>pour définir votre identifiant cible et utiliser [[id]]ou [[id][description]](vous pouvez utiliser C-c C-lpour insérer ceci) pour trouver votre cible.

Cela fonctionne pour moi lors de l'exportation au format HTML.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.