如何在highlight.js中关闭自动语言检测并渲染所有块?

时间:2014-02-16 07:02:47

标签: javascript html syntax-highlighting markdown

我在Github网页托管的网站上使用redcarpet2 markdown。我将语法高亮显示从pygments切换到highlight.js。

我通过

为每个代码块指定了语言
```r
(some r code)
```

所以我不需要通过highlight.js进行自动语言检测,实际上如果我没有指定语言,它总是会错误地将我的R代码识别为php或perl代码。

问题是:<code>的HTML标记在某种程度上是混合的。

没有渲染,markdown正确地将代码块转换为<code class="r language-r" data-lang="r"></code>,应该将其呈现为R代码。但是,当我加载highlight.js并运行<script>hljs.initHighlightingOnLoad();</script>时,自动检测也会起作用,并使代码标记混合起来<code class="r language-r hljs php" data-lang="r"></code>,其中php应该被删除。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

您的highlight.pack.js可能不包含R语言,您可以下载here,只需勾选相应的复选框即可。当HighlightJS看到code标记的未知类时,它会尝试自动猜测正确的语言。

答案 1 :(得分:0)

可以使用hljs.configure({languages:[]})禁用Highlight.js自动语言检测。仍然会突出显示具有明确指定语言的代码块。

<script>hljs.configure({languages:[]});hljs.initHighlightingOnLoad();</script>