Hugo 中的语法高亮和 Rmarkdown 中的 blogdown

Syntax Highlighting in Hugo with blogdown in Rmarkdown

我正在使用 blogdownlxndrblz/anatole 主题创建博客。 博客应该有常用的语法高亮,应该支持。

当我像下面这样在 markdown(不是 Rmarkdown!)中创建一个新的 post 时,它按预期工作。

例如index.md(不是Rmd!)

---
author: Someone
date: "sometime"
title: Something
---

```R
library(tidyverse)
  starwars %>%
  select(name, mass)
```

在博客中生成此版本:

当我在 Rmarkdown 中使用相同的内容(甚至不是评估的代码块)时,没有语法突出显示。

例如index.Rmd

---
author: Someone
date: "sometime"
title: Something
---

```R
library(tidyverse)
starwars %>%
  select(name, mass)
```

returns

当我查看 index.Rmd 编织文档的输出时,我发现它是一个 .html 文件,内容如下:

---
title: Something
author: Someone
date: Sometime
---

<script src="{{< blogdown/postref >}}index_files/header-attrs/header-attrs.js"></script>
<div id="something-r" class="section level1">

<h1>Something R</h1>
<pre class="r"><code>library(tidyverse)
  starwars %&gt;%
select(name, mass)</code></pre>
</div>

而较早的,语法突出显示的降价将被翻译成这个(取自检查博客的 html 代码):

<pre tabindex="0" class="chroma">
  <code class="language-R" data-lang="R">
    <span class="nf">library</span><span class="p">(</span><span class="n">tidyverse</span><span class="p">)</span>
    <span class="n">starwars</span> <span class="o">%&gt;%</span>
    <span class="nf">select</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">mass</span><span class="p">)</span>
  </code>
</pre>

问题

现在我的问题是: 是否有一种 yaml-output 模式保留了 yaml-headers 但它以正确的格式在块上发挥了魔力(请注意下面的附录)?有了这个,编织块会将“错误的”index.Rmd 变成准确的 index.md,然后由 Hugo 拾取并格式化。 (使用 output: md_document 导致删除 yaml-headers。)

备选方案?

或者,目前我使用以下 config.yaml 来启用语法高亮。

markup:
  goldmark:
    renderer:
      unsafe: yes
  highlight:
    anchorLineNos: true
    codeFences: true
    guessSyntax: true
    hl_Lines: ""
    lineAnchors: ""
    lineNoStart: 1
    lineNos: true
    lineNumbersInTable: true
    noClasses: true
    style: monokai
    tabWidth: 4

有什么解决办法吗?

附录

我已经尝试设置为保留 yaml 并像这样编织到 .md

output: 
  md_document:
    preserve_yaml: true

但是输出代码是缩进的,没有保留在反引号中,也没有突出显示。

您可以让 .Rmd 生成 .md 输出而不是默认的 .html,方法是在 .Rprofile 中设置 options(blogdown.method = 'markdown')。参见 this section in the blogdown book

然后重新启动 R,删除 index.html,并重新为网站提供服务。