惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MyScale Blog
MyScale Blog
Jina AI
Jina AI
爱范儿
爱范儿
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
I
Intezer
The Cloudflare Blog
T
Threat Research - Cisco Blogs
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Docker
AI
AI
Scott Helme
Scott Helme
Attack and Defense Labs
Attack and Defense Labs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
Recent Announcements
Recent Announcements
Security Latest
Security Latest
Hugging Face - Blog
Hugging Face - Blog
W
WeLiveSecurity
Last Week in AI
Last Week in AI
Security Archives - TechRepublic
Security Archives - TechRepublic
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
S
Securelist
S
Security Affairs
Project Zero
Project Zero
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
T
Tor Project blog
A
About on SuperTechFans
V2EX - 技术
V2EX - 技术
宝玉的分享
宝玉的分享
T
Tenable Blog
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
Simon Willison's Weblog
Simon Willison's Weblog
Forbes - Security
Forbes - Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
V2EX
AWS News Blog
AWS News Blog
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Hacker News: Front Page
美团技术团队

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
能跑代码的 Markdown 编辑器——Rmarkdown - 少数派
2018-01-16 · via 少数派

在少数派,我已经接触过不少的 Markdown 编辑器。Markdown 的核心是将文字与排版分开,只用少量的符号标记几种文本元素,从而将注意力集中于文字本身。但究其本质,Markdown 还是 HTML 的简化版,最终排版依赖的格式来自于 css,最适合的输出格式还是 HTML 页面。当进行 PDF 和 Word 等等的文档排版时,由于文档独特的分页结构,必须解决图片和表格等浮动体的问题,尤其是图片不能割成两页。而网页却是连续的,根本无需考虑这个问题。类似这些差异总会让 Markdown 编辑器显得力不从心。

与右侧的HTML 文件相比,左侧的PDF 中图片出现了漂移
与右侧的HTML 文件相比,左侧的PDF 中图片出现了漂移

在文档排版上,另一个选择是 LaTeX,相较于 Markdown,LaTeX 是专门为 PDF 排版而生的,但其复杂程度就要比 Markdown 高得多。有没有什么办法把Markdown 的书写便利性和 LaTeX 丰富的排版能力结合到一起呢?另一方面,在写作中遇到数据处理、图表绘制时,往往需要先将图表独立生成,然后再行插入文档当中。这样,一来可能破坏已经成型的文档结构,二来依然会分散自己的写作精力。机缘巧合,在学习R 语言的时候,我接触到了这样一种另类的 Markdown 写作方式——Rmarkdown,可以用来解决这两个问题。这篇文章以使用 Rmarkdown 输出 PDF 文档为例,来说一说它的主要用法。

R 是什么?

Markdown 前面的R 又是什么呢?简单来说,R是一种主要面向数据处理的开源编程语言。相比其他昂贵的数据处理软件,R 最大的优势在于其开源而带来的免费性和强大的扩展能力,同时其语言上手难度也不算太高。由此,R 获得了很多科研工作者的青睐。不过 R 语言本身并非本文重点,即使你对它不甚了解,也并不耽误你使用 Rmarkdown。当然,如果你会使用它,你就更能对 Rmarkdown 得心应手。

RStudio + LaTeX + Pandoc

完整使用 Rmarkdown 需要 Rstudio、LaTeX 和 pandoc 三者的组合。首先来依次介绍一下它们。

RStudio

RStudio 是专门针对 R 开发的一款 IDE。而 Rmarkdown 正是 RStudio 网站开发的一个项目,旨在通过 Markdown 结合 R 来完成文章写作。你可以在安装了 R 的 GUI 主程序之后,在 Rsudio 的网站下载自己操作系统相应的安装包进行安装。软件打开后,可以看到三部分窗口,左边是 Console 窗口,用来运行 R 命令。如果你是 Mac 用户,RStudio 还会在 Console 窗口右侧默认打开一个 Terminal 窗口,更方便地运行终端里的命令。右上方窗口用以显示当前环境中的数据,或者可以切换显示运行过的代码历史。右下方的窗口是文件、已安装的包、绘制图形和帮助文档等的显示区域。新建一个脚本之后,会在左上方出现一个新窗口,用来编写 R 语言脚本,这也是用来编写 Rarkdown 文档的部分。

RStudio
RStudio

做为 RStudio 的扩展,使用 Rmarkdown 需要安装其他扩展包。可以在菜单栏「File」下选择新建一个文件,然后在文件格式中选择 R Markdown。这时软件会弹窗提示需要安装的包。点击确认等待安装完成即可。除了这里需要安装的包,针对中文支持,还需要再安装 rticles 包。具体方式可以在 Console 窗口运行如下命令:

install.packages("rticles")

安装完它们之后,你已经可以新建一个 Rmarkdown 文档并开始编辑生成一个 HTML 文档了。不过要想输出一个格式规整的 PDF 文档,还需要进一步安装 LaTeX 和 pandoc。

LaTeX 和pandoc

LaTeX 是一种通过宏语言进行文档排版的排版系统。对于 Windows 用户来说,RStudio 推荐安装体积较小的 Miktex,Mac 用户则被推荐安装 MacTex(其实 MikTeX 也有 Mac 版,但为什么没推荐我也不清楚)。LaTeX 还有其他诸如 Tex Live 等版本,本质上是相同的,这里就不对其进行赘述了。大部分的 LaTeX 安装包体积都比较大,因为其中包含了各式各样的包和文档等等。新手一般都会被推荐安装比较完整的 LaTeX 安装包(而非 basic 包)。不过如果你只是单纯地想使用 Rmarkdown,选择体积较小的 MikTeX 就足够了。在输出 PDF 文档时 MikTeX 会提示需要安装一些更多的包,到时再确认安装即可。

另一个需要安装的是 pandoc,它是一把用于文档转换的瑞士军刀。你几乎可以通过它进行任意格式的文档转换,同时排版结果也不失美观。其实 Rmarkdown 的功能核心就在于将 MarkDown 文档通过 pandoc 转换为 LaTeX 文档,然后利用 LaTeX 排版输出为 PDF,也是通过这种方法,我们在输入时可以利用 Markdown 的便利性,在排版时利用 LaTeX 的丰富性。在少数派的这篇如何把思维导图秒变成幻灯? 里,也曾经提到过 pandoc 的另一个有趣的用法。你可以在pandoc 的网站进行下载安装,如果你的电脑装有 Homebrew 的话,也可以直接运行以下命令:

brew install pandoc

安装完所有需要的工具,接下来就可以开始正式的文档写作了。

更丰富的文档排版能力

到此为止,已经可以在菜单栏中选择新建一个 R Markdown 格式文档了。点击后会弹出一个对话框用以选择文档格式。这里我们在左侧栏中选择 From Template,然后在右侧选择 CTeX Documents,点击确定后即会生成一个 .Rmd 文档,文档中会有开发者关于中文 Rmarkdown 的一些介绍。

从模版新建一个R Markdown 文档
从模版新建一个R Markdown 文档

除了熟悉的 Markdown 语法,你会发现在文档的最开始多了一部分用--- 括起来的段落。这一部分是用来设置文档输出格式的属性的,语法类型为 YAML。实际上这部分的用法也比较简单,只需要在参数后加一个冒号,再写上值即可。一些参数可能存在着层级关系,使用缩进表示。最常用的参数包括 title 即文档标题、author 即作者、date 即日期,具体形式如下:

title: "title"
author: 
 - author1
 - author2
date: "2018/01/14"

涉及中文文档时,最主要的参数设置为:

---
documentclass: ctexart
output: 
    rticles::ctex
---

在使用习惯以后,你可以不必依赖模版,只要在新建文档中规定好它们,就可以顺利地编译出中文文档。这里,documentclass 规定了文档的类型,ctexart 是 LaTeX 中兼容了中文的文档类。而 output 是对输出格式的具体设置,这里的 rticles::ctexrticles 包中针对中文优化过后的PDF 输出格式。你可以在下一层级的命令里继续设置 PDF 文档的其他详细参数,新建的模版中已经有三个参数。对于常用的 PDF 文件,Rmarkdown 提供了足够的自定义参数满足需求,包括目录格式、图片格式、表格样式、语法高亮形式、纸张大小、页边距、字体字号甚至链接颜色等等。如果你觉得这些还不够,你也可以直接在 includes 参数下加入 LaTeX 命令或文件作为文档的 header,或插在 body之前或之后。如果能力所及,你还可以直接换一个自己的模版……通过详细的参数和丰富的可定制性,文档排版及格式可以变得更加灵活多样。具体的参数,可以参考官方网页

以上所述的所有部分,都只是在 YAML 部分完成的,而没有涉及文档主体的 Markdown 部分。这样,当进入 Markdown 写作部分时,我们又可以专心于文字,不必担心将格式和内容搅在一起了。在这里,你可以使用通用的 Markdown 语法,当然也支持插入 MathJax 公式,一切和其他 Markdown 编辑器一样。如果对语法有疑问,在菜单栏的 Help 下点击“Markdown Quick Reference”就能浏览详细语法了。

不过,Markdown 偶尔还是会有一些无法在 PDF 页面上达成的排版精细活儿,这时候,Rmarkdown 还支持直接在文档里插入 LaTeX 命令,使用它完成即时所需的特殊排版需求。可以说在 Markdown 和 LaTeX 二者的融合上,Rmarkdown 给出了一个非常自由而又灵活的解决方案。

在 Rmarkdown 里直接插入 LaTeX 命令
在 Rmarkdown 里直接插入 LaTeX 命令

更直接的代码运行能力

除了比传统的 Markdown 编辑器更加适合 PDF 排版,Rmarkdown 的另一大杀手锏就是它可以在生成文档时直接运行插入的代码块,并将运行结果打印在最终文档中。而且,它不仅支持 R 语言一种方式,你还可以使用 Python、Java Script 等等其他语言生成你想要的结果。在以数据处理为核心的论文写作中,这是一种非常实用而又能大大提升写作效率的方式。其次,文档中的代码可以边写边运行调试,每个代码块的运行结果会直接显示在该代码块的下方。除去文字部分,文档和一个普通的脚本并无差别,而在文章中也能更方便地引用数据结果。

可运行代码块的书写方式与在 Markdown 中插入普通代码块类似,插入块状代码时,在代码块语法开始的``` 之后写上一个大括号,并在括号中写入语言的名称即可。例如,如果需要插入一段 r 代码,可用如下形式:

```{r}
1 + 1
```

之后,你就可以在输出文档中看到该代码本身,和作为输出结果的“2”。以此类推,在需要绘制图表时,直接插入代码,就可以在文章中显示图表了。

使用代码绘图并打印
使用代码绘图并打印

插入可运行的行内代码,可以直接在第一个` 后输入一个小写的 r ,然后插入代码本身。这在行文中需要引用计算结果时非常便利,例如文档里写入:

1 + 1 = `r 1 + 1`

你会在输出文档中直接得到“1 + 1 = 2”。

当然,并不是所有时候都需要把代码放进最后的成文里。Rmarkdown 提供了各种设置代码块属性的命令,用来设置代码块的名称、显示和运行方式、以及结果的输出方式等等。你可以在大括号中的r 后直接输入代码块的标签(这在代码块过多时可以帮助你快速定位),然后打一个逗号, 继续输入其他参数,参数与值之间用等号连接,而参数与参数之间仍然用逗号, 分隔。比较常用参数的包括 echo 设置是否在文档中包含代码块,eval 设置代码是否运行,results 设置运行结果的输出形式,messagewarning 设置是否打印 message 和 warning 信息等等。你会看到每个代码块的右上角有一个用来设置常用属性的图形按钮,你也可以在这里设置属性。以下面的代码为例:

```{r example label, echo = FALSE, warning = FALSE}
# coding
```

这里的代码即为设置了代码块的名称为 example label,然后使代码块不包括在文档中,同时不输出警告信息。我们可以将上面图片中绘制图形的代码部分隐藏,效果如下:

隐藏生成上述图片的代码
隐藏生成上述图片的代码

除此之外,还有针对图片输出格式等等的更多细节属性设置,详细的参数可以参见帮助文档。如果你想设置全局的代码块属性,可以在文档开头加入如下代码:

```{r setup}
knitr::opts_chunk$set()
```

显而易见,该命令就是设置代码块选项的。在括号中填写需要更改的参数即可,语法与在每个代码块中设置属性时相同。到此为止,你已经可以顺利地在文档中插入可运行的代码,并且设置每个代码块的属性了。

使用其他语言

如果你对 R 语言并不熟悉,你也可以通过设置改用其他语言的代码。使用方法也很简单,这里以 Python 为例,只需要在插入代码时将大括号里的 r 写为 python 即可:

```{python}
python code...
```

不过,如果你想使用不同于默认调用的 Python 版本,可以在```{Python,后加上命令engine.path = " ",引号中填入想要的 Python 地址即可。如果设置全局的 python 引擎,同样可以依照以上方法在 kintr::opts_chunk$set() 中更改 engine.path 属性即可。关于 Rmarkdown 支持的语言和更多相关细节,可以参见[文档页]。(http://rmarkdown.rstudio.com/authoring_knitr_engines.html)。

输出文档

文档完成后,就可以输出 PDF 文件了。文档生成只需点击脚本窗口上方的 knit 按钮即可。

点击knit 输出文档
点击knit 输出文档

唯一需要注意的就是 .Rmd 文档的文件名不能包括中文,否则 pandoc 会报错。点击按钮后程序会自动运行,一切顺利的话就会在 .Rmd 文档同一路径下输出一个 PDF 了。另外,如果之前安装的是 MikTeX 的话,输出文档时会提示你安装所需的包,点击安装即可。

其他文档类型

虽然 LaTeX 拥有丰富的排版能力,不过它还是有一定难度。相比之下,使用 MS word 的人可能更多,在需要与他人合作时,也可能不得不使用 Word。仰赖于 pandoc 强大的转换能力,Rmarkdown 自然也可以输出 Word 文档。在新建 .Rmd 文档时,就可以在弹窗中选择新建一个 .docx 格式文档。实际上,在 YAML 部分的 output: 参数下写上 word_document就可以完成相同的工作。同样,也可以在下一层级的属性中规定 word 文档的输出格式。更多的详细属性可以参见官方介绍页

不过相比 LaTeX 输出,Word 文档的可定制性就差很多。但 Rmarkdown 提供了一个有趣的自定义样式的方式。你可以在 word_document: 下规定一个 reference_docx: 的属性,在后面填入作为模版的文档。而模版文档需要在 Word 的“样式”中分别设置每部分文体(即正文、一二三级标题等)的详细格式。根据 Rmarkdown 官方的说法,为了保证格式模版好用,最好使用 Rmarkdown 导出的文档作为模版。在实际操作中,Word 总会不出意外地给出一些出人意料的惊喜,所以可以输出一次文档,更改一次格式作为模版,然后再使用该模版输出新文档,修改后作为下一次的模版……反复几次微调之后就可以得到自己想要的模版了。更详细的介绍还可以参见这个教程

除了 Word 文档之外, HTML 文档的输出能力自然也毋庸置疑。Rmarkdown 支持自定义的 css 用于更改输出样式,同时提供了其他的可定制性。如果对执行代码有需求,也可以尝试用它生成静态 HTML 文件。更多说明可以参见官方文档页

虽然 Rmarkdown 比传统的 Markdown 编辑器拥有了更丰富的排版选择,但它还是会有自己的局限之处。你可能会问,这么麻烦我直接用 LaTeX 不就好了?如果更习惯 LaTeX 又想使用 RStudio 运行代码的能力,你还可以选择新建一个 .Rnw 文档,它其实是 Rmarkdown 的 LaTeX 形式,然后直接用 LaTeX 写文档就可以了。

尾巴

这篇文章面对 Rmarkdown 新手,所以有些叙述比较简单,略显琐碎。其实我自己也只是在学习过程中,只能到应用水平,对原理了解不多,发现问题的各位欢迎在评论里进行交流。除了上文提及的优点, Rmarkdown 的另一个优点是写好一个文档后,更换一下源头的数据就可以生成一篇完全一样的文章。进行重复研究时,使用行内代码的方式就无需再手动从每个角落里更改计算结果。

Markdown 的写作方式的确方便,但它还是专门针对网页而生的。现实使用中,我们有时又不得不面对文档生成的情况。如 Rmarkdown 的主要开发者谢益辉在这篇 Markdown or LaTeX? 中所言,网页是连续的,而文档需要断页。这就带来了很多浮动体的问题,图片不可能拆开放在两页,网页也没有页眉页脚页码这种麻烦。随着电子设备的普及、文档电子化的进展,可断页文档真的还必要吗?如非需要打印,何必要用传统文档格式保存文件呢?大多时候,这件事只是一种削足适履的资源浪费。再说,很多时候,又何苦非要把文档打印出来呢?

除此之外,RStudio 毕竟不是针对文档写作开发的软件,Rmarkdown 的核心还是运行代码。所以如果没有运行代码的需求,常用 Markdown 编辑器的写作体验自然要好更多。其实我常用的写作工具 Mweb 就支持编辑 .Rmd 文档。工具的选择最终还是要依赖工作本身,无需本末倒置。多一个选择,是为了在需要时找到一条提高效率的捷径。