マルチファイルプロジェクトを盗むにはどうすればよいですか?
-
27-09-2019 - |
質問
私はラテックスで論文を書いていますが、物事は私の好みのために少し長くなったので、それをいくつかのファイルに分割しました。それらを呼びましょう thesis.tex
, intro.tex
, mat_n_met.tex
, rslts.tex
と discsn.tex
. 。リンクしました intro.tex
, mat_n_met.tex
, rslts.tex
と discsn.tex
終えた thesis.tex
と \include{intro}
(等々...)。また、呼ばれる個別のファイルも作成しました r_crunching.Rnw
(私がsweaveを通過すること)それは、データ分析と私が埋め込んだグラフのPDF出力を生成するチャンクでRスクリプトを実行するチャンクを保持します。 \includegraphics
(例えば、 rslts.tex
)。まだフォローしていますか?
RNWを実行した場合(つまり、名前が変更されました rslts.tex
に rslts.Rnw
)Rスクリプトを使用してチャンクへの「リンク」がなければ、 Sweave()
参照があるというエラー \Sexpr{}
存在しません。すべてのファイルを単一の.rnwにマージすることなく、呼び出す方法はありますか \Sexpr{}
言う rslts.Rnw
?
他の方法これを達成する方法は大歓迎です。
解決
sweaveを扱っていることを忘れて、ラテックスの問題を考えてください - \include
と \includeonly
ソリューションを提供します。いくつかの簡単なテストファイルでそれを試してください。
それを理解したら、揺れをミックスに折り返すと、非常に賢いものではありますが、「単なる」前処理ステップの後に盗みが出るので、それはただ機能します。
他のヒント
rstudioを使用することをお勧めします(http://www.rstudio.com/ide/)。 SweaveはそのIDEにうまく統合されており、マルチファイルドキュメントをサポートしています。 Multi-Fileドキュメントを操作する場合、SynctexおよびTexエラーログナビゲーションでも機能します。
マスターファイルから、子供ファイルを使用して含めることができます
\SweaveInput{Child.Rnw}
ディレクティブを含めることにより、子ファイルをマスターファイルにリンクすることができます
% !Rnw root = Master.Rnw
子ファイルで。そうすれば、子ファイルで作業して組み立てるとき、rstudioはマスターファイルを整形することを知っています。
詳細については、rstudioのドキュメントで説明しています http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files
ダークと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 $<`
かなり明白な答えの1つは、おそらくパッケージCachesweaveを使用して、関連するファイルを適切な順序で処理するために、MakeFileを使用することです。
Sweave(rstudioの下)におけるマルチファイルプロジェクトに対する私の解決策は次のとおりです。
1)マスターファイルを作成します master.Rnw
, 、サブファイルへの呼び出しがあります intro.Rnw
, matmet.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áを使用してコンパイルします。