如何为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
相关产品推荐
相关产品推荐

