2013-10-31 14 views
17

Cách thích hợp để bao gồm tệp PDF tĩnh dưới dạng "họa tiết" trong gói CRAN là R 3.0?Sử dụng họa tiết PDF tĩnh (sẵn có) trong gói R

Bí quyết được mô tả trong this document khi sử dụng dấu trang trống Rnw dường như không hoạt động trong R 3.0. Tài liệu cho thấy rằng bây giờ có một cách tốt hơn dựa trên \VignetteEngine{} nhưng nó không phải là khá rõ ràng như thế nào điều này làm việc cho các tập tin PDF tĩnh.

+5

+1, tôi cũng muốn bao gồm các họa tiết tĩnh trong các gói của mình quá – sckott

+0

Tôi tự hỏi về điều đó nhưng khi đọc hướng dẫn sử dụng và lá trà, nó đang hướng tới tất cả 'họa tiết /' thậm chí còn thực thi nghiêm ngặt hơn trong Tương lai. –

+0

Hmmm. Trong trường hợp đó, tôi nghĩ rằng tôi chỉ có thể có các liên kết đến các trang web với các hướng dẫn vì hầu hết các gói của tôi thực hiện các cuộc gọi API tới web. Trừ khi có một số lý do quan trọng để có họa tiết thực sự bên trong pkgs? – sckott

Trả lời

10

Với R.rsp (> = 1.19.0), bạn có thể bao gồm một PDF tĩnh 'họa tiết/main.pdf' bằng cách thêm một 'họa tiết/main.pdf.asis' tập tin văn bản nhỏ chứa :

%\VignetteIndexEntry{My amazing package} 
%\VignetteEngine{R.rsp::asis} 

và chắc chắn phải có:

Suggests: R.rsp 
VignetteBuilder: R.rsp 

trong tập tin MÔ tẢ của gói của bạn. Điều này cũng hoạt động đối với các họa tiết HTML tĩnh. Điều này cũng được giải thích ở một trong các họa tiết R.rsp.

+0

Cảm ơn bạn đã cung cấp giải pháp thanh lịch này. Nó có phù hợp với bạn trong R 3.1.2 không? – krlmlr

+0

Làm việc cho tôi - dường như là một vấn đề 'devtools'. – krlmlr

+0

Chào mừng bạn - Tôi rất vui vì bạn thích nó. Có tất cả các công cụ họa tiết của R.rsp hoạt động với các phiên bản cũ hơn của R. Họ làm việc ra khỏi hộp với R (> = 3.0.0). Đối với họ cũng làm việc với R (<3.0.0), bạn phải thêm một giải pháp dự phòng được giải thích trong một trong các họa tiết R.rsp. – HenrikB

1

CẬP NHẬT 2014-06-08: Để có giải pháp tốt hơn để bao gồm tệp PDF tĩnh và HTML trong gói R, hãy xem câu trả lời khác của tôi về cách sử dụng R.rsp (> = 0.19.0) và R.rsp::asis họa tiết họa tiết.

Tất cả những gì bạn cần là tệp <name>.Rnw có tên khớp với tệp <name>.pdf tĩnh của bạn, ví dụ:

vignettes/ 
    static.pdf 
    static.Rnw 

nơi <name>.Rnw (ở đây static.Rnw) là một tập tin Sweave hợp lệ tối thiểu, ví dụ

%\VignetteIndexEntry{<title to be displayed on the R vignette index page>} 
\documentclass{article} 
\begin{document} 
\end{document} 

file nguồn họa tiết này (<name>.Rnw) thủ đoạn R CMD build để xây dựng nó, ví dụ: R của tools::buildVignettes() đầu tiên sẽ Sweave <name>.Rnw vào <name>.tex như bình thường. Tuy nhiên, do cách buildVignettes() được thiết kế, nó sẽ phát hiện tệp tĩnh <name>.pdf của chúng tôi đã được tạo bởi công cụ Sweave và do đó nó sẽ không biên dịch tệp TeX giả này thành tệp PDF (tệp này sẽ ghi đè tệp tĩnh của chúng tôi).

Điều quan trọng cần hiểu là (i) họa tiết "đang xây dựng" trong R CMD build, (ii) và khi chúng được sao chép vào thư mục inst/doc/ (được tạo nếu thiếu) của gói được tạo. Ngoài ra, (iii) thư mục vignettes/ sẽ không là một phần của gói xây dựng, tức là <pkgname>_<version>.tar.gz tệp. Vì vậy, hãy đảm bảo xem trong inst/doc/.

Vì vậy, phải rõ ràng ở đây, sử dụng giả <name>.Rnw có thể được coi là một hack có thể phá vỡ nếu ai đó quyết định ngăn chặn chiến lược này. Tuy nhiên, nếu điều đó xảy ra, bạn hoàn toàn có thể tạo ra một công cụ họa tiết không Sweave mà mục đích duy nhất là biên dịch một tệp <name>.pdf thành một tệp ... <name>.pdf. Điều này là hợp lệ và có thể do sự hỗ trợ không Sweave được thêm vào trong R (> = 3.0.0). Tôi đã cân nhắc việc thêm công cụ như vậy vào gói R.rsp, ví dụ: \ VignetteEngine {R.rsp :: StaticPDF}. Với điều đó bạn thậm chí sẽ không phải có tệp Rnw giả đó - chỉ có tệp PDF.

Hope this helps

+0

Tôi có cảm giác mơ hồ rằng bạn sẽ không được phép nhiều hơn Rnw tại một điểm tương lai nhưng không có tham chiếu tốt. –

+1

Tôi không thể làm việc này trên R 3.0 mà không sửa đổi 'package.tar.gz' theo cách thủ công. Vấn đề là, như bạn mô tả, trong quá trình xây dựng 'R CMD',' pdf' được chuyển đến '/ inst/doc'. Tuy nhiên, '/ vignettes/static.Rnw' * không * được đưa vào gói nguồn và sẽ được xây dựng lại trong khi kiểm tra' R CMD' tại thời điểm đó nó sẽ thất bại vì nó không tạo ra tệp 'pdf'. – Jeroen

+2

Tôi đã sử dụng thủ thuật này một thời gian, nhưng nó ngừng hoạt động với R 3.1. –

Các vấn đề liên quan