R沟通|Rmarkdown(5)一些常用技巧

简介: 关于RMarkdown使用时,小编日常会使用的一些有用技巧,当然我也是通过学习谢大大的Rmarkdown-cookbook[1]以及日常使用需求上网搜的解决方案,在此分享给大家。如果大家还有其他什么需求,可以在留言板留言。或者有其他实用技巧也欢迎分享!

简介


关于RMarkdown使用时,小编日常会使用的一些有用技巧,当然我也是通过学习谢大大的Rmarkdown-cookbook[1]以及日常使用需求上网搜的解决方案,在此分享给大家。如果大家还有其他什么需求,可以在留言板留言。或者有其他实用技巧也欢迎分享!


1. 修改某些字体颜色🌟🌟🌟

Markdown语法没有用于更改文本颜色的内置方法。我们可以使用HTML和LaTeX语法来更改单词的格式

  • 对于HTML,我们可以将文本包装在标记中,并使用CSS设置颜色,例如 text 。
  • 对于PDF,我们可以使用LaTeX命令\textcolor{}{}。这需要使用LaTeX软件包xcolor,该软件包已包含在Pandoc的默认LaTeX模板中。

作为更改PDF文本颜色的示例:

我是\textcolor{blue}{庄闪闪}呀!欢迎关注我的\textcolor{red}{公众号}:\textcolor{blue}{庄闪闪的R语言手册}。

image.gif

在上面的示例中,第一组花括号包含所需的文本颜色,第二组花括号包含应将此颜色应用到的文本。


2. 更改全文页边距等 🌟🌟🌟

在top-level中加入geometry命令,例如

---
title: "RMarkdown常用技巧"
author:
  - 庄闪闪
documentclass: ctexart
geometry: "left=2cm,right=2cm,top=2cm,bottom=2cm"
output:
  rticles::ctex:
    keep_tex: true
    includes:
      in_header: columns.tex
    fig_caption: yes
    number_sections: yes
    toc: yes
---

这时的页边距就变成下面这样了:

5ZYU7H{V6J2A2HR57V_8YUF.png

当然全文字体大小等操作也是这样操作的,在geometry操作即可:

DZ]@{IFW2P%~SEI]U7K@7`W.png


3. 缩进文本 🌟🌟

默认情况下,Markdown还将忽略用于缩进的空格。但是,在某些情况下,例如在经文和地址中,我们可能希望保留缩进。在这些情况下,我们可以通过以竖线(|)开头的线来使用线块。换行符和所有前导空格将保留在输出中。例如:

| When dollars appear it's a sign
|   that your code does not quite align  
| Ensure that your math  
|   in xaringan hath  
|   been placed on a single long line

输出为:

image.gifXHMY%SQJWTB5IRQ)@]4UT8F.png


4. 分页

如果想要分页,可以使用\newpage。例如:如果想把目录和正文内容分开,可以在在正文前面加入这个代码

ECOYUJJ0~JH%0[JJ%S[K{LK.png

这时输出的结果,目录一个界面,正文另起一页。

_K5{VCT01PK9ALA5CGR~8)T.png


5. 控制文本输出的宽度🌟🌟

有时从R代码输出的文本可能太宽。如果输出文档具有固定的页面宽度(例如,PDF文档),则文本输出可能会超过页面的页边距。

R全局选项宽度可用于控制R函数输出的文本宽度,如果默认值太大,则可以尝试使用较小的值。此选项通常表示每行字符的粗略数目。例如:

```{r}
options(width = 300)
matrix(runif(100), ncol = 20)
```

image.gifL4S}EX}D(5TJPXU9%ZOYVTA.png

```{r}
options(width = 60)
matrix(runif(100), ncol = 20)
```

image.gifC[S[$CBEPAYQTE]XOT8)A81.png

但是这种方式不一定对所有函数都适用,这是你可以使用其他方式,对于Html(这里不做解释,主要将pdf),可以参见教程[2]

对于PDF输出,换行比较困难。一种解决方案是使用LaTeX软件包清单,可以通过Pandoc参数--listings启用它。然后,您必须为此软件包设置一个选项,并且可以从外部LaTeX文件中包含设置代码(有关详细信息,请参见第6.1[3]节),例如,

---
output:
  pdf_document:
    pandoc_args: --listings
    includes:
      in_header: preamble.tex
---

在preamble.tex中(建议放到和rmd同一个文件夹),我们设置了Listings包的一个选项:

\lstset{
  breaklines=true
}

这是输出的结果,但是其实不是很美观

4W]GLW%L~%@8A[V_]MK0[NV.png


6. 控制图片输出大小🌟🌟🌟

这个我在文稿和教程中说的挺清楚了。可见:R沟通|Rmarkdown教程(3)R沟通|Rmarkdown教程(2)一共有两种方式:

方法一:chunck中加入out.width="50%"

```{r, echo=FALSE, out.width="50%", fig.cap="A nice image."}
knitr::include_graphics("foo/bar.png")
```

方法二:markdown语法设置{width=50%}

![A nice image.](foo/bar.png){width=50%}


7. 图片对齐🌟🌟🌟

这个我也说过啦!可见:R沟通|Rmarkdown教程(3)R沟通|Rmarkdown教程(2)。如果使用R代码导入图片的话,使用knitr::include_graphics()并结合R chunk中fig.align = 'center'参数进行居中。如果结果不想显示代码块,可在chunck中加入:echo=FALSE

任何输出形式都适用,推荐使用

knitr::include_graphics()

当然还有另一种方法,不使用代码形式。对于输出为html,你可以使用html语法(不适用于pdf/word)

\center
![](image.png)
\center

对于输出pdf/word可以使用以下方式

<center> ![](image.png) </center>

当然想要文字居中的话,也是这样使用

视频教程可见我的b站,讲的很详细了:号外!Rmarkdown教程全网发布


8. 代码块的行号🌟

通过块选项 attr.source =“ .numberLines”将行号添加到源代码块中,或者通过attr.output =“ .numberLines”将文本输出块添加到文本中,例如,

```{r, attr.source='.numberLines'}
if (TRUE) {
  x = 1:10
  x + 1
}
```

输出结果为:

5WQMQVHXW3OTJ)``GP)BEIQ.png


9. 多列输出🌟🌟🌟

这个特别好用!虽然学起来有那么一点困难,具体我再出一期推文,把这个讲清楚。具体可以见这里的教程[4]。类似于排版成这种形式,可以任意排版你想要输出的界面形式。

1%ANV$@}{ZM@I{1AOM$1I9H.png


目录
相关文章
|
搜索推荐 算法 数据挖掘
# 【推荐系统入门到项目实战】(三):矩阵分解和ALS算法
# 【推荐系统入门到项目实战】(三):矩阵分解和ALS算法
# 【推荐系统入门到项目实战】(三):矩阵分解和ALS算法
Word处理控件Spire.Doc常见问题解答
为方便使用者快速掌握和了解Spire.Doc,本文列举了Word处理控件Spire.Doc常见问题及解答欢迎下载体验!
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
JavaScript
Selenium--WebDriverWait--你知道显示等待?(结合源码让你更加得心应手)
Selenium--WebDriverWait--你知道显示等待?(结合源码让你更加得心应手)
305 0
|
消息中间件 存储 对象存储
消息队列 MQ产品使用合集之对于RocketMQ Proxy GRPC消息重发,该怎么解决
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
211 0
|
存储 关系型数据库 MySQL
【MySQL】MySQL表设计的经验(建议收藏)
【MySQL】MySQL表设计的经验(建议收藏)
3696 3
【MySQL】MySQL表设计的经验(建议收藏)
|
前端开发 JavaScript
前端JS实现全屏和退出全屏的效果
前端JS实现全屏和退出全屏的效果
326 0
|
存储 弹性计算 运维
阿里云无影云电脑怎么买?阿里无影云电脑仅19.9元/月起
阿里云无影云电脑怎么买?阿里无影云电脑仅19.9元/月起,阿里云无影云电脑配置具体价格表,无影云桌面4核8G企业办公型云电脑可以免费使用3个月,无影云电脑地域不同价格不同,无影云电脑价格是由云桌面配置、云盘价格、互联网访问带宽价格、AD Connector 价格、桌面组共用桌面session 价格等费用组成
2255 2
|
JavaScript API 数据安全/隐私保护
五分钟让你了解vue表单
我们先可以创建一个普通的表单,我们知道的是表单是相对比较复杂的,antv被我们诟病为就是其表单,这个设计出来的理念就是和别的组件库不一样,我们就在这篇文章分成四个部分来讲述,现在我们的第一个部分,就是我们的普通的表单。
五分钟让你了解vue表单