Ben*_*ker 58 r rstudio knitr r-markdown slidify
我正在努力想出一个很好的系统来生成幻灯片和随附的讲义.理想的系统具有以下属性:
pandoc 幻灯片分隔符格式(在指定级别的标题之后自动生成新幻灯片)是首选sed),但不想写一个庞大的基础设施以下是我迄今为止发现的各种选项:
RStudio演示文稿(.Rpres文件):
pandoc幻灯片分隔符格式rmarkdown.它解决了上述许多.Rpres格式问题.pandoc:可能是唯一具有脚注,参考书目支持等功能的降价转换器.我也可以使用tufte-handout类pandoc生成LaTeX ,符合我的美容标准.
pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html,但它似乎不是......Rnw编写(knitr-dialect Sweave)而不是R markdown开始.这会给我最大的灵活性......
毕竟,我的具体问题是:为HTML输出生成两列布局的最佳(最简单)方法是什么?
任何其他建议也将不胜感激.
Ben*_*Ben 28
这是一个古老的Q,但最近我被一个类似的问题困扰,这是我发现的:
使用RPres格式,可以像这样指定两列(详细信息).请注意,RPres只能通过单击RStudio中的按钮转换为HTML,似乎没有任何命令行方法,这有点烦人.尽管如此,我认为它是目前使用markdown获取幻灯片列的最简单,最灵活的方法:
===
Two Column Layout
===
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
Run Code Online (Sandbox Code Playgroud)

通过调整色谱柱比例可以提供一些灵活性:
===
Two Column Layout
===
left: 30%
This slide has two columns
***
```{r, echo=FALSE}
plot(cars)
```
Run Code Online (Sandbox Code Playgroud)
使用rmarkdown我们可以获得两列,但无法控制中断的位置,这有点问题:
---
output: ioslides_presentation
---
## Two Column Layout {.columns-2}
This slide has two columns
```{r, echo=FALSE}
plot(cars)
```
Run Code Online (Sandbox Code Playgroud)

我们也可以使用beamer_presentationRStudio中的格式在一个Rmd文件中混合markdown和LaTeX 来获得这样的两列,但不能在任何一列中运行任何代码,这是一个限制:
---
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, see
https://support.rstudio.com/hc/communities/public/questions/202717656-Can-we-have-columns-in-rmarkdown-beamer-presentations-
\end{column}
\end{columns}
Run Code Online (Sandbox Code Playgroud)

看起来像常规的Rnw LaTeX doc是获取列的最佳方式,如果你想使用LaTex,而不是这个降价混合(参见两列beamer/sweave slide with grid graphic)
在上述所有情况中,图像可以放在一列中.
slidify网站有关于在这里列出两列的说明:http://slidify.org/customize.html 但是不清楚要进入assets/layouts文件夹以使其工作
Car*_*era 13
您可以使用fenced_divs符号或:::创建列或“两个内容布局”。另请参阅此页面以了解有关该符号的更多信息。
## Slide With Image Left
::: columns
:::: column
left
::::
:::: column
right
```{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...
```
::::
:::
Run Code Online (Sandbox Code Playgroud)
由于pandoc 2+支持符号的 是在 中实现的RStudio v1.2+,因此您可能需要先安装RStudio v1.2+。安装很容易(至少在我的情况下);只需下载并安装RStudio v1.2+。在安装方式RStudio上,您电脑上的旧版本将被替换为新版本,无需手动卸载。
:::即使您.Rmd使用beamer_presentation选项编织文件以及创建 HTML 幻灯片时,也可以使用该符号。因此,我们既不必在一个文件中混合 Markdown 和 LaTeX 符号,也不必再添加其他代码:只需在.Rmd使用其他选项编织其他文件时编织文件即可。
Ben*_*ker 12
我现在拥有的是一个合理的解决方案,至少应该适用于ioslides基于解决方案的解决方案,也许(?)适用于其他基于HTML5的格式.从这里开始,我补充道
<style>
div#before-column p.forceBreak {
break-before: column;
}
div#after-column p.forceBreak {
break-after: column;
}
</style>
Run Code Online (Sandbox Code Playgroud)
到我的文件的开头; 然后放入<p class="forceBreak"></p>一张幻灯片,{.columns-2}在那一点打破列,例如
## Latin hypercube sampling {.columns-2}
- sample evenly, randomly across (potentially many) uncertain parameters
<p class="forceBreak"></p>

[User:Saittam, Wikipedia](https://commons.wikimedia.org/wiki/File:LHSsampling.png#/media/File:LHSsampling.png)
Run Code Online (Sandbox Code Playgroud)
可能有更好的方法,但这不是太痛苦.
@ChrisMerkord在评论中指出
.forceBreak { -webkit-column-break-after: always; break-after: column; }
Run Code Online (Sandbox Code Playgroud)
工作(我还没有测试......)
小智 7
我从这里得到了一个想法,基本的解决方案是:
### Function *inner_join*
. . .
`<div style="float: left; width: 50%;">`
``` {r, echo = FALSE, results = 'markup', eval = TRUE}
kable(cbind(A,B))
```
`</div>`
`<div style="float: right; width: 50%;">`
```{r, echo = TRUE, results = 'markup', eval = TRUE}
inner_join(A,B, by="C")
```
`</div>`
Run Code Online (Sandbox Code Playgroud)
有关投影仪错误的解决方法.
总之:错误与pandoc转换引擎,这之间的一切治疗\begin{...}和\end{...}为TeX的.它可以通过给予新的定义为避免begin{column}和end{column}在YAML头.
创建mystyle.tex并在那里写:
\def\begincols{\begin{columns}}
\def\begincol{\begin{column}}
\def\endcol{\end{column}}
\def\endcols{\end{columns}}
Run Code Online (Sandbox Code Playgroud)
在Rmd文件中使用这些新定义
---
output:
beamer_presentation:
includes:
in_header: mystyle.tex
---
Two Column Layout
-------
\begincols
\begincol{.48\textwidth}
This slide has two columns.
\endcol
\begincol{.48\textwidth}
```{r}
#No error here i can run any r code
plot(cars)
```
\endcol
\endcols
Run Code Online (Sandbox Code Playgroud)