【发布时间】:2022-04-22 00:11:04
【问题描述】:
我已经搜索过这个主题,但无法找到直接的答案,而且我的javascript也不好。所以我希望有人能告诉我如何做到这一点。
我只是喜欢在 canvas2D 中显示数学。我使用context.fillText 将字符串传递给canvas2d,但该字符串显然没有被Mathjax 处理,因为它不在页面本身上。
这是一个 MWE。我需要对其进行什么修改才能使数学显示在画布上?
<!DOCTYPE html>
<html>
<head>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: { inlineMath: [['$','$'],['\\(','\\)']] }});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head>
<body>
</p>Trying to render $\sin(x)$ inside canvas 2D as text</p>
<div>
<canvas id="e" width="200" height="200"></canvas>
<script>
var canvas = document.getElementById("e");
var context = canvas.getContext("2d");
context.font = "normal 16px Arial";
context.fillText("test string", 50, 50);
context.fillText("$\sin(x)$", 50, 100);
</script>
</div>
</body>
</html>
我现在得到的输出是
再次,我明白为什么它不起作用,因为数学在字符串中,Mathjax 无法看到和处理它。但它必须是一个供画布使用的字符串。我不能只写context.fillText($\sin(x)$, 50, 100); 没有字符串引号,因为它不起作用。
这可能是一个相关的问题,但不确定。
How do I format html with MathJax after loading it using jQuery.load?
【问题讨论】:
-
你看过developer.mozilla.org/en-US/docs/HTML/Canvas/…吗? MathJax 可以生成自然候选的 SVG 输出。但正如@Mikko Ohtamaa 指出的那样,MathJax 目前没有画布输出。
-
来自未来的注意事项:cdn.mathjax.org 即将结束生命周期,请查看mathjax.org/cdn-shutting-down 以获取迁移提示(也许为未来的读者更新您的帖子)。
-
另外,请查看stackoverflow.com/questions/34924033/… 以获得答案。