Macros 如何在MathJax中定义自定义宏

Macros 如何在MathJax中定义自定义宏,macros,latex,mathjax,Macros,Latex,Mathjax,我试图在MathJax中定义LaTeX文件中使用的自定义宏 可以定义简单的宏(单参数),没有任何问题,如 \newcommand{\braket}[1]{\langle #1 \rangle} 作为 但要与复杂的事物作斗争 \newcommand{\Abs}[2][]{\left\lvert#2\right\rvert_{\text{#1}}} 试图给它下个定义 Macros: { Abs: ['{\\left\\lvert#2\\rvert_{\\text{#1}}}', 2] }

我试图在MathJax中定义LaTeX文件中使用的自定义宏

可以定义简单的宏(单参数),没有任何问题,如

\newcommand{\braket}[1]{\langle #1 \rangle}
作为

但要与复杂的事物作斗争

\newcommand{\Abs}[2][]{\left\lvert#2\right\rvert_{\text{#1}}}
试图给它下个定义

Macros: {
    Abs: ['{\\left\\lvert#2\\rvert_{\\text{#1}}}', 2]
}
但是没有运气

这就是它在LaTeX文件中的使用方式

\begin{align}\nonumber
    p_e = \Abs{\braket{e|\psi(t)}}^2 = \sin^2\Omega t\, .
\end{align}
不知道我哪里做错了

我不是LaTeX专家,只是一个试图在web应用程序上显示LaTeX文件的开发人员(对于量子物理社区),所以我非常感谢您的帮助。谢谢

p.S这个问题在SE上被问到并关闭,他们将我重定向到SO。

我已更新

首先,您忘记了一个
\\right
;我还修改了宏定义,使其具有可选参数。换言之,大致如下:

Macros: {
    braket: ['{\\langle #1 \\rangle}', 1],
   Abs: ['\\left\\lvert #2 \\right\\rvert_{\\text{#1}}', 2, ""]
}},

你看到了什么样的问题?这似乎有效,请看。(IIRC,但是更复杂。)@Peter Krautzberger我想在Mathjax设置中定义该宏,而不是在每个HTML文件中添加“\newcommand{\Abs}..”。感谢Peter,它可以与数组中的第三个空参数一起工作。我很好奇这些信息是从哪里来的,我在MathJax文档中找不到。我承认我不得不深入研究一些TeX扩展的代码。我在我们的文件上提出了一个问题
Macros: {
    braket: ['{\\langle #1 \\rangle}', 1],
   Abs: ['\\left\\lvert #2 \\right\\rvert_{\\text{#1}}', 2, ""]
}},