2012-10-22 15 views
10

Normalne wykresy wygenerowane przez R chunks w plikach R Markdown są dokładnie tam, po przekonwertowaniu na slajdy html lub pdf. Jednak po przekonwertowaniu ich na slajdy beamer przez pandoc -t beamer ex.md -V theme:Warsaw -o beamer.pdf wykresy stają się bardzo duże, szczególnie w przypadku wygenerowanych przez par(mfrow=c(n,m)), w którym to przypadku wyświetlana jest tylko niewielka część wykresu.Działki w slajdach beamerowych przekonwertowane z .md przez pandoc są wyjątkowo duże.

Próbowałem naprawić, ustawiając opcję porcji dev='pdf', ale nie wyszło.

Działka w HTML jest enter image description here

Działka w rzutnik jest enter image description here

+2

, co nie jest zaskakujące; LaTeX jest dość zły przy ustawianiu rozsądnej domyślnej szerokości dla obrazów PNG (przeglądarki internetowe są znacznie lepsze); spójrz na '\ maxwidth' na tej stronie http://yihui.name/knitr/demo/framed/ i połącz to z trikiem' \ setkeys {Gin} {width = \ maxwidth} '; Rozumiem, że ludzie są chciwi, ale surowy LaTeX jest naprawdę najlepszym rozwiązaniem dla plików PDF (cena za prostotę Markdown). –

+0

@Yihui Dzięki. Całkowicie zaakceptuj cenę. – Elaine

Odpowiedz

12

Wersja rozwój pandoc zawiera trochę kodu w szablonie rzutnik multimedialny, który powinien skalowania obrazów do szerokości slajdu. To może ci pomóc w twojej sprawie.

Nie trzeba instalować pakietu deweloperskiego, aby go użyć, ponieważ zmiana dotyczy tylko szablonu. Po prostu wygeneruj kopię domyślnego szablonu rzutnika, używając pandoc -D beamer > my.beamer. Wstaw poniższe linie do my.beamer po linii \usepackage{graphicx}:

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

Następnie użyj pandoc z opcją --template=my.beamer.

+0

Jest to starannie rozwiązany za pomocą tego rozwiązania. Dzięki. – Elaine