进入博客园后台管理界面,按“设置”页。javascript
优化博客园Markdown样式(代码行号、版权信息、章节目录等)
如何自定义博客园代码高亮主题,同时分享本身使用的黑色主题html
博客园使用 hightlightjs 插件渲染代码着色高亮。博客页面的源码中能够看到对 hightlightjs 的引用。
hightlightjs 着色的原理是将<pre><code>
标签范围内代码中的关键字,数字,字符串等元素套上<span>
标签并加上专用的 class 。
hightlightjs 当前支持 176 种语言,可是非“经常使用语言”须要引用相应的语言包。
这里非“经常使用语言”是指 hightlightjs 官网下载页中 Common 类 23 种经常使用语言以外的语言。java
使用方法:How to use highlight.js
下载页:Getting highlight.js
语法高亮演示:highlight.js demo
Kotlin 以及其余语言包:highlight.js - cdnjs.comgit
引用 Kotlin 语言包的方法:github
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/kotlin.min.js"></script>
※在“页脚Html代码”添加以上代码ajax
博客页面加载后虽然加上了语法高亮,但因为不是经常使用语言缺少语言包,Kotlin 语言代码被误认为 Nginx 脚本,代码已经渲染完毕被加上了<span>
标签,所以要再次渲染的话首先须要将代码还原。
如下 JavaScript 代码清除 pre 标签中除 code 之外的标签,在引用了相应语言包的前提下让 hightlightjs 从新渲染。优化
<script type='text/javascript'> var setMyBlog = { resetPreCode: function(){ var pre = $("pre"); //选中须要更改的部分 if(pre && pre.length){ pre.each(function() { var item = $(this); // 将<pre>标签中的html标签去掉 而后再套上原来的code标签 // 这是由于咱们须要从新加上语法高亮,而 hightlightjs 渲染的范围是<pre><code>中的代码 item.html("<code>" + item.html().replace(/<[^>]+>/g,"") + "</code>"); }) } }, runAll: function() { /* 运行全部方法 * resetPreCode() 清除代码中的标签 */ this.resetPreCode(); hljs.initHighlightingOnLoad(); // 从新渲染,添加语法高亮 } } setMyBlog.runAll(); </script>
※在“页脚Html代码”添加以上代码this
看看效果。如下代码采用 Markdown 标记```kotlin
来标识 Kotlin 语言代码。spa
fun <T, R> Collection<T>.fold( initial: R, combine: (acc: R, nextElement: T) -> R ): R { var accumulator: R = initial for (element: T in this) { accumulator = combine(accumulator, element) } return accumulator }
答案是使用 highlightjs-line-numbers.js
该插件将 hightlightjs 插件已经渲染完毕的代码插入到表格中,而后加上行号。插件
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.3.0/highlightjs-line-numbers.min.js"></script>
※在“页脚Html代码”添加以上代码
// ... runAll: function() { this.resetPreCode(); hljs.initHighlightingOnLoad(); // 从新渲染,添加语法高亮 hljs.initLineNumbersOnLoad(); // 为代码加上行号 } // ...
※在“页脚Html代码”添加以上代码