如何在Mathjax中定义和使用宏?

时间:2018-11-17 17:02:48

标签: require mathjax

我经常使用矢量操作,通常矢量是用粗体字写的,例如

FileWriter writer = new FileWriter("output.txt"); 
        for(LocalDate str: fechas) {
          writer.write(str);
        }
        writer.close();

这太长了,所以我想定义一些新命令\ bx,\ ba,\ bb首先,

$$ \boldsymbol x = \boldsymbol a \times \boldsymbol b + \boldsymbol c $$

那么上面的等式可以写成:

$$ 
\newcommand{\bx}{\boldsymbol x} 
\newcommand{\ba}{\boldsymbol a} 
\newcommand{\bb}{\boldsymbol b}
\newcommand{\bc}{\boldsymbol c} 
$$

因为我经常使用这些Bold字体,所以我不想每次都键入它们,所以我打算将它们定义为文件中的宏:boldfont.js,当我需要输入vector时,我只需要boldfont .js。

我将文件编写如下(将文件另存为:/config/TeX/boldfont.js,其他文件(例如color.js)保存在同一目录下):

$$ \bx = \ba \times \bb + \bc $$

然后我尝试将文件(使用\ require命令)用作

MathJax.Hub.Config({
 TeX: {
        Macros: {
            ba: '{\\boldsymbol a}',
            bb: '{\\boldsymbol b}',
            bc: '{\\boldsymbol c}',
            bd: '{\\boldsymbol d}',
            be: '{\\boldsymbol e}',
            bf: '{\\boldsymbol f}',
            bg: '{\\boldsymbol g}',
            bh: '{\\boldsymbol h}',
            bi: '{\\boldsymbol i}',
            bj: '{\\boldsymbol j}',
            bk: '{\\boldsymbol k}',
            bl: '{\\boldsymbol l}',
            bm: '{\\boldsymbol m}',
            bn: '{\\boldsymbol n}',
            bo: '{\\boldsymbol o}',
            bp: '{\\boldsymbol p}',
            bq: '{\\boldsymbol q}',
            br: '{\\boldsymbol r}',
            bs: '{\\boldsymbol s}',
            bt: '{\\boldsymbol t}',
            bu: '{\\boldsymbol u}',
            bv: '{\\boldsymbol v}',
            bw: '{\\boldsymbol w}',
            bx: '{\\boldsymbol x}',
            by: '{\\boldsymbol y}',
            bz: '{\\boldsymbol z}',
        }
    }
});

但是它不起作用,怎么了?怎么定义宏并使用它?

请帮助我。

enter image description here

1 个答案:

答案 0 :(得分:0)

第一次加载TeX输入jax时会读取TeX配置块,因此,如果在此之后调用MathJax.Hub.Config(),则TeX输入jax将看不到您所做的更改。因此,以这种方式添加的任何宏都将无效。

您应该使用

MathJax.InputJax.TeX.Macro('bx', '\\boldsymbol{x}');
MathJax.InputJax.TeX.Macro('ba', '\\boldsymbol{a}');
...

如果您有一个接受参数的宏,则可以添加第三个参数,即所需的参数数量。例如

MathJax.InputJax.TeX.Macro('bs', '\\boldsymbol{#1}', 1);

该文件应存储在MathJax/extensions/TeX文件夹(而不是MathJax/config/TeX)中,如果您将其命名为boldfont.js,则在文件末尾,您需要添加以下行

MathJax.Ajax.loadComplete('[MathJax]/extensions/TeX/boldfont.js');

有了这些更改,我认为您应该能够使其工作。如果没有,请检查控制台日志中是否有消息,并使用

MathJax.Message.Log()

查看是否列出了任何文件加载失败。

(这是我交叉回答该问题的MathJax User's Forum的答案)。