Как мне катиться нескольким файловым проектом?
-
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), который удерживает кусок, который управляет сценарием R с анализом данных и кусками, которые производят PDF-выходы графов, которые я встровою через \includegraphics
(в наличии, rslts.tex
). Все еще следуем?
Если я запускаю RNW (то есть я переименован в rslts.tex
к rslts.Rnw
) без «ссылки» в кусок с помощью сценария R, вы получите Sweave()
Ошибка, сказав ссылку в \Sexpr{}
не существует Есть ли способ, не сдерживая всех файлов в один .rnw, чтобы позвонить \Sexpr{}
Секс rslts.Rnw
?
Другие методы Как добиться этого приветствуются.
Решение
Забудьте на секунду, что вы имеете дело с Sweave и просто подумайте о латексной проблеме - для которой \include
и \includeonly
Предложить решения. Попробуйте это с несколькими простыми тестовыми файлами.
Как только вы выясните, сложите SWEAVE обратно в смесь, и она просто работала как Sweave, - это после «просто» стадия предварительного обработки, хотя и очень умным.
Другие советы
Я рекомендую использовать 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.
Расширить ответ Dirk и MJM, я бы предложил использовать \include
и мысли.
Предположим, у вас есть основной файл: 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 $<`
Один довольно очевидный ответ - использовать makefile, возможно, использование пакета Cachesweave, для обработки соответствующих файлов в правильном порядке.
Мое решение для нескольких файловых проектов в 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á: