Python Sphinx-让自定义HTML知道变量 #conf.py 语言 html_extra_path=[“customize.html”] {{变量}} {{语言}}

Python Sphinx-让自定义HTML知道变量 #conf.py 语言 html_extra_path=[“customize.html”] {{变量}} {{语言}},python,python-sphinx,Python,Python Sphinx,如何让customize.html知道变量来自配置 。。注意:假设customize.html文件不在主题的文档中 我可以自己做,但这不是我想要的 我认为已经提供了一种方法来做这些事情,有人知道它是什么吗?解决方案1:修改sphinx-build.exe进程 我破解了代码(即,您无法直接使用sphinx-build.exe进行构建)来实现它 首先,我们观察sphinx build.exe做什么事情 # site-packages\Sphinx-x.x.x.dist-info\entry_poin

如何让
customize.html
知道变量来自配置

。。注意:假设customize.html文件不在主题的文档中

我可以自己做,但这不是我想要的

我认为已经提供了一种方法来做这些事情,有人知道它是什么吗?

解决方案1:修改sphinx-build.exe进程 我破解了代码(即,您无法直接使用sphinx-build.exe进行构建)来实现它

首先,我们观察sphinx build.exe做什么事情

# site-packages\Sphinx-x.x.x.dist-info\entry_points.txt

[console_scripts]
...
sphinx-build = sphinx.cmd.build:main
...
然后你知道它实际上调用了
sphinx.cmd.build:main
来运行, 您可以引用它并进行修改以满足您的需求

例如:

导入sphinx.cmd.build
从sphinx.application导入sphinx
从sphinx.builders.html导入标准HtmlBuilder
从sphinx.cmd.build导入修补程序\u docutils、docutils\u命名空间、句柄\u异常、sphinx
def设置\u额外\u html(应用程序):
html\u builder=app.builder
ctx={attr:app.config[attr]用于目录中的attr(app.config),如果不是attr.startswith(''''')}
html_builder.globalcontext=ctx.copy()
#请将HTML放在您定义的“模板路径”中,因为它是关于内置mplateLoader.pathchain的概念
pagename='discus#u statistic'#
{%-如果html_favicon%}
{%-endif%}
{{语言}}
解决方案1:修改sphinx-build.exe进程
我破解了代码(即,您无法直接使用sphinx-build.exe进行构建)来实现它

首先,我们观察sphinx build.exe做什么事情

# site-packages\Sphinx-x.x.x.dist-info\entry_points.txt

[console_scripts]
...
sphinx-build = sphinx.cmd.build:main
...
然后你知道它实际上调用了
sphinx.cmd.build:main
来运行, 您可以引用它并进行修改以满足您的需求

例如:

导入sphinx.cmd.build
从sphinx.application导入sphinx
从sphinx.builders.html导入标准HtmlBuilder
从sphinx.cmd.build导入修补程序\u docutils、docutils\u命名空间、句柄\u异常、sphinx
def设置\u额外\u html(应用程序):
html\u builder=app.builder
ctx={attr:app.config[attr]用于目录中的attr(app.config),如果不是attr.startswith(''''')}
html_builder.globalcontext=ctx.copy()
#请将HTML放在您定义的“模板路径”中,因为它是关于内置mplateLoader.pathchain的概念
pagename='discus#u statistic'#
{%-如果html_favicon%}
{%-endif%}
{{语言}}

您可以使用命名约定:)简单、有效……谢谢,但我想要的不是纯粹的替换。如果它没有链接到sphinx,这将导致许多事情不起作用,例如
pathto
css\u tag
hasdoc
。我终于想出了一个解决方案,现在就写下答案。(我又看到你了(@bad_coder)!你似乎对狮身人面像感兴趣)你可以使用一个命名约定:)简单,有效…谢谢,但我想要的不是纯粹的替换。如果它没有链接到sphinx,这将导致许多事情不起作用,例如
pathto
css\u tag
hasdoc
。我终于想出了一个解决方案,现在就写下答案。(我又看到你了(@bad_coder)!你似乎对狮身人面像感兴趣)这是一次严重的狮身人面像/文档黑客攻击。你如何保证没有意外的副作用?我仍在学习斯芬克斯的几个方面,并决定将所有与HTML和“服装指令”相关的内容留待以后讨论。(当我能够以尽可能少的开销充分记录我的项目时,我很高兴……仅此一点就够难了!)严重的黑客攻击?如果是这样的话,我认为它必须做很多修改的原始,但我没有。我更新了答案,现在,您可以添加一个扩展来实现它。这是一些严重的Sphinx/docutils黑客攻击。你如何保证没有意外的副作用?我仍在学习斯芬克斯的几个方面,并决定将所有与HTML和“服装指令”相关的内容留待以后讨论。(当我能够以尽可能少的开销充分记录我的项目时,我很高兴……仅此一点就够难了!)严重的黑客攻击?如果是这样的话,我认为它必须做很多修改的原始,但我没有。我更新了答案,现在,您可以添加一个扩展来实现它。