Использование MathJax в ClojureScript - PullRequest
0 голосов
/ 23 мая 2018

Я хочу использовать MathJax в программе ClojureScript для набора некоторой математики в элементе DOM, а не на всей странице (которая работает), только в этом конкретном элементе DOM.(Это панель предварительного просмотра редактора Markdown, который также форматирует математику в формате Latex.)

Согласно этой странице документации на сайте 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, и любые рекомендации о том, как настроить файл externs для использования с оптимизированной сборкой, будут приветствоваться.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Ты рядом.Я думаю, вам просто нужно превратить вектор Clojure в список JavaScript.Вы можете использовать макрос #js reader:

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

Здесь - это строка кода в одном из моих собственных проектов, которая эквивалентна, хотя и использует немного другой синтаксис.

Обновление: изменить TypeSet на Typeset.

0 голосов
/ 23 мая 2018

Я не знаю о MathJax, но этот шаблонный проект CLJS содержит примеры 3 различных способов выполнения нативного взаимодействия JS из ClojureScript:


Глядя на пример MathJax :

<!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>

, это кажется простым.Можете ли вы привести пример того, что вы пытаетесь сделать?

...