Метка и опорные уравнения LaTeX в орг-режиме

15

Это похоже на экспорт Org в латексные и HTML ссылки , но для уравнений.

Мне нравится использовать математические фрагменты LaTeX в моих org-файлах, как в

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

Когда я экспортирую в LaTeX, \ref{eq:1}правильно превращается в гиперссылку на уравнение. Но я хочу добиться следующего дополнительного поведения:

  1. Внутри org-файла я могу щелкнуть текст \ref{eq:1}(текст не обязательно \ref{eq:1}, я просто хочу гиперссылку) и перейти к уравнению. Эта функция доступна для заголовков, так как она [[The Quadratic Equation]]становится активной в режиме Org.

  2. Когда я экспортирую в HTML, я хочу сохранить ссылки (фактически, метка (1) даже не отображается в экспорте HTML).

Есть ли способ сделать это?

Kevin
источник
Технически ... оборачивая уравнение в #+begin_src latex... #+end_srcи затем, если вы разместите #+name: eq:1и #+label: eq:1, вы сможете ссылаться на этот блок так, как вы хотите, то есть, используя ссылку [[eq:1][first equation]], но по какой-то причине он не работает для меня (но это может быть из-за изменений, которые я сделал).
wvxvw
@wvxvw Если вы изменили поведение adviceтолько через s, вы можете проверить без изменений через emacs -Q. Естественно, это не поможет, если вы изменили источники напрямую.
Тобиас
@Tobias Нет, я помню, как исправлял код Org, особенно что-то связанное с ним, вставляя \label{}в дословную среду, но мне нужно было выкопать мои изменения, чтобы убедиться, что это моя вина. Это помогло бы мне, хотя, если бы кто-то мог подтвердить, что предложенный способ и #+nameт. Д. Работает.
wvxvw
@wvxvw При html-экспорте я получаю <pre>/ </pre>-Tag теги по equationокружающей среде. Следовательно, Firefox показывает источник, а не уравнение.
Тобиас
@Tobias, верно, я совсем забыл об этом, вам также понадобится by-backendмакрос здесь: orgmode.org/worg/org-contrib/babel/languages/…
wvxvw

Ответы:

15

Мне пришлось выполнить какой-то тест, но мне удалось запустить небольшой файл, который правильно экспортирует в латекс и HTML, я тестировал только в org 8.2.10, но он должен работать на других версиях.

Ответ на самом деле такой же, как в Org экспорт в латекс и HTML ссылки

Вот небольшой пример

*  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
источник
Хорошо, это работает для меня из коробки.
Тобиас
Это работает и для меня в LaTeX, но не работает для «из коробки» в HTML, поскольку в уравнении даже нет числа (возможно, не установлен какой-либо параметр Mathjax). Если бы только RefTeX поддерживал это, но это другой вопрос. Я подожду еще пару дней, прежде чем принять, чтобы увидеть, будет ли кто-то еще участвовать :)
Кевин
Я согласился, но см. Мой собственный ответ ниже (более поздняя версия Org имеет встроенную поддержку).
Кевин
Я получаю "неопределенные ссылки" в LaTeX; у меня не работает с Emacs 24.5.1 (режим Org 8.2.10)
Reb.Cabin
1
Можно ли это как-то распространить на многострочные среды AMS, такие как alignи subequationsгде метка относится к частям уравнения?
КДБ
5

На самом деле, похоже, что режим Org 8.3.1 имеет встроенную поддержку того, что задает вопрос; labelи refработать из коробки.

Для этого требуется обновить режим Org через менеджер пакетов; после этого придерживайтесь (package-initialize)верхней части файла инициализации.

РЕДАКТИРОВАТЬ. Это не позволяет вам нажать \ref{...}и перейти к ярлыку. Для этого см. Принятый ответ выше или используйте org-ref .

Kevin
источник
1
Но вы не можете нажать \ ref {.}, Чтобы перейти к \ label {.}, Верно?
rvf0068
Нет, я не могу. Для этого вы должны использовать ответ Joafigue выше или см. Мой комментарий выше относительно github.com/jkitchin/org-ref . Я отредактирую свой ответ, чтобы отразить это.
Кевин
1

Как описано во внутренних ссылках .

Вы можете использовать, <<id>>чтобы установить свой целевой идентификатор и использовать [[id]]или [[id][description]](Вы можете использовать, C-c C-lчтобы вставить это), чтобы найти вашу цель.

Это работает для меня при экспорте в HTML.

Ynjxsjmh
источник