gjabel gjabel - 4 months ago 113
LaTeX Question

Code chunk font size in Beamer with knitr and latex

I am trying get some R code to fit on my beamer slides. It does not seem possible to change the font size via the

size
argument for the code chunk as you might do for other knitr type documents. The only way seems to be with
\footnotesize
before every code chunk. This is getting frustrating, as I have lots of code chunks and in some cases I have to use
\normalsize
after for my LaTeX bullet points.

---
title: "Untitled"
output:
beamer_presentation:
includes:
in_header: header.txt
---

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

## R Markdown

```{r}
summary(cars)
```

\footnotesize
```{r}
summary(cars)
```


enter image description here

In my
header.txt
(below) I have experimented with a couple of bits of code from http://yihui.name/knitr/demo/beamer/ but with no luck.

\ifdefined\knitrout
\renewenvironment{knitrout}{\begin{footnotesize}}{\end{footnotesize}}
\else
\fi

\makeatletter
\let\oldalltt\alltt
\def\alltt{\@ifnextchar[\alltt@i \alltt@ii}
\def\alltt@i[#1]{\oldalltt[#1]\footnotesize}
\def\alltt@ii{\oldalltt\footnotesize}
\makeatother


but really out my depth here.

Answer

Drawing on this tex.SE answer, we could redefine the Shaded environment that surrounds R code to make it footnotesize (and the verbatim environment for output). Add this to your header.txt:

%% change fontsize of R code
\let\oldShaded\Shaded
\let\endoldShaded\endShaded
\renewenvironment{Shaded}{\footnotesize\oldShaded}{\endoldShaded}

%% change fontsize of output
\let\oldverbatim\verbatim
\let\endoldverbatim\endverbatim
\renewenvironment{verbatim}{\footnotesize\oldverbatim}{\endoldverbatim}
Comments