我搜索过这个主题,但无法找到直接答案,而且我也不擅长 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);
没有字符串引号,因为它不起作用。
可能是一个相关的问题,但不确定。
使用 jQuery.load 加载 html 后,如何使用 MathJax 格式化 html?
<canvas>
文本绘制操作是独立的操作DOM 操作因此 Mathjax 无法与画布文本渲染操作交互。
我不确定是否存在<canvas>
当前 MathJax 的渲染器后端。至少通过检查当前 MathJax 演示的渲染选项似乎并非如此。因此,MathJax 只能在 DOM 上创建输出。
出于安全原因,浏览器不允许渲染 DOM<canvas>
直接,尽管这在技术上是可能的。否则,人们可能会通过渲染网站来窃取您登录的网站(例如 Facebook)的内容<iframe>
然后渲染这个<iframe>
在画布上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)