Не заставляйте меня вручную прерывать компиляцию LaTeX при возникновении ошибки.

StackOverflow https://stackoverflow.com/questions/738755

Вопрос

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

Есть ли настройка для latex или latexmk чтобы он просто прервался с сообщением об ошибке, если он не может скомпилироваться?Или, если необходимо, как мне настроить какой-нибудь сценарий Expect для автоматического отклонения жалоб LaTeX?

(Я думал pdflatexвариант -halt-on-error помогло бы, но видимо нет.)

Бонусный вопрос:Skim для Mac OSX — это хорошая программа для просмотра PDF-файлов, которая автоматически обновляется при изменении PDF-файла (в отличие от Preview). кроме что всякий раз, когда возникает латексная ошибка, вам приходится повторно подтверждать, что вы хотите автообновление.У Texniscope такой проблемы нет, но мне пришлось отказаться от Texniscope ради другие причины.Есть ли способ заставить Skim всегда автоматически обновляться, или есть другой просмотрщик, который это понимает?


ДОБАВЛЕН:Мини-урок по latexmk исходя из ответа на этот вопрос:

  1. Получать latexmk здесь: http://www.phys.psu.edu/~collins/software/latexmk-jcc/

  2. Добавьте следующее в свой ~/.latexmkrc файл:

    $pdflatex = 'pdflatex -interaction=nonstopmode';
    

    (Для OS X со Skim)

    $pdf_previewer = "open -a /Applications/Skim.app";
    
  3. При редактировании исходного файла foo.tex, запустите в терминале следующее:

    latexmk -pvc -pdf foo.tex
    
  4. Использовать Снимать или другое средство просмотра PDF-файлов в реальном времени для просмотра foo.pdf.Для Skim просто посмотрите вкладку «Синхронизация» в настройках Skim и настройте ее для своего редактора.

Вуаля!Нажимаем «Сохранить» foo.tex теперь вызовет foo.pdf обновиться, ничего не трогая.

Это было полезно?

Решение

С МикТексом, pdflatex имеет эту опцию командной строки:

  -interaction=MODE               Set the interaction mode; MODE must be one
                                  of: batchmode, nonstopmode, scrollmode,
                                  errorstopmode.

Изменение, предложенное @9999years:

Эти значения эквивалентны набору LaTeX. \commands которые обеспечивают ту же функциональность.

От Советы по использованию TeX:

Режимы заставляют TeX вести себя следующим образом:

  • errorstopmode Останавливается на все ошибки, будь то об ошибках в исходном коде или не существующих файлах.

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

  • В несколько неправильно названном nonstopmode, Текс не запрашивает вклад после серьезных ошибок, но вообще останавливается.

  • batchmode Предотвращает все выходные данные в дополнение к этому (предназначенное для использования в автоматических сценариях).Во всех случаях все ошибки записываются в файл журнала (yourtexfile.log).

Другие советы

Вы также можете поставить \nonstopmode или \batchmode в самом начале вашего tex-файла;тогда он будет работать с любой версией TeX, а не только pdflatex.Дополнительную информацию об этих и связанных с ними командах см. в очень хорошем материале. ссылка на (необработанные) команды TeX Дэвида Баусума.Особенно команда из семейство отладчиков может быть здесь интересен.

Другой возможный хак — просто использовать:

yes x | latexmk source.tex

Вы всегда можете создать псевдоним для 'Да x | LatexMk 'Если вы собираетесь использовать эту опцию.Основное преимущество этого подхода, которое я вижу над другими предложениями, заключается в том, что это очень быстро, когда вам иногда нужно, чтобы latexmk вел себя подобным образом.

Мехмет

Существует также \batchmode команда может выполнить работу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top