在Quarto中实现PDF用tikzDevice渲染、HTML用标准输出的方法
解决Quarto中PDF用tikz、HTML用兼容设备的方法
方法一:代码块内条件指定设备
直接在代码块的选项中用Quarto专属的输出判断函数设置设备,替换原bookdown中的判断逻辑:
```{r} #| dev: !expr if ( quarto::quarto_is_pdf_output() ) 'tikz' else 'png' plot(1:10)
Quarto的`quarto::quarto_is_pdf_output()`函数能准确识别当前输出格式,替代`knitr::is_latex_output()`即可生效。 ## 方法二:全局YAML配置分格式指定 在文档头部的YAML中,为不同输出格式分别设置绘图设备,无需修改单个代码块: ```yaml format: pdf: dev: tikz html: dev: png # 也可替换为svg等HTML友好的格式
补充灵活配置方式
如果需要全局统一条件设置,也可以在YAML的knitr选项中用表达式:
knitr: opts_chunk: dev: !expr if ( quarto::quarto_is_pdf_output() ) 'tikz' else 'png'
这样既保留了tikz在PDF中字体一致的优势,又能让HTML输出使用兼容的图片格式,避免嵌入PDF图表的问题。
内容的提问来源于stack exchange,提问作者gregmacfarlane
相关产品推荐
相关产品推荐

