行内代码

一个反引号字符串是由一个或多个反引号字符(`)组成的字符串,它既不是前缀也不是后缀。
行内代码以反引号字符串开头,以相等长度的反引号字符串结尾。行内代码的内容是两个反引号字符串之间的字符,通过以下方式标准化:

  • 首先,行尾转换为空格。
  • 如果最终的(resulting)字符串以一个空格字符起始、结束,但又不完全由空格字符组成,则从前面和后面删除单个空格字符。这允许你包含以反引号字符起始或结束的代码,它必须用打开或闭合的反引号字符串的空格分隔。
    这是一个简单的行内代码:

示例 338

Markdown HTML 效果
`foo`

<p><code>foo</code></p>

这里使用了两个反引号,因为代码包含反引号。
此示例还演示了单个前置和后置空格的剥离:

示例 339

Markdown HTML 效果
`` foo ` bar ``

<p><code>foo ` bar</code></p>

此示例显示了剥离前置和后置空格的动机:

示例 340

Markdown HTML 效果
` `` `

<p><code>``</code></p>

请注意,只剥离了一个空格:

示例 341

Markdown HTML 效果
`  ``  `

<p><code> `` </code></p>

通常,只有空格而不是 unicode 空格被剥离:

示例 342

Markdown HTML 效果
` a`

<p><code> a</code></p>

如果行内代码仅包含空格,则不会发生剥离:

示例 343

Markdown HTML 效果
` b `

<p><code> b </code></p>

行尾被当做空格:

示例 344

Markdown HTML 效果
` `
`  `

<p><code> </code>
<code>  </code></p>

示例 345

Markdown HTML 效果
``
foo
bar  
baz
``

<p><code>foo bar   baz</code></p>

示例 346

Markdown HTML 效果
``
foo 
``

<p><code>foo </code></p>

内部空格和行尾的空格被折叠成一个空格,在浏览器中也是这样:

示例 347

Markdown HTML 效果
`foo   bar 
baz`

<p><code>foo   bar  baz</code></p>

注意,在渲染 <code> 元素时,浏览器通常会折叠连续的空格,因此建议使用以下 CSS:

code{white-space: pre-wrap;}

注意,反斜杠转义字符在行内代码中不起作用,所有的反斜杠都是正常斜杠:

示例 348

Markdown HTML 效果
`foo\`bar`

<p><code>foo\</code>bar`</p>

永远不需要反斜杠转义,因为总是可以选择一个有 n 个反引号的字符串来作为分隔符,其中代码不包含任何完全的 n 个反引号字符的字符串。

示例 349

Markdown HTML 效果
``foo`bar``

<p><code>foo`bar</code></p>

示例 350

Markdown HTML 效果
` foo `` bar `

<p><code>foo `` bar</code></p>

行内代码反引号的优先级高于除 HTML 标签和自动链接之外的任何其他内联结构体。 因此,比如下面这个例子,不会被解析为强调文本,因为第二个*是代码的一部分:

示例 351

Markdown HTML 效果
*foo`*`

<p>*foo<code>*</code></p>

这不会被解析为链接:

示例 352

Markdown HTML 效果
[not a `link](/foo`)

<p>[not a <code>link](/foo</code>)</p>

行内代码,HTML 标签和自动链接有相同的优先级,所以:

示例 353

Markdown HTML 效果
`<a href="`">`

<p><code>&lt;a href=&quot;</code>&quot;&gt;`</p>

但这是一个 HTML 标签:

示例 354

Markdown HTML 效果
<a href="`">`

<p><a href="`">`</p>

这是代码:

示例 355

Markdown HTML 效果
`<http://foo.bar.`baz>`

<p><code>&lt;http://foo.bar.</code>baz&gt;`</p>

这是一个自动链接:

示例 356

Markdown HTML 效果
<http://foo.bar.`baz>`

<p><a href="http://foo.bar.%60baz">http://foo.bar.`baz</a>`</p>

当一个反引号字符串没有被匹配的反引号字符串闭合时,我们只有把它当做普通的引号:

示例 357

Markdown HTML 效果
```foo``

<p>```foo``</p>

示例 358

Markdown HTML 效果
`foo

<p>`foo</p>

以下情况还说明了打开和闭合反引号字符串的长度必须相等:

示例 359

Markdown HTML 效果
`foo``bar``

<p>`foo<code>bar</code></p>