[1] 
[[HTML]]
の
[DFN[[CODE[pre]]]]
[[要素]]は、
囲まれた文が
[Q[[RUBYB[整形済み] [preformatted]]]]
であることを[[視覚UA]] に伝えます。

* 仕様書

[REFS[
- [33] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-24 23:36:04 +09:00]] 版) <https://html.spec.whatwg.org/#htmlelement>
]REFS]

*

[9] 仕様書:
- [[HTML 2.0]]: [[RFC 1866]] 5.5.2. Preformatted Text: PRE
- [[SI 4281]]:1998
-- [CSECTION[6.1.1.2 Pre-formatted segments]]
<http://www.qsm.co.il/Hebrew/si4281e.htm>
- [[HTML 4]]
-- <IW:HTML4:"struct/text.html#edef-PRE">
-- [[厳密DTD]] <IW:HTML4:"sgml/dtd.html#pre.exclusion">
-- [[移行用DTD]] <IW:HTML4:"sgml/loosedtd.html#pre.exclusion">
- [[XHTML 1.0]]: <IW:XHTML1.0:"#prohibitions">

[2]
:[[開始タグ]]:必須
:[[終了タグ]]:必須
:[[内容模型]]:[CODE(SGML)[(%[[inline]];)* -([VAR[除外要素型]])]]
:出現できる文脈:[CODE(SGML)[%[[block]];]] な文脈
(歴史的変遷 <https://suika.suikawiki.org/www/2004/html/content-pre>)
:[[属性]]:
,属性名	,属性値	,既定値	,説明	,出典
,[CODE(HTMLa)@en[[[align]]]]	,	,	,揃え	,[HTML4] 非推奨
,[CODE(HTMLa)@en[[[autohilite]]]]	,	,	,	,非標準	,[[Microsoft]]
,[CODE(HTMLa)[[[class]]]]	,	,	,[[級]]	,[HTML4] %[[coreattr]]
,[CODE(HTMLa)@en[[[cols]]]]	,	,	,	,非標準
,[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)[[[_moz_quote]]]]	,	,	,	,非標準	,[[Mozilla]]
,[CODE(HTMLa)[[[style]]]]	,	,	,スタイル情報	,[HTML4] %coreattr
,[CODE(HTMLa)[[[title]]]]	,	,	,注釈的題	,[HTML4] %coreattr
,[CODE(HTMLa)[[[width]]]]	,[CODE(SGML)[[[NUMBER]]]]	,(自動)	,幅	,"[HTML 2.0], [HTML 4] 非推奨"
,[CODE(HTMLa)@en[[[wrap]]]]	,	,	,	,非標準
,[CODE(XMLa)[[[xmlns]]]]	,[CODE(URI)[[[http://www.w3.org/1999/xhtml]]]]	,==	,[[W3C]] [[勧告]]	,[[XHTML 1]]


[[#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 によれば、この規定は [[HTML 3.2]] と同じで、
固定幅フォントでレンダリングしたときに行の高さと文字の進み幅が一定になるようにするための制約なのだそうです。

[[XHTML 1.0]] にもこの制約は受け継がれています 
[SRC[XHTML 1.0 <http://www.w3.org/TR/xhtml1/#prohibitions>]]。
ただし、 [CODE[*]] をつけた要素にしか言及されていません。
残りの移行用要素型はどうでもいいってことですか。
(XHTML 1.0 にも Transitional DTD はあるのにねぇ。)

[5] >>4 の目的の達成のためには、 >>3 の bidi 
についての規定が邪魔に思えるのですけどねぇ。

[13] [CODE(HTMLe)[pre]] の内容には各種の[[行内要素]]が使えますが、
UA の性能によっては、正しくレンダリングされないことがあります。
[SRC[RFC 1866 5.5.2.]] 

太字でレンダリングした部分で文字幅の計算がずれてまわりと字が重なるとか、
そんなような状況を想定しているのだと思われます。

[[#comment]]


** レンダリング

[3] HTML 4 によれば、
- 視覚 UA は、
-- [[空白]]に手をつけなくてよい (may)
-- [[固定幅]]フォントで文をレンダリングしてもよい (may)
-- 自動語折り返し (word wrap) を無効化してもよい (may)
-- [[bidi]] 処理を無効化してはならない (must not)
- 非視覚 UA は、余分な空白を尊重する必要はない (not required)

[6] >>4 の除外要素があるのは、
固定幅フォントで表示したときに行の高さや文字の幅が一定になるようにするためです。
この動作を著者が[[スタイルシート]]で変えてしまうことは非推奨 (discourage)
です。

[10] RFC 1866 では、 [CODE(HTMLe)[pre]] 要素は固定幅フォントで整形された文章に適当な要素型であると紹介していました。 RFC 1866 には明記こそされていませんが、
固定幅フォントでの表示が適当であると言っていることは自明です。

[11] UA は [CODE(HTMLa)[[[width]]]] 属性値を参考にして適当な文字の大きさと字下げの量を決めることができます。
[SRC[RFC 1866 5.5.2.]]
幅が広ければ左余白を削減するようなことを想定しているようです。

[16]
[CODE(HTMLe)[pre]] の意味は[Q[整形済み文]]であって、[Q[固定幅]]ではありませんが、
歴史的事情を考慮すれば、非固定幅な整形済み文に使用するのは好ましくないでしょう。
[WEAK[(しかしそうなると、非固定幅な整形済み文に使用するべき要素型がなくなってしまいますが・・・。)]]

[19]
[CITE[pre 要素のスタイル定義とマークアップ - 2xup]] <http://2xup.org/log/2006/09/07-0056>
([[名無しさん]] [WEAK[2006-09-07 00:02:14 +00:00]])

[[#comment]]


*** 改行

[12] [CODE(HTMLe)[pre]] 内では、改行を改行 (次の行の先頭への移動)
として扱います。 (表示領域の先頭ではなく、
余白を考慮した行の先頭です。) [SRC[RFC 1866 5.5.2.]]

[14] 古い文書は [CODE(HTMLe)[pre]] の中で [CODE(HTMLe)[[[p]]]]
タグを使っています。 UA 
はこれを改行と同じように扱うことが[RUBYB[推奨] [encourage]]されていました。
ただし、 [CODE(HTMLe)[p]] の後に改行が続く時には、
まとめて一つ分の改行とみなすべきとされていました。
[SRC[RFC 1866 5.5.2.]]

[17] '''Bidi''':
[[bidi]] に関しては、[[行]]ごとに bidi 算法を適用して各[[文字]]の表示位置を決定します
[SRC[SI 4281 6.1.1.2]]。

[[#comment]]


*** 水平タブ

[8] かつて、[[水平タブ]]文字 ([CODE(char)[0/9]], [CODE(char)[HORIZONTAL TAB]],
[CODE(char)[[[HTAB]]]]) を [CODE(HTMLe)[pre]] 
内で使用することは避けるべきとされていました。

[22] 
HTML 2.0 (RFC 1866) では[Q[含める[RUBYB[べきではない] [should not]]]]、
HTML 4 では[Q[[RUBYB[強く非推奨] [strongly discouraged]]]]、
[[ISO-HTML]] では使用不能 (強制的に [CODE(char)[[[SP]]]]
に変換) と、時代が下るにつれ強い表現になっていました。

[23] 
UA はタブを8の倍数の[[文字位置]]までの分の間隔として解釈しなければなりません。
しかし実装は一貫していません。 [SRC[RFC 1866 5.5.2.]]

[24] 
多くの視覚 UA は、8文字を一タブ幅としています。
ところが、 [[editor]] でタブ幅を好きな幅にすることはよく行われています。
だから、変てこな文書を作ってしまうことになります。 [SRC[HTML 4]]

[9] 多くのブラウザが8タブを採用しているのは事実で、
ブラウザに限らずとも8文字が優勢ですが、そうでなかったり、
設定で変えられる処理系も多々あります。
水平タブ文字は、数ある [[C0]] 制御文字のうちでは、文字自体はかなり安全に
(ほとんど必ず) 伝達してもらえるわずかな文字の一つではありますが、
意図した通りに表示してもらえる確率はかなり低くなりますから、
この判断は妥当だとも思われました。

[25] [[HTML5]] ではこの種の[[レンダリング]]に関わる制約はなくなり、[[CSS]]
など[[レンダリング・モデル]]に解釈を委ねています。 [CODE(HTMLe)@en[[[pre]]]]
[[要素]]の既定の[[レンダリング]]で適用される [CODE(CSS)@en[[[white-space]]: [[pre]]]]
は、 [[CSS 2.1]] によると、[[8タブ]]で[[レンダリング]]されます。

;; <http://www.w3.org/TR/CSS21/text.html#white-space-model>

** 例

[15] 整形済み文の例 [SRC[RFC 1866 5.5.2.]]
[PRE(HTML)[
<PRE>
Line 1.
       Line 2 is to the right of line 1.     <a href="abc">abc</a>
       Line 3 aligns with line 2.            <a href="def">def</a>
</PRE>
]PRE]

[7] Shelly の[[詩]]『To a Skylark』 [SRC[HTML 4]]
[PRE(HTML)[
<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]

レンダリング例:
[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]

* [CODE(DOMi)@en[HTMLPreElement]] インターフェイス

[31] [DFN[[CODE(DOMi)@en[HTMLPreElement]]]] [[インターフェイス]]は、
[CODE(HTMLe)@en[pre]], [CODE(HTMLe)@en[listing]], [CODE(HTMLe)@en[xmp]]
各[[要素]]の[F[要素インターフェイス]]です [SRC[>>33]]。

[32] [CODE(DOMi)@en[HTMLPreElement]] [[インターフェイス]]は、
[CODE(DOMi)@en[HTMLElement]] [[インターフェイス]]を[[継承]]しています。

* [CODE(CSS)@en[white-space: pre]]

@@
[26] [CODE(CSS)@en['[[white-space]]']] [[特性]]の値 [CODE(CSS)@en['[[pre]]']] は・・・

* 派生


[41] [CITE@ja[サイト生成用 XML の仕様 — [[Avendia]]]], [TIME[2023-01-03T03:25:42.000Z]], [TIME[2023-04-08T06:03:46.250Z]] <http://ziphil.com/other/other/10.html#pre>

>[CODE[pre]] 要素の箇所にソースコードを別行立てで表示する。 各 [CODE[pre]] 要素の直後に [CODE[samp]] 要素を置くと、 それはソースコードを実行したときの出力を意味する。 どちらも HTML を生成する際にインデントは削除されるので、 XML の構造に従って小要素のテキストをインデントすることができる。 


[FIG(data)[ [46] [[HTML要素概説]]

:[F[要素名]]:[CODE[pre]]
:借用先:[[WML1]]

]FIG]


* 歴史

** [CODE[pre]] 要素の誕生

[55] 
[TIME[1992-11-21]]付 [[www-talk]] の
[[Jim Whitescarver]]
による投稿によると、
ScreenMode w3 interface の prerelease version
が公開されました。
[SRC[>>54]]

[56] 
また、同グループは manual page reader (おそらく [[man]] を [[HTML]]
にして返すゲートウェイサーバー) や [[HTML]] を [[WYSIWYG]]
に編集できる [[Microsoft Word]] マクロを開発しました。
[SRC[>>54]]

[57] 
両機能のために必要であり、 [[Al Leurck]]
が [CODE[pre]] [[要素]] (と [[Microsoft Word]] マクロ) を開発しました。
[SRC[>>54]]

[58] 
[CODE[pre]] は ScreenMode s3 interface と [[Microsoft Word]] マクロが実装していた他に、
tkWWW X interface にも追加作業中でした。
[SRC[>>54]]

[59] 
それまでも [CODE[plaintext]] や [CODE[xmp]] があったものの、
[[ハイパーリンク]]が使えなかったので新たに [CODE[pre]] が必要とされました。

[61] 
[[NCSA Mosaic]]
の開発者
[[Marc Andreessen]]
は直ちにこれに反応して [CODE[pre]] は良い考えであり
[[HTML]] 仕様に追加できないかと発言しています。
[SRC[>>60]]

[62] 
[[MidasWWW]]
の開発者
[[Tony Johnson]]
は
[[MidasWWW]]
は設定ファイルの変更だけで対応可能だと方法を示しています。 [SRC[>>63]]

[69] 
これらに対して他の人々は基本アイデアには賛同しつつ、
[[要素名]]や構文に別案を出し始めます。
[[Tim Berners-Lee]]
は [DFN[[CODE[fixed]]]] 
という名前がいいかもしれないといい [SRC[>>64]]、
別構文案を踏まえて挙動が違う [CODE[pre]], [CODE[fixed]] の共存案も提出します [SRC[>>67]]
が、
[[Dan Connolly]] は挙動が違う [CODE[fixed]] に難色を示します [SRC[>>68]]。


[80] 
しかし[TIME[1992-11-24]]付の
[[Dan Connolly]]
の [CODE[html.dtd]]
には 
[CODE[fixed]]
[[要素]](だけ)があります。
[SRC[>>78]]

[71] 
[TIME[1992-12-01]]に公開された [[Dan Connolly]] 版の [[HTMLの仕様書]]は
[DFN[[CODE[typewriter]]]]
[[要素]](だけ)を含んでいました。
[SRC[>>70, >>67, >>68, >>81]]

[82] [TIME[1992-12-01]]付の >>67 が公開したと書いているが、
>>70 の日付は[TIME[1992-11-30]]。前日に [[DanC]] が [[tar]]
玉にしたものを翌日になって [[TimBL]] がサーバーに置いたということか。

[84] 
この [CODE[typewriter]] は、 
[CODE[pre]] 案をもとに
[[nroff]] [[man page]]
から着想を得た[[要素名]]だと説明されています。
[SRC[>>133]]

[85]
しかし[TIME[1992-12-02]] (公開: [TIME[1992-12-04]]) には [CODE[typewriter]] から [CODE[pre]]
に改められました。新しいものを作るのではなく出てきたものを踏襲する方針に変えたのだと説明されています。
[SRC[>>83]]

[REFS[

- [54] 
[CITE[ScreenMode binaries, man page reader, experimental server]], 
[[Jim Whitescarver]],
Sat, 21 Nov 92 17:32:08 est,
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T08:53:14.012Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0097.html>
- [60] 
[CITE[ScreenMode binaries, man page reader, experimental server]], 
[[Marc Andreessen]],
Sat, 21 Nov 92 17:40:39 -0800,
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:01:26.768Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0098.html>
- [63] 
[CITE[Re: ScreenMode binaries, man page reader, experimental server]], 
[[Tony Johnson]],
Mon, 23 Nov 1992 19:06 PDT,
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:03:30.040Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0107.html>
- [64] 
[CITE[Re: ScreenMode binaries, man page reader, experimental server]], 
[[Tim Berners-Lee]],
Tue, 24 Nov 92 11:19:44 +0100,
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:07:37.767Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0108.html>
-
[78] 
[CITE[Wayback Machine]], [TIME[2024-09-29T12:20:15.000Z]] <http://web.archive.org/web/20120314055324/http://lost-contact.mit.edu/afs/cern.ch/w3.org/www/MarkUp/Connolly/921125/archive.sh>
- [65] 
[CITE[Re: The <PRE> tag]], [TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:08:06.239Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0111.html>
- [66] [CITE[Re: The <PRE> tag]], [TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:08:13.448Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0120.html>
- [67] 
[CITE[Re: The <PRE> tag]], [TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:08:20.279Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0133.html>
- [68] 
[CITE[Re: The <PRE> tag]], 
[[Dan Connolly]],
Tue, 01 Dec 92 11:41:34 CST,
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:08:28.724Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0136.html>
- [70] 
[CITE[HTML Guide: A Complete MarkUp Set]], [TIME[1992-11-30T11:59:17.000Z]], [TIME[2024-08-30T09:46:49.283Z]] <https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Connolly/complete.html>
- [81] 
[CITE[HTML Guide: Recommended Usage]], [TIME[1992-11-30T11:57:09.000Z]], [TIME[2024-09-29T12:28:16.124Z]] <https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Connolly/recommended.html>
- [133] [CITE[An HTML specification and Implementors' Guide]], 
[[Dan Connolly]],
Mon, 30 Nov 92 07:27:01 CST,
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-09-29T14:14:20.340Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0123.html>
-
[FIG(quote)[
[FIGCAPTION[
[83] [CITE@en[The spec evolves...]], 
[[Dan Connolly]],
Fri, 04 Dec 92 13:11:32 CST,
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-09-29T14:23:11.923Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0155.html>
]FIGCAPTION]

>
[PRE[
4. I changed TYPEWRITER to PRE. My new motto is:
just describe it; don't prescribe it.
]PRE]
]FIG]

]REFS]



[47] [CODE(HTMLe)@en[[[fixed]]]] [[要素]]は[TIME[西暦1992年][1992]]頃の 
[[HTML]] の [[DTD]] に載っていました。


[51] 
>>47 これはどの [[DTD]] のことなのか確認できず。
[TIME[2024-08-30T08:46:18.400Z]]

[79] >>78 で発見。 >>47 はこれのことなのか?


[48] また
[[WorldWideWeb]] にも実装されていました。

[53] >>48 どうやら中途半端だったらしい [SRC[>>50]]。あるいはちゃんと実装されていた版もあるのだろうか?


[76] [CITE[interactive hypermedia]], [TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-09-29T09:30:22.423Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0124.html>

[77] >>76 [[インターネットメール]]によるコメント自動受付インターフェイスで受け取ったデータを
[CODE[fixed]]
で括るという[TIME[1992-11-27]]発表の計画。



[50] [CITE@en[Inside the Code — WorldWideWeb NeXT Application]], [[CERN]], [TIME[2020-12-14T20:30:11.000Z]], [TIME[2024-08-30T08:30:02.969Z]] <https://worldwideweb.cern.ch/code/>

>Our version of WorldWideWeb was missing code to apply styles to H4, H5, or H6, however by the time of Nexus, that code had been added. Likewise, PRE and FIXED appeared like normal text in WorldWideWeb but were correctly styled in Nexus. (FIXED was in the source code but the tag wasn't parsed—it was only associated with styling.)


[75] [CITE@en[WorldWideWeb/NextStep/Implementation/ParseHTML.h at master · cynthia/WorldWideWeb · GitHub]], [TIME[2024-08-30T15:24:01.000Z]] <https://github.com/cynthia/WorldWideWeb/blob/master/NextStep/Implementation/ParseHTML.h>



[49] のちの [CODE(HTMLe)@en[[[pre]]]] [[要素]]である。

[52] >>49 というのは間違いではないがちょっとニュアンスが違うっぽい。


[95] 
[[DanC]] が [[nroff]] [[man page]] に inspire された [SRC[>>133]] というのは何を言うのか。

>
[PRE[
I took the semantics of the PRE tag, added the WIDTH attribute, and
called it TYPEWRITER (inspired by the nroff man page). [SNIP[]]
]PRE]

とあって括弧が TYPEWRITER に掛かっているのか、 WIDTH 
にまで掛かっているのかどうにも不明瞭だが、 TYPEWRITER の方には掛かっていると見るのが妥当。

[96] 
現在見られる [[nroff]] の [[man]] はいくつかあって、いずれも本文中に typewriter-like devices
のようなことが書かれているが [SRC[>>86, >>87, >>88, >>89]]、
ここから[[要素名]]を決めるのかは疑問。

[97] >>91 の [CSECTION[Typefaces]] には、 Typeface として
Roman,
Sans Serif,
Typewriter,
troff special
の4種類のフォントに対して2文字の[[符号]]の割当を示した表がある。
これに近いものが [[DanC]] の見たものだろうか。

[98] ファイルに書くのはフォント名ではなく2文字の[[符号]]の方だが、
[[nroff]] から[[要素名]]を取ったのではなく inspired 
と言っているニュアンスもこういう事情だとすれば納得感がある。

- [86] [CITE@en[nroff - CS50 Manual Pages]], [TIME[2024-09-30T02:08:42.000Z]] <https://manual.cs50.io/1/nroff>
-- [[GNU]]
- [87] [CITE@en[Ubuntu Manpage: nroff - use groff to format documents for TTY devices]], [[Canonical]], [TIME[2024-09-30T02:09:50.000Z]] <https://manpages.ubuntu.com/manpages/focal/en/man1/nroff.1.html>
-- [[GNU]]
-- [92] [CITE@en[Ubuntu Manpage: groff - front-end for the groff document formatting system]], [[Canonical]], [TIME[2024-09-30T02:12:41.000Z]] <https://manpages.ubuntu.com/manpages/focal/en/man1/groff.1.html>
-- [93] 
[CITE@en[Ubuntu Manpage: groff - a short reference for the GNU roff language]], [[Canonical]], [TIME[2024-09-30T02:14:04.000Z]] <https://manpages.ubuntu.com/manpages/focal/en/man7/groff.7.html>
-- [94] 
[CITE@en[Ubuntu Manpage: groff_font - format of groff device and font description files]], [[Canonical]], [TIME[2024-09-30T02:14:40.000Z]] <https://manpages.ubuntu.com/manpages/focal/en/man5/groff_font.5.html>
- [88] [CITE[Manual Page - nroff (1b)]], [TIME[2008-04-07T18:42:04.000Z]], [TIME[2024-09-30T02:10:02.196Z]] <https://heirloom.sourceforge.net/doctools/nroff.1b.html>
-- [[BSD]]
- [89] [CITE[nroff Command]], [TIME[2000-01-13T21:33:16.000Z]], [TIME[2024-09-30T02:10:28.411Z]] <https://sites.ualberta.ca/dept/chemeng/AIX-43/share/man/info/C/a_doc_lib/cmds/aixcmds4/nroff.htm>
-- [[AIX]]
-- [90] [CITE[nroff or troff Input File Format]], [TIME[2000-01-13T21:25:50.000Z]], [TIME[2024-09-30T02:11:13.411Z]] <https://sites.ualberta.ca/dept/chemeng/AIX-43/share/man/info/C/a_doc_lib/files/aixfiles/nroff.htm>
-- [91] [CITE[troff Command]], [TIME[2000-01-13T21:34:03.000Z]], [TIME[2024-09-30T02:12:13.489Z]] <https://sites.ualberta.ca/dept/chemeng/AIX-43/share/man/info/C/a_doc_lib/cmds/aixcmds5/troff.htm>


;; [99] この時期 [[DanC]] は[[語句化内容]]等の [[HTML]] にない機能を他の言語から取ろうとしていろいろな記述形式を調査研究していたようです。
[SEE[ [[語句化内容]] ]]

[FIG(data)[ [72] [[HTML要素概説]]

:[F[要素名]]:[CODE[pre]]
:日付:[TIME[1992-11-21]]
:説明:
[TIME[1992-11-21]]に公開された
ScreenMode w3 interface,
manual page (man) 閲覧サーバー,
[[HTML]] 編集用 [[Microsoft Word]] マクロは、
[CODE[pre]]
を実装した。
[CODE[pre]]
は
[[Al Leurck]]
が開発したものだという。
:出典:
[REFS[

- 
[DFN[ScreenModeJim]]:
[CITE@en[ScreenMode binaries, man page reader, experimental server]], 
[DATA(.author)[[[Jim Whitescarver]]]],
[TIME(.published)[Sat, 21 Nov 92 17:32:08 est][1992-11-21T17:32:08-05:00]],
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T08:53:14.012Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0097.html>

]REFS]
:参照:[CODE[xmp]]
:参照:[CODE[listing]]

]FIG]

[FIG(data)[ [73] [[HTML要素概説]]

:[F[要素名]]:[CODE[pre]]
:[F[要素名]]:[CODE[fixed]]
:日付:[TIME[1992-11-24]]
:説明:
[TIME[1992-11-24]]、
[[Tim Berners‑Lee]]
は
[[www-talk]]
への投稿で、
[CODE[pre]]
への別案として
[CODE[fixed]]
を示した。
その後
[CODE[pre]],
[CODE[fixed]]
を別機能で共に追加する案も示した。
[SRC[>>100]]
:説明:
[[WorldWideWeb]]
は、
[CODE[pre]],
[CODE[fixed]]
を実装しかけていた。
その他にも、
[CODE[fixed]]
の実装意向などがあった。
[SRC[SW:pre]]
:出典:
[REFS[

- 
[100] 
[DFN[ScreenModeTim]]:
[CITE@en[Re: ScreenMode binaries, man page reader, experimental server]], 
[DATA(.author)[[[Tim Berners-Lee]]]],
[TIME(.published)[Tue, 24 Nov 92 11:19:44 +0100][1992-11-24T11:19:44+01:00]],
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-30T09:07:37.767Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0108.html>

]REFS]


]FIG]

[FIG(data)[ [74] [[HTML要素概説]]

:[F[要素名]]:[CODE[typewriter]]
:[F[要素名]]:[CODE[pre]]
:日付:[TIME[1992-11-30]]
:説明:
[TIME[1992-11-30]]、
[[HTML]] の仕様書と [[DTD]] に、
[CODE[typewriter]]
が追加された。
[SRC[HTML19921130]]
[SRC[HTML19921130:Complete]]
[CODE[pre]]
案をもとに [[nroff]] のドキュメントを参考に[[要素名]]を決めたという。
[SRC[HTML19921130]]
:説明:
[TIME[1992-12-04]]、
[[HTML]] の仕様書と [[DTD]] の
[CODE[typewriter]]
は、
[CODE[pre]]
に改称された。
[SRC[>>103]]
:出典:
[REFS[

- 
[101] 
[DFN[HTML19921130:Complete]]:
[CITE@en[HTML Guide: A Complete MarkUp Set]], 
[DATA(.author)[[[Dan Connolly]]]],
[TIME(.published)[1992-11-30T11:59:17.000Z]], [TIME[2024-08-30T09:46:49.283Z]] <https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Connolly/complete.html>
-
[102] 
[DFN[HTML19921130]]:
[CITE@en[An HTML specification and Implementors' Guide]], 
[DATA(.author)[[[Dan Connolly]]]],
[TIME(.published)[Mon, 30 Nov 92 07:27:01 CST][1992-11-30T07:27:01-06:00]],
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-09-29T14:14:20.340Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0123.html>
-
[103] 
[CITE@en[The spec evolves...]], 
[DATA(.author)[[[Dan Connolly]]]],
[TIME(.published)[Fri, 04 Dec 92 13:11:32 CST][1992-12-04T13:11:32-06:00]],
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-09-29T14:23:11.923Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0155.html>

]REFS]
:参照:[CODE[fixed]]

]FIG]

[FIG(data)[ [118] [[HTML要素概説]]

:[F[要素名]]:[CODE[pre]]
:日付:[TIME[1992-12-02]]
:説明:
[TIME[1992-12-02]]付の
[[Tim Berners‑Lee]]
のウェブページに新[[要素]]の構想がある。
現在の
[CODE[pre]]
に当たる。
:出典:
[REFS[

- 
[CITE[Future plans for HTML]], 
[DATA(.author)[[[Tim Berners-Lee]]]],
[TIME(.published)[1992-12-02T18:35:56.000Z]], [TIME[2024-08-12T09:20:27.147Z]] <https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Future.html>

]REFS]


]FIG]



[18]
[[libwww]]は1992年12月11日の1.1版で、当時の[[HTML]]仕様に追加されたばかりの[CODE(HTMLe)@en[[[pre]]]]を実装しました。

;; [CITE@en[Change History for W3C Sample Code Library]] 
<http://www.w3.org/Library/User/History.html#z4>


[FIG(data)[ [43] [[HTML要素概説]]

:[F[要素名]]:[CODE[pre]]
:日付:[TIME[1992-12-11]]
:説明:
[TIME[1992-12-11]]の 
[[libwww]] Version 1.1
は、
[CODE[pre]]
を実装した。
:出典:
[REFS[

- 
[CITE[Change History for W3C Sample Code Library]], 
[DATA(.author)[[[José Kahan]]]],
[TIME(.published)[2017/01/05 18:39:21][2017-01-05T18:39:22.000Z]], 
[TIME[2024-08-14T02:52:45.589Z]] <https://www.w3.org/Library/User/History.html>


]REFS]


]FIG]


-
[42] 
[CITE[Change history for NextStep WorldWideWeb]], 
[TIME(.published)[1992-11-25T15:08:01.000Z]], 
[TIME[2024-08-14T02:13:44.672Z]] <https://www.w3.org/History/19921103-hypertext/hypertext/WWW/NeXT/Implementation/Features.html>


[20]
[CITE[EMail Msg <9212141318.AA03936@www3.cern.ch>]] ([CODE[2007-07-02 21:30:38 +09:00]] 版) <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1992.messages/453.html>

[28] [CITE[WWWLibrary_1.1]]
( ([TIME[2003-08-10 20:15:53 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-talk/1992NovDec/0206.html>


[44] [CITE@ja[A Guide to the Internet Connection Servers - SG244805.PDF]], [TIME[2009-11-28T06:54:29.000Z]], [TIME[2024-08-18T13:22:08.975Z]] <http://ps-2.kev009.com/rs6000/redbook-cd/SG244805.PDF>


[45] >>44 [CODE[PR]] タグが解説されているけど説明がどう見ても [CODE[pre]]。
[CODE[pr]] が実装されていたとも思われず、ただの誤記だろうが...

** 00年代

[21]
[CITE@ja[コードは<pre>でマークアップするべき ...か? - Archiva]] ([TIME[2008-03-09 21:24:10 +09:00]] 版) <http://archiva.jp/web/html-css/sorce_pre_code.html>

[35] [[XHTML2]] は[[コード]]用の [CODE[blockcode]] [[要素]]を提案していました。
(後に [[HTML5]] で [CODE[pre]] [[要素]]と [CODE[code]]
[[要素]]を併用するべきであると決着しました。)

[36] [CODE[pre]] [[要素]]の「[[空白]]をそのまま表示する」という機能は[[表示]]目的であり、
[[意味]]を記述するべき [[HTML]] には不適切である、と主張する過激派もいました。

** HTML Standard

[27] [CITE@en[Web Applications 1.0 r5670     Update <br>'s bidi behavior to match WebKit and IE rather than Gecko and Opera.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10828]]
( ([TIME[2010-11-06 05:06:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5669&to=5670>

[29] [CITE[IRC logs: freenode / #whatwg / 20141022]]
( ([TIME[2014-10-23 01:36:55 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20141022#l-606>

[30] [CITE@en[Use HTMLPreElement for xmp and listing · whatwg/html@ca31ca2]]
([TIME[2016-04-25 17:08:37 +09:00]] 版)
<https://github.com/whatwg/html/commit/ca31ca2fa10f6205d65db7e81db122237036a736>

[34] [CITE@en[Don't serialize an extra LF in <pre>, <textarea>, <listing>]]
([[zcorpan]]著, [TIME[2016-09-24 18:47:14 +09:00]])
<https://github.com/whatwg/html/commit/2aa0000433f8c34263d29cee31bc95b1efdfef46>

[37] [CITE@en[Editorial: mark up code blocks with their language and <code>]]
([[Zirro]]著, [TIME[2018-07-24 05:11:25 +09:00]])
<https://github.com/whatwg/html/commit/a6e54621c0491ef633b0f3c4bd1f71fe72a722d8>

[38] [CITE@en[Put class=js on all <pre> elements in the spec that are JavaScript code examples · Issue #3753 · whatwg/html]]
([TIME[2018-07-26 16:55:21 +09:00]])
<https://github.com/whatwg/html/issues/3753>

[39] [CITE@en[Use <code> element inside the <pre> elements with code examples · Issue #3764 · whatwg/html]]
([TIME[2018-07-26 16:57:11 +09:00]])
<https://github.com/whatwg/html/issues/3764>

[40] [CITE@en[Add <code> element inside applicable <pre> elements by Zirro · Pull Request #3768 · whatwg/html]]
([TIME[2018-07-26 16:58:10 +09:00]])
<https://github.com/whatwg/html/pull/3768>