Open yfzhao20 opened 3 years ago
算是一个合理的特性请求吧,不过实现起来有点麻烦😂(不只是自动添加 >
,再按一次还要自动删除)
> $$ a $$
在 VS Code 中显示没问题
这提示 markdown-it-katex
有 bug。(其实,我感觉这更多是 markdown-it
挖的坑。)
Math block 不是 paragraph continuation text,即,不满足 Laziness 条件(block quote 的 Rule 2,list item 的 Rule 5)。所以,在缩进不足时,应当停止,不得续行。
可见,它在 container 末尾的行为不符合 CommonMark。这可由此例的怪异结果证实:
* $$a
b
c
> $$d
e
f
g
line 130 的缩进判断
line 143 的状态返回
有问题。
与 https://github.com/markdown-it/markdown-it/blob/254b776beb0b94bc1e133e3971e00f2a2f0171c6/lib/rules_block/fence.js 对比,最简单的补丁似乎是
// line 130: tShift -> sCount
if (pos < max && state.sCount[next] < state.blkIndent)
// line 143
state.line = found ? next + 1 : next;
Math block 不是 paragraph continuation text
感觉如果我们允许多行 math block 的写法,那它应该就符合 paragraph continuation text。就像 example 262
> 1. > Blockquote
continued here.
Blockquote continued here.
类似的我们可以期望
> 1. $$ math block
continued here $$
- $$ math block continued here $$
也即
- {{ rendered math block }}
也即这个 issue 目前的情况
$$ math block continued here $$
跟多行没有关系。HTML block 中也有这种形式。
Paragraph continuation text is text that will be parsed as part of the content of a paragraph, but does not occur at the beginning of the paragraph.
定义卡得很死。
Paragraph continuation text 归属于一个已经开始的 paragraph,不能有空行 (blank line),而且连接后要按 inline 序列解析。
Paragraph 是 leaf block。按目前的理解,math block 也是 leaf。Leaf 不可以互相嵌套。
Math block 最接近 HTML block Type 3 (processing instruction) 和 fenced code block,因为它的内容是 literal 而且可以含空行。
我们已经在许多地方零零散散地讨论过 math area 的定义。这次新开个 issue 彻底解决吧。
其实我不太懂具体定义……但是今天再次测试,
> $$
math
$$
这种代码在Typora中又没问题了。
但是另一个麻烦的是代码的高亮,类似上述代码在vscode 中扰乱了高亮(数学公式变成了一片白,文字部分变成了公式的高亮):
只有加回“>”去才能行
如这个例子一样,遇到多级列表,按下CTRL+M打公式,缩进直接没掉了。这样高亮直接没了。后面处理会非常麻烦,如果不给空行,那么会接着最后一级列表;如果给空行,那么列表就全没了。
另外,给出空的第二级列表时,预览会出问题;
不知道怎么样的,这样的代码:
markdown
-
会把第一行的markdown
识别成标题!
其实想提供一个思路,就是如果识别出前面有多个空格或“-”或“>”之类的,直接正则识别出来,在每一行前面强行填上就行吧😂虽然太过于简单粗暴,但是或许很有用😂
Proposal
当前,在引用块中添加数学公式,效果如图:
这种显示:
在vscode中显示没问题,但是到其他编辑器(如Typora)中就会遇到麻烦。期望能够自动添加">",结果如下图这样: