2010-08-10 17 views
8

Tôi đang viết luận án của mình trong LaTeX và bởi vì mọi thứ có một chút dài đối với sở thích của tôi, tôi đã chia nó thành nhiều tệp. Hãy gọi cho họ thesis.tex, intro.tex, mat_n_met.tex, rslts.texdiscsn.tex. Tôi đã liên kết intro.tex, mat_n_met.tex, rslts.texdiscsn.tex thông qua thesis.tex với \include{intro} (v.v ...). Tôi cũng đã tạo một tệp riêng biệt được gọi là r_crunching.Rnw (mà tôi chạy qua Sweave) chứa một đoạn chạy tập lệnh R với phân tích dữ liệu và các khối tạo ra kết quả đầu ra pdf của biểu đồ mà tôi đã nhúng qua \includegraphics (ví dụ: rslts.tex). Vẫn theo?Làm cách nào để Sweave một dự án nhiều tệp?

Nếu tôi chạy một Rnw (ví dụ: Tôi đổi tên rslts.tex-rslts.Rnw) mà không cần "một liên kết" với đoạn với kịch bản R, bạn sẽ nhận được một lỗi Sweave() nói tham chiếu trong \Sexpr{} không tồn tại. Có cách nào, mà không cần hợp nhất tất cả các tệp thành một .Rnw, để gọi \Sexpr{} nói rslts.Rnw?

Các phương pháp khác để thực hiện điều này được hoan nghênh.

+0

off-topic, nhưng trên off-cơ hội này rất hữu ích: http://staff.acecrc.org.au/~mdsumner/TCallaghan/ Đó mẫu cho thấy cách sử dụng cơ sở hạ tầng bao gồm/bao gồm, và có tất cả các phần ít nhất cho một tổ chức. Tôi sử dụng nó trực tiếp, và vừa thay thế chap1.tex, vv với Rnw tương đương của tôi và thêm Sweave vào quá trình tiền mủ. – mdsumner

+0

Tôi đã chỉnh sửa tiêu đề để nói cách tôi hiểu câu hỏi của bạn. Vui lòng chỉnh sửa lại nếu tôi hiểu sai. (Tôi vẫn chưa thực sự hiểu được vấn đề và cách mà câu trả lời được chấp nhận đã giúp được.) –

+0

Vấn đề là ít nhất hai tệp là các tệp Sweave và kết quả từ một tệp không thể thấy được . Tôi nghĩ tiêu đề ban đầu đơn giản và rõ ràng hơn, mặc dù không chính thức. Roman vẫn còn hoạt động ở đây, vì vậy có lẽ anh ta sẽ nhảy vào, nhưng trong khi chờ đợi tôi sẽ đưa nó trở lại gần hơn với cách nó bắt đầu. Tuy nhiên, tôi hy vọng điều này không thô lỗ, nhưng tại sao bạn phải chỉnh sửa câu hỏi mà bạn không hiểu? – Aaron

Trả lời

4

Hãy quên một giây rằng bạn đang xử lý Sweave và chỉ nghĩ đến vấn đề mủ cao su - trong đó \include\includeonly các giải pháp cung cấp. Hãy thử điều đó với một vài tệp thử nghiệm đơn giản.

Một khi bạn đã tìm ra, hãy gấp lại vào hỗn hợp và nó chỉ hoạt động như Sweave sau khi 'đơn thuần' là một bước xử lý trước, mặc dù là một bước rất thông minh.

+4

Xem thêm SweaveInput. – jverzani

1

một câu trả lời khá rõ ràng là sử dụng makefile, có thể sử dụng gói cachesweave, để xử lý các tệp có liên quan theo đúng thứ tự.

2

Để mở rộng câu trả lời của Dirk và mjm, tôi khuyên bạn nên sử dụng \include và Makefiles.

Giả sử bạn có tệp chính: master.tex. Trong tập tin đó, bạn bao gồm một số .tex.Rnw file, tức là

\include chapter1 
\include chapter2 
\include chapter3 
.... 

Bây giờ Makefile sau đây cung cấp các chức năng cho việc tạo các .tex, .R.pdf file:

.SUFFIXES: .tex .pdf .Rnw .R 

MAIN = master 
##List your your .Rnw includes 
RNWINCLUDES = chapter1 chapter2 chapter3 
TEX = $(RNWINCLUDES:=.tex) 
RFILES = $(RNWINCLUDES:=.R) 
RNWFILES = $(INCLUDES:=.Rnw) 

all: $(MAIN).pdf 
    $(MAIN).pdf: $(TEX) $(MAIN).tex 

R: $(RFILES) 

.Rnw.R: 
    R CMD Stangle $< 

.Rnw.tex: 
    R CMD Sweave $< 

.tex.pdf: 
    pdflatex $< 
    bibtex $* 
    pdflatex $< 
    pdflatex $< 

Về cơ bản, .SUFFIXES cung cấp một bộ quy tắc để chuyển đổi từ một định dạng tệp sang định dạng tệp khác. Ví dụ, để chuyển đổi .Rnw-.R, chúng tôi sử dụng lệnh

`R CMD Stangle $<` 
5

tôi khuyên bạn nên sử dụng RStudio (http://www.rstudio.com/ide/). Sweave được tích hợp độc đáo vào IDE đó và nó hỗ trợ các tài liệu đa tệp. Ngay cả điều hướng nhật ký lỗi Synctex và TeX vẫn hoạt động khi làm việc với tài liệu nhiều tệp.

Từ các tập tin tổng thể, bạn có thể bao gồm các file con sử dụng

\SweaveInput{Child.Rnw} 

Bạn có thể liên kết tập tin một đứa trẻ trở lại các tập tin tổng thể bằng cách bao gồm các chỉ thị

% !Rnw root = Master.Rnw 

trong file đứa trẻ.Bằng cách đó khi làm việc trên một tệp con và sắp xếp nó, RStudio biết để sắp xếp tệp chính.

Các chi tiết được giải thích trong tài liệu RStudio tại http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files