Размышления вслух: FictionBook vs. Docbook

Я не собираюсь сравнивать спецификации и устраивать холивар по поводу, чьё кун-фу лучше, просто укажу на то, что мне не нравится в fb.

Я долгое время верстал документацию и художественную литературу в формате Docbook, как для себя, так и по работе. То есть важные для себя книги я читаю, и одновременно верстаю их в Docbook, ручками в vim’е. Автоматической же конвертацией не занимаюсь вообще. А вот сейчас решил снова вернуться к формату «де факто» в рунете fb2 и сверстать пару книжек для коммьюнити. В данный момент читаю/верстаю книгу Anne Rice Interview with the Vampire в формат fb и книгу правил Vampire the Masquerade в docbook.

И есть в fb вещи, которые меня просто бесят. Их я перечислю ниже. Уважаемые любители этого формата, поймите, что я нисколько не против fb, и даже наоборот, очень его уважаю. И всё перечисленное ниже есть моё ИМХО.

1. Сноски! Ну, это вообще! :) Сразу становится ясно, что люди, создававшие этот формат либо не были профессионалами в этой области, либо решили пойти по короткому пути, который привёл к этому «уродцу». По сути, это не сноска, а ссылка, причём с заголовком! Если я вдруг решу удалить сноску, мне придётся вручную переименовывать все сноски за ней! Верстать крайне неудобно и нелогично. Просто сравните.

Сноски в fb2:

в стиле Роберта Адама <a l:href="#note1" type="note">[1]</a>

<body name="notes">
  <title><p>Примечания</p></title>
  <section id="note1">
   <title>
    <p>1</p>
   </title>
   <p>Известный английский архитектор XVIII века, испытавший в
   своем творчестве сильное влияние античной архитектуры. (Здесь и
   далее прим. ред.)</p>
  </section>
</body>

Сноска в docbook:

<para>
Французы приняли заказ<footnote><para>
Можно предложить еще одну версию: красивую, но маловероятную.
</para></footnote>, но отказались предоставить англичанам
методику снижения потерь на волновое сопротивление.
</para>

Лаконично, логично, соответствует философии отделения содержания от оформления.

2. Наличие тегов оформления в языке разметки! Совершенно непонятно зачем в спецификации присутствуют такие теги как strikethrough, sub, sup. Хорошо, что хоть underline нет, хотя он-то как раз хоть иногда встречается в художественной литературе.

3. Непонятное предназначение формата. Насколько я понимаю по названию, этот формат предназначен для вёрстки художественной литературы. Тогда что в нём делают опять-таки такие теги как sub, sup, code! В какой художественной литературе вы видели листинг?! А если такое и есть, то это меньшинство и входить в спецификацию не должно. Ведь никто в здравом уме не станет писать техническую книгу, используя этот формат, только полный гик. В fb нет листингов (code не то же самое, что листинг), сайдбаров, примечаний, warning'ов и прочего. Нет инструментов для создания индекса, указателей, списка иллюстраций и т.д. В общем, не предназначен он для этого… тогда зачем в нём code?!

С другой стороны удивляет отсутствие тегов для оформления пьес.

Книги можно условно поделить на следующие части: книга (реализуется в fb с помощью тега sequence), предисловие, посвящение, благодарности, часть, глава, подглава, эпилог. Причем также можно грубо разделить все художественные книги на три типа по их размеру и специфике: роман (fictionbook), рассказ (fictionstory), пьеса (fictionplay). Ничто из этого в fb не реализовано.

4. Работа с изображениями. Мелочь, но мне не нравится, что необходимо кодировать картинку (благо я под линуксом, и там это делается одной командой). Обновление же изображений вообще вгоняет в депрессию.

В Docbooke есть всё, что есть в fictionbook (кроме, пожалуй, столь подробного description), но реализовано всё это более элегантно. Спецификация открыта, её можно изменять, к ней написаны xslt-драйвера, которые преобразуют Docbook в любой другой формат. Их можно свободно настроить, например, каждая библиотека может обладать своим особенным дизайном.

Так зачем же было изобретать велосипед? Почему было просто не взять открытый формат и не сделать на его основе новый формат, предназначенный для художественной литературы? Большинство тегов отбросить, другие добавить… и сохранить при этом совместимость с Docbook?

Для себя же я решение принял: чтобы моим трудом по вёрстке могли воспользоваться другие люди, художественные книги я буду верстать в fb. Но, видимо, мне придётся написать конвертер, потому что хранить книги у себя я всё же предпочту в Docbook.

Комментарии

DMRem написал:
В Docbooke есть всё, что есть в fictionbook (кроме, пожалуй, столь подробного description), но реализовано всё это более элегантно.

Всё справедливо. Но именно дескрипшен и привёл к победе fb2 над альтернативами. Ибо убирает 99% работы по привязке книги к библиотеке, а именно библиотеки были центрами распространения книг и популяризации формата. Если дескрипшен можно втиснуть в docbook и сделать хорошие конвертеры туда-обратно, то появится второй неплохой формат. А есть ещё epub, который, говорят тоже неплох...

DMRem написал:
Для себя же я решение принял: чтобы моим трудом по вёрстке могли воспользоваться другие люди, художественные книги я буду верстать в fb.

К этому решению приходишь однозначно, если делаешь не только для себя. ...Ну и ещё djvu c ocr-слоем для учебно-научной литературы.

Цитата:
придётся написать конвертер

теоретически, из одного XML в другой (а FB2 и DocBook, вроде как, оба - XML) должно работать простое XSLT-преобразование. Т.е. написать придётся только XSLT-"таблицу".

"теоретически" - потому как я этого руками не делал :)

ЗЫ: кстати, тут тэги sub и sup не работают почему-то :)

DMRem написал:

3. Непонятное предназначение формата. Насколько я понимаю по названию, этот формат предназначен для вёрстки художественной литературы.

Насколько я понимаю, fb2 предназначен не только, и, пожалуй, даже не столько для верстки, сколько для автоматического размещения книг в коллекциях и библиотеках. Именно для этого в fb2 такой мощный description. А в остальном согласен - кривоват...

Смотрим википедию - "DocBook разрабатывался для создания технической документации, но может использоваться и в других целях (для создания сайтов, с преобразованием в HTML; для создания презентаций)."
FictiobBook - для худ. литературы и удобства размещения в эл.библиотеках.
imho "FictionBook vs. Docbook" тоже самое что "молоток vs отвертка". :)
нет смысла их сравнивать.

PS: за то чтобы улучшить fb, я только "за".

DMRem написал:
Если я вдруг решу удалить сноску, мне придётся вручную переименовывать все сноски за ней!
Только если сноска помечена номером и очень надо, чтобы номера шли строго подряд. Если метка сноски - звёздочка, а текст сноски начинается не с номера, а с поясняемого слова - то очень даже просто и удобно.
DMRem написал:
формат предназначен для вёрстки художественной литературы. Тогда что в нём делают опять-таки такие теги как sub, sup, code!
Дык и в худлите могут встречаться всякие H2SO4, C2H5OH и т.д.
DMRem написал:
В fb нет листингов (code не то же самое, что листинг),
Почему же? По задумке, "code" - это то же самое, что и тэг "pre" в html'е, просто ни в одном вьюере не реализовано пока.
DMRem написал:
В какой художественной литературе вы видели листинг?! А если такое и есть, то это меньшинство и входить в спецификацию не должно.
В фантастике видел. Где-то у Савченко. А насчёт "входить в спецификацию не должно" - в чём проблема-то, формат открытый, не хочешь - сделай свой вариант конкретно без листинга. :) А если юзается хоть где-то - значит, входить таки должно. (Приверженцы без-goto-шного программирования поймут: принципы принципами, но писать мало-мальски объёмистую программу на языке, в принципе не имеющем оператора goto - это нуегона. :(
DMRem написал:
В Docbooke есть всё, что есть в fictionbook (кроме, пожалуй, столь подробного description), но реализовано всё это более элегантно. Спецификация открыта, её можно изменять, к ней написаны xslt-драйвера, которые преобразуют Docbook в любой другой формат. Их можно свободно настроить, например, каждая библиотека может обладать своим особенным дизайном.
Классно! Осталась мелочь - сделать приличный docbook-вьюер под, к примеру, LBook eReader. Кто возьмётся?

Цитата:
Только если сноска помечена номером и очень надо, чтобы номера шли строго подряд.

В очень многих книгах так и есть. Кроме того, этим должен занимать драйвер, отвечающий за оформление, а не за разметку. То есть я написал тег footnote, а когда просматриваю документ, преобразую его в другой формат и т.д., тогда указываю, как их отображать: цифрами, буквами, звёздочками, внизу страницы или в конце документа...
Цитата:
А если юзается хоть где-то - значит, входить таки должно.

Тогда давайте использовать Docbook на всю катушку, да ещё MathML или LaTeX включим, вдруг какому-нибудь писателю придёт в голову описать размышления учёного. :) В художественной книге нет такого логического блока как код, или листинг, или сайдбар, или индекса. Если используется формула, значит должен использоваться тег formula, а уже в него должны входить математические теги, имхо.

В пьесах же есть в свою очередь персонажи, их действия, слова автора, описание сцены, лист действующих лиц. Почему вот этого нет, а код есть? Не должен Фамусов оформляться тегом strong. Должно быть что-то вроде <character>Фамусов</character>.

Цитата:
Осталась мелочь - сделать приличный docbook-вьюер под, к примеру, LBook eReader.

Действительно, было бы здорово. :)

Цитата:
Классно! Осталась мелочь - сделать приличный docbook-вьюер под, к примеру, LBook eReader. Кто возьмётся?

А таки вменяемый SDK под v3 для скачивания где-нибудь доступен ? Или проще будет сделать набор конвертеров - OASIS <-> FB2, OASIS <-CHM, OASIS <- PDF ?

Рыжий Тигра написал:
DMRem написал:
В Docbooke есть всё, что есть в fictionbook (кроме, пожалуй, столь подробного description), но реализовано всё это более элегантно. Спецификация открыта, её можно изменять, к ней написаны xslt-драйвера, которые преобразуют Docbook в любой другой формат. Их можно свободно настроить, например, каждая библиотека может обладать своим особенным дизайном.
Классно! Осталась мелочь - сделать приличный docbook-вьюер под, к примеру, LBook eReader. Кто возьмётся?

А на фига, Холмс? В том и сила XML'я, что его легко преобразовать во что угодно, был бы подходящий XSLT. Преобразуй в любой уже поддерживаемый формат и читай на здоровье. Не возбраняется даже растеризация в закрытый WOL. Идея переноса вычислительной нагрузки со сравнительно хилого процессора ебуки на перекачанный процессор настольного компутера вполне себе здравая.

Цитата:
Я долгое время верстал документацию и художественную литературу в формате Docbook, как для себя, так и по работе.

Верстайте дальше:)
Цитата:
Классно! Осталась мелочь - сделать приличный docbook-вьюер под, к примеру, LBook eReader. Кто возьмётся?

Обеими руками за,сделает -можно будет пользоватся:)
К автору заметки:
Не нравится вам FB2- не пользуйтесь,но,де факто,он победил в рунете. Разработайте софт для удобного пользования docbook и сделайте его более мощным чем FB2,тогда и поговорим. Непрофессионалу абсолютно пофик в каком формате книгу читать,лишь бы удобно было.

Цитата:
Не нравится вам FB2- не пользуйтесь,но,де факто,он победил в рунете.

«Не нравится, не пользуйся. Напиши новый». Зачем же так? :) Я же не оскорблял формат, сказал, что уважаю, что даже в нём немного верстаю, и, возможно, напишу xsl-драйвер для преобразования своих docbook в fictionbook. Холивар не объявлял. Просто указал на недостатки.

Если же непрофессионалу пофиг, то зачем вообще делать хорошие вещи, писать красивый код, следовать стандратам и т.д.? Зачем вычитывать книги, исправлять типографику? Скриптик запустим, в формат перегоним, пускай читают! (для примера на lib.ru в небольшом рассказе Чехова «Каштанка» я насчитал 72 опечатки! А классика долгое время бралась именно с этой библиотеки.) Давайте напишем хрень — пипл схавает! Ибо у пипла просто нет альтернативы. А там уже снежный ком: тысячи книг, читалки, инструменты WYSIWYG и прочее. И, БАМС!, формат стал де факто, а непрофессиональный юзер уже на игле. А дальше можно ещё на этом открытом формате начать деньги делать.

Вообще, я полностью согласен с kelle (читайте ниже). И прекрасно понимаю, что формат этот будет ещё долгое время оставаться де факто, и вовсе непротив этого. И буду под него верстать книжки… В России вообще не шибко-то развит open source, чтобы требовать от него профессиональный продукт.

Повторюсь, всё сказанное — ИМХО. Мне FictionBook напоминает чем-то html, который выдаёт MSWord: внешне вроде ничего, а внутрь глянешь — в глазах темнеет. :) Если кого-то что-то обидело или задело, прошу прощения. :)

Цитата:
Если же непрофессионалу пофиг, то зачем вообще делать хорошие вещи, писать красивый код, следовать стандратам и т.д.?

Действительно, зачем? Что есть красивая хорошая вещь и для кого делают "профессионалы"?

Часто все "красивые, хорошие" представляют собой самореализацию того, кто делает. И не имеют большого отношения к насущным потребностям того, "для кого делают". Красиво сделанный кузов машины это здорово, но при условии, что подвеска не отваливается.

Если все "ужасы" не отражаются на читателе, то разговор о том, что "ему плохо" вести не нужно. На читателе больше отражается смысловые ошибки в тексте, а не то, как этот текст представлен на уровне файла.

Это если в общем об "красивостях", без относительно fb2.

Однако, "фиг ты угадал" скажу я Вам!

Проблемы формата, таки, и до конченого юзера дотягиваются - нет в DocBook'е мета-части для описания книги, как издания и всё. Нечего индексировать всяким там ХЗLibrarian'ам. Нет в FB "правильных" сносок - и всё. Их исправление превращается в *censored*, а чтение книг с кривыми ссылками - в "нефонтан". И далее - везде.

Это код кривой можно переделать. А формат - он или есть или нет.

1. Сноски: Может пока не позно, напишите свое предложение для fb3.

4. Бинари: в fb3 уже не будет проблем с картинками.

http://fictionbook.org/index.php/FictionBook_3.0_beta_-_краткое_описание

Что касается отсутствия профессионализма - уж извините, умных и красивых ждать не стали.

Вообщем на форум FB, там вас и выслушают.

Если нужен был расширенный description - это абсолютно не повод изобретать новый формат для всего остального! В "XML" первое X не зря означает eXtensible. Правильное решение было таким: написать свою спецификацию только для description и всего, что внутри него, и вставлять такие описания в DocBook-документ, используя свой уникальный namespace. Точно так же метаданные в RDF вставляются в любой другой XML формат, например SVG. Namespaces же не просто так придуманы! Модульность - основа основ правильного использования XML. Посмотрите на последнии стандарты W3C - они все модульные, разбиты на отельные куски, каждый со своим namespace.

К сожалению, сочинители FB "умных и красивых ждать не стали" и в результате накосячили. Исправьте что можно хотя бы в новой версии.

Полностью согласен! :)

преобразование docbook -> fb2 и наоборот: http://kir666.ru/fb2docbook/

За ссылку огромное спасибо. Посмотрим :)

преобразование только из fb2 в docbook! Но не наоборот.

есть идея для фикшнбука?
пожалуйте сюда: http://lib.rus.ec/node/110531
=)

Disclaimer.
Написанное рассматривать исключительно с технической точки зрения. Более того. Я благодарен, что большинство электронных книг на русском идет в FB2. А многие его недостатки, как формата, наоборот, послужили делу распространения и принятию FB2.

Про Fictionbook2.
Правильно подмечена бедность структурирования, есть только секции и параграфы. В тегах оформления еще есть тег style (c CSS). При рассмотрении, находится элемент из художественной литературы в формате: оформление стихов.
Все остальное (кроме description, который, однако, заполняется в большинстве случаев в том же объеме, что и его эквивалент в Docbook) присутствует в Docbook в более богатом и продуманном виде. Поскольку Docbook предназначен (цитата из Википедии) "для создания технической документации", но при этом полностью вбирает в себя возможности FB2 и при этом расширяем, что без особого труда позволяет добавить, скажем, описание стихов, то возникает законный вопрос, в чем же преимущество FictionBook2, как формата, даже для художественной литературы?

Про Docbook.
Формат используется для издания технических книг и написания статей, технической документации, слайдов. (По-крайне мере, одно издательство его использует -- O'Reilly.) Написать "вьюер" формата, на уровне тех программ, что существуют для FB2 -- труда не составит. Но никому это не нужно. Так как есть оконечные форматы для просмотра и печати (можно и в типографии). А вот как выглядят некоторые редакторы: Oxygen XML Editor и Serna Editor. Со стороны программной подержки очень бледно как раз выглядит именно FB2, несмотря на наличие всяких просмотрщиков и даже поддержки его в Lbook.

Как я понял, высокие договаривающиеся стороны пришли к согласию о том, что:
- формат FB2 предоставляет мало стилевых возможностей для форматирования технической литературы
- без наличия вьюера на персональных (носимых) читалках даже самый замечательный формат нахрен никому не уперся.

Будучи окончательно залюблен попыткой перегнать в FB2 техническую книгу, залез в исходники одной из популярных FB2-читалок, FBReader, (0.8.17) и обнаружил там плагин для чтения DocBook. Судя по беглому взгляду, корректно отображаться будут далеко не все стили, присутствующие в DocBook, но это, скажем так,
вопрос улучшения читалки, а не написания ее с нуля.

Нет. Речь ведется о том, что с помощью Docbook (если отбросить тег стихов и метаинформацию о книге/документе) уже сейчас можно делать такие же по структуре и семантике документы, как в Fictionbook2. При этом не используя и малой части формата Docbook, а то, чего в нем все же не хватает -- добавляется довольно быстро.

Забудьте про стили в самом документе. Еще раз подчеркиваю, что формат должен отвечать за структуру и семантику. Стили оформления идут в настройки трансформации по выводам в печатные (или для просмотра) форматы. Хотябы по той простой причине, что они абсолютно разные, эти форматы.

Вьюеры нужны для быстрого просмотра. Скорее речь идет о каталогизации. Вьюер же для носимых читалок, по большому счету, нужен лишь для совсем ленивых или нетребовательных.
И потом читалки на E-Ink -- это вывод, приближенный по качеству к типографскому, и слабые аппаратные ресурсы. А те вьюеры, что есть для FB2 -- где хоть в одном поддержка таблиц? Где переносы? Да и вывод текста на типографский уровень не тянет.
И еще, просмотрщики форматов вывода pdf (или растрирование из него) и html есть везде. А вывод в них полностью настраиваем.


Халтура. Но общий ход мыслей гр. Грибова Дмитрия Петровича, тысяча девятьсот лохматого года рождения, понятен... Поскольку возмущаться отсутствием альтруизма у отдельно взятых граждан считаю неконструктивным, предлагаю:
- выработать список предопределенных стилей оформления (ComputerOutput, VarList etc.), добавление которых к схеме FB2 наиболее актуально.
- взяв за основу, скажем, CoolReader, попробовать реализовать отображение документов получившегося формата....
X