2012-10-22 6 views
10

I grafici normali generati da R chunks in R file di markdown sono esattamente lì quando convertiti in diapositive html o pdf. Tuttavia, quando vengono convertiti in diapositive del proiettore da pandoc -t beamer ex.md -V theme:Warsaw -o beamer.pdf , i grafici diventano estremamente grandi, specialmente per quelli generati da par(mfrow=c(n,m)), nel qual caso viene visualizzata solo una piccola parte del grafico.I grafici nelle diapositive del beamer convertiti da .md di pandoc sono estremamente grandi

Ho provato a risolvere impostando l'opzione chunk dev='pdf', ma non funziona.

La trama in html è enter image description here

La trama di Beamer è enter image description here

+2

che non è sorprendente; LaTeX è piuttosto brutto nell'impostare una larghezza di default ragionevole per le immagini PNG (i browser Web sono molto migliori); guarda '\ maxwidth' in questa pagina http://yihui.name/knitr/demo/framed/ e combinalo con il trucco' \ setkeys {Gin} {width = \ maxwidth} '; Capisco che le persone tendano ad essere avide, ma Raw LaTeX è davvero la soluzione migliore per l'output PDF (c'è un prezzo da pagare per la semplicità di Markdown). –

+0

@Yihui Grazie. Assolutamente accetta il prezzo – Elaine

risposta

12

La versione di sviluppo di Pandoc include un codice nel modello Beamer che dovrebbe scalare le immagini alla larghezza della diapositiva. Questo potrebbe aiutarti nel tuo caso.

Non è necessario installare lo sviluppo pandoc per utilizzare questo, poiché la modifica riguarda solo un modello. Basta generare una copia del modello di beamer predefinito usando pandoc -D beamer > my.beamer. Inserire le seguenti righe nel my.beamer dopo la linea \usepackage{graphicx}:

\makeatletter 
\def\ScaleIfNeeded{% 
    \ifdim\[email protected]@width>\linewidth 
    \linewidth 
    \else 
    \[email protected]@width 
    \fi 
} 
\makeatother 
\setkeys{Gin}{width=\ScaleIfNeeded} 

Quindi utilizzare Pandoc con l'opzione --template=my.beamer.

+0

È risolto con cura usando questa soluzione. Grazie. – Elaine