2016-03-01 77 views
17

Buduję prezentację za pomocą rmarkdown i LaTeX/Beamer. Chciałbym zmniejszyć odstępy pomiędzy wyświetlanymi komendami R i wyjściem R. Wierzę, że jest to związane z opcjami odstępów akapitu w LaTeX/Beamer.Ogranicz przestrzeń między fragmentami kodu i wyjściem kodu w prezentacji rzutnika rmarkdown

Czy jest to coś, co powinienem zrobić w rmarkdown (opcje porcji, knit_hooks lub coś innego?), W nagłówku Yaml pandoc (jakaś opcja pandoc?), Czy w pliku szablonu LaTeXa beamer? Czuję, że powinno to być w pliku szablonu LaTeX.

Poniżej znajduje się działający przykład minimalnego pliku obniżki oraz plik szablonu .tex, którego używam do kontrolowania niektórych ustawień rzutnika.

example.Rmd

--- 
title: "Untitled" 
author: "Ryan" 
date: "March 1, 2016" 
output: 
    beamer_presentation: 
    pandoc_args: '--latex-engine=xelatex' 
    includes: 
     in_header: latex-topmatter.tex 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE) 
``` 

## Vertical Spacing is too much 

Here is a working example. 

- some 
- bullets 

Example code: 

```{r, echo = TRUE} 
a <- 1 
a 
a+a 
``` 

lateksu topmatter.tex

% declare overall beamer theme to use as baseline 
\usetheme{default} 

% make code-output smaller 
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{fontsize=\tiny,commandchars=\\\{\}} 

% make console-output smaller: 
\makeatletter 
\def\verbatim{\tiny\@verbatim \frenchspacing\@vobeyspaces \@xverbatim} 
\makeatother 

% set vertical spacing between paragraphs: 
% \parskip{0pt} 
% \addtobeamertemplate{blocks}{}{\setlength{\parskip}{0pt}} 
% \addtobeamertemplate{block begin}{}{\setlength{\parskip}{0pt}} 
% \addtobeamertemplate{block end}{}{\setlength{\parskip}{0pt}} 
% % \setlength{\emergencystretch}{0em} 
\setlength{\parskip}{0pt} 

Próbowałem dokonywania czcionkę R poleceń lub R-wyjścia mniejsze, co robi nie wydaje się wpływać na odstępy między akapitami.

Próbowałem używać knit_hooks(), jak w tym przykładzie: https://github.com/ramnathv/slidify/issues/189, który w większości działa - ale wtedy nie mogę zmniejszyć rozmiaru czcionki kodu i wyjścia.

Próbowałem również użyć \parskip{0pt} i kilku innych opcji rzutnika lub opcji parskip, które są komentowane w powyższej sekcji latex-topmatter.tex. Żadne z nich nie wydaje się zmieniać odstępów między fragmentami tekstu, kodu R lub wyjścia R. Czy szukam nawet we właściwym miejscu?

parskipNotWorking

+0

Czy kiedykolwiek znaleźć rozwiązanie tego? Dzięki. – DataJack

+0

@DataJack patrz poniżej –

Odpowiedz

6

Oto przykład roboczych. Zauważ definicje na końcu pliku nagłówka:

  • Źródło kawałki kodu są zawarte wewnątrz Shaded środowiska, które z kolei wykorzystuje \OuterFrameSep jego odstępów. Musimy to na nowo zdefiniować.
  • Z \preto dodajemy polecenia \topsep=-10pt \partopsep=-10pt do każdego dosłownego środowiska. Wpływa to na rozmieszczenie fragmentów wyjściowych.

example.Rmd

--- 
title: "Untitled" 
author: "Martin" 
date: "January 4, 2017" 
output: 
    beamer_presentation: 
    keep_tex: yes 
    pandoc_args: --latex-engine=xelatex 
    includes: 
     in_header: latex-topmatter.tex 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE) 
``` 

## Vertical Spacing is just right 

Here is a working example. 

- some 
- bullets 

Example code: 

```{r, echo = TRUE} 
a <- 1 
a 
a+a 
``` 

latex_topmatter.tex

% declare overall beamer theme to use as baseline 
\usetheme{default} 

% make code-output smaller 
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{fontsize=\tiny,commandchars=\\\{\}} 

% make console-output smaller: 
    \makeatletter 
\def\verbatim{\tiny\@verbatim \frenchspacing\@vobeyspaces \@xverbatim} 
\makeatother 


\setlength{\parskip}{0pt} 


\setlength{\OuterFrameSep}{-4pt} 
\makeatletter 
\preto{\@verbatim}{\topsep=-10pt \partopsep=-10pt } 
\makeatother 

enter image description here

+0

Dzięki za rozwiązanie tego, Martin! Czy możesz zaproponować inny sposób znalezienia tego rozwiązania? Zamieszczanie mojego pytania tutaj i czekanie 9 miesięcy to jeden sposób. Podczas polowania poprzez dokumentację lateksową regularnie staram się znaleźć to, czego potrzebuję, to pytanie jest tylko jednym z przykładów. – RyanStochastic

+1

Nie mogę. Jestem absolutnie zaskoczony, że zajęło to tyle czasu, że odpowiedź nie jest trudna. –