Подтвердить что ты не робот

Рекомендуемая система сборки латекса?

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

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

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

  • латекс-тк
  • ВИМ-латексная
  • Kile
  • LYX
  • MiKTeX
  • латекс-Makefile
  • конечный макияж латекса
  • резина
  • любые другие, с которыми я не сталкивался

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

4b9b3361

Ответ 1

После рассмотрения всех этих параметров в течение некоторого времени я решил использовать следующее решение.

  • Установите vim для записи непрерывно по мере ввода.
  • Запустите a script в фоновом режиме, чтобы постоянно создавать, обновляя pdf. latexmk почти достаточно хорош, за исключением того, что он строится на месте, который перезагружается в плохое время в okular (мой зритель).

script доступен в https://github.com/pbiggar/texbuild.

Используйте rubber-info для получения ошибок и предупреждений из файла журнала. script выше сохраняет файл журнала в t.log. В vim:

autocmd FileType tex set makeprg=rubber-info\ t.log
autocmd FileType tex set errorformat=%f:%l:\ %m

Ответ 2

Я только что попробовал латексмк. Если вы делаете

latexmk -pvc file.tex 

Затем он будет автоматически просматривать (по умолчанию DVI).

  • Управление зависимостями
  • DVI, ps или pdf
  • Итерации прекрасные.
  • Очень настраиваемый, см. man latexmk

Downsides:

  • Он не конденсирует ошибки, которые не очень полезны (обход: используйте резиновую информацию отдельно)
  • Ошибка в файле man: "Иногда зритель (gv) пытается прочитать обновленный файл .ps или .pdf после его создания, но до того, как файл будет завершен. Работайте: вручную обновляйте (или повторно открывайте) отображение.". Было бы лучше, если бы он построил его через временный файл .pdf, чтобы этого избежать.
  • Не очень удобно.

Ответ 3

Я не использовал его сам, но я слышал о Rubber в качестве хорошей альтернативы.

На своем веб-сайте:

Резина - это программа, целью которой является для обработки всех задач, связанных с составление документов LaTeX. Эта включает компиляцию документа сам, конечно, достаточно времени, чтобы что все ссылки определены, и запуск BibTeX для управления библиографическими Рекомендации. Автоматическое выполнение dvips для создания документов PostScript также включается, а также использование pdfLaTeX для создания PDF-документов.

Ответ 4

Хорошо, так что этот вопрос немного устарел, но он появился, когда я googled "система сборки латекса", поэтому я подумал, что добавлю свои два цента. Я попробовал решения на основе Makefile, но нашел вывод немного подробным и громоздким. Я подумал, что кто-то может построить удлинитель для латекса, но был приятно удивлен, обнаружив, что у нас уже есть латышский лак! Все, что вам нужно сделать, это создать файл SConsctruct следующим образом:

env = Environment()  
env.PDF(target="report.pdf", source="report.tex")

Чтобы построить просто запустить scons report.pdf. Scons автоматически создаст файлы .tex, включенные в report.tex, обработает библиографии и выполнит повторные сборки, чтобы разрешить все ссылки - просто!

Вы можете создавать файлы DVI и PS таким же образом. Для получения дополнительной информации об этих строителях проверьте http://www.scons.org/doc/2.0.1/HTML/scons-user/a8524.html.

Для получения дополнительной информации о scons (смена замены) см. http://www.scons.org/

Ответ 5

Я использую Eclipse с надстройкой TexEcplise для редактирования моих TeX файлов. Он имеет подсветку синтаксиса для LaTeX. Когда вы запрашиваете предварительный просмотр не измененного и уже скомпилированного файла tex, он открывает файл в средстве просмотра. Когда файл tex был изменен, он компилирует tex файл перед его просмотром. Он выполняет необходимые итерации, но только при необходимости.

Еще одно преимущество заключается в том, что все ошибки и предупреждения суммируются в поле, и они выделены в tex файле! Это screenshot на главной странице TexEclipse.

Ответ 6

Я пробую резину какое-то время. Я буду конденсировать результаты здесь:

  • Rubber автоматически преобразует файлы .eps в .pdfs для pfdlatex. Однако, похоже, это делается только для макросов includegraphics. Если у вас есть собственный макрос, он не будет.
  • rubber-info отлично, это волшебство. Это, безусловно, лучше, чем что-либо еще, что я видел при получении сообщения об ошибке и строк. И на самом деле вам не нужно использовать резину для ее использования.
  • Кажется, он не знает, когда прекратить итерацию, часто останавливаясь раньше.
  • Он перезаписывает ваш PDF по мере его сборки, что раздражает (в нем отсутствует хорошая функция из латекса-makefile, где он создается в временном файле).

Ответ 7

Я отправил подробный ответ, используя Scons на tex.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, а также в библиографический файл!

Ответ 8

Я хотел использовать script, который вы отправили в своем окончательном ответе.

К сожалению, он не работал с моей настройкой (MacVim с vim-latexsuite, Skim как зрителем и XeTeX). Я также использую прямой поиск (т.е. Использую функцию, которая нажатие \ls в Vim будет переходить к соответствующей точке в документе PDF в открытом средстве просмотра).

Кроме того, мой документ не называется thesis.tex (большой сюрприз, его не тезис). Ive, таким образом, сделал еще одну работу по настройке, которую Id хотел бы разделить. Внимание, мои умения bash ужасны.

#!/bin/bash

set -x
ulimit -t 10 # sometimes pdflatex gets stuck

if [ "$1" = "" ]; then
    echo "No target name specified"
    exit 1
fi

TARGET=$1
SOURCE=$1.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 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 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

Скомпилирует временный файл и копирует его обратно в любое имя (вместо того, чтобы использовать его script); использование script:

./scriptname project

Где project - это имя файла TeX без расширения файла.

Ive также изменил строку rubber-info:

autocmd FileType tex exe "set makeprg=rubber-info\\ _" . expand("%:t:r") . ".log"

И мне нужно было исправить мой latexmk, чтобы использовать XeTeX, так как имя исполняемого файла было жестко закодировано.

К сожалению, это все еще разрушает выходной файл PDF, когда Ive сохранил мой документ перед завершением инструкции, так как latexmk, кажется, всегда создает файл PDF, даже при ошибке - и его код возврата всегда равен 0, что отстой.

(Чтобы прояснить это, скажем, что Ive просто набрал emph{ в мой документ и сохранил его. Фон script будет быстро компилировать документ и не работать. Но он все равно будет выдавать (в основном пустой) выходной файл).

Кроме того, прямой поиск больше не работает должным образом; он в основном переходит к неправильной точке документа. Я подозреваю, что это как-то связано с моим копированием документа перед компиляцией.

Итак, это все еще совершенно неудовлетворительное решение, хотя я даже не включил непрерывную экономию при вводе в MacVim еще.

Ответ 9

(Это незавершенное производство)

В настоящий момент я пытаюсь использовать vim-latexsuite. Это в основном превращает vim в среду IDE для латекса.

Кривая обучения:

  • Очень неинтуитивно, но после учебника это выглядит нормально.
  • Он переопределяет некоторые ключи, которые мне нравятся, и я не могу их исправить.

Автозаполнение:

  • Использует несколько встроенных макросов
  • Добавление < + lt для пользовательских макросов очень раздражает.
  • Замена "с" и т.д. хороша до тех пор, пока вы не захотите "по какой-то причине, а затем это упражнение в расстройстве.
  • Его автозаполнение также может раздражать. Я должен перепрограммировать себя для работы в латексе.

Система сборки:

  • Ужасная
  • quickfix не работает - он часто помещает меня в неправильный файл
  • Когда латекс сообщает об ошибках с результатом, разделенным на 2 строки, он не обнаруживает его.

Ответ 10

AUCTEX и предварительный латекс с Emacs еще один вариант.

У вас также может быть emacs, чтобы открыть результирующий dvi или файл pdf, и если вы включите режим автоматического восстановления для этого буфера, изменения будут отображаться каждый раз, когда вы перекомпилируете документ.

Ответ 11

"Лучше" - очень относительный термин... что еще вы хотите сделать? Кажется, что этот make файл обрабатывает совсем немного, и это заставляет меня хотеть, чтобы я запускал * nix на работе вместо окон... если есть больше вещей, которые нужно обрабатывать с make файлом, почему бы не добавить их?

Чтобы сделать его "лучше", вам нужно будет предоставить более подробную информацию о том, что именно вы делаете.

Например, вы могли бы проанализировать файл .log с помощью grep, найти ошибки или предупреждения, выгрузить их в другой файл, а затем открыть новый файл, чтобы вы могли прочитать ошибки.

Все зависит от того, что вы хотите сделать...

Ответ 12

Я использовал latex-makefile какое-то время. Это довольно хорошо, если вы пытаетесь использовать цикл редактирования-компиляции-предварительного просмотра:

  • принимает почти нулевую конфигурацию.
  • Создает .ps или .pdf.
  • Обрабатывает всю необходимую итерацию. Я буквально больше ничего не пишу.
  • Довольно надежный, но иногда ошибки и предупреждения становятся искалеченными.
  • Он не убивает старый pdf до тех пор, пока не будет построен новый.
  • Он создает другие файлы, например, генерирует eps из gnuplot. Я havent нашел это чрезвычайно полезным, хотя.
  • Автор очень быстро отвечает на запросы функций.
  • Я могу легко воспроизвести преимущества латекса довольно легко:

    while [ 1 ]; do /usr/bin/make; done
    

Некоторые недостатки:

  • Это позволяет только создавать pdf файлы через dvi → ps → pdf, а не напрямую через pdftex.
  • Его вывод ошибки не совпадает с стандартным латексным, поэтому vim не перемещается в нужную строку.
  • Он не всегда перекомпилирует изменения в файлах bibtex и других не-tex.
  • Если я удалю файл, он не удалит зависимость без make clean.

Ответ 13

Я использую MikTeX в сочетании с TeXnicCenter. Он отлично работает для моих целей. У меня никогда не было системы, скрывающей ошибки или предупреждения. Сценарии пользовательской сборки легко создавать и настраивать.

Ответ 14

ltx утверждает, что является оберткой для латекса, чтобы ускорить составление латексных документов. Я не смог заставить его работать (некоторые проблемы с initex).

Ответ 15

Посмотрите TeXMaker.: -)

(из wiki):

  • Проверка орфографии в строке.
  • Редактор Unicode для записи исходных файлов LaTeX (подсветка синтаксиса, undo-redo, search-replace, spell шашка...)
  • Теги LaTeX и математические символы могут быть введены с помощью мыши
  • Шаблоны документов и разделов
  • Программы, связанные с LaTeX, могут быть запущены
  • Управление базой данных BibTeX
  • Контур или "структурный вид"
  • Лог файлы во время компиляции LaTeX и возможность "перешагнуть" исходные ошибки, обнаруженные компилятор
  • Интегрированный инструмент преобразования LaTeX в HTML

(от меня):

  • полезные мастера для вставки таблиц, ссылки, ссылки
  • двунаправленная поддержка
  • полезные сочетания клавиш
  • Авто Завершение слов (особенно полезно при ссылках)
  • определить свои собственные инструкции