代码之家  ›  专栏  ›  技术社区  ›  John

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

  •  0
  • John  · 技术社区  · 7 年前

    我经常使用矢量运算,通常矢量是用粗体字写的,例如。

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

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

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

    那么上面的方程式可以简单地写成:

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

    因为我经常使用这些粗体字体,我不想一次又一次地键入它们,我计划将它们定义为文件中的宏:粗体字体。js,当我需要输入vector时,我只需要粗体字体。js。

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

    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}',
            }
        }
    });
    

    我尝试使用文件(使用\require命令)作为

    $$ 
    \require{boldfont} 
    \bf=\bu+\bv-\bw
    $$
    

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

    请帮帮我。

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  0
  •   Davide Cervone    7 年前

    TeX配置块是在首次加载TeX输入jax时读取的,因此如果调用 MathJax.Hub.Config() 之后,您所做的更改将不会被TeX input 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 这个问题被交叉贴在哪里)。