在R Markdown转PDF时为绘图文本添加右弯引号/撇号的方法
在R Markdown编织PDF时为绘图文本添加右弯引号/撇号的解决方案
问题背景
我正在绘制书籍用的调研问题数据,需要在x轴的调研问题两侧添加规范的弯引号(智能引号)。在R Markdown绘图时,用反引号能轻松生成左弯引号/撇号,但右弯引号/撇号(如’或”)的添加方法不明确。尝试过plotmath、硬编码弯引号(比如labs(x = '“some text”'))都无效;sQuote()或dQuote()在交互模式下有效,但编织成PDF时会变成直引号。
可行解决方案
方法1:直接使用Unicode字符
直接在标签文本中插入右弯引号的Unicode编码,无需依赖额外工具:
- 右双引号:
\u201D - 右单引号:
\u2019
示例代码:
library(ggplot2) ggplot(mtcars) + aes(x = hp, y = mpg) + geom_point() + labs(x = "“Is MPG related to HP?”") # 直接输入Unicode弯引号(编辑器需支持)
或用编码形式兼容更多场景:
labs(x = "\u201CIs MPG related to HP?\u201D")
方法2:结合plotmath语法
利用plotmath的字符支持,通过expression()或paste()组合弯引号:
ggplot(mtcars) + aes(x = hp, y = mpg) + geom_point() + labs(x = expression(paste("\u201C", "Is MPG related to HP?", "\u201D")))
方法3:借助LaTeX包自动转换
通过R Markdown的YAML配置加载csquotes包,让LaTeX自动将直引号转为智能引号:
- 修改YAML头部:
--- title: "Curly Quote in Plot Example" output: pdf_document date: "2022-08-17" header-includes: - \usepackage{csquotes} ---
- 绘图时使用普通直引号:
ggplot(mtcars) + aes(x = hp, y = mpg) + geom_point() + labs(x = "\"Is MPG related to HP?\"")
效果验证
以上方法均可确保PDF输出中,x轴标签的左右弯引号均为规范的智能引号,解决右引号显示为直引号的问题。
内容的提问来源于stack exchange,提问作者Omar Wasow
相关产品推荐
相关产品推荐

