Unknown category

Markdown笔记

--- title: Markdown笔记 --- ## Links ``` GFM中非锚链接可以直接写,如果有歧义或者中间有空格或者用邮箱等可以用<>包裹,称作自动链接 锚链接的链接部分也可用<> 隐式链接标记:在链接文字后面加上一个空的...

Published
Author
Wang Miao
Reading
About 2 min
Updated
Markdown笔记

title: Markdown笔记

GFM中非锚链接可以直接写,如果有歧义或者中间有空格或者用邮箱等可以用<>包裹,称作自动链接
锚链接的链接部分也可用<>

隐式链接标记:在链接文字后面加上一个空的方括号,再在后面把链接定义出来:
[Google][]
...
[Google]: https://www.google.com/ncr
有的(GFM)不加空方括号也可以;必须不能紧挨着
如果链接本身含有不匹配的单括号,可以用这一种
如果不用空的方括号就是普通的参考式,则定义链接的部分要写第二个方括号里的内容

如果链接里含有空格,可以换成%20,或者用<>(隐式链接也可),无法转义
否则要么只空格前的部分才会被认为是链接,要么整条不会被认为是链接

在链接的小括号内加空格(或换行)和双引号可以设定链接的title属性
如果title中也有引号则需转义,要不就用单引号或者括号

中括号内可以直接嵌套中括号

图片链接:[![imgurl]][linkurl] --or-- [![](imgurl)](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来说,只要存在一个这样的,就会影响所有的
  • 减号无法用于强调,下划线无法用于无序列表;减号和乘号都可形成分割线

参考

TODO