Проблема в том, что ваш кодовый блок неправильно отформатирован как кодовый блок. Вам необходимо (как минимум) следующее:
<pre><code># chown root:root /boot/grub/grub.cfg
# chmod og-rwx /boot/grub/grub.cfg
В дополнение к спецификации HTML , описанной в ответе @ tarleb, правила Markdown также различают код block и код span , основанный исключительно на существование (или нет) тега <pre>
.
Обратите внимание, что исходные правила Markdown демонстрируют кодовый блок при создании этого HTML:
<pre><code>This is a code block.
Тег
<code>
, завернутый в тег <pre>
. Напротив, те же самые правила демонстрируют диапазон кода , генерирующий этот HTML:
<p>Use the <code>printf()</code> function.</p>
Обратите внимание, что используется только тег <code>
, но это только встроенный интервал (заключенный в <p>
, а не элемент уровня блока.
Когда Pandoc конвертирует из HTML обратно в Markdown, он придерживается того же соглашения в обратном порядке. Да, на вашем теге <code>
установлено class="code_block"
, но Pandoc не знает, что это значит, и не должен. И да, ваш <code>
элемент не обернут в <p>
, но это просто плохо сформированный HTML (согласно спецификации HTML, <code>
не является элементом уровня блока, но содержит контент * 1043) * то есть содержимое, которое оборачивается в элемент уровня блока, такой как <p>
или <pre>
).
А затем возникает проблема с вашим тегом <br>
. Как Pandoc узнает, является ли это частью кода или хайлинга стиля? На самом деле это не так. Именно поэтому мы используем теги <pre>
для многострочных блоков кода. С тегом <pre>
пробелы сохраняются. Поэтому вам нужен только символ новой строки без тега <br>
.
Для полноты картины я понимаю, что исходные правила Markdown не включают блоки изолированного кода, поэтому я также укажу на спецификацию GitHub Flavored Markdown, которая также демонстрирует блоки изолированного кода как создающие <pre><code>
упакованные блоки. Естественно, чтобы вернуться в обратном направлении, вам нужно начать с <pre><code>
обернутых блоков, чтобы закончить с изолированными блоками кода.