Sphinx中的内联代码突出显示(reST)

时间:2016-11-14 21:53:11

标签: html python-sphinx restructuredtext

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

我查看了Inline code highlighting in reStructuredText提供的解决方案,但它对我不起作用。我使用的是Sphinx 1.4.8。

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

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

EDIT1: 这是我的代码:

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

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

此处的文字行全部以黑色呈现,而不是关键字' def'在 另一种颜色。突出显示适用于代码块,但不适用于内联。

EDIT2:

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 个答案:

答案 0 :(得分:0)

这是我在文档中突出显示代码段的方式:

.. sourcecode:: python

    a code line 
    another code line

这对你有帮助吗?

修改

我做了一些研究,因为我对答案也感兴趣。对我来说,似乎灰色代码在某些(或所有?)主题中是默认的,我测试了 sphinxdoc bizstyle 。如果您检查代码段的html代码(例如使用Firefox' s调试器),如果您使用 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>

在这里你可以看到你可以为&#34; def&#34;定义一个样式,另一个用于&#34; func&#34;和#34;()的第3个:&#34;在你的sphinx项目的layout.css中。例如:

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