You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Knitr作为引擎在R包中添加PDF格式的vignette

R包使用knitr将现有PDF导入为Vignette的解决方案

你之前两次尝试失败的原因如下:

  • 第一种使用.asis文件的方案失败,是因为你用错了knitr的引擎名,正确的静态asis引擎名称为knitr::asis,而非knitr::asis_output
  • 第二种Rmd+\includepdf的方案失败,是因为你没有加载pdfpagesLaTeX宏包,\includepdf命令由该宏包提供,默认的pdf_document输出格式不会自动引入。

以下是两种可行的实现方案:

方案1:直接使用knitr的asis引擎(无需额外编译,推荐给完全固定的PDF)

操作步骤:

  1. 在vignettes/目录下放入你的PDF文件,将其命名为和待生成的vignette同名,比如你希望vignette索引名为my_guide,就把PDF命名为my_guide.pdf
  2. 同目录下新建my_guide.asis文件,内容仅需两行:
%\VignetteIndexEntry{你想要展示的Vignette标题}
%\VignetteEngine{knitr::asis}
  1. 确认你的包DESCRIPTION文件中包含以下配置:
VignetteBuilder: knitr
Suggests: knitr

构建包时knitr会直接将你提供的PDF作为对应的vignette输出,无需额外编译步骤。

方案2:Rmd封装方案(适合需要在PDF前后加额外R内容、和现有Rmd vignette逻辑统一的场景)

操作步骤:

  1. 在vignettes/目录下放入你的file.pdf,同时新建同名file.Rmd,内容如下:
---
title: "你想要展示的Vignette标题"
output: 
  pdf_document:
    extra_dependencies: "pdfpages"
vignette: >
  %\VignetteIndexEntry{你想要展示的Vignette标题}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

\includepdf[pages=-]{file.pdf}

其中[pages=-]参数代表导入PDF的所有页,你也可以自定义页码范围。
2. 确认你的包DESCRIPTION文件中包含以下配置:

VignetteBuilder: knitr
Suggests: knitr, rmarkdown

这种方案的优势是你可以在\includepdf前后添加R代码块、文本说明等内容,和普通Rmd vignette的使用逻辑完全一致。

内容的提问来源于stack exchange,提问作者Waldir Leoncio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:24:06