AlanDecode/Maverick

较复杂度LaTeX公式无法解析

Closed this issue · 4 comments

Actual behavior

较复杂度LaTeX公式无法解析。

Expected behavior

正确解析公式。

How to reproduce

下面两个公式均无法正常解析:

  1. 行内公式
    $f(i)=max\{f(j)|j<i,a_j<a_i\}+1$
    原因:虽然正确解析,但是<导致网页中公式解析失败。
  2. 行间公式
    $$
    \begin{aligned}
    \dot{x}&=\sigma(y-x)\\
    \dot{y}&=\rho x-y-xz\\
    \dot{z}&=-\beta z+xy
    \end{aligned}
    $$
    
    原因:在解析之后行末代表换行的双反斜杠\\变成了\,也就是变成了如下所示:
    $$
    \begin{aligned}
    \dot{x}&=\sigma(y-x)\
    \dot{y}&=\rho x-y-xz\
    \dot{z}&=-\beta z+xy
    \end{aligned}
    $$
    

Environment and configuration

使用的是commitidd1572bd9a47f9a920c32268697b4b8a19602bf7dMaverick,即大佬您Wiki中使用的版本。

主题为latest分支的Kepler(但是我感觉该问题应该和主题无关QAQ)。

演示链接中的第三行可以看到错误的解析。

Additional information

我尝试过解决,但是没能完全解决。

上述行内公式由于<的问题网页中解析失败可以通过修改Maverick/Maverick/Markdown.py文件164MathRendererMixin中所有textmistune.escape(text)来转义解决。

上述行间公式解析错误我感觉应该是mistune解析把双反斜杠吃掉了,但是因为我基本不会python所以没能解决问题QAQ。

希望大佬有空的时候研究一下。

顺便,由衷感谢大佬写的解析器和主题QwQ。

应该是解析时的转义问题,请看看新的 Maverick 有没有解决这个问题。

并没有解决唉,双反斜杠还是没能解析出来QAQ。
推荐一个解析器pandoc,功能比较强大,可能能够解决各种markdown和html混杂的问题(也可以解决公式问题),python中有pypandoc组件可以调用pandoc来解析Markdown。
但是需要电脑提前安装了pandoc才能用pypandoc,可能不是很方便。不过如果是利用github action的话可以将pandoc的deb包上传到仓库然后在action中安装deb包。
如果大佬感兴趣可以尝试一下。

你上面那条反馈里的两个用例,我用最近的 Maverick 都能成功解析:

你再试试,确保Maverick来自最新的提交。

可以了,抱歉是因为Markdown写法的原因QAQ。
如果$$和之前的文字之间没有换行仍会导致双反斜杠消失,中间有换行则不会。
不过这个写法可能本身就不规范,总之感谢大佬QwQ。