如何在knitr生成的HTML输出中添加R Markdown源码行号?
如何自动给knitr生成的HTML输出中代码块添加原始R Markdown源码的行号?
自动绑定源码行号的实现方法
直接通过自定义knitr的source钩子函数,就能自动获取每个代码块在原始Rmd文件中的起始行号,无需手动配置.startFrom参数。
在文档开头的setup代码块里加入这段代码:
knitr::knit_hooks$set(source = function(x, options) { # 提取当前代码块在原始Rmd中的起始行号 start_line <- options$line # 自动设置行号起始值 options$attr.source <- paste0('.numberLines startFrom=', start_line) # 调用默认的代码渲染逻辑 knitr:::hook_source(x, options) })
效果说明
- 每个代码块的HTML行号会和它在原始Rmd文件中的起始行完全对应,不用逐个手动设置
- 代码块内部的行号从起始行连续递增,和源码行号完全匹配
- 不同代码块之间的行号不会重置,完全跟随原始文件的行号序列
替代定位方案
如果行号不是唯一需求,也可以给代码块加自定义标签来快速定位:
```{r data-cleaning-step} # 这里是数据清洗代码
生成的HTML会显示标签名,结合RStudio的跳转功能,也能快速找到对应的源码位置。 内容的提问来源于stack exchange,提问作者nuthatch
相关产品推荐
相关产品推荐

