我正在输入markdown数据并使用Pandoc输出HTML文件。使用--no-highlight
标志,我可以在不使用内置基本语法高亮显示的情况下输出语法,并使用Prism.js突出显示代码,这样更强大。
但是,Prism要求code
或pre
在类名中有language-*
。以php为例,Pandoc输出<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"
,这将解决问题。
https://github.com/Azure/Azure-Functions/issues/210我正在尝试解决同样问题的其他人。
答案 0 :(得分:1)
我也使用sed,但作为预处理器。您可以编写如下所示的脚本,并将其命名为#!/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
然后您可以在源代码中使用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
,并通过以下方式生成html:
@GetMapping("/_search/codes")
@Timed
public ResponseEntity<List<CodeDTO>> searchCodes(@RequestParam String query, Pageable pageable) {
log.debug("REST request to search for a page of Codes for query {}", query);
Page<CodeDTO> page = codeService.search(query, pageable);
HttpHeaders headers = PaginationUtil.generateSearchPaginationHttpHeaders(query, page, "/api/_search/codes");
return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK);
}
@GetMapping("/codes/currencies")
@Timed
public ResponseEntity<List<CodeDTO>> getAllByCodeGroupId(Pageable pageable) {
QueryBuilder qb = QueryBuilders.termQuery("codeGroupId", 3);
return searchCodes(qb.toString(), pageable);
}
希望这有帮助。