Как семантически пометить текст стихотворения?

Что использовать для стихотворения?

  • pre
  • blockquote
  • code
  • что-то другое?

person Pavel Binar    schedule 06.02.2013    source источник
comment
Похоже, это скорее вопрос этикета ...   -  person JayC    schedule 06.02.2013
comment
это может быть интересно: w3.org/html/wg/wiki/PoeticSemantics. См. Также: w3.org/html/wg/ drafts / html / master / grouping-content.html   -  person steveax    schedule 06.02.2013


Ответы (2)


Не используйте code (если только компьютерный код является частью стихотворения). Не используйте blockquote (если вы не цитируете Стихотворение).

пробелы / разрывы строк: pre или br

Вы можете использовать pre element. В спецификации дан (информативный) пример:

Ниже показано современное стихотворение, в котором используется элемент pre, чтобы сохранить свое необычное форматирование, которое составляет неотъемлемую часть самого стихотворения.

<pre>                maxling

it is with a          heart
               heavy

that i admit loss of a feline
        so           loved

a friend lost to the
        unknown
                                (night)

~cdr 11dec07</pre>

Однако я бы использовал элемент pre только в том случае, если стихотворение содержит «больше», чем просто значимые разрывы строк (например, в этом примере горизонтальные пробелы имеют значение).

Если у вас есть простое стихотворение, я бы выбрал br элемент:

br элементы должны использоваться только для разрывов строк, которые фактически являются частью содержания, например, в стихах или адресах.

контейнер: p

Для большинства стихотворений p элемент является правильный кандидат (или, конечно, несколько p элементов). В спецификации есть (информативный) пример:

<p>There was once an example from Femley,<br>
Whose markup was of dubious quality.<br>
The validator complained,<br>
So the author was pained,<br>
To move the error from the markup to the rhyming.</p>

Также:

Например, адрес также является абзацем, как часть формы, подписи или строфы в стихотворении.

структура: (article, figure)

В зависимости от контекста (содержание, структура страницы,…) может быть подходящим элемент секционирования (_ 16_ в большинстве случаев).

Также в зависимости от контекста figure element может быть уместным:

Здесь часть стихотворения помечена знаком figure.

<figure>
 <p>'Twas brillig, and the slithy toves<br>
 Did gyre and gimble in the wabe;<br>
 All mimsy were the borogoves,<br>
 And the mome raths outgrabe.</p>
 <figcaption><cite>Jabberwocky</cite> (first verse). Lewis Carroll, 1832-98</figcaption>
</figure>

Но не используйте их в целом для всех стихотворений, это действительно зависит от страницы, правильность их использования.

разное и мелочи

person unor    schedule 07.02.2013

Я искал ту же информацию и, аналогично, не нашел никаких окончательных «лучших практик», поэтому я решил, что мне просто нужно придумать свой собственный метод. Тег <p> действительно имеет смысл в качестве маркера строфы с линиями, разделенными на <br>s, в соответствии со спецификацией - НО я обнаружил, что этот стиль разметки не обеспечивает достаточной гибкости.

В частности, я хотел контролировать отступы. Например, если линия слишком широкая для ширины текстового столбца, она не должна просто разрываться: ее продолжение должно иметь отступ. Этот висячий отступ может быть достигнут только (насколько мне известно), если каждая строка является отдельным элементом блока. Итак, в моем случае я сделал каждую стихотворную строку <p> с классом (скажем, «поэтическая строка»). Тогда я могу использовать следующий CSS:

.poetry-line {
    text-indent: -2em;
    margin-left: 2em;
}

В другом примере в стихотворении, которое я размещал, были отступы каждой второй строки с некоторыми неровностями в концах строф. Я не мог добиться такого эффекта, если между строками было всего <br> секунд. Мне пришлось создать новый класс для «строки с отступом» и применить его вручную.

Я просто делюсь своим опытом. Я предполагаю, что я предлагаю вам использовать элемент уровня блока для каждой строки для целей форматирования. Это может быть <p>, или я думаю, вы могли бы использовать CSS, чтобы установить <span> "display" на "block". В любом случае, я думаю, что пример спецификации с <br>s между строками не будет работать для большинства стихов: каждая строка должна быть отдельным элементом.

person davidtheclark    schedule 16.04.2013
comment
В итоге я пришел к тому же выводу, что и вы, @davidtheclark. Я не думаю, что использование тегов ‹p› с ‹br› s позволяет правильно обрабатывать отступы. - person jdg; 07.10.2018
comment
Вопрос об отступе после перерывов задавался здесь. Очевидно, как минимум с 2012 года CSS 3 предлагает ключевое слово each-line для этого самого варианта использования с text-indent. Вы скажете, например, text-indent: -2em each-line;. Но по состоянию на 2021 год ни один браузер не реализовал это . Кто-то не думает о легком вкладе в программное обеспечение с открытым исходным кодом? - person Maëlan; 29.04.2021