Блоки вывода семантического кода с помощью 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
Надеюсь это поможет.