在 blogdown 包提供的诸多 RStudio 插件中,我个人最满意的当然是“New Post”这个插件,可以说它彻底扫清了我写日志的启动障碍。过去我用 Jekyll 写日志之所以感觉写不下去是因为启动的心理成本太高:需要手工建一个 Markdown 文件,然后手敲一系列 YAML 元数据(标题、日期之类的),最后才能开始写正文。因为这第一步我都不想做,所以也不用谈写日志本身。
如今在 blogdown 中新建一篇日志就像用 WordPress 或其它有图形用户界面的网站系统一样,所以我可以写得飞起。不过偶尔还是会碰到一些需要手工重复劳动的事情,其中之一就是引用诗词(或歌词)。因为是引用,所以语法是每一段前加 >,但问题是如何保持换行。在 Markdown 语法中,普通的换行(敲一下回车键)是没有意义的,它跟空格没有区别。只有在代码块中,普通换行才会被保留。在非代码环境中,如果需要一个硬换行,那么需要在行末加两个空格。
如果没有行末的两个空格:
> 缺月昏昏漏未央,一灯明灭照秋床。
病身最觉风露早,归梦不知山水长。
坐感岁时歌慷慨,起看天地色凄凉。
鸣蝉更乱行人耳,正抱疏桐叶半黄。
那么引用出来的效果如下:
缺月昏昏漏未央,一灯明灭照秋床。 病身最觉风露早,归梦不知山水长。 坐感岁时歌慷慨,起看天地色凄凉。 鸣蝉更乱行人耳,正抱疏桐叶半黄。
因为我自己经常需要引用诗词和歌词,所以前段时间干脆在 blogdown 里写了个 RStudio 插件,让用户可以在 RStudio 中选择几行文字,然后点“Quote Poem”插件,就可以自动加上引用符 > 和行末两个空格了(下面的空格肉眼不可见,除非鼠标选中文字):
> 缺月昏昏漏未央,一灯明灭照秋床。
病身最觉风露早,归梦不知山水长。
坐感岁时歌慷慨,起看天地色凄凉。
鸣蝉更乱行人耳,正抱疏桐叶半黄。
上面的源代码输出的结果才是正确的:
缺月昏昏漏未央,一灯明灭照秋床。
病身最觉风露早,归梦不知山水长。
坐感岁时歌慷慨,起看天地色凄凉。
鸣蝉更乱行人耳,正抱疏桐叶半黄。
那有人可能会问,既然代码块环境能保留换行,那怎么不用代码块环境呢,在每一行后面都加两个空格好麻烦哦:
```
缺月昏昏漏未央,一灯明灭照秋床。
病身最觉风露早,归梦不知山水长。
坐感岁时歌慷慨,起看天地色凄凉。
鸣蝉更乱行人耳,正抱疏桐叶半黄。
```
代码是代码,引用是引用,这是两码事,语义完全不同,而且通常样式也不同。要是你把引用的文字放在代码环境中,或者把代码放在引用环境中,我会宰了你。
附注:以上的例子是王安石的诗。我看到这首诗是因为朱自清考证月夜到底有没有可能有蝉声(有人质疑他的《荷塘月色》中的蝉声)。同时这又是一个叠字的例子。
赞赏
作为一名没有固定工作的自由职业者,我非常感谢您通过捐赠的方式来支持我的写作和开源软件开发。当然,捐赠纯属自愿。无论金额多少,都是一片诚挚的心意。支付方式如下:
| 微信 | ← 奋力支开它俩 → | 支付宝 |
|---|---|---|
![]() |
其它爱心通道 ↓ Venmo: @yihui_xie Zelle: xie@yihui.name PayPal: xie@yihui.name |
![]() |
若使用 Venmo/Zelle/Paypal,请添加备注“gift”或“donation”,以免捐赠被视为我的可税收入。若使用 Paypal,支付类型请选 Family and Friends,而不要选 Goods and Services。
在不影响生活的前提下,我会将收到的捐赠以尽量大的比例回馈给开源社区和慈善机构。作为参考,2024-25 年间我共收到约三万美元捐赠,完税后我转手捐出了一万五千美元。

