RStudio presentation/slidify/pandoc中的两列布局

 朱小小喵喵_972 发布于 2023-02-07 14:09

我正在努力想出一个很好的系统来生成幻灯片和随附的讲义.理想的系统具有以下属性:

演示文稿(PDF/HTML)和讲义(PDF)布局都很漂亮(讲义应该有笔记的余地)

嵌入式R块,数字,其他JPG/PNG图片等

容易撰写

使用命令行工具构建

参考书目支持

pandoc 幻灯片分隔符格式(在指定级别的标题之后自动生成新幻灯片)是首选

我可以接受一些额外的处理(例如,通过sed),但不想写一个庞大的基础设施

两列布局:有关如何从pandoc获取多列幻灯片的SO帖子,但它是LaTeX-而不是面向HTML.

能够在运行中调整嵌入图像(除了R生成的图形)和列宽之外的大小

以下是我迄今为止发现的各种选项:

滑动:

不做pandoc幻灯片分隔符格式,虽然有一个解决方法

创建讲义的建议是打印到PDF; 我想为笔记等留出空间(我可能想办法用像PDFtk或psnup...... 这样的东西来做)

RStudio演示文稿(.Rpres文件):

做很多事情,包括具有指定宽度的多列

不支持pandoc幻灯片分隔符格式

我无法弄清楚引擎盖下发生了什么.有一个RStudio文档描述了常规HTML的翻译过程,但它似乎没有涵盖R表示格式(这不完全相同).(我之前已经投入了一些努力来弄清楚如何通过pandoc获得类似RStudio的输出 ......),这意味着我无法从命令行生成幻灯片等.

RStudio的开发版本(截至2014年3月)与Pandoc和版本2捆绑在一起rmarkdown.它解决了上述许多.Rpres格式问题.

pandoc:可能是唯一具有脚注,参考书目支持等功能的降价转换器.我也可以使用tufte-handout类pandoc生成LaTeX ,符合我的美容标准.

不幸的是,似乎没有内置的双列格式支持.谢毅辉的HTML5示例没有显示任何两列示例,它声称(在幻灯片5中)单击RStudio中的"Knit HTML"按钮相当于pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html,但它似乎不是......

LaTeX/beamer:我可以简单地Rnw编写(knitr-dialect Sweave)而不是R markdown开始.这会给我最大的灵活性......

尽管使用了多年的乳胶,但我确实发现乳液成分比降低成分更令人痛苦.

毕竟,我的具体问题是:为HTML输出生成两列布局的最佳(最简单)方法什么

任何其他建议也将不胜感激.

4 个回答
  • 这是一个古老的Q,但最近我被一个类似的问题困扰,这是我发现的:

    使用RPres格式,可以像这样指定两列(详细信息).请注意,RPres只能通过单击RStudio中的按钮转换为HTML,似乎没有任何命令行方法,这有点烦人.尽管如此,我认为它是目前使用markdown获取幻灯片列的最简单,最灵活的方法:

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

    在此输入图像描述

    通过调整色谱柱比例可以提供一些灵活性:

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

    在此输入图像描述

    使用rmarkdown我们可以获得两列,但无法控制中断的位置,这有点问题:

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

    在此输入图像描述

    我们也可以使用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}
    

    在此输入图像描述

    看起来像常规的Rnw LaTeX doc是获取列的最佳方式,如果你想使用LaTex,而不是这个降价混合(参见两列beamer/sweave slide with grid graphic)

    在上述所有情况中,图像可以放在一列中.

    slidify网站有关于在这里列出两列的说明:http://slidify.org/customize.html 但是不清楚要进入assets/layouts文件夹以使其工作

    2023-02-07 14:12 回答
  • 我从这里得到了一个想法,基本的解决方案是:


    ### Function *inner_join*
    . . .
    
    `<div >`
    ``` {r, echo = FALSE, results = 'markup', eval = TRUE}
    kable(cbind(A,B))                                    
    ```
    `</div>`
    `<div >`
    ```{r, echo = TRUE, results = 'markup', eval = TRUE}
    inner_join(A,B, by="C")
    ```
    `</div>`
    

    2023-02-07 14:12 回答
  • 我现在拥有的是一个合理的解决方案,至少应该适用于ioslides基于解决方案的解决方案,也许(?)适用于其他基于HTML5的格式.从这里开始,我补充道

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

    到我的文件的开头; 然后放入<p class="forceBreak"></p>一张幻灯片,{.columns-2}在那一点打破列,例如

    ## 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)
    

    可能有更好的方法,但这不是太痛苦.

    @ChrisMerkord在评论中指出

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

    工作(我还没有测试......)

    2023-02-07 14:13 回答
  • 有关投影仪错误的解决方法.

    总之:错误与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}}
    

    在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
    

    你得到: 在此输入图像描述

    2023-02-07 14:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有