ModernLib.Net

FictionBook 2.1: (beta 4)

ModernLib.Net / / FictionBook 2.1: (beta 4) - (. 8)
:
:

 

 


Функции поиска и замены в FB Editor предусматривают использование регулярных выражений (Regular Expressions, RegExp).

Регулярные выражения представляют собой квазиязык, объединяющий набор шаблонов и подстановок, используемых при поиске и замене фрагментов текста. Это очень мощный инструмент, кардинально облегчающий обработку текстовых документов.

Синтаксис регулярных выражений в FB Editor заимствован из языка Perl.

В приложении к книге дано краткое описание синтаксиса регулярных выражений, использующихся в FB Editor. Однако, настоятельно рекомендую этим не ограничиваться, а прочитать хороший учебник по языку Perl. А еще есть замечательная книга Дж. Фридла: «Регулярные выражения». Хорошенько поискав, ее можно найти в Сети ;)).

Рассмотрим использование регулярных выражений на примере достаточно сложной, но часто встречающейся задачи — замены компьютерных кавычек «""» на типографские „«»“.

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

Обычным способом придется вызывать команду поиска\замены не менее десяти раз, рискуя что-то забыть или перепутать. Регулярные выражения позволяют произвести все замены за четыре захода.

Для начала примем за аксиому, что кавычка, расположенная в самом начале абзаца — открывающая, а в самом конце — закрывающая.

Вызываем команду Edit\Replace.

В поле поиска «Find what:» вводим конструкцию для поиска:

^"

В поле замены «Replace with:» вводим конструкцию замены. В этом случае она совсем простая:

«

Не забыв установить флажок «Regular expression», нажимаем кнопку«Replace All».

Аналогично, для кавычки в конце абзаца конструкции поиска и замены будут:

"$

и

»

Выражения «^» и «$» называются литераламии обозначают начало и конец строки соответственно. В конструкции замены они не нужны.

Теперь обработаем оставшиеся кавычки.

Начнем с открывающей кавычки. Перед ними обычно идет пробел. Ну, иногда еще дефис или скобка.

Конструкция для поиска будет такая:

([\s\(-])"

Конструкция замены:

$1«

В квадратных скобках мы перечислили символы, один изкоторых может идти перед искомой кавычкой. Литерал «\s» обозначает пробельный символ. Символ «скобка» является зарезервированным, так как используется в самих конструкциях регулярных выражений, поэтому, чтобы искать его в тексте, мы отделили его косой чертой. Заключив все это в круглые скобки, мы образовали выражение, к которому будем обращаться из строки замены. И в конце непосредственно сама искомая кавычка.

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

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

Конструкция поиска:

(\S)"([\s\!\.\)-…,?:;])

Конструкция замены:

$1»$2

Здесь используется два выражения. Первое означает, что перед закрывающей кавычкой должен идти НЕ пробел. Второе выражение содержит перечисление символов, которые могут идти после нее. Соответственно, в конструкции замены идет обращение к двум выражениям.

Напоследлк должен заострить ваше внимание, что в режиме исходника FB Editor регулярные выражения функционирует несколько по-другому. В частности, не получается использовать метасимвол «|», некорректно обрабатываются перечни, содержащие кириллицу.

§ 4.6 Использование скриптов 

Автор FB Editor предусмотрел расширение его возможностей при помощи Java Script.

Вызываются они из меню Tools\Scripts\[скрипт].

Первые девять скриптов можно вызывать клавишами Ctrl+1…9.

Документации, разумеется, не предусмотрено никакой. Во всем придется разбираться самостоятельно.

Поэтому, перед тем, как заняться написанием скриптов, необходимо проштудировать хороший справочник по функциям JavaScript с примерами.

Очень подробный справочник входит в состав MSDN Library. Много полезной информации можно найти также на W3SCHOOLS.

Из бумажных изданий могу посоветовать «JavaScript и DHTML: сборник рецептов» Дэнни Гудмана (доступна в Сети) и «Полный справочник по JavaScript» Фрица Шнайдера. Обе эти книги издавались на русском языке.

В газетной публикации я приводил два простеньких скрипта собственного изготовления.

Здесь такой необходимости нет. Как пример, рекомендую посмотреть скрипты, написанные для FB Writer, моим земляком, известном на форуме FictionBook.org под ником Sclex.

Правда, тут есть одно маленькое, но очень вредное «но». Механически перенести наработки Sclex-а под FBE 1.0 не получится. Они жестко заточены под FB Writer и совместимый с ним FB Editor 2.0.

§ 4.7 Баги с нами!

Хотя FB Editor — довольно надежная и функциональная программа, он все-таки содержит несколько неприятных ошибок.

Вот, к примеру, символ по внешнему виду похожий на тире «—» (десятичный код 173) в режиме WYSIWYG не виден. Вернее виден, только если приходится на конец строки. Приходится переключаться в режим Source и вылавливать эти символы-паразиты.

Бывает так, что при попытке сохранить книгу выскакивает окошко со следующим сообщением:

Code: 8004005 [Unspecified error]

Source: msxml4.dll

Description: Unexpected NameSpace parameter

Это, скорее всего, где-то образовалась ошибочная конструкция наподобие section/EM/cite/EM.

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

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

Также небезопасно превращать абзац в subtitle и тут же отменять это действие. Есть риск, что программа «захлопнется». Разумеется, ничего при этом не сохранив.

При редактировании, если рядом оказыывается два и более подряд идущих пробелов FB Editor автоматически конвертирует второй и последующие пробелы в неразрывные. Вообще-то это никакой не баг, а особенность, связанная с тем, что FB Editor использует DHTML, но все равно очень раздражает.

§ 4.8 Дальнейшее развитие редактора

C начала 2007 года вокруг FB Editor наблюдается весьма активное шевеление. Не совсем, откровенно говоря, здоровое.

За модернизацию FB Editor взялись сразу два человека.

Автор, известный на форуме Fictionbook.org, как Pilgrim, доработал FB Editor, так, чтобы он поддерживал все новшества FictionBook 2.1. К сожалению, энтузиазма у него хватило ненадолго.

Алексей Савельев (Alex Saveliev), выпустивший свой продукт под названием FB Writer, напротив, сделал упор на функциональность программы. Обеспечена совместимость с IE 7.0, исправлено несколько особенно вредных ошибок, доработан интерфейс, появилось много новых «фич». Особого внимания и, чего кривить душой, восхищения, заслуживают написанные под FB Writer скрипты, значительно облегчающие и ускоряющие подготовку книги. Начиная с версии 2.0 была реализована даже проверка правописания.

Все было бы хорошо, но Алекс потребовал за свою работу деньги. Мало того, последние версии редактора требуют для запуска подключение к Internet, что автоматически вычеркнуло эту софтину из списка программ, которые я использую.

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

К счастью, еще до этого грустного финала совершенствованием FB Editor-а занялся программист компании «ЛитРес». За основу были взяты исходники Pilgrim-a. На данный момент этот продукт является, хотя и весьма сырой, но самой многообещающей разработкой в этой области.

Часть V

Прочие вопросы создания книг в формате FictionBook

§ 5.1 Советы по оформлению книг

Совет номер один. Не стоит стремиться воспроизвести все полиграфические изыски печатного оригинала.

В понятие «изыски» входит, например, выделение заголовков жирным или курсивным шрифтом, отбитие фрагментов текста пустыми строками и т.д.

Но некоторые правила оформления бумажных книг полезны и даже обязательны для книг электронных.

Это касается, в частности, использования специальных символов.

Символ «тире» или «минус», который имеется на клавиатуре, вовсе не «тире», а дефис.

Для обозначения «тире» используется символ «длинное (оно же типографское) тире» (десятичный код 151). Как набирать символы через десятичные коды см.«§ 5.6 Символы, которых нет на клавиатуре».

Короткое тире — «–» (десятичный код 150) используется между числами, например: «1941 – 1945 г.» или в качестве математического минуса.

Кавычки также должны быть типографские, «елочкой» — „«»“. Возможно также использование кавычек «лапками», — «„“», особенно, если это кавычки вложенные. При загрузке книги в библиотеку Альдебарана управляющий скрипт автоматически заменяет вложенные кавычки «елочки» на «лапки». Использование компьютерных кавычек «""», а также английских (верхних) кавычек «“”» в русскоязычных книгах недопустимо.

Если понадобилось сделать р а з р я д к у, делайте ее с помощью неразрывных пробелов (дес. код 160). Но, вообще-то, злоупотреблять разрядкой не следует.

Об использовании неразрывных пробелов. В FB2 ими отделяются: а) длинное тире в начале прямой речи от идущего следом слова; б) длинное тире в тексте от идущего впереди слова или знака препинания. Еще неразрывным пробелом можно «связать» идущий в начале предложения однобуквенный предлог со следующим словом.

Списки можно организовать, ставя в начале каждого абзаца символ «bullet» — «•», или «звездочку» — «*». Первый и последний абзац списка можно отделить от основного текста пустыми строками. Еще можно офомить список элементом cite.

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

В некоторых произведениях после названия главы идет краткое ее содержание (пример: «Робинзон Крузо» Д. Дефо; «Путешествия Гулливера» Дж. Cвифта, почти все произведения Янки Мавра, и т.д.) На данный момент, для выделения таких описаний наиболее разумно использовать элемент cite. Возможно дополнительное выделение курсивом. В будущем для этого был бы хорош специальный элемент.

Надписи.

Дмитрий Грибов настоятельно рекомендует оформлять их элементом cite.

Были идеи оформлять надписи, как таблицы. Однако они были отвергнуты, поелику такое нестандартное использование таблиц является хаком.

Последнее решение таково:

Надписи оформляются элементом cite.

Надписи, требующие центровки, оформляются элементом subtitle, помещенным ВНУТРЬ элемента cite.

Правда, FB Editor не позволяет сделать это так просто. Команда Edit\Style\Subtitleвнутри элемента cite неактивна.

Поэтому поступаем следующим образом. Аккуратно перемещаем текст в буфер ( Edit\Cut), вставляем его в произвольном месте ВНЕ элемента cite, трансформируем в subtitle, выделяем subtitleЦЕЛИКОМ, вновь перемещаем в буфер обмена и вставляем в элемент cite.

Особо вычурные надписи допускается оформлять картинкой. Например, это полностью касается рисованных надписей из трилогии Кира Булычева «Заповедник сказок».

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

Поэтому здесь можно рекомендовать только индивидуальный подход. Где-то уместно сделать таблицу просто строчками текста. Где-то — нарисовать картинкой и вставить в текст.

== ЭТО ИНТЕРЕСНО=================

Трансформировать таблицу, созданную, к примеру, в Excel, в растровую картинку, проще простого. Аккуратно выделяем таблицу и копируем в буфер обмена. Затем вставляем ее, в программу редактирования растровых картинок. В тот же MS Paint, хотя бы. И сохраняем как картинку.

===============================

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

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

И последнее. Не стесняйтесь задавать вопросы. На форуме сайта формата ( http://www.fictionbook.org/forum) вам охотно помогут. Главное, чтобы ваши вопросы не были откровенно дилетантскими…

§ 5.2 Подготовка картинок

Перед тем, как добавить в книгу картинки, следует хорошенько подумать.

Дело в том, что картинки очень сильно «утяжеляют» файл. Дополнительные килобайты объема складываются в мегабайты, мегабайты в гигабайты. Траффика. А траффик стоит денег. Если Вам не жалко денег пользователей, задумайтесь над тем, что чрезмерный траффик не приветствуется хостерами, тем более, если у вас платный хостинг. Да и в онлайн-библиотеку возьмут не всякий «объемный» файл.

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

К таким относятся, например, иллюстрации художника Е. Мигунова к произведениям Кира Булычева.

А вот выложенная в начале 2008 года на «Альдебаране» «Хижина дяди Тома» могла прекрасно обойтись без иллюстраций. Учитывая качество их сканирования и масштабирования.

И главный критерий при подготовке картинки для книги — минимизация объема.

Первый  способ снизить размер файла заключается в грамотном выборе формата файла картинки.

Несмотря, на то, что FB Editor поддерживает вставку картинок в формате BMP и даже TIFF, при выборе формата картинки следует знать, что читалки пока поддерживают только два формата — JPEG и PNG.

JPEG характеризуется исключительным коэффициентом сжатия. Естественно, за счет понижения качества карттинки.

Разработанный «в пику» платному формату GIF, PNG использует методы сжатия, не изменяющие исходного изображения.

Эти особенности и определяют выбор формата для конкретного изображения.

Для полноцветных картинок — как правило, это фотографии или полутоновые картинки — обычно используется JPEG. Картинки же, имеющие большие площади одинакового цвета — штриховые рисунки и диаграммы, к примеру, лучше сжимать в PNG.

Например, картинка-скриншот 800x600 в формате JPEG занимает 70–80 kB, а в формате PNG (64 цвета) — 38–45 kB. Разница налицо.

И, наоборот, полноцветная картинка обложки (320 x 200) в формате PNG «весит» 134 kB, а в формате JPG — 34 kB, при практически одинаковом качестве. Разница — 100 kB. Несжимаемых100 kB, заметьте. При упаковке книги в архив, эти 100 kB добавятся к его размеру.

При большом количестве иллюстраций, перед тем, как присоединять картинки к книге, имеет смысл обработать их программой, убирающей из JPEG служебную информацию. Например, PureJPG. Картинки PNG можно просто перепаковать.

== ВАЖНО!=======================

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

К примеру, грандиозная работа по сканированию и компоновке картинок, проделанная человеком, готовившим книгу Э. Скобелева «Необыкновенные приключения Арбузика и Бебешки» пошла коту под хвост, так как из-за оставшейся в файлах PNG служебной информации программы Adobe ImageReady картинки не может отобразить ни одна читалка,  за исключением FBReader…

===============================

Уменьшить объем файла PNG можно, в первую очередь, уменьшая размер картинки в пикселах.

До каких размеров? Как можно, меньше, но чтобы при этом ясно можно было понять, что изображено на рисунке.

Год-два назад я бы уверенно заявил: «Не более 320 x 240».

Сейчас же все большее распространение получают КПК и коммуникаторы с полным VGA–экраном. (640 x 480).

И тем не менее, в подавляющем большинстве случаев 320 x 240 более чем достаточно. Поверьте на слово.

После того, как Вы уменьшили картинку, она станет несколько смазанной. Устранить это можно, обработав ее фильтром Sharpen (увеличение резкости).

Кроме того, можно уменьшать количество цветов. Обычно для скриншота программы хватает 32–64 цветов, для графика или диаграммы — и 16 более чем достаточно.

При этом следует, по возможности, избегать чисто двуцветных черно-белых (black&white) картинок. Проблема в том, что они гораздо хуже масштабируются, давая неаппетитный «мусор».

Если картинка — штриховой рисунок, то фон имеет смысл сделать прозрачным. Ведь фон в читалке совсем не обязательно будет белым. Он может быть и цветным и текстурным. В таком случае вокруг рисунка появятся некрасивые белые поля.


  • :
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14