Pandoc: без переноса строк при преобразовании в HTML

Я конвертирую из Markdown в HTML вот так:

pandoc --columns=70 --mathjax -f markdown input.pdc -t html -Ss > out.html

Все работает нормально, за исключением того, что текст не переносится. Я пробовал разные длины столбцов, безрезультатно. Убрал опции, не идет. Что бы я ни пробовал, HTML просто не упаковывается. Я ищу в системе отслеживания ошибок, но, похоже, нет открытых ошибок, связанных с этой проблемой. Я также проверил документацию, но, насколько я понял, текст должен быть перенесен на новую строку... Итак, я наткнулся на ошибку?

Я использую pandoc версии 1.12.4.2.

Заранее спасибо за помощь!


person wmnorth    schedule 28.06.2014    source источник


Ответы (2)


Pandoc помещает новые строки в HTML, чтобы исходный код было легче читать. По умолчанию он не вставляет <br>-теги.

Если вы хотите сохранить разрывы строк при вводе уценки:

pandoc -f markdown+hard_line_breaks input.md output.html

Однако, как правило, лучший подход к ограничению ширины текста при открытии HTML-файла в браузере — это адаптировать HTML template (pandoc -D html5) и добавьте CSS, например:

<!DOCTYPE html>
<html$if(lang)$ lang="$lang$"$endif$>
<head>
  <style>
  body {
     width: 46em;
  }
  </style>
...
person mb21    schedule 30.06.2014
comment
С огромным извинением за задержку, если это так, то я еще раз спрашиваю: для чего годится вариант --columns?? - person wmnorth; 08.08.2014
comment
Параметр --columns определяет количество символов в строке исходного кода. В HTML разрывы строк в исходном коде не влияют на то, как текст отображается в браузер. Вместо этого вы можете использовать теги <br> для разрывов строк, но лучше использовать CSS для описания того, как отображается содержимое (как я сделал в своем ответе внутри тегов style). См., например, codecademy.com/en/tracks/web. - person mb21; 08.08.2014
comment
(откройте полученный HTML-файл в обычном текстовом редакторе, таком как Sublime, чтобы увидеть эффект различных параметров --columns) - person mb21; 08.08.2014
comment
Хорошо, это объясняет... но я бы не так интерпретировал README от pandoc... - person wmnorth; 08.08.2014

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

Pandoc поддерживает несколько сценариев разрыва строки в документах уценки.

Возможно, вам нужно расширение hard_line_breaks.

Если это так, то ваша команда должна выглядеть так

pandoc --columns=70 --mathjax -f markdown+hard_line_breaks input.pdc -t html -Ss > out.html

Я бы порекомендовал вам прочитать обо всех параметрах, связанных с уценкой, и настроить pandoc в соответствии с вашим вкусом уценки ввода.

person xmojmr    schedule 29.06.2014
comment
Спасибо, что указали на это, это было полезно, но не совсем то, что я искал. Это помещает в HTML те же разрывы строк, которые существуют в оригинале уценки. Это означает, что он игнорирует значение --columns. Есть ли способ на самом деле обернуть текст до нужной длины строки, или параметр --columns просто не должен использоваться с HTML? - person wmnorth; 29.06.2014
comment
@wmnorth Я не знаю, как должен работать columns и чего именно вы хотели бы достичь. Если вы хотите получить абзац HTML шириной 70*em, вы можете добиться этого, CSS применяется к вашему HTML-документу. Также есть некоторые специальные правила стиля презентации, которые влияют на разрыв слов и строк и вызывают перекомпоновку документа в средстве визуализации HTML, например. w3schools.com/cssref/css3_pr_word-break.asp - person xmojmr; 30.06.2014
comment
Если вы действительно хотите обернуть вывод в 70 исходных символов, вы можете сначала запустить pandoc --columns=70 -f markdown -t markdown и передать его в pandoc -f markdown+hard_line_breaks, но это действительно неправильно (и будет выглядеть некрасиво). Целью hard_line_breaks является сохранение семантических разрывов строк, например, в стихах; просто обертывание вывода по размеру экрана (или более узкой колонке) должно быть оставлено на усмотрение браузера/CSS. - person Beni Cherniavsky-Paskin; 25.01.2015