1. Приглашаем вступить в нашу группу ВКонтакте.
    Скрыть объявление
  2. Присоединяйтесь к нашему чату по ссылке: http://t.me/mediawiki_ru
    Скрыть объявление

Запретить преобразование тега <math> в &lt;math&gt;

Тема в разделе "Для новичков", создана пользователем Wolfling, 26 ноя 2018.

  1. Wolfling
    Оффлайн

    Wolfling Только зашёл

    Регистрация:
    24 ноя 2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Подскажите, пожалуйста, как можно запретить wiki-движку преобразовывать теги <math> в &lt;math&gt;? Насколько я понимаю, движок автоматически преобразует знаки < и > в мнемоники html, хотя его об этом никто не просил :) Можно ли запретить это действие?
     
  2. UksusoFF
    Оффлайн

    UksusoFF Moderator Команда форума

    Регистрация:
    13 май 2013
    Сообщения:
    1.590
    Симпатии:
    194
    Пол:
    Мужской
    Адрес:
    Самара
  3. Wolfling
    Оффлайн

    Wolfling Только зашёл

    Регистрация:
    24 ноя 2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Нашёл решение, отпишусь тут - может, у кого-то возникнет схожая проблема. Я ошибался, MathJax обрабатывает корректно такие теги. Проблема была в ином: при вставке кода нужно экранировать двойную обратную скобку ещё одной скобкой :) Расширение SimpleMathjax, которое предназначено для обработки математики, не работает с расширением MobileFrontend, о чём есть запись и в обсуждении SimpleMathjax на Википедии, и на GitHub. Пока нет реакции разработчика, вот рабочее решение: добавить в файл LocalSettings.php такой код, который просто вставит код обработки формул в начало страницы:

    Код:
    $wgHooks['BeforePageDisplay'][] ='onBeforePageDisplay';
    
    function onBeforePageDisplay( OutputPage &$out, Skin &$skin )
    {
        $script = '
            <script type="text/x-mathjax-config">
              MathJax.Hub.Config({
                tex2jax: {inlineMath: [["<math>","</math>"]]},
                "CHTML-preview": {messageStyle: "normal"}
              });
                
            </script>
    
            <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=default&locale=ru"></script>';
        $out->addHeadItem("script", $script);
        return true;
    };
    Решение рабочее, хоть и временное, пока не исправят основное расширение для MathJax. Конечно, есть и недостатки: например, запись <math>y'''</math>, предназначенную для производной третьего порядка, Wiki-движок воспринимает как указание на отображение текста до конца строки жирным шрифтом. Решений два: или обрамлять теги <math> в <nowiki>, что мне кажется худшим вариантом, или же писать пробелы между штрихами: <math>y' ' '</math>. Заставить wiki-движок игнорировать содержимое тегов <math> мне пока не удалось.
     
  4. UksusoFF
    Оффлайн

    UksusoFF Moderator Команда форума

    Регистрация:
    13 май 2013
    Сообщения:
    1.590
    Симпатии:
    194
    Пол:
    Мужской
    Адрес:
    Самара
    Для MathJax нормально. Чтобы меньше писать можно сделать шаблон который будет либо ставить оба тега, либо сразу оборачивать с обоих сторон.
     
  5. Wolfling
    Оффлайн

    Wolfling Только зашёл

    Регистрация:
    24 ноя 2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Мне кажется, это не нормально :) Нормальное решение - это когда можно напрямую указать движку не обрабатывать свои команды внутри тега <math>. Но вот как это сделать - я пока что не нашёл. Как-то же движок игнорирует тег code, например.
     

Поделиться этой страницей