| 文字 | 実体参照 |
|---|---|
| < | < |
| & | & |
SyntaxHighlighter による記述に <pre> タグを使うといろいろと不便な点がある。一番の問題は、<pre> 内では左表に示す文字を直接書き表わせないことだ。
<pre> タグを使うと…
このため、HTML のソースなどを書き表わす時はしちめんどくさいことになる。
<pre class="brush:html" title="表示例">
<html>
<body>
<p>アンパサンド記号(&)</p>
</body>
</html>
</pre>
<html>
<body>
<p>アンパサンド記号(&)</p>
</body>
</html>
<script> + CDATA セクションを使う
SyntaxHighlighter – Installation
http://alexgorbatchev.com/SyntaxHighlighter/manual/installation.htmlXML用語辞典 [CDATAセクション]
http://www.atmarkit.co.jp/aig/01xml/cdata.html
そこで、ver.2.1 系から別の解決法が用意された。上の例を別の形で書き表すと、
<script type="syntaxhighlighter" class="brush:html" title="表示例"><![CDATA[
<html>
<body>
<p>アンパサンド記号(&)</p>
</body>
</html>
]]></script>
このように、記号について何も考えずに自由に書けて便利。ただ、いくつか問題もあって…
- CDATA セクションに書けない文字列がある。
- CDATA セクションはその仕様上、その中に“
]]>”という文字列を含むことができない。文中に含みたいときは“]]>”のように実体参照を使おう。 <script>タグ中には</script>と書いてはいけない。- 多くのブラウザでは、
<script>タグの中に “</script>” という文字列を含むと予期しない動作をしてしまう。このときも“</script>”というように書けばよい。 - RSS リーダー等によって CDATA セクションは読み飛ばされることがある。
- CDATA セクションや
<script>タグは、閲覧する環境によっては削除されてしまう。これはどうしようもない…
Syntaxhighlighter for MovableType プラグイン
ちなみに、このサイトでは Syntaxhighlighter for MovableType プラグインを使ってこれらを解決している。以前書いた ver.3.0 系対応版はこちら。
【Javascript】SyntaxHighlighter 3.0 を Movable Type で使う
https://blog.delphinus.dev/2010/07/syntaxhighlighter-3-in-movable-type.html
このプラグインを使うと、上記の例は次のように、さらに簡潔に書き表せる。MovableType を使っているならこれが一番便利だろう。
[code:html;title:表示例]
<html>
<body>
<p>アンパサンド記号(&)</p>
</body>
</html>
[/code]
