Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

浏览器剪藏扩展实验特性 MathJax3 增强 #13543

Open
jabobian opened this issue Dec 19, 2024 · 7 comments
Open

浏览器剪藏扩展实验特性 MathJax3 增强 #13543

jabobian opened this issue Dec 19, 2024 · 7 comments

Comments

@jabobian
Copy link

jabobian commented Dec 19, 2024

提供菜单或快捷键选项支持在粘贴时将 HTML中的 MathJax 部分自动转为 Latex

In what scenarios do you need this feature?

从一些网站上复制文字和公式过来时,剪贴板里面的公式格式是 MathJax,但是粘贴时只保留了纯文本,还需要手动 Ctrl-M 去编辑,或者在网页上一个一个右键 copy to Latex command,然后粘贴,太麻烦。

Describe the optimal solution

希望能够在粘贴时右键菜单或快捷键提供将剪贴板里面的 MathJax 内容自动转成 Latex (例如使用 mathjax.js 或 tex-mml-chtml.js 中的部分功能代码)

Describe the candidate solution

No response

Other information

No response

@jabobian jabobian changed the title 提供菜单或选项支持在粘贴时将 HTML中的 MathJax 部分自动转为 Latex 提供菜单或快捷键选项支持在粘贴时将 HTML中的 MathJax 部分自动转为 Latex Dec 19, 2024
@88250
Copy link
Member

88250 commented Dec 19, 2024

请给一个具体的网页以便分析,谢谢。

@jabobian
Copy link
Author

jabobian commented Dec 20, 2024

英文版网页 https://lilianweng.github.io/posts/2018-11-30-meta-learning/
使用的MathJax版本是v3.2,
复制之后,剪贴板中有 mjx-** 和 MathML 的信息。

中文版网页 https://wei-tianhao.github.io/blog/2019/09/17/meta-learning.html
使用的MathJax版本是v2.7
每个公式包含了三种格式的信息:

  1. MathJax: MathJax class 和 data-mathml 属性,如
    data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>&#x03B1;</mi><mi>t</mi></msub></math>"
  2. MathML:MJX_Assistive_MathML
  3. script, <script type="math/tex" id="MathJax-Element-175">\alpha_t</script>
    复制之后剪贴板中 MathML (mi, mrow, mn, msubsup 等)信息和 mathjax css混杂在一起。

我觉得支持v3的就可以。v2的已经比较少见了。

@88250
Copy link
Member

88250 commented Dec 20, 2024

对于这样格式的目前无法转换:

image

对于这样格式的稍后会尝试改进:

image

@88250
Copy link
Member

88250 commented Dec 20, 2024

尝试了下 https://wei-tianhao.github.io/blog/2019/09/17/meta-learning.html 这个复制粘贴不行,只能通过浏览器剪藏扩展才能转换。

@88250 88250 closed this as completed Dec 20, 2024
@jabobian
Copy link
Author

谢谢D大。我在 MathJax github 项目上提问,得到一个有价值的答复 Need Context menu option Render As Plain Source in V3 (or V3.2+)

即克隆一个页面,在其中的一个的 console 中输入 MathJax.startup.document.state(0, true); 就会自动刷新显示纯文本渲染。这句指令估计用 GreasyMonkey 或 TamperMonkey 脚本可以自动化(正在测试)。

基于这个答复的方法,直接复制到思源笔记实现自动排版是没问题的,不过目前 MathJax 行间公式默认的是包在 $$ $$ 中间,粘贴时不会自动转换,而且会影响其它的 $$ 行内公式也不能转换。这一点能提供解决方案吗。

$$ c_S(\mathbf{x}) = P(y \vert \mathbf{x}, S) = \sum_{i=1}^k a(\mathbf{x}, \mathbf{x}_i) y_i \text{, where }S=\{(\mathbf{x}_i, y_i)\}_{i=1}^k $$
The attention kernel depends on two embedding functions, $f$ and $g$, for encoding the test sample and the support set samples respectively. The attention weight between two data points is the cosine similarity, $\text{cosine}(.)$, between their embedding vectors, normalized by softmax:

@jabobian
Copy link
Author

可以用 TamperMonkey脚本的菜单实现切换,Bookmarklet也可以。

// ==UserScript==
// @name         MathJax显示模式
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Add a menu to run JavaScript snippets
// @author       You
// @match        *://*/*
// @match        *://*.github.*/*
// @grant        GM_registerMenuCommand
// ==/UserScript==

(function() {
    'use strict';

    // Register menu command
    GM_registerMenuCommand('1 纯文本', runMyJavaScript1);
    GM_registerMenuCommand('2 MathML渲染', runMyJavaScript2);

    // Function to execute JavaScript when the menu item is clicked
    function runMyJavaScript1() {
        // Place your JavaScript code here
        //console.log('Running custom JavaScript!');
        // Example: alert('Hello, world!');
        MathJax.startup.document.state(0, true);
    }

    function runMyJavaScript2() {
        MathJax.startup.document.clear();
        MathJax.typesetPromise();
    }
})();

@88250
Copy link
Member

88250 commented Dec 23, 2024

虽然可以转换为 text,但是思源解析 HTML 时会将纯文本中的标记符进行转义,即 $$ foo $$ 中的 $ 会被转义,所以无法解析为公式,这个问题还不好解决,除非弄成这样的格式:

image

思源会解析 <script type="math/tex"> 中的文本作为公式内容。但是前面提到过,手动复制的话浏览器不会复制 <script> 标签,只能用剪藏扩展。

这个问题后面我们看看能不能在浏览器剪藏扩展中加个实验特性:增强 MathJax3 公式解析,勾选的话会使用 MathJax.startup.document.state(0, true); 转换文本,并且告诉解析器不要转义 $

@88250 88250 reopened this Dec 23, 2024
@88250 88250 changed the title 提供菜单或快捷键选项支持在粘贴时将 HTML中的 MathJax 部分自动转为 Latex 浏览器剪藏扩展实验特性 MathJax3 增强 Dec 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants