Как я понял это документация по использованию TeX...
Я знаю что можно формулы вводить в виде "TeX", а так же видел фильтр для него, но к сожалению мне необходим "MathML".
Спасибо за ответ.
мне необходим "MathML"
Зачем? Формулы на MathML тоже можно вставлять на странице (в режиме редактирования исходного кода), но они мелкие и не интерактивные, в отличие от MathJax. Сравните:
MathML
MathJax
Масштаб одинаковый.
ЗЫ: и фильтры тут не нужны, MathML не обрабатывается фильтрами Мудл, браузер «читает» код MathML и показывает формулу.
ЗЫ: и фильтры тут не нужны, MathML не обрабатывается фильтрами Мудл, браузер «читает» код MathML и показывает формулу.
Увы но MathML читает только Firefox, для других браузеров необходима библиотека MathJax, он преобразует верстку TeX и MathML в нормальный вид
Зачем? Формулы на MathML тоже можно вставлять на странице (в режиме редактирования исходного кода), но они мелкие и не интерактивные, в отличие от MathJax. Сравните:
Зачем? - Мне приходит материал и там все формулы на MathML.
Да, я вставлял в режиме редактирования исходного кода.
Теже я заметил свойство фильтра при настройках "из коробки":
- когда на странице только MathML он его не читает.
- Но когда вместе с TeX отображает, пример:
When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$ <math xmlns="http://www.w3.org/1998/Math/MathML"><mfrac><mn>1</mn><mn>2</mn></mfrac></math>
По этому я и в поисках оптимального "filter_mathjaxloader | mathjaxconfig"
Кстати, размер формул можно поправить в этом же поле.
mathjaxconfig у меня такой:
MathJax.Hub.Config({
config: ["Safe.js"],
jax: ["input/TeX","input/MathML","output/HTML-CSS","output/NativeMML"],
extensions: ["tex2jax.js","mml2jax.js","MathMenu.js","MathZoom.js"],
TeX: {
//equationNumbers: {autoNumber: "all"},
extensions: ["AMSmath.js","AMSsymbols.js","mhchem.js","noErrors.js","noUndefined.js"],
Macros: {
textsf: ['\\mathord{\\sf{\\text{#1}}}', 1],
texttt: ['\\mathord{\\tt{\\text{#1}}}', 1],
vline: ['\\smash{\\large\\lvert}', 0],
le: ['\\leqslant', 0],
ge: ['\\geqslant', 0],
phi: ['\\varphi', 0], // греческая фи, как принято в нашей нотации
EDS: ['\\mathscr{E}', 0], // красивая буква для ЭДС
degree: ['^\\circ', 0],
celsius: ['\\degree{}C', 0],
arctg: ['\\mathop{\\rm arctg}\\nolimits', 0],
ch: ['\\mathop{\\rm ch}\\nolimits', 0],
ctg: ['\\mathop{\\rm ctg}\\nolimits', 0],
sh: ['\\mathop{\\rm sh}\\nolimits', 0],
arcctg: ['\\mathop{\\rm arcctg}\\nolimits', 0],
cosec: ['\\mathop{\\rm cosec}\\nolimits', 0],
cth: ['\\mathop{\\rm cth}\\nolimits', 0],
tg: ['\\mathop{\\rm tg}\\nolimits', 0],
th: ['\\mathop{\\rm th}\\nolimits', 0]
},
noErrors: { disabled: true }, // для возврата к TeX в случае проблем с mathjax
noUndefined: { disabled: true } // для возврата к TeX в случае проблем с mathjax
},
tex2jax: {
inlineMath: [ ['$$','$$'], ['$','$'], ["\\(","\\)"] ],
displayMath: [ ["\\[","\\]"] ]
},
menuSettings: {
zoom: "Click",
zscale: "200%"
},
skipStartupTypeset: true,
messageStyle: "none",
// showMathMenu: false, // отключает мею по правой клавише
preRemoveClass: "MathJax_Preview_Alternative", // для возврата к TeX в случае проблем с mathjax
"HTML-CSS": { scale: 120} // для увеличения размера формул
});
// Для исправления ошибок в формулах, содержащих команду \nulldelimiterspace
MathJax.Hub.Register.StartupHook("TeX Jax Ready", function () {
var TEX = MathJax.InputJax.TeX;
var PREFILTER = TEX.prefilterMath;
TEX.Augment({
prefilterMath: function (math,displaymode,script) {
math = math.replace(/\\nulldelimiterspace/g, "0em");
return PREFILTER.call(TEX,math,displaymode,script);
}
});
});
// Для большого размера всех дробей. Аналог команды \everymath{\displaystyle}
MathJax.Hub.Register.StartupHook("TeX Jax Ready", function () {
var TEX = MathJax.InputJax.TeX;
var PREFILTER = TEX.prefilterMath;
TEX.Augment({
prefilterMath: function (math,displaymode,script) {
math = "\\displaystyle{"+math+"}";
return PREFILTER.call(TEX,math,displaymode,script);
}
});
});
// для возврата к TeX в случае проблем с mathjax
MathJax.Hub.Typeset_source = MathJax.Hub.Typeset;
MathJax.Hub.Typeset = function(node, callback) {
return MathJax.Hub.Typeset_source(node, function() {
var jax = MathJax.Hub.getAllJax(node);
for (var i = 0, m = jax.length; i < m; i++) {
var math = jax[i];
if (!math.texError) {
var pre = math.SourceElement().previousSibling.previousSibling;
if (pre && pre.className !== "MathJax_Preview") {
pre = pre.previousSibling;
};
if (pre && pre.className === "MathJax_Preview") {
pre.innerHTML = "";
};
} else {
var pre = math.SourceElement().previousSibling;
if (pre && pre.className === "MathJax") {
pre.innerHTML = "";
};
};
};
return callback;
});
};
Во всех браузерах формулы MathML нормально выглядят:
IE 11
Opera
Pale Moon (fork Firefox)
Edge
По настройкам mathjaxconfig ищите тему на форуме, Вадим Дворовенко там целый ликбез провёл
Довольно интересный конфиг, взял на вооружение, но так и не сработал с чистым mathML.
Гибридный по прежнему работает.
Не сразу обратил внимание на "filter_mathjaxloader | additionaldelimiters" забив туда "<math" все заработало! (даже с mathjaxconfig из коробки)
Во всех браузерах формулы MathML нормально выглядят:Без библиотеки нет, только-что проверил в 5 популярных браузеров, только в Firefox из коробки читает теги MathML.
Спасибо за уделенное время и за mathjaxconfig!