是否可以内联显示 MathJax 渲染的 TeX 的源代码?
Is it possible to display the source of MathJax-rendered TeX inline?
我正在阅读 this book 那里有 MathJax 公式。我正在 Ipython 笔记本上做笔记。从带有数学公式的段落中记笔记是不方便的。有没有一种简单的方法可以将带有方程式的文本复制为 Tex 命令(在 Ipython 上可以渲染)?
更新
TL;DR
- 右键单击公式 > 数学设置 > 数学渲染器 > MathML
- 创建 bookmarklet 来自:
javascript:(function() { var inline = document.getElementsByClassName("MathJax_MathML"); for (var i = 0; i < inline.length; i++) { var math = inline[i]; math.innerHTML = '<span>$</span>' + math.innerHTML + '<span>$</span>'; } })()
- 运行 按下页面上的小书签
- 享受更轻松的复制和粘贴!
长版
This Github issue has a fix for the problem. It didn't work well for this page 所以我像上面那样稍微改了一下。这不是一个通用的解决方案,但您可以根据页面的具体情况对其进行调整。如果你比较急,可以细说一下,做个浏览器扩展供大家欣赏:).
旧答案
我在 this example 上尝试了几种方法:
方法一:
- 通过以下方式更改设置以呈现为 MathML:右键单击公式 > 数学设置 > 数学渲染器 > MathML
- 打开页面源,例如Chrome 上的
Ctrl + U
或右键单击并按 'View Source'。
- 找到您要查找的文本。它应该以正确的格式显示:
bla bla $a \ne 0$ bla bla \(ax^2 + bx + c = 0\) bla bla
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
方法二:
执行前面方法的第 1 步。示例页面将使用公式呈现,但没有包含公式的字符。
在 TeX 命令周围添加单美元符号或双美元符号,以获得与前面方法的步骤 3 相同的格式。
最好是将这两种方法结合起来;即直接在页面中获取正确的格式。如果您找到了方法,请告诉我们。
感谢@nam 和@PeterKrautzberger 的提示:)
这是我对@Thoran 的回答的扩展bookmarklet,它可以自动将渲染器更改为 MathML 并内联显示 MathJax 公式源:
javascript: (function() { MathJax.Hub.setRenderer("NativeMML"); MathJax.Hub.Queue(["Rerender", MathJax.Hub]); MathJax.Hub.Queue(function () { var inline = document.getElementsByClassName("MathJax_MathML"); for (var i = 0; i < inline.length; i++) { var math = inline[i]; math.innerHTML = '$' + math.innerHTML + '$'; } }); })()
这里是 PlainSource 版本:
javascript: (function() { MathJax.Hub.setRenderer("PlainSource"); MathJax.Hub.Queue(["Rerender", MathJax.Hub]); MathJax.Hub.Queue(function () { var inline = document.getElementsByClassName("MathJax_PlainSource"); for (var i = 0; i < inline.length; i++) { var math = inline[i]; math.innerHTML = '$' + math.innerHTML + '$'; } }); })()
我正在阅读 this book 那里有 MathJax 公式。我正在 Ipython 笔记本上做笔记。从带有数学公式的段落中记笔记是不方便的。有没有一种简单的方法可以将带有方程式的文本复制为 Tex 命令(在 Ipython 上可以渲染)?
更新
TL;DR
- 右键单击公式 > 数学设置 > 数学渲染器 > MathML
- 创建 bookmarklet 来自:
javascript:(function() { var inline = document.getElementsByClassName("MathJax_MathML"); for (var i = 0; i < inline.length; i++) { var math = inline[i]; math.innerHTML = '<span>$</span>' + math.innerHTML + '<span>$</span>'; } })()
- 运行 按下页面上的小书签
- 享受更轻松的复制和粘贴!
长版
This Github issue has a fix for the problem. It didn't work well for this page 所以我像上面那样稍微改了一下。这不是一个通用的解决方案,但您可以根据页面的具体情况对其进行调整。如果你比较急,可以细说一下,做个浏览器扩展供大家欣赏:).
旧答案
我在 this example 上尝试了几种方法:
方法一:
- 通过以下方式更改设置以呈现为 MathML:右键单击公式 > 数学设置 > 数学渲染器 > MathML
- 打开页面源,例如Chrome 上的
Ctrl + U
或右键单击并按 'View Source'。 - 找到您要查找的文本。它应该以正确的格式显示:
bla bla $a \ne 0$ bla bla \(ax^2 + bx + c = 0\) bla bla
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
方法二:
执行前面方法的第 1 步。示例页面将使用公式呈现,但没有包含公式的字符。
在 TeX 命令周围添加单美元符号或双美元符号,以获得与前面方法的步骤 3 相同的格式。
最好是将这两种方法结合起来;即直接在页面中获取正确的格式。如果您找到了方法,请告诉我们。
感谢@nam 和@PeterKrautzberger 的提示:)
这是我对@Thoran 的回答的扩展bookmarklet,它可以自动将渲染器更改为 MathML 并内联显示 MathJax 公式源:
javascript: (function() { MathJax.Hub.setRenderer("NativeMML"); MathJax.Hub.Queue(["Rerender", MathJax.Hub]); MathJax.Hub.Queue(function () { var inline = document.getElementsByClassName("MathJax_MathML"); for (var i = 0; i < inline.length; i++) { var math = inline[i]; math.innerHTML = '$' + math.innerHTML + '$'; } }); })()
这里是 PlainSource 版本:
javascript: (function() { MathJax.Hub.setRenderer("PlainSource"); MathJax.Hub.Queue(["Rerender", MathJax.Hub]); MathJax.Hub.Queue(function () { var inline = document.getElementsByClassName("MathJax_PlainSource"); for (var i = 0; i < inline.length; i++) { var math = inline[i]; math.innerHTML = '$' + math.innerHTML + '$'; } }); })()