#?SuikaWiki/0.9 * pre 要素型 (HTML, XHTML 1) [1] [DFN[[CODE(HTMLe)[pre]] 要素]]は、囲まれた文が「整形済み (preformatted)」 であることを[[視覚UA]] に伝えます。 [2] : [[開始タグ]]: 必須 : [[終了タグ]]: 必須 : [[内容模型]]: [CODE(SGML)[(%[[inline]];)* -([VAR[除外要素型]])]] : [[属性]] : ,[CODE(HTMLe)[[[align]]]] ,,,揃え ,[HTML4] 非推奨 ,[CODE(HTMLa)[[[class]]]] ,,,[[級]] ,[HTML4] %[[coreattr]] ,[CODE(HTMLa)[[[dir]]]] ,,,[[書字方向]] ,[HTML4] %[[i18n]] ,[CODE(HTMLa)[[[id]]]] ,,,一意識別子 ,[HTML4] %coreattr ,[CODE(HTMLa)[[[lang]]]] ,,,[[自然言語]] ,[HTML4] %i18n ,[CODE(HTMLa)[[[xml]]:lang]],,,自然言語 ,[XHTML1] ,[CODE(HTMLa)[[[onclick]]]] ,,, ,[HTML4] %[[events]] ,[CODE(HTMLa)[[[ondblclick]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onkeydown]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onkeypress]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onkeyup]]]] ,,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmousedown]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseout]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseover]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseup]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[style]]]] ,,,スタイル情報 ,[HTML4] %coreattr ,[CODE(HTMLa)[[[title]]]] ,,,注釈的題 ,[HTML4] %coreattr ,[CODE(HTMLa)[[[width]]]],[CODE(SGML)[[[NUMBER]]]],(自動),幅,[HTML4] 非推奨 [[#comment]] ** 内容模型 [4] 内容としては、基本的に[[行内要素]]を持つことができますが、 - [CODE(HTMLe)[[[img]]]] * - [CODE(HTMLe)[[[object]]]] * - [CODE(HTMLe)[[[applet]]]] - [CODE(HTMLe)[[[big]]]] * - [CODE(HTMLe)[[[small]]]] * - [CODE(HTMLe)[[[sub]]]] * - [CODE(HTMLe)[[[sup]]]] * - [CODE(HTMLe)[[[font]]]] - [CODE(HTMLe)[[[basefont]]]] は除外されています ([[子孫要素]]とできません)。 HTML 4 によれば、この規定は [[HTML3.2]] と同じで、 固定幅フォントでレンダリングしたときに行の高さと文字の進み幅が一定になるようにするための制約なのだそうです。 [[XHTML1.0]] にもこの制約は受け継がれています 。 ただし、 [CODE[*]] をつけた要素にしか言及されていません。 残りの移行用要素型はどうでもいいってことですか。 (XHTML 1.0 にも Transitional DTD はあるのにねぇ。) [5] >>4 の目的の達成のためには、 >>3 の bidi についての規定が邪魔に思えるのですけどねぇ。 [[#comment]] ** レンダリング [3] HTML 4 によれば、 - 視覚 UA は、 -- [[空白]]に手をつけなくてよい (may) -- [[固定幅]]フォントで文をレンダリングしてもよい (may) -- 自動語折り返し (word wrap) を無効化してもよい (may) -- [[bidi]] 処理を無効化してはならない (must not) - 非視覚 UA は、余分な空白を尊重する必要はない (not required) [6] >>4 の除外要素があるのは、固定幅フォントで表示したときに行の高さや文字の幅が一定になるようにするためです。 この動作を著者が[[スタイルシート]]で変えてしまうことは非推奨 (discourage) です。 [[#comment]] ** 水平タブ [8] [[水平タブ]]文字 ([CODE(char)[0/9]], [CODE(char)[HORIZONTAL TAB]], [CODE(char)[[[HTAB]]]]) を [CODE(HTMLe)[pre]] 内で使用することは強く非推奨 (strongly discouraged) です。 HTML 4 仕様書がその理由としている事情はこうです。 多くの視覚 UA は、8文字を一タブ幅としています。 ところが、 [[editor]] でタブ幅を好きな幅にすることはよく行われています。 だから、変てこな文書を作ってしまう。 [9] 多くのブラウザが8タブを採用しているのは事実で、ブラウザに限らずとも8文字が優勢ですが、そうでなかったり、設定で変えられる処理系も多々あります。 水平タブ文字は、数ある [[C0]] 制御文字のうちでは、文字自体はかなり安全に (ほとんど必ず) 伝達してもらえるわずかな文字の一つではありますが、 意図した通りに表示してもらえる確率はかなり低くなりますから、 この判断は妥当だと思います。 [[#comment]] ** 例 [7] HTML 4 仕様書の例示から、 Shelly の[[詩]]『To a Skylark』: [PRE[
       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.
]PRE] レンダリング例: [PRE[ Higher still and higher From the earth thou springest Like a cloud of fire; The blue deep thou wingest, And singing still dost soar, and soaring ever singest. ]PRE] [[#comment]] * メモ