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

Katex 兼容性 #19

Open
undefined-moe opened this issue Sep 1, 2020 · 23 comments
Open

Katex 兼容性 #19

undefined-moe opened this issue Sep 1, 2020 · 23 comments

Comments

@undefined-moe
Copy link

No description provided.

@zhblue
Copy link
Owner

zhblue commented Sep 1, 2020

文件样例已经很简单明了,您可以选用任意自己熟悉的语言和技术进行解析,只要保证xml文本兼容即可。

@undefined-moe
Copy link
Author

对于Katex的编码方案是否有一套规范?内联样式表并直接插入HTML不仅使得题目内容无法二次编辑,而且存在安全性问题,是否有方法进行转码?

@undefined-moe
Copy link
Author

另,希望对languageId提出一套统一的规范。如c++在不同平台中可能表示为 c++ cpp cc cxx 等多种形式。

@zhblue
Copy link
Owner

zhblue commented Sep 4, 2020

另,希望对languageId提出一套统一的规范。如c++在不同平台中可能表示为 c++ cpp cc cxx 等多种形式。

然而他们都是c++,这里只提供标准,谁实现解析器谁负责翻译。

@zhblue
Copy link
Owner

zhblue commented Sep 4, 2020

对于Katex的编码方案是否有一套规范?内联样式表并直接插入HTML不仅使得题目内容无法二次编辑,而且存在安全性问题,是否有方法进行转码?

嵌入的html编辑如何实现问题,请实现解析的系统自行解决。
fps只存储交换数据用,不考虑二次编辑。

@undefined-moe
Copy link
Author

然而他们都是c++,这里只提供标准,谁实现解析器谁负责翻译。

应对导出时提供统一的规范,如c++仅能导出为cpp

嵌入的html编辑如何实现问题,请实现解析的系统自行解决。
fps只存储交换数据用,不考虑二次编辑。

Katex不同版本的css不兼容,且未提供原始MathML,存在兼容性问题。

@undefined-moe
Copy link
Author

以及一本通的example是不是把output全搞成input了((

@zhblue
Copy link
Owner

zhblue commented Sep 22, 2020

确实有这些问题,能力有限,欢迎PR

@undefined-moe
Copy link
Author

  1. 个人认为不应当允许导出 <div class="xxx">
  2. 建议指定导出原始Katex code(如 <latex>x^2</latex> 此类)

这将定义一套新版本方案,可能需要各端进行适配。

@zhblue
Copy link
Owner

zhblue commented Sep 24, 2020

现行阶段支持本标准的OnlineJudge实现还比较少,已有的数据都使用html作为文本内容的存储格式,也许给出hustoj的直接补丁,可以作为其他实现的参考。

@zhblue
Copy link
Owner

zhblue commented Sep 24, 2020

Katex 虽然是一种更高级的技术,但是目前看不如html的兼容普遍性好,个人倾向于在跨系统传递保存时,将数学公式复杂图表统一转成图片形式进行处理,实现起来代码更简练,可以方便更多的其他系统来兼容实现本标准。

@undefined-moe
Copy link
Author

不建议使用图片存储,理由如下:

  1. 几乎所有OnlineJudge均支持Katex。
  2. 后端很难导出时将Katex渲染为图片。

@zhblue
Copy link
Owner

zhblue commented Sep 25, 2020

几乎所有OnlineJudge均支持Katex?
恕我孤陋寡闻,POJ HDUOJ ZJU 都已经支持Katex了么?

后端很难导出时将Katex渲染为图片。
如果当初加题的时候就加成图片,就没这么麻烦了,对吧

@zhblue
Copy link
Owner

zhblue commented Sep 25, 2020

https://katex.org/ 上面写着
Server side rendering: KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML.
也就是说它自己都认为HTML能更好的兼容老式浏览器,以致于要开发相关的代码做这件事。

@undefined-moe
Copy link
Author

undefined-moe commented Sep 25, 2020

https://katex.org/ 上面写着
Server side rendering: KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML.
也就是说它自己都认为HTML能更好的兼容老式浏览器,以致于要开发相关的代码做这件事。

Server-side-render仅为渲染为HTML。 渲染出的HTML是不存在 跨Katex 版本的兼容性的。
如: Katex0.10渲染出的HTML在Katex0.11版本css显示时会存在上下标偏移的问题。

纠正:原文意为 katex.min.js 在老式版本浏览器的兼容性可能不佳,和 HTML 无关。

@undefined-moe
Copy link
Author

如果能够导出为 png/svg 的话会好很多,但相关技术仍不够成熟。

@undefined-moe
Copy link
Author

作为开发者,我更关注的是广泛使用的开源项目(qduoj/dmoj/syzoj/vijos),而非 poj 此类高校使用,内部维护,无计划兼容fps协议的系统。

@undefined-moe undefined-moe changed the title Feature Request: 希望提供xml解析后的dts文件方便对接 Katex 兼容性 Sep 25, 2020
@zhblue
Copy link
Owner

zhblue commented Sep 25, 2020

这样的话,希望你能从开发者角度给出katex兼容实现的标准建议,显然你对这个技术比我更熟悉。

@zhblue
Copy link
Owner

zhblue commented Sep 25, 2020

最好能给出实现代码,方便我学习新技术

@undefined-moe
Copy link
Author

如果继续使用HTML交换(这确实是兼容性最佳的方案),我建议导出富文本源码。<latex>x^2</latex> 此类,交给各平台导入,导出时处理。这在保证兼容性的同时提供了二次编辑支持,同时,对于使用markdown存储的后端服务器,可以很方便使用 turndown 配合

turndown.addRule('latex', {
  filter: ['latex'],
  replacement: function (content) {
    return '$' + content + '$'
  }
});

快速转换。另,这将提供对希望使用MathJax系统的更优兼容方案。

补充: 为什么不使用 pre-rendered html?
当前使用 <link rel="stylesheet"> 的方案存在注入风险。

@zhblue
Copy link
Owner

zhblue commented Sep 25, 2020

这个看起来不错,不知道是不是我理解的这样。
x^2 这个是放在 description / input 等这些标签的cdata内部,对吗?

@undefined-moe
Copy link
Author

undefined-moe commented Sep 26, 2020

对的,就等于添加一个自定义的类似 <b> 这类的tag

@quanzhongxian
Copy link

vue使用katex时,当 contenteditable="true"时,修改浏览器页面上的公式,怎么样才能使 katex的公式代码也改变,比如\cfrac{a}{b},当我在浏览器页面修改时,把a修改成c,那么原来的cfrac{a}{b},应该变为cfrac{c}{b}

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

3 participants