Home > TagScript > html、css、Java > シンタックスハイライト > google-code-prettify

google-code-prettifyを使って、自分のホームページで紹介するコードに色を付ける

新規作成日 2016-12-27
最終更新日

google-code-prettifyを使って、自分のホームページで紹介するコードに色を付けるには、以前は、いろいろ面倒でしたが、現在では、とても簡単になっています。

難読化されたコードでは、動作しないことに注意してください。

使用方法

スクリプトを配置する

スクリプトタグを記入します。

このタグにより、「google-code-prettify」が自動で読み込まれ、使えるようになります。

自動ローダーのパラメータ

「google-code-prettify」を使用する際、1つのURLで、JavaScriptとCSSを読み込むことができます。

全体のシステムを読み込み、そして、ページ読込で実行する飾りを予定に入れます。追加で利用できる、さまざまなオプションがあります。 あなたは、ランナを設定するために、(CGI引数として)指定することができます。

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>
CGIパラメータ Default 意味
autoload=(true, false) true ページの読み込み時に、自動的に実行されます。
lang=... none 指定された言語のための言語ハンドラを読み込みます。 それは、通常、その言語のためのソースファイルのためのファイル拡張子です。 言語ハンドラのインデックスを参照してください。 複数回(?lang=css&lang=ml)指定される場合、すべてが、読み込まれます。
skin=... none スキン・ギャラリーを参照してください。複数回指定された場合、うまく読み込まれた最初のものが、使用されます。
callback=js_ident   prettyprintingが完了するとき、window.exports["js_ident"]が、呼び出されます。複数回指定される場合、すべてが、呼び出されます。

例えば、

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?lang=css&amp;skin=sunburst"></script>

また、CSS言語拡張機能を読み込むために、langパラメータ、そして、sunburstスキンを読み込むスキン・パラメータを指定します。

色付けしたいコードを配置する

色付けしたいコードを<pre class="prettyprint">... </pre>、あるいは、<code class="prettyprint">... </code>の中に入れます。

私は、以下のものを使用していますが、<code class="prettyprint">... </code>のほうが分かりやすいかもしれません。

<pre class="prettyprint"><code>
ここに、色付けしたいコードを記入します。
</code></pre>

ここに、色付けしたいコードを記入します。
基本は、これだけです。

「<」、「>」、「&」は、エスケープテキストに変換する必要がある

htmlで利用するため、「<」、「>」、「&」については、エスケープテキスト「&lt;」、「&gt;」、「&amp;」に変換が必要です。

自分のオリジナルテーマを作成する場合は、類似したテーマのコードの色指定を変更して利用します。

テキストエディタなどのマクロで自動変換する方法がお勧めです。

カラーテーマを選択する

「google-code-prettify」では、カラーテーマが選択できます。

カラーテーマは、テーマギャラリーから選んでください。大きくは、明色背景のテーマ、暗色背景のテーマで選択すれば良いかとおもいます。

テーマギャラリー

自分のオリジナルテーマを作成する場合は、類似したテーマのコードの色指定を変更して利用します。

スクリプト起動時に指定する

スクリプト内で指定する場合は、「&skin=」にスキン名を指定します。

例:スキンに「sunburst」を指定しています。ページのすべてに同じテーマが適用されます。

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?lang=none&skin=sunburst"></script>

クラスで指定する

<pre>タグ内に、テーマを表すクラスを指定します。

例:スキンに「sunburst」を指定しています。

<pre class="prettyprint sunburst "><code>
ここに、色付けしたいコードを記入します。
</code></pre>

コード言語の指定

既定の設定では、Cとその仲間、Java、Python、Bash、SQL、HTML、XML、CSS、Javascript、MakefileとRustを含む、多くの言語で動作します。

Ruby、PHP、VBとawkとPerlとRubyの適切なサブセットで、まずまず、動作しますが、コメント記法のため、言語拡張なしでは、Smalltalk、OCamlなどでは動作しません。

そこで、期待通りの色付けができないときは、言語を明示的に指定する必要があります。

現在提供されている拡張言語を以下に示します。

Apollo; Basic; Clojure; CSS; Dart; Erlang; Go; Haskell; Lasso; Lisp, Scheme; Llvm; Logtalk; Lua; Matlab; MLs: F#, Ocaml,SML; Mumps; Nemerle; Pascal; Protocol buffers; R, S; RD; Rust; Scala; SQL; Swift; TCL; Latek; Visual Basic; VHDL; Wiki; XQ; YAML

お気に入りの言語のための拡張を追加したい場合、srcを確認し、pull リクエストを送信してください。

クリプト起動時に指定する

スクリプト内で指定する場合は、「& lang =」に言語名を指定します。

例:言語に「none」を指定しています。既定の設定が適用されます。

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?lang=none&skin=sunburst"></script>

クラスで指定する

<pre>タグ内に、言語を表すクラスを指定します。

例:言語に「lang-html」を指定しています。html言語用の色付けが行われます。

<pre class="prettyprint lang-html "><code>
ここに、色付けしたいコードを記入します。
</code></pre>

lang-*クラスは、言語ファイル拡張子を指定します。既定でサポートされるファイル拡張子には、以下が含まれています。

"bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html", "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh", "xhtml", "xml", "xsl"

Wordpressで利用するには

見たところ、wordpressは、閉じる引用符を変更する「スマートな引用」をします。これにより、閉じる引用符は、開いた引用符と一致しません。

コード・スニペットのスマートな引用を止める方法については、WordPressヘルプセンターを参照してください。

コードに行番号を配置する

コードに行番号を配置する場合は、linenumsクラスを使用します。開始行を指定する場合は、linenums:52のように、そのクラスの最後にコロンと行番号を追加します。

例:行番号を4から開始します。

<pre class="prettyprint linenums:4">// This is line 4. これは、行4です。
foo();
bar();
baz();
boo();
far();
faz();
</pre>
// This is line 4. これは、行4です。
foo();
bar();
baz();
boo();
far();
faz();

毎行に、行番号を配置する

行の番号付けは、デフォルトのスタイルシートprettify.cssのCSSによって制御されているので、CSSを修正する必要があります。

<style>
li.L0, li.L1, li.L2, li.L3,
li.L5, li.L6, li.L7, li.L8
{ list-style-type: decimal !important }
</style>

すべてに適用されてしまうので、元に戻すには、cssを再度修正して、行の番号付けを戻す必要があります。

マークアップを部分的に、コードとしてマークされないようにする

nocodeクラスを使用して、コードでないマークアップの範囲を指定することができます。

<pre class=prettyprint>
int x = foo();  /* This is a comment  <span class="nocode">This is not code</span>
  Continuation of comment */
int y = bar();
</pre>
int x = foo();  /* This is a comment  This is not code
  Continuation of comment */
int y = bar();

より完全な例は、issue22のテストケースを参照してください。

Home Editor Tools Operation TagScript HPSpace

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」