Sphinx(reST)中的内联代码高亮显示

3

我正在尝试在使用Sphinx时突出显示内联代码片段。

我查看了此处提供的解决方案,但对我无效。我正在使用Sphinx 1.4.8。

是否有另一种简单而优雅的方法来标记要突出显示的内联代码?

如果没有完整的解决方案(即支持真正基于语言的突出显示),那么我将很高兴能够在整个文档中设置非黑色颜色的内联代码。这可行吗?

编辑1: 以下是我的代码:

.. role:: py(code)
   :language: python

here is some inline code :py:`def func():`

这里的文本行全部呈黑色,而不是关键字“def”呈其他颜色。代码块高亮显示正常,但内嵌的没有。

编辑2:

Humbalan的建议帮助我几乎解决了这个问题。 我在$SPHINX_PROJECT_DIR/_templates/layout.html中添加了以下内容:

{# layout.html #}
{# Import the theme's layout. #}
{% extends "!layout.html" %}
{% set css_files = css_files + ['_static/style.css'] %}

接下来我创建了$SPHINX_PROJECT_DIR/_templates/style.css,其内容如下,以覆盖span.pre:

span.pre{
    color: red;
    border: 1px solid black;
    padding: 2px;
    background: #feeaea
}

我已经接近解决方案了,但还没有完全达到目标。我现在得到以下输出:

enter image description here


1
请解释一下“它不起作用”的意思,并发布您的代码。 - Humbalan
您的“Edit2”再次告诉我们您不想要什么。但请描述您希望得到的结果。从我的角度来看,您已经编程成功了:红色文本,黑色边框与文本相距2px,定义颜色的背景。 - Humbalan
1个回答

0

这是我在文档中突出代码片段的方法:

.. sourcecode:: python

    a code line 
    another code line

那对你有帮助吗?


编辑:

我做了一些研究,因为我也对答案感兴趣。对我来说,灰色代码似乎是某些(或全部?)主题的默认设置,我测试了sphinxdocbizstyle。如果您检查片段的HTML代码(例如使用Firefox的调试器),则会在使用sphinxdoc时得到以下结果。

<p>here is some inline code 
<code class="code py python docutils literal">
<span class="keyword">
    <span class="pre">def</span>
</span> 
<span class="name function">
    <span class="pre">func</span>
</span>
<span class="punctuation">
    <span class="pre">():</span>
</span>
</code>
</p>

在这里,您可以看到您可以为“def”定义一个样式,为“func”定义另一个样式,并为您的sphinx项目中的“():”定义第三个样式。例如:

code.py.python.docutils.literal  { background-color: Bisque; padding: 5px; border: 1px solid maroon; }
code.py.python.docutils.literal span.keyword { background-color: red; color:white; }
code.py.python.docutils.literal span.name.function { background-color: pink; color:green; }
code.py.python.docutils.literal span.punctuation { background-color: yellow; color:brown; }

结果:

syntax highlight with role


谢谢回复。不幸的是,我说过,在代码块中高亮显示可以正常工作,但我想在通常用两个前置和两个后置反引号标记的内联代码中获得彩色文本。 - Rocket Singh
好的,我明白了。如果你用 :py:myfunc 进行高亮,只有当真正存在一个名为“myfunc”的已记录方法(或函数)时,高亮才会起作用。如果这个方法在另一个模块中,你必须提供路径,如 :py:meth:module.class.myfunc - Humbalan
抱歉,我不知道如何显示包含“myfunc”的字符。因此,如果您看到带有灰色背景的文本,则是与上面示例中的语法相同的语法:“:py:...” - Humbalan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接