在GitHub Flavored Markdown中显示Markdown代码块中的高亮代码块

8
我希望使用```md 来创建一个Markdown块,并在其中插入一个JavaScript块```js

我试过这样写:

```md
```js
function myFunction () {
   return 42;
}
```
```

这是渲染的效果:

基本上,它几乎符合预期,但是最后一个```缺失了(并且创建了一个新的代码块)。

我希望看到它像这样:

我在浏览器开发工具中进行了编辑。

因此,基本上,如何在GitHub Flavored Markdown中显示JavaScript(或任何其他语言)代码块?


我尝试使用\`\`\`\```来转义```片段,但它们也被呈现出来了。我还尝试在Markdown代码块中使用更多的反引号,但那没用:

目前我做了这个:

<pre>
```js
function myFunction () {
   return 42;
}
```
</pre>

但是代码显然没有被高亮显示。
1个回答

12
你要求的是不可能的。Markdown仅将代码块标识为一个整体,然后忽略其中的内容。换句话说,如果你在第一个代码块中嵌套第二个代码块,Markdown 只会将其视为第一个代码块的一部分,并不会将其解析为独立的代码块。实际上,由于它在一个代码块中,所以它不能被解析为另一个代码块。作者如何演示如何嵌套代码块呢?
关于高亮显示,在Markdown代码块中嵌套的JavaScript块不应该被标记为JavaScript代码。在它目前的形式中,它只是Markdown文档中的一个代码块。因此,任何高亮都是为了表明它是Markdown文档中的一个代码块。其中包含的代码是JavaScript、Python、Haskell、C、Perl或其他任何语言都是无关紧要的。
最后,为了嵌套一个代码块到另一个代码块(使用围栏式代码块),你需要为每个嵌套级别使用不同数量的反引号。就像这样:
````md
```js
function myFunction () {
   return 42;
}
```
````

哪一个将正确地呈现为:

```js
function myFunction () {
   return 42;
}
```

请注意,这就是Markdown文档中代码块的样子。所以,是的,这是正确的渲染方式。如果你只想要一个JavaScript的代码块,则可以跳过嵌套:

```js
function myFunction () {
   return 42;
}
```

这将会给你:

function myFunction () {
   return 42;
}

谢谢你的回答!从我所看到的,这似乎是官方答案,因为你是Markdown标准化团队的一员(我对吗?)。最后,要嵌套一个代码块到另一个代码块中(使用围栏式代码块),您需要为每个嵌套级别使用不同数量的反引号 - 我尝试过了,但GFM渲染出错了(请参见我在问题中发布的截图)。也许这是GFM的一个bug? - Ionică Bizău
并没有官方的“Markdown标准化团队”,但我确实积极参与了有关栅栏代码块语法的开发。因此,或许可以说在非官方的情况下是有的。我也意识到GFM并不一定遵循我们为栅栏代码块开发的所有边缘情况。这可能就是其中之一。 - Waylan
我看到你是@markdown组织的成员。:-) 我也联系了GitHub支持,但他们还没有回复。 - Ionică Bizău
看到你与GitHub支持的联系会很有趣。就我个人而言,我在让他们完全匹配其他围栏代码块实现方面并不成功。 - Waylan
1
来自 GitHub 支持团队:目前 GitHub 还不支持嵌套代码块,但我一定会将此传达给团队,以便未来考虑。我看不出不支持它的任何理由。 - Ionică Bizău

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接