是否可以使用pandoc生成用于Markdown的控制台突出显示?

时间:2019-03-14 21:16:49

标签: markdown highlight pandoc

我正在用markdown编写一些文档,并尝试使用pandoc进行渲染。我希望能够通过加粗用户键入的命令来突出显示交互式shell会话。

所以,我希望

```console
$ user text
program output
``` #

将被突出显示

$ user text
program output

user text用粗体显示。

是否可以在pandoc中执行此操作?

2 个答案:

答案 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 代码:

demo

这是一个小小的改进。我希望有一种方法可以从控制台复制带有 ANSI 颜色代码的文本并让 Pandoc 渲染它,但我会满足于此。