我使用Sphinx制作一个包含代码示例的网站.
我成功使用.. code-block指令来获取语法高亮.
但我无法使用此代码获得内联语法高亮:
我成功使用.. code-block指令来获取语法高亮.
但我无法使用此代码获得内联语法高亮:
.. role:: bash(code) :language: bash Test inline: :bash:`export FOO="bar"`. .. code-block:: bash export FOO="bar"
对我来说问题是生成的内联代码HTML包含长类名,而不包含代码块.
这是输出HTML(为了便于阅读而缩进):
<p>Test inline: <tt class="code bash docutils literal"> <span class="name builtin"> <span class="pre">export</span> </span> <span class="name variable"> <span class="pre">FOO</span> </span> <span class="operator"> <span class="pre">=</span> </span> <span class="literal string double"> <span class="pre">"bar"</span> </span> </tt>. </p> <p>Test code-block:</p> <div class="highlight-bash"> <div class="highlight"> <pre> <span class="nb">export </span> <span class="nv">FOO</span> <span class="o">=</span> <span class="s2">"bar"</span> </pre> </div> </div>
任何帮助将非常感谢.
解决方法
找到一个更好的(仅限斯芬克斯)解决方案:在sphinx / builders / html.py中找到一条线
from docutils.core import Publisher
并将其更改为:
from docutils.core import Publisher def process_programmatic_settings(self,settings_spec,settings_overrides,config_section): if self.settings is None: defaults = (settings_overrides or {}).copy() # Propagate exceptions by default when used programmatically: defaults.setdefault('traceback',True) defaults.setdefault('Syntax_highlight','short') # ADDED THIS LINE self.get_settings(settings_spec=settings_spec,config_section=config_section,**defaults) Publisher.process_programmatic_settings = process_programmatic_settings
这个解决方案比以前的解决方案更好:因为它不会使css规则的数量增加一倍,也不会修改docutils.
仍然,理想的解决方案只会改变conf.py.所以有很大的改进空间.