在Pandoc Revealjs中突出显示特定的代码行

时间:2019-04-25 07:21:38

标签: pandoc reveal.js

我正在使用Pandoc生成Reveal.js演示文稿。它包括围栏代码块中的代码,如下所示:

```java
// Some Java code
```

将Reveal.js supports a way to add a highlight移至特定行或行范围,并带有应添加到data-line-numbers="1"标签的<code>属性。

我尝试通过各种方式将此属性添加到受防护的代码块中,例如

``` { .java data-line-numbers="1" }
// Some Java code
```

但是我无法使其正常工作。有没有办法在Pandoc中使用Reveal.js的data-line-numbers?还是Pandoc有办法实现类似目标?还是我需要放弃而只在Markdown中使用那些凌乱的<pre><code> HTML标签?

2 个答案:

答案 0 :(得分:1)

correct syntax应该是:

``` {.java .number-lines}
// Some Java code
```

Pandoc自己进行语法突出显示,并且对number-lines类敏感。

答案 1 :(得分:1)

Pandoc的代码块HTML输出未遵循Reveal.js期望编写代码的方式。例如,指示行要编号的默认pandoc方法是使用number-lines类标记该块,而reveal.js期望使用布尔值data-line-numbers。即使手动添加data-line-numbers属性也不起作用:pandoc将代码包装在<pre><code>元素中,并将所有代码块属性添加到<code>元素中,同时显示。 js在<pre>元素中寻找它们。

我为pandoc处理自己的代码块的方式而感到困惑,因为我自己输出了Reveal.js,所以我写了这个lua过滤器:revealjs-codeblock。此过滤器调整pandoc的HTML输出,使其遵循Reveal.js规范。 它支持.number-lines.numberLines类以及data-line-numbers属性。