更一致的Sphinx主题

问题描述 投票:2回答:1

考虑以下功能

# 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从我的文档字符串生成代码,它看起来像这样(这次我使用默认主题haikurstconf.py文件中没有太多更改):

enter image description here

是否有解决我用彩色指示的问题的主题或其他解决方法?

我尝试了不同的方法,但均无效果,但我无法获得1.-4的任何要点。工作。

编辑的想法是我想要编辑HTML,这很麻烦。我只想对Sphinx conf.py目录中的index.rstdocs文件进行更改,以进行上述更改。

python themes python-sphinx docstring
1个回答
0
投票

仅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之前>

enter image description here

我的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之后

enter image description here

关于可选要求4

Sphinx使用pygments

突出显示Synatx。如果对此不满意,可以通过Highlightjs下载并包含它们来使用PrismjsGoogle code prettifyhtml_js_files等。但是这些也是syntax荧光笔。突出显示变量的语义荧光笔可用于python,但我还没有听说可以与Sphinx一起使用的任何东西。

注意:

  • 我正在使用Alabaster theme。但这应该适用于大多数主题。
  • 我的[[custom.js
  • 文件非常简单,没有考虑所有可能性。
© www.soinside.com 2019 - 2024. All rights reserved.