You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为RMarkdown中Python代码块添加行号但不标记输出?

解决bookdown bs4_book中Python代码输出块意外显示行号的问题

问题背景

  • 使用RMarkdown的bookdown包编写在线书籍,采用bs4_book模板
  • 文档包含执行导入库、算术运算等操作的Python代码块
  • 通过修改style.css实现代码块行号显示后,代码输出内容也被添加了行号,不符合需求

问题根源

原CSS规则未区分代码输入块和输出块,导致所有<pre>标签内的内容都被添加了行号。在bs4_book中,代码输入块默认带有sourceCode类,而输出块无此类标记。

解决方案

修改style.css,仅给带有sourceCode类的代码输入块添加行号,代码输出块不受影响:

/* 仅为代码输入块启用行号计数 */
pre.sourceCode {
  counter-reset: line-numbering;
  padding-left: 3em; /* 为行号预留左侧空间,避免覆盖代码 */
  position: relative;
}

/* 对输入块的每一行代码添加行号 */
pre.sourceCode > code > span {
  display: block;
  counter-increment: line-numbering;
}

/* 设置行号的样式与位置 */
pre.sourceCode > code > span::before {
  content: counter(line-numbering);
  position: absolute;
  left: 0.5em;
  color: #999; /* 用灰色弱化行号视觉权重 */
  text-align: right;
  width: 2em; /* 固定行号宽度,对齐更整齐 */
}

验证说明

  • 代码输入块的HTML结构通常为:<pre class="sourceCode python"><code class="sourceCode python">...</code></pre>,会被上述CSS规则匹配,显示行号
  • 代码输出块的HTML结构通常为:<pre><code>...</code></pre>(无sourceCode类),不会触发行号规则

关联配置参考

示例_output.yml

bookdown::bs4_book:
  theme:
    primary: "#198754"
  code_folding: show
  code_download: true

示例_bookdown.yml

book_filename: "my_book"
language:
  ui:
    chapter_name: "Chapter "

示例Python代码块

```{python}
import numpy as np

a = 5
b = 10
print(a + b)
```

修改后,代码输入块会显示行号,而输出内容15将不再带有行号,符合预期。

内容的提问来源于stack exchange,提问作者Alonis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:42:35