我正在用markdown编写一些文档,并尝试使用pandoc进行渲染。我希望能够通过加粗用户键入的命令来突出显示交互式shell会话。
所以,我希望
```console
$ user text
program output
``` #
将被突出显示
$ user text
program output
user text
用粗体显示。
是否可以在pandoc中执行此操作?
答案 0 :(得分:1)
我认为bash控制台没有内置的语法定义。但来自http://pandoc.org/MANUAL.html#syntax-highlighting:
如果您对内置突出显示不满意,或者 要突出显示不支持的语言,可以使用 使用
--syntax-definition
选项来加载KDE-style XML syntax definition file。 在编写自己的书之前,请看一下KDE的repository of syntax definitions。
答案 1 :(得分:1)
我花了一些时间来确定语法,但这里有一些简单的 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
- 选择您文档中其他地方未使用的样式)。只需将 Pandoc 的 --css=foo.css
选项与一些 CSS 一起使用,如下所示:
这是它的外观,上面有一些 Rust 代码:
这是一个小小的改进。我希望有一种方法可以从控制台复制带有 ANSI 颜色代码的文本并让 Pandoc 渲染它,但我会满足于此。