2012-03-27 22 views
8

Trovo che il carattere di esempio di codice predefinito nel PDF generato dalla sfinge sia troppo grande.Come si modifica la dimensione del carattere di esempio del codice in output PDF LaTeX con sfinge?

Ho provato a sporcarmi le mani nel file .tex generato inserendo comandi di dimensioni font come \tiny sopra i blocchi di codice, ma rende solo la riga sopra il blocco di codice minuscolo, non il blocco di codice stesso.

Non so cos'altro fare: sono un principiante assoluto con LaTeX.

risposta

8

ho lavorato fuori. Pygments utilizza un blocco \begin{Verbatim} per indicare frammenti di codice, che utilizza il pacchetto fancyvrb. Lo documentation I found (warning: PDF) menziona un'opzione formatcom per il blocco verbatim.

Pygments' latex writer source indica una variabile di istanza, verboptions, viene pinzato alla fine di ogni blocco verbatim e Sfinge' latex bridge consente di sostituire il LatexFormatter.

Nella parte superiore del mio file conf.py, ho aggiunto la seguente:

from sphinx.highlighting import PygmentsBridge 
from pygments.formatters.latex import LatexFormatter 

class CustomLatexFormatter(LatexFormatter): 
    def __init__(self, **options): 
     super(CustomLatexFormatter, self).__init__(**options) 
     self.verboptions = r"formatcom=\footnotesize" 

PygmentsBridge.latex_formatter = CustomLatexFormatter 

\footnotesize era la mia preferenza, ma un elenco delle dimensioni è disponibile here

+0

l'unica risposta che ha funzionato per me. +1 – Trilarion

4

Per modificare le opzioni di output di lattice nella sfinge, impostare la chiave latex_elements nel file di configurazione di build, la documentazione è here.

Per modificare la dimensione del carattere per tutti i tipi di carattere, utilizzare pointsize.

E.g.

latex_elements = { 
    'pointsize':'10pt' 
} 

Per modificare altre impostazioni di lattice che sono elencati nella documetntation utilizzare preamble o utilizzare una classe di documento personalizzato in latex_documents.

E.g.

mypreamble='''customlatexstuffgoeshere 
''' 
latex_elements = { 
'papersize':'letterpaper', 
'pointsize':'11pt', 
'preamble':mypreamble 
} 

Leggendo il codice sorgente Sfinge di default il codice nel LatexWriter frammenti di codice set alla \code lattice primitivo.

Quindi quello che vuoi fare è sostituire il \code con una sostituzione adatta.

Questo viene fatto inserendo un comando di lattice come \newcommand{\code}[1]{\texttt{\tiny{#1}}} sia come parte del preambolo o come parte di una classe di documento personalizzato per sfinge che viene impostato nel latex_documents come chiave documentclass. Un esempio di classe di documento sfinge è disponibile here.

Altro che solo rendendo più piccola con \tiny è possibile modificare la classe latex_documents documento o il preambolo latex_elements di utilizzare le liste dei pacchetti in lattice per il codice più fantasia formattazione come nella questione StackOverflow here.

Il materiale del pacchetto dal post collegato andrebbe come una classe di documento personalizzata e la ridefinizione simile a \newcommand{\code}[1]{\begin{lstlisting} #1 \end{lstlisting}} sarebbe parte del preambolo.

In alternativa è possibile scrivere un'estensione di sfinge che estende il writer di lattice predefinito con uno scrittore personalizzato in lattice di propria scelta, anche se questo è uno sforzo significativamente maggiore.

Altre domande StackOverflow rilevanti includono

0

È possibile aggiungere un comando Verbatim modificata nella vostra PREAMBOLO (nota in questo caso la dimensione del carattere viene modificato in minuscolo)

\renewcommand{\Verbatim}[1][1]{% 
    % list starts new par, but we don't want it to be set apart vertically 
    \bgroup\parskip=0pt% 
    \smallskip% 
    % The list environement is needed to control perfectly the vertical 
    % space. 
    \list{}{% 
    \setlength\parskip{0pt}% 
    \setlength\itemsep{0ex}% 
    \setlength\topsep{0ex}% 
    \setlength\partopsep{0pt}% 
    \setlength\leftmargin{10pt}% 
    }% 
    \item\MakeFramed {\FrameRestore}% 
    \tiny % <---------------- To be changed! 
    \OriginalVerbatim[#1]% 
} 
Problemi correlati