Рекомендуемая система сборки для latex? [закрытый]



Я пытаюсь выяснить лучшую систему сборки для latex.



в настоящее время, я использую latex-makefile, редактирование в vim и просмотр изменений в Okular или gv. Основная проблема заключается в том, что он иногда получает скрывает ошибки на меня, и я должен запустить latex вручную. Основные преимущества в том, что он делает все итерации мне нужно, и предлагает как pdf, так и ps просто.



Если у вас есть опыт с




  • латекс-МК

  • vim-latex

  • kile

  • lyx

  • miktex

  • latex-makefile

  • окончательный латекс makefile

  • резиновый

  • любые другие, с которыми я не сталкивался


вы бы порекомендовали их, и почему / почему нет?

648   15  

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

    Ничего не найдено.