如何在MathJax-Node中更改SVG的默认颜色

时间:2018-12-31 05:14:20

标签: mathjax

我正在使用MathJax-node生成方程的SVG。我想更改默认颜色,但到目前为止没有任何效果。

我看着this answer并尝试了

mjAPI.config({MathJax: {
   styles: {
    ".MathJax_SVG, .MathJax_SVG_Display": {
      fill: "#FFF",
      stroke: "#FFF"
    }
  }}});

我也尝试过

mjAPI.config({MathJax: {
   SVG: {color: "#0FF", fill: "#0F0", stroke: "#F00"}}});

和一些变体,例如在styles下包含SVG,但到目前为止没有任何效果。

我可以通过在TeX表达式中设置样式来解决此问题,但我希望能够设置默认配置,以便我可以处理表达式而无需更改它们。

1 个答案:

答案 0 :(得分:0)

MathJax节点将其输出与fill="currentColor stroke="currentColor"分组在一起,以便从周围的文本继承颜色。因此,更改颜色的一种方法是设置将容纳SVG输出的容器的颜色。您上面提供的配置将在浏览器中为MathJax做到这一点,因为MathJax将其SVG输出围绕在class="MathJax_SVG"class="MathJax_SVG_Display"容器中;但是MathJax节点不像MathJax那样生成容器HTML元素,因此不会生成类为MathJax_SVGMathJax_SVG_Display的元素。无论如何,这些样式都会放入要添加到页面的样式表中,而不是用于向生成的SVG添加显式样式,因此您必须将该样式表包括在按顺序排列SVG输出的页面中即使您正在生成具有适当类的容器,也可以使上述配置生效。

但是,您可能希望让currentColor成为某种特定的颜色,以使颜色不会继承。由于SVG是基于文本的图像格式,因此可以在mathjax-node驱动程序文件中使用字符串替换来实现。例如:

mjAPI.typeset({
  math: "x+1",
  format: "TeX",
  svg: true,
  useFontCache: false,
  ex: 6, width: 100
}, function (data) {
  if (!data.errors) {
    console.log(data.svg.replace(/"currentColor"/g, '"red"'));
  }
});

将在输出中将颜色设置为红色。

相关问题