chuui
@chuui (e chuui)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Markdown文書で良く見かけるこの箇条書きの記述は文法エラーじゃないですか?

Qiita等で投稿されている文書では、markdownの箇条書きの周辺にて、文章の文法としてエラーになっていそうな書き方を多く見かけます。タイトルには、文法エラーと書きましたが、どちらかというと構造エラーの類になるかと思います。
具体的には以下に紹介しますが、「意図は分かるけどmarkdown文書的に正しくない書き方ではないか」と思うのです。

はじめに ~ この質問の背景と狙い

この質問では、文書において「箇条書きとは、文法的にどういう意味を持つのか?」という点を知りたいと思っています。ここでは、文学的な文書でなく技術的な文書に限定した話とします。

ここでいう箇条書きの「文法」というのは、例えば、HTMLやmarkdown等各種マークアップをレンダリングされる場合にどのように解釈されるかという点です。もっといえば、「日本語文書の書き方として、箇条書きは、どういう文法要素なのか」、という点を知りたいです。

具体例

例えば、次のような使い方をよくみかけますが、これって、文書の構造的にエラーじゃないかと思うのです。

例1:

---
これは
・A
・B
・C
の3つの利点を持ちます。
---

エラーでない書き方は次だと思うのです。

例2:

---
これは次の3つの利点を持ちます。
・A
・B
・C
---

例3:

---
This has thee following advantages.
・A
・B
・C
---

例4:

---
This has thee advantages as follows:
・A
・B
・C
---

なぜ エラーと思うか?

例1を構造的にエラーだと思う理由は、箇条書き要素(htmlの<ul>要素)は、段落要素(htmlの<p>要素) と同列の要素であるからです。
例1 の文章の構造を、ツリー形式で表すと次のとおりです

      body要素
        + p要素   として  「これは」
        + ul要素  として  「・A」「・B」「・C」
        + p要素   として  「の3つの利点を持ちます。」

例1のような文章を書いた人は、上のようなツリー構造になっているとは思っていなかったと思います。つまり、意図と異なる文法で記述してしまっているのです。 つまりエラーです。(厳密には文法エラーでなく、文法上はパスするが文章構造の記述にバグがある。)

質問

以上を踏まえ、質問をまとめると次になります。

質問1:

フォーマルな論文や書籍では、例1 のような表現はNGではないでしょうか?
もし、校正屋が例1のような書き方を見つけたとしたら、例2の型式に変更するものだと思いますが、いかがでしょうか?

質問2:

(追記: HTML5の規格では <p>は 入れ子の構造にはできない。他のブロック要素<ul><p>で閉じられるため。誤った記述であり混乱を避けるため、この質問2は以下のように取消表示とします。)

それでも 例1 の文章構造を表現したい場合、
html ならば、<ul>要素を<p>要素の内部に構成することができます。


<p> これは <ul><li>A</il><li>B</il></ul> です。</p>

しかし、 markdown で、この表現は可能でしょうか?
(reStructuredTextならば、空行+インデントで子要素を表現できるので可能。 (→ 追記: どちらかというと</p>で閉じられた後 <blockquote> で表現される。))
また、epub やその他のフォーマットで、表現可能でしょうか?

質問3:

階層構造の段落、つまり、段落の中に段落をもつ、という構造は、文書として一般的に用いられるものでしょうか?

  • たとえば、htmlで表すと、次になります。
    • <p>これは親段落です。<p>これは子段落です。<p>さらに孫段落です。</p></p></p> → (追記: HTML5では <p>は 入れ子の構造にはできない。他のブロック要素<ul><p>で自動的に閉じられるため。)

たとえば、本屋にある文庫本などでは、このの形式で書かれている箇所は簡単には見つかりません。

質問の意図:

質問の意図は、箇条書きのレンダリングのプログラムが作れれば良いというものではありません。どちらかというと「文書の書き方」について知りたいと思っています。Qiitaの記事なら意味が分かれば何でもOKと思いますが、よりフォーマルな文書における書き方について知りたいです。
またここから発展して、「日本語または自然言語全般の文書の構造」、「言語学の生成文法」などの観点で、見解を得ることができたらありがたいと考えています。

よろしくお願いします。

1

質問1に関して

技術文書であれ文学的な文書であれ、段落の扱いにそこまで統一された見解があるとは思えません。そもそも日本語文書なら段落には形式段落と意味段落という分類がありますが、HTMLの p 要素で両方扱うことはできませんし。

形式段落の話をするのなら、

 湯婆婆は、
「フン。千尋というのかい?」
 と言った。

という文章は、3つの形式段落に分かれます。あなたの言うように箇条書きで段落が分かれることをNGとする場合、このような記述もNGとしなければいけないのではないでしょうか(形式段落の話を~からのこの文章自体も同じ構造ですね)

質問2に関して

html ならば、<ul>要素を<p>要素の内部に構成することができます。

<p> これは <ul><li>A</il><li>B</il></ul> です。</p>

しかし、 markdown で、この表現は可能でしょうか?

HTMLでも不可能です。
なぜなら、ul要素はブロックレベル要素ですが、p要素には他のブロックレベル要素が現れたら閉じられるという性質があるからです。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/p

borderでも付けてみると分かりやすいです。

See the Pen oNLJjOR by 白山風露 (@kazatsuyu) on CodePen.

XHTMLではXMLとしてパースするのでpの内部にulを入れることは不可能ではありませんが。

質問3に関して

一般的な日本語文書において、意味段落と形式段落があり、意味段落は複数の形式段落を包含するものなのですから、段落が入れ子になるという構造は非常に一般的です。

ただし、HTMLのp要素でそれを表現することはできません。上述したようにpはブロックレベル要素が現れた時点で閉じられますが、p自身がブロックレベル要素なので、pの中にpを入れ子にする文書はHTMLでは書けないためです。

5Like

質問1に関して

例1
これは
・A
・B
・C
の3つの利点を持ちます。

このように出力されているのを見ると、大多数の人は

  • 「これ~持ちます。」全体が、箇条書きを中に含む一つの(文章構成上の)段落である。
  • 一方で「これは」や「の~持ちます。」は(文章構成上の)段落ではない。

と解釈するでしょう。書いた人の意図もこれと一致するでしょう。だから、「意図と記法が一致しない」ことにはならないはずです。ここで本来無関係なHTMLやMarkdownの理屈を持ち出すことには妥当ではなく、「一般の日本語・英語の文章構造表現に関する慣習(もちろん『規格』は存在しないので『慣習』です)」に基づいて考えるべきだと思います。(「HTMLやMarkdownの理屈」については後述します。)

自分は校正や文章作成指導の専門家ではないので確証はもてませんが、このような「箇条書きを中に含む段落」はフォーマルな文章でも普通に用いられるものであり、特に「悪いスタイル」であるとは扱われていないと思います。(個人的にこれを嫌う人は見かけますが。)実際、文章作成指導の文献を読むと、その文章の中に「箇条書きを中に含む段落」が使われていることもあります。

質問2関して

HTML5での扱い

例1の「(文章構成上の)段落」はHTML5では次のコードで表すことができます。

例2
<p>これは</p>
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
<p>の3つの利点を持ちます。</p>

一見、(文章構成上の)段落ではない「これは」を1つのp要素で表すのはおかしいと思えますが、実際はこれで正当です。なぜなら、HTML5においては

  • HTML5が規定する段落
  • (文章構成上の)段落
  • p要素

は明確に区別される別の概念であるからです。HTML5規格の「4.4.1 The p element」の2つ目のNoteをみてください。

つまり例2において「これは」と「の~持ちます。」は「文章構成上の段落」ではないが「HTML5の段落」であり、かつ「p要素」でもある、ということになります。

Noteの記述に従うと、例1の段落は次のコードでも表すことができます。

例3
<div>これは
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
の3つの利点を持ちます。</div>

例3のコードでは「これは」と「の~持ちます。」は「p要素」ではないですがそれでも「HTML5の段落」であることに注意してください。

所感

既に @kazatsuyu さんが指摘しているように、「(文章構成上の)段落」を1つのp要素で表そうとした以下の例は不正です。

例4(不正)
<p>これは
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
の3つの利点を持ちます。</p>

これはHTML5の規則において「p要素はul要素を含められない」と決まっているからです。従って、もし仮に「p要素」を「(文章構成上の)段落」に一致するものだと定めてしまうと、例1のような(よく使われる)書き方の段落がHTMLで表せないことになってしまいます。実際に、HTML4においては両者の「段落」が一致するかの規定が曖昧で「例1の段落がHTMLで表せるのか否か」が不明瞭でした。

HTML5において「段落」について複雑な定義を採用しているのは「例1の段落が表せない」という不便を避けるためだったと自分は推測しています。

いずれにしても、「HTML5の段落」や「p要素」は「(文章構成上の)段落」とは明示的に異なるため、これを根拠にして文書作成の作法を語るのは的外れだと感じます。

6Like

質問主です。
まずは、HTMLについての知見をいただいたこと、お礼申し上げます。

  • <P>は、他のブロック要素を含めることはできない。

    • </p> で閉じる前に他のブロックレベル要素(<UL><P>)が見つかった場合は自動的に閉じる
  • つまり、<P>要素は、入れ子構造にできない。

後で見た人がHTMLの誤った使用方法を見て混乱しないように、該当する部分は打消し表示にしました。(追記と書いています。)

他の部分はもう少し吟味させていただきます。

0Like

Your answer might help someone💌