在 ClojureScript 中使用 MathJax
Using MathJax in ClojureScript
我想在 ClojureScript 程序中使用 MathJax 来排版一些数学
一个 DOM 元素,而不是整个页面(有效),只是这个特定的 DOM 元素。 (它是 Markdown 编辑器的实时预览面板,它也以 Latex 格式格式化数学。)
根据 MathJax 网站上的 this documentation page,您可以使用一些东西
在 JavaScript.
中像这样
MathJax.Hub.Queue(["Typeset", MathJax.Hub, latex-node]);
我一直在反复试验,但没有做对。像这样:
(defn typeset-latex
[latex-node]
(.Queue js/MathJax.Hub ["TypeSet" (.-Hub js/MathJax) latex-node]))
在运行时编译并且不会产生任何错误,但也不产生任何输出。
使用 js*
宏尝试重现文档页面上的方法:
(js* "MathJax.Hub.Queue([\"TypeSet\", MathJax.Hub, \"mde-preview-id\"]);")
在浏览器中生成一条错误消息,指出 "Error: Can't make callback from given data"。
ALSO:假设我可以获得正确的语法以在 figwheel
中进行排版,关于如何设置外部文件以用于优化构建的任何指南将不胜感激。
我不知道 MathJax,但这个模板 CLJS 项目有 3 种不同的方式从 ClojureScript 执行本机 JS 互操作的示例:
正在查看the MathJax example:
<!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>
看起来很简单。你能举例说明你正在尝试做什么吗?
你很接近。我认为您只需要将 Clojure 向量制作成 JavaScript 列表即可。您可以使用 #js
reader 宏:
(defn typeset-latex
[latex-node]
(.Queue js/MathJax.Hub #js ["Typeset" (.-Hub js/MathJax) latex-node]))
Here 是我自己的一个项目中的一行代码,虽然它使用的语法略有不同,但它们是等效的。
更新:将 TypeSet
更改为 Typeset
。
我想在 ClojureScript 程序中使用 MathJax 来排版一些数学 一个 DOM 元素,而不是整个页面(有效),只是这个特定的 DOM 元素。 (它是 Markdown 编辑器的实时预览面板,它也以 Latex 格式格式化数学。)
根据 MathJax 网站上的 this documentation page,您可以使用一些东西 在 JavaScript.
中像这样MathJax.Hub.Queue(["Typeset", MathJax.Hub, latex-node]);
我一直在反复试验,但没有做对。像这样:
(defn typeset-latex
[latex-node]
(.Queue js/MathJax.Hub ["TypeSet" (.-Hub js/MathJax) latex-node]))
在运行时编译并且不会产生任何错误,但也不产生任何输出。
使用 js*
宏尝试重现文档页面上的方法:
(js* "MathJax.Hub.Queue([\"TypeSet\", MathJax.Hub, \"mde-preview-id\"]);")
在浏览器中生成一条错误消息,指出 "Error: Can't make callback from given data"。
ALSO:假设我可以获得正确的语法以在 figwheel
中进行排版,关于如何设置外部文件以用于优化构建的任何指南将不胜感激。
我不知道 MathJax,但这个模板 CLJS 项目有 3 种不同的方式从 ClojureScript 执行本机 JS 互操作的示例:
正在查看the MathJax example:
<!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>
看起来很简单。你能举例说明你正在尝试做什么吗?
你很接近。我认为您只需要将 Clojure 向量制作成 JavaScript 列表即可。您可以使用 #js
reader 宏:
(defn typeset-latex
[latex-node]
(.Queue js/MathJax.Hub #js ["Typeset" (.-Hub js/MathJax) latex-node]))
Here 是我自己的一个项目中的一行代码,虽然它使用的语法略有不同,但它们是等效的。
更新:将 TypeSet
更改为 Typeset
。