#word-wrap #pandoc
#перенос слов #pandoc
Вопрос:
Я конвертирую Markdown в HTML следующим образом:
pandoc --columns=70 --mathjax -f markdown input.pdc -t html -Ss > out.html
Все работает нормально, за исключением того факта, что текст не переносится. Я пробовал разные длины столбцов, никакого эффекта. Удалены опции, не работает. Что бы я ни пробовал, HTML просто не переносится. Я ищу в трекере ошибок, но, похоже, нет никаких открытых ошибок, связанных с этой проблемой. Я также проверил документацию, но, насколько я мог понять, текст должен быть перенесен в строку… Итак, я наткнулся на ошибку?
Я использую pandoc версии 1.12.4.2.
Заранее спасибо за вашу помощь!
Ответ №1:
Pandoc переводит новые строки в HTML, чтобы исходный код было легче читать. По умолчанию он не вставляет <br>
теги.
Если вы хотите сохранить разрывы строк при вводе markdown:
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>
...
Комментарии:
1. Принося огромные извинения за задержку, если это так, я снова спрашиваю: для чего подходит этот
--columns
вариант??2.
--columns
Параметр указывает, сколько символов в строке исходного кода. В HTML разрывы строк в исходном коде не влияют на то, как текст отображается в браузере. Вместо этого вы могли бы использовать<br>
теги для размещения разрывов строк, но лучше использовать CSS для описания того, как отображается содержимое (как я сделал в своем ответе внутриstyle
тегов). Смотрите, например codecademy.com/en/tracks/web3. (откройте результирующий HTML-файл в обычном текстовом редакторе, таком как Sublime, чтобы увидеть эффект различных
--columns
опций)4. Хорошо, это все объясняет… но все же я бы не так интерпретировал README pandoc…
Ответ №2:
Неясно, какой текст должен быть перенесен, но этого не происходит, поскольку вы не предоставили образец.
Pandoc поддерживает несколько сценариев переноса строк в документах markdown.
Возможно, вы ищете расширение hard_line_breaks
Если это так, то ваша команда должна выглядеть так
pandoc --columns=70 --mathjax -f markdown hard_line_breaks input.pdc -t html -Ss > out.html
Я бы порекомендовал вам прочитать обо всех параметрах, связанных с markdown, и настроить pandoc в соответствии с вашим стилем ввода markdown
Комментарии:
1. Спасибо, что указали на это, это было полезно, но не совсем то, что я искал. Что это делает, так это помещает в HTML те же разрывы строк, которые существуют в оригинале markdown. Это означает
--columns
, что значение игнорируется. Есть ли способ фактически перенести текст до желаемой длины строки, или этот--columns
параметр просто не должен использоваться с HTML?2. @wmnorth Я не знаю, как
columns
это должно работать и чего именно вы хотели бы достичь. Если вы хотите получить HTML-абзац шириной 70 * em , вы можете добиться этого с помощью CSS, примененного к вашему HTML-документу. Также существуют некоторые специальные правила стиля представления, которые влияют на разрыв слов и разрыв строк и вызывают перепрошивку документа в средстве визуализации HTML, например w3schools.com/cssref/css3_pr_word-break.asp3. Если вы действительно хотите обернуть вывод в 70 исходных символов, вы можете сначала запустить
pandoc --columns=70 -f markdown -t markdown
и передать этоpandoc -f markdown hard_line_breaks
, но это действительно неправильно (и будет выглядеть некрасиво). Цельhard_line_breaks
состоит в том, чтобы сохранить семантические разрывы строк, например, в стихах; просто перенос выходных данных в соответствии с экраном (или более узким столбцом) должен быть оставлен браузеру / CSS.