two-column layouts in RStudio presentations/slidify/pandoc two-column layouts in RStudio presentations/slidify/pandoc r r

two-column layouts in RStudio presentations/slidify/pandoc


This is an old Q, but I was recently plagued by a similar question, here's what I found:

Using the RPres format, two columns can be specified like so (details). Note that RPres can only be converted to HTML by clicking a button in RStudio, there doesn't seem to be any command line method, which is a bit annoying. Despite, that I'd say it is currently the simplest and most flexible method for getting slide columns with markdown:

=== Two Column Layout  ===This slide has two columns***```{r, echo=FALSE}plot(cars)```

enter image description here

Some flexibility is afforded by adjusting the column proportions:

===Two Column Layout  ===left: 30%This slide has two columns***```{r, echo=FALSE}plot(cars)```

enter image description here

With rmarkdown we can get two columns, but with no control over where the break is, which is a bit of a problem:

---output: ioslides_presentation---## Two Column Layout  {.columns-2}This slide has two columns```{r, echo=FALSE}plot(cars)```

enter image description here

We can also mix markdown and LaTeX in an Rmd file using the beamer_presentation format in RStudio to get two columns like this, but can't run any code in either column, which is a limitation:

---output: beamer_presentation---Two Column Layout -------\begin{columns}\begin{column}{0.48\textwidth}This slide has two columns\end{column}\begin{column}{0.48\textwidth}If I put any code in here I get an error, seehttps://support.rstudio.com/hc/communities/public/questions/202717656-Can-we-have-columns-in-rmarkdown-beamer-presentations-\end{column}\end{columns}

enter image description here

Seems like a regular Rnw LaTeX doc is the best way to get columns if you want to use LaTex, not this markdown hybrid (cf. two column beamer/sweave slide with grid graphic)

In all of the above an image can be placed in an column.

The slidify website has instructions on making two columns here: http://slidify.org/customize.html but it's not clear what has to go into the assets/layouts folder to make it work


I now have what I think is a reasonable solution that should apply at least to ioslides-based solutions, and maybe (?) to other HTML5-based formats. Starting here, I added

<style>div#before-column p.forceBreak {    break-before: column;}div#after-column p.forceBreak {    break-after: column;}</style>

to the beginning of my document; then putting <p class="forceBreak"></p> within a slide with {.columns-2} breaks the column at that point, e.g.

## Latin hypercube sampling {.columns-2}- sample evenly, randomly across (potentially many) uncertain parameters<p class="forceBreak"></p>![](LHScrop.png)[User:Saittam, Wikipedia](https://commons.wikimedia.org/wiki/File:LHSsampling.png#/media/File:LHSsampling.png)

There may be an even better way, but this isn't too painful.

@ChrisMerkord points out in comments that

.forceBreak { -webkit-column-break-after: always; break-after: column; }

worked instead (I haven't tested ...)


You can use fenced_divs notation or ::: to create columns or `Two Content layout'. See also this page to know more about the notation.

## Slide With Image Left::: columns:::: columnleft:::::::: columnright```{r your-chunk-name, echo=FALSE, fig.cap="your-caption-name"}knitr::include_graphics("your/figure/path/to/the-image.pdf")#The figure will appear on the right side of the slide...```:::::::

Since pandoc 2+, which supports the notation, was implemented in RStudio v1.2+, you may need to install RStudio v1.2+ first. The installation is easy enough (at least in my case); just download and install RStudio v1.2+. In the way of installation, the former version of RStudio on your computer will be replaced with the new one without uninstalling it manually.

The ::: notation can be used even when you knit .Rmd files with beamer_presentation option, as well as when you create HTML slides. So we don't have to neither mix markdown and LaTeX notation in one file, nor add additional codes any longer: just knit the file as you knit other .Rmd with other options.