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

Markdown-it 渲染斜体有问题 #429

Closed
cinty8b opened this issue Sep 28, 2018 · 12 comments
Closed

Markdown-it 渲染斜体有问题 #429

cinty8b opened this issue Sep 28, 2018 · 12 comments

Comments

@cinty8b
Copy link

cinty8b commented Sep 28, 2018

OS Version (操作系统): Windows

VNote Version (VNote版本): 2.0

Symptoms (表现):

用 Markdown-it 渲染的斜体“* *”有些问题。

  • 假设要加斜体内容以中英文标点结束,
    如果该部分后面有符号、回车符、footnote语法等分隔,则能正常渲染成斜体;
    如果该部分后面没有任何符号等分隔,则不能正确渲染成斜体。

  • 假设要加斜体的内容以中英文标点开始,同样,该部分前面如果没有任何能分隔的东西,就不能正确渲染。

英文中因为每个单词间都以空格分隔,所以这样的问题应该很少遇到,但是在中文里就可能经常遇到。
vnote提供的四个渲染器中,只有 Markdown-it 有这个问题,其他都正常,但 Markdown-it 是唯一一个识别 footnote 的,因为要用 footnote 不得不用它。

How to Repro (如何复现):

以下为例:
快速的*。棕色狐狸*跳过一条懒狗。
不正常
快速的*棕色狐狸。*跳过一条懒狗。
不正常
快速的。*。棕色狐狸*跳过一条懒狗。
正常

快速的*棕色狐狸。*[^footnote]跳过一条懒狗。
[^footnote]: footnote

正常

快速的*棕色狐狸。*
跳过一条懒狗。

正常

@tamlok
Copy link
Member

tamlok commented Sep 28, 2018

Hi,

最好在*标记的外两侧各留一个空格。这是md-it引擎的处理问题。

可以在官方dwmo里面进行测试 http://markdown-it.github.io

如果是md-it的问题,可以到md-it项目主页提issue,vnote这边跟进更新即可。

谢谢!

@cinty8b
Copy link
Author

cinty8b commented Sep 28, 2018

感谢解释。
到markdown-it的issue里搜了一下,发现2016年就有人报告了这个BUG Emphasis cannot be recognized when it has no space with following words #285
然后追到了commonmark.js的这个BUG Punctiation regexp is incomplete #108
最后有个commit声称解决了问题,结果这个BUG重新出现了?

@tamlok
Copy link
Member

tamlok commented Sep 28, 2018

你在demo里试一下看看。

@cinty8b
Copy link
Author

cinty8b commented Sep 29, 2018

试过了,问题还在
sample

@tamlok
Copy link
Member

tamlok commented Sep 29, 2018

难道是md-it没有将common-mark的这个commit合并进去?

@cinty8b
Copy link
Author

cinty8b commented Sep 29, 2018

这是在commonmark的live testing测试的 sample
一样的情况

给commonmark原来那个issue下反馈了。作为一个不懂技术的普通用户,还要用英语描述问题,不知道有没有犯低级错误。

@tamlok
Copy link
Member

tamlok commented Sep 29, 2018

哈哈,赞!可以试试体验一下整个流程。他们开发者的回复也是挺迅速的。

@cinty8b
Copy link
Author

cinty8b commented Sep 30, 2018

简单在这里记录一下吧。
看来这是commonmark一个经年累月的老问题了,在反馈和搜索的过程中,分别查到了以下这些:
commontalk上的
Emphasis and East Asian text 发布于2017年6月;
`测试**foo**可以` works but `测试**foo()**可以` fails 发布于2017年7月;
可能还有更早的。
还有commonmark/cmark的一个pull request Emphasis and East Asian text
这些专业的内容我就看不懂了,如果 @tamlok 您有兴趣也有精力的话,也许可以研究一下?
有开发者建议我去commontalk发帖重新把这个问题翻起来,感觉就像建议我去跟一堆外星人用外星术语反馈他们给的翻译机不好用。想想还是算了。

综上,该issue与vnote无关,应该可以关闭了。

@tamlok
Copy link
Member

tamlok commented Sep 30, 2018

Hi,

有一个类似的 github/cmark-gfm#80

我们估计也只能安静地等待了。目前能做的就是养成习惯,前后加一个空格,渲染出来后其实也看不出什么。

感谢你的努力!:)

@cinty8b
Copy link
Author

cinty8b commented Sep 30, 2018

前后加一个空格,渲染出来后其实也看不出什么。

视觉上可能看不出来,不过一旦要搜索字词,就会无法匹配。反馈中,也有开发者建议加一个“zero-width space” ​,这个更看不出来,但是问题一样。

还是等着上游从根本上解决问题吧。

@tamlok
Copy link
Member

tamlok commented Sep 30, 2018

搜索字词的话一般也不可能把**带上吧?

@cinty8b
Copy link
Author

cinty8b commented Sep 30, 2018

渲染以后,在阅读模式下搜索,或者导出成pdf或电子书以后搜索,视觉上看不出空格,搜索时也就不会带,这样渲染后的文本里就没有匹配的。

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