WORDPRESS にソースコード整形プラグインをインストール
https://www.typea.info/blog/index.php/2010/12/07/wordpress_chromeブログにソースコードを記述する場合、きれいに表示させられるとうれしい。
Syntax Highlighter が、行番号も表示されたり、見た目はきれいでよさげなのだが、対象となる言語を指定しないといけない。
google-code-prettify は、Syntax Highlighter に比べると控えめで、コードの色分け程度だが、いちいち対象言語を指定する必要が無く、CSS クラスに prettyprint を指定するだけなので楽でよい。
インストール
以下の手順で、WordPress に、google-code-prettify のプラグインを導入してみる。
- ダウンロードのURLを指定し、wget でダウンロード
- 解凍
- WordPress ディレクトリ(例ではblog) の/wp-content/plugins/ にコピー
- 管理画面から有効化
# wget http://www.deanlee.cn/downloads/google_code_prettify_v1.1.zip # unzip google_code_prettify_v1.1.zip # mv google_code_prettify /var/www/html/blog/wp-content/plugins/
使用法
実際に使うには、ブログ記事のソースを pre タグで囲み、class 属性に、prettyprint を指定する。
<pre class="prettyprint linenums"> ここにソースコードを記述する。 </pre>
または、
<code class="prettyprint"> ここにソースコードを記述する。 </code>
試しに、ソースを貼ってみる。
package info.typea; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class TouchActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TouchView view = new TouchView(this); setContentView(view); } } class TouchView extends View { private static final String TAG = "Touch"; private List points = new ArrayList (); public TouchView(Context context) { super(context); setFocusable(true); Log.i(TAG ,"View Constructed."); } @Override public boolean onTouchEvent(MotionEvent event) { Point point = new Point(); point.x = (int) event.getX(); point.y = (int) event.getY(); points.add(point); this.invalidate(); return true; } @Override protected void onDraw(Canvas canvas) {a canvas.drawColor(Color.WHITE); Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.STROKE); for (Point point : points) { //Log.i(TAG,String.format("x=%d, y=%d", point.x, point.y)); canvas.drawCircle(point.x, point.y, 10, paint); } } }
注意点として、
- HTMLの特殊文字、特に<、> は、pre タグの中でも <、> 等 にエスケープする必要がある
- IEではまともに動かない(改行が無くなってしまう)
- HTMLタグ(XML)を pre で利用できない(?) 今回、実際にタグとして認識されてしまった。code を使う必要があるかも
Movable Type と、FreeStyleWiki を使った自分のサイトでは、IE7 未満のブラウザには適用しないように、またIE7互換モードで表示するように、script タグの中に、jQuery を利用して以下の記述を行っている。
$(document).ready(function(){ if ($.browser.msie && $.browser.version < 7) { // NOP } else { var meta = $("head").add("meta"); meta.attr("http-equiv","X-UA-Compatible"); meta.attr("content","IE=EmulateIE7"); prettyPrint(); } });
WordPress のプラグインではどう対処しようかしら。
追記
Chrome でシンタックスハイライトが効かない場合