PRE 要素を、自動的に改行するブロック要素に変換するプラグインです。 <pre>, </pre> で囲まれた部分の空白文字が変換の対象になります。 変換しても、スペースの個数は変更されずにもとの個数のまま表示されます。 タブは、8桁のタブとしてスペースに変換されます。
Movable Type 2.x 用に開発してあります。Movable Type 2.661 で動作確認を行っています。
PRE 要素は、コードの表示をするのに適していますが、自動的に改行されません。 これを何とかして自動的に改行するようにできないかというのが開発の動機です。 詳しくは nlog(n): pre 要素を自動改行させたい をご覧ください。
preconv.tar.gz または preconv.zip のどちらかをダウンロードしてください。 内容は同じものです。中のファイルは1つだけですので、解凍後にディレクトリは作りません。ご容赦ください。
プラグイン導入にあたり、Perl モジュールを追加インストールする等の準備は必要ありません。
プラグインを導入すると、<pre>, </pre> は <div class="precode">, </div> というブロック要素に変換されます。あらかじめ、スタイルシートに「precode」というクラスを作っておく 必要があります。 サイトに合わせたレイアウトを指定してください。 PRE 要素のスタイルを明示的に指定している場合は、 設定項目をコピーして「.precode」という名前をつけるのが簡単です。 次の例では等幅フォントを指定しています。
ダウンロードしたファイルを展開し、プラグイン用フォルダに置いてください。
CGIPath/plugins/preconv.pl
プラグインの導入により、次のコンテナタグが使えるようになります。
例えば、個別記事用の「Individual Entry Archive テンプレート」であれば、以下のように <$MTEntryBody$> と <$MTEntryMore$> をコンテナタグ <MTCPreConv>, </MTCPreConv> で囲みます。必要であれば、 他のアーカイブテンプレートや RSS, Atom テンプレートに対しても同様にコンテナタグを追加します。
<MTCPreConv> <$MTEntryBody$> ... <$MTEntryMore$> </MTCPreConv>
例えば、普通は本文中に
<pre><?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- Hello World in XHTML --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Hello World!</title> </head> <body> <p>Hello World!</p> </body> </html></pre>
と書くと、次のような表示となります。
<?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- Hello World in XHTML --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Hello World!</title> </head> <body> <p>Hello World!</p> </body> </html>
このプラグインを使うと、本文に書かれた <pre>, </pre> タグは自動的に変換され、 囲まれた部分のスペースやタグも変換が行われます。 プラグインを入れても、本文に書く内容は同じです。 <pre>, </pre> を使って書いておきます。 自動的に変換され、次のような表示となります。一見同じようですが、幅を狭くすると違いを確認することができます。
プラグインを使った場合の本文は、次のように変換されます。赤色が変換された部分です。
(ちなみに、「このコードの HTML での表現は?」と思ってこのページのソースを見るのは危険です。 気を失いそうになります。ご注意ください。)
無料でご利用になれます。
無保証です。何か問題が起きたとしても、作者は責任を持ちません。ご自身の責任の下でご利用ください。
nlog(n): ウェブログ のコメント欄にお願いします。