p

p 要素 (HTML)

[11] p 要素は、段落を表します。 HTML で最もよく用いられる要素の1つです。

仕様書

意味

[43] p 要素は、段落 (paragraph) 表現します >>7

[44] 逆にすべての段落p 要素によって表されるわけではありません
[45] HTML における段落は、日常語としての段落と少しニュアンスが違うところもあるかもしれません。 段落を参照。

[49] 他に適切な要素があれば、そちらを使うべきです >>7

[50] 例えば、

<!-- 悪い例 -->
<section>
 <!-- ... -->
 <p>Last modified: 2001-04-23</p>
 <p>Author: fred@example.com</p>
</section>
... は、
<section>
 <!-- ... -->
 <footer>Last modified: 2001-04-23</footer>
 <address>Author: fred@example.com</address>
</section>
... の方がより適切です >>7

[10] p 要素は、フロー内容かつ触知可能内容です >>7

タグ

[8] 開始タグは、必須です。

[9] 終了タグは、曖昧でなければ省略できます。

属性

[40] 大域属性を使うことができます >>7

内容

[37] 内容モデルは、語句内容です >>7

[38] テキストstrong 要素a 要素ruby 要素を含めることができます。

[39] section 要素ul 要素table 要素を含めることはできません。

[51] (日常語的意味の) 段落リストを含めたいこともありますが、 これは HTML では定義上1つの段落ではなく、いくつかの段落に分かれます。 例えば次のようにマーク付けできます >>7

<p>For instance, this fantastic sentence has bullets relating to</p>
<ul>
 <li>wizards,
 <li>faster-than-light travel, and
 <li>telepathy,
</ul>
<p>and is further discussed below.</p>

[52] もし全体を1つの要素にまとめたい時は、 p 要素ではなく、 div 要素 (など) を使うことができます。 例えば次のようにできます >>7

<div>For instance, this fantastic sentence has bullets relating to
<ul>
 <li>wizards,
 <li>faster-than-light travel, and
 <li>telepathy,
</ul>
and is further discussed below.</div>
[56] 歴史的には、 >>53 を参照。

文脈

[35] p 要素は、フロー内容なので、 フロー内容が使える場所で使うことができます >>7

[59] body 要素section 要素li 要素の中で使うことができます。

[60] h1 要素内や code 要素内では使えません。

HTMLParagraphElement インターフェイス (DOM)

[41] p 要素要素インターフェイスは、 HTMLParagraphElement インターフェイスです >>7

[42] HTMLParagraphElement インターフェイスは、 HTMLElement インターフェイス継承しています >>7文書環境に晒されています。

[58] 廃止されたIDL属性として align があります >>57

Webブラウザーは後方互換性のため実装する必要があります。

レンダリング

[46] 段落も参照。

[17] 段落の例 RFC 1866 5.5.1.

<H1>This Heading Precedes the Paragraph</H1>
<P>This is the text of the first paragraph.
<P>This is the text of the second paragraph. Although you do not
need to start paragraphs on new lines, maintaining this
convention facilitates document maintenance.</P>
<P>This is the text of a third paragraph.</P>

歴史

お尻 <p> から段落要素へ

[15] Toward Closure on HTML (1994年4月) <http://www.w3.org/MarkUp/html-spec/html-direction.html>Dan Connolly は、 p 要素についてこういっています。

  • なぜ TeX のように空行で段落区切りにせず、 <P> と書かないといけないのか?
    • 一つ、もう遅すぎる。
    • 二つ、みんながそれを望むのではない。 たとえば Dan はリストの途中なんかで気楽に空行を入れたいのだ。
    • 三つ、短縮参照を使うことにしたら SHORTREF 有効だから <em/強調/ なんかを認めないといけないから厄介。 (注: これは Dan の勘違い。 net とかは SHORTTAG で関係ない。だいたい、 (この時 Dan が見ていた SGML宣言がどれなのかよくわからないけど、) 1993年7月と書いてある HTML 1.0 draft の SGML 宣言には SHORTREF SGMLREF と思いっきり書いてある。)
  • p は段落分離子ではなく、段落包含子にしたい。
    • 段落の頭に <p> を置くように変えるだけ。
    • </p>OMITTAG を使えば省略できる。
    • そうすれば DTD もより綺麗になるし、もっと意味を成すし。

[24] EMail Msg <9308260107.AA23088@stat1.cc.ukans.edu> (2007-07-01 04:44:10 +09:00 版) <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q3.messages/774.html>

メモ

[1] mosaicNN では、p タグを連続させても1つ分の空行しかできませんでした。

[2] >>1 は現代的に言えば、既定スタイルp + p {margin-top: 0} とかいろいろ書いてあったとでも思えばいいでしょう。

[3] >>1-2 は別に HTML の規定ではなく、同時代のほかの WWWブラウザ, たとえば Arenap の数だけ空行を作りました。

[23] Toward Closure on HTML (1994-04-07 09:56:59 +09:00 版) <http://www.w3.org/People/Connolly/drafts/html-direction.html>

HTML4

[16] 仕様書:

[5] 段落とは何か。 HTML 4 HTML 4 9.3 曰く:

Authors traditionally divide their thoughts and arguments into sequences of paragraphs. The organization of information into paragraphs is not affected by how the paragraphs are presented: paragraphs that are double-justified contain the same thoughts as those that are left-justified.

著者は、伝統的に、自身の意思や主張を段落の連続体に分割します。 段落としての情報の組織化は、その段落がどう表現されるかには影響されません。 両端揃えの段落は、左揃えの段落と同じ意見を含んでいます。

[36] DTD では %block; に含まれていて、 それを内容モデルに含めている場所で使うことができるとされていました。

[4] p 要素は、 (歴史的理由により、) 行内要素しか内容に含めることができません。 p 要素型自体を含めることも、もちろんできません。

[13] HTML 4 は、

  • 著者が空の p 要素を使うことは非推奨 (discourage)
  • UA は空の p 要素は無視するべき (should)
としています。

[14] HTML 4 は、Visual rendering of paragraphs (参考) <http://www.w3.org/TR/html4/struct/text.html#idx-paragraph> で、 段落のレンダリングについて言及しています。 (HTML 4 のこの章の説明自体は特に p 要素に限定したものではなく、 一般に文内容についての考察でしょう。)

概略:

次に述べるのは、現在の幾つかの視覚UA の動作についてである。

  • スタイルシートを使えば、段落の書式付けをよりよく制御できる。 RFC 1866 5.5.1., HTML 4
  • 段落は通常 (lr では) 左を揃え、 右はぎざぎざにレンダリングされる。 HTML 4
  • 段落は伝統的に前後に空白(行)を置いてレンダリングされる。 RFC 1866 5.5.1., HTML 4
    • 半行から1行くらい RFC 1866 5.5.1.
    • これとは異なり、小説なんかだと段落間は特に空けずに、 段落の最初の行を字下げする。 HTML 4
  • 典型レンダリングでは最初の行を字下げすることもある RFC 1866 5.5.1.
  • 1993年の NCSA Mosaic 以来の慣習で、普通は両余白を揃えない。 ちゃんとしたハイフン付けをしないとこれをするのは難しいのだ。 HTML 4
  • スタイルシートとか、部分画素 (subpixel) 配置によってアンチエイリアスしたフォントとか、 以前よりも著者の選択肢は豊かになっている。 HTML 4
  • スタイルシートで文字の大きさ、フォントの様式、余白、段落前後の間隔、 最初の行の字下げ、端揃えその他の詳細な制御ができる。 RFC 1866 5.5.1., HTML 4
    • UA の既定スタイルは前述のようになっている。 HTML 4
    • やろうと思えば段落境界が分からないような感じにもできるが、 混乱の元であるからにして非推奨 (discourage) HTML 4
  • [65] 視覚UA余白に合わせてを折り返す。 HTML 4
    • 折り返しの算法は用字系に依存する。
    • 西洋用字系では、文は空白をもってのみ折り返すべき (should)
      • 初期の UA は誤って何かの要素の開始タグ直後や終了タグ直前でも折り返していたから、 終了タグの直後に読点があるような場合に変ちくりんなことになっていた。

[21] HTML 4: <IW:HTML4:"struct/text.html#h-9.3"> には

The P element represents a paragraph.

とは書いてあるけど、段落p で表される/表されなければならないとは書いてない。

もっとも、こんなことも書いてあるから段落p しかないと解釈できなくもない。

The HTML markup for defining a paragraph is straightforward: the P element defines a paragraph.

HTML 5 では p 以外にも段落を表す要素があるし、 いわゆる段落より広い範囲のものを p で表すことになっている。

(名無しさん)

[22] HTML 4: <IW:HTML4:"struct/text.html#h-9.3"> には

The P element represents a paragraph.

とは書いてあるけど、段落p で表される/表されなければならないとは書いてない。

もっとも、こんなことも書いてあるから段落p しかないと解釈できなくもない。

The HTML markup for defining a paragraph is straightforward: the P element defines a paragraph.

HTML 5 では p 以外にも段落を表す要素があるし、 いわゆる段落より広い範囲のものを p で表すことになっている。

不思議解釈

[18] brは1改行、pは2改行?

特定の実装の挙動を根拠に、 br改行1つ分、 p改行2つ分だとする誤った解釈が古今東西広く流布されています。

[19] pは段落ではない?

HTML 4p要素子供としてul要素等を入れられない問題がよく取り上げられていますが、 それを日本語英語の文法的・文章的構造の違いに拠るものだとする主張が後を絶ちません。 果てには日本語段落英語パラグラフはまったく別概念であり、段落pで表せないという珍説まで発表されています (パラグラフ非段落説)。しかし、 日本語英語における違いについて (HTML 4の規定以外の) 根拠を挙げた主張は寡聞にして見たことがありません。

HTMLフラットでリニアな構造なのは他書式との互換性のための歴史的制約に過ぎず (TimBL自身の発言他、軽く調べるだけですぐわかること。)、 この制約への不満は英語圏からも古くからあるもので、 HTML 5XHTML 2では撤廃されています。

[20] object hack

>>19 で取り上げられている制約を回避するための方法が幾つも検討されており、 その候補の一つがobject hackで、 歴史的に何度も再発見されています。 詳しくはobject hackの項を参照してください。

ブロック水準要素の包含可能化

[53] 歴史的に HTMLp 要素 (のタグ) は改段落とみなされていました。ワープロなども、 「段落」、「リスト項目」、「見出し」等を排他的なテキストブロックの属性として扱うのが普通でした。 (これをフラットでリニアな構造などと言うこともあります。)

[54] 後にスクリプトスタイルシート要素単位で操作することが増え、 これでは都合が悪いこともあると認識されるようになりました。 XHTML2XHTML5 は市場の要求に応えて p 要素内でのブロック水準要素の利用を解禁しました。

[55] ところが HTML5後方互換性のため p 要素内容の制約を緩和できませんでした。 XHTML の失敗が明白になり、 HTMLXHTML の整合性がより重要と考えられるようになると、 p 要素内容は旧来の規定に戻され、 段落に関する解釈もそれに合わせて整理されました。

[28] XHTML2 の最初の作業原案では、 p 要素blokckquoteul など他のブロック水準要素を含められる内容モデルに改められていました。

[29] HTML5 (旧 Web Applications 1.0) も当初は p 要素は他のブロック水準要素を含められる内容モデルとしてきました。 しかし、 XHTML でない HTML は既存の実装や文書との互換性のために変更しがたく (ブロック水準要素開始タグが現れると構文解析器p 要素終了タグを補うこととなっています。)、 HTMLXHTML の差異を不用意に拡大するのも好ましくないとの設計方針から、 従来通り他のブロック水準要素は含められない内容モデルに戻されました。

HTML5

[48] Web Applications 1.0 r6887 Add a big example to <p> to help authors who want to use logical paragraphs rather than structural ones. ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=6886&to=6887>

[47] [whatwg] Interpretation issue: can <section> be used for "extended paragraphs"? ( 版) <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-January/034337.html>

[25] HTML5 IRC logs: freenode / #whatwg / 20071220 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20071220#l-231>

[26] SMIL 3.0 smilText ( 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-text.html#edef-textP>

[27] p要素の終了タグを省略する際の注意点 (agenda) ( 版) <http://jintrick.net/agenda/2008/12/p.html>

[30] Speech Synthesis Markup Language (SSML) Version 1.1 ( ( 版)) <http://www.w3.org/TR/2010/REC-speech-synthesis11-20100907/#edef_paragraph>

[31] IRC logs: freenode / #whatwg / 20100913 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20100913>

[32] IRC logs: freenode / #whatwg / 20100930 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20100930>

[33] [whatwg] Interpretation issue: can <section> be used for "extended paragraphs"? ( 版) <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-June/032030.html>

[34] Web Applications 1.0 r8841 Fix the conditions for </p> omission ( ( 版)) <https://html5.org/r/8841>

[6] OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema ( 版) <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#a5_1_3_text_p_>

The <text:p> element represents a paragraph

[61] Disallow omitting </p> inside an autonomous custom element ( (domenic著, )) <https://github.com/whatwg/html/commit/002ea53e1da8e5683801f42109d9338153acb932>

[62] 私家版 ジャーゴンファイル () <http://metanest.jp/myjargon/myjargon.html>

段落。昔、HTML の普及期の頃、ダメな HTML 入門の見わけかたのひとつに、「改行は br タグ、改段落は p タグ」という説明をしてあるものはダメ、というのがあった。p は段落の開始と終了にそれぞれ開始タグ終了タグとするのが正しいわけで。

[63] Schematron にも段落p 要素があります。

[64] Toward Closure on HTML () <https://www.w3.org/People/Connolly/drafts/html-direction.html>