投稿者:高山 | ひとくちメモ | 2009年10月18日 18:34
ソースコードを綺麗に表示し、行番号とかも追加してくれる便利なJavaScript、
dp.SyntaxHighlighter。
さらに、スクリプト記入部分をある程度自動化してくれる
kwLogさん: SyntaxHighlighter for Movable Typeを導入してみました。
dp.SyntaxHighlighter。
さらに、スクリプト記入部分をある程度自動化してくれる
kwLogさん: SyntaxHighlighter for Movable Typeを導入してみました。
// Cソース表示 int a = 10; // 変数A int b = 20; // 変数B int c = a + b; // 合計なにげに、結構大変だったのでメモをのこしておきます。
1.プラグインをダウンロードして、"plugins"と"mt-static/plugins"にアップします。
2.ヘッダーテンプレートの<head>~</head>の間に[code:cpp]<$mt:SyntaxHighlighterInclude brush="cpp,jscript,perl,xml,css" theme="default"$>[/code]を入れます。
このとき、Movable Typeの設定で "mt-config.cgi" の "StaticWebPath" が設定されていないと、JavaScriptとcssへのパスが正常に通りません。
デフォルトだと、コメントアウトされてるはず。
[code:xml]StaticWebPath http://www.xxx/mt/mt-static/[/code]
3.あとは、エントリー記事のソースを書き込む場所に
フォーマットで "SyntaxHighighter + Convert Line Breaks" を選んで
[code:cpp]と書けばよいだけのはずだけど、ここでもトラブル。
ソースコード
[/code]
このサイトは、HTMLソースの無駄な改行やスペースを省略するために
Movable Type 備忘録さんのMTRemoveBlankを使用しています。
ところが、HTMLソースを出力したあとにJavaScriptでプログラムソースを表示するので
変換する前に、HTMLソース出力の段階で改行やスペースが削除されてしまいます。
これを防ぐために、プログラムコード部分のスペース削除を除外しました。
"RemoveBlank.pl" の "remove_blank_trim" 関数を変更させていただきました。
sub remove_blank_trim
{
my @out = @_;
my $txt = '';
my $awb_flag = 0; # プログラムコード開始フラグ
for (@out) {
if( $_ =~ m/<pre class=\'brush:/ ){ # プログラムコード部分開始
$awb_flag = 1;
}
if( $_ =~ m/<\/pre>/ ){ # プログラムコード部分終了
$awb_flag = 0;
}
if( $awb_flag == 0 ){
s/^\s+//;
s/\s+$//;
}else{
$_ .= "\n"; # プログラムコード部分には改行を残す
}
# $txt .= $_ . "\n" if ($_ ne '');
$txt .= $_;
}
return $txt;
}
さらに、エントリーを書くときにフォーマットが "SyntaxHighighter + Convert Line Breaks" だと、記事中にリンクを貼った場合などに(原因不明)、ソースコード中に自動改行の<br>や<p>タグが出現してしまうことがある。
謎だけど、フォーマットは "SyntaxHighighter" を選び、改行は<br>タグを手動でいれています。




投稿されたコメント[1]
なんかアンダーバー _ が表示されないなぁ。
投稿者:高山 | 2009年12月 9日 04:25
コメントをお願いします