Markdown 中 ** 加粗失效问题解析

本贴最后更新于 249 天前,其中的信息可能已经水流花落

Markdown 原文:

**故:恒无,欲也以观其眇。**恒有,欲也以观其所徼

**闭合** 部分可以形成加粗这是共识,但加上前后内容的话会有细节上的出入。

开始的 ** 在规范里定义为“左边界序列”,结束的 ** 定义为“右边界序列”。在这个例子中我们简单理解为开始标记符/结束标记符就行,因为不存在嵌套 ** __ 嵌套情况。

开始标记符的前后必须满足:

  1. 不能后跟空白

  2. 标点符号

    1. 不能后跟标点符号
    2. 如果后跟标点符号,则前面必须有空白

结束标记符的规则和开始标记符相反:

  1. 前面不能是空白

  2. 标点符号

    1. 前面不能是标点符号
    2. 如果前面是标点符号,则后面必须有空白

结合给的例子看:**故:恒无,欲也以观其眇。**恒有,欲也以观其所徼 之所以不能加粗,是因为结束标记符 ** 前面跟了标点符号,但后面又不是空白。

https://spec.commonmark.org/0.29/#emphasis-and-strong-emphasis

这部分写成代码就是:

所以如果需要加粗的话,需要在这个位置插入一个空格:

从 Markdown 规范定义来看,对类似中文非空格分词的语言(CJK)支持有点不够友好了,谁让这规范不是咱们自己定义的呢……

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone48938
    捐赠者

    相比之下,troff 语法就比较友好。比如我需要 "foo.bar",其中 "foo." 加粗,".bar" 之间无空格:

    .BR foo. bar
    

    或者:

    \fBfoo.\fRbar
    

    Markdown 就做不到 😂

    等等,楼主说的是对中文不友好?那打扰了,troff 无法原生支持中文,想要显示中文每个字符都要分别转义wulian

    1 回复
  • 88250
    订阅者 作者

    Markdown 可以用 HTML 补位 wulian