th, tdv

Вложенные элементы:      a, code, emphasis, strikethrough, strong, stylesub, sup, image

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.0

Пример:

Курсивный текст

Элемент strikethrough

Перечеркнутый шрифт.

На момент написания книги читалками не поддерживается.

Cинтаксис: < strikethrough>content< /strikethrough>

Используется в элементах:   code, emphasis, p, strikethrough, strong, style, subtitle, sub, supth, tdv

Вложенные элементы:      a, code, emphasis, strikethrough, strong, stylesub, sup, image

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.1

Пример:

Эта сволочь, этот нехороший человек…

Элемент strong

Полужирный шрифт.

Cинтаксис: < strong>content< /strong>

Используется в элементах:   code, emphasis, p, strikethrough, strong, stylesubtitle, sub, supth, td,   v

Вложенные элементы:      a, code, emphasis, strikethrough, strong, style, sub, supimage

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.0

Пример:

Полужирный текст

Элемент style

Заранее определенный стиль для отображения книги.

Cинтаксис: < style>content< /style>

Используется в элементах:   code, emphasis, p, strikethrough, strong, stylesubtitle, sub, supth, tdv

Вложенные элементы:      code, emphasis, strikethrough, strong, style, sub, supimage

Количество вхождений: произвольное

Атрибуты: name (обязательный)

Версия формата: 2.0

Пример:

Этот текст будет

Элемент sub

Нижний индекс (subscript).

На момент написания книги читалками не поддерживается.

Cинтаксис: < sub>content< /sub>

Используется в элементах:   code, emphasis, p, strikethrough, strong, stylesubtitle, sub, supth, tdv

Вложенные элементы:      a, code, emphasis, strikethrough, strong, stylesub, sup, image

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.1

Пример:

x1+x2=y

Элемент sup

Верхний индекс (superscript).

На момент написания книги читалками не поддерживается.

Cинтаксис: < sup>content< /sup>

Используется в элементах:   code, emphasis, p, strikethrough, strong, stylesubtitle, sub, supth, tdv

Вложенные элементы:      a, code, emphasis, strikethrough, strong, stylesub, supimage

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.1

Пример:

E=mC2

§ 2.12 Элементы для платных книг

В версию 2.1 были введены специальные элементы для создания платных книг. Поскольку сам формат средств криптозащиты не предусматривает, обрабатывать эти тэги должен исключительно сервер библиотеки.

К сожалению, или, вернее, к счастью, эти элементы до сих пор не нашли применения.

Элемент output

Определяет способ вывода контента книги.

Cинтаксис: < output>content< /output>

Используется в элементах:   description

Вложенные элементыpart, output-document-class

Количество вхождений: произвольное

Атрибуты: mode (обязательный), currency, incude-all (обязательный)

Версия формата: 2.1

Пример:

Элемент output-document-class

Назначение неясно.

Cинтаксис:< output-document-class>parts< /output-document-class>

Используется в элементах:   output

Вложенные элементы: part

Количество вхождений: произвольное

Атрибуты: name, create, price

Версия формата: 2.1

Пример:

Элемент part

Делит книгу на платные и бесплатные части.

Cинтаксис:< part/>

Используется в элементах:   output

Вложенные элементы: нет

Количество вхождений: произвольное

Атрибуты: mode, include

Версия формата: 2.1

Пример: см. элемента output

§ 2.13 Спецсимволы

Некоторые символы в теле книги отображаются особым образом. Это нужно для предотвращения ошибок. Например, «<» и «>» зарезервированы для обозначения границ тэгов. Если их использовать в прямом виде как-то еще, то программа будет считать это ошибкой.

Такие последовательности называются предопределенными сущностями.

Список таких символов в FictionBook крайне мал. Их, собственно, всего три.

& — &;

< — <;

> ; — >;

Cтандартные сущности XML ' и " в FiсtionBook не используются и конвертируются в символы «'» и «"» соответственно.

§ 2.14 Список атрибутов элементов

Многие элементы в FictionBook имеют дополнительные параметры — атрибуты.

Атрибут aligh

Выравнивание текста в ячейке таблицы.

Используется в элементах: td, th, tr

Значение: фиксированное; left, right, center, justify

Значение по умолчанию: left

Атрибут alt

Назначение аналогично HTML — текст, отображающийся вместо картинки.

Используется в элементах: image

Значение: произвольная текстовая строка

Атрибут colspan

Позволяет объединять столбцы таблиц.

Используется в элементах: th, td

Значение: произвольное целое число

Атрибут content-type

Определяет тип содержимого элемента-контейнера binary

Используется в элементахbinary

Значение: фиксированное; image/png, image/jpeg, image/tiff, image/bmp, octet-stream

Атрибут create

Назначение неясно.

Используется в элементах: output-document-class

Значение:

Атрибут currency

Валюта, в которой определена цена платной книги.

Используется в элементах: output

Значение: ограниченно-произвольное

Атрибут href

Ссылка. Как правило, внутри документа.

Используется в элементах: a, image

Значение: ссылка.

Атрибут id

Метка, позволяющая ссылаться на элемент.

Используется в элементах: annotation, binary, cite, epigraph, image, p, poem, section, subtitle, table, td, text-author, th

Значение:  текстовая строка.

Атрибут info-type

Характеризует произвольную информацию.

Используется в элементахcustom-info

Значение: произвольная текстовая строка.

Атрибут include

Назначение неясно.

Используется в элементахpart

Значение:

Атрибут include-all

Назначение неясно.

Используется в элементах: output

Значение: фиксированное

Атрибут match

Определяет степень соответствия произведения выбранному жанру.

Используется в элементах: genre

Значение: целое число в диапазоне от 1 до 100

Атрибут mode

Способ вывода платного документа

Используется в элементах: output

Значение:

Атрибут name

Позволяет присвоить элементу имя. В отличие от метки (id), имя элемента используется исключительно программными средствами обработки документа.

Используется в элементах: body, sequence, output-document-class

Значение: произвольное

Атрибут number

Порядковый номер книги в серии.

Используется в элементах: sequence

Значение: произвольное целое число

Атрибут price

Цена платного документа

Используется в элементах: output-document-class

Значение: произвольное число c плавающей запятой

Атрибут rowspan

Позволяет объединять строки таблицы.

Используется в элементах: th, td

Значение: произвольное целое число

Атрибут style

Позволяет выбрать для элемента предопределенный стиль.

Используется в элементах: p, subtitle, table, td, text-author, th

Значение: произвольное; строка состоящая из латинских букв и цифр.

Пример:

Текст, выровненный по правому краю

Текст: фон черный, цвет шрифта белый, отступы справа и слева 20 процентов, сверху и снизу — 10 пикселей, высота строки 180 процентов

Атрибут title

Позволяет добавить к рисунку заголовок (подпись)

Используется в элементах: image

Значение: произвольная текстовая строка

Атрибут type

Определяет тип элемента.

Используется в элементах: a, stylesheet

Значение: фиксированное

Атрибут value

Дата.

Используется в элементах: date

Значение: произвольная дата в формате YYYY-MM-DD

Атрибут xmlns

Ссылка на спецификацию формата.

Атрибут value: FictionBook

Значение: жестко фиксированное

§ 2.15 Алфавитный список всех элементов FictionBook 2.1

a

annotation 

author 

binary 

body 

book-name 

book-title 

cite

city 

code

coverpage 

custom-info 

date 

description  ( )

document-info 

email

emphasis

empty-line

epigraph

FictionBook  )

first-name  ( )

genre 

history 

home-page

id 

isbn 

image ( )

keywords 

lang 

last-name

middle-name

nickname

output-document-class

output ( )

p

part ( )

poem

program-used 

publish-info 

publisher 

section

sequence 

src-lang 

src-ocr 

src-title-info 

src-url 

stanza

strikethrough

strong

style

stylesheet  )

sub

subtitle

sup

table

td

text-author

th

title

title-info

tr

translator

v

version 

year 

Часть III

Конвертирование книг из других форматов

Cлучаи, когда книга готовится в формате FictionBook изначально, (как вот этакнига, :) ) чрезвычайно редки. Обычно имеется готовый текст, который необходимо конвертировать в формат FictionBook.

Вообще, создание книги в формате FictionBook можно разделить на три этапа.

1) подготовка исходного текста;

2) конвертация текста в формат FictionBook;

3) вычитка, структурирование и окончательная доводка книги.

Первый этап включает набор текста или сканирование исходного документа с распознаванием. Или же выдирание текста из PDF, или, какого-нибудь экзотического формата, например, ExeBook. Также сюда входит первичная вычитка текста.

Второй этап — конвертация в формат FB2.

Третий этап — доводка книги. По моему скромному мнению, самый тонкий и важный этап.

Дело в том, существующие программные средства позволяют конвертировать документы txt, html, doc(rtf), что называется «одним кликом». Но, к сожалению, качественный FB2 таким образом создать совершенно невозможно. После конвертации такую книгу приходится загружать в редактор и доводить до ума вручную.

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

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

Подготовка исходного текста — это тема для отдельной книги, поэтому здесь углубляться в нее не будем. Предположим, что исходный текст у вас уже есть. О редактировании и доводке книги будет подробно рассказано несколько ниже. Сейчас же речь пойдет именно о конвертировании текстов.

§ 3.1 Требования к исходному тексту

Наиболее предпочтительными являются txt и RTF(DOC). Их, как будет сказано ниже, можно перенести в редактор книг, без каких-либо дополнительных программных средств.

HTML в этом отношении гораздо хуже. Они, как правило, содержат кучу лишней информации, которую приходится отсекать.

Если же книга представлена в PDF, вам придется потратить время, чтобы «выковырять» текст оттуда. Бывает, что это не так-то просто сделать, а бывает — вообще невозможно (например, если  в PDF собраны сканы страниц без распознавания).

Ну и очень желательно, чтобы текст был максимально качественный.

Автор этой книги сам убил массу времени, при чистке книги В. Вагина «Заяц, стань тигром». И только потом обнаружилось, что в Internet имеются гораздо более качественные тексты книги…

Поэтому, если вы берете текст из Сети, не поленитесь, поищите разные варианты и сравните их.

Для преобразования текстов в FB2 существуют несколько программных пакетов. Рассмотрим их по порядку.

§ 3.2 Any to FB2

Any to FB2 — «штатное» средство для конвертирования текстовых документов в формат FB2

Для нормальной работы программе требуются MSXML 4.0 и Windows Script Host  версии 5.6.

Если  MSXML можно скачать с сайта Micro$oft без каких-либо проблем, то при попытке загрузить Windows Script Host производится проверка на «подлинность», т.е. лицензионную чистоту вашей копии Windows.

Поэтому проще обновить Internet Explorer до версии 6.0 SP1. Windows Script Host 5.6 входит в его состав.

Посл установки щелкаем по иконке Any to FB2 GUI.

Интерфейс программы представляет собой окошко с несколькими закладками.

Самая первая строчка — путь ко входному файлу. По умолчанию там стоит «http://». Очевидно, программа может брать файлы на обработку прямо из Internet. Пусть вас это не смущает. Нажав кнопочку с многоточием, вы попадете в стандартное окно выбора файла.

Чуть ниже расположено выпадающее меню «Setting». Здесь можно выбрать профиль настроек. Изначально их там всего три: «Last used» (последние использованные) «Default» (по умолчанию) и «Headers+»

Внизу находятся кнопки:

« Import» — запуск обработки файла. После того, как файл будет успешно преобразован, на месте кнопки «Import» появится кнопочка «Done». Щелкнув по ней, можно сохранить конечный файл.

« Save settings…» — вызывает окошко управления профилями настроек («Manage export presets»). Можно сохранить текущие настройки. Вводим имя профиля в верхней строчке, например, «My priority» и жмем кнопочку «Save». Здеь же можно удалить ненужные профили, выделив их в списке и щелкнув по кнопочке «Delete…»

« Cancel» — выход из программы.

И кнопочка « ?» позволяет узнать номер версии программы. Никакого файла помощи или руководства, к сожалению, не предусмотрено…

Если установить галочку напротив расположенной в самом низу рабочего окна опции « Automatically close this window when finished», то сразу после обработки файла программа закроется.

Теперь рассмотрим закладки.

Первая закладка, « Document », содержит важнейшие настройки обработки файла.

« Text structure» призвана помочь программе разобраться с разбиением текста на абзацы. Предусмотрены три положния радиокнопки.

« Auto» — предоставляет программе решать этот вопрос самостоятельно.

« Indented» — в начале каждого абзаца есть отступ.

« EmptyLines» — после каждого абзаца идет пустая строка.

ВНИМАНИЕ, БАГ!

При преобразовании форматированных текстов, программа считает новым абзацем строку, начинающуюся со знака «тире», «-». вне зависимости, есть отступ перед ней или нет. К счастью, этот глюк можно легко обойти. Можно деформатировать текст по принципу, «одна строка — один абзац», до того, как скормить его конвертору, а можно сделать это и в самой программе, используя регулярные выражения пре-обработки.

Далее идут настройки, относящиеся непосредственно к  преобразованию файлов. Сразу скажу, что «ишкуштвенный интилект» программы, весьма и весьма слаб, поэтому большинство настроек приходится отключать.

« Preserve

» — оставлять содержимое, обрамленное тэгом form. Меню, голосования и т.д. Включать не стоит.

« Do not convert charset» — не менять кодовую таблицу файла.

« No epigraphs» — не распознавать эпиграфы. Даже эту нехитрую операцию программа делает не всегда корректно, поэтому ставим галочку.

« No

» — не ставить пустых строк. Обычно эту опцию включать не требуется.

« No description» — под «description» здесь понимается аннотация. Не делать аннотацию. Однозначно ставим галочку.

« Allow 1000 error fixes» — разрешить программе попытаться восстановить битый документ. Пожалуй, галочку ставить не надо.

« Do not convert "quotes" to «quotes»» — не конвертировать компьютерные кавычки в типографские. Эта операция нужная, и обычно программа отрабатывает ее без нареканий. Не ставим галочку.

« Do not convert [text] and {text} into footnotes» — не конвертировать текст в квадратных и фигурных скобках в сноски. Ставить или не ставить галочку — дело вкуса. Я лично предпочитаю делать сноски вручную.

« Do not convert _italic_ текст» — не конвертировать текст, обрамленный знаками подчеркивания в курсив. Ставим галочку. Не стоит разрешать программе делать это самой. Очень часто получается так называемый «рваный» курсив (С ло во) или, того хуже, курсивным становится только первое слово абзаца.

« Do not restore broken paragraphs» — не восстанавливат разорванные абзацы. Ставим галочку.

« Do not detect poems» — не выделять стихи. Ставим галочку однозначно. Программа определяет стихи исключитенльно по коротким строчкам и делает это крайне коряво.

« Only use marked with |^T^U headers» — выделять как заголовки исключительно абзацы выделенные тэгами

и (или) esс-последовательностями ^T^U. Ставим галочку, если текст скачан из библиотеки Максима Мошкова (Lib.ru).

« Ignore line indent (spaces at the line start)» — не считать пробелы в начале сроки признаком абзаца.

« Convert leading '-' to long dash '—' (dialogs)» — конвертировать компьютерный «минус» в начале строки в длинное тире. Ставим галочку, особенно, если конвертируем DOS-текст.

Вторая закладка — « Links », предназначена для настройки обработки html-файлов.

Первый блок — « Images», относится к картинкам, если таковые во входном файле имеются.

Опция « Remove ALL images from the document» убирает вообще все картинки.

« Remove off-site images» — убирает только те картинки, которые располагаются не на сайте, с которого был загружен конкретный html.

« Preserve dynamic images» — не удалять картинки с URL динамического вида, например, счетчики.

Блок « Linked documents»

« Remove external links» — просто убирает линки, ведущие за пределы документа.

Включение опции « Follow links» делает активными все последующие опции.

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

« Follow off-site links» — следовать по линкам, ведущим за пределы сайта.

Рядом находится уровень следования (level deep).

« Only follow matching the expression» — следовать только линкам, совпадающим с нижеуказанным выражением.

« Never follow matching the expression» — НЕ следовать линкам, совпадающим с нижеуказанным выражением.

Третья закладка — « RegEXP » — обработка текста с помощью регулярных выражений.

Подробнее о том, что такое регулярные выражения и как ими пользоваться, можно прочесть в приложении Д в конце книги.

« Header detection regular expression» — регулярные выражения, с помощью которых программа может распознавать заголовки.

« Regular expression to run on-load» — регулярные выражения, предназначенные для обработки исходного текста.

Окошко разделено на два столбца. Первый (+new search pattern) предназначен для выражения поиска. Второй (+new replace pattern) — для выражений замены.

Регулярных выражений может быть несколько.

Вот  как можно обойти вышеописанный баг с неправильным распознаванием новых абзацев.

в графе « +new search pattern» вводим:

\r\n(\S)

(перевод строки, новая строка, не-пробел).

А в графу « +new replace pattern» вводим:

 $1

Здесь не видно, но перед «$1» должен идти пробел.  То есть символы перевода строки и новой строки будут заменены на пробел. А само «$1» есть обращение к выражению в скобках в регэкспе поиска. Оно нужно, чтобы сохранить в неприкосновенности не-пробел, который идет сразу после символа новой строки.

« Regular expression to run on result document» — регулярные выражения, предназначенные для обработки выходного документа.

Устроено аналогично предыдущему.

И, последняя, четвертая вкладка — « Log » — не имеет никаких опций. Там отображается ход операции преобразования.

Программа умеет конвертировать файлы TXT, HTM, RTF, DOC. Для обработки последних она использует Micro$oft Word, для предварительного преобразования их в HTML.

С разбиением на секции программа справляется плохо. Требуется последующая правка в редакторе.

Резюме:

Неплохое средство для конвертирования файлов TXT и HTML.

Пользоваться программой имеет смысл, особенно, если книга конвертируется для того, чтобы «прочитать и удалить».

Для пакетного конвертирования файлов написана надстройка (front-end) Batch2FB.

§ 3.3 ExportXML

Программа представляет собой макрос M$ Word, предназначенный для преобразования в FB2 файлов DOC прямо из M$ Word. 

Макрос нормально запускается в M$ Word XP и 2003.

Установка макроса заключается в копировании файла ExportXML.dot в папку автоматически запускаемых макросов Word. Обычно это папка C:\Program Files\Microsoft Office\Office10\Startup\. (Здесь и далее для M$ Office 2003 вместо «Office10» будет «Office11»).

Затем нужно разрешить запуск макросов. Меню «Сервис\Параметры», закладка «Безопасность», кнопка «Защита от макросов». На закладке «Уровень безопасности» установите переключатель-радиокнопку в положение «Средняя. Решение о запуске потенциально опасных макросов принимается пользователем». Правда, теперь при каждом запуске Word будет выскакивать надоедливое сообщение, не нужно ли отключить макросы.

Поэтому лучше поступить по-другому. Оставить высокий уровень безопасности и запускать нужные макросы без всяких запросов.

Для этого макрос необходимо подписать.

Вначале нужно создать сертификат. Запускаем программку selfcert.exe из директории MS Office (C:\Program Files\Microsoft Office\Office10\). В поле «Ваше имя» вводим какое-нибудь слово и жмем OK. Все, сертификат создан. Правда, он не подтвержден Micro$oft, но нам этого и не требуется.

Теперь запускаем Word (макрос ExportXML.dot должен находиться в папке Startup). Запускаем редактор Visual Basic (Сервис\Макрос\Редактор Visual Basic). В окошке Project выбираем группу ExportXML.

Затем вызывем команду Tools\Digital Signature. В окошке «Цифровая подпись» жмем кнопку «Выбрать», выбираем сертификат и жмем «OK».

Закрываем редактор, выходим из Word. На запрос, надо ли сохранить изменения в документе ExportXML, отвечаем утвердительно.

При следующем запуске Word сообщит, что файл ExportXML.dot содержит макросы, подписанные автором [имя вашего сертификата]. Ставим галочку напротив «Всегда доверять макросам из данного источника» и жмем ставшую активной кнопку «Не отключать макросы».

Все! При последующих запусках Word будет прилежно запускать ExportXML, не докучая вам запросами.

В меню «Файл» появилось подменю «FictionBook2» содержащее два пункта: «Export as Fictionboок2 xml…» и «Edit Fictionbook2 properties…»

Последний пункт, как нетрудно догадаться, позволяет редактировать описание (description) будущего FB2-файла.

Кнопочки «+» и «-» внизу позволяют соответственно добавлять копии полей или удалять оные. Чтобы отредактировать поле выделите его и нажмите клавишу F2.