2012-10-23 10 views
10

Używam sphinx do generowania dokumentacji html dla projektu. Rozlegle korzystam z field lists.Zastępowanie domyślnego limitu nazwy pola w sfinksie/docutils

Podczas generowania html każda para etykiety/wartości jest renderowana jako pojedynczy wiersz tabeli z dwoma komórkami, jeśli długość etykiety wynosi najwyżej 14 znaków.

Jeśli etykieta jednej pary jest dłuższa niż 14 znaków, etykieta/wartości są renderowane jako dwa wiersze tabeli.

Chcę zwiększyć ograniczenie zawijania do większej wartości (np. 40). Przekonałem się, że limit jest kontrolowany przez opcję docutils z --field-name-limit. Jednak nie mogę znaleźć sposobu ustawienia tej wartości przez sfinksa.

Stworzyłem plik w katalogu głównym dokumentacji docutils.conf o następującej treści:

[general] 
dump_settings: 1 
dump_internals: 1 

[html4css1 writer] 
field_name_limit: 40 

plik jest odczytywany, gdy biegnę Sfinksa. Ustawienia i elementy wewnętrzne są drukowane - z powodu wartości w sekcji [general]. Wśród wydrukowanych wartości, wydrukowano field_name_limit o wartości 40. Pomimo tego opisane przeze mnie opakowanie nadal występuje w wyjściu HTML.

Jak ustawić wartość field_name_limit, aby uzyskać żądane wyjście?

+1

czy próbowałeś podejścia z mojej odpowiedzi? – bmu

+0

FWIW, w wersji Sphinx v 1.6.6 ustawienie z docutils.conf jest przestrzegane. – collapsar

Odpowiedz

0

Myślę, że twoje podejście nie działa, ponieważ sphinx używa własnego programu piszącego HTML.

Jednak myślę, że powinien zadziałać, jeśli dostosujesz styl do field_name. I (raz) używany niestandardowy plik css z

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

lub ustawić go do stałej szerokości.

+0

W Sphinx 1.6.6 takie podejście nie byłoby wykonalne, ponieważ program piszący renderuje nazwę pola i wartość w dwóch różnych wierszach tabeli. – collapsar

+0

To nie działa, ponieważ owijanie jest zaimplementowane w programie piszącym do html, który generuje różne elementy HTML, zobacz: https://github.com/docutils/docutils/blob/84f7b36275804d110e05ac75688960e6f340e698/docutils/docutils/writers/html4css1/ __init __. py # L916 – marbu

0

Jednym ze sposobów, aby to zrobić, aby zastąpić ustawienia w klasie sfinks zwyczaj budowniczy rozciągającej oryginalnego HTML budowniczy i ustaw self.settings.field_name_limit = 0 w prepare_writing(self, docnames) funkcji. Powiedział, że to trochę przesada, chyba że masz już niestandardową klasę budowniczych ...

Powiązane problemy