python Sphinx(文档工具):在输出中设置制表符宽度

ctzwtxfj  于 2023-01-08  发布在  Python
关注(0)|答案(5)|浏览(134)

如何在Pygments高亮显示的Sphinx代码片段的HTML输出中设置制表符宽度?默认情况下,它是烦人的8,但我想要4。在Sphinx conf.py中没有找到关于此设置的单词。

sg2wtvxw

sg2wtvxw1#

在您的www.example.com中添加类似的内容conf.py:

import re

def process_docstring(app, what, name, obj, options, lines):
    spaces_pat = re.compile(r"( {8})")
    ll = []
    for l in lines:
        ll.append(spaces_pat.sub("    ",l))
    lines[:] = ll

def setup(app):
    app.connect('autodoc-process-docstring', process_docstring)

另请参见Sphinx文档字符串预处理文档。

siotufzp

siotufzp2#

您需要编写一个狮身人面像扩展。添加您的自定义Lexer,并使用VisibleWhitespaceFilter应用它。

pepwfjgg

pepwfjgg3#

我在sphinx-dev组上问了同样的问题,结果发现这是Sphinx使用的Docutils的问题。Docutils用8个空格替换所有制表符,目前还没有办法从Sphinx中更改该值。
http://groups.google.com/group/sphinx-dev/browse_thread/thread/35b8071ffe9a8feb
唯一可行的解决方案似乎是遵循S.Lott和John Paulett在对我的问题的评论中提出的建议--使用空格而不是制表符。

ctehm74n

ctehm74n4#

我在custom.css中修改了空格的字体大小这是一个简单的调整,效果很好。这只会修改代码块,其他什么都不会。这就是我想要的。
_static/custon.css

div.highlight pre .w {
    font-size: 50%;
}

注:文档字符串预处理的解决方案是搞乱我的python代码文档字符串,这在构建时导致错误。

dxxyhpgq

dxxyhpgq5#

有个办法将以下内容添加到conf.py

def setup(app):
    app.connect('autodoc-process-docstring', process_docstring)

def env_before_read_docs(app, env, docnames):
    env.settings["tab_width"] = 4

我不确定文档在哪里(所以不能保证这个API是稳定的),但是sphinx/environment/__init__.py中有一个注解:

# the docutils settings for building
self.settings = default_settings.copy()

这正是我们想要的。

相关问题