Markdown 代码块支持的语言标识符较少

问题描述

Markdown 的代码块可以在第一组连续的反引用号(reversed quotation mark,即“`”)后添加语言标识符,以强制应用语法高亮:

```<language identifier>
<code>
```

在诸多 Markdown parser 中,语言标识符可以是:

  • 语言的全称(如:“python”、“c++”);
  • 语言的简称(如:“md”);
  • 代码文件的扩展名(如:“py”、“cpp”)。

但在本论坛的 Markdown parser 中,有许多语言标识符不支持,例如:

  • Shell:“sh”“shell”(但是“bash”支持);
  • Python:“py”(“python”支持);
  • C++:“c++”(“cpp”支持);
  • C:“c”(但是“cpp”支持);
  • Perl:“pl”(“perl”支持);
  • TypeScript:“ts”“typescript”(但是“javascript”支持)。

如果从他地转载代码于此,且已事先指定语言标识符,在此可能无法正确语法高亮。

变通

  1. 本论坛的 Markdown parser 在未指定语言标识符时,可以根据代码内容猜测语言并应用对应的语法高亮。测试后发现上述列举的语言皆可以在未指定语言标识符时正确语法高亮(这也是开头“强制”加粗的原因);
  2. 在这里提 issue 也没用,应该到 GitHub 仓库去提。这里只是吐槽。
2 Likes

我猜是discourse的锅,去 meta.discourse.org 看看?

2 Likes