Как сделать формулу с помощью mathjax отзывчивой

У меня большая проблема с отображением математических выражений на моем адаптивном веб-сайте. В частности, если вы посетите эту страницу со смартфона видно, что большая часть математических выражений обрезана из-за адаптивного дизайна. Я использую Joomla и плагин Jextbox Equation для их отображения.

Я хочу, чтобы формулы на моей странице вели себя как в Википедии. Если вы откроете эту страницу на своем смартфоне, то увидите, что там, где формулы слишком длинные, они не обрезаются. Они отображаются при прокрутке слева направо. Я хотел бы сделать то же самое на своей странице.


person user3700643    schedule 27.04.2015    source источник
comment
Задайте минимальный, полный и поддающийся проверке вопрос.   -  person Christopher Bottoms    schedule 27.04.2015
comment
Ok. Я хочу, чтобы размер моей страницы со слишком широкой формулой можно было изменить, как это делает сайт википедии в этом примере: it.wikipedia. org/wiki/Integrale_multiplo. Если вы откроете эту последнюю страницу на своем смартфоне, то увидите, что там, где формулы слишком длинные, они не обрезаются, а отображаются при прокрутке слева направо. Я хочу получить это на моей странице. Я надеюсь, что я был более ясным   -  person user3700643    schedule 27.04.2015
comment
Ссылка на вашу страницу кажется битой. Если бы вы могли опубликовать минимальный объем кода, воспроизводящего вашу проблему, нам было бы легче помочь.   -  person Christopher Bottoms    schedule 27.04.2015
comment
Вы смотрели на исходный код этой страницы Википедии?   -  person Christopher Bottoms    schedule 27.04.2015
comment
Страница находится по этой ссылке: webtutordimatematica.it/materie/analisi-2/. Да, я просмотрел исходный код страницы, но он не дает мне никаких подсказок.   -  person user3700643    schedule 27.04.2015
comment
Я получаю ошибку 404: An error has occurred while processing your request. You may not be able to visit this page because of: * an out-of-date bookmark/favourite * a mistyped address * a search engine that has an out-of-date listing for this site * you have no access to this page   -  person Christopher Bottoms    schedule 27.04.2015
comment
Но если вы опубликуете минимальный объем кода, который воспроизводит проблему отображения уравнения, эта ссылка не будет так важна....   -  person Christopher Bottoms    schedule 27.04.2015
comment
Пожалуйста, отредактируйте свой вопрос, чтобы включить свой код.   -  person Christopher Bottoms    schedule 27.04.2015
comment
Проблема в том, что Mathjax_Display меняет размер так же, как и container-fluid. Я не знаю, достаточно ли этого, но код такой: code‹div class=container-fluid id=fav-mainwrap› ‹div class=row-fluid› ‹div class=MathJax_Display style=text-align: center;› ‹/дел› ‹/дел› ‹/дел›code   -  person user3700643    schedule 27.04.2015
comment
теперь страница должна быть доступна   -  person user3700643    schedule 27.04.2015
comment
На странице Википедии, на которую вы указываете, уравнения представлены в виде изображений. На вашей странице уравнения кажутся текстовыми.   -  person Christopher Bottoms    schedule 27.04.2015


Ответы (4)


Из документации по активации разбиения строк MathJax:

Процессоры вывода HTML-CSS и SVG реализуют (большую часть) спецификацию MathML3 >automatic line-breaking. (Процессор вывода NativeMML полагается на собственную поддержку MathML браузера для обработки разрыва строки при его использовании.) Поскольку разрыв строки требует дополнительной обработки и, следовательно, может замедлить математический вывод, по умолчанию он отключен, но вы можете включить его с помощью добавление

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
 "HTML-CSS": { linebreaks: { automatic: true } },
         SVG: { linebreaks: { automatic: true } }
});
</script>

на вашу страницу непосредственно перед тегом, загружающим сам MathJax.js.

Однако в вашем примере много табличной математики, т. Е. Макет с использованием <mtables> (хотя люди, использующие TeX в качестве входных данных, часто не знают, MathJax внутренне преобразует все входные данные в MathML).

Проблема в том, что mtables не могут быть разбиты на строки, так же как html-таблицы не могут быть разбиты на строки — отзывчивые таблицы нуждаются в некоторой помощи JS и, что более важно, в дополнительной семантической разметке.

PS: Как бы то ни было, мы на самом деле работаем над семантической эвристикой для математики, чтобы сделать что-то лучше, чем разбиение строк, но это текущие исследования и разработки без ETA.

person Peter Krautzberger    schedule 27.04.2015
comment
Спасибо Питер! На данный момент я думаю, что лучший способ отображения формул похож на эту статью в Википедии: [ссылка] it .m.wikipedia.org/wiki/Integrale_multiplo [ссылка]. В мобильной версии формулы не обрезаются и у пользователя есть возможность листать слева направо, чтобы увидеть ее полностью. Есть ли способ сделать это с помощью mathjax? - person user3700643; 28.04.2015
comment
Я не вижу ничего особенного в этой ссылке, но я предполагаю, что вы ищете что-то вроде overflow:scroll? Опять же, к сожалению, пока нет встроенного способа, но вы можете обернуть свои уравнения в контейнер и указать для них overflow. (См. первое уравнение на mathjax.org) - person Peter Krautzberger; 28.04.2015
comment
@PeterKrautzberger, в моих обстоятельствах (Latex w \begin{align} и сетка Bootstrap) поначалу казалось, что ваш скрипт ничего не делает. Повозившись, я обнаружил, что это работает для уравнений, в которых мне не удалось поставить амперсанд перед знаком равенства для выравнивания. Большое спасибо за MathJax! - person Mike O'Connor; 09.06.2015

Я посетил страница и вижу, что проблемы все еще есть — это когда я использую вид адаптивного дизайна Firefox с разрешением 320×487. Я знаю, что мое решение глупо, так как оно требует некоторого дублирования, но я использовал его не только с MathJax (только сейчас), но и в прошлом для таблиц и других вещей --- все в среде сетки Twitter Bootstrap, но я уверен, что это не имеет значения.

Я использую CSS3 @media Rule. Вот моя конкретная версия:

@media(max-width:768px){
  .wide {display:none;}
  .mobilefont {font-size:0.8em;}
}
@media(min-width:768px){
  .tight {display:none;}
}

Я просто добавил немного мобильного шрифта, чтобы еще больше вдохновить вас. Я иногда его использую. Итак, что я делаю, так это оборачиваю уравнение --- я использую Latex с MathJax --- с div и даю div класс "широкий", если уравнение отформатировано для широкого экрана и "узкий", если он отформатирован для маленького экрана. Вы можете видеть, как значения max-width/min-width в CSS3 влияют на исчезновение элементов div с этими именами классов в зависимости от того, больше или меньше ширина экрана 768 пикселей, что является популярной точкой останова (но другие могут быть определено вами).

То есть я дублирую свой блок \begin{align}\end{align} на большом экране. Я вставляю копию прямо под оригинал, оборачиваю каждый div и даю двум div эти два имени класса. Затем я редактирую класс с «узким» именем, чтобы он работал в представлении адаптивного дизайна с небольшим размером экрана.

Я также сделал это вне контекста MathJax, с простыми таблицами. Например, я использовал ‹td class="wide"› в каждом ‹td› заданного столбца таблицы, чтобы этот столбец исчез на устройствах с маленьким экраном.

На вашей странице, где у вас есть «L'integrale di partenza sarà allora la somma degliintegri sui due domini», внутри вашей «узкой» версии div вы могли бы, если бы использовали блок \begin{align}\end{align} ( но я вижу, что вы на самом деле используете \begin{eqnarray*}, который я не тестировал с этой схемой), просто поставьте амперсанд перед этим двойным интегралом слева, а затем символы новой строки \\ после этого интеграла перейти на новую строку. И поставьте амперсанд перед каждым знаком равенства в каждой строке. Таким образом, строки, начинающиеся со знака равенства, будут смещены далеко влево, выровнены под выражением для интеграла, а не справа от него.

Я не думаю, что это было бы слишком запутанно. Это только немного неортодоксально. Но посмотрите мой комментарий к ответу Питера Краутцбергера... Я обнаружил, что его сценарий не работает, когда я использую амперсанд. Но дело в том, что с моим подходом к CSS3 это вообще не нужно, так как я просто сам задаю все переформатирование.

person Mike O'Connor    schedule 09.06.2015

Вы можете добиться этого с помощью css следующим образом:

mjx-container mjx-math {
    white-space: normal;
}
person mCpXZKq3ruqgFXrvvAWRj9cYxk8RLX    schedule 21.05.2020

Все, что вам нужно сделать, это использовать адаптивные таблицы. Настройте свои таблицы и проблема решена. например, если вы используете Wordpress, используйте плагин WP Responsive Table. Если вы кодируете свой веб-сайт самостоятельно, используйте адаптивную таблицу Bootstrap. При необходимости используйте прозрачные границы и добавьте свой код MathJax внутрь таблицы.

person stats con chris    schedule 02.02.2021
comment
спасибо за ответ, вопрос про Joomla - person phoenixstudio; 02.02.2021