代码之家  ›  专栏  ›  技术社区  ›  clartaq

在clojurescript中使用mathjax

  •  1
  • clartaq  · 技术社区  · 7 年前

    我想在clojurescript程序中使用mathjax在 一个dom元素,而不是整个页面(有效),只是这个特定的dom元素。(这是Markdown编辑器的实时预览窗格,它还将数学格式设置为乳胶格式。)

    根据 this documentation page 在Mathjax网站上,你可以使用 在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\"]);")
    

    在浏览器中生成一条错误消息,指出“错误:无法从给定数据进行回调”。

    产科加强生命支持 :假设我可以正确地使用语法来进行排版。 figwheel ,对于如何设置外部文件以用于优化构建的任何指导都将不胜感激。

    2 回复  |  直到 7 年前
        1
  •  3
  •   exupero    7 年前

    你很接近。我认为您只需要将Clojure向量制作成一个javascript列表。您可以使用 #js 读卡器宏:

    (defn typeset-latex
      [latex-node]
      (.Queue js/MathJax.Hub #js ["Typeset" (.-Hub js/MathJax) latex-node]))
    

    Here 在我自己的项目中,有一行代码是等效的,尽管它使用的语法稍有不同。

    更新:更改 TypeSet Typeset .

        2
  •  0
  •   Alan Thompson    7 年前

    我不知道Mathjax,但是这个模板cljs项目有3种不同的方法来执行来自clojurescript的本地js interop:


    看着 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>
    

    看起来很简单。你能举个例子说明你想做什么吗?

    推荐文章