SF markdown 的代码高亮工具是用的什么


试了以下highlight.js
发现只实现四个空格后代码的自动高亮识别
没有预期的
```js ```
的效果
希望有经验的人帮忙解答一下
谢谢

markdown HTML JavaScript

性感的云吞 11 years, 6 months ago
  1. SegmentFault使用高亮方案是 highlight.js 。(这条未经考证,直接引用了 @woody 的答案)
  2. highlight.js 高亮方案仅仅是对html里 <code> 或者其它指定标签(比如使用含 hljs- 前缀的 class 的标签)中的代码进行高亮,不包括markdown语法转义功能。
  3. 四个空格后代码、 ``` 符号包裹代码本质上是markdown语法(扩展)。
  4. sf在输出页面时,已经在后台进行了markdown语法的转义,将代码输出到了 <code> 标签中。然后前台才使用 highlight.js 进行高亮。
  5. 题主的情况,应该考虑在 使用markdown转义方案之后 ,再去期许 highlight.js 完成高亮。或者使用 highlight.js 直接支持的html代码形式也可。
  6. 题主所说 实现四个空格后代码的自动高亮识别 ,我粗看 highlight.js 源码并未发现对这一特性的实现,当然目前我还没看仔细,暂时不做定论。 highlight.js 自身主动支持这一特性是可能的,也有可能是识别到了题主代码中的“特定标签”而产生了响应。

update:

  1. 订正: highlight.js 自动响应的标签是 <pre><code> .. </code></pre> 而不是上文 2 中所说的 <code>...</code>
  2. 订正:相应的,上文 4 中应表述为 将代码输出到了 <pre><code> 标签中
  3. 补充: highlight.js 可以手动增加对其它标签的响应,比如这样的方式: $('div.code').each(function(i, e) {hljs.highlightBlock(e)}); 具体可参考 这里
  4. 订正:上文 6 。阅读源码确认 highlight.js 本身不实现四个空格后代码的自动高亮识别。根据题主的回复了解到题主已在后台部署了markdown语法转义。
缝隙妖怪的式神 answered 11 years, 6 months ago

Your Answer