Написание больших документов с Sweave. Возможно ли это сделать с LaTeX?
Я просто открываю Sweave
и R
. Я видел несколько примеров документов Sweave
и также начал писать один или два сам по себе. Я впечатлен способностью вычислений в R
и вывода результатов непосредственно в документе LaTeX
.
Теперь я думаю о больших документах (как обычно у нас с LaTeX
), которые состоят из нескольких страниц и нескольких частей. С помощью LaTeX
(я использую WinEdt) я устанавливаю основной документ (например, main.tex
), а затем другие вспомогательные документы, такие как introduction.tex
, discussion.tex
и т.д.
Мой вопрос: можем ли мы сделать это с помощью Sweave
? Теперь я работаю с единственным документом Sweave
(.Rnw). Можем ли мы иметь несколько документов Sweave
(с одним основным и вторичным), как обычно, с LaTeX
?
Обходной путь состоял бы в том, чтобы иметь отдельные файлы Sweave
, а затем sweave их для создания фрагментов R
LaTeX
, которые можно скопировать в документ LaTeX
, но тогда вся идея кажется довольно неэффективной и трудоемкой.
Пожалуйста, дайте понять, какие предложения и решения у вас есть.
Спасибо большое...
Ответы
Ответ 1
Вот что мне очень хорошо работает:
У меня есть один главный файл ( "master.Rnw" ), который не имеет текста, но служит только для сбора файлов (разделов, разделов), которые образуют документ в конце.
Затем у меня есть один файл с R-кодом, который повторно используется в других файлах ( "func.Rnw" ). Здесь у меня много названных фрагментов
<<my_fun_1,eval=FALSE,echo=FALSE>>=
# code:
c <- a * b
@
В master.Rnw первое, что после \begin {document}, я делаю
\SweaveInput{func.Rnw}
и оттуда, у меня есть мои названные куски. В файле "chap1.Rnw" теперь у меня есть
<<echo=FALSE>>=
a <- 10
b <- 25
<<my_fun_1>>
c
@
Конечно, я должен
\SweaveInput{chap1.Rnw})
в master.Rnw.
Мне нужно только \Sweave{master.Rnw}
, а затем pdflatex получить файл master.tex, не копировать/вставлять или обрабатывать несколько файлов.
Я просто пишу бумагу из 60 + страниц с примерно 25 таблицами и цифрами, и до сих пор все работает отлично.
Надеюсь, это поможет,
Rainer
Ответ 2
Я использую Sweave, чтобы написать книгу с примерно 16 главами. Я согласен с тем, что использование make файла с несколькими Rnw файлами - хорошая идея. Еще одна приятная вещь заключается в том, что make можно запускать параллельно (-p, я думаю), поэтому в зависимости от того, как объекты главы зависят друг от друга, вы можете запускать много кода одновременно.
То, что изменило для меня, - это кеширование. Несколько моих кодовых блоков могут работать в течение нескольких дней, но не изменились в процессе написания книги. Есть несколько пакетов, которые позволяют сохранять результаты при его запуске и повторно перезапускать фрагмент, если объекты, на которые зависит фрагмент, были изменены.
Для этого есть несколько пакетов. См:
http://cran.r-project.org/web/views/ReproducibleResearch.html
Я использую форму тканевой формы Bioconductor.
Пока я на дампе мозга... если у вас более одного автора, я обнаружил, что общая учетная запись Dropbox - отличный способ поддерживать проект.
Max
Ответ 3
Я рекомендую использовать RStudio (http://www.rstudio.com/ide/) вместо WinEdt. Sweave хорошо интегрирован в эту среду разработки, и, как и в WinEdt, вы можете установить один файл в качестве основного файла. Из основного файла вы можете включить дочерние файлы, используя
\SweaveInput{Child.Rnw}
Вы можете связать дочерний файл с основным файлом, указав директиву
% !Rnw root = Master.Rnw
в дочернем файле. Таким образом, когда вы работаете над дочерним файлом и набираете его, RStudio знает, как набирать мастер файл.
Подробности объясняются в документации RStudio по адресу http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files
Самая приятная особенность заключается в том, что навигационная запись журнала Synctex и TeX по-прежнему работает даже при работе с документами с несколькими файлами.