Table des matières
Jekyll
代码高亮
官方说明
Pygments
Code
Show
Rouge
Highlight JS
SyntaxHighlighter
Prismjs
总结
Maison interface Web tutoriel HTML [Html]Jekyll 代码高亮的几种选择_html/css_WEB-ITnose

[Html]Jekyll 代码高亮的几种选择_html/css_WEB-ITnose

Jun 24, 2016 am 11:26 AM

新年第一炮,轻松加愉快的,来完成一些年前准备写的文章。Jekyll 中格式化代码有很多种方式,在这里说说几种的实现方式。

Jekyll

Jekyll 是一种通过模版和数据编译为HTML的工具,说是工具,但是也可以说是服务,如果借助Github(搭建有Jekyll服务,可以实时编译)可以做出半动态网页;对于没有自己服务器的朋友来说是不错的选择。

一般情况下,使用Github+Jekyll来搭建博客和一些说明性质的网页。

之前有发表WIN系统下搭建的文章:[环境搭建]Windows下安装Ruby和Jekyll
,至于Mac下就用命令行搞定了。

代码高亮

代码高亮可以说是程序员必备,无论是搭建模块,或者是产品的说明网站都是需要展示代码的,而代码的样式直接的影响了阅读效果,一个好的代码高亮插件将会有好的体验。

官方说明

http://jekyllrb.com/docs/posts/#highlighting-code-snippets
在官方文档中可以看见其代码是非常简单的:

{% highlight ruby %}def show  @widget = Widget(params[:id])  respond_to do |format|    format.html # show.html.erb    format.json { render json: @widget }  endend{% endhighlight %}
Copier après la connexion

得到的效果也就是:

当然,不同的代码高亮插件也需要不同的编译代码。

其实高亮插件也就是JS查找HTML中特定的节点,并对特定节点赋予特定css,而css的结果也就是给代码上色;所以纯粹说代码高亮的话就与Jekyll无关了,在这里要说的是Jekyll+MD文件+CODE 的方式。

Pygments

这个算是很多Jekyll 教程中使用的了,在大部分的高亮博客中基本都是使用的该高亮器。编译的时候需要先安装Python。

安装后我们执行命令:

gem install pygments.rb
Copier après la connexion

安装好了后,我们需要修改Jekyll项目的**_config.yml** 文件,修改其中的 highlighter 为:

markdown: kramdownhighlighter: pygments
Copier après la connexion

然后重启Jekyll服务。

Code

<head>    <title>pygments</title>    <link media="all" rel="stylesheet" type="text/css" href="../assets/pygments/pygments.css" /></head><body>    {% highlight ruby %}    def show    @widget = Widget(params[:id])    respond_to do |format|        format.html # show.html.erb        format.json { render json: @widget }    end    end    {% endhighlight %}</body>
Copier après la connexion

很多人都不知道这个css文件从哪来;大部分都是拷贝拷贝再拷贝,而且都是6~7年前的了。

其实有多种办法得到:

  • 第一种
    命令行模式,太复杂了,详细见:
    http://pygments.org/docs/styles/

  • 第二种
    直接下载,打开网页:http://pygments.org/demo/3666780/ 右边可以选择样式,选择GO就可以看见效果,而此时打开浏览器调试,可以看见其中有一个 pygments.css 文件,下载即可。

  • Show

    Rouge

    这个个人比较喜欢,上色比较纯净,看着舒服。比Pygments支持语言少一些,如果是使用的 Pygments ,哪么基本不用更改任何源码,只需要更改css引用就OK。当然rouge也是Jekyll默认的高亮编译。

    开源项目地址:https://github.com/jneen/rouge

    首先修改Jekyll项目的**_config.yml** 文件,修改其中的 highlighter 为:

    markdown: kramdownhighlighter: rouge
    Copier après la connexion

    然后重启Jekyll服务。

    Code

    <head> <title>Rouge</title> <link media="all" rel="stylesheet" type="text/css" href="../assets/rouge/rouge.css" /> <style> pre{ background: rgba(0, 0, 0, 0.95); } </style></head><body> {% highlight ruby %} def show @widget = Widget(params[:id]) respond_to do |format| format.html # show.html.erb format.json { render json: @widget } end end {% endhighlight %}</body>
    Copier après la connexion

    默认的 rouge 主题偏向于白色,所以我设置了背景为黑色。

    这里也是需要 rouge.css 文件,此时我们使用命令行来得到:

    rougify style monokai.sublime > rouge.css
    Copier après la connexion

    这样就能生成一个默认的css文件,当然更多的主题生成详见开源项目说明。

    Show

    Highlight JS

    总的来说,Highlight算是比较广泛,使用用户量也挺高的了。效果不错,支持语言多。

    Highlight 可以完美兼容 Rouge 与 Pygments ,所以不需要修改任何配置,只需要更改一下css与js引用就OK。

    下载地址:https://highlightjs.org/

    Code

    <head> <title>Highlight.js</title> <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/styles/default.min.css"> <script src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/highlight.min.js"></script> <script type="text/javascript"> hljs.initHighlightingOnLoad(); </script></head><body> {% highlight ruby %} def show @widget = Widget(params[:id]) respond_to do |format| format.html # show.html.erb format.json { render json: @widget } end end {% endhighlight %}</body>
    Copier après la connexion

    当然你也可以直接使用HTML在MD文档中:

    <pre class='brush:html;toolbar:false;'>...
    Copier après la connexion

    Show

    样式有多种,可以任意选择。

    SyntaxHighlighter

    这算是比较老的一种代码高亮插件了,去年迁移了一次,现在在Github上维护,质量挺好的,V4版本不错。

    官方地址:https://github.com/syntaxhighlighter/syntaxhighlighter

    首先下载, 然后自己使用命令编译:

    https://github.com/syntaxhighlighter/syntaxhighlighter/releases

    https://github.com/syntaxhighlighter/syntaxhighlighter/wiki/Building

    编译后可以得到 js 与 css 文件;当然使用命令不同样式可以有几种可以选择。

    Code

    <head>    <title>SyntaxHighlighter</title>    <link media="all" rel="stylesheet" type="text/css" href="../assets/syntax/theme.css" />    <script type="text/javascript" src="../assets/syntax/syntaxhighlighter.js"></script></head><body>   <pre class="brush: ruby">    def show    @widget = Widget(params[:id])    respond_to do |format|        format.html # show.html.erb        format.json { render json: @widget }    end    end    
    Copier après la connexion

    在这里并没有使用 Jekyll 进行code编译,而是保留原样式,在页面上使用 js 进行解析。

    Show

    Prismjs

    prismjs 算是比较优良的作品了,生成代码不多余,颜色适用于大部分网站;主题有几种;支持的语言挺多;不过细节部分没有完善有些情况下样式显示不是很好,像XML代码不支持 xx.xx.xxx 的样式;目前谷歌的使用挺多。

    主页与下载地址:http://prismjs.com/

    Jekyll 并不能直接支持他,需要下载 prism.rb 插件来使用。下载后拷贝到项目“_plugins“ 文件夹中。

    prismjs 中并不能直接使用 {% highlight %} 命令,而需要使用 {% prism %} 命令。

    Code

    <head> <title>Prismjs</title> <link media="all" rel="stylesheet" type="text/css" href="../assets/prism/prism.css" /></head><body> {% prism ruby %} def show @widget = Widget(params[:id]) respond_to do |format| format.html # show.html.erb format.json { render json: @widget } end end {% endprism %} <script src="../assets/prism/prism.js" ></script></body>
    Copier après la connexion

    Show

    总结

    目前这几种算是比较优秀的代码高亮了;各位看官就按照自己喜好使用就好。

    全部的代码和文件都提交到了GITHUB上了,文件地址:

    https://github.com/qiujuer/BeFoot/tree/master/blog/sample/Highlight

    ========================================================

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Comment déverrouiller tout dans Myrise
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Quel est le but du & lt; Progress & gt; élément? Quel est le but du & lt; Progress & gt; élément? Mar 21, 2025 pm 12:34 PM

    L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati

    Quel est le but du & lt; datalist & gt; élément? Quel est le but du & lt; datalist & gt; élément? Mar 21, 2025 pm 12:33 PM

    L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

    Quel est le but du & lt; mètre & gt; élément? Quel est le but du & lt; mètre & gt; élément? Mar 21, 2025 pm 12:35 PM

    L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

    Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Mar 17, 2025 pm 12:20 PM

    L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

    Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Mar 17, 2025 pm 12:27 PM

    L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

    Quelle est la balise Meta de la fenêtre? Pourquoi est-ce important pour une conception réactive? Quelle est la balise Meta de la fenêtre? Pourquoi est-ce important pour une conception réactive? Mar 20, 2025 pm 05:56 PM

    L'article traite de la balise Meta de la fenêtre, essentielle pour la conception Web réactive sur les appareils mobiles. Il explique comment une utilisation appropriée garantit une mise à l'échelle optimale du contenu et une interaction utilisateur, tandis que la mauvaise utilisation peut entraîner des problèmes de conception et d'accessibilité.

    Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Mar 12, 2025 pm 04:05 PM

    Cet article explique le html5 & lt; time & gt; élément de représentation sémantique de date / heure. Il souligne l'importance de l'attribut DateTime pour la lisibilité à la machine (format ISO 8601) à côté du texte lisible par l'homme, stimulant AccessIbilit

    Quel est le but du & lt; iframe & gt; étiqueter? Quelles sont les considérations de sécurité lorsque vous l'utilisez? Quel est le but du & lt; iframe & gt; étiqueter? Quelles sont les considérations de sécurité lorsque vous l'utilisez? Mar 20, 2025 pm 06:05 PM

    L'article traite du & lt; iframe & gt; L'objectif de Tag dans l'intégration du contenu externe dans les pages Web, ses utilisations courantes, ses risques de sécurité et ses alternatives telles que les balises d'objet et les API.

    See all articles