2012-10-23 3 views
10

Ich verwende sphinx zum Generieren von HTML-Dokumentation für ein Projekt. Ich verwende extensiv field lists.Überschreiben der Standard-Feldnamen begrenzen in sphinx/docutils

Bei der Generierung von HTML wird jedes Label/Wert-Paar als einzelne Tabellenzeile mit zwei Zellen gerendert, wenn die Länge des Labels höchstens 14 Zeichen beträgt.

Wenn das Label eines Paares länger als 14 Zeichen ist, werden die Label/Werte als zwei Tabellenzeilen gerendert.

Ich möchte die Verpackungsgrenze auf einen größeren Wert (z. B. 40) erhöhen. Ich habe festgestellt, dass das Limit von der Option Docutils --field-name-limit gesteuert wird. Ich kann jedoch nicht finden, wie dieser Wert durch Sphinx gesetzt wird.

Ich habe eine docutils.conf Datei in der Dokumentation root mit folgendem Inhalt erstellt:

[general] 
dump_settings: 1 
dump_internals: 1 

[html4css1 writer] 
field_name_limit: 40 

Die Datei wird gelesen, wenn ich Sphinx laufen. Die Einstellungen und Interna werden gedruckt - wegen der Werte im Bereich [general]. Unter den gedruckten Werten wird field_name_limit gedruckt, um Wert 40 zu haben. Trotz allem tritt das beschriebene Wrapping immer noch in der HTML-Ausgabe auf.

Wie stelle ich den Wert field_name_limit so ein, dass ich die gewünschte Ausgabe bekomme?

+1

haben Sie den Ansatz aus meiner Antwort versucht? – bmu

+0

FWIW, in Sphinx Version 1.6.6 wird die Einstellung von docutils.conf berücksichtigt. – collapsar

Antwort

0

Ich denke, Ihr Ansatz funktioniert nicht, weil Sphinx einen eigenen HTML-Writer verwendet.

Aber ich denke, es sollte funktionieren, wenn Sie den Stil für field_name anpassen. I (einmal) verwendet, um eine benutzerdefinierte CSS-Datei mit

.field-name { 
    white-space: nowrap; 
} 

oder es auf eine feste Breite eingestellt.

+0

In Sphinx 1.6.6 wäre dieser Ansatz nicht praktikabel, da der Writer den Feldnamen und den Wert in 2 verschiedenen Tabellenzeilen darstellt. – collapsar

+0

Dies funktioniert nicht, da das Wrapping in docutils html writer implementiert ist, was ein anderes HTML-Element generiert, siehe: https://github.com/docutils/docutils/blob/84f7b36275804d110e05ac75688960e6f340e698/docutils/docutils/writers/html4css1/ __init __. py # L916 – marbu

0

Eine Möglichkeit, dies zu tun ist, um die Einstellung in benutzerdefinierten Sphinx-Builder-Klasse erweitern ursprünglichen HTML-Builder außer Kraft zu setzen, und stellen Sie self.settings.field_name_limit = 0 in prepare_writing(self, docnames) Funktion. Das heißt, das ist ein wenig Overkill, es sei denn, Sie haben bereits eine benutzerdefinierte Builder-Klasse ...