Die Sphinx-Dokumentationsprozessor-Erweiterung funktioniert anders für die HTML- und LaTeX-Ausgabe?

8

Ich habe eine einfache Sphinx-Erweiterung wie folgt:

%Vor%

Gegeben ein Dokument mit

%Vor%

Die HTML-Ausgabe enthält »Test: bar«, aber die LaTeX-Ausgabe enthält »Test:?« (der Standardwert). Ich habe überprüft, dass node['foo'] nach der Zuweisung in TestDirective.run() den richtigen Wert hat, aber das scheint nicht zu bleiben, bis der LaTeX Writer läuft.

Was mache ich falsch?

    
Anselm Lingnau 15.11.2012, 01:24
quelle

1 Antwort

3

Nachdem ich den LaTeX-Writer für Sphinx durchgegangen bin, habe ich das Problem hier gefunden. Auf diese Weise legen Sie einen Standardwert für das Schlüsselwort 'foo' im Initiator testnode fest.

Es gibt einen Punkt im LaTeX-Writer, dass er eine Tiefenkopie Ihres gesamten Dokumentenbaums erstellt, um ihn in einen anderen Baum einzufügen. Eine deepcopy auf einem Knoten Element initialisiert einen neuen Knoten derselben Klasse und übergibt alle Attribute und Inhalte des ursprünglichen Knotens über den Konstruktor. Wenn Ihr testnode also kopiert wird, überschreibt Ihr Konstruktor das ursprüngliche Attribut 'foo', das an den Konstruktor übergeben wird. Schreibe es stattdessen so und es sollte funktionieren:

%Vor%

Dies verhindert, dass der Standardwert einen expliziten Wert für das Attribut überschreibt, das an den Konstruktor übergeben wurde. Es sind mehrere andere Variationen möglich.

    
Iguananaut 21.12.2012 16:28
quelle

Tags und Links