Frage

Ich schreibe meine Diplomarbeit in LaTeX und weil die Dinge ein bisschen zu lang für meinen Geschmack bekam, hatte ich Split sie in mehrere Dateien. Nennen wir sie thesis.tex, intro.tex, mat_n_met.tex, rslts.tex und discsn.tex. Ich habe intro.tex, mat_n_met.tex verbunden, rslts.tex und discsn.tex durch thesis.tex mit \include{intro} (und so weiter ...). Ich habe auch eine separate Datei namens r_crunching.Rnw erstellt (das ich durch Sweave laufen), die ein Stück hält, dass der R-Skript mit Datenanalyse ausgeführt wird und die produzieren chunks pdf Ausgänge von Graphen, dass ich über \includegraphics Einbetten (in z.B. rslts.tex). Folgende noch?

Wenn ich eine Rnw (das heißt ich umbenannten rslts.tex zu rslts.Rnw) ohne „einen Link“ auf den Brocken mit dem R-Skript ausführen, erhalten Sie einen Sweave() Fehlermeldung erhalten dass die Referenz in \Sexpr{} existiert nicht. Gibt es eine Möglichkeit, ohne alle Dateien in ein einziges .Rnw, um Anruf \Sexpr{} in etwa rslts.Rnw Fusion?

Andere Methoden, wie dies zu erreichen, ist willkommen.

War es hilfreich?

Lösung

Vergessen Sie für eine Sekunde, dass Sie mit Sweave handelt und man denke nur an den Latex Problem - für die \include und \includeonly bieten Lösungen. Versuchen Sie das mal mit ein paar einfachen Testdateien.

Sobald Sie haben herausgefunden, dass, falten Sweave zurück in die Mischung und es nur Arbeit als Sweave nach ist ‚nur‘ ein Vorverarbeitungsschritt, wenn auch ein sehr kluger ein.

Andere Tipps

Ich empfehle, mit RStudio ( http://www.rstudio.com/ide/ ). Sweave ist schön in diesem IDE integriert und unterstützt Multi-File-Dokumente. Auch arbeiten SyncTeX und TeX Fehlerprotokoll Navigation noch, wenn sie mit Multi-Datei-Dokumenten arbeiten.

Von der Master-Datei können Sie Kind-Dateien enthalten mit

\SweaveInput{Child.Rnw}

Sie können eine untergeordnete Datei zurück auf die Master-Datei verknüpfen, indem die Richtlinie einschließlich

% !Rnw root = Master.Rnw

in der untergeordneten Datei. Auf diese Weise, wenn sie auf einer untergeordneten Datei arbeiten und Satz es, RStudio kennen die Master-Datei zu setzen.

Die Details werden in der RStudio Dokumentation erläutert unter http://www.rstudio.com / ide / docs / Authoring / multiple_rnw_files

Zur Erweiterung Dirks und MJM Antwort, würde ich vorschlagen \include des und Makefiles verwenden.

Angenommen, Sie eine Master-Datei haben: master.tex. In dieser Datei sind einige .tex und .Rnw Dateien, d.

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

Nun ist die folgende Makefile bietet Funktionen für die Erstellung der .tex, .R und .pdf Dateien:

.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 $<

Im Wesentlichen bieten die .SUFFIXES eine Reihe von Regeln für convert von einem Dateiformat in ein anderes. Zum Beispiel zu konvertieren von .Rnw zu .R, verwenden wir den Befehl

`R CMD Stangle $<`

eine ziemlich offensichtliche Antwort ist eine Make-Datei zu verwenden, möglicherweise Paket cachesweave verwenden, die entsprechenden Dateien in der richtigen Reihenfolge zu verarbeiten.

Meine Lösung für Multi-File-Projekte in Sweave (unter Rstudio) ist die folgende:

1) Erstellen Sie eine Master-Datei, sagen master.Rnw, in dem Sie die Anrufe müssen die Subdateien intro.Rnw, matmet.Rnw, etc:

\documentclass[11pt]{book}
% \usepackage{blah, blah} as you wish

\graphicspath{ {./figs/}

\begin{document}
\SweaveOpts{concordance=TRUE}

\include{intro} % a call to 'intro.Rnw'
\include{matmet} % a call to 'matmet.Rnw'
\include{results} % a call to 'results.Rnw'
\include{discuss} % a call to 'discuss.Rnw'

\end{document}

2) Erstellen Sie die Unterdateien. Ich gebe hier nur die ersten, intro.Rnw. Bitte beachten Sie, dass in den Teildateien Sie nicht verwenden Präambel Befehle wie \documentclass oder \begin{document}

\chapter{Introduction}\label{ch:intro}
\section{This is section 01}
In section 01 we are concerned about whether \texttt{Sexpr} could possibly work. The chunk below creates a variable \em{a} which will be referred to by this command later on.

<<>>=
a <- 1+2
@

Ok, if it is working, we shall see number 3 right here: \Sexpr{a}.

3) Nach Änderungen in 'intro.Rnw' zu speichern, einfach zu 'master.Rnw' gehen und kompilieren Sie es mit Strg + Shift + K und ... voilá:

Screenshot der Datei durch den obigen Befehl erstellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top