Компилировать несколько файлов Rnw - PullRequest
0 голосов
/ 12 июня 2019

Если вы используете Emacs, вы сможете ответить на эту часть.Если нет, перейдите к последней части ниже.

Если мы разделим наш файл Rnw на несколько файлов, можно ли создать документ целом , используя knitr и LaTeX вEmacs, нажав M-n e на дочернем файле?

Полагаю, что описанный выше процесс должен быть возможен, возможно, с помощью Emacs файловые переменные для указания родителя дочернего файла.

В настоящее время я должен сменить буфер на дочернийк родителю, чтобы скомпилировать весь документ, используя M-n e (или мне нужно использовать Makefile --- что я и делаю), но я хочу нажать M-n e на любом из дочерних файлов с указанным родителем и получитьвесь документ скомпилирован.

Я использую ESS, polymode и poly-R в Emacs, как предписано в этом ответе .


Приведенный выше сценарий вдохновленрабочим процессом создания документов с использованием LaTeX в Emacs plus AUCTeX.В этой настройке документ создается нажатием того же сочетания клавиш (C-c C-a) в основном файле tex или в любом другом файле tex, который в основном файле include d.Это избавляет от необходимости менять буфер на основной файл перед нажатием C-c C-a.


Если вы не используете Emacs, вы можете ответить на это part

В качестве связанной, но далеко не желаемой опции, knitr позволяет компилировать только дочерний элемент, указав основной файл в качестве родительского.Это делается путем добавления строки, такой как \Sexpr{set_parent('main-document.Rnw')}, к дочернему элементу (см. автономный режим ).Но проблема в том, что не создает весь документ, а только часть, включенную в дочерний файл.

В качестве минимального примера это основной (родительский) файл с именем main.Rnw:

\documentclass{article}

\begin{document}
This is the main file.

<<>>=
2^10
@ 

Now we include a child file.

<<chld, child = "chld.Rnw">>=
@

Back to the main.

\end{document}

, который включает следующий дочерний файл с именем chld.Rnw:

<<chld-set-parent, echo = FALSE, cache = FALSE>>=
set_parent("main.Rnw")
@ 

% instead of the above we could say \Sexpr{set_parent("main.Rnw")}

This is the contents of the child document.

<<>>=
3^6
@

End of child.

Здесь, вязание main.Rnw с использованием следующего bash script

R -q -e "library(knitr);  knit2pdf('main.Rnw')"

создает весь документ при вязании chld.Rnw:

R -q -e "library(knitr);  knit2pdf('chld.Rnw')"

создает документ, который содержит только содержимое дочернего файла.Это может быть полезно для некоторых, но я думаю, что гораздо полезнее иметь возможность вызывать команду knit для chld.Rnw, и весь документ создается, потому что мы явно указали для его родительского файла main.Rnw.

...