[Html] Jekyll コードのいくつかのオプション強調表示_html/css_WEB-ITnose
まえがき
新年の最初のショットは、リラックスして楽しく、何年も前に書く予定だったいくつかの記事を完成させるためです。 Jekyll でコードをフォーマットするにはさまざまな方法があります。いくつかの実装方法を示します。
Jekyll
Jekyll はテンプレートやデータを HTML にコンパイルするツールとも言えますが、Github を使用するとサービスとも言えます (Jekyll サービスが構築され、コンパイルすることができます)。リアルタイムで)、半動的 Web ページを作成できます。これは、独自のサーバーを持っていない友人にとっては良い選択です。
一般的に、Github+Jekyll はブログやいくつかの説明的な Web ページを構築するために使用されます。
以前、WIN システムでのセットアップに関する記事を公開しました: [環境セットアップ] Windows での Ruby と Jekyll のインストール
Mac の場合と同様に、コマンドラインを使用します。
コードのハイライトは、モジュールを構築する場合でも、製品説明 Web サイトを構築する場合でも、コードを表示する必要があり、コードのスタイルは読み取り効果に直接影響します。優れたコード強調表示プラグインは優れたエクスペリエンスを提供します。
公式説明
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 %}
結果は次のとおりです:
もちろん、コード強調表示プラグインが異なれば、必要なコンパイル コードも異なります。
実際、強調表示プラグインは HTML 内の特定のノードを検索し、特定の CSS を特定のノードに割り当てる JS であり、CSS の結果はコードに色を付けることなので、純粋にコードの強調表示とは何の関係もありません。 Jekyll さん、ここで話したいのは Jekyll+MD ファイル+CODE の方法です。
Pygments
このハイライターは多くの Jekyll チュートリアルで使用されており、基本的にほとんどのハイライト ブログで使用されています。コンパイル時に最初に Python をインストールする必要があります。
インストール後、次のコマンドを実行します:
gem install pygments.rb
インストール後、Jekyll プロジェクトの
**_config.yml** ファイルを変更する必要があり、その中のハイライトを次のように変更します: markdown: kramdownhighlighter: pygments
コード
<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>
多くの人はこの CSS ファイルがどこから来たのか知りません。そのほとんどはコピーされ、またコピーされており、すべて 6 ~ 7 年前のものです。
実際には、これを取得する方法はたくさんあります:
最初のhttp://pygments.org/docs/styles/
Rouge
私はこちらの方が好きです、発色も比較的ピュアで、使いやすそうです。 Pygments よりもサポートされている言語が少ないです。Pygments を使用する場合は、基本的にソースコードを変更する必要はありません。CSS リファレンスを変更するだけです。もちろん、rouge は Jekyll のデフォルトのハイライト コンピレーションでもあります。
オープンソースプロジェクトのアドレス: https://github.com/jneen/rouge
まず Jekyll プロジェクトの
**_config.yml** ファイルを変更し、その中のハイライトを次のように変更します: markdown: kramdownhighlighter: rouge
コード
<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>
デフォルトのルージュテーマは白を好むので、背景を黒に設定しました。
ここでは
rouge.css ファイルも必要です。このとき、コマンド ラインを使用して取得します。 rougify style monokai.sublime > rouge.css
Show
Highlight JS
一般に、Highlight は比較的広く普及しており、ユーザー数も多いです。効果は良好で、多くの言語をサポートしています。
Highlight は Rouge および Pygments と完全に互換性があるため、設定を変更する必要はありません。CSS および JS 参照を変更するだけで済みます。
ダウンロード アドレス: https://highlightjs.org/
コード
<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>
もちろん、MD ドキュメント内で HTML を直接使用することもできます:
<pre class="brush:php;toolbar:false"><code class="html">...</code>
Show
多くのスタイルがあり、どれでも選択できます。
SyntaxHighlighter
これは古いコード強調表示プラグインで、昨年移行され、現在 Github で維持されています。品質は非常に高く、V4 バージョンも良好です。
公式アドレス: https://github.com/syntaxhighlighter/syntaxhighlighter
まずダウンロードし、次のコマンドを使用して自分でコンパイルします:
https://github.com/syntaxhighlighter/syntaxhighlighter/releases
https:/ /github.com/syntaxhighlighter/syntaxhighlighter/wiki/Building
コンパイル後は、もちろん、コマンドを使用していくつかの異なるスタイルから選択できます。コード
<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