markdown加粗失效
今天用markdown给链接加粗的时候出现了在Typora能正常显示,但是上传到博客就不能正常显示的问题,于是去查找了相关问题,现总结和记录一下。
markdown用*或者_给内容进行斜体或者加粗的操作,不过需要注意的是并不是可以随意加的,其实markdown是有规定的。
简单来说就是*和_被分为左侧定界符序列和右侧定界符序列,判断如下
左侧定界符序列
- 后面不能是空白
- 前面没有空白或者标点符号的时候,后面不能是标点符号
右侧定界符序列
- 前面不能是空白
- 后面没有空白或者标点符号的时候,前面不能是标点符号
当**是左侧定界符序列的时候表示开始粗体,相对的右侧定界符序列表示结束粗体。
于是就可以发现问题所在了
1 | blabla**[示例](www.example.com)**blabla |
blabla**示例**blabla
两侧定界符序列都不满足条件,所以需要在左侧前加右侧后各加一个空格。
1 | blabla **[示例](www.example.com)** blabla |
blabla 示例 blabla
但这样会导致渲染之后左右有多的空格,有一个解决方法就是使用零宽字符(Zero Width Space
),实体名称​
,Unicode为U+200B,这个字符不算做空白字符,空白字符是指Zs类的17个字符,所以可以这样更改
1 | blabla​**[示例](www.example.com)**​blabla |
blabla示例blabla
讲道理的话,零宽字符加在左侧*后面右侧*前面应该也是可行的,毕竟他不算是标点字符,不过博客不能正常显示,可能是&的问题,但直接复制放在那个位置的话倒是能在csdn上显示成功,github不太行,可能渲染方式不一样还是怎么回事。
零宽字符其他用途
换行
当一行过长的时候荧幕宽度不足以单行显示时,可以使用它来指定换行位置。
1 | LongLongLongLongLongLongLongLongBreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText |
LongLongLongLongLongLongLongLongBreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText
1 | LongLongLongLongLongLongLongLong​BreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText |
LongLongLongLongLongLongLongLongBreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText