MathJax将宏定义为final或last

时间:2014-11-05 22:46:30

标签: javascript latex mathjax tex

我的任务是将\overline符号转换为\overleftrightarrow,将\oversegment转换为\overline。问题是这是我得到的输入(我知道这根本就是错误的)但我不能修改它。

所以基于这个来源:http://docs.mathjax.org/en/latest/tex.html#defining-tex-macros

我定义了我的宏:

MathJax.Hub.Config({
    TeX: {
        Macros: {
            overline: ["{\\overleftrightarrow{#1}}", 1],
            oversegment: ["{\\overline{#1}}", 1]
        }
    }
});

问题在于,当我输入\oversegment时,它会被第二个宏转换为\overline,然后它会被第一个宏再次转换为\overleftrightarrow,这是错误。我希望它只转换一次并使其成为最终版本。

1 个答案:

答案 0 :(得分:2)

考虑到处理宏的方式,没有一种简单的方法。最好的方法似乎是复制original function in the TeX input jax,即将此函数添加到内联配置块中。

<script type="text/x-mathjax-config">
  MathJax.Hub.Register.StartupHook("TeX Jax Ready", function () {
  var MML = MathJax.ElementJax.mml;
    MathJax.InputJax.TeX.Definitions.Add({
       macros: {
          oversegment: ['UnderOver','00AF']
      }
    });
  });
</script>