Трансляция скрипта Engee в отчёт по ГОСТ
Автоматическая генерация отчётов по ГОСТ в DOCX из скриптов Engee
На основе скриптов Engee можно создавать документы Word с титульным листом, в которые автоматически попадают все выходные данные документа, а также текст, код и результаты выполнения скриптов.
Описание примера
В этом проекте мы демонстрируем, как организовать генерация отчётов по гост на основе интерактивных скриптов, выполненных в Engee.
Когда инженерный или научный процесс требует регулярно выпускать однотипный документ с фиксированной структурой и соблюдением требований к оформлению, в качестве источника данных может использоваться ваш скрипт (.ngscript), содержащий текст, результаты вычислений, формулы и другие элементы модели, а результат может быть оформлен согласно указанному шаблону (в формате .docx).
Генератор осуществляет прямую трансляцию из одного формата в другой:
- в документ из скрипта попадает весь текст, заголовки, код, изображения и графики,
- частично переводятся формулы - транслятор поддерживает специальные знаки, операторы отношения, степени, нижние индексы и дроби, некоторые виды матриц и системы уравнений.
Ограничения генератора
На данный момент не поддерживаются матрицы в формулах, не поддерживается SVG (ограничения DOCX формата).
У любого генератора есть ряд ограничений, и если вы столкнетесь с ними, напишите нам в комментарии к этой статье, мы будем развивать этот проект.
После загрузки параметров и создания исходного шаблона, наш алгоритм наполняет шаблон строками из указанного файла .ngscript.
Шаблон документа
Первым делом генератор загружает шаблон документа, который он будет наполнять данными. Его можно указать в аргументе команды, стандартное название шаблона: template.docx. Если шаблонного файла с нужным названием нет в указанной директории, генератор создаёт такой файл.
Вы можете скачать, отредактировать этот файл и загрузить его обратно в файловый браузер Engee. Генератор найдёт в нём поля с разметкой типа {{WORK_TITLE}}, куда подставит информацию на место всех полей, по возможности соблюдая стили документа.
Источники данных
Тело отчета формируется из файла .ngscript, расположение которого передается в генератор через аргументы.
Что касается титульного листа и колонтитулов, генератор первым делом загружает выходную информацию документа из файла config.toml. Это позволяет нам не перегружать команду запуска генератора отчёта расширенным количеством аргументов, хотя их тоже можно указать в качестве дополнительных параметров.
Три способа задания данных для форматирования документа:
- Задать в качестве аргументов команды
generate_report - Хранить в сопровождающем файле
config.toml - Поместить файл config.toml в одну из ячеек (текстовую, в виде врезки, или кодовую, в виде комментария)
Как запустить скрипт генератора отчётов
Отчет можно сгенерировать одной командой:
include("$(@__DIR__)/scripts/generate_report.jl")
generate_report("notebook_test.ngscript", output_path="Отчет.docx")
Для более успешной генерации отчета:
При размещении в финальном документе графики и изображения не масштабируются. Лучше сразу выставить им желаемый dpi или размер в пикселях, например при помощи команды gr(size=(600,400)). Повторим также что интерактивные графики не поддерживаются в документах Word.
Некоторые LaTeX конструкции не поддерживаются, поэтому рекомендуется начинать с более простых уравнений.
Заключение
Этот небольшой проект показывает, как вы можете создавать генераторы документации из скриптов Engee. Доработав его вы можете автоматизировать документооборот, включающий генерацию снимков моделей и импорт данных из других сопутствующих файлов.