title: Markdown笔记
Links
GFM中非锚链接可以直接写,如果有歧义或者中间有空格或者用邮箱等可以用<>包裹,称作自动链接
锚链接的链接部分也可用<>
隐式链接标记:在链接文字后面加上一个空的方括号,再在后面把链接定义出来:
[Google][]
...
[Google]: https://www.google.com/ncr
有的(GFM)不加空方括号也可以;必须不能紧挨着
如果链接本身含有不匹配的单括号,可以用这一种
如果不用空的方括号就是普通的参考式,则定义链接的部分要写第二个方括号里的内容
如果链接里含有空格,可以换成%20,或者用<>(隐式链接也可),无法转义
否则要么只空格前的部分才会被认为是链接,要么整条不会被认为是链接
在链接的小括号内加空格(或换行)和双引号可以设定链接的title属性
如果title中也有引号则需转义,要不就用单引号或者括号
中括号内可以直接嵌套中括号
图片链接:[![imgurl]][linkurl] --or-- [](linkurl)
行内式链接里的MD符号无需也无法被转义,会把反斜线显示出来;参考式的链接中可以转义,但空格例外
Emphasis
在强调符号内部边界处(包括前面和后面)的字符如果是标点符号(包括中文和英文),并且之后没有空格地跟着非标点字符(包括数字字母中文,但可以换行),则强调符号不会生效。如:“**例如:**这个、1**"2"**3”,就会被渲染成源文本。解决方法可以在星号外围两边加空格,或者把标点移出去
解决冒号,使用:\*\*(?!([!-/:-@[-`{-~\s])|$)或者用中文的Unicode进行匹配,但这样会导致错误匹配到“正常:**加黑**”。所以匹配到的必须是和前面成对的,需要用到平衡组
这句现在没看懂
**abc\***可以正常显示为abc*,甚至不用转义也可以;或者用实体也行;要不就避免这种表示方法,改用反引号包裹文本
当星号或下划线两边都有空白时,它们只会被当作普通的符号。如:1 * 2或者1 ** 2
backtick
如果`和`之间有`,则需要在两端使用两个`,无法使用斜杠来转义。写作:``1`2``,效果:1`2,如果内容只有`,在两端加空格。如果需要在中间写更多`,就在两边继续加`,代码块同理。也可以使用code包裹\`,注意转义,否则会出现双重样式
`转换成html后就是code标签,但同时还会把特殊字符转换成html实体;html实体直接写进两个`之间,渲染后仍保持&#....;的样子
MD语法在code标签中仍有效,在pre和`中无效
`123``123`会渲染成123``123
表格中的pipe符号
一般情况下(非表格中),`|`、<code>|</code>、<code>\|</code>、 <code>|</code>都可以正常显示成|
而`\|`会显示为\|,<code>\|</code>会显示为实体
在GFM的表格中,竖线被认为是表格分隔符的优先级高于`,所以`|`和<code>|</code>是已知不可以的
这是GitHub的bug(不过已经变feature了):https://github.com/lunet-io/markdig/issues/236
在表格中要显示竖线时,写成`\|`在Github上可以正常显示,但在MS Docs里的效果不一样,前者可以正常显示表格但会把反斜杠也显示出来
<code>\|</code>应该是同理
使用<code>|</code>是已知两者都可以的,但是可读性太不好
转义
MD支持以下这些符号前面加上反斜杠来帮助插入普通的符号:
\ 反斜线
` 反引号
* 星号
_ 下划线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
\能正常渲染成反斜杠,\n这种不会产生换行转义;但反斜杠本身可以被转义- $、^也能被转义
杂项
- 在HTML的block tag间的MD语法将不会被处理,而在inline tag间的是有效的
- 如果在code标签范围内写保留字符,写实体或直接写都可以,优先于上一条
- 在一行的末尾留两个空格活着用反斜杠可以变成
<br>;直接单个回车,在文件中会变成一个空格,但issue会生效 - 列表项目间用空行分开,解析后会将项目列表的内容用
<p>包起来,然后才是<li>;对于GFM来说,只要存在一个这样的,就会影响所有的 - 减号无法用于强调,下划线无法用于无序列表;减号和乘号都可形成分割线
参考
- https://guides.github.com/features/mastering-markdown/ 基础语法和一些GFM
- https://www.appinn.com/markdown 基础语法的spec
- https://commonmark.org/ 改进语法的spec;有基础语法的互动教程和cheatsheet
- https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md
Comments
0 comments, including 0 top-level comments. Replies are shown at one nested level.