Как я рассматриваю ЛАТЕКСНЫЕ предупреждения как ошибки

Я использую MiKTeX 2.8 distibution для Windows.

Мы разрабатываем программное обеспечение, прежде всего, и используем ЛАТЕКС для создания наших пользовательских инструкций. Мы используем ЛАТЕКС потому что:

  • Это является большим при управлении исходным кодом для отслеживания изменений и т.д.
  • Исходные файлы внезапно не решают стать поврежденными, в отличие от документов Word.
  • Несколько документов могут совместно использовать единственные разделы, таким образом, мы можем применить принцип DRY к нашей документации и избежать некоторых документов, выходящих из синхронизации с другими. У Вас могут быть основные документы в Word, но я нашел, что они облуплены как ад.

Как часть необслуживаемого процесса сборки на нашем сервере сборки, мы создаем использование документации texify исполняемый файл MiKTeX. Это работает довольно хорошо.

Однако проблемы происходят, когда разработчик совершает ошибку (например, \ref к \label, который не существует). Ошибка такой как то единственное генерирует предупреждение в ЛАТЕКСЕ. Предупреждение остается незамеченным texify, и нас оставляют с ошибками в документации.

У меня в настоящее время есть шаг сборки, который сканирует файлы журнала для строк, начинающихся 'с ЛАТЕКСНОГО Предупреждения', и приводит сборку к сбою, если существует кто-либо. Это работает, но очевидно довольно облуплено, и может пропустить промах предупреждений. Это в настоящее время не используется на локальных сборках на dev машинах, но если это - единственный способ сделать это, мне, вероятно, придется интегрировать его с редактором, которого мы в настоящее время используем (TeXworks, поставленный с MiKTeX).

Я хотел бы привести сборку к сбою, если какие-либо предупреждения, такие как неопределенная ссылка происходят, и я не сделал бы облупленных сканирований файлов журнала. Что-нибудь предлагает эту функцию?

Если бы я могу использовать эту функцию в локальных сборках на dev машинах, а также на сервере сборки это была бы огромная премия.

12
задан Alex Humphrey 14 July 2010 в 09:36
поделиться

2 ответа

Следующий (непроверенный) код должен превратить любое предупреждение в ошибку:

\renewcommand{\GenericWarning}[2]{\GenericError{#1}{#2}{}{This warning has been turned into a fatal error.}}

Тогда вас может заинтересовать пакет молчание для фильтрации предупреждений.

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

Редакторы с хорошей поддержкой LaTeX сообщат вам, нужно ли повторно запускать LaTeX (разве TeXworks этого не делает?). Они делают это, анализируя вывод консоли или файл журнала. На самом деле он достаточно надежен (и если вы действительно беспокоитесь, вы можете переопределить \ GenericWarning , чтобы добавить характерную строку ко всем предупреждениям). Я думаю, что анализ журналов - правильный способ сделать это.

Считайте это проверкой на соответствие документации. Если есть неопределенные ссылки, сборка документации завершается успешно. Продукты сборки - это pdf (или что-то еще) и журналы TeX. Проверка предупреждений в журналах - это тест.

4
ответ дан 2 December 2019 в 23:31
поделиться

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

Вот несколько непроверенных изолент, которые могут быть полезны:

\def\exitfromtex{\nonstopmode\read16to\dummy}
\let\writerrmessage\errmessage
\def\errmessage#1{\writerrmessage{#1}\exitfromtex}

Ее можно поместить в файл пакета, который вы требуете от документалистов, или встроить в локальный файл Latex .fmt.

1
ответ дан 2 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: