Работа с Rstudio для написания тезисов глав в.Rnw

Я получил 2 файла из моего университета для написания диссертации с использованием LaTeX. Один - это файл.sty, а другой - файл.TeX. Чтобы работать в R studio, я решил иметь отдельные файлы.Rnw для каждой главы и один файл для объединения всех глав. Я думаю, что.TeX-файл - это тот, где я могу объединить все главы, потому что он дает примеры глав в выводе. На веб-сайте R studio есть страница под названием "Работа с несколькими файлами Rnw", которая описывает этот процесс (я полагаю), но мне не совсем понятна. В нем говорится о "дочерних" файлах, которые, я думаю, являются главами в моем случае. Поэтому мой простой вопрос заключается в том, что, если я создаю разные файлы.Rnw, по одному для каждой главы, как я могу попросить R объединить их в один файл TeX, предоставленный мне университетом? Пожалуйста, имейте мое невежество, поскольку я новичок в воспроизводимых исследованиях.

2 ответа

Решение

Предполагая, что вы используете knitr (и я настоятельно рекомендую knitr over sweave), простой способ сделать это с помощью child вариант куска.

В качестве примера, скажем, у вас было 2 главы, хранящиеся в файлах chap1.Rnw а также chap2.Rnw и главный документ thesis.Rnw (с именем файла университетского стиля thesisStyle). Вы можете положить все это вместе, внутри thesis.Rnw - при условии, что все они находятся в одном каталоге - через:

\documentclass{article}
\usepackage{thesisStyle}

\begin{document}
% "include" chapter 1
<<chap1, child='chapt1.Rnw'>>=
@

% again with chapter 2
<<chap2, child='chap2.Rnw'>>=
@

\end{document}

Тогда просто скомпилируйте RStudio thesis.Rnw и это выплюнет thesis.tex который будет иметь все вместе правильно соединены.

Это еще не все! Вы можете развивать chap1.Rnw без необходимости давать ему собственную преамбулу. То есть, если содержание chap1.Rnw является

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

тогда вы можете скомпилировать chap1.Rnw как любой обычный файл.Rnw, и он будет принимать преамбулу из thesis.Rnw перед запуском любого используемого вами бэкэнда TeX (обычно pdflatex или xelatex). В частности, Книтр будет шлепать \documentclass{article} а также \usepackage{thesisStyle} линии в верхней части chapt1.tex,

Одним словом, я обнаружил, что модель "ребенок-родитель" в knitr чувствительна к пробелам. Таким образом, убедитесь, что нет места над блоком

<<echo=FALSE, cache=FALSE>>=
set_parent('thesis.Rnw')
@

У вас есть несколько вариантов.

Один из вариантов - просто обработать каждую из ваших глав вручную. У вас будет файл.Rnw для каждой главы, затем в Rstudio (или R) вы запустите knit функция из пакета knitr (может быть кнопка или меню Rstudio, чтобы сделать это напрямую), чтобы преобразовать ваш файл.Rnw в файл.tex. Тогда в родительском документе LaTeX вы просто используете \include включить.tex файлы для каждой главы. Это означает, что нужно обрабатывать каждую главу самостоятельно и возвращаться к ней каждый раз, когда вы что-то меняете.

Другой вариант - создать родительские и дочерние документы, которые knitr будет понимать и обрабатывать автоматически для вас (Rstudio использует knitr для обработки.tex и, в конечном итоге, файлов.pdf). На этой странице демонстрируются способы создания родительских и дочерних документов таким образом, просто измените предоставленный вам файл.tex, чтобы включить важные элементы в демонстрационные версии (и, возможно, измените имя на.Rnw). Убедитесь, что класс документа соответствует предоставленному вам файлу.sty, а важные параметры из файла.tex остаются, но включайте дочерние документы, как показано в демонстрационной версии knitr. Таким образом, вы можете обрабатывать документ целиком, а не каждую отдельную главу.

Другие вопросы по тегам