Расчёт установившихся режимов ЭС методом Ньютона + редактор отчётов с живым превью и экспортом HTML/PDF.
MIT — см. LICENSE. Сторонние библиотеки и их лицензии перечислены в меню «Справка → О программе».
sudo apt install build-essential cmake git python3-pip qpdf pipx \
qt6-base-dev qt6-webengine-dev qt6-5compat-dev
pipx install conan && conan profile detect
mkdir -p build && cd build
conan install .. --build=missing -of .
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build . -j$(nproc)
ctestБез тестов: cmake .. -DBUILD_TESTS=OFF ….
- Git: https://git-scm.com/download/win — установка с дефолтами. Проверка:
git --version. - Visual Studio 2022 Community (бесплатная): https://visualstudio.microsoft.com/ru/downloads/ — в инсталляторе выбрать workload «Разработка классических приложений на C++» (даст MSVC, Windows SDK, CMake, Ninja).
- Qt: Qt Online Installer (https://www.qt.io/download-qt-installer, нужна бесплатная учётка). В выборе компонентов: Qt → 6.8.x → галки MSVC 2022 64-bit, Qt 5 Compatibility Module, Qt WebEngine. Путь по умолчанию
C:\Qt. - Python + Conan: https://python.org (3.12, галка «Add Python to PATH»), затем в PowerShell:
pip install conan
conan profile detect- Код:
git clone <url-репозитория> powercalc
cd powercalc- Сборка — из меню Пуск открыть «x64 Native Tools Command Prompt for VS 2022» и в ней:
mkdir build
cd build
conan install .. --build=missing -s build_type=Release
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=C:\Qt\6.8.2\msvc2022_64
cmake --build .(путь в CMAKE_PREFIX_PATH поправь под свою версию Qt).
- Рантайм рядом с exe (Qt-dll, ресурсы WebEngine):
C:\Qt\6.8.2\msvc2022_64\bin\windeployqt.exe RELEASE\powercalc.exe- qpdf (нужен для нумерации страниц в PDF):
powershell -ExecutionPolicy Bypass -File scripts\fetch-qpdf.ps1
xcopy /E /Y 3rdparty\qpdf\bin\* build\RELEASE\- Запуск:
RELEASE\powercalc.exe. Тесты:ctest --test-dir . -C Release.
Папка build\RELEASE (exe + dll + qpdf) — готовый дистрибутив.
Перед запуском:
set QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu
set QT_OPENGL=softwareЕсли всё равно крашится:
set QTWEBENGINE_DISABLE_SANDBOX=1YAML-мета: title/author/date, show_substitution, align, heading_align,
page.size (A4/A3/A5/Letter), page.margin (cm/mm), text.size (pt),
show_page_numbers, page_start, number_first_page, toc_size.
Формулы-блоки: любой текст между открывающими и закрывающими $$ (в одну строку или в несколько) — формула.
$$R = 10 &Ом$$— присваивание; единица после&— серым;$$R = \frac{u}{i} &Ом$$— при включённой подстановке показывает цепочку= 10/2 = 5;$$u =$$— текущее значение переменной;$$u$$/$$u/2+1$$— голое выражение: подставляется значение;$$! …$$(слитно или с пробелом, в т.ч. с первой строки содержимого) — чистый LaTeX: рисуется ровно как написано, не считается;$$hide … $$— блок скрыт, но считается и определяет переменные;$$hide! …$$— скрыт и не считается;# комментарийвнутри блока — не выводится;- локальный стиль после закрывающего
$$:$$x = 1$$ {align:center,size:12pt,show_substitution:false}.
Inline в тексте: те же правила: $$u/2$$ → значение, $$Z = R+1$$ — определяет переменную, $$!…$$ — чистый LaTeX; единицы &… работают.
Подстановка: глобально show_substitution, локально {show_substitution:true/false}; тривиальные присваивания (u = 10) значением не дублируются.
Таблицы: ячейки $$u/2$$, $$u=$$ вычисляются; $$!…$$ — чистый LaTeX;
разделитель |:--:| задаёт выравнивание колонки; таблица центрирована.
Списки: - и 1. , вложенность отступом 2 пробела, до 3 уровней.
Картинки:  — файл в images/ проекта (внутри ZIP); блок картинки не разрывается между страницами.
Вставка: «Вставка → Картинка…», drag&drop файла, Ctrl+V со скриншотом.
Оглавление: [toc] — точки и номера страниц как в Word, ссылки кликабельны; заголовок, стоящий непосредственно перед [toc] (например # Оглавление), в список не попадает; размер шрифта — toc_size: 12pt в YAML.
Разрыв страницы: [break] (или [pagebreak]) — следующий блок начинается с новой страницы.
Нумерация страниц (только при экспорте в PDF; требуется qpdf): show_page_numbers: true/false, page_start: N — номер первой нумерованной страницы, number_first_page: true/false — нумеровать ли первую страницу. Номер печатается внизу по центру в нижнем поле.
Заголовки: #/##/###; локально # Титл {center,12pt} (или {align:center,size:12pt}).