I got 2 files from my university for writing thesis using LaTeX. One is a .sty file and other one is .TeX file. In order to work in R studio I've decided to have separate .Rnw files for each chapter and one file for combining all the chapters. I think .TeX file is the one where I can combine all the chapters because it gives sample chapters in output. On R studio's website there is a page titled as 'Working with Multiple Rnw Files' which describes this process (I guess) but is not clear to me. It talks about 'child' files which I think are the chapters in my case. So my simple question is that if I create different .Rnw files, one for each chapter, how can I ask R to combine them in one TeX file which university provided me? Please bear my ignorance as I am new to reproducible research stuff.
Assuming you're using knitr (and I highly recommend knitr over sweave) the simple way to do this is with the child
chunk option.
As an example, say you had 2 chapters, kept in files chap1.Rnw
and chap2.Rnw
and a master document thesis.Rnw
(with university style file called thesisStyle
). You can put these all together, inside thesis.Rnw
-- assuming these are all in the same directory -- via:
\documentclass{article}
\usepackage{thesisStyle}
\begin{document}
% "include" chapter 1
<<chap1, child='chapt1.Rnw'>>=
@
% again with chapter 2
<<chap2, child='chap2.Rnw'>>=
@
\end{document}
Then just have RStudio compile thesis.Rnw
and it'll spit out thesis.tex
which will have everything bundled together properly.
That's not all, though! You can develop chap1.Rnw
without having to give it its own preamble. That is, if the content of chap1.Rnw
is
<<echo=FALSE, cache=FALSE>>=
set_parent('thesis.Rnw')
@
\chapter{In a world where...}
\section{Great voice actors in movie trailer history}
ANYTHING YOU'D NORMALLY PUT IN AN .Rnw FILE
then you can compile chap1.Rnw
like any regular .Rnw file and it'll take the preamble from thesis.Rnw
before running whatever TeX backend you're using (normally pdflatex or xelatex). In particular, knitr will slap the \documentclass{article}
and \usepackage{thesisStyle}
lines at the top of chapt1.tex
.
One word of caution, I've found the child-parent model in knitr to be white-space sensitive. So, be sure to have no space above the block
<<echo=FALSE, cache=FALSE>>=
set_parent('thesis.Rnw')
@
You have a couple of options.
One option is to just process each of your chapters by hand. You will have a .Rnw file for each chapter, then in Rstudio (or R) you run the knit
function from the knitr package (there may be an Rstudio button or menu to do this directly) to convert your .Rnw file to a .tex file. Then in the parent LaTeX document you just use \include
to include the .tex files for each chapter. This does mean processing each chapter yourself and having to go back and redo it anytime you change anything.
The other option is to create a parent and child documents that knitr will understand and process automatically for you (Rstudio is using knitr to do the processing to .tex and eventually .pdf files). This page has demonstrations on creating the parent and child documents this way, just modify the .tex file given to you to include the important things in the demos (and probably change the name to .Rnw). Make sure that the document class matches the .sty file given to you and the important options from the .tex file remain, but include the child documents as shown in the knitr demo. This way you can process the document as a whole rather than each individual chapter.
© 2022 - 2024 — McMap. All rights reserved.
knit
a document it just passes through the non-R parts and replaces the R parts with the output. It does not run LaTeX or other programs, so the preamble etc. is not needed. Runningknit
by clicking a button in Rstudio may run the additional programs, but usingknit
directly (and specifying .tex output) does not. – Tag