2012-10-23 5 views
10

Sto usando sphinx per generare documentazione html per un progetto. Faccio largo uso di field lists.Sovrascrittura del limite del nome campo predefinito in sfinge/docutils

Durante la generazione di html, ogni coppia etichetta/valore viene visualizzata come una singola riga di tabella con due celle se la lunghezza dell'etichetta è di massimo 14 caratteri.

Se l'etichetta di una coppia è più lunga di 14 caratteri, l'etichetta/i valori vengono visualizzati come due righe di tabella.

Desidero aumentare il limite di avvolgimento su un valore maggiore (ad esempio 40). Ho scoperto che il limite è controllato dall'opzione --field-name-limit di docutils. Tuttavia, non riesco a trovare come impostare questo valore attraverso la sfinge.

ho creato un file docutils.conf nella radice di documentazione con il seguente contenuto:

[general] 
dump_settings: 1 
dump_internals: 1 

[html4css1 writer] 
field_name_limit: 40 

Il file viene letto quando corro sfinge. Le impostazioni e gli interni sono stampati, a causa dei valori nella sezione [general]. Tra i valori stampati, field_name_limit viene stampato per il valore 40. Nonostante tutto, il wrapping che ho descritto si verifica ancora nell'output html.

Come impostare il valore di field_name_limit in modo da ottenere l'output desiderato?

+1

hai provato l'approccio dalla mia risposta? – bmu

+0

FWIW, nella versione Sphinx v 1.6.6 viene rispettata l'impostazione da docutils.conf. – collapsar

risposta

0

Penso che il tuo approccio non funzioni perché la sfinge usa il proprio autore html.

Tuttavia, penso che dovrebbe funzionare, se si adatta lo stile per field_name. I (una volta) hanno utilizzato un file CSS personalizzato con

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

o impostarlo su una larghezza fissa.

+0

Nella Sfinge 1.6.6 questo approccio non sarebbe fattibile in quanto Writer rende il nome del campo e il valore in 2 diverse righe di tabella. – collapsar

+0

Questo non funziona perché il wrapping è implementato in docutils html writer, che genera un diverso elemento html, vedere: https://github.com/docutils/docutils/blob/84f7b36275804d110e05ac75688960e6f340e698/docutils/docutils/writers/html4css1/ __init __. py # L916 – marbu

0

Un modo per farlo è quello di ignorare l'impostazione in sfinge personalizzato classe costruttore si estende costruttore HTML originale, e impostare self.settings.field_name_limit = 0 in prepare_writing(self, docnames) funzione. Detto questo, questo è un po 'eccessivo, a meno che tu non abbia già una classe di builder personalizzata ...