Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to define a new function ('operator') in MathJax?

Tags:

I am using MathJax to display formulae on my web sites. Out of the box, MathJax recognises many functions like sin, cos, ..., but many are missing, such as sech (hyperbolic secant) and csch(hyperbolic cosecant). I know I can still use these functions in formulae by means of \text, such as

\text{sech} u 

However, I would rather make \sech work. To this end, I tried

<div style="display:none">   $\DeclareMathOperator{\sech}{sech}    \DeclareMathOperator{\csch}{csch}$ </div> 

right after <body>. (I also tried to add an asterisk after DeclareMathOperator.)

This almost works. The problem is that now

\sech^2 u 

places the square above sech, instead of after it (proof). Is there a way to fix this? What is the prefered way to define new functions ('operators') in MathJax? Surely there is a good way, for who can live without a full spectrum of hyperbolic functions?!

like image 204
Andreas Rejbrand Avatar asked Jun 29 '12 19:06

Andreas Rejbrand


People also ask

Is MathJax the same as LaTeX?

MathJax can display mathematical notation written in LaTeX or MathML markup. Because MathJax is meant only for math display, whereas LaTeX is a document layout language, MathJax only supports the subset of LaTeX used to describe mathematical notation.

Is KaTeX better than MathJax?

KaTeX, according to most benchmarks I've seen, is faster than MathJax, by a long shot. However, it has somewhat incomplete support for LaTeX, so that may be an issue. MathJax is pretty slow, relative to the others, but it has almost complete support for LaTeX. If that's the price you're willing to pay, then go for it.


1 Answers

The \DeclareMathOperator macro does not provide a means of declaring an operator that always has limits in the super- and subscript positions, which is why your \sech get the superscript placed above it when used in displayed equations.

What you want is the following:

<div style="display:none">   $     \newcommand{\sech}{\mathop{\rm sech}\nolimits}     \newcommand{\csch}{\mathop{\rm csch}\nolimits}   $ </div> 

This will get you operators that work like \sin and \cos. Note that the spacing will be better with this form than with your versions using \text{...}, since \mathop will provide the proper spacing around the operator name (however there is a bug in MathJax that causes the space to be lost when there is a super- or subscript; this will be fixed in the next release).

like image 74
Davide Cervone Avatar answered Sep 20 '22 11:09

Davide Cervone