pre要素によるマーク付けについて

ちょっと気になる記述を見つけたのでメモ:ウェブの作り方・整形済みテキストについて。
要約すると、「pre 要素には欠点が多く正当な使い道も見出せないで、当サイトでは一切用いない」というもの。参照先のサイトでは、サンプル・ソースコードを pre 要素ではなく ol 要素によってマーク付けしている。例えば以下のようにである。

  1. <title>HTMLについて解説。</title>
  2. <h1>HTMLについて。</h1>
  3. <h2>HTMLとは。</h2>
<pre> でマーク付けされると、幅の面で問題が出てくるという点には大いに賛成できる。いくつかの Web ブラウザで pre 要素内で自動的な折り返しが行なわれないため、過度の横スクロールを出さないためにはある程度で改行しなければならず、その際どうしても“特定の解像度のPC”を意識しなければならなくなる。ブラウザ表示画面とにらめっこしながらソースコードに改行を加えていく作業は、ひどく苦痛である。さらに BASIC のインタプリタコンパイラ)では復帰文字を処理の区切り記号として解釈するので、そのまま改行しただけではコピー&ペーストした際にエラーが発生してしまう。そのような表示のためだけのコーディングの変更は、汎用性が無く本質的なものでは無い。
おそらくその解決策として準備されたと思われる非推奨要素の width や NN4 の wrap 属性は、どちらにしろ推奨されていないし IE 等では実装されていない。CSS の white-space プロパティの値にそれを実現できるものが出れば良いのだが、今のところ空白文字は尊重しつつ自動折り返しを有効にするための値は用意されていない。よって現状では妥協して適度に改行を加えるか、横スクロールを無視するか、pre{width:100%;overflow:scroll} という規則を加えるといった方法しか無い。
しかし、このような“欠点”(ここではあえて欠点と呼んでおこう)をもってしても尚、私は pre 要素を便利な要素だと思っている。私の pre 要素の捉え方は、再利用する可能性の高いコードのマーク付けのために用いるものというものである。ソースコードを他の要素(例えばol要素やl要素)によってマーク付けしようとすると、再利用する際の手間が多くなりやすい(例えばDOMでは一つ一つのノードを解析して結合する必要があるかもしれない)。整形済みテキストを用いればプログラムソースを“そのまま”持って来る事が出来るし、再利用する際も実体参照を解決してやるだけで良い。プログラムソースをそのまま例示として提供する要素としては、pre 要素が現状では一番良いのではないかと考えている(もちろん、例文を細かくマーク付けする行為が望ましくないという意味ではない)。
その点では、替わりにtextarea 要素を用いても構わないと思っている。寧ろ再利用のし易さではこちらのほうが上だ。ただ textarea 要素はフォームに値を渡すためのコントロールであるので本来の目的とは異なるし、マーク付けの自由度も低い。
ただ順序リストや行要素を用いることのメリットとして、行番号を振る事が出来るというものがある。たまにプログラムソースに“手動で”行番号を挿入しているケースを見かけるが、コピー&ペーストした際にそれらも一緒にくっ付いてくるため、再利用性に乏しい事この上ない。順序リストや行要素を用いれば、ソースに関係無く自動的に番号を割り振る事も可能である(悲しい事に一部のブラウザでは、これらも文字列選択の対象となってしまうが)。
私は pre 要素を用いる事を今のところさほど問題視していませんが、このサイトの積極的な姿勢には敬意を表させていただきます。