[MathJax] - Отображение форумул

Автор digger®, 31 августа 2011, 15:46:57

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Yippee-ki-yay

18 января 2018, 21:33:48 #50 Последнее редактирование: 18 января 2018, 21:44:37 от Yippee-ki-yay
Спасибо за ответ, заработало. И спасибо за ваш мод - я просто сразу не сравнил ник автора мода и Ваш :)

Закинул такой код для вызова отрисовки формул:

Код
<script type="text/x-mathjax-config">
 MathJax.Hub.Config({
 
 tex2jax: {
 inlineMath: [ ["$","$"] ],
 displayMath: [ ["$$","$$"] ]
 },
 "CHTML-preview": {messageStyle: "normal"}
 });
</script>

А функцию addMathJaxBbcCode изменил так:

Код
function addMathJaxBbcCode(&$codes)
{
    
    $codes[] = array(
        'tag' => 'latex',
        'type' => 'unparsed_equals_content',
        'content' => '$1',
    );
}

Насколько я понял, в 'content' не обязательно окружать '$1' символами вызова MathJax, если эти символы уже есть в окружении формулы.

Однако при тестировании формул обнаружил забавный баг: на предварительном просмотре исчезает знак "+". Причем совершенно неважно - в формуле он был или в тексте. Просто не отображается и всё. После отправки сообщения он есть. Проверил, оказывается с MathJax это не связано - специально отключил мод, а потом провёл тест. На  предварительном просмотре знаки "+" исчезают :( Думаю, что это баг движка, хотя не уверен.


И возник вопрос по отрисовке формул после редактирования: насколько я понимаю, мод отрабатывает при написании и предпросмотре сообщения, а после редактирования страницы для отрисовки формул нужно обновить страницу, -другого варианта нет, верно?

digger®

Цитата: Yippee-ki-yay от 18 января 2018, 21:33:48А функцию addMathJaxBbcCode изменил так:
Вы этим просто сломали работу кнопок mathjax которые мод добавляет в редактор. Оставьте в inlineMath оба варианта - и "$","$" и "\\(","\\)", а addMathJaxBbcCode не трогайте, тогда будут работать и кнопки мода и ваш.

ЦитироватьИ возник вопрос по отрисовке формул после редактирования: насколько я понимаю, мод отрабатывает при написании и предпросмотре сообщения, а после редактирования страницы для отрисовки формул нужно обновить страницу, -другого варианта нет, верно?
Посмотрю.

digger®

1.4.2
Исправлено обновление при быстром редактировании. Скрипт обновлен до версии 2.7.2.

1.4.3
Исправлено обновление при быстром редактировании для SMF 2.1.



Yippee-ki-yay

19 января 2018, 05:35:00 #53 Последнее редактирование: 19 января 2018, 06:28:19 от Yippee-ki-yay
Цитата: digger® от 19 января 2018, 01:35:52Вы этим просто сломали работу кнопок mathjax которые мод добавляет в редактор. Оставьте в inlineMath оба варианта - и "$","$" и "\\(","\\)", а addMathJaxBbcCode не трогайте, тогда будут работать и кнопки мода и ваш.

Да, я понимаю, что после изменения функции вариант [latex] formula [/latex] работать не будет. Дело в том, что у меня на первом сайте используется синтаксис $formula$. А на форуме phpbb3 на этом же сайте два синтаксиса: [tex][/tex] и $$.

Конечно, если бы я писал сайт сейчас, то такого разнобоя бы не допустил. Скорее всего, использовал бы синтаксис [tex][/tex] и на сайте, и на форуме, но накопленная база материала заставляет искать выходы для совместимости, чтобы материал можно было копировать с сайта на форум и обратно без редактирования формул.

Изменил коды таким образом:

Код
MathJax.Hub.Config({

tex2jax: {
inlineMath: [ ["$","$"], ["[tex]","[/tex]"] ],
displayMath: [ ["$$","$$"], ["[tex=dm]","[/tex]"] ]
},
"CHTML-preview": {messageStyle: "normal"}
});

Т.е. по итогу две функции стали такими:

Код
function addMathJaxBbcButton(&$buttons)
{
    $buttons[1][] = array(
        'image' => 'latex_inline',
        'code' => 'tex_inline',
        'before' => '[tex]',
        'after' => '[/tex]',
        'description' => 'Tex inline',
    );

$buttons[1][] = array(
        'image' => 'latex',
        'code' => 'tex',
        'before' => '[tex=dm]',
        'after' => '[/tex]',
        'description' => 'Tex',
    );
}


Код
function addMathJaxBbcCode(&$codes)
{
    
    $codes[] = array(
        'tag' => 'latex',
        'type' => 'unparsed_equals_content',
        'content' => '$1',
    );
}

Вроде всё работает, как должно. Единственный риск, насколько я понимаю, - это невозможность использовать в тексте знак $. Однако вроде за несколько лет использовать не приходилось: математика и доллар мало совместимы :) Или есть иные риски, которые я не учёл?

Perm

Цитата: Yippee-ki-yay от 19 января 2018, 05:35:00математика и доллар мало совместимы

Что верно, то верно!  2funny