Создание статей и научных документов - это довольно большой труд. Инструментов, полностью удовлетворяющим требованиям современной публикации просто нет. Требования следующие:
- Консистентное представление в виде разметки. Консистентность означает одинаковую отрисовку на разных платформах и формальную воспроизводимость в новых реализациях. Это должно быть текстовое представление, которое можно подружить с vcs. Есть в latex, markdown, html но нет в Word.
- Математические выражения как минимум в latex формате (лучше в нескольких форматах).
- Компиляция в html (pdf уже не является основным форматом). Нет в latex.
- Консистентная нумерация формул и картинок. Есть только в latex.
- Простое редактирование.
- Расширяемость
- Поддержка современных графических форматов и web-based визуализации.
Конкретные задачи:
- Сделать специализированный markdown отрисовщик с использованием front matter метаданных и https://github.com/valich/intellij-markdown.
- Сделать сборщик документа из фрагментов (предлагается использовать dataforge-data).
- Разработать синтаксис для модульной вставки фрагментов на разных языках разметки
Спецификация
Генератор модно устроить следующим образом: сначала он переводит исходники во внутреннее представление из которого затем осуществляется экспорт в конечное представление.
Форматы конечного представления:
- HTML - понятно зачем.
- LaTeX - для дальнейшей доработки под стиль журнала, плюс латех рендерит более читаемые pdf.
Исходники:
- Kotlin DSL для автоматической генерации отчетов
- Markdown — написан hello world для перевода md-текста во внутреннее представление с помощью парсера из intellij-markdown.
- RST, частично TeX
Вопросы
Индексация и нумерация
Насколько обширной должна быть индексация? Мы моем отслеживать вхождение каждого элемента в область видимости и потом получать номер относительно достаточно произвольного набора областей, поэтом вопрос в том что именно нам нужно, а что можно не реализовывать.