Makefile для чайников? Mac OS X - PullRequest
       22

Makefile для чайников? Mac OS X

7 голосов
/ 07 февраля 2011

У меня возникли проблемы с пониманием ответа на предыдущий вопрос, который я задал здесь для stackoverflow, расположенного по адресу:

Более эффективный рабочий процесс R / Sweave / TeXShop?

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

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

Ответы [ 4 ]

10 голосов
/ 08 февраля 2011

Я написал пост со ссылками на начало работы с make-файлами для Sweave .

Из должности:

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

6 голосов
/ 07 февраля 2011

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

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

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

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

3 голосов
/ 07 февраля 2011

Я только что прочитал предыдущий вопрос и этот, но вот небольшой сценарий оболочки, который я написал для 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. Первая строка запускает создание Sweave файла .tex. Цикл for является необязательным: он используется для обрезки графики .pdf во вложенную папку. Я обнаружил, что это намного проще, чем обрабатывать поля в графике R, в частности, если я хочу оптимизировать позицию в вашем отчете .pdf.

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

HTH

2 голосов
/ 07 февраля 2011

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

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

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

...