在R Notebook中设置knitr语法高亮主题无效,求正确配置方法?
解决R Notebook中knitr高亮主题不生效的问题
嘿,我来帮你搞定这个knitr高亮主题不生效的问题!你的核心问题在于R Notebook(包括预览和编织后的HTML)默认用的是highlight.js处理代码高亮,而不是knitr的内置高亮系统,所以你用knit_theme$set()的方法根本起不到作用。下面分两种场景给你正确的设置方式:
一、针对HTML Notebook(预览+编织后)
直接在YAML配置里指定highlight.js对应的主题即可,不需要写那一段knitr的代码。具体修改如下:
output: html_notebook: code_folding: none df_print: kable theme: yeti toc: yes toc_depth: 4 highlight: molokai # 新增这一行,指定highlight.js的molokai主题
保存后重新预览或编织Notebook,代码高亮就会变成molokai样式了。
二、针对普通HTML Document(如果需要输出成独立HTML)
如果你是要编织成普通的html_document,有两种可选方案:
方案1:用highlight.js主题(推荐,和Notebook风格一致)
同样在YAML里直接指定主题:
output: html_document: df_print: kable highlight: molokai
方案2:用knitr内置高亮(适合需要完全自定义knitr样式的场景)
先在YAML里设置使用knitr的高亮系统,再用代码加载主题:
output: html_document: df_print: kable highlight: knitr # 指定用knitr的高亮系统
然后在R代码块里加载并设置主题:
library(knitr) thm = knit_theme$get("molokai") knit_theme$set(thm)
补充说明:为什么原来的方法没用?
knit_theme是控制knitr原生的代码高亮渲染,这种方式主要用于LaTeX输出,或者是明确指定了highlight: knitr的HTML输出。而R Notebook默认依赖highlight.js来动态渲染代码高亮,所以knit_theme$set()对它完全无效,必须通过YAML里的highlight参数指定highlight.js的主题才行。
内容的提问来源于stack exchange,提问作者Carmen Sandoval
相关产品推荐
相关产品推荐

