8

私はLaTeXで論文を書いていますが、好みが少し長かったので、いくつかのファイルに分割しました。thesis.texそれらをintro.tex、、、、およびとmat_n_met.tex呼びましょう。、、およびをとリンクしました(など...)。また、 (Sweaveを介して実行する)という別のファイルを作成しました。このファイルには、データ分析を使用してRスクリプトを実行するチャンクと、(たとえば)を介して埋め込んだグラフのpdf出力を生成するチャンクが含まれます。まだフォローしていますか?rslts.texdiscsn.texintro.texmat_n_met.texrslts.texdiscsn.texthesis.tex\include{intro}r_crunching.Rnw\includegraphicsrslts.tex

Rスクリプトを使用してチャンクへの「リンク」なしでRnwを実行すると(つまり、名前を変更rslts.texしました)、の参照が存在しないというエラーが表示されます。すべてのファイルを単一の.Rnwにマージせずに、たとえば呼び出す方法はありますか?rslts.RnwSweave()\Sexpr{}\Sexpr{}rslts.Rnw

これを達成する他の方法は大歓迎です。

4

5 に答える 5

5

RStudio(http://www.rstudio.com/ide/)の使用をお勧めします。SweaveはそのIDEにうまく統合されており、複数ファイルのドキュメントをサポートしています。複数ファイルのドキュメントを操作する場合でも、SynctexおよびTeXエラーログナビゲーションは引き続き機能します。

マスターファイルから、を使用して子ファイルを含めることができます

\SweaveInput{Child.Rnw}

ディレクティブを含めることで、子ファイルをマスターファイルにリンクして戻すことができます

% !Rnw root = Master.Rnw

子ファイル内。そうすれば、子ファイルで作業してタイプセットするときに、RStudioはマスターファイルをタイプセットすることを認識します。

詳細については、RStudioのドキュメント(http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files )で説明されています。

于 2013-07-02T17:10:59.823 に答える
4

Sweaveを扱っていることを一瞬忘れて、ラテックスの問題について考えてください。そのための解決策\include\includeonly提供してください。いくつかの簡単なテストファイルでそれを試してください。

それがわかったら、Sweaveを折り返してミックスに戻します。これは、非常に巧妙なものではありますが、Sweaveが「単なる」前処理ステップの後であるように機能します。

于 2010-08-10T18:38:38.467 に答える
2

Dirkとmjmの答えを拡張するには、\include'sとMakefilesを使用することをお勧めします。

マスターファイルがあるとします:master.tex。そのファイルには、いくつか.tex.Rnwファイルを含めます。

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

次のMakefileは、、およびファイルを作成するための関数を提供.tex.Rます.pdf

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

基本的に、ある.SUFFIXESファイル形式から別のファイル形式に変換するための一連のルールを提供します。たとえば、からに変換する.Rnw.Rは、次のコマンドを使用します

`R CMD Stangle $<`
于 2011-09-27T08:54:31.690 に答える
1

かなり明白な答えの1つは、makefileを使用し、場合によってはパッケージcachesweaveを使用して、関連するファイルを正しい順序で処理することです。

于 2010-08-10T21:04:43.797 に答える
0

Sweave(Rstudioの下)でのマルチファイルプロジェクトに対する私の解決策は次のとおりです。

1)マスターファイルを作成します。たとえば、master.Rnwサブファイルなどを呼び出すマスターファイルを作成します。intro.Rnwmatmet.Rnw

\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)サブファイルを作成します。ここでは最初のものだけをあげますintro.Rnw。サブファイルでは、またはなどの前文コマンドを使用しないことに注意してください。\documentclass\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)「intro.Rnw」に変更を保存した後、「master.Rnw」に移動し、Ctrl + Shift +Kを使用してコンパイルします...voilá:

上記のコマンドで作成されたファイルのスクリーンショット。

于 2018-04-21T16:12:41.583 に答える