Рекомендуемая система сборки для latex? [закрытый]
Я пытаюсь выяснить лучшую систему сборки для latex.
в настоящее время, я использую latex-makefile, редактирование в vim и просмотр изменений в Okular или gv. Основная проблема заключается в том, что он иногда получает скрывает ошибки на меня, и я должен запустить latex вручную. Основные преимущества в том, что он делает все итерации мне нужно, и предлагает как pdf, так и ps просто.
Если у вас есть опыт с
- латекс-МК
- vim-latex
- kile
- lyx
- miktex
- latex-makefile
- окончательный латекс makefile
- резиновый
- любые другие, с которыми я не сталкивался
вы бы порекомендовали их, и почему / почему нет?
15 ответов:
Я только что попробовал latexmk. Если вы это сделаете
latexmk -pvc file.texзатем он будет автоматически просматривать (DVI по умолчанию).
- ручки зависимостей
- DVI, ps или pdf
- проходит нормально.
- очень много настроек, см.
man latexmkминусы:
- он не конденсирует ошибки, что не очень полезно (обходной путь: используйте rubber-info отдельно)
- ошибка в файле man: "иногда зритель (gv) пытается прочитать обновленный. ps или .pdf файл после его создания запускается, но до завершения файла. Работа вокруг: вручную обновить (или снова открыть) дисплей.". Было бы лучше, если бы он построил его через временное .pdf файл, чтобы избежать этого.
- Не очень удобный.
после рассмотрения всех этих вариантов в течение некоторого времени, я решил со следующим решением.
- установите vim для непрерывной записи при вводе.
- запустите скрипт в фоновом режиме, чтобы построить непрерывно, обновляя pdf, как это происходит. latexmk почти достаточно хорош, за исключением того, что он строит на месте, который перезагружается в плохое время в okular (my viewer).
скрипт доступен по адресу https://github.com/pbiggar/texbuild.
используйте rubber-info, Чтобы получить ошибки и предупреждения из файла журнала. Приведенный выше сценарий сохраняет файл журнала в t. log. В vim:
autocmd FileType tex set makeprg=rubber-info\ t.log autocmd FileType tex set errorformat=%f:%l:\ %m
Я не использовал его сам, но я слышал о резиновый как хорошая альтернатива.
с их сайта:
резина-это программа, цель которой для выполнения всех задач, связанных с компиляции документов LaTeX. Этот включает в себя компиляцию документа сама, конечно, достаточно раз так что все ссылки определены, и работает как для управления библиографической ссылки на литературу. Автоматическое выполнение dvips для создания PostScript документы также включено, а также использование pdfLaTeX для создания PDF-документов.
хорошо, так что этот вопрос немного старый, но он появился, когда я погуглил "latex build system", поэтому я подумал, что добавлю свои два цента. Я попробовал решения на основе Makefile, но нашел вывод немного подробным и громоздким. Я подумал, что кто-то, возможно, построил расширение scons для latex, но был приятно удивлен, обнаружив, что scons уже изначально поддерживает latex! Все, что вам нужно сделать, это создать файл SConsctruct следующим образом:
env = Environment() env.PDF(target="report.pdf", source="report.tex")для сборки просто запустите
scons report.pdf. Проектов SCons будет автоматически строить. tex файлы включены в отчет.tex, обрабатывать библиографии и выполнять повторные сборки для того, чтобы решить все ссылки - просто!вы можете создавать файлы DVI и PS таким же образом. Для получения дополнительной информации об этих строителях проверьтеhttp://www.scons.org/doc/2.0.1/HTML/scons-user/a8524.html .
для получения дополнительной информации о scons (a make replacement) см. http://www.scons.org/
Я использую Eclipse с надстройкой TexEcplise для редактирования моих TeX-файлов. Он имеет подсветку синтаксиса для LaTeX. Когда вы просите предварительный просмотр не измененного и уже скомпилированного файла tex, он открывает файл в средстве просмотра. Когда файл tex был изменен, он компилирует файл tex перед его просмотром. Он выполняет необходимые итерации, но только в случае необходимости.
еще одно преимущество заключается в том, что все ошибки и предупреждения суммируются в поле, и они выделяются в файле tex! Это скриншот С TexEclipse Домашняя страница.
Я пытаюсь резину на некоторое время. Я буду конденсировать результаты здесь:
- резина автоматически преобразуется .eps файлы В.PDF-файлы для pfdlatex. Однако, похоже, это делается только для макросов includegraphics. Если у вас есть свой макрос, он не будет.
- резиново-информация это здорово, что является магией. Это, конечно, лучше, чем все остальное, что я видел при получении сообщения об ошибке и линий. И вы на самом деле не нужно использовать резиновые для использования оно.
- он, кажется, не знает, когда прекратить итерацию, часто останавливаясь рано.
- он перезаписывает ваш PDF-файл по мере его сборки, что раздражает (ему не хватает хорошей функции из latex-makefile, где он строит его во временном файле).
Я написал подробный ответ с помощью Scons on Текс.stackexchange.
в принципе, вы положили это в файл под названием
SConstruct:# make sure scons finds tex executables: import os env = Environment(ENV=os.environ) # target and source: pdf_output = env.PDF(target='main.pdf', source='main.tex') # make sure that the pdf is reloaded properly (e.g., in Skim) env.Precious(pdf_output)вы можете создать PDF-файл, просто запустив
sconsпотрясающе, scons обнаружит изменения в файлах \, включенных в
main.texфайл, а также файл библиографии!
Я хотел использовать скрипт, который вы выложили в своем окончательный ответ.
к сожалению, он не работал с моей настройкой (MacVim с vim-latexsuite, Skim в качестве зрителя и XeTeX). Я также использую прямой поиск (т. е. я использую функцию, которая нажимает \ls в Vim будет перейти к соответствующей точке в PDF-документе в открытом окне просмотра).
кроме того, мой документ не называется
thesis.tex(большой сюрприз, это не тезис). Поэтому я сделал еще несколько конфигурационных работ, которые я хотел бы поделиться. Внимание, мои навыки bash ужасны.#!/bin/bash set -x ulimit -t 10 # sometimes pdflatex gets stuck if [ "" = "" ]; then echo "No target name specified" exit 1 fi TARGET= SOURCE=.tex TMPSOURCE=_$TARGET.tex TMPTARGET=_$TARGET while [ 1 ]; do # Compile a different file ($TMPSOURCE.pdf) so that it doesn't reload mid-compile cp $SOURCE $TMPSOURCE # better than running pdflatex manually, as this wont rebuild if there's nothing there. latexmk -pdf -silent $TMPTARGET > /dev/null # For rubber-info cp $TMPTARGET.log $TARGET.log if [ -e $TMPTARGET.pdf ]; then # Check the compile succeeded first # No output file yet. [ ! -e $TARGET.pdf ] HASNOPDF=$? # ignore if it's unchanged. # OS X diff doesn't consider binary files. Single-line output, return value 2 diff $TARGET.pdf $TMPTARGET.pdf OUTPUTDIFFERS=$? if [ $HASNOPDF -eq 0 -o $OUTPUTDIFFERS -ne 0 ]; then # Do NOT RM since Skim cannot deal with this. cp $TMPTARGET.pdf $TARGET.pdf fi fi sleep 1 # give it time to be killed by a CTRL-C doneэто компилирует временный файл и копирует его обратно в любое имя, которое было дано (а не наоборот, как ваш скрипт); использование скрипта:
./scriptname projectздесь
project- это имя файла TeX, без расширения файла.Я также изменил
rubber-infoстроку:autocmd FileType tex exe "set makeprg=rubber-info\ _" . expand("%:t:r") . ".log"и мне нужно было залатать мой
latexmkиспользовать XeTeX так как имя исполняемого файла было жестко закодировано.к сожалению, это все еще уничтожает выходной PDF-файл, когда я сохранил свой документ до завершения инструкции, так как
latexmkкажется всегда создать PDF-файл, даже при ошибке – и его код возврата всегда 0, что отстой.(чтобы прояснить это, скажем, что я только что набрал
emph{в мой документ и сохраните его. Фоновый сценарий быстро скомпилирует документ и завершится ошибкой. Но это будет по-прежнему производят (в основном пустой) выходной файл).кроме того, прямой поиск больше не работает должным образом; он в основном переходит к неправильной точке в документе. Я подозреваю, что это как-то связано с моим копирование документа перед компиляцией.
Итак, это все еще совершенно неудовлетворительное решение, хотя я даже не включил непрерывную экономию при вводе в MacVim.
(Это работа)
Я пытаюсь vim-latexsuite в данный момент. Это в основном превращает vim в IDE для latex.
обучение:
- очень неинтуитивно, но после урока, кажется, все в порядке.
- он переопределяет некоторые ключи, которые мне нравятся, и я не могу их исправить.
автозаполнение:
- делает использование некоторых встроенных макросов проще
- добавление > в for пользовательские макросы очень раздражают.
- замена "С ` и тому подобное приятно, пока вы не хотите" по какой-то причине, то его упражнение в разочаровании.
- его автозаполнение тоже может раздражать. Я должен перепрограммировать себя для работы в латексе.
построить систему:
- ужасно
- quickfix не работает - он часто ставит меня в неправильном файле
- когда latex сообщает об ошибках с результатом, разделенным на 2 строки, он не обнаруживает его.
AUCTEX & preview-latex с Emacs другой вариант.
вы также можете открыть emacs результирующий dvi или pdf-файл, и если вы включите режим автоматического возврата для этого буфера, изменения будут отображаться каждый раз, когда вы перекомпилируете документ.
"лучше" - это очень относительное понятие... что еще ты хочешь сделать? Похоже, что этот makefile обрабатывает совсем немного, и это заставляет меня хотеть, чтобы я запускал *nix на работе вместо windows... если есть больше вещей, которые вам нужно обрабатывать с помощью makefile, почему бы не добавить их?
чтобы сделать его "лучше", вам нужно будет предоставить более подробную информацию о том, что именно вы делаете.
например ,вы могли бы его разобрать.файл журнала с grep, поиск ошибок или предупреждений, сбросьте их в другой файл, а затем откройте новый файл, чтобы вы могли прочитать ошибки.
все зависит от того, что вы хотите сделать...
Я использую MikTeX в сочетании с TeXnicCenter. Он отлично работает для моих целей. У меня никогда не было системы, скрывающей ошибки или предупреждения. Пользовательские сценарии сборки легко создавать и настраивать.
ltx утверждает, что является оболочкой для latex, чтобы ускорить компиляцию документов latex. Я не мог заставить его работать, хотя (некоторые проблемы с initex).
Я использую latex-makefile на некоторое время. Его довольно хорошо, если вы пытаетесь использовать цикл редактирования-компиляции-предварительного просмотра:
- принимает почти нулевую конфигурацию.
- Builds. ps or .документ pdf.
- обрабатывает все необходимые итерации. Мне буквально больше ничего не нужно писать.
- довольно надежный, но иногда ошибки и предупреждения искажаются.
- он не убивает старый pdf, пока новый не будет построенный.
- он создает другие файлы, такие как генерация eps из gnuplot. Однако я не нашел это чрезвычайно полезным.
- автор очень быстро реагирует на пожелания.
Я могу довольно легко воспроизвести преимущества latexmk с помощью:
while [ 1 ]; do /usr/bin/make; doneминусы:
- он позволяет генерировать pdf только через dvi -> ps - > pdf, а не напрямую через pdftex.
- его вывод ошибок не является то же самое, что и стандартный латекс, поэтому vim не движется к правильной линии.
- он не всегда перекомпилирует изменения в bibtex и других источниках, отличных от tex.
- если я удаляю файл, он не удаляет зависимость без make clean.
посмотреть TeXMaker. : -)
характеристики (из Вики):
- в строке "проверка орфографии".
- редактор unicode для записи исходных файлов LaTeX (подсветка синтаксиса, отмена-повтор, поиск-замена, заклинание контролер...)
- латексные теги и математические символы можно вводить с помощью мыши
- шаблоны документов и разделов
- программы, связанные с LaTeX, могут быть запущены
- как управление базами данных
- контур или "вид структуры"
- лог-файлы во время компиляции LaTeX и возможность " пошагового выполнения" исходные ошибки, обнаруженные компилятор
- интегрированный инструмент преобразования LaTeX в HTML
функции (от меня):
- полезные мастера для вставки таблиц, цитат, ссылок
- поддержка двунаправленного
- полезное сочетания клавиш
- авто полные слова (особенно полезно со ссылкой)
- определите свои собственные инструкции
Comments