Вадим Кузнецов - Описание работы пакета OOoFBTools Создание книг FB2
1. В некоторых частях текста есть «подпись» его авторов, но это не цитаты (например, Предисловие, а в его конце – ФИО его автора). Как мне экспортировать это ФИО не просто как текст (тэг ‹p›), а как Автора (тэг
‹text-author›)?
Это сделать довольно просто.
Например, в книге есть Предисловие, размеченное стилем Level N:
После экспорта получаем:
‹section›
‹title›
‹p›‹strong›Пpeдиcлoвиe‹/strong›‹/p›
‹/title›
‹р›Что-то там написано…‹/p›
‹р›Еще что-то написано…‹/p›
‹р›Иванов Иван Иванович‹/р›
‹/section›
Т.е. Иванов Иван Иванович экспортировался просто, как текст.
Вариант 1 (метод уже устарел, но работает)
Чтобы «его» экспортировать, как Автора Предисловия, не экспортируя при этом само Предисловие, как Цитату, нужно перед Автором вставить пустой абзац, придав ему стиль Cite, а Автору – стиль Cite Author. Тогда после экспорта получим:
‹section›
‹title›
‹p›‹strong›Пpeдиcлoвиe‹/strong›‹/p›
‹/title›
‹р›Что-то там написано…‹/p›
‹р›Еще что-то написано…‹/p›
‹cite›
‹empty-line/›
‹text-author›Ивaнов Иван Ивaнович‹/text-author›
‹/cite›
‹/section›
Что и требовалось.
Если не вводить пустой абзац стиля Cite, то конвертер не воспримет стиль Cite Author Автора Предисловия, как Cite Author, и экспортирует его просто как текст (и правильно сделает, иначе fb2-файл получился бы невалидным).
Этот прием можно применять в любых случаях, когда надо экспортировать Автора текста, как Автора, но сам текст – просто, как текст.
Вариант 2 (доработка конвертера)
Конвертер доработан так, чтобы экспортировать Автора Цитаты после текста без введения пустого абзаца стиля Cite Author между самим текстом и Автором Цитаты. Просто отформатируйте Автора Цитаты после текста стилем Cite Author. После экспорта получим примерно следующее:
‹section›
‹title›
‹р›‹strong›Предисловие‹/strong›‹/р›
‹/title›
‹р›Что-то там написано…‹/p›
‹р›Еще что-то написано…‹/р›
‹cite›‹text-author›Иванов Иван Иванович‹/text-author›
‹/cite›
‹/section›
Валидация1. После экспорта fb2-файл получается не валидным – не соответствует схеме.
Программы-библиотекари и некоторые Internet-библиотеки его не принимают из-за ошибок в файле
Тут может быть несколько вариантов:
1. Элементы книги (стихи, эпиграфы, заголовки) должны быть отформатированы определенными стилями. При этом их расположение в книге должно четко соответствовать схеме FictionBook.xsd. Если это так, то результирующий fb2-файл получается валидным.
В zip-архиве пакета OOoFBTools есть папка scheme, которая содержит документацию по схеме FictionBook2.1. Она очень наглядна и показывает, какой элемент структуры где должен располагаться для того, чтобы fb2-файл был без ошибок, валидным. Пользуйтесь этой документацией, когда форматируете стилями текст книги!
Совет: внимательно изучите все вышеприведенные пункты справки.
2. Часто в тексте встречаются символы ‹, ›, и amp;, которые в таком виде в fb2-файле «считаются» ошибкой. В Настройках Конвертера предусмотрена опция «Обработка проблемных символов» (включена по-умолчанию). Проверьте, не выключили ли Вы ее?
3. Какая-то скрытая ошибка в конвертере, о какой пока еще не знает разработчик. В этом случае, пожалуйста, вышлите мне Ваш размеченный стилями текстовый файл, который Вы пытаетесь экспортировать в fb2-формат мне на e-mail #mailto: [email protected]
Вылет ошибки при конвертировании1. При экспорте некоторых документов у меня вылетает сообщение об ошибке и экспорт прерывается
А. Чаще всего это происходит на документах, весь текст которых или большая его часть отформатированы одним стилем. Например, сборник стихов – весь текст отформатирован, как Поэма (Poem).
Дело в том, что Анализатор извлекает данные из документа по определенному стилю и аккумулирует их в виде строк. Это сделано для эффективности работы парсера и последующего этапа – Создание файла. Длина строки не должна превышать 64K. В документах, где весь текст или большая его часть отформатированы одним стилем, как правило, размер этого текста превышает 64K. В результате происходит переполнение и выдается ошибка.
Я не стал разбивать считывание строк на блоки меньше 64K, т. к. это не только усложнило бы написание Анализатора, но и очень существенно увеличило бы время экспорта (2 часа вместо 5 минут.)
Поэтому, чтобы избежать такой проблемы нужно делать следующее:
1). Понимать, что делаете. Не нужно форматировать весть текст одним стилем. Если вы создаете сборник стихов, то там, как правило есть авторы отдельных стихов. Выделите их стилем Poem Author. Это значительно уменьшит размер блоков текста под структуру (в данном случае – под Poem).
2). Если все же действительно нужно, чтобы весь текст был одного стиля (например – цитата (Cite)), то хотя бы в нескольких местах поставьте пустой абзац без какого-либо стиля.
Б. Сообщения об ошибке могут появляться и по другим причинам (все не предусмотришь). В таком случае, пожалуйста, вышлите мне ваш. odt-файл по email (он указан в О программе пакета).
Вычитка1
В названия служебных закладок входит Ник автора пакета OooFBTools. Это сделано не из-за тщеславия автора,-) а для того, чтобы максимально исключить вероятность наличия в обрабатываемом документе одноименных закладок.