Перейти к содержанию

normik

ci pypi python license

nk — линтер оформления отчётных документов по ГОСТ для исходников LaTeX.

Принимает .tex и выдаёт список нарушений с указанием файла, строки и того, кто этого требует — пункта стандарта или положения вуза. Инструмент детерминированный: одни и те же входные данные всегда дают один и тот же вывод. LLM внутри не используется.

$ nk check chapters
chapters/method.tex
  8:3  error  figure-caption-dot  (ГОСТ 7.32-2017 п. 6.5.7)
    Нарушение: Наименование рисунка заканчивается точкой.
    Требуется: Наименование рисунка приводят с прописной буквы без точки в конце.
    Исправить: \caption{Схема экспериментальной установки}
      6 |   \centering
      7 |   \includegraphics[width=0.8\textwidth]{img/setup.png}
    > 8 |   \caption{Схема экспериментальной установки.}
      9 | \end{figure}

Стандарты

Поддержаны ГОСТ 7.32-2017 и ГОСТ Р 2.105-2019. Какой из них проверять, задаёт профиль; без профиля отчёт проверяется по ГОСТ 7.32-2017.

Одно и то же требование записано в нескольких стандартах под разными пунктами, поэтому правило объявляет пункт в каждом из них, а находка ссылается на пункт выбранного. Требование самого стандарта — реферат, надпись о продолжении таблицы — под другим стандартом не проверяется.

Стандарт бывает и привлечённым: положение МГТУ велит оформлять список источников по ГОСТ Р 7.0.100-2018, а отчёт при этом остаётся отчётом по ГОСТ 7.32-2017. Такой стандарт профиль не выбирает, а привлекает — и его пункты начинают действовать наравне с пунктами выбранного.

Но не всякое требование принадлежит стандарту, и правило говорит, чьё оно:

  • стандарт — записано в ГОСТ, действует только под ним;
  • общее — не записано нигде, но нужно всем: тире вместо дефиса, ёлочки, неразрывные пробелы;
  • положение вуза — устанавливает положение или методические указания кафедры: под любым стандартом, а чьё оно и под каким пунктом — знает профиль.

Положение вуза со своей нумерацией пунктов и своими отступлениями от стандарта описывается профилем. Пока профиль его не назвал, находка по такому требованию источника не называет: сослаться не на кого.

Что проверяется

Только исходники. Требования, проверяемые по скомпилированному документу — поля, гарнитуры, кегль, колонцифры, — в область видимости не входят.

Правила разложены по тому, что они регулируют, а не по разделам стандарта: у разных стандартов разделы разные, а иллюстрации остаются иллюстрациями.

Что регулируется Правил
Структура отчёта 2
Заголовки и рубрикация 9
Перечисления 7
Реферат 6
Термины и сокращения 8
Иллюстрации 11
Таблицы 12
Формулы 6
Примечания и сноски 3
Источники и ссылки на них 9
Приложения 7
Изложение текста 9
Типографика 7

Полный перечень — в разделе Правила.

С чего начать

  1. Установка — поставить nk.
  2. Использование — команды, ключи, форматы вывода, коды возврата, автоисправление, подавления и снимок известных нарушений.
  3. Профили — подстроить набор правил под требования кафедры.
  4. Интеграции — CI и передача вывода агенту.

Ограничения

  • Правит файлы отчёта только по ключу --fix и только там, где замена однозначна. Остальные находки остаются предложением текстом.
  • Тексты стандартов в репозитории не воспроизводятся: правила ссылаются на номера пунктов и формулируют требование своими словами.
  • Часть требований по исходникам непроверяема в принципе. Такие места правило либо не трогает, либо помечает уровнем info — как bibtex-order-unverifiable.