Как определить новую функцию ( "оператор" ) в MathJax?
Я использую MathJax для отображения формул на своих веб-сайтах. Из MathJax распознаются многие функции, такие как sin
, cos
,..., но многие из них отсутствуют, например sech
(гиперболический секущий) и csch
(гиперболический косекант). Я знаю, что я все еще могу использовать эти функции в формулах с помощью \text
, например
\text{sech} u
Однако я предпочел бы работать \sech
. С этой целью я пробовал
<div style="display:none">
$\DeclareMathOperator{\sech}{sech}
\DeclareMathOperator{\csch}{csch}$
</div>
сразу после <body>
. (Я также попытался добавить звездочку после DeclareMathOperator
.)
Это почти работает. Проблема в том, что теперь
\sech^2 u
помещает квадрат выше sech
, а не после него (proof). Есть ли способ исправить это? Каков предпочтительный способ определения новых функций ( "операторов" ) в MathJax? Конечно, есть хороший способ: кто может жить без полного спектра гиперболических функций?!
Ответы
Ответ 1
Макрос \DeclareMathOperator
не предоставляет средство объявления оператора, который всегда имеет ограничения в положениях супер- и индексов, поэтому ваш \sech
получает надстрочный указатель над ним, когда он используется в отображаемых уравнениях.
Вы хотите следующее:
<div style="display:none">
$
\newcommand{\sech}{\mathop{\rm sech}\nolimits}
\newcommand{\csch}{\mathop{\rm csch}\nolimits}
$
</div>
Это даст вам операторов, которые работают как \sin
и \cos
. Обратите внимание, что интервал будет лучше с этой формой, чем с вашими версиями, используя \text{...}
, так как \mathop
обеспечит правильное расстояние вокруг имени оператора (однако в MathJax есть ошибка, которая заставляет пространство теряться, когда есть супер- или индекс, это будет исправлено в следующем выпуске).