Racive JS和使用LaTeX输入更新MathJax
Ractive JS and updating MathJax with LaTeX input?
我正在尝试让ractive.js动态更新MathJax。
现在我知道你可以用触发MathJax重新加载
MathJax.Hub.Queue.Push(["Typeset",MathJax.Hub]);
因此,我将其绑定到观察回调:
ractive.observe('input', function (input) {
ractive.set('output', input * 2);
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
});
但是当我尝试用'begin{equation} {{output}} 'end{equation}
渲染MathJax时它保持在其初始值。
测试用例
奇怪的是,它确实得到了初始值,只是没有得到更新。
有什么想法吗?
EDIT:它似乎添加了一整堆嵌套的MathJax_MathContainer
元素,每个调用一个。
JsFiddle演示与Peter Krautzberger的建议-似乎仍然不起作用
问题是MathJax从DOM中删除了元素,因此Racive无法再更新它们。这可以通过代替使用将LaTeX封装在<script type="math/tex; mode=display" id="foo">
元素中的MathJax搜索(例如$$
)来解决。这将阻止替换,因为MathJax可以在内部处理脚本元素。
现在您可以观察变量并使用MathJax.Hub.Queue(["Typeset",MathJax.Hub, "foo"]);
触发重新绘制
非常感谢Peter Krautzberger的建议/解决方案。
@wrongusername我没有Racive的任何经验,大约3年前我才使用MathJax,但我尝试过Reprocess
而不是Typeset
,它很有效。我认为您应该使用Reprocess
,因为您的输入已更改。从文件上看,
从文档或DOM元素(或元素(如果是元素数组),然后处理数学又来了,一切都重新排版。
请参阅此处更新的JSFiddle。
你只需要更换
MathJax.Hub.Queue(["Typeset", MathJax.Hub, "foo"]);
带有
MathJax.Hub.Queue(["Reprocess", MathJax.Hub, "foo"]);
希望能有所帮助。
- 如何根据其他日期的输入更新日期
- 如何使用ng repeat中的选定输入更新我的对象
- 使用输入更新 ng 模型数据
- 如何使用表单输入更新代码
- Racive JS和使用LaTeX输入更新MathJax
- JavaFX - 通过输入更新 WebView 中的变量值
- 根据输入更新对象数组
- Javascript:在输入更新后更新结果值
- Javascript 根据另一个文本框的输入更新文本框
- 通过 JavaScript 根据用户输入更新信用卡徽标
- 如何使用纯javascript使用用户输入更新空段落
- 根据另一个输入更新角度模型中的一个值
- 如何根据用户输入更新D3 SVG图表
- D3-使用动态输入更新svg-attr()
- 根据上次输入中输入的HexColor,自动将输入更新为较暗的HexClor
- 根据输入更新跨度值
- 根据用户输入更新网页
- 根据输入更新背景色
- 使用用户输入更新URL参数
- 如何从“输入”更新实际可见值;在页面上使用AngularJS