Gibt es in Sphinx / Pygments eine Möglichkeit, eine oder mehrere Codezeilen in literalen Includes hervorzuheben?

8

In einigen Sphinx-Dokumenten schreibe ich Code-Beispiele aus einer Zusatzdatei wie folgt:

%Vor%

Dieses spezielle Dokument ist ein Tutorial, in dem die Klassen Schritt für Schritt aufgebaut werden. Ich möchte die gesamte Klasse oder eine einzelne Methode einbeziehen und nur die für diesen Abschnitt interessanten Zeilen hervorheben. Auf diese Weise bleibt der Kontext erhalten, aber die interessanten Teile sind auf einen Blick ersichtlich. Im Moment habe ich mich nur auf Zeilennummern im Text bezogen, was in Ordnung ist, aber alles andere als ideal.

Wenn ich mir die Dokumente und den Code für Sphinx und Segmente anschaue, finde ich keinen offensichtlichen Weg, dies zu tun. Ich bin nicht dagegen, sie zu flicken oder etwas in conf.py zu tun, aber ich fragte mich, ob jemand das gelöst hat.

    
Casey Duncan 18.03.2010, 20:41
quelle

2 Antworten

5

Sphinx hat jetzt eine emphasize-lines Direktive für Literal Includes:

Ссылка

    
Jason Polites 17.04.2012 20:26
quelle
2

Sie könnten die sphinx-Anweisung LiteralInclude in sphinx / directivities / code.py

installieren
  • Dort müssten Sie etwas tun, so dass Sie beim Einfügen von Code eine Anfangs- / Endzeile angeben können, die in diesem Snippet hervorgehoben werden soll.
  • Der zweite Schritt würde erfordern, einige Möglichkeiten zu schaffen, 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 Zeilenbetonungsoption in der literalinclude-Anweisung, die Sie folgendermaßen verwenden können:

%Vor%

wo Line-emphasis eine Startlinie ist, Endzeile relativ zum eingeschlossenen Code, erste Zeile ist 1.

Mit sphinx 0.6.5 unter pypi.python.org/pypi/Sphinx/0.6.5 als Basis ist ein quicky-gepatchtes code.py vorhanden: Ссылка

Beachten Sie, dass das Folgende äquivalent wäre:

Mit der Standard-Sphinx (so ziemlich das, was S.Lott vorgeschlagen hat):

%Vor%

... und benutze die gepatchte Sphinx:

%Vor%

Es kann also nicht genau sein, wonach Sie suchen. Der Patch erstellt einen neuen Knoten für jeden markierten oder nicht markierten Abschnitt des Codes. Jedes von diesen wird von Sphinx als ein getrenntes & lt; div & gt; und & lt; vor & gt; Sektion. 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 gehen, um einen nahtlos hervorgehobenen Stil direkt dort erzeugen zu lassen: nicht trivial.

/ HTH

    
Philippe Ombredanne 27.03.2010 15:41
quelle