Hugo 中的语法高亮和 Rmarkdown 中的 blogdown
Syntax Highlighting in Hugo with blogdown in Rmarkdown
我正在使用 blogdown
和 lxndrblz/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 %>%
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">%>%</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
,并重新为网站提供服务。
我正在使用 blogdown
和 lxndrblz/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 %>%
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">%>%</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
,并重新为网站提供服务。