2012-03-16 3 views
17

Lo strumento di documentazione di Sphinx offre temi PDF diversi come se offrisse diversi temi HTML?Sfinge temi PDF

I Ho cercato su Google il problema ma non riesco a trovare una risposta, il che mi porta a credere che la risposta sia "no". Eppure, pensavo di chiedere qui.

Grazie.

risposta

20

In primo luogo, Sfinge non genera output PDF di per sé, anche se ci sono due metodi generali per ottenere da file di origine Sphinx di output PDF:

  1. utilizzare il generatore di lattice, e quindi uno strumento separato come latex2pdf per generare l'output PDF
  2. usare il plugin Sfinge dalla rst2pdf project

detto questo c'è un sacco di potenziale per la personalizzazione lo stile del vostro output PDF utilizzando entrambi i metodi.

  1. Quando si utilizza il metodo latex-> pdf, è possibile personalizzare l'output in lattice utilizzando una serie di opzioni nel file di configurazione sfinge. Vedi here. Questo metodo è in qualche modo meno conveniente dei temi HTML che Sphinx usa per la generazione di HTML, sebbene (IMO).
  2. Quando si utilizza rst2pdf è possibile definire il proprio foglio di stile, che è descritto più dettagliatamente nello manual (vedere sotto l'intestazione "Stili"). rst2pdf include un numero di fogli di stile, che possono essere combinati per vari risultati. E, naturalmente, puoi anche modificarli o crearne di tuoi (sono solo file JSON). Questi fogli di stile supportano anche una sorta di ereditarietà, quindi si comportano più come i temi Sfinge HTML rispetto al metodo precedente.
2

Non ci sono temi predefiniti per l'output PDF per Sfinge. Ma LaTex offre un ricco set di opzioni per lo stile del documento. Il mio problema era trovare il modo corretto di dare uno stile al documento con sfinge. Ecco la strada, che ha funzionato per me:

Per prima cosa guarda nello conf.py. Lì troverai l'opzione latex_elements. Con questa opzione puoi aggiungere i tuoi comandi LaTex all'output. Ad esempio:

latex_elements = { 
# The paper size ('letterpaper' or 'a4paper'). 
'papersize': 'a4paper', 

# The font size ('10pt', '11pt' or '12pt'). 
'pointsize': '12pt', 

'fontpkg': r""" 
\PassOptionsToPackage{bookmarksnumbered}{hyperref} 

""", 

# Additional stuff for the LaTeX preamble. 
'preamble': r""" 
\usepackage{setspace} 
""", 

'footer': r""" 
""", 

'maketitle': r''' 
\pagenumbering{arabic} 
''', 
} 

Ci sono alcuni punti importanti da sapere.

  • Usa r""" per evitare conflitti con python
  • Anche se preamble sarebbe il punto diritto di aggiungere \usepackage si possono avere conflitti con le impostazioni predefinite Sfinge. Guarda fontpkg nell'esempio. È il primo incluso nel documento di output .tex. Se devi impostare le opzioni per i pacchetti predefiniti, fallo qui.
  • maketitle consente di definire la propria pagina del titolo. Vedi alcuni documenti in lattice. Ho impostato \pagenumbering per avere il sommario con numeri arabi, quindi il contenuto reale inizia alla pagina "1".

Con la giusta conoscenza dei comandi Latex è possibile ottenere una buona tematica con pochi comandi. Una buona fonte per trovare aiuto è https://tex.stackexchange.com/ dove i problemi più comuni hanno una soluzione. Ma trovare i comandi Latex appropriati è molto più difficile che scegliere un tema come fatto per HTML.

Potrebbe essere utile dare un'occhiata all'uscita Tex sotto ./_build. Qui puoi vedere come sono state incluse le opzioni latex_elements nel documento.