html: Sollte <code> in einen Absatz eingefügt werden?


9

Markdown erstellt eine Ausgabe wie folgt:

<p>see this example:</p>
<pre><code>code</code></pre>

Ist das richtig oder sollte es sein:

<p>see this example
<pre><code>code</code></pre>
</p>

Für mich scheint der zweite richtig zu sein, da der Absatz und das Codebeispiel eine Einheit bilden. Was denkst du darüber?

edit: eigentlich könnte ich das gleiche über eine liste streiten (zB "bestelle eine der folgenden:"), aber eine liste kann nicht mit einem absatz platziert werden.

edit2: Zur Verdeutlichung sind beide technisch korrekt, da ein tabellenbasiertes Layout technisch möglich ist. Aber was würden Sie argumentieren, ist die Art und Weise, wie die Absicht der Tags in einem Absatz wie diesem am besten ausgedrückt wird? Oder ist es vielleicht egal? Beachten Sie, dass das Pre-Element hier nicht sehr relevant ist (aber enthalten ist, weil Markdown es auch ausgibt).


Bitte klären Sie Ihre Frage. Sie sagen, Sie fragen nach dem codeElement, aber in Ihren Beispielen geht es tatsächlich um Code in preBlöcken. Es gibt zwei völlig voneinander unabhängige Möglichkeiten , diese Dinge zu produzieren, und von uns nicht zeigt die ursprünglichen Markdown Sie verwenden oder uns Ihre Erwartungen zu sagen, es ist schwer zu sehen , was das eigentliche Problem ist (wenn es ist eins). Kennen Sie den Markdown für die Erstellung eines Inline- codeSnippets einfach nicht ?
'13.

@ Su 'danke für den Hinweis auf die Verwirrung. Du hast es aktualisiert und hoffentlich ist es jetzt klarer.
Koen

Ich bin gespannt, warum Sie akzeptieren, dass eine Liste nicht in einen Absatz eingefügt werden kann. Das ist genau die gleiche Einschränkung wie beim Pre-Tag. Warum fragst du den einen und nicht den anderen? (Das Pre-Tag ist übrigens relevant, was Teil der Verwirrung ist. Es ist von Natur aus eine andere Sache. Umgekehrt, wie Sie das Pre nicht in p setzen können, können Sie kein Blockelement code außerhalb setzen .)
Su '

@su 'Ein Absatz akzeptiert nur Inline-Elemente. Eine Liste ist Blockebene. Daher ist eine Liste innerhalb eines Blocks technisch falsch.
Koen

Antworten:


7

Wie John sagte, codeist ein Inline-Element und kann in Absätzen platziert werden. (Nicht unbedingt sollte ; es gibt viele andere Orte, an denen es auch erlaubt ist.) Entweder Ihr Titel oder die obigen Beispiele sind falsch, daher werde ich beide möglichen Fälle behandeln und Grubers Dokumente stehlen.

Zur Herstellung eines Codeblocks erfordert , die ein Blockelement ist und nicht in einem erlaubt Tag. Verwenden Sie den folgenden Markdown:prep

This is a normal paragraph:

    This is a code block.

... was ausgegeben wird:

<p>This is a normal paragraph:</p>
<pre><code>This is a code block.</code></pre>

wie du oben gezeigt hast.
Markdown ist dabei richtig; Der Absatz und der Code sind verwandt, aber sie sind keine Einheit. (Aber wie ich in meinem obigen Kommentar sagte, bin ich mir nicht sicher, ob Sie dies tatsächlich versuchen .)

 

Um ein Inline-Codeelement zu erstellen , sollten Sie den folgenden Markdown verwenden:

Use the `printf()` function.

... was ausgegeben wird:

<p>Use the <code>printf()</code> function.</p>

"Der Absatz und der Code sind verwandt, aber sie sind keine Einheit". Obwohl sie möglicherweise keine Einheit sind, sind sie nicht verwandt genug, um ihren Ausdruck im selben Absatz zu haben? Würden Sie sie in einem gedruckten Buch nicht als einen Absatz verstehen? Oder würden Sie den Code einfügen, wenn Sie gebeten würden, den gesamten Absatz beginnend mit "Dies ist normal" zu zitieren?
Koen

@koen Nein, ich würde sie nicht als einen einzigen Absatz sehen. Es wäre ein Absatz, gefolgt von einem Codeblock. Code ist nicht "Text". Wenn ich gebeten würde, den gesamten obigen Teil zu zitieren, würde ich sie in ein Blockzitat stecken, immer noch separat. Sofern dies keine rein theoretische Diskussion ist, ist nichts davon von Bedeutung. Die Spezifikation besagt, dass das prenicht im Inneren verschachtelt werden kann, pund das ist Ihre Antwort, es sei denn, Sie möchten Ihre Dokumente mit einer benutzerdefinierten DTD verknüpfen, von der im Allgemeinen abgeraten wird .
'13.

9

Laut w3c <code> handelt es sich um ein Inline-Element, so dass es innerhalb eines <p>Elements platziert werden kann .

Zu Ihrer Information, Ihr <pre>Tag ist redundant. Die meisten Benutzeragenten zeigen Inhalte nicht nur so an, als ob sie in einen <pre>Zeilenumbruch (z. B. ohne Zeilenumbruch und Monospace-Typ) eingeschlossen wären, sondern Sie sollten auch CSS verwenden, um die Darstellung von <code>Elementen zu steuern .


3

Und die HTML5-Terminologie lautet:

Da codedie Kategorien "Phrasierungsinhalt" enthalten, codekönnen sie eingefügt werden p.

Siehe auch: /programming/9852312/list-of-html5-elements-that-can-be-nested-inside-p-element

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.