技术背景

在写一些学术演示文档时,经常有可能用到Beamer——一种Latex的学术风PPT模板,比如下图所示的这种:

这种风格的演示文档有几个明显的优点:简约、严肃、可以用Latex敲公式和推导、可微调、定制化程度高,而且一般都是免费的。当然也有一些明显的缺点:写Latex麻烦,部署Latex环境更麻烦。因此,更多的人都是硬着头皮在Overleaf上写Latex,这也是被逼无奈。但是我们看到在各大平台用Markdown写博客,或者在开源代码仓库中用Markdown写说明文档,都是非常的美观,那有没有可能用Markdown替代Latex,至少在演示文档上用Markdown替代Latex呢?对于这个问题,R Markdown给出了肯定的回答。

安装R Studio

配置R Markdown的环境,相比于Latex而言容易了很多,大致就分为如下所示的两个步骤:先安装R语言环境,再安装R Studio:

当然,这里少了一个关于pdflatex环境的安装,本文的最后会解释这个问题。首先我们现在访问R语言的官网,下载一个exe安装文件,在本地环境中进行安装,本文用于测试的环境是Win11操作系统。下载完成后按照提示一步一步安装就可以了:

安装好R语言的环境之后,再开始安装R Studio,同样的访问R Studio的官方网站,下载最新的安装文件进行安装。安装过程大概长这个样子:

时间上可能比R语言的安装要更久一些,要耐心等待,按照提示一步一步往下走,就可以很容易完成安装。安装成功后,打开R Studio的界面是这样的:

新建Rmd文件

R Markdown的Beamer PPT格式都是Rmd的后缀,用于写R Markdown,然后按顺序编译成Latex和对应的Pdf格式,而R Studio就提供了一个把Rmd文件编译成Latex文件的编译环境。首先我们选择新建一个文件:

然后在配置时选择Presentation,也就是构建演示文档,并在弹窗中完成一系列的参数配置:

注意我们最终想用的是Beamer风格的演示文档,因此在这里一定要选择Beamer模式,至于具体的Beamer模板的选择,在后续的设置中会介绍。创建好Rmd文件之后,会有一个默认的Rmd文档,这也是基于Beamer模板生成的markdown格式的文档:

我们可以将这个默认的案例修改为我们自己的案例(注意,这个markdown内容不能直接用,为了避免这个文件中的代码块模块所包含的点号跟本博客内容所带的点号引起错误配对,下面的代码中的每个点号之间都加了空格,使用时需删去):

---
title: "Test_R_Markdown"
author: "Dechin"
date: "`2022.03.29`"
output:
beamer_presentation:
theme: Dresden
colortheme: seagull
--- ## R Markdown This is an R Markdown presentation. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>. When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. ## Slide with Bullets - Bullet 1
- Bullet 2
- Bullet 3 ## Slide with R Output ` ` ` python
import numpy as np
print ('This is a python code block')
` ` ` ## Slide with Equation Test Equation input
$$
-i\hbar\frac{\partial}{\partial t}\left|\psi\right>=E\left|\psi\right>
$$

从这个语法中我们也可以看出,跟我们日常所使用的markdown并无太大的出入,只是在Markdown中额外支持了R语言的一些操作,甚至从官方文档中看到,还支持了bash和python的一些操作。写完了Rmd文件之后,如果本地环境已经安装好了pdflatex,可以直接点击Knit中的Beamer模式,直接生成Beamer文档的pdf文件,也可以在R Studio中预览:

但问题是,博主本机Win11的电脑中没有Latex的环境,根据以往对Latex环境的操作经验,遂不打算搭建一个本地的Latex环境。在上图的步骤中,我们已经同时构建了tex文件,只是在从tex文件编译到pdf文件的这个过程中报了错,因此,我们可以直接将这一个tex文件复制到Overleaf的latex环境中进行编译,如下图所示便是预览效果:

还有文档中的代码块以及公式部分的效果一览:

Beamer模板配置

在上面的结果中我们看到的还只是一个default模式的Beamer模板,其实我们可以在Beamer示例网站上找到众多的Beamer模板的名称,比如下面这样的模板风格:

我们先在这个网站上面找到一个自己想要的模板,然后把名称记录下来,因为R Studio中的模板名称和Beamer的模板是一一对应的关系。在R Studio中点击设置,找到Output Option:

在弹窗中可以选择主题和颜色主题,比如博主选择了Dresden-seagull这个主题:

然后就可以回到主界面上点击Knit进行构建,当然,前面也提到了,因为本地没有latex的环境,因此会提示构建失败:

但是没有关系,因为本地的tex文件是已经正常构建完成了,找一个文本编辑器打开这个tex文件,再将其内容复制到Overleaf上进行编译,就可以get到这样的结果:

接下来使用R Markdown去构建好自己的演示文档,在Overleaf上编译构建后下载下来,就完成了使用Markdown构建Beamer的流程。如果说确实有需求一定要在本地构建一个pdf文件,并且同时你使用的是Linux的某个发行版的话,可以看下我之前写过的这篇博客使用Docker去配置一个专属的Latex编译环境。

总结概要

虽说在科研和工程中,最重要的还应该聚焦于研究的内容本身,但是如何去更好更严肃的展示自己的研究成果,并且不耗费太多的时间成本,这也是一个长期被讨论的话题。本文中介绍了R Markdown这样的一个解决方案,可以用于构建Beamer演示文档,用更少的工作量去构建一个效果更好的演示文档,对科学研究而言也是一个值得称道的工作。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/rmarkdown.html

作者ID:DechinPhy

更多原著文章请参考:https://www.cnblogs.com/dechinphy/

打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958

参考链接

  1. https://zhuanlan.zhihu.com/p/269175498

通过R Studio用Markdown写Beamer的更多相关文章

  1. 全流程指导Visual Studio Code+Markdown Nice+gitee+PicGo管理自己的技术博客文章

    全流程指导Visual Studio Code+Markdown Nice+gitee+PicGo管理自己的技术博客 1.背景 我挺喜欢写博客,但每一次将博客转移到公众号或者知乎,总是需要调整格式,不 ...

  2. 用Markdown写Html和.md也就图一乐,真骚操作还得用来做PPT

    前言 和这篇文章一样,我就是用Markdown写的.相信各位平时也就用Markdown写写文档,做做笔记,转成XHtml.Html等,今天教大伙一招骚操作:用Markdown写PPT. 绝大多数朋友做 ...

  3. 新功能发布!Markdown写博客!

    有一种神奇的语言,它比html还简单,它巧妙地将内容与格式整合在一起--它就是Markdown. 现在我们实现了博客对Markdown的内置支持,可以让您轻松地在园子里用这个神奇的语言写博客! &qu ...

  4. 为什么要用Markdown写东西

    为什么要用Markdown 不用费心去调格式了,比方说题目加粗什么的,删除线什么的,代码也只要四个空格就好了~ 学起来很简单,几乎没什么学习成本,而收益却很大 这几乎快让我我想从cnblog转到简书了 ...

  5. github上建站和使用markdown写文章

    积累了那么久,终于成功搭建了github上的个人网站.虽然方法有点巧妙.不是还是建成了 同时学会用markdown写基本的文章.感觉还可以.附带我的github上的静态页面网站的网址:http://z ...

  6. 用markdown写博客

    目录 用markdown写博客 前言 标题 段落 引用区块 代码块 列表 分隔线 链接 强调.加粗.下划线.删除线 图片 智能链接 表格 转义序列 用markdown写博客 前言 博客园支持用mark ...

  7. android studio 编辑markdown文件

    作为开发人员,对markdown应该比较熟悉,我们在Android开始中,可以使用studio引入Markdown Navigator插件,进行编辑. 搜索 Markdown Navigator 安装 ...

  8. 尝试 Markdown 写测试用例

    我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...

  9. findViewById(R.id.btn_first) 给写成 R.layout.

    窗体内放了个按钮, findViewById(R.id.btn_first) 给写成 R.layout. 在java 里边引用结果就是找不到那个id 找了半天找不到原因, 奔着网上常见R找不到的问题, ...

随机推荐

  1. Python基础—基础数据类型int、bool、str(Day3)

    一.int 数字 用于计算,+ - * / % **等 bit_lenth():转化成二进制的最小位数. i=4 print(i.bit_length())执行结果:3 1   0000 0001 2 ...

  2. kube-proxy的三种工作模式

    kube-proxy模式详解 kubernetes里kube-proxy支持三种模式,在v1.8之前我们使用的是iptables 以及 userspace两种模式,在kubernetes 1.8之后引 ...

  3. SpringBoot2.6.x默认禁用循环依赖后的应对策略

    一.序言 SpringBoot 2.6.x不推荐使用循环依赖,这是一个好消息,SpringBoot从底层逐渐引导开发者书写规范的代码,同时也是个忧伤的消息,循环依赖的应用场景实在是太广泛了. 如果从低 ...

  4. 正确理解jmeter线程组之Ramp-Up

    Ramp-Up表示多少时间内启动线程,比如线程数100,Ramp-Up设置为10,表示10秒内启动100线程,不一定是每秒启动10个线程: 下面我们来做几个测试 线程组设置:100线程,Ramp-Up ...

  5. NSSCTF-[SWPU 2019]伟大的侦探

    下载附件得到一个压缩包,解压需要密码,但是得到一个"密码.txt"的文件,打开查看 根据菜狗的刷题经验,这是个EBCDIC的编码,打开010编辑器,打开"密码.txt&q ...

  6. Smartbi大数据在金融业的应用案例

    我们平时听说的商业智能其实就是BI分析,它是一种提高企业智能化的手段和工具,既可以满足企业发展的需要,而且也可提高企业竞争力.思迈特软件Smartbi作为数据分析系统,受到了不少金融业客户的青睐.今天 ...

  7. C#正则表达式(通俗易懂)

    正则表达式有多重要,话不多说,直接入正题把. 首先我们来说说元字符. 1. . 点号代表除了换行意外的任意单个字符 例如 a.b  说明a和b之间只能有任意一个字符. 2.[]代表从这里面取出任意一个 ...

  8. Java:List(一)——概述

    说明 在集合类中,List是最基础的一种集合--有序List. List的行为和数组几乎相同:List内部按照放入元素先后顺序存放,每个元素都可以通过索引确定自己的位置,List的索引和数组相同,都是 ...

  9. 爬虫之爬取豆瓣top250电影排行榜及爬取斗图啦表情包解读及爬虫知识点补充

    今日内容概要 如何将爬取的数据直接导入Excel表格 #如何通过Python代码操作Excel表格 #前戏 import requests import time from openpyxl impo ...

  10. pandas模块篇(终章)及初识mataplotlib

    今日内容概要 时间序列 针对表格数据的分组与聚合操作 其他函数补充(apply) 练习题(为了加深对DataFrame操作的印象) mataplotlib画图模块 今日内容详细 时间序列处理 时间序列 ...