让PageDown键和MathJax共同努力(let PageDown and MathJax wo

2019-06-25 20:13发布

我实现它应该看起来很像在一个UI math.stackexchange.com :

  1. 使用花哨的降价就像你是用来在计算器
  2. 解析formulars之间使用MathJax $ ... $ -signs。

于是我下载了PageDown键演示,并设置它,它工作得很好。 现在我尽量让MathJax加载动态每次的<textarea>变化。

MathJax有一个例子这种方法,但我不能让它运行。 这就是“我”的代码如下所示:

     <link rel="stylesheet" type="text/css" href="demo.css" />

    <script type="text/javascript" src="../../Markdown.Converter.js"></script>
    <script type="text/javascript" src="../../Markdown.Sanitizer.js"></script>
    <script type="text/javascript" src="../../Markdown.Editor.js"></script>

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.js"></script>
    <script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        tex2jax: {
          inlineMath: [["$","$"],["\\(","\\)"]]
        }
      });
    $("#wmd-input").keypress(function(event){
        UpdateMath($(this).val());
    });
    </script>
    <script type="text/javascript" src="../../../mathjax-MathJax-07669ac/MathJax.js?config=TeX-AMS_HTML-full">
    </script>
</head>
<body>
    <script>
      (function () {
        var QUEUE = MathJax.Hub.queue;  // shorthand for the queue
        var math = null;                // the element jax for the math output.

        QUEUE.Push(function () {
          math = MathJax.Hub.getAllJax("#wmd-preview")[0];
        });

        window.UpdateMath = function (TeX) {
          QUEUE.Push(["Text",math,"\\displaystyle{"+TeX+"}"]);
        }
      })();
    </script>

    <div class="wmd-panel">
        <div id="wmd-button-bar"></div>
        <textarea class="wmd-input" id="wmd-input" value=""/>

    </textarea>
    </div>
    <div id="wmd-preview" class="wmd-panel wmd-preview"></div>
    <br /> <br />
    <script type="text/javascript">(function () {
                 var converter1 = Markdown.getSanitizingConverter();
            var editor1 = new Markdown.Editor(converter1);
            editor1.run();
        })();
    </script>
</body>

该段应更新预览每次的keypress事件。 相反,在页面的onload特克斯呈现正常,但只要我开始输入$ ... $代码印在预览框中。

Answer 1:

我创建了一个基本的例子为如何获得下页和MathJax共同努力使用堆栈交易所的轻微的修改mathjax-editing.js 。

堆栈交易所的代码是基于达维德塞文的, 看到他在另一个答案评论 。

该示例的代码可以在被看作github上 。



Answer 2:

有几个问题与当前设置。 首先,必须从借用的例子是更新单个方程,而不是一段一段,其包括多个方程的一个例子。 对于这一点,你需要考虑的第二个动态例子 (从MathJax 例子页 )。 你应该在你的浏览器的控制台,将有一个做会得到一个错误信息null值( math将是null ,除非你有一些数学开始了在编辑器中开始)。

但有一个第二个问题,这是大规模杀伤性武器的编辑会更新大规模杀伤性武器预览区域,你应该用它配合做MathJax更新,否则它可能会同时MathJax正在改变它的div内容。 大规模杀伤性武器也即将当它不只是在每个按键(如箭头键不会导致更新)更新更聪明,所以这将是更为有效和协调。 大规模杀伤性武器的SE版本有钩子,让你做到这一点,我怀疑你使用的是一个不为好。

最后,你将不得不做更多的工作,以保护从数学的降价引擎,这样的东西像下划线和反斜线不要被降价,当他们出现在数学处理。 这是一个有点棘手,但不这样做,你会遇到很多与未能恰当处理您的TeX代码的问题。

为了处理最后两个问题,你可能会考虑看使用MSE代码为挂钩MathJax到大规模杀伤性武器。 也许这会给你如何去做一些线索。



Answer 3:

我只是加起来标记 (另一个降价库比下页)和“MathJax”到“降价+ mathjax现场编辑器”。

观看演示: http://kerzol.github.io/markdown-mathjax/editor.html

并获得源: https://github.com/kerzol/markdown-mathjax



Answer 4:

达尔加斯杰夫在堆栈溢出刚刚发布了MathJax + PageDown键集成代码为依据 。 见的元后的更多细节。



文章来源: let PageDown and MathJax work together