.Rmd 转 .md 时保留代码高亮
Retain code highlighting when converting .Rmd to .md
我有一个 .rmd
文件要放在 GitHub 上。为了使结果与代码一起可见,我通过 RStudio 将 .rmd
文件转换为 .md
。
然而,转换后,当我在 GitHub 上查看 .md
文件时,(r-) 代码不再突出显示。我注意到 .md
文件中的代码块是通过缩进 4 次而不是三个反引号 + 语言定义来标识的。很明显,.rmd
文件中的语言定义丢失了。
我该如何解决这个问题?
注意:要重现,您只需在 RStudio 中打开一个新的 .rmd
文件并将 YAML header 更改为:
---
title: "TestRun"
output:
md_document:
variant: markdown_github
---
非常感谢您的帮助!
Fenced 代码块(反引号 + 语言定义)是一种 non-standard(尽管越来越普遍)标记代码块的方式。因此,并非所有 Markdown 实现都理解它。事实上,standard Markdown 无法提供识别代码块语言的方法。在这种情况下,当转换为标准 Markdown 时,该信息会适当丢失。如果您想保留该信息,那么我建议转换为标准 Markdown 以外的内容。尽管根据另一个答案,如果您修复了 YAML 配置,那么您将使用 non-standard GitHub 风格的 Markdown,它确实支持围栏代码块。
如果您真的需要标准的 Markdown,那么您可能会发现 JavaScript 突出显示引擎可以很好地满足您的需求。一些更好的 JavaScript 突出显示引擎具有非常好的语言检测,因此您通常不需要标记代码块的语言。
缩进在 YAML 中很重要。
这是来自 R Markdown documentation 的示例:
---
output:
md_document:
variant: markdown_github
---
此 YAML 文档有一个键 output
的映射,其值是一个键 md_document
的映射,其值是一个键 variant
的映射,其值为标量 markdown_github
.
JSON 中的等价物(例如)是:
{ "output": {
"md_document": {
"variant": "markdown_github"
}
}
}
这是您的文档(为清楚起见忽略 title
键):
---
output:
md_document:
variant: markdown_github
---
您的文档有一个包含键 output
的映射,其值是一个包含两个键的映射,md_document
(具有空值或 null
值)和 variant
(标量值 markdown_github
)。 JSON 等价物是:
{ "output": {
"md_document": null,
"variant": "markdown_github"
}
}
看出区别了吗?
我有一个 .rmd
文件要放在 GitHub 上。为了使结果与代码一起可见,我通过 RStudio 将 .rmd
文件转换为 .md
。
然而,转换后,当我在 GitHub 上查看 .md
文件时,(r-) 代码不再突出显示。我注意到 .md
文件中的代码块是通过缩进 4 次而不是三个反引号 + 语言定义来标识的。很明显,.rmd
文件中的语言定义丢失了。
我该如何解决这个问题?
注意:要重现,您只需在 RStudio 中打开一个新的 .rmd
文件并将 YAML header 更改为:
---
title: "TestRun"
output:
md_document:
variant: markdown_github
---
非常感谢您的帮助!
Fenced 代码块(反引号 + 语言定义)是一种 non-standard(尽管越来越普遍)标记代码块的方式。因此,并非所有 Markdown 实现都理解它。事实上,standard Markdown 无法提供识别代码块语言的方法。在这种情况下,当转换为标准 Markdown 时,该信息会适当丢失。如果您想保留该信息,那么我建议转换为标准 Markdown 以外的内容。尽管根据另一个答案,如果您修复了 YAML 配置,那么您将使用 non-standard GitHub 风格的 Markdown,它确实支持围栏代码块。
如果您真的需要标准的 Markdown,那么您可能会发现 JavaScript 突出显示引擎可以很好地满足您的需求。一些更好的 JavaScript 突出显示引擎具有非常好的语言检测,因此您通常不需要标记代码块的语言。
缩进在 YAML 中很重要。
这是来自 R Markdown documentation 的示例:
---
output:
md_document:
variant: markdown_github
---
此 YAML 文档有一个键 output
的映射,其值是一个键 md_document
的映射,其值是一个键 variant
的映射,其值为标量 markdown_github
.
JSON 中的等价物(例如)是:
{ "output": {
"md_document": {
"variant": "markdown_github"
}
}
}
这是您的文档(为清楚起见忽略 title
键):
---
output:
md_document:
variant: markdown_github
---
您的文档有一个包含键 output
的映射,其值是一个包含两个键的映射,md_document
(具有空值或 null
值)和 variant
(标量值 markdown_github
)。 JSON 等价物是:
{ "output": {
"md_document": null,
"variant": "markdown_github"
}
}
看出区别了吗?