通过R Studio用Markdown写Beamer
技术背景
在写一些学术演示文档时,经常有可能用到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
参考链接
通过R Studio用Markdown写Beamer的更多相关文章
- 全流程指导Visual Studio Code+Markdown Nice+gitee+PicGo管理自己的技术博客文章
全流程指导Visual Studio Code+Markdown Nice+gitee+PicGo管理自己的技术博客 1.背景 我挺喜欢写博客,但每一次将博客转移到公众号或者知乎,总是需要调整格式,不 ...
- 用Markdown写Html和.md也就图一乐,真骚操作还得用来做PPT
前言 和这篇文章一样,我就是用Markdown写的.相信各位平时也就用Markdown写写文档,做做笔记,转成XHtml.Html等,今天教大伙一招骚操作:用Markdown写PPT. 绝大多数朋友做 ...
- 新功能发布!Markdown写博客!
有一种神奇的语言,它比html还简单,它巧妙地将内容与格式整合在一起--它就是Markdown. 现在我们实现了博客对Markdown的内置支持,可以让您轻松地在园子里用这个神奇的语言写博客! &qu ...
- 为什么要用Markdown写东西
为什么要用Markdown 不用费心去调格式了,比方说题目加粗什么的,删除线什么的,代码也只要四个空格就好了~ 学起来很简单,几乎没什么学习成本,而收益却很大 这几乎快让我我想从cnblog转到简书了 ...
- github上建站和使用markdown写文章
积累了那么久,终于成功搭建了github上的个人网站.虽然方法有点巧妙.不是还是建成了 同时学会用markdown写基本的文章.感觉还可以.附带我的github上的静态页面网站的网址:http://z ...
- 用markdown写博客
目录 用markdown写博客 前言 标题 段落 引用区块 代码块 列表 分隔线 链接 强调.加粗.下划线.删除线 图片 智能链接 表格 转义序列 用markdown写博客 前言 博客园支持用mark ...
- android studio 编辑markdown文件
作为开发人员,对markdown应该比较熟悉,我们在Android开始中,可以使用studio引入Markdown Navigator插件,进行编辑. 搜索 Markdown Navigator 安装 ...
- 尝试 Markdown 写测试用例
我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...
- findViewById(R.id.btn_first) 给写成 R.layout.
窗体内放了个按钮, findViewById(R.id.btn_first) 给写成 R.layout. 在java 里边引用结果就是找不到那个id 找了半天找不到原因, 奔着网上常见R找不到的问题, ...
随机推荐
- UVM宏
1.注册宏 // 注册object类 `uvm_object_utils(类名) `uvm_object_parm_utils(类名) `uvm_object_utils_begin(类名) // 注 ...
- 二、MyBatis基础配置应用实例
核心配置文件sqlMapConfig.xml Mybatis核心配置文件层级关系 1)environments标签 2)mapper标签 eg: 3)properties标签 数据源配置参数抽取至jd ...
- mysql视图,索引
一.视图 View 视图是一个虚拟表,是sql语句的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会 ...
- CobaltStrike逆向学习系列(10):TeamServer 启动流程分析
这是[信安成长计划]的第 10 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 基本校验与解析 0x02 初始化 0x03 启动 Listeners 在之前的分析中,都是针对 Cob ...
- NSSCTF-finalrce
菜狗的我打开题目之后,人都给我吓傻了,直接过滤的超出了我的认知 菜狗直接就枯了,这个题目其实是不难的,就是比较阴间的一个题目,审计代码,可以看到最后一行的代码"exec($url)&quo ...
- scrapy的介绍、组件、数据流
scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量代码,就能够快速的抓取到数据内容. scrapy使用了twisted异步网络框架来处理网络通讯,来加快我们的下载速 ...
- C语言memcpy()函数和memmove()函数
C语言memcpy()函数和memmove()函数 关于 memcpy() 函数,请先看链接. memcpy() 函数和 memmove() 函数的函数原型如下: void* memcpy(void ...
- 【windows 操作系统】Windows系统机制之对象管理器
转载自 Windows系统机制之对象管理器 设计的几个目的: 提供一种公共统一的机制来使用系统资源 将对象保护隔离到OS中的一个地方,从而确保统一的一致的对象访问策略 提供一种机制来管理进程对对象的使 ...
- 入门不容易->先从数组说起
数据结构,平时用得最多,接触最多的也是数组,先从数组说起. 数组的概念 什么是数组 一组数据,一秒钟可以申明1000个变量的骚操作. 存储相同的类型,连续的存储空间. 最重要的一点:按下标找元素. ...
- Zabbix使用python批量添加主机及主机资产信息-从零到无
- - 时间:2020年11月10日 - - 作者:飞翔的小胖猪 前言: 使用zabbix作为基础环境的监控系统时,面对现网在用的2000+台把这些主机添加到zabbix监控中是一个问题,当然zabb ...