- PVSM.RU - https://www.pvsm.ru -
Писал комментарий к статье [1] и понял, что надо выносить в отдельный пост.
Как многие отмечают там в комментариях статья отстой, человек не разбирается и смешал всё в кучу, попробую поделиться своими выводами от использования разных разметок.
Сразу скажу, что тема удобного формата меня интересовала всегда, но не хватало времени заняться вплотную, был случай когда по работе было нужно — писали пользовательскую документацию и там все проблемы бинарных форматов всплыли — неудобно отслеживать изменения, неудобно совместно работать, много копипаста (который был бы не нужен если бы была возможность делать include), неудобства при переводе на другие языки, но мои попытки перевести всё на LaTeX не встретили поддержки и всё заглохло.
И вот однажды пришло время оставить работу и предаться графоманизму. Я всегда держал в голове LaTeX [2], как известный и интересный формат, но для простых статеек начал использовать Markdown [3] т.к. его поддерживали GitHub/GitLab, потом мне стало мало его возможностей, я перешёл на AsciiDoc [4], он тоже поддерживается, но потом и его возможностей стало не хватать и пришлось переходить на LaTeX.
LaTeX хорош следующим:
К сожалению LaTeX тоже не идеален, да — можно получить хороший pdf, но:
Когда конвертация из LaTeX'а окончательно сломалась я был вынужден обратиться к великому DocBook [9]'у, это XML стандарт на семантическую разметку текстов для которого есть готовые XSLT для преобразования в некоторые форматы. Но у него тоже есть проблемы:
Большой плюс докбука — это семантическая разметка, особенно это важно когда вам надо конвертировать в разные форматы, мы же хотим чтобы читателям было удобно, а значит надо выдать им в том формате который им удобен — pdf разных размеров для разных экранов и печати, mobi для амазоновских читалок, кому-то fb2 (с этим как раз проблема — надо делать свой xslt, готового нет), многостраничная html версия нужна для чтения онлайн и т.д.
Я думаю всем понятно, что семантическая разметка не запрещает иметь «чтовижутопойю» [11] редактор, поэтому это не может быть аргументом против семантической разметки. Правда, я не исследовал тщательно вопрос гуёв, на первый взгляд по Linux как-то всё не очень с гуями для docbook, хотя варианты есть.
Получается, что нормального решения человечество не изобрело, есть интересная попытка — DocOnce [12], но там тоже не все возможности есть — а по идее надо иметь все возможности докбука, плюс DocOnce это какой-то набор костылей, авторы пишут что там просто регексами всё конвертится, т.е. нормального парсера нет, а значит багов будет много.
В итоге я «доработал» (добавил пустых тегов) разметку LaTeX, чтобы простыми регексами конвертить в докбук, а из него делать все форматы кроме PDF т.к. pdf проще и красивее сразу из латеха делать.
Т.е. для себя я сделал костыль скрещивающий плюсы LaTeX'а и DocBook'а — у меня разметка более человеческая чем xml (и дающая хороший pdf), но при этом она легко мапится в docbook, чтобы получить его преимущества в виде качественной конвертации во многие форматы.
Конечно трудно назвать это хорошим решением, но лучшего не придумал.
Правильным решением было бы создание человекочитаемой разметки вроде DocOnce, но с полным набором возможностей DocBook (можно было бы из этой разметки конвертить в докбук, а из него уже в остальные форматы), но что-то у меня уже упало желание — надо было подобрать библиотеку и описать синтакис в какой-нибудь нотации типа BNF [13], но не пошла у меня эта задача, может у кого больше энтузиазма будет.
Это как минимум, а можно и дальше пойти — ведь есть ещё много видов информации которые можно было бы добавить в стандарт семантической разметки, например, штуки типа plantuml [14], также неплохо чтобы формулы он умел не только отрисовывать, но и вычислять подставляя результат и так далее.
Ну видимо нужен красивый гуёвый редактор, раз это вызывает проблемы у части пользователей.
Автор: worldmind
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/264998
Ссылки в тексте:
[1] статье: https://habrahabr.ru/post/339340/
[2] LaTeX: https://en.wikipedia.org/wiki/LaTeX
[3] Markdown: https://en.wikipedia.org/wiki/Markdown
[4] AsciiDoc: https://en.wikipedia.org/wiki/AsciiDoc
[5] stackoverflow: http://stackoverflow.com/
[6] MVC: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
[7] SPA: https://en.wikipedia.org/wiki/Single-page_application
[8] plastex: http://plastex.sourceforge.net/
[9] DocBook: https://ru.wikipedia.org/wiki/DocBook
[10] пара полезных ссылок: https://worldmind.livejournal.com/253668.html
[11] «чтовижутопойю»: https://ru.wikipedia.org/wiki/WYSIWYG
[12] DocOnce: https://github.com/hplgit/doconce
[13] BNF: https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form
[14] plantuml: http://plantuml.com/
[15] Источник: https://habrahabr.ru/post/339436/
Нажмите здесь для печати.