Как сослаться на уравнение на другой странице с помощью Mathjax

У меня есть несколько html-страниц с множеством уравнений, созданных Mathjax. Я хотел бы сослаться на несколько уравнений, не особенно на одной странице.

Проблема в том, что "\eqref" работает, только если уравнение находится на той же странице.

Одним из решений было бы использовать "\tag{}" для всех уравнений и использовать простые html-ссылки.

Например,

\label{myequation} \tag{4.1}  

и ссылка будет

"<a href="http://www.mysite.com/mypage#myequation"> 4.1 </a>"

Проблема с этим решением заключается в том, что мне нужно иметь личный тег для всех уравнений.

Есть ли у кого-нибудь решение для ссылки на уравнения на разных страницах путем автоматического создания тегов?


person Ben    schedule 02.05.2013    source источник


Ответы (1)


См. документацию по автоматической нумерации уравнений. Это позволяет вам автоматически нумеровать ваши уравнения, а не требовать \tag. Обратите внимание, что любое пронумерованное или помеченное уравнение автоматически получает идентификатор, который можно использовать в ссылке, поэтому нет необходимости использовать \label (хотя это помогает, если вы добавляете и удаляете уравнения во время редактирования). Если уравнение имеет номер 5, то идентификатор равен mjx-eqn-5. Существуют функции, которые вы можете переопределить, чтобы изменить формат чисел уравнения. См. раздел equationNumbers документации по параметрам конфигурации TeX.

Изменить. Теперь, когда я понял ваш запрос, я могу сказать вам, что для того, чтобы сделать то, о чем вы просите, MathJax должен знать сопоставление ярлыка и тега для других страниц вашего сайта (а не только просматриваемая в данный момент страница). MathJax не имеет таких данных. Единственный способ сделать это — создать файлы данных для других страниц, которые содержат эти данные, чтобы MathJax мог их загрузить и сделать доступными. Хотя это технически возможно, это было бы немного громоздко, особенно потому, что JavaScript (обычно) не может записывать файлы за вас.

С другой стороны, единственное место, где требуется сопоставление метки с тегом, — это текст, который действует как сама ссылка (то есть, если eq:sum относится к уравнению 4.1, тогда вы хотели бы, чтобы «4.1» был текстом, который ссылки на это уравнение. Обратите внимание, что сама ссылка будет на myotherpage#eq:sum, поэтому номер нужен только самому тексту ссылки. Если вы хотите использовать что-то вроде «[сумма]» в качестве текста ссылки для eq:sum (например, , "В уравнении [сумма] мы видим..."), то вам не нужно сопоставление метки с тегом, и \eqref можно изменить, чтобы справиться с этим. Но если вы действительно хотите, чтобы номер уравнения был ссылкой, вы для этого потребуется намного больше инфраструктуры.

person Davide Cervone    schedule 04.05.2013
comment
Спасибо за ответ, но с вашим решением мне все еще нужно создавать метки для ссылки (например, 4.1). Может быть, я не понял, но как сделать ссылку на уравнение, не добавляя метку в ‹a› метку ‹/a›? - person Ben; 04.05.2013
comment
Если уравнение помечено (автоматически или явным образом \tag), оно автоматически получает идентификатор, который можно использовать в качестве цели ссылки. Таким образом, если у вас есть $$E=mc^2\tag(4.1)$$, то уравнение будет иметь идентификатор mjx-eqn-4.1, и вы можете использовать <a href="http://www.mysite.com/mypage#mjx-eqn-4.1">4.1</a> в других файлах для связи с этим уравнением. Вам не нужен явный \label{} в коде TeX (хотя вы, конечно, можете использовать его, если хотите, так что, если вы добавляете или удаляете уравнения, вам не нужно менять ссылку на ссылку). Возможно, я не понимаю, что вам нужно. - person Davide Cervone; 05.05.2013
comment
Если это не то, что вам нужно, можете ли вы отредактировать свой вопрос, чтобы уточнить, что вам делать? Возможно, пример того, что вы хотели бы сделать? - person Davide Cervone; 05.05.2013
comment
Спасибо. На самом деле, чего я хочу избежать, так это давать метку для всех моих ссылок <a href="http://www.mysite.com/mypage#mjx-eqn-4.1">4.1</a>. Я ищу автоматический способ сделать это. Например что-то вроде <a href="http://www.mysite.com/mypage#mjx-eqn-4.1">\eqref{eqn-4.1}</a>. Тогда, если у меня есть 1000 уравнений, мне не нужно будет создавать новую метку для всех уравнений (например, 4.1, 8.12, 6.3, 4.9 и т. д.). - person Ben; 06.05.2013
comment
Возможно, у нас проблема с определениями. Давайте использовать tag для обозначения фактического номера уравнения, а label для обозначения имени (никогда не отображаемого), которое относится к номеру уравнения. Уравнения могут быть автоматически помечены MathJax (см. ссылку в моем ответе). Но тег уравнения может измениться, если уравнения добавлены или удалены перед ним в документе. Вот почему метки полезны, так как они дают вам фиксированное имя, на которое можно ссылаться, независимо от фактического тега. Вы хотите, чтобы ярлыки создавались автоматически? Я не понимаю, как это будет работать, ... - person Davide Cervone; 06.05.2013
comment
... так как любые автоматические средства их предоставления будут означать, что они могут переходить от одного просмотра страницы к другому. Метка не должна меняться, если вы редактируете документ (либо уравнения перед ним, либо само уравнение с меткой). Я не вижу способа назначить уникальную метку, которая не зависит от положения или содержимого уравнения. И как бы вы узнали, что это было (чтобы сослаться на это), ведь ярлыки никогда не показываются? Так что я все еще смущен тем, что вы после. Опять же, может помочь реальный (полный) пример того, как, по вашему мнению, это должно работать. - person Davide Cervone; 06.05.2013
comment
Наконец, меня смущает ваш пример: <a href="http://www.mysite.com/mypage#mjx-eqn-4.1">\eqref{eqn-4.1}</a>, поскольку в нем уже есть явная ссылка на mix-eqn-4.1, я не уверен, что вы хотите, чтобы \eqref{eqn-4.1} делал. И если eqn-4.1 является меткой, не рекомендуется включать номер формулы (тег) как часть метки, потому что этот номер может измениться, если вы отредактируете mypage и добавите или удалите формулы. Если вы собираетесь ссылаться на фактический тег, зачем использовать \eqref в первую очередь; почему бы не просто 4.1? Итак, еще раз, я действительно не понимаю, чего вы пытаетесь достичь. - person Davide Cervone; 06.05.2013
comment
С латексом, когда у меня есть новое уравнение, я определяю \label{eq:sum}. Затем я могу обратиться к этому уравнению, используя \eqref{eq:sum}. Тег будет сгенерирован автоматически. Например, в уравнении \eqref{eq:sum} мы видим … будет переведено в уравнение 3.2, мы можем видеть …. Мне никогда не приходилось определять 3.2. С mathjax это работает, если уравнение находится на той же странице. Моя проблема в том, что мои уравнения не находятся на одной странице. - person Ben; 06.05.2013
comment
Предположим, на A.html у меня есть label{eq:sum}. Если я напишу в уравнении \eqref{eq:sum}, мы увидим … где-то в A.html, тогда это будет переведено в уравнение 3.2, мы увидим …. Это нормально. Однако теперь предположим, что я хочу написать \eqref{eq:sum} на странице B.html. Так не пойдет. Было бы неплохо иметь что-то вроде В уравнении \eqref{mysite/eq:sum} мы можно видеть … переведено в уравнение 3.2, мы можем видеть …. Преимущество такого подхода в том, что мне никогда не нужно явно писать 3.2, 4.5, 8.6 и т. д. Они генерируются автоматически. - person Ben; 06.05.2013
comment
Я изменил свой ответ выше, чтобы рассказать больше о возможностях. - person Davide Cervone; 06.05.2013
comment
Спасибо за отличное обсуждение! - person Ben; 07.05.2013