2011-02-07 5 views
7

У меня возникают проблемы с пониманием ответ на предыдущий вопрос, я спросил здесь, на StackOverflow, расположенной по адресу:Makefile для чайников? Mac OS X

More efficient R/Sweave/TeXShop work-flow?

Ответ на этот вопрос, в частности, от пользователя: las3rjock, который предлагает создать «Makefile» и запуск make-файла для автоматизации компиляции .Rnw в R (Sweave), а затем в LaTeX. Я не знаю, что такое make-файл или как его использовать в терминале (?) В Mac OS X. Мой интернет-поиск вернул вещи выше моего уровня знаний. Наверное, мне нужна рука для создания и запуска make-файла.

Может ли кто-нибудь дать «фиктивные» инструкции о том, как создать make-файл для запуска Sweave/LaTeX, или более того, использовать ответ от las3rjock в предыдущем вопросе? Спасибо!

ответ

10

Я написал пост со ссылками на getting started with makefiles for Sweave.

От поста:

Я также разместил четыре образца документов Sweave. У каждого есть полный исходный код, доступный на github. Каждый использует make-файл. В первых двух учебных пособий, детали Makefile описаны:

2

создайте файл с именем Makefile, где хранятся ваши документы и откройте его.

Копировать/вставить код он напечатанный в вашем Makefile (и не забудьте заменить myfile по имени файла, который вы хотите сгенерировать)

Открыть консоль в каталоге документов и введите make pdf

6

makefile - это простой текстовый файл, который указывает, как сделать «цели» заданными набором «зависимостей» через кучу действий. Целями являются то, что слева от них: «после», зависимости находятся на остальной части этой линии. Последующие строки с отступом - это действия, которые должны сделать цель.

Так, например, в вашем случае LaTeX файл .pdf является вашей конечной целью, и это зависит от вашего .tex-файла. Итак, есть действие, которое запускает pdflatex. Сам .tex создается из файла .Rnw, так что есть еще одно правило, чтобы foo.tex из foo.Rnw запустил Sweave.

Красота make заключается в том, что он проверяет временные метки на зависимостях. Первоначально он предназначался для компиляции больших программ на C, разделенных на множество файлов. При компиляции окончательной программы нет смысла перекомпилировать все .C, которые вы не изменили, поэтому ваш Makefile будет просто скомпилировать измененные файлы .C и связать все файлы .o с исполняемым файлом.

Make был зачислен за пределы этой оригинальной схемы, до такой степени, что доступны новые автоматические решения сборки, поэтому вы можете увидеть упоминания cmake, ant, maven и множество других вещей. Я не знаю, какая половина из них.

3

Я только что прочитал предыдущий вопрос и этот, но вот небольшой скрипт оболочки, который я написал для Mac OS X. Я не уверен, что это именно то, что вы хотите, но, возможно, вы можете узнать из этого:

#!/bin/sh 
R CMD Sweave yourfile.Rnw 
for file in `ls pdfs`; 
do pdfcrop "$file" pdfs/"$file" 
done 
pdflatex yourfile.tex 
open yourfile.pdf 

В случае, если вы не знаете, вы можете сделать этот скрипт исполняемым с помощью chmod +x yourscriptfile.sh, а затем запустить его ./yourscript .The первую строку начинается ваше Sweave создания .tex файла. Цикл for не является обязательным: он используется для обрезки .pdf-графики в подпапку. Я нашел это намного проще, чем обрабатывать маржу в графике R - в частности, если я хочу оптимизировать позицию в вашем отчете .pdf.

Рабочий процесс Я делаю следующее: 1. Храните все, что напечатано в R-объектах (например, результаты функции и графика). 2. Просто используйте небольшую строку в Sweave, которая источает весь анализ. Таким образом, мой документ Sweave содержит едва ли какой-либо код без LaTeX и остается удобным.Всякий раз, когда я редактирую текст мне просто нужно отредактировать файл sweave (или, если не нужны расчеты в обновлении или даже нужно только файл .tex)

НТН