问题 我可以使用带有手动index.html的预编译PDF来显示插图列表吗?


我想在R包中包含一个预编译的PDF作为插图。 PDF不是通过Sweave生成的。如果没有.Rnw来处理,就没有 \VignetteIndexEntry 导致通常自动生成index.html和 Meta/vignette.rds

我在中创建了一个index.html inst/doc 被复制到 doc 在安装过程中这已从主包帮助页面链接更正。但是,当我加载包并执行时 browseVignettes("MyPackage")我明白了

No vignettes found by browseVignettes("MyPackage")

这是有道理的,因为R显然无法知道包装有一个小插图。安装的包没有 Meta/vignette.rds 文件。我可以以某种方式让我的PDF出现 browseVignettes()

pdfpages

我很熟悉 马赛克包采取的方法,这是使用 pdfpages 包括整个PDF。虽然聪明,但我觉得应该有更好的方法来避免文件的泛滥。


4205
2017-10-29 20:12


起源

可能重复 在R包中使用静态(预建)PDF小插图 - krlmlr


答案:


在Yihui之后....

制作一个看起来像这样的假Rnw:

%\VignetteIndexEntry{User manual}
\documentclass{article}
\begin{document}
\end{document}

并把它放进去 inst/doc 在你的预编译小插图的旁边,你将完成所有设置。


8
2017-10-29 20:30



这是否可以避免使用Makefile? - Josh O'Brien
这种方法似乎完美无缺。我认为R在处理Rnw时可能会破坏已存在的PDF,但事实并非如此。 - kmm
我不使用Makefile,我想要学习的东西。您只需删除该文本,然后单独准备您的插图。当你运行'R CMD CHECK ...`时它可以工作。我不记得我在哪里找到了这个技巧,它不是在SO中。但这对我来说不是原创。 - Bryan Hanson
我今天在试图找到这个问题的解决方案的同时,在[Rd]上遇到了这个技巧。 亨里克·本特森 - Benjamin
@Benjamin很好,很高兴给予适当的信任。感谢您提供链接。 - Bryan Hanson


R肯定需要更好的方式来处理小插曲: http://comments.gmane.org/gmane.comp.lang.r.devel/31967 在我的提案获得批准和实施之前,我们仍然需要接受Makefile的黑暗伏都教。例如,你可以放一个 fake.Rnw 和a real.pdf 下 inst/doc,和 mv real.pdf fake.pdf 在Makefile中。在 fake.Rnw,你只需遵循规则 \VignetteIndexEntry{}


2
2017-10-29 20:28



为了清楚,这是否意味着你把一个名为的文件 Makefile 并包含单行 mv real.pdf fake.pdf在包源目录的顶部? - Josh O'Brien


mosaic 包现在 显然使用了 R.rsp 包 它有一个“asis”驱动程序,允许包含现有文件并创建 VignetteIndexEntry。这看起来不像是使用黑客 pdfpages 或假人 .Rnw 档案(哪个 在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

这也详述 Henrik Bengtsson给出了这个答案,作者 R.rsp包


1
2017-11-24 10:06