第五章:总结一些常用技巧
关于RMarkdown使用时,小编日常会使用的一些有用技巧,当然我也是通过学习谢大大的Rmarkdown-cookbook[17]以及日常使用需求上网搜的解决方案,在此分享给大家。如果大家还有其他什么需求,可以在留言板留言。或者有其他实用技巧也欢迎分享!
5.1.修改某些字体颜色🌟🌟🌟
Markdown语法没有用于更改文本颜色的内置方法。我们可以使用HTML和LaTeX语法来更改单词的格式
- 对于HTML,我们可以将文本包装在标记中,并使用CSS设置颜色,例如 text 。
- 对于PDF,我们可以使用LaTeX命令
\textcolor{}{}
。这需要使用LaTeX软件包xcolor,该软件包已包含在Pandoc的默认LaTeX模板中。
** 作为更改PDF文本颜色的示例:**
我是\textcolor{blue}{庄闪闪}呀!欢迎关注我的\textcolor{red}{公众号}:\textcolor{blue}{庄闪闪的R语言手册}。
在上面的示例中,第一组花括号包含所需的文本颜色,第二组花括号包含应将此颜色应用到的文本。
5.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 ---
这时的页边距就变成下面这样了:
当然全文字体大小等操作也是这样操作的,在geometry操作即可:
5.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
输出为:
5.4.分页
如果想要分页,可以使用\newpage
。例如:如果想把目录和正文内容分开,可以在在正文前面加入这个代码
这时输出的结果,目录一个界面,正文另起一页。
5.5.控制文本输出的宽度🌟🌟
有时从R代码输出的文本可能太宽。如果输出文档具有固定的页面宽度(例如,PDF文档),则文本输出可能会超过页面的页边距。
R全局选项宽度可用于控制R函数输出的文本宽度,如果默认值太大,则可以尝试使用较小的值。此选项通常表示每行字符的粗略数目。例如:
```{r} options(width = 300) matrix(runif(100), ncol = 20) ```
```{r} options(width = 60) matrix(runif(100), ncol = 20) ```
但是这种方式不一定对所有函数都适用,这是你可以使用其他方式,对于Html(这里不做解释,主要将pdf),可以参见教程[18]。
对于PDF输出,换行比较困难。一种解决方案是使用LaTeX软件包清单,可以通过Pandoc参数--listings启用它。然后,您必须为此软件包设置一个选项,并且可以从外部LaTeX文件中包含设置代码(有关详细信息,请参见第6.1[19]节),例如,
--- output: pdf_document: pandoc_args: --listings includes: in_header: preamble.tex ---
在preamble.tex中(建议放到和rmd同一个文件夹),我们设置了Listings包的一个选项:
\lstset{ breaklines=true }
这是输出的结果,但是其实不是很美观
5.6.控制图片输出大小🌟🌟🌟
这个我在文稿和教程中说的挺清楚了。一共有两种方式:
方法一:
```{r, echo=FALSE, out.width="50%", fig.cap="A nice image."} knitr::include_graphics("foo/bar.png") ```
方法二:
![A nice image.](foo/bar.png){width=50%}
5.7.图片对齐🌟🌟🌟
这个我也说过啦!就是在R chunk中加入fig.align = 'center'进行居中。外部数据你可以不用markdown的形式输入,可以在R代码块使用
knitr::include_graphics()
具体可以见:和我的b站视频。
5.8.代码块的行号🌟
通过块选项 attr.source =“ .numberLines”
将行号添加到源代码块中,或者通过attr.output =“ .numberLines”
将文本输出块添加到文本中,例如,
```{r, attr.source='.numberLines'} if (TRUE) { x = 1:10 x + 1 } ```
输出结果为:
5.9.多列输出🌟🌟🌟
这个特别好用!虽然学起来有那么一点困难,具体我再出一期推文,把这个讲清楚。具体可以见这里的教程[20]。类似于排版成这种形式:
5.10.小编有话说
- 我相信大家还会使用其他宝藏模板吧,也欢迎在评论下方分享!小编能力有限,只能总结和分享这么多了!
- 当然Rmarkdown还可以做各种拓展,比如presentation(ioslides、Beamer、slidy、PowerPoint),Documents(Html、Notebook、PDF、word)及其其他拓展(Dashboards、Tufte Handouts、xaringan Presentations、Websites)等。有部分我已经整理好了,可以在下面窗口的拓展教程中找到。