Metadata-Version: 2.5
Name: normik
Version: 0.1.2
Summary: Проверка работ на соответствие ГОСТ
Project-URL: Homepage, https://trum-ok.github.io/normik/
Project-URL: Documentation, https://trum-ok.github.io/normik/
Project-URL: Repository, https://github.com/Trum-ok/normik
Project-URL: Issues, https://github.com/Trum-ok/normik/issues
Author-email: Arkadii Artamonov <artamarkan@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: gost,latex,linter,гост,нир
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: Russian
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Text Processing :: Markup :: LaTeX
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: rich>=14.0.0
Requires-Dist: typer>=0.20.0
Description-Content-Type: text/markdown

# normik

[![ci](https://github.com/Trum-ok/normik/actions/workflows/ci.yaml/badge.svg)](https://github.com/Trum-ok/normik/actions/workflows/ci.yaml)
[![pypi](https://img.shields.io/pypi/v/normik)](https://pypi.org/project/normik/)
[![python](https://img.shields.io/pypi/pyversions/normik)](https://pypi.org/project/normik/)
[![license](https://img.shields.io/github/license/Trum-ok/normik)](LICENSE)

`nk` — линтер оформления отчёта о НИР по ГОСТ 7.32-2017 для исходников LaTeX.

**Документация: <https://trum-ok.github.io/normik/>**

Принимает `.tex` и выдаёт список нарушений с указанием пункта стандарта, файла
и строки.

```bash
nk check report.tex
```

```text
report.tex
  1:17  warning  G732-6.5.1-reference-word
    Нарушение: В ссылке на иллюстрацию использовано сокращение «рис.».
    Требуется: При ссылке пишут слово «рисунок» полностью и его номер.
    Исправить: Заменить «рис.» на «рисунок» в нужном падеже.
    > 1 | Как показано на рис.~\ref{fig:speed}, зависимость линейная.
        |                 ^
      2 | 
      3 | \begin{figure}[h]

  5:5  error  G732-6.5.7-caption-dot
    Нарушение: Наименование рисунка заканчивается точкой.
    Требуется: Наименование рисунка приводят с прописной буквы без точки в конце.
    Исправить: \caption{Зависимость скорости от нагрузки}
      3 | \begin{figure}[h]
      4 |     \includegraphics{plot.png}
    > 5 |     \caption{Зависимость скорости от нагрузки.}
      6 |     \label{fig:speed}
      7 | \end{figure}

Итого: 1 error, 1 warning, 0 info.
Исправимо машинно: 1 из 2. Применить: nk check report.tex --fix, посмотреть правки: --diff.
Машинный вывод: --format json, вывод для агента: --format agent
```

## Установка

```bash
uv tool install normik
```

После этого команда `nk` доступна в системе. Разовый запуск без установки:

```bash
uvx --from normik nk check chapters
```

Для работы над самим линтером — клонировать репозиторий и выполнить `uv sync`;
внутри клона команда запускается как `uv run nk`.

## Примеры запуска

Проверить весь каталог с исходниками:

```bash
nk check chapters
```

Получить вывод, который можно скопировать в Claude Code без пояснений:

```bash
nk check chapters --format agent
```

Проверить по профилю кафедры, показывая только ошибки:

```bash
nk check report.tex --profile profiles/example-university.toml --severity error
```

Починить то, что чинится механически — сначала посмотреть, потом применить:

```bash
nk check chapters --diff
nk check chapters --fix
```

Включить линтер на готовой работе: зафиксировать текущие нарушения снимком
и дальше видеть только новые:

```bash
nk check chapters --write-baseline .nk-baseline.json
nk check chapters --baseline .nk-baseline.json
```

## Команды

| Команда | Назначение |
|---|---|
| `nk check PATH...` | проверить исходники |
| `nk rules list` | перечень правил |
| `nk rules show RULE_ID` | подробности по правилу |
| `nk rules docs` | пересобрать страницы правил в `docs/rules/` |
| `nk profile show` | итоговый набор правил после применения профиля |

Ключи `check`, коды возврата и форматы вывода — на странице
[Использование](https://trum-ok.github.io/normik/usage/).

## Документация

| Страница | О чём |
|---|---|
| [Использование](https://trum-ok.github.io/normik/usage/) | команды, ключи, форматы вывода, автоисправление, подавления, снимок |
| [Профили](https://trum-ok.github.io/normik/profiles/) | подстройка набора правил под кафедру |
| [Правила](https://trum-ok.github.io/normik/rules/) | страница на каждое правило: почему, пример, настройка |
| [Интеграции](https://trum-ok.github.io/normik/integrations/) | CI, хук, передача вывода агенту |
| [Как добавить правило](https://trum-ok.github.io/normik/contributing/) | руководство для соавторов |

Исходники документации — в каталоге
[`docs/`](https://github.com/Trum-ok/normik/tree/master/docs); каталог
[`docs/rules/`](https://github.com/Trum-ok/normik/tree/master/docs/rules)
генерируется командой `uv run nk rules docs` и руками не редактируется.

## Разработка

```bash
make check      # ruff, ty, pytest
make docs       # перегенерировать правила и собрать сайт
make docs-serve # локальный просмотр на http://127.0.0.1:8000
```
