Не заставляйте меня вручную прерывать компиляцию LaTeX, когда есть ошибка
Как предлагается здесь, latexmk
это удобный способ постоянно компилировать ваш документ при изменении источника. Но часто, когда вы работаете над документом, вы получаете ошибки, а затем latex
будет паниковать и ждать ввода пользователя, прежде чем продолжить. Это может очень раздражать, особенно в последнее время, когда я взломал что-то для компиляции latex
непосредственно из документа etherpad, который непрерывно сохраняется при вводе текста.
Есть ли настройка для latex
или же latexmk
сделать его просто прервать с сообщением об ошибке, если он не может скомпилировать? Или, если необходимо, как мне установить какой-нибудь сценарий Expect для автоматического отклонения жалоб LaTeX?
(Я думал pdflatex
вариант -halt-on-error
сделал бы трюк, но, видимо, нет.)
Дополнительный вопрос: Skim на Mac OSX - это хороший просмотрщик PDF, который автоматически обновляется при изменении pdf (в отличие от Preview), за исключением того, что всякий раз, когда возникает ошибка латекса, он подтверждает, что вы хотите автоматическое обновление. У Texniscope такой проблемы нет, но мне пришлось отказаться от Texniscope по другим причинам. Есть ли способ сделать Skim всегда автоматически обновляемым, или есть другой зритель, который понимает это правильно?
ДОБАВЛЕНО: Мини-учебник по latexmk
основываясь на ответе на этот вопрос:
Получить
latexmk
здесь: http://www.phys.psu.edu/~collins/software/latexmk-jcc/Добавьте следующее к вашему
~/.latexmkrc
файл:$pdflatex = 'pdflatex -interaction=nonstopmode';
(Для OS X с Skim)
$pdf_previewer = "open -a /Applications/Skim.app";
При редактировании вашего исходного файла,
foo.tex
запустите следующее в терминале:latexmk -pvc -pdf foo.tex
Используйте Skim или другую программу просмотра PDF в реальном времени для просмотра foo.pdf. Для Skim, просто посмотрите на вкладку "Синхронизация" в настройках Skim и настройте ее для своего редактора.
Вуаля! Удар экономить на foo.tex
теперь вызовет foo.pdf
освежить, не касаясь ничего.
4 ответа
С MikTeX, pdflatex
имеет эту опцию командной строки:
-interaction=MODE Set the interaction mode; MODE must be one
of: batchmode, nonstopmode, scrollmode,
errorstopmode.
Редактировать предлагается @9999 лет:
Эти значения эквивалентны набору LaTeX \commands
которые обеспечивают ту же функциональность.
Из советов по использованию TeX:
Режимы заставляют TeX вести себя следующим образом:
errorstopmode
останавливается на всех ошибках, будь то ошибки в исходном коде или несуществующие файлы.
scrollmode
не останавливается на ошибках в источнике, но запрашивает ввод, когда происходит более серьезная ошибка, такая как, например, отсутствующий файл.В несколько неправильно названном
nonstopmode
TeX не запрашивает ввод после серьезных ошибок, но полностью останавливается.
batchmode
предотвращает весь вывод в дополнение к этому (предназначен для использования в автоматизированных сценариях). Во всех случаях все ошибки записываются в файл журнала (yourtexfile.log).
Вы также можете положить \nonstopmode
или же \batchmode
в самом начале вашего текстового файла; тогда он будет работать с любой версией TeX, а не только pdflatex
, Для получения дополнительной информации об этих и связанных с ними командах см. Очень хороший справочник по (необработанным) командам TeX от David Bausum. Особенно интересна команда из отладочной семьи.
Другой возможный хак - просто использовать:
yes x | latexmk source.tex
Вы всегда можете создать псевдоним для "да х | latexmk', если вы собираетесь использовать эту опцию много. Основное преимущество этого, которое я вижу выше других предложений, состоит в том, что это очень быстро, когда вы иногда хотите, чтобы latexmk вел себя так.
Мехмет