2

我正在输入降价数据并使用 Pandoc 输出 HTML 文件。使用该--no-highlight标志,我可以在没有内置基本语法突出显示的情况下获得要输出的语法,并使用 Prism.js 来突出显示代码,这更加健壮。

但是,Prism 要求类名中有codeor 。以 php 为例,Pandoc 输出. 我已经设法通过使用以下方法破解它:prelanguage-*<pre class="php">

```language-php

作为每个代码块的开始。但是,当我想导出与 EPUB 相同的代码时,它无法识别能够使用内置语法突出显示的语言。

以下是我用于 EPUB 和 HTML 输出的命令:

# epub output
pandoc assets/metadata.yaml chapters/*.md -o build/book.epub

# html output
pandoc assets/metadata.yaml chapters/*.md -s --toc --no-highlight  --css ../assets/style.css -A assets/template/footer.html -o build/book.html

我的问题:

我希望能够写作

```php

作为我的代码块的开始,而不是

```language-php

所以 Prism.js 和内置的语法高亮器都可以使用我的 EPUB 和 HTML 生成。

如果我能让 Pandoc 将 "```php" 解释为class="language-php",这将解决问题。

这是 Pandoc GitHub 上的一个链接,供其他人解决我正在尝试解决的相同问题。

4

1 回答 1

1

我也使用 sed,但作为预处理器。您可以编写如下脚本,并将其命名为pre-process

#!/bin/bash -e

derived_dir=derived
rm -fr ${derived_dir} && mkdir -p ${derived_dir}
for file in $*
do
    cat ${file} | sed 's/```php/```language-php/g' > ${derived_dir}/$(basename ${file})
done
echo "${derived_dir}/*"

然后你可以```php在你的源代码中使用,并通过以下方式生成 html:

pandoc assets/metadata.yaml $(pre-process chapters/*.md) -s --toc --no-highlight --css ../assets/style.css -A assets/template/footer.html -o build/book.html

希望这可以帮助。

于 2018-04-21T19:35:37.737 回答