Создание электронных книг в формате FictionBook 2.1: практическое руководство (pre-release)
Добавить в закладки К обложке
- Предуведомление - Страница 1
- Предисловие - Страница 2
- Введение - Страница 3
- Часть IФормат FictionBook и его место в мире электронной литературы - Страница 4
- § 1.2 Многообразие форматов электронных книг - Страница 5
- § 1.3 Несколько слов о XML - Страница 9
- § 1.4 Формат FictionBook — стандарт де-факто для электронных книг - Страница 10
- Часть IIПодробное описание формата FictionBook - Страница 13
- § 2.2 Пример книги в формате FictionBook - Страница 14
- § 2.3 Элементы описания книги.Базовые структурные элементы - Страница 16
- § 2.4 Элементы описания книги (description). Элементы первого уровня - Страница 18
- § 2.5 Элементы описания книги (description). Элементы второго уровня - Страница 20
- § 2.6 Элементы описания книги (description). Элементы третьего уровня (информация об авторе) - Страница 24
- § 2.7 Элементы тела книги (body). - Страница 25
- § 2.8 Элементы раздела книги (section).Элементы первого уровня. - Страница 26
- § 2.9 Элементы раздела книги (section).Элементы второго уровня. - Страница 28
- § 2.10 Элементы таблиц - Страница 29
- § 2.11 Элементы абзаца (стилевые, они же inline элементы) - Страница 30
- § 2.12 Элементы для платных книг - Страница 33
- § 2.13 Спецсимволы - Страница 34
- § 2.14 Список атрибутов элементов - Страница 35
- § 2.15 Алфавитный список всех элементов FictionBook 2.1 - Страница 37
- Часть IIIКонвертирование книг из других форматов - Страница 38
- § 3.1 Требования к исходному тексту - Страница 39
- § 3.2 Any to FB2 - Страница 40
- § 3.3 ExportXML - Страница 43
- § 3.4 doc2fb - Страница 44
- § 3.5 Перенос через буфер обмена - Страница 45
- § 3.6 Конвертор ExportToFB21 для Open Office - Страница 46
- § 3.7 Написание собственного конвертора - Страница 47
- Часть IVРедактирование книг. FB Editor - Страница 51
- § 4.1 Установка программы - Страница 52
- § 4.2 Описание функций и основные приемы работы - Страница 53
- § 4.3 Заполнение заголовка книги - Страница 55
- § 4.4 Структурирование документа - Страница 58
- § 4.5 Использование регулярных выражений - Страница 63
- § 4.6 Использование скриптов - Страница 64
- § 4.7 Баги с нами! - Страница 65
- § 4.8 Дальнейшее развитие редактора - Страница 66
- § 4.9 Альтернативные средства редактирования - Страница 67
- Часть VПрочие вопросы создания книг в формате FictionBook - Страница 69
- § 5.2 Подготовка картинок - Страница 71
- § 5.3 Обложки - Страница 73
- § 5.4 Сборник или по отдельности? - Страница 75
- § 5.5 Советы по вычитке книг - Страница 76
- § 5.6 Символы, которых нет на клавиатуре - Страница 78
- § 5.7 Высокое искусство аннотации - Страница 79
- § 5.8 Проблемы распространения - Страница 80
- Часть VIПросмотр и конвертирование книг в формате FictionBook - Страница 82
- § 6.1 Читалки - Страница 83
- § 6.2 Пакет FB2Any - Страница 85
- § 6.3 FB2GrWolf - Страница 87
- § 6.4 FB2PDF - Страница 88
- Часть VIIПрочее программное обеспечение для работы с FictionBook - Страница 90
- § 7.2 Утилита Booki - Страница 94
- § 7.3 Программа-библиотекарь JEFLibrarian - Страница 95
- § 7.4 Программа-библиотекарь MyHomeLib - Страница 96
- § 7.5 FB2Fix - Страница 97
- Заключение.Копирайт и доступность - Страница 101
- Благодарности - Страница 107
- Обратная связь - Страница 108
- Приложения - Страница 109
- Приложение БТехническое задание на написание читалки (ридера) - Страница 110
- Приложение ВСписок жанров FictionBook - Страница 111
- Приложение ГСписок возможных языков - Страница 113
- Приложение ДРегулярные выражения - Страница 114
- Приложение EОписание Base64 - Страница 117
- Приложение ЖОписание стандарта ISBN - Страница 118
- Приложение ЗПопытка анализа влияния «пиратов» на тиражи книг - Страница 120
- Приложение ИКопирайт и новая война луддитов - Страница 121
§ 3.7 Написание собственного конвертора
Все перечисленные выше способы хороши лишь для так называемых среднестатических входных файлов. Когда попадается нечто нестандартное, остается только, сцепив зубы, долго и нудно склеивать файлы, вылавливать куски текста, редактировать погрешности, и т.д. и т.п.
Решить эти проблемы может собственноручное написание конвертора. Помимо возможности тонкой настройки софта под конкретную задачу, этот метод имеет еще одну положительную сторону: претензии по поводу кривизны решений предъявлять просто некому. Кроме как самому себе…
Для написания конвертора наиболее подходящи скриптовые языки программирования, заточенные для работы с текстом и поддерживающие регулярные выражения. TCL, Java, Perl, Python… Лично я остановил свой выбор на самом молодом и многобещающем из них. Имеется в виду язык программирования Ruby.
Ruby был создан в середине 90-х японским программистом Юкихиро Мацумото. Это многогранный, элегантный и в то же время очень простой для изучения язык. Он вобрал все лучшее, что было у его предшественников: мощь регулярных выражений Perl, объектно-ориентированное программирование Java и Python, помноженные на феноменальные изящество и функциональность.
Установка RubyСкачать транслятор Ruby можно с официального сайта проекта www.ruby-lang.org.
Вариант Ruby для Win32 представлен в двух вариантах. Обычный инсталлятор (rubyxxx-xx.exe)и zip-архив — ruby-xxx-pxxx-i386-mswin32.zip, где xxx — номера версий и обновления. На момент написания этого текста была доступна стабильная версия 1.8.6.
Для наших целей вполне подойдет второй вариант — zip-архив.
Только нужно будет папку, где находится запускной файл интерпретатора добавить в список папок, доступных по умолчанию. Для этого щелкаем правой кнопкой мыши по иконке «My computer», на панели «Advanced» жмем кнопку «Environment Variables». В списке «System variables» находим переменную Path и щелкаем по кнопке «Edit». В открывшемся окошке в поле «Variable Value» через «;» без пробела добавляем путь к нужной папке. Например C:\TOOLS\RUBY\bin.
В принципе, для работы скрипта жизненно необходимы лишь два файла: exe-шник транслятора (ruby.exe) и служебная dll-ка (msvcrt-ruby18.dll). Поэтому, если не требуется использование библиотек, то можно просто забросить эти два файла в папку Windows, или любую другую, доступную по переменной Path. В крайнем случае, можно просто поместить их в ту же папку, где находятся скрипты.
Разумеется, описывать программирование на языке Ruby прямо здесь нет ни необходимости, ни возможности. Это тема для отдельной книги, которуя, с Божьей помощью, я, возможно, напишу. А здесь ограничимся комментариями в самих скриптах.
Если же вы не знаете, где взять документацию по Ruby, то вам прямая дорога на сайт www.flazx.com, где, среди множества другой ценной литературы, можно найти и исчерпывающую подборку книг по Ruby. Правда, англоязычных, но зато много и бесплатно. Из русскоязычных изданий могу посоветовать книгу М. Фицджеральда «Изучаем Ruby» (на момент написания книги была доступна только на бумаге), а также труд П. Фултона «Программирование на языке Ruby» (доступен в Сети).
Пример первый.Конвертирование форматированного dos-текстаДанный скрипт размещается исключительно как классический пример. Так сказать для затравки.
Скрипт выполняет простейшее преобразование текста, вмешательство в структуру будущей fb2-книги сведено практически к нулю. Но его ничего не стоит доработать. Например, чтобы он выделял главы, подзаголовки, при этом структурируя будущий файл. Вообще, средствами Ruby можно организовать такую интеллектуальную обработку текста, которая оставит Any2FB2 далеко позади.
# Скрипт для конвертации форматированного текста DOS-866 в FB2
# (C) Юзич, апрель 2008 г.
#
# запускать из директории, где находится входной файл
# запуск: ruby dtxt_fb2.rb <input.txt>
#
# массив для перекодировки текста. Псевдографика заменяется на код 135,
# символы, отсутствующие в кодировке win-1251 - на код 138
doswin = [192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122