Делаем книги в формате FictionBook. Часть I

Выбор программного обеспечения, предназначенного для создания и редактирования книг в формате FictionBook, весьма невелик. Фактически он представлен двумя программами: BookDesigner 4.0 В. Войцеховича (он же FictionBook Designer в усеченном специализированном варианте) ( сайт ) и FB Tools Михаила Мацнева ( сайт ). Программа BookDesigner была разработана как средство для конвертации книг из любого формата в любой же формат. И она полностью отвечает своему назначению. Если требуется сконвертировать книгу в экзотический формат или, наоборот, извлечь из оного, то здесь альтернативы Book Designer просто нет. Проблема в том, что BookDesigner не рассчитан на серьезное редактирование книг. Открыть файл, быстро разметить его и сохранить в новом формате — с этим он справляется великолепно. И функция Book Cleaner (пакетный запуск регулярных выражений) просто изумительна. Но когда приходится долго и вдумчиво редактировать книги, то возникают проблемы. Нет выделения цитат. Не совсем корректно работает функция Undo. То, что отображается на экране, не всегда соответствует реальному содержимому файла. Даже сохранение работает не так, как мы привыкли. На язык так и просятся слова незабвенного товарища Огурцова: "Все молодцы, работа проделана большая, но так дело не пойдет!" Правда, в обозримом будущем ожидается версия 5.0. Будем надеяться, большинство недостатков там будет исправлено. Таким образом, у нас остается пакет FB Tools и его основная часть — редактор FB Editor. В этой публикации мы рассмотрим именно FB Editor как основное средство создания и редактирования книг в формате FictionBook.

Конвертация текстов в формат Fiction Book

При всех своих достоинствах FB Editor не умеет сам конвертировать книги в формат FB2. Для этого приходится использовать отдельные программные средства. Если вы планируете набирать книги FictionBook "с нуля" или редактировать уже готовые, этот раздел можно пропустить. Чтобы сконвертировать книгу из другого формата, есть
специально предназначенный для этого пакет Any2FB2 ( сайт ). Он уверенно конвертирует тексты, файлы HTML, не перегруженные фреймами и сложными таблицами, и даже RTF (DOC). При этом он пытается самостоятельно распознать структуру входного текста и даже выделить элементы. К сожалению, "ишкуштвенный интилект" программы справляется с этим не слишком хорошо. Поэтому большую часть возможностей распознавания элементов приходится запрещать. Кроме того, при конвертации обычного текста обнаруживается такой подводный камень. Если текст неформатированный — "одна строка — один абзац", все пройдет нормально. Но если он разбит на абзацы с выравниванием, то Any2FB2 почему-то считает новым абзацем строку, начинающуюся со знака "тире", независимо от того, есть перед ней отступ или нет. Поэтому, если у вас именно такой текст, то перед тем, как скормить его Any2FB2, обработайте его программкой TXT2MB ( сайт ). Она переформатирует текст так, чтобы один абзац занимал одну строку. Чтобы программа отработала правильно, необходимо, чтобы первая строка каждого абзаца имела отступ хотя бы в один пробел. Также для преобразования форматированного текста можно воспользоваться программой Дмитрия Грибова ClearTXT
( сайт ). Чтобы в ней разобраться, понадобится время, но оно того стоит. Для конвертации документов в формате RTF или DOC лучше всего использовать макрос ExportXML.dot ( сайт ). Если у вас установлен Office 2003, можно воспользоваться hta-приложением Doc2FB ( сайт ). И, наконец, не стоит забывать и такой метод, как Copy-Paste. Копируем нужный текст в окне браузера или редактора и вставляем в книгу. При этом разметка текста обычно сохраняется. Именно так я всего за полчаса преобразовал свежескачанный с www.wisesoft.ru номер "Хакера-спец" из набора НTML'ок во вполне приличную FB2- книжку. Еще 20 минут ушло на структурирование книги. После чего "продукт" был полностью готов к употреблению. Особо отмечу, что после конвертации любую книгу нужно открывать в FB Editor и доводить до ума вручную.

Использование только автоматической конвертации оправдано только в том случае, если текст конвертируется исключительно для того, чтобы закачать на КПК, прочесть и удалить. Но если вы планируете выкладывать книгу в Сеть или распространять еще каким-то образом, то изготавливать ее "одним кликом" совершенно недопустимо. Не забывайте, что в этом случае вы фактически являетесь ИЗДАТЕЛЕМ книги. Проявите уважение к автору и читателям:))).

Краткое описание формата FictionBook.

Электронную книгу в формате FictionBook можно условно разделить на три части:
Первая — описание книги (description). Автор, название, кто сделал FB2, выходные данные бумажного оригинала и т.д.
Вторая — непосредственно текст книги, разбитый на логические части согласно бумажному изданию или авторскому замыслу, если произведение не было издано.
Третья, необязательная — картинки и двоичные объекты в кодировке base64.
Ознакомиться со схемой (schema) FictionBook можно на сайте www.fictionbook.org в разделе "Документы".
Вот пример книги в формате FB2:

<FictionBook xmlns=" сайт xmlns:l=" сайт
<description>
<title-info>
<genre>reference</genre>
<author>
<first-name>Имя автора</first-name>
<last-name>Фамилия автора</last-name>
<nickname>Юзич</nickname>
</author>
<book-title>Пример книги в формате FictionBook 2.1</book-title>
<annotation>
<p>Это пример книги в формате FictiionBook</p>
</annotation>
<date value="2006-04-14">14 апреля 2006 г.</date>
<lang>ru</lang>
</title-info>
<document-info>
<author>
<nickname>Юзич</nickname>
</author>
<program-used>FB Tools</program-used>
<date value="2006-04-14">2006-04-14</date>
<id>1E693E16-8A80-4391-9800-C1A91A5E29A7</id>
<version>1.0</version>
<history>
<p>v 1.0 — создание книги (Юзич)</p>
</history>
</document-info>
</description>
<body>
<title>
<p>Юзич</p>
<p>ПРИМЕР КНИГИ В ФОРМАТЕ FictionBook 2.1</p>
</title>
<epigraph>
<p>Это эпиграф</p>
<text-author>Автор эпиграфа</text-author>
</epigraph>
<section>
<title>
<p>Первая секция</p>
</title>
<p>Секции обычно содержат текст.</p>
<empty-line/>
<p>Текст может разделяться пустыми строками.</p>
<subtitle>Подзаголовок</subtitle>
<p>Или подзаголовками.</p>
</section>
<section>
<title>
<p>Вторая секция</p>
</title>
<section>
<title>
<p>Первая вложенная секция</p>
</title>
<p>Текст может быть <strong>полужирным</strong> или <emphasis>курсивным</emphasis>.</p>
<p>Содержать <a l:href="#Sect3">линки</a> и <a l:href="#note01" type="note">[сноски]</a>.</p>
<p>В тексте могут быть картинки.</p>
<image l:href="#sampl.png"/>
<empty-line/>
</section>
<section>
<title>
<p>Вторая вложенная секция</p>
</title>
<cite>
<p>Это цитата.</p>
<text-author>Автор цитаты.</text-author>
</cite>
<p>Снова текст.</p>
</section>
</section>
<section id="Sect3">
<title>
<p>Третья секция</p>
</title>
<p>Стихи:</p>
<poem>
<title>
<p>Парус</p>
</title>
<stanza>
<v>А у дельфина взрезано брюхо винтом.</v>
<v>Выстрела в спину не ожидает никто.</v>
<v>На батарее нету снарядов уже.</v>
<v>Надо быстрее на вираже.</v>
</stanza>
<stanza>
<v>Но парус! Порвали парус!</v>
<v>Каюсь! Каюсь! Каюсь!</v>
</stanza>
<text-author>Владимир Высоцкий</text-author>
</poem>
<p>Снова обычный текст.</p>
</section>
</body>
<body name="notes">
<title>
<p>Примечания</p>
</title>
<section id="note01">
<title>
<p>1</p>
</title>
<p>Текст сноски.</p>
</section>
</body>
<binary id="sampl.png" content-type="image/png">
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAMAAAAcEyWHAAAABGdBTUEAAK/INwWK6QAAABl0
RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURQEBAf///+tZAq0AAAAY
SURBVHjaYmBAAEZGRjDGzsKvDgYAAgwABR4AH2mwMFgAAAAASUVORK5CYII=</binary>
</FictionBook>

Как видим, файл имеет легко читаемую структуру

Основные теги:
<FictionBook></FictionBook> Эти теги обрамляют всю книгу.
<description></description> Внутри используется довольно большой набор тегов, приводить который из-за ограниченности объема газетной публикации не будем.
<body></body> — тело книги. Обычно существует в единственном экземпляре. Иногда добавляется дополнительное body — для сносок.
<section></section> — секция.
<title></title> — заголовок.
<subtitle></subtitle> — заголовок.
<p></p> — абзац.
</emptyline> — пустая строка.
<strong></strong> — полужирный шрифт.
<emphasis></emphasis> — наклонный шрифт (курсив).
<a></a> — сноска или линк.
<image/> — картинка.

А это последние нововведения версии 2.1. Правда, из-за недостаточной поддержки софтом они практически не используются…

<table></table> — таблицы! Внутри, соответственно, располагаются:
<tr></tr> — строки. А внутри строк:
<td></td> — ячейки.
<sup></sup> — subscript, нижний индекс.
<sub></sub> — superscript, верхний индекс.
<code></code> — преформатированный текст. Этот тег позволяет выделить, например, программный код.

Работа с программой FB Editor

1. Установка FB Tools


Автор FB Editor не стал утруждать себя написанием help'а, не без основания считая, что разобраться, как работать с программой, можно и без него. Однако, судя по количеству вопросов на форумах fictionbook.org и прочих, описание программы все-таки требуется. Поэтому в данной публикации я постараюсь восполнить этот недостаток.
Скачать пакет FB Tools, в состав которого входит FB Editor, можно отсюда: сайт .
Также понадобится MSXML 4.0 SP2 и Internet Explorer версии не ниже 5.5.
Скачать MSXML 4.0 SP2 можно с сайта компании Microsoft: сайт .
При скачивании MSXML проверка Windows на легальность не производится:).
Для работы FB Tools требуется операционная система семейства Windows NT — лучше всего Windows 2000 или Windows XP.
После установки FB Tools нужно обновить файлы схемы FictionBook. Схема версии 2.1 находится здесь: сайт . Скачав этот маленький архив, распакуйте его в директорию, где установлены FB Tools, так, чтобы старые файлы были перезаписаны.
Наконец, все нужные компоненты закачаны, программа установлена. Можно приступать к работе.

2. Описание функций FB Editor

После запуска программы появляется рабочее окно. Вверху находится стандартное меню и панель инструментов. Под ними располагается панель линков, с помощью которой можно присваивать имена (метки) элементам книги, а также делать ссылки и сноски. Большую часть рабочего окна занимает главное окно редактирования текста. Оно имеет три режима: редактирование описания книги, редактирование текста книги в режиме WYSIWYG и в режиме исходника, когда видны все теги и настоящая структура файла. Слева от главного окна находится панель Document Tree, в котором отображается древовидная структура документа. С помощью ее можно быстро перейти в нужный элемент книги. И внизу — служебная строка. Там выводится структура текущего редактируемого элемента (например: body/section/p) или сообщения валидатора.

Пройдемся по пунктам меню. В меню File, кроме стандартных New, Open, Save, есть команда Validate (F8). При вызове ее документ проверяется на соответствие спецификации schema. Если при этом были обнаружены ошибки, то программа автоматически переходит в режим редактирования исходника, устанавливая курсор на 1-2 строки ниже "проблемной" строки. Пункт меню File\Import по умолчанию имеет один подпункт: "No import plugins installed". Плагины для импорта книг из других форматов в комплект FB Tools не входят. Но если вы установите пакет Any2FB2, то FB Editor сам обнаружит его, и соответствующая иконка появится в меню File\Import. Устанавливать Any2FB2 в одну папку с FB Tools для этого вовсе не обязательно. Пункт меню File\Export позволяет экспортировать книгу в формат HTML. Структура книги полностью сохраняется. Если вы установили пакет FB2Any, здесь появятся плагины для экспорта книги в txt, Rocket Book, MS Reader, iSilo.

Второй раздел меню — Edit — кроме типовых Undo-Redo, Cut, Copy, Find, Replace, содержит блок работы с элементами книги: Сlone, Split, Merge container и — специально для вложенных секций — Remove outer container. Ниже идут три подменю вставки элементов. В подменю Style собраны команды вставки элементов в пределах одного абзаца: Normal, Text Author, Subtitle, Link, Footnote, Remove link. Подменю Add содержит команды вставки элементов, которые должны находиться строго в определенном месте: Body, Title, Epigraph, Image (вариант), Annotation, Text Author. В подменю Insert сгруппированы команды вставки элементов, которые, в принципе, могут находиться в произвольном месте книги: Image, Poem, Cite. Последней идет команда Add Binary object. Она позволяет присоединять к файлу книги картинки и бинарные файлы. Следующий раздел меню — View. Сначала идут флажки отображения панелей — Toolbar, Link bar, Status bar, Doсument Tree. Под ними — выбор режима редактирования книги — Description, Body, Source. И последний пункт — Options. Здесь можно выбрать цвет фона, а также цвет, тип и размер шрифта для окна редактирования.

Раздел меню Tools содержит три пункта. Команда Words. К сожалению, она до конца не проработана. В своем нынешнем состоянии она выдает список слов, входящих в текст книги, в которых есть дефис. Те слова, у которых в тексте книги есть варианты без дефиса, помечаются восклицательным знаком. В поле Replacement можно вводить варианты замены. Но после нажатия кнопки ОК программа заменяет только те слова, в которых нет русских символов. Options — здесь можно настроить параметры режима редактирования исходника. Wrap lines (сворачивать строки), Syntax highlighting (подсветка синтаксиса), Show end of line marks (показывать символы конца строки). И подменю JavaScripts, позволяющее вызывать пользовательские скрипты.

В раздел Help входит только пункт About, где указаны номер версии и дата сборки.

3. Особенности редактирования документов

Первое, что необходимо усвоить при работе c FictionBook — это то, что данный формат предназначен НЕ для ОФОРМЛЕНИЯ, а для СТРУКТУРИРОВАНИЯ электронного документа.
Поэтому бесполезно искать абзацные отступы, выравнивание и прочие элементы, столь привычные в любом стандартном редакторе. В созданной по умолчанию пустой книге всего три элемента: Annotation, history и body с title и одной section. Как видим, в FB Editor различные элементы книги принято выделять цветной полоской слева, а также цветовой заливкой. Редактирование в FB Editor внешне почти не отличается от произведенного с помощью обычного редактора. Поддерживается даже перетягивание выделенного текста. Но свои особенности имеются. И главная из них — поабзацное перетекание текста из элемента в элемент. Наберите два-три слова в разделе section. Потом нажмите Enter, создав тем самым новый абзац. Наберите еще что-нибудь. Затем перейдите в заголовок книги (body/title/p, выделен зеленым цветом) и нажмите Del. Первый абзац текста перейдет в заголовок книги. Это и есть перетекание текста. Запомните этот способ. Его вы будете использовать очень часто.

Из привычных способов выделения текста FB Editor может предложить только два. Щелкнув по соответствующей кнопке на панели инструментов, текст можно сделать полужирным (горячая клавиша Ctrl-S) или курсивным (Сtrl-E). Не стоит злоупотреблять и дополнительно выделять названия глав, подзаголовки, стихи и т.д. жирным шрифтом, курсивом, пустыми строчками и тому подобными приемами. Это полагается делать через настройки читалки. Новшества версии 2.1 в текущей версии FB Editor не поддерживаются. Набирать их в режиме редактирования исходника можно, и валидатор обрабатывает их нормально. Но в коде программы поддержка новых тегов не предусмотрена, и после выхода в режим WYSIWYG эти теги просто исчезают или преобразуются в обычные абзацы, как, например, таблицы. При редактировании текстов FB Editor позволяет вводить некоторые символы, отсутствующие на клавиатуре.

{Сtrl-} — "–" — короткое тире, полиграфический "минус".
{Ctrl=} — "—" — длинное (полиграфическое) тире.
{Ctrl[} — "'" — левая верхняя одинарная кавычка.
{Сtrl]} — "'" — правая нижняя одинарная кавычка.
{Ctrl;} — """ — левая верхняя двойная кавычка.
{Ctrl'} — """ — правая нижняя двойная кавычка.
{Ctrl>} — "…" — многоточие.

Поиск (Edit\Find (Ctrl+F)) и замена (Edit\Replace (Сtrl+H)) в FB Editor имеют стандартные функции Match Whole Word (найти слово целиком), Match case (различать регистр), поиска вперед и назад по тексту. Последний флажок — Regular expression — позволяет использовать при поиске и замене регулярные выражения. Подробнее см. в разделе "Использование регулярных выражений". В режиме редактирования исходника нельзя вводить пустые элементы. При возврате в режим WYSIWYG они не будут отображаться, а как только вы начнете редактировать текст в режиме WYSIWYG, вообще исчезнут. Нужно вставлять внутрь хотя бы элемент "пустая строка" <empty-line/>. Например:
Неправильно:

<section></section>
<cite></cite>
Правильно:
<section>
<empty-line/>
</section>
<cite><p>Какой-нибудь текст</p></cite>

4. Заполнение описания книги (Description)

Перед тем, как приступить к набору или редактированию текста книги, необходимо заполнить описание книги — Description. Это описание нужно для корректной работы библиотечного софта, но может быть интересно и читателю. Режим редактирования описания вызывается из меню View/Description. Окно редактирования имеет следующие разделы: Title Info, Document Info, Publisher Info, Custom Info и Binary Objects. В каждом разделе есть несколько граф. В правой части большинства граф есть служебные кнопки. Кнопка с пересекающимися прямоугольниками позволяет дублировать графу. Кнопка с крестиком, напротив, удаляет ненужные дубликаты. Если графа существует в единственном экземпляре, кнопка неактивна. В разделе Title Info содержится основная информация о книге. Первым пунктом идет жанр произведения (Genres). Он должен быть выбран из фиксированного списка. Щелкните по кнопке с треугольничком и выберите нужный жанр из соответствующей группы. В этой же строке правее находится поле Match. Оно обозначает соответствие произведения выбранному жанру (в процентах). Например, в списке поджанров нет весьма популярного нынче "городского фэнтези". Поэтому оформляем его двумя жанрами: фэнтези и боевик. Сначала выбираем жанр Science Fiction & Fantasy\Fantasy. Потом добавляем еще одну строку Genre и выбираем жанр Science Fiction & Fantasy\Action. После Genres идет графа Authors — информация об авторе книги: First (имя) Middle (отчество), Last (фамилия), Nick (ник), Email (адрес электронной почты), Homepage (адрес сайта). Следом идет Book title (название книги), Keywords (ключевые слова), Date (дата написания (не выпуска!)) в произвольном формате (например, "2001-2005 г., Переделкино"). В поле Value тоже вводится дата (обычно окончания работы над книгой), но строго в компьютерном формате ГГГГ-ММ-ДД (например, 2006-07-22). Coverpage. Картинка обложки. В поле Image вводится ссылка на картинку обложки. Сама картинка присоединяется к файлу командой Edit\Add Binary object (скрепка на панели инструментов). Затем копируем имя файла из поля ID появившейся в разделе Binary Objects новой графы в буфер и вставляем в поле Image графы Coverpage. Перед именем нужно добавить символ "#". Не следует делать картинку обложки слишком большой. Обычно высота картинки должна быть 250-320 пикселей, ширина — пропорционально. Размер файла JPG не должен превышать 30 Kb. Language — язык книги. Для русского пишем "ru".

Следует знать, что в описании книги жизненно необходимыми являются два пункта: Genre и Language. Если они не заполнены или заполнены неправильно, то валидатор FB Editor ругается при попытке сохранить книгу. А что самое неприятное — если вам понадобилось отредактировать "исходник", то валидатор просто "не выпустит" из режима редактирования Source до тех пор, пока указанные поля не будут заполнены правильно. Поэтому первым делом необходимо заполнить эти элементы. С остальными можно разобраться и попозже.

Source language — исходный язык, если книга переводная. В противном случае оставляем пустой.
Translators — переводчик. Если книга не переводная, оставляем пустыми. Иначе заполняем таким же образом, как и графу Authors: фамилия, имя, отчество и т.д.
Sequence — если книга входит в серию, то в поле Name вводим название серии, а в поле Number — порядковый номер в серии. Обратите внимание, что в правой части строки перед кнопкой дублирования есть кнопка с треугольничком. Она позволяет создавать вложенные серии. К примеру, основная серия — "Звездные Войны", вложенная серия — трилогия "Адмирал Траун".
Раздел Document Info содержит информацию о самой книге.
В строку Authors вводим информацию о человеке, создавшем этот документ. Аналогично ранее заполнявшимся Authors и Translators.
Programs used — программное обеспечение, использованное при создании книги. Обычно FB Editor сам пишет там — FB Tools. Если вы использовали какие-нибудь дополнительные утилиты, можно упомянуть их там.
Заполнение полей Date и Value аналогично таким же полям в Book Info.
Source URLs — если исходный текст для создания книги был скачан с какого-нибудь сайта, здесь нужно указать ссылку на него.
Source OCR — если книга было отсканирована, то здесь указываем данные (обычно ник) сканериста, а также человека, производившего вычитку. Страна должна знать своих героев!
ID — уникальный номер документа. Обычно генерируется самим FB Editor'ом или программой конвертации.
Version — номер версии книги. Обычно это 1.0. В случае внесения изменений номер версии нужно изменять вручную.
Следующий раздел — Publisher Info. Здесь собрана информация о бумажном оригинале книги, если таковой существовал.
Book name. Обычно совпадает с названием произведения, но если оно было издано в составе сборника, то здесь следует указывать название сборника.
Publisher — название издательства.
City — город, в котором была выпущена книга.
Year — год выпуска.
ISBN — код ISBN.
Sequence — название ПЕЧАТНОЙ серии. "Библиотека приключений", например, или "Абсолютное оружие". Также допускает вложенные серии.

В раздел Custom Info может вноситься произвольная дополнительная информация. Копирайт, благодарности, реклама и т.д., и т.п. вплоть до мистических проклятий средневековых переписчиков: "Кто эту книгу украдет, у того руки отсохнут" (современный вариант — винчестер накроется):-). Раздел Binary Objects заполняется автоматически по мере присоединения к книге бинарных объектов, обычно картинок. Щелкая по кнопке с крестиком и удаляя графы в этом разделе, вы одновременно удаляете присоединенные объекты.

Юзич, miksoft77@mail.ru


Компьютерная газета. Статья была опубликована в номере 46 за 2006 год в рубрике soft

©1997-2024 Компьютерная газета