Sie könnten LiteralInclude Richtlinie der Sphinx in sphinx/Richtlinien/code.py
- Patch Es würden Sie etwas tun müssen, so dass, wenn Sie Code enthalten Sie eine Start-/Endlinie angeben können in diesem Snippet zu betonen .
- Der zweite Schritt würde erfordern einige Möglichkeiten, um die Dinge anders hervorzuheben. Der einfachste Ansatz ist, dass der Teil ohne Betonung nicht hervorgehoben wird und der Teil mit Betonung hervorgehoben wird. Das würde vermeiden, komplexere Hacking der Stile und Hervorhebungen zu machen.
Dies gibt zum Beispiel eine neue Linien-Emphasis-Option in der literalinclude-Direktive, die Sie auf diese Weise verwenden können:
.. literalinclude:: ../sphinx/directives/code.py
:pyobject: Highlight
:lines-emphasis: 6,13
wo Line-Schwerpunkt ist es, eine Startlinie, Endlinie in Bezug auf den enthaltenen Code , erste Zeile ist 1.
Sphinx 0.6.5 bei pypi.python.org/pypi/Sphinx/0.6.5 als Basis ein quicky gepatchten code.py besteht: http://paste.pocoo.org/show/194456/
beachten, dass die folgenden wäre gleich wertigen:
den Standard-Sphinx Mit Hilfe von (ziemlich viel, was S.Lott vorgeschlagen):
.. 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-
... und mit der gepatchten Sphinx:
.. literalinclude:: ../sphinx/directives/code.py
:lines-emphasis: 37,47
Daher kann es nicht genau das, was du suchst nach. Der Patch erstellt einen neuen Knoten für jeden markierten oder nicht markierten Abschnitt des Codes. Jeder von diesen wird von Sphinx als separater < div> und < pre> Abschnitt gerendert. Um darüber hinaus zu gehen, möchten Sie vielleicht ein Stylesheet erstellen, das die Zeilen mit Betonung besser herauszieht. Weitere Hacks müssen möglicherweise tief in die Eingeweide von Sphinx und Pygments eindringen, um einen nahtlos hervorgehobenen Stil direkt dort erzeugen zu lassen: nicht trivial.
/HTH
„Auf diese Weise der Kontext erhalten bleibt, aber die interessanten Teile sind offensichtlich auf einen Blick“ Ich würde nicht zustimmen diese Behauptung, ich. Ich bin mir nicht sicher, was Sie tun, ist wirklich eine Menge Mühe wert. Vielleicht könnten Sie andere Präsentationen mit ': lines:' versuchen, um einzelne Zeilen aus der Datei auszuwählen. –
Das mache ich sicher. Aber es gibt Fälle, in denen es nicht ausreicht. Insbesondere, wenn Sie versuchen, auf bereits im Tutorial erstellten Dingen aufzubauen. Ein neues Konzept erfordert möglicherweise das Hinzufügen neuer Zeilen zu einem zuvor erstellten Klassenkonstruktor. Ich möchte den Konstruktor in seiner Gesamtheit für den Kontext zeigen, aber die hinzugefügten Zeilen wie ein Diff hervorheben. Der Leser wäre mit dem bestehenden Code bereits vertraut und muss daher nicht erklärt werden, aber der Kontext, in dem die neuen Zeilen hinzugefügt werden, ist wichtig für das Verständnis des Gesamtbildes. –
Dies wäre sehr nützlich. – codeape