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

更新后,有$出现的文章全部空白 #488

Closed
Clloz opened this issue Sep 10, 2020 · 30 comments
Closed

更新后,有$出现的文章全部空白 #488

Clloz opened this issue Sep 10, 2020 · 30 comments

Comments

@Clloz
Copy link

Clloz commented Sep 10, 2020

原来只是在非 pre 的部分使用 $ 会空白,更新以后,我在代码块里面的 $ 文章都变空白。

sudo yum install -y epel-release

cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo

这里面就一个 $ 最后也是空白。

我仔细翻了一下,也有些文章有 $ 但是正常的。

@LuRenJiasWorld
Copy link
Owner

LuRenJiasWorld commented Sep 10, 2020

好的,我现在检查一下。

之前也收到过类似的用户反馈,可能公式识别还是存在一些问题,这部分存在太多不确定因素。

请问可以提供下存在问题文章的Markdown全文,以及能复现此问题的文章链接吗?

@Clloz
Copy link
Author

Clloz commented Sep 10, 2020

可以,我把显示不出的整理一下打包用邮件发你可以吗。

@LuRenJiasWorld
Copy link
Owner

LuRenJiasWorld commented Sep 10, 2020

你可以使用gist.github.com上传。也可以发送到我的邮箱:loli@lurenjia.in

@Clloz
Copy link
Author

Clloz commented Sep 10, 2020

好的,我晚一点整理一下。辛苦了。

@LuRenJiasWorld
Copy link
Owner

好的,麻烦顺便附上存在问题的文章链接,便于我这边复现问题。

@Clloz
Copy link
Author

Clloz commented Sep 10, 2020

好的,没问题。

@Clloz
Copy link
Author

Clloz commented Sep 11, 2020

今天修改一篇文章,发现突然能显示了,后来测试了一下其他文章,大概规律就是有偶数个 $ 的就没有问题,奇数个 $ 就会空白。
有些 $ 特别多的文章,要先确定问题出在哪一块,然后在加上一个 $ 就可以了。比如下面这段(这篇文章我统计漏了,给你的邮件里没这篇):

- `$$`: 插入一个 `$`。
- `$&`: 插入匹配的子串。
- ``$` ``: 插入当前匹配的子串左边的内容。
- `$'`: 插入当前匹配的子串右边的内容。
- `$n`: 假如第一个参数是 `RegExp` 对象,并且 `n` 是个小于 `100` 的非负整数,那么插入第 `n` 个括号匹配的字符串.索引是从 `1` 开始。$(加上这个就能显示,去掉就空白)

这篇文章前面还有很多 $,但是问题出在这一段(把这一段删了就能正常显示),我只要在这一段后面的任意位置加一个 $ 就能正常显示了,但是加在这一段前面就不行。

@shellphy
Copy link

+1

@LuRenJiasWorld
Copy link
Owner

明白了,我尝试复现一下。

@LuRenJiasWorld
Copy link
Owner

LuRenJiasWorld commented Sep 11, 2020

@Clloz 你好,我将你发布的内容在本地环境发布了一遍,似乎没有复现你所描述的问题。参考链接:https://untitled.pw/13-2

因为LaTeX的识别和渲染是在页面加载期间进行的,如果我这边没能复现问题,但你这边升级后内容显示为空白,有可能问题就来自于新版本LaTeX识别算法和旧版本的数据不兼容。

你可以将内容显示为空白的文章重新更新一下,看看问题能否解决呢?更新方法为:编辑文章,然后什么也不做,重新保存一遍。

我这边也会尽快排查一下代码,检查是否存在遗漏的逻辑。因为10.2.0版本在修复BUG同时修改了一些代码逻辑,可能会造成不兼容问题,我以后会增加自动化测试的流程,尽量避免此类问题。辛苦了。

@Clloz
Copy link
Author

Clloz commented Sep 11, 2020

@LuRenJiasWorld 我试了一下,还是显示空白。

@LuRenJiasWorld
Copy link
Owner

好的,这个问题可能不太好排查,可以在高级设置中导出一份调试信息吗?我看一下具体的环境配置,先尽量尝试在本地复现。

@Clloz
Copy link
Author

Clloz commented Sep 11, 2020

wp-editormd-debug-info

@LuRenJiasWorld
Copy link
Owner

非常感谢,我再结合调试信息看看具体问题。

@LuRenJiasWorld
Copy link
Owner

@Clloz 你好,由于目前还是无法复现此问题,但从你描述的情况来看故障又依旧存在。

为进一步排查故障,避免因为这一故障的存在造成困扰,我给你发送了一封邮件,请求提供临时访问权限。

请查看邮件并考虑这一请求。非常感谢。

@Clloz
Copy link
Author

Clloz commented Sep 11, 2020

我好象没收到邮件

@LuRenJiasWorld
Copy link
Owner

我好象没收到邮件

是的,我也发现这个问题了,我换outlook发给你。

@LuRenJiasWorld
Copy link
Owner

LuRenJiasWorld commented Sep 11, 2020

我现在使用outlook发送了一封邮件,麻烦再查收下。发信人是l******n732180@outlook.com

@LuRenJiasWorld
Copy link
Owner

LuRenJiasWorld commented Sep 11, 2020

@Clloz 你好,问题已在你的站点得到基本解决,现告知一下问题根源:

10.2.0版本我修复了特定情况下导致文章内容为空白的BUG:e3466d4

原因是此前判断多行LaTeX正则表达式过于复杂,导致该部分正则表达式回溯次数超过PHP软回溯次数限制:pcre.backtrack_limit,PCRE对于超过限制的匹配直接返回NULL,造成当时这个问题。

而这次的问题与上次如出一辙,只是从多行正则表达式回溯超限变成了单行正则表达式回溯超限。可能你的PHP环境将该值设置得比较小,而你这边文章字数较多(又或是其他插件/主题也存在大量正则表达式判断),两者综合即造成了这个问题的复现。

问题解决方法也很简单,使用较为简单的正则表达式对全文进行扫描,再通过逐行判断的方式将可能存在LaTeX的行取出,在行内进行正则表达式匹配(这样回溯次数是比较少的)。

目前我已经在你的网站上直接修复了此问题(修复位置:wp-content/plugins/wp-editormd/src/App/KaTeX.php),之前显示为空白的内容目前应该都已恢复,如果有没恢复的页面可以继续反馈下。

晚些时候我将这一修改同步到GitHub,并在下周发布10.2.1版本,尽快修复该问题和一些其他的小问题。

非常感谢配合,祝使用愉快,你现在可以删除这个账号了: ),我会在新版本发布后更新此Issue告知。

@LuRenJiasWorld
Copy link
Owner

@aixiangfei 你好,请问你这里遇到的也是类似问题吗?如果是的话,也请麻烦提供下Markdown原文和可复现问题的网站链接,看看是不是一模一样的问题导致。

@Clloz
Copy link
Author

Clloz commented Sep 11, 2020

@LuRenJiasWorld 辛苦了!

@LuRenJiasWorld
Copy link
Owner

@LuRenJiasWorld 辛苦了!

没关系,有帮到你就好。

@shellphy
Copy link

@LuRenJiasWorld 感觉跟他的也差不多吧,不过也不是凡是遇到成对的 $ 就出问题,有时是好的,又是又不行。我随便弄了一段文本已经发到你的邮箱了,你看下呢!

@LuRenJiasWorld
Copy link
Owner

@LuRenJiasWorld 感觉跟他的也差不多吧,不过也不是凡是遇到成对的 $ 就出问题,有时是好的,又是又不行。我随便弄了一段文本已经发到你的邮箱了,你看下呢!

好的,我现在看看。

稍后我也会把修复发布到GitHub,你等下可以按照那个修改,在你的WordPress上也修改一遍试试看能否解决你的问题。

@LuRenJiasWorld
Copy link
Owner

@aixiangfei 你好,我这边未能复现你所描述的问题,但你可以参考 06e51cd 的修改,使用WordPress自带的插件编辑功能编辑一下对应的代码,看看问题能否解决。如果依旧无法解决的话,我再想办法具体排查一下。

@shellphy
Copy link

@LuRenJiasWorld 改了之后就没问题了,赞!

@Y4er
Copy link

Y4er commented Sep 15, 2020

+1

同使用06e51cd fix

@LuRenJiasWorld
Copy link
Owner

+1

同使用06e51cd fix

好的,我会在今天或者明天发布包含此补丁的新版本。

@LuRenJiasWorld
Copy link
Owner

image

For all:
10.2.1版本已经正式发布,修复了本Issue所提到的问题,感谢各位的反馈,祝使用愉快!

@QAQQL
Copy link

QAQQL commented Mar 28, 2023

作者您好,我在10.2.1版本仍遇到该问题,希望您抽空看看bug出现的原因
图片
图片

代码块如下

<script src="https://gist.github.com/QAQQL/ffb73d0ad2064a8c68ad9fd8bf9a19ee.js"></script>

在文章中其他地方也出现该问题

图片

<script src="https://gist.github.com/QAQQL/120725dd5a9549a2faa0c33da558f32e.js"></script>

但也有成功显示的部分,多半出现在奇数$符号的文本中
图片
图片

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants