preタグで文字を端っこで折り返すで試みた行を端っこで折り返す方法で、プログラムコードのソースの表示が楽になった。
しかし、またしても新たな問題発生。
Movable Typeのエントリーを投稿で、改行設定で「改行変換」にして記事を作成すると、preタグ内で改行されている行に対して、<br />が勝手に挿入されてしまう場合があるのです。(MT3.34の場合です。現行バージョンは改善されているかも。)
その結果、preタグ内がものすごく間延びしてしまう。
MTのエントリー画面で、エントリー内容を入力し、改行設定を「改行変換」で記事作成すると・・・
例えば、以下のように、preタグ内が間延びして表示されてしまう場合がある。
■例1.preタグ内表示ここから
echo "あいうえお";echo "かきくけこ";
echo "さしすせそ";
上記の■例1.preタグ内表示ここから~■例1.ここまでの部分は、MTのエントリーの内容上には・・・
echo "かきくけこ";
echo "さしすせそ";</pre>
■例1.ここまで
と、記述されている。
しかし、HTMLソースには、<pre>タグ内に、<br />が勝手に挿入され間延びする原因となっている。
このpreタグ内の自動brタグ付加の問題を解決するには、MTのエントリーの内容に記述する際に、以下の2点を気をつけると改善されます。
1.preタグ内で、2回改行して空の行を作らない。
例1の「echo "あいうえお";」と「echo "かきくけこ";」の間のような空の行はMTエントリーの際に、preタグ内に作らないようにする。
2.<pre>タグのすぐ上に、1行だけ空の行を作る。(2行以上、空けてはいけない。)
つまり、以下のようにMTエントリーの際に記述する。
<pre>echo "あいうえお";
echo "かきくけこ";
echo "さしすせそ";</pre>
■例2.ここまで
すると、preタグ内にbrタグが勝手に挿入されず、以下のようにpreタグ内が間延びしないで、ウェブページ上に表示されます。
■例2.preタグ内表示ここから
echo "あいうえお"; echo "かきくけこ"; echo "さしすせそ";
■例2.ここまで
簡単に言えば、preタグを使う場合は、<pre>タグのすぐ上部の文章との間に、1行だけ空の行を作るようにして、また<pre>タグ内では、1行も空の行を作らないようにする、の2点を守ると良いということです。
MTの挙動として、エントリーを投稿で、改行設定で「改行変換」にして、preなどの特定のタグを書いて記事を作成すると・・・
1.preなど特定のタグのすぐ上部の文章との間に、1行だけ空行がある場合・・・
⇒preなど特定のタグ内に、brを自動挿入しない。
2.preなど特定のタグのすぐ上部の文章との間に、空行がないor2行以上の空行の場合・・・
⇒preなど特定のタグ内に、brを自動挿入する。
となっているようです。
この法則は、他のタグ、blockquoteやtableなどを用いるときも共通のようです。
しかし、なんでこんな不可思議な挙動になってんのかね、MT・・・
文章がまとまっていなくて、非常に申し訳ないです。
分かりにくかったら、ご指摘下さい。
■この一覧は、次のエントリーを参照しています: preタグ内の改行(brタグ)を無効にする(MT・Movable Type):
» ソースコードを綺麗に表示するJS「dp.SyntaxHighlighter」
ソースコードの見せ方について色々考えていて、良いJSをご紹介。 とは言っても情報としてはかなり古いですが・・・ dp.SyntaxHighlighter...
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/115