ラベル SyntaxHighlighter の投稿を表示しています。 すべての投稿を表示
ラベル SyntaxHighlighter の投稿を表示しています。 すべての投稿を表示
2012/02/04

ソースコードをハイライトするSyntaxHighlighter3.0を使いこなす

導入編:DevAchieve: BloggerにソースコードをハイライトするSyntaxHighlighterを導入する

SyntaxHighlighterを使用してソースをカラフルに表示するには、
以下の二通りの方法で記述することができます。
  1. preタグを使う
  2. scriptタグを使う

preタグを使う

<pre class="brush: alias;">
// ココにソースを記述
</pre>
メリット:後述のscriptタグと違ってハイライトスクリプトが読み込まれなくてもテキストとして表示される。
デメリット:<以降がタグとして認識されるため&lt;と書き換えなければならない。
Bloggerの人気の投稿ウィジェットに表示される記事の前文にpreタグまで含まれると
表示が狂うことがある。(何が原因かわからないけどコレのせいで最初からHTML/CSS組み直した(´Д⊂ヽ)
このせいで記事の公開が遅れました…。とりあえず対策は記事書いてすぐにコードを貼らないこと。

scriptタグを使う

<script class="brush: alias;" type="syntaxhighlighter"><![CDATA[
// ココにソースを記述
]]></script>
メリット:<以降がタグとして誤認されることがない。(</script>タグだけは&lt;/script>と記述する必要あり)
デメリット:scriptが読み込まれるまで非表示である。また、AutoPager系の自動ページ読み込みで
読み込まれたページはハイライトスクリプトが動かず、ソースコードが非表示のままになる。
また、RSSやモバイル表示でソースコードが非表示になる。

ということで個人的にpreタグを使いたいのでpreタグで説明していきます。
同様の設定はscriptタグでも出来るので適宜読み替えて下さい。

使用言語の設定

SyntaxHighlighterを使用する際には使用言語を設定する必要があります。
上のどちらの方法でも同じで、一行目の"alias"の部分を使用言語のエイリアスに書き換えます。

Brush name
使用言語
Brush aliases
言語のエイリアス
File name
JSファイル名
ActionScript3as3, actionscript3shBrushAS3.js
Bash/shellbash, shellshBrushBash.js
ColdFusioncf, coldfusionshBrushColdFusion.js
C#c-sharp, csharpshBrushCSharp.js
C++cpp, cshBrushCpp.js
CSScssshBrushCss.js
Delphidelphi, pas, pascalshBrushDelphi.js
Diffdiff, patchshBrushDiff.js
Erlangerl, erlangshBrushErlang.js
GroovygroovyshBrushGroovy.js
JavaScriptjs, jscript, javascriptshBrushJScript.js
JavajavashBrushJava.js
JavaFXjfx, javafxshBrushJavaFX.js
Perlperl, plshBrushPerl.js
PHPphpshBrushPhp.js
Plain Textplain, textshBrushPlain.js
PowerShellps, powershellshBrushPowerShell.js
Pythonpy, pythonshBrushPython.js
Rubyrails, ror, rubyshBrushRuby.js
ScalascalashBrushScala.js
SQLsqlshBrushSql.js
Visual Basicvb, vbnetshBrushVb.js
XMLxml, xhtml, xslt, html, xhtmlshBrushXml.js
SyntaxHighlighter - Bundled Brushes

例えばHTMLをシンタックスハイライトしたい場合は、以下のようにaliasをhtmlにします。
<pre class="brush: html;">
// ココにソースを記述
</pre>

特定の行を強調表示する

下のやつは1行目が強調表示されているのでブログなどで言及する時に
読者にわかりやすくて便利です。
これは以下のように行番号を指定することによって設定可能です。
<pre class="brush: alias; highlight: [1];">
// ココにソースを記述
</pre>
カンマ区切りで行数を指定することによって複数行を強調表示することも出来ます。

開始行番号の指定

元のソースコードを全て載せるとスペースを取りすぎるので
一部分を抜き出して、対応する行だけ説明したい時に使います。
前の記事で言うと、「縦スクロールバーを消す」あたりで使った機能です。
<pre class="brush: alias; first-line: 10;">
// ココにソースを記述
</pre>
1行目のように指定することによって行番号が10から始まるようになりました。

タイトル設定

<pre class="brush: alias;" title="タイトル設定">
// ココにソースを記述
</pre>
さっきまではclass属性の中に記述していましたが、title属性を使用しているので注意です。
ちなみにtitle属性の属性値を記述しなければタイトルは表示されません。
title=""のままタイトル未記入でも表示には影響されないということです。

その他の設定

ソースコードの折りたたみ・展開、行番号非表示、
ソースコードと同時にHTMLタグのハイライト表示、
タブサイズの指定、などの設定はコチラに載っています。
今日のPython: ブログ上でプログラムソースを表示する方法②

まとめ

よく使う上の3つのオプションを指定したのがコチラです。
<pre class="brush: alias; first-line: 1; highlight: [,];" title="">
// ココにソースを記述
</pre>
highlightとtitleは未指定でも表示に影響無いのでイチイチ消さなくても良いです。
後はaliasを自分の使用言語のエイリアスに書き換えて単語登録でもしておけばOK!


これであなたもブログでソースコードを綺麗に表示できます!

それでは。

BloggerにソースコードをハイライトするSyntaxHighlighterを導入する

たまにブログなどで綺麗にソースコードを表示しているサイトを見かけますよね?
ソースコードを文法的に色を変えて(シンタックスハイライトして)表示していて綺麗ですね。
ブログなどでシンタックスハイライトするにはSyntaxHighlighterというのを使います。

まずはSyntax Highlighter Scripts Generatorで必要な言語を選択してください。
ちなみにココでハイライトのテーマも選ぶことができます。
SyntaxHighlighter - Themesで事前に好みのテーマを確認できるから要チェックです。

Generateボタンを押したらテキストエリアにコードが表示されるからコピペしましょう。
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'></script>
<script language="javascript" type="text/javascript">
 SyntaxHighlighter.config.bloggerMode = true;
 SyntaxHighlighter.all();
</script>
例えば、これはJavaだけを選択してGenerateボタンを押した時のコードです。
このように2行目に選択したテーマのCSSがあり、4行目以降にに選択した言語のJSファイルがあります。

これをそのまま使用しても良いのですが、表示少し微妙なのでCSSを少し編集します。
まずはhttp://alexgorbatchev.com/pub/sh/current/styles/shCore.cssにアクセスして、
中身をコピーしてエディタなどに貼り付けて編集しましょう。

縦スクロールバーを消す

.syntaxhighlighter {
  width: 100% !important;
  margin: 1em 0 1em 0 !important;
  position: relative !important;
  overflow: auto !important;
  font-size: 1em !important;
  overflow-y: hidden !important; // 追加
}

IEで最後の行が横スクロールバーに隠れるのを防ぐ

.syntaxhighlighter.ie {
  font-size: .9em !important;
  padding: 1px 0 20px 0 !important; // 1px->20pxに変更
}
DevAchieve: BloggerをIEで開くと最新版でもIE7として表示されることによる問題で説明したコードを削除した場合、
IE8以上ならばこの問題は発生しないのでCSSを変更する必要はありません。

以上でshCore.cssの編集が完了しました。
ファイルのアップロードに対応したブログサービスならばコレを保存して、
ブログにアップロードして上で生成したコードの1行目のURLと差し替えればOK!
Bloggerはファイルのアップロードができないので、
設定画面>テンプレート>カスタマイズ>アドバンス>CSSを追加、に
書き換えたCSSを貼り付けてブログに適用しましょう。

右上の"?"の非表示にする

<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script>
// (中略)選択した言語に対応するscriptタグ
<script language="javascript" type="text/javascript">
 SyntaxHighlighter.config.bloggerMode = true;
 SyntaxHighlighter.defaults['toolbar'] = false;
 SyntaxHighlighter.all();
</script>
7行目のオプションを設定しておくことによって非表示にすることができます。
これで設定は以上です。
このコードを</head>の直前に貼りつければ導入は終了です。

次の記事ではSyntaxHighlighterの使い方を説明します。
次の記事:DevAchieve: ソースコードをハイライトするSyntaxHighlighter3.0を使いこなす

タグ(RSS)