考虑以下功能
# in mymodule.py:
def myfunc(num,mystring):
"""
replicates a string
:param num: a positive integer
:param mystring: a string
:return: string concatenated with itself num times
:Example:
>>> num = 3
>>> mystring = "lol"
>>> myfunc(num, mystring)
"lollollol"
"""
return num*mystring
如果我使用Sphinx从我的文档字符串生成代码,它看起来像这样(这次我使用默认主题haiku
,rst
或conf.py
文件中没有太多更改):
是否有解决我用彩色指示的问题的主题或其他解决方法?
我尝试了不同的方法,但均无效果,但我无法获得1.-4的任何要点。工作。
编辑的想法是我不想要编辑HTML,这很麻烦。我只想对Sphinx conf.py
目录中的index.rst
和docs
文件进行更改,以进行上述更改。
仅CSS定制无法解决此问题。即使可以使用::before
并在::after
选择器之后,我认为JavaScript更适合于处理此问题。
您可以使用conf.py中的html_js_files选项添加自定义Javascript文件。使用此选项,您的要求1、2和3应该可以实现。
# ...
html_js_files = ['custom.js']
# ...
如果您在conf.py中使用上面的代码,那么您的custom.js文件应位于以下位置
docs/
_build/
custom.css
custom.js
_templates/
index.rst
api.rst
...
一个例子
添加custom.js之前>
我的custom.js
文件window.onload = function () { // Change 'Parameters' to 'Arguments' first_dt_elements = document.querySelectorAll('dl.field-list > dt:first-child'); for(let i = 0; i< first_dt_elements.length; i++){ first_dt_elements[i].innerText="Arguments"; } // arguments same font and typeface etc.. dl_methods = document.querySelectorAll('dl.method'); parameter_texts = [] for(let i = 0; i< dl_methods.length; i++){ params = []; param_elems=dl_methods[i].querySelectorAll('.sig-param'); for (let j = 0; j< param_elems.length; j++){ params.push(param_elems[j].innerText); } for( let k=0; k<params.length; k++){ str = dl_methods[i].innerHTML; dl_methods[i].innerHTML= str.replace( RegExp(params[k], "g"), '<span style="color:red;font-family:monospace;font-style:normal;">' + params[k] + '</span>' ); } } }
再次构建html之后
关于可选要求4
Sphinx使用pygments
突出显示Synatx。如果对此不满意,可以通过Highlightjs下载并包含它们来使用Prismjs,Google code prettify,html_js_files
等。但是这些也是syntax荧光笔。突出显示变量的语义荧光笔可用于python,但我还没有听说可以与Sphinx一起使用的任何东西。注意: