我想在ClojureScript程序中使用MathJax来排版一些数学 一个DOM元素,而不是整个页面(可以工作),只是这个特定的DOM元素。 (它是Markdown编辑器的实时预览窗格,它也以Latex格式格式化数学。)
根据MathJax网站上的this documentation page,你可以使用一些东西 像这样在JavaScript中。
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.never;
//Testing scenario
verify(mockObject, never()).someMethod(mockParam1, MockParam2);
我一直在使用反复试验并且没有把它弄好。像这样:
MathJax.Hub.Queue(["Typeset", MathJax.Hub, latex-node]);
在运行时编译并不会产生任何错误,但也不会产生任何输出。
使用(defn typeset-latex
[latex-node]
(.Queue js/MathJax.Hub ["TypeSet" (.-Hub js/MathJax) latex-node]))
宏尝试在文档页面上重现该方法:
js*
在浏览器中生成一条错误消息,指出"错误:无法从给定数据进行回调"。
ALSO :假设我可以正确使用(js* "MathJax.Hub.Queue([\"TypeSet\", MathJax.Hub, \"mde-preview-id\"]);")
中的排版工作语法,那么有关如何设置externs文件以便与优化版本一起使用的任何指导都将受到赞赏。< / p>
答案 0 :(得分:3)
你很亲密。我想你只需要将Clojure向量放入JavaScript列表中。您可以使用#js
阅读器宏:
(defn typeset-latex
[latex-node]
(.Queue js/MathJax.Hub #js ["Typeset" (.-Hub js/MathJax) latex-node]))
Here是我自己的一个项目中的一行代码,虽然它使用的语法稍有不同,但它是等效的。
更新:将TypeSet
更改为Typeset
。
答案 1 :(得分:0)
我不了解MathJax,但是这个模板CLJS项目有3种不同的方法可以用ClojureScript执行原生JS互操作的例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>MathJax example</title>
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/latest.js?config=TeX-MML-AM_CHTML" async>
</script>
</head>
<body>
<p>
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
</p>
</body>
</html>
这似乎很简单。你能举例说明你想做什么吗?