Вадим Кузнецов - Описание работы пакета OOoFBTools Создание книг FB2
4. Особенности работы с текстом
4.1. Работа с таблицами4.1.1. Виды таблиц
Существует два вида таблиц – простые и сложные. Простые – прямоугольная матрица Row x Col. Сложные – в ячейке могут быть вложены другие строки или таблицы.
Конвертер корректно экспортирует только простые таблицы. Экспортируются и сложные таблицы, но не все сложные таблицы экспортируются согласно их «геометрии». Сложные таблицы, где в ячейку вложена другая таблица – игнорируются (ввиду чрезвычайной сложности создания алгоритма…).
4.1.2. Название таблицы
При желании можно дать таблице название (сверху или снизу таблицы). Это название также будет экспортироваться, с учетом форматирования.
Делается это так.
На нужной таблице кликните правой клавишей мышки и выберите «Название».
В появившемся диалоге «Название» введите название таблицы и выберите позицию этого названия – сверху или снизу:
В результате получим следующее:
В названии имеется текстовое поле со сквозной нумерацией таблицы – оно тоже экспортируется.
4.1.3. Задание числа заголовков
Если наша таблица содержит заголовок, или несколько, то надо задать число строк, из которых он будет состоять, и включить опцию, сигнализирующую, что заголовок есть.
Для этого вызываем диалог «Оформление таблицы» через меню «Таблицы», нажав пункт меню «Свойства таблицы…». Либо через контекстное меню по клику правой клавиши мышки – пункт «Таблица»
На рисунке показано, что таблица имеет Заголовок из 2-х верхних строк.
Галочка “Повторять заголовок” стоять должна обязательно! Это можно сделать и по- другому, встав на таблицу, и выбрав пункт меню «Повторять заголовки столбцов» в меню
«Таблица». Только в этом случае можно будет определить, что в таблице действительно есть заголовки.
4.1.4. Важен порядок вставки таблиц в документ
В связи с особенностью алгоритма конвертера очень важно, в какой последовательности вставляются таблицы в документ. Если их вставлять не по-порядку, по ходу текста, то после конвертации таблицы могут быть перепутаны местами!
4.1.5. Выравнивание строк ячеек таблицы
Можно выравнивать строки в каждой ячейке по ширине, как вам угодно – конвертер автоматом выравнивает строки для каждой ячейки в результирующем файле. По высоте – пока задается в «Настройках» (пока), и применяется ко всем ячейкам одинаково.
Атрибуты align, valign для тегов tr, th, td таблицы сделаны «не обязательными». Т. е. в Настройках конвертера их можно отключить (выбрав из списков пустое значение). В этом случае эти атрибуты в fb2 файл заноситься не будут. Это же реализовано и для «пустых» ячеек таблицы (нет ни одного абзаца), даже при выбранном выравнивании строк в Настройках. Выравнивание по ширине в любом случае «считывается» со строк таблиц автоматически.
4.1.6. «Пустые» ячейки таблицы
Иногда требуется, чтобы в таблице были ячейки с «пустым» содержанием. Конвертер позволяет экспортировать и такие ячейки таблицы. После экспорта в fb2 документ на месте этой «пустой» ячейки будет ‹th/› (для «пустого» заголовка) или ‹td/› (для «пустой» ячейки).
4.1.7. Структура элементов таблицы
Таблица формата fb2 имеет следующую структуру:
4.1.7.1. Тэг table
В тэг table вложен тэг tr – «контейнер» для строк заголовков (тэг th) или данных (тэг td) всех столбцов ячеек таблицы. Тэг table может содержать от 1 до бесконечности обязательных тэгов tr. В свою очередь, тэг tr может содержать от 1 до бесконечности обязательных тэгов th или td.
Например, есть такая таблица:
В fb2 формате это выглядит так:
‹table›
‹tr›
‹th align="1еft"›Заголовок 1:1 ‹/th›
‹th›Заголовок 1:2‹/th›
‹th align="right"›Заголовок 1:3‹/th›
‹/tr›
‹tr›
‹td align="left"›2:l‹/td›
‹td align="right"›2:2‹/td›
‹td›
‹/tr›
‹/table›
4.1.7.2. Тэг th
Тэг th так же имеет «свои» атрибуты (см. схему ниже) и содержит «отформатированные» символьными (inline) стилями данные-заголовки ячейки таблицы.
Тэг th может содержать от 0 до бесконечности «отформатированых» символьными стилями заголовков ячеек таблицы. Т. е. Тэг th может быть «пустым», закрытым:
‹table›
‹tr›
‹th/›
‹th› ‹/th›
‹/tr›
‹/table›
А может и содержать заголовки ячеек:
‹table›
‹tr›
‹th align="left"›Заголовок l:l‹/th›
‹th align='' center"›Заголовок 1:2‹/th›
‹/tr›
‹/table›
Атрибуты align и valign служат для выравнивания заголовка по ширине и по высоте соответственно. Тэг имеет еще и другие атрибуты.
Схема тэга дана th ниже:
4.1.7.3. Тэг td
Тэг td так же имеет «свои» атрибуты (см. схему ниже) и содержит «отформатированные» символьными (inline) стилями данные-строки ячейки таблицы.
Тэг td может содержать от 0 до бесконечности «отформатированых» символьными стилями строк ячеек таблицы. Т. е. Тэг td может быть «пустым», закрытым:
‹table›
‹tr›
‹td/›
‹td› ‹/td›
‹/tr›
‹/table›
А может и содержать заголовки ячеек:
‹table›
‹tr›
‹td align=
‹td align=
‹/tr›
‹/table›
Атрибуты align и valign служат для выравнивания строки по ширине и по высоте соответственно. Тэг имеет еще и другие атрибуты.
Схема тэга td дана ниже:
4.1.8. Экспорт таблиц, ячейки которых могут содержать разное число абзацев
Формат FictionBook поддерживает и простые таблицы, по типу «прямоугольных» матриц, и некоторые сложные таблицы, где строки или столбцы могут быть разбиты. Простая таблица будет экспортирована «на ура» (число строк и колонок – не ограничено):
Более сложные таблицы тоже экспортируются:
Формат fb2 не поддерживает таблицы, вложенные в ячейки другой таблицы (что практически всегда можно увидеть на html файлах, скаченных с сайтов, форумов):
С другой стороны, согласно формату fb2 каждый тэг th и td может содержать только один абзац. Т. е. такая таблица:
«превратится» в fb2 формате в такую (абстрактно):
Т.е. все абзацы в ячейке «сливаются» в одну строку.
А таких таблиц можно встретить довольно часто (техническая, научная и др. литература). Как же сконвертировать ТАКИЕ «прямоугольные» таблицы в fb2 файл?
Конвертер позволяет это сделать за счет добавления так называемых «виртуальных» строк и ячеек. Т. е. все абзацы в ячейке (например 5 абзацев) становятся строками (5 строк).
Например, у нас есть такая таблица с несколькими абзацами в ячейках, а некоторые ячейки пустые:
Конвертер создаст fb2 код таблицы, которая выглядеть в читалках будет так:
Т.е., вместо 3 строк мы получили 8, разбив «многоабзацевые» ячейки. Это и есть так называемые «виртуальные» строки.
Чтобы все это «пощупать», сконвертируйте тестовый файл ExportToFB21_Test.odt и посмотрите результат (fb2 код в редакторе и «внешний вид» таблиц в читалке). Для Windows лучше всего (на сегодняшний день) отображает таблицы с выравниванием ячеек Cool Reader 2.66. Она корректно «отбивает» колонки таблиц. Выберите в ней в настройках скин default для того, чтобы увидеть границы ячеек.
4.1.8.1. Ячейки: экспорт абзацев как строк и экспорт абзацев как одну строку
Конвертер по умолчанию экспортирует многоабзацевые ячейки как абзацы. Но, иногда надо, чтобы абзацы определенной ячейки сконвертировались, как одна строка (слить их в один, разделив пробелом).
Например, есть таблица:
В 1-й ячейке два абзаца по сути дела выражают одно и тоже. После экспорта мы получим такую таблицу:
Эта таблица выглядит хорошо. Но вот если во втором столбце будет всего один абзац, то тогда после экспорта таблица будет выглядеть уже так:
Такая таблица уже «не очень»: Сразу непонятно, к чему относится «Совет» – напротив него – пустая ячейка. Было бы значительно лучше, если бы таблица выглядела так:
Как раз для этих целей в конвертере и предусмотрен режим экспорта всех нужной ячейки как слившиеся через пробел абзацы в одну строку. Для этого надо «заблокировать» нужную ячейку: клик правой клавишей мышки на нужной ячейке, выбираем Ячейка – › Защищено.