zoukankan      html  css  js  c++  java
  • 博客园 Markdown 样式优化笔记

    配置博客园

    进入博客园后台管理界面,按“设置”页。

    • 在“页面定制CSS代码”定制 CSS。
    • 在“页脚Html代码”添加相应的JavaScript标签与代码。

    优化博客园Markdown样式(代码行号、版权信息、章节目录等)
    如何自定义博客园代码高亮主题,同时分享自己使用的黑色主题

    怎样为 Kotlin 这样的非“常用语言”添加语法高亮?

    博客园使用 hightlightjs 插件渲染代码着色高亮。博客页面的源码中可以看到对 hightlightjs 的引用。
    hightlightjs 着色的原理是将<pre><code>标签范围内代码中的关键字,数字,字符串等元素套上<span>标签并加上专用的 class 。
    hightlightjs 当前支持 176 种语言,但是非“常用语言”需要引用相应的语言包。
    这里非“常用语言”是指 hightlightjs 官网下载页中 Common 类 23 种常用语言之外的语言。

    使用方法:How to use highlight.js
    下载页:Getting highlight.js
    语法高亮演示:highlight.js demo
    Kotlin 以及其他语言包:highlight.js - cdnjs.com

    引用 Kotlin 语言包的方法:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/kotlin.min.js"></script>
    

    ※在“页脚Html代码”添加以上代码

    博客页面加载后虽然加上了语法高亮,但由于不是常用语言缺乏语言包,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代码”添加以上代码

    看看效果。以下代码采用 Markdown 标记```kotlin来标识 Kotlin 语言代码。

    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代码”添加以上代码

  • 相关阅读:
    postgres配置主从流复制
    laravel5如何创建service provider和facade
    postgres中几个复杂的sql语句
    Laravel5设计json api时候的一些道道
    技术晨读_2015_4_13
    PHP 中的Closure
    l5如何通过路由走api版本回退查找设置
    postgres中的中文分词zhparser
    postgres中的视图和物化视图
    问题:Virtual Box如何复制镜像
  • 原文地址:https://www.cnblogs.com/zwvista/p/9404089.html
Copyright © 2011-2022 走看看