2010-03-18 17 views
8

在一些狮身人面像文档我写,我包括代码样本从辅助文件,像这样:在Sphinx/Pygments中是否有一种方法强调字面上的一行或多行代码?

.. literalinclude:: mymodule.py 
    :pyobject: MyClass 
    :linenos: 

这种特殊的文档是一个教程,其中类是建立一步一步来。我想要做的是包括整个班级或一种方法,并只强调该部分的兴趣点。这种方式保留了上下文,但有趣的部分一目了然。现在我已经诉诸于文本中的行号,这是可以的,但很不理想。

查看文档和代码狮身人面像和pygments我没有找到一个明显的方式来做到这一点。我不反对修补它们或者在conf.py中做一些棘手的事情,但我想知道是否有人解决了这个问题。

+0

“这样的背景下被保留,但有趣的部分是一目了然明显的”我不同意这个说法,我自己。我不确定你在做什么是非常值得的。也许你可以使用':lines:'来尝试其他演示文稿,从文件中挑选单独的行。 –

+0

我当然这样做。但有些情况是不够的。特别是在尝试构建本教程前面创建的东西时。一个新概念可能需要向之前创建的类构造函数添加新行。我想在整体上显示构造函数的上下文,但强调添加的行,有点像差异。读者将已经熟悉现有的代码,所以不需要解释,但添加新行的位置的上下文对于理解全局很重要。 –

+0

这会非常有用。 – codeape

回答

2

你可以修补狮身人面像的LiteralInclude指令在狮身人面像/指令/ code.py

  • 有你需要做的事情,例如,当你有代码,您可以指定一个开始/结束线在这个片段中强调。
  • 第二步需要创建一些方法来突出显示不同的东西。最简单的方法是,不强调的部分不突出显示,强调的部分突出显示。这将避免对风格和突出显示进行更复杂的黑客行为。

这使得例如在literalinclude指令新线加重选项,你可以用这样的方式:

.. literalinclude:: ../sphinx/directives/code.py 
    :pyobject: Highlight 
    :lines-emphasis: 6,13 

其中行重点是启动线,相对于包括代码端线,第一行是1

在pypi.python.org/pypi/Sphinx/0.6.5使用斯芬克斯0.6.5作为碱的quicky修补code.py有:http://paste.pocoo.org/show/194456/

请注意,下面将是equi价:

使用标准的狮身人面像(差不多就是美国洛特建议):

.. literalinclude:: ../sphinx/directives/code.py 
    :language: none 
    :lines: 0-36 
.. literalinclude:: ../sphinx/directives/code.py 
    :lines: 36-46 
.. literalinclude:: ../sphinx/directives/code.py 
    :language: none 
    :lines: 37- 

...和使用补丁的狮身人面像:

.. literalinclude:: ../sphinx/directives/code.py 
    :lines-emphasis: 37,47 

因此它可能不会是什么你正在寻找。该修补程序为代码的每个突出显示或未突出显示的部分创建一个新节点。这些将由Sphinx作为单独的< div>和< pre>部分呈现。要超越这一点,您可能需要创建一个能够更好地突出重点的样式表。进一步的黑客可能需要深入Sphinx和Pygments的内心,直接在那里产生一个无缝强调的风格:不是微不足道的。

/HTH

相关问题