2016-03-01 110 views
17

Sto costruendo una presentazione utilizzando rmarkdown e LaTeX/Beamer. Vorrei ridurre la spaziatura tra i comandi R visualizzati e l'uscita R. Credo che questo sia legato alle opzioni di spaziatura del paragrafo in LaTeX/Beamer.Ridurre lo spazio tra i blocchi di codice e l'output del codice nella presentazione di rmarkdown beamer

È qualcosa che dovrei fare in rmarkdown (opzioni chunk, knit_hooks o qualcos'altro?), Nell'intestazione pandoc Yaml (qualche opzione pandoc?) O nel file modello di Trainer LaTeX? Mi sembra che dovrebbe essere nel file modello LaTeX.

Di seguito è riportato un esempio funzionante di un file di markdown minimo e un file di modello .tex che sto utilizzando per controllare alcune impostazioni di beamer.

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 
``` 

lattice 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} 

Ho provato rendendo il carattere R comandi o R-minore produzione, che fa non sembra influenzare la spaziatura del paragrafo.

Ho provato a utilizzare knit_hooks() come in questo esempio: https://github.com/ramnathv/slidify/issues/189, che funziona principalmente, ma non riesco a ridurre la dimensione del codice e dell'output.

Ho anche provato a utilizzare \parskip{0pt} e diverse altre opzioni di beamer o opzioni parskip, che sono commentate nella sezione sopra latex-topmatter.tex. Nessuno di loro sembra modificare la spaziatura tra pezzi di testo, codice R o uscita R. Sto addirittura cercando nel posto giusto?

parskipNotWorking

+0

Hai mai trovare una soluzione a questo? Grazie. – DataJack

+0

@DataJack vedi sotto –

risposta

6

Ecco un esempio di lavoro. Notare le definizioni alla fine del file di intestazione: pezzi di codice

  • sorgente sono contenuti all'interno di un ambiente Shaded che a sua volta utilizza \OuterFrameSep per la sua distanza. Quindi dobbiamo ridefinirlo.
  • Con \preto, vengono anteposti i comandi \topsep=-10pt \partopsep=-10pt ad ogni ambiente verbale. Ciò influenza la spaziatura dei blocchi di output.

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

Grazie per averlo risolto, Martin! Puoi suggerire un altro modo per trovare questa soluzione? Pubblicare la mia domanda qui e aspettare 9 mesi è un modo. Nella caccia attraverso la documentazione in lattice mi sforzo regolarmente per trovare ciò di cui ho bisogno, questa domanda è solo un esempio. – RyanStochastic

+1

Non posso. Sono assolutamente sorpreso che ci sia voluto così tanto tempo visto che la risposta non è così difficile. –