【问题标题】:Highlighting specific lines of code in Pandoc Revealjs突出显示 Pandoc Revealjs 中的特定代码行
【发布时间】:2019-04-25 07:21:37
【问题描述】:

我正在使用 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 标签?

【问题讨论】:

    标签: pandoc reveal.js


    【解决方案1】:

    correct syntax 应该是:

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

    Pandoc 自己进行语法高亮,并且对 number-lines 类敏感。

    【讨论】:

    • 确实,我已经在我的问题中更新了它。但是,它仍然不起作用。 Pandoc 将属性放在<div> 上,而不是应该放在<code> 上(根据revealjs 文档)。另外,想一想,我认为也许 Pandoc 会生成所有突出显示,而不是让revealjs/highlightjs 来做......
    • 这确实在输出中添加了一些numberLines 的东西,但这不是我想要的:我想突出显示(或强调)突出显示的代码中的特定行。 (我找到了一个 pandoc-emphasise-code 过滤器,但实际上由于某种原因再次删除了突出显示,所以也不是我想要的。)
    • 啊,对...也许有更好的方法,但您当然可以写一个 pandoc filter 用 raw-html sn-p 替换代码块...
    【解决方案2】:

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

    我自己对 pandoc 处理代码块的方式进行了斗争,以用于reveal.js 输出,所以我编写了这个 lua-filter:revealjs-codeblock。此过滤器调整 pandoc 的 HTML 输出,使其遵循reveal.js 规范。 它支持.number-lines.numberLines 类以及data-line-numbers 属性。

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 1970-01-01
      • 2017-09-10
      • 2012-08-06
      • 2012-04-04
      • 2018-11-06
      • 1970-01-01
      • 2023-03-13
      • 2019-05-21
      相关资源
      最近更新 更多