我想在R包中包含预编译的PDF作为插图。 PDF不是通过Sweave生成的。如果没有.Rnw进行处理,则没有\VignetteIndexEntry
导致通常自动生成index.html和Meta/vignette.rds
。
我在inst/doc
中创建了一个index.html,在安装过程中将其复制到doc
。这已从主包帮助页面链接更正。但是,当我加载包并执行browseVignettes("MyPackage")
时,我得到了
No vignettes found by browseVignettes("MyPackage")
这是有道理的,因为R显然无法知道包装有一个小插图。已安装的软件包没有Meta/vignette.rds
个文件。我可以以某种方式让我的PDF显示browseVignettes()
吗?
pdfpages
我熟悉approach taken by the mosaic package,即使用pdfpages
来包含整个PDF。虽然很聪明,但我觉得应该有更好的方法来避免文件的泛滥。
答案 0 :(得分:9)
在Yihui之后......
制作一个看起来像这样的假Rnw:
%\VignetteIndexEntry{User manual}
\documentclass{article}
\begin{document}
\end{document}
并将它放在inst/doc
旁边,预编译的小插图旁边,你就可以了。
答案 1 :(得分:2)
R肯定需要更好的方式来处理小插曲:http://comments.gmane.org/gmane.comp.lang.r.devel/31967在我的提案获得批准和实施之前,我们仍然要接受Makefile的黑暗伏都教。例如,您可以在fake.Rnw
下放置real.pdf
和inst/doc
,在Makefile中放置mv real.pdf fake.pdf
。在fake.Rnw
中,您只需遵循\VignetteIndexEntry{}
的规则。
答案 2 :(得分:1)
mosaic
包现在apparently uses the R.rsp
package,其中包含" asis"允许包含现有文件并创建VignetteIndexEntry
的驱动程序。与使用pdfpages
或虚拟.Rnw
文件(doesn't seem to work anymore in R 3.1)相比,这看起来更像是黑客攻击。
示例:对于文件V1MinimalR.pdf
,有一个对应的V1MinimalR.pdf.asis
文件,其中包含以下内容:
%\VignetteIndexEntry{Minimal R for Intro Stats}
%\VignetteEngine{R.rsp::asis}
DESCRIPTION
包含(以及其他)以下内容:
Suggests: R.rsp
VignetteBuilder: knitr, R.rsp
this answer by Henrik Bengtsson的作者R.rsp package详细介绍了这一点。