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

如何为Sphinx的code-block:emphasize-lines设置行字符限制?

Sphinx 4.5.0中code-block:emphasize-lines长行高亮不全的解决方法

这个问题的根源并非code-block的:emphasize-lines选项本身有字符限制,而是Sphinx依赖的代码高亮后端Pygments在默认配置下,会对超过100字符的代码行进行截断,导致高亮逻辑无法覆盖整行。

以下是两种解决方式:

全局配置(所有代码块生效)

在项目的conf.py文件中添加或修改以下代码,调整Pygments的行截断阈值:

from pygments.formatters import HtmlFormatter

def setup(app):
    # 禁用Pygments的行截断,或设置你需要的最大长度(比如200)
    app.connect('html-page-context', lambda app, pagename, templatename, context, doctree:
                context['pygments_formatter_args'] = {'maxlinelength': 0})

将maxlinelength设为0会完全禁用行截断,也可以根据实际需求设置具体的字符数上限。

单个代码块配置

如果只想针对特定代码块调整,可按以下步骤操作:

  1. 在目标code-block指令中添加自定义类:
    .. code-block:: python
       :emphasize-lines: 3,5
       :class: no-wrap
    
       # 示例长代码行(超过116字符)
       short_line = 1
       long_line = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
       another_short_line = 2
       another_long_line = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
    
  2. 在项目的自定义CSS文件中添加样式,禁止代码换行并保留完整行:
    .code-block.no-wrap .highlight pre {
        white-space: pre;
        overflow-x: auto;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:05:07