#markdown #highlight #pandoc
#markdown #выделение #pandoc
Вопрос:
Я пишу некоторую документацию в markdown и пытаюсь отобразить ее с помощью pandoc. Я хотел бы иметь возможность выделять интерактивный сеанс оболочки, выделяя команды, введенные пользователем, жирным шрифтом.
Итак, я надеюсь, что
```console
$ user text
program output
``` #
будет выделено как
$ user text
program output
user text
выделено жирным шрифтом.
Возможно ли это сделать в pandoc?
Ответ №1:
Я не думаю, что есть встроенное определение синтаксиса для консоли bash. Но из http://pandoc.org/MANUAL.html#syntax-highlighting:
Если вас не устраивает встроенное выделение или вы хотите выделить язык, который не поддерживается, вы можете использовать
--syntax-definition
опцию для загрузки файла определения синтаксиса XML в стиле KDE. Прежде чем писать свою собственную, загляните в репозиторий синтаксических определений KDE.
Ответ №2:
Мне потребовалось некоторое время, чтобы разобраться с синтаксисом, но вот несколько простых XML-файлов для выделения строк, начинающихся с $
жирного шрифта:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Shell" version="1" kateversion="2.4" section="Other" extensions="*.shell" mimetype="" author="Tim Hutt (tdhutt@gmail.com)" license="MIT">
<highlighting>
<contexts>
<context attribute="Output" name="Output" lineEndContext="#stay" >
<DetectChar char="$" attribute="Command" context="Command" firstNonSpace="true"/>
</context>
<context attribute="Command" name="Command" lineEndContext="#pop" />
</contexts>
<itemDatas>
<itemData name="Output" defStyleNum="dsNormal"/>
<itemData name="Command" defStyleNum="dsOthers" bold="true"/>
</itemDatas>
</highlighting>
</language>
(Используйте «shell вместо «bash)
К сожалению, bold="true"
не работает с Pandoc. Я предполагаю, что он просто считывает результирующее значение defStyleNum
и передает его в свой маркер, игнорируя другие атрибуты.
Мы можем злоупотреблять одним из других стилей (я использовал dsOthers
здесь — выберите тот, который больше нигде не используется в ваших документах). Просто используйте --css=foo.css
опцию Pandoc с некоторым CSS, подобным этому:
Вот как это выглядит, с некоторым кодом Rust выше:
Это небольшое улучшение. Хотелось бы, чтобы был способ скопировать текст с цветовыми кодами ANSI с консоли и заставить Pandoc отобразить это, но я соглашусь на это.