
Я просто наткнулся на этозапись в блоге оrubber
и подумал: "Разве это не то же самое, что и latexmk
делает?". Так вот, теперь я задаюсь вопросом: не так ли? Или есть какие-то различия?
решение1
Похоже, что резина обладает следующими характеристиками, которые (пока?) не предлагает latexmk:
- Резинаанализирует файл журнала LaTeX, фильтрует его и красиво печатает только "релевантные" сообщения (предупреждения, ошибки). Rubber всегда запускает LaTeX внеинтерактивный режим, в то время как latexmk, похоже, требует дополнительных переключателей или настройки.
- С резиной вы можете иметьПараметры конфигурации в виде комментариев в исходном коде LaTeX; latexmk требует вспомогательные файлы конфигурации.
- Самое главное, резина позволяет вам указать правильные значенияTEXINPUTS, BIBINPUTS, BSTINPUTS и т. д.для каждого документа, использующего вышеупомянутые параметры конфигурации; latexmk, по-видимому, ожидает, что эти переменные среды уже определены соответствующим образом.
Конечно, многие из этих проблем можно обойти с помощью некоторых скриптов-оберток и вспомогательных файлов. И, очевидно, есть много возможностей latexmk, которые не предлагает rubber.
решение2
Одно важное преимущество latexmk перед rubber заключается в том, что latexmk обнаруживает зависимые файлы гораздо надежнее. Насколько мне удалось выяснить, rubber определяет зависимые файлы, анализируя файл tex, ища макросы , \input
и \include
. \includegraphics
Но если эти макросы спрятаны внутри другого макроса, rubber не обнаруживает зависимые файлы правильно. Например, если у вас есть
\newcommand\try[1]{\input{#1}}
\try{sub}
Rubber не определит, что sub.tex
это зависимый файл. Таким образом, если файл sub.tex
изменится, Rubber не определит, что компиляцию нужно запустить снова.
Вместо этого Latexmk анализирует файл журнала и использует -recorder
опцию ( pdf
) latex
для определения зависимых файлов.
решение3
Latexmk также имеет функцию автоматического предварительного просмотра, которая перекомпилирует (умно) PDF-файл сразу после сохранения tex.
Существуют также более продвинутые функции, например, тесная интеграция с make-файлами.