【问题标题】:Inline code highlighting in Sphinx (reST)Sphinx 中的内联代码突出显示(reST)
【发布时间】:2017-03-28 15:54:53
【问题描述】:

我正在尝试在使用 Sphinx 时突出显示内联代码 sn-ps。

我查看了Inline code highlighting in reStructuredText 提供的解决方案,但它对我不起作用。我正在使用 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
}

我离解决方案更近了,但还没有完全解决。我现在得到以下输出:

【问题讨论】:

  • 请解释“它不起作用”的含义并发布您的代码。
  • 您的“Edit2”再次告诉我们您想要什么。但请描述您希望获得的结果。从我的角度来看,你已经得到了你所编程的东西:红色文本,距离文本 2px 的黑色边框和定义颜色的背景。

标签: html python-sphinx restructuredtext


【解决方案1】:

这就是我在文档中突出显示代码 sn-ps 的方式:

.. sourcecode:: python

    a code line 
    another code line

这对你有帮助吗?


编辑:

我做了一些研究,因为我也对答案感兴趣。对我来说,灰色代码似乎在某些(或全部?)主题中是默认的,我测试了 sphinxdocbizstyle。如果您检查 sn-p 的 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>

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

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; }

结果:

【讨论】:

  • 感谢您的回复。不幸的是没有。正如我所说,突出显示在代码块中按预期工作,但我想在通常用两个前导和两个尾随反引号标记的内联代码中获得彩色文本。
  • 好的,我明白了。如果您使用 :py:myfunc 突出显示,则仅当确实存在名称为“myfunc”的文档化方法(或函数)时,突出显示才有效。如果此方法在另一个模块中,则必须提供类似 :py:meth:module.class.myfunc 的路径。
  • 抱歉,我不知道如何显示包含“myfunc”的字符。因此,我看到带有灰色背景的文本,它的语法类似于上面的示例“:py:...”
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 2014-03-02
  • 2021-08-01
  • 1970-01-01
相关资源
最近更新 更多