Стиль Хьюго Поэма

Я хочу показать стихи с Хьюго.

Файл содержимого:

So some text
with some rhyme

and another strophe
enter code here

Я хочу, чтобы это отображалось именно с этими новыми строками.


Что произойдет, если просто использовать .Content? Строки в одной строфе не получают новой строки.


Что произойдет, если сделать там новую строку? {{ (replace .Content "\n" "<br/>") | safeHTML}}? Четыре новых строки между строфами.


Теперь я в замешательстве. Мне интересно, как трудно вернуть исходные новые строки.

На самом деле я борюсь с процессором уценки. Разве я не могу просто сказать: «Нет, не уценивайте это?»


person Asqiir    schedule 24.02.2018    source источник


Ответы (3)


Начиная с версии Hugo 0.60.0 для рендеринга уценки используется библиотека Goldmark, совместимая с CommonMark. Если вы хотите отображать жесткий разрыв строки, вы можете использовать два или более пробелы или обратную косую черту в конце строки.

Вход:

So some text\
with some rhyme

and another strophe\
enter code here

Выход:

<p>So some text<br>with some rhyme</p>
<p>and another strophe<br>enter code here</p>
person thegumbyman    schedule 21.08.2020

Учитывая, что в этом ответе также используется Markdown, вот один из способов сделать это:

<p>So some text<br>
with some rhyme<br>
<br>
and another strophe<br>
enter code here</p>

Вы можете поместить общий HTML в документ Markdown, и он будет отображаться как есть:

Итак, текст
с рифмой

и еще одна строфа
введите здесь код

person jonrsharpe    schedule 24.02.2018
comment
Я предпочитаю этого не делать — по понятным причинам. Ошибки при добавлении контента вызовут проблемы. Я не хочу делать что-то вручную, если я могу сделать это автоматически. - person Asqiir; 24.02.2018

Есть несколько решений. Вы можете использовать собственные разрывы строк Markdown, необработанный HTML или кодовый блок.

Разрывы строк уценки

Самое простое решение — использовать разрывы строк (два пробела в конце строки) создать разрыв строки).

В следующем примере пробелы заменены точками в демонстрационных целях:

So·some·text··
with·some·rhyme

and·another·strophe··
enter·code·here

Что генерирует следующий HTML-код (почти идентичный предложенному исходному HTML-коду другого ответа)

<p>So some text<br>
with some rhyme</p>
<p>and another strophe<br>
enter code here</p>

и отображается как

Итак, немного текста
с рифмой

и еще одна строка
введите здесь код

Конечно, если в вашем редакторе нет возможности отображать пробелы, вы не сможете увидеть эти конечные пробелы, и редактирование документов, которые должны их содержать, может раздражать.

Необработанный HTML

Часто бывает полезно подумать о том, какой HTML вы хотите, чтобы Markdown вывел, прежде чем решить, какую структуру Markdown использовать для форматирования некоторого текста. В этом случае интересно взглянуть на pre тег. Спецификация HTML5 описывает этот тег следующим образом:

Элемент <pre> представляет блок предварительно отформатированного текста, в котором структура представлена ​​типографскими соглашениями, а не элементами.

А затем приводит Пример 12:

Ниже показано современное стихотворение, в котором используется элемент 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 кажется хорошим кандидатом для разметки стихотворения. Вы можете форматировать обычный текст, как хотите, и он заключен в тег pre, форматирование простого текста сохраняется.

Конечно, в Markdown нет механизма для создания тегов pre, которые не включают также дочерний тег code (блоки кода Markdown). И как указано в исходных правилах Markdown:

Для любой разметки, на которую не распространяется синтаксис Markdown, вы просто используете сам HTML. Нет необходимости предварять его или разделять, чтобы указать, что вы переключаетесь с Markdown на HTML; вы просто используете теги.

Учитывая вышеизложенное, «правильный» способ написать стихотворение с необычным форматированием — это использовать необработанный HTML-тег pre.

<pre>So some text
with some rhyme

and another strophe
enter code here</pre>

который отображается как:

So some text 
with some rhyme

and another strophe 
enter code here

Кодовый блок

Однако, если вы хотите использовать только поддерживаемый синтаксис Markdown и меньше заботитесь о семантике сгенерированного HTML, тогда Markdown кодовый блок подойдет. Хотя «элемент code представляет собой фрагмент компьютерного кода», не существует правил, определяющих, как должны отображаться элементы code. Конечно, некоторые сайты могут применять некоторые правила CSS к code элементам, так что вам может понадобиться знать об этом, но когда вы можете полностью контролировать (возможно, на своем собственном сайте), это может не быть проблемой.

Вот простой блок кода, такой же, как и в исходном вопросе:

    So some text
    with some rhyme

    and another strophe
    enter code here

Что вы уже знаете, отображается как:

So some text
with some rhyme

and another strophe
enter code here
person Waylan    schedule 26.02.2018