Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Beamer presentation RStudio change font size for chunk

I am using Knit PDF to compile a beamer presentation in RStudio.

---
title: "A.P. Statistics"
author: "Notes for Chapter 3.Rmd"
date: "Monday, October 13, 2014"
output: beamer_presentation
---

## Computer Output

```{r}
summary(lm(cars$dist~cars$speed))
```

How can I change the font size (just for this one chunk, leaving other chunks the same font size) so that the output of this command fits on one slide?

like image 706
David Avatar asked Oct 14 '14 23:10

David


2 Answers

One solution is using knitr hooks. A hook is code that will run before or after the chunk code is executed. You could use it to insert a LaTeX fontsize command in the file.

```{r echo=FALSE}
knitr::knit_hooks$set(mysize = function(before, options, envir) {
  if (before) 
    return(options$size)
})
```

Know you can change the size by

```{r mysize=TRUE, size='\\large'}
1:10
```

One Drawback is that this type of hook will affect all the fonts on a slide, i.e. also the echoed R-Code. Though cumbersome, you could use two consecutive chunks (1st: echo, results no; 2nd: no echo, results yes) to evade this.

```{r results="'hide'}
1:10
```

```{r echo=FALSE, mysize=TRUE, size='\\large'}
1:10
```

PS. Maybe there is a better way by modifying output hooks instead of chunk hooks.

like image 50
Mark Heckmann Avatar answered Oct 25 '22 10:10

Mark Heckmann


I was going to place it as a comment to Mark Heckmann's answer, but the formatting was all screwed.

Actually, if you write your chunk hook like this:

```{r echo=FALSE} 
knitr::knit_hooks$set(mysize = function(before, options, envir) { 
  if (before) { 
    return(options$size) 
  } else { 
    return("\\normalsize") 
  } 
}) 
```

it will do the trick.

In my case, I also included an

knitr::opts_chunk$set(mysize = TRUE, size = "\\tiny")

right below the knitr::knit_hooks$set().

like image 45
Marcelo Ventura Avatar answered Oct 25 '22 09:10

Marcelo Ventura