Блоки вывода семантического кода с помощью Prism

Я ввожу данные уценки и выводю файлы HTML с помощью Pandoc. С использованием --no-highlight флаг, я могу получить синтаксис для вывода без встроенной основной подсветки синтаксиса, и использовать Prism.js вместо этого, чтобы выделить код, который является гораздо более надежным.

Однако Prism требует, чтобы code или же pre иметь language-* в названии класса. Используя php в качестве примера, вывод Pandoc <pre class="php">, Мне удалось взломать его на работу с помощью:

```language-php

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

Вот команды, которые я использую для вывода EPUB и HTML:

# epub output
pandoc assets/metadata.yaml chapters/*.md -o build/book.epub

# html output
pandoc assets/metadata.yaml chapters/*.md -s --toc --no-highlight  --css ../assets/style.css -A assets/template/footer.html -o build/book.html

Моя проблема:

Я хочу уметь писать

```php

Как начало моего кода блоков, а не

```language-php

Таким образом, и Prism.js, и встроенная подсветка синтаксиса будут работать с моим поколением EPUB и HTML.

Если бы я мог заставить Пандока интерпретировать "```php"как class="language-php", это решило бы проблему.

Вот ссылка на GandHub Pandoc для кого-то еще с той же проблемой, которую я пытаюсь решить.

1 ответ

Решение

Я за использование sed, но в качестве препроцессора. Вы можете написать скрипт, подобный приведенному ниже, и назвать его pre-process:

#!/bin/bash -e

derived_dir=derived
rm -fr ${derived_dir} && mkdir -p ${derived_dir}
for file in $*
do
    cat ${file} | sed 's/```php/```language-php/g' > ${derived_dir}/$(basename ${file})
done
echo "${derived_dir}/*"

Тогда вы могли бы использовать ```php в вашем источнике, и производить HTML через:

pandoc assets/metadata.yaml $(pre-process chapters/*.md) -s --toc --no-highlight --css ../assets/style.css -A assets/template/footer.html -o build/book.html

Надеюсь это поможет.

Другие вопросы по тегам