ide*_*n42 9 pygments python-sphinx
Sphinx 可以定义主题以及要使用的 pygments 样式。
但是,我不能 - 为 Sphinx 项目找到一种好方法来定义供 pygments 使用的自定义样式(配色方案)。
从文档:
要使样式可用于 Pygments,您必须
- 要么将其注册为插件(请参阅插件文档)
- 或将其放入 Pygments 发行版的样式子包中,每个样式一个样式类,其中文件名是样式名称,类名称是 StylenameClass。
据我所知,第一个选项是我所追求的,因为应该可以动态扩展 pygments。虽然通过检查链接我不确定这将如何完成(没有关于如何使用插件系统的示例)。第二个示例涉及将文件复制到 pygments 中,这不切实际,特别是因为用户可能无法写入路径。
我确实设法以一种风格破解,尽管这不是一个很好的解决方案:
包括完整性
# Sphinx "conf.py"
# Master toctree document
master_doc = 'contents'
# BEGIN MONKEY-PATCH
from pygments.style import Style
from pygments.token import Text, Other, Comment, Whitespace
class MyFancyStyle(Style):
background_color = "#1e1e27"
default_style = ""
styles = {
Text: "#cfbfad",
Other: "#cfbfad",
Whitespace: "#434357",
Comment: "#cd8b00",
Comment.Preproc: "#409090",
Comment.PreprocFile: "bg:#404040 #ffcd8b",
Comment.Special: "#808bed",
# ... snip (just more colors, you get the idea) ...
}
def pygments_monkeypatch_style(mod_name, cls):
import sys
import pygments.styles
cls_name = cls.__name__
mod = type(__import__("os"))(mod_name)
setattr(mod, cls_name, cls)
setattr(pygments.styles, mod_name, mod)
sys.modules["pygments.styles." + mod_name] = mod
from pygments.styles import STYLE_MAP
STYLE_MAP[mod_name] = mod_name + "::" + cls_name
pygments_monkeypatch_style("my_fancy_style", MyFancyStyle)
pygments_style = "my_fancy_style"
# END MONKEY-PATCH
Run Code Online (Sandbox Code Playgroud)
在您conf.py指定要使用的 Pygments 样式。来自Sphinx 文档:
\n\n\n
pygments_style用于 Pygments 源代码突出显示的样式名称。如果未设置,则选择 theme\xe2\x80\x99s 默认样式或 \'sphinx\' 进行 HTML 输出。
\n
可以通过以下方式检索可用名称:
\n>>> from pygments.styles import get_all_styles\n>>> styles = list(get_all_styles())\nRun Code Online (Sandbox Code Playgroud)\n一些 Sphinx 主题和 Pygments 风格组合的在线预览现已推出。
\n如果开箱即用的 Pygments 样式不符合您的喜好,那么您可以创建自定义 Pygments 样式。
\n| 归档时间: |
|
| 查看次数: |
2168 次 |
| 最近记录: |