FictionBook Editor V 2.66 Руководство, стр. 9

Что делает скрипт.

1. Добавляет body примечаний, если его нет.

2. Добавляет заголовок body примечаний, если его нет. Если есть – оставляет без изменений.

3. Изменяет ID секций примечаний.

4. Изменяет заголовки секций примечаний.

5. Меняет адреса как сносок, так и простых ссылок, которые указывают на секции примечаний.

6. Меняет текст сносок (у простых ссылок остается как было).

7. Добавляет новую секцию примечаний.

8. Добавляет новую сноску с правильными адресом и текстом.

Как использовать скрипт? Нужно стать на позицию в тексте, где должна появиться ссылка на примечание, и запустить скрипт. Остальное делается автоматически.

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

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

Секции примечаний нумеруются с единицы для первой секции.

Заголовки в секции примечаний добавляются независимо от исходного их наличия/отсутствия.

Ограничения. Скрипт не понимает вложенные (более одного уровня вложения) секции в боди примечаний. В случае, если встречаются секции второго или более уровня вложения, скрипт выдаст предупреждающее сообщение и прервет свою работу.

Настройки. В начале файла скрипта расположены определения констант, которые задают шаблоны для называния заголовков, для текста ссылок и пр. Соответственно при необходимости их можно поменять. Макрос %N задает номер секции примечания, остальное трактуется как просто текст.

В данный набор скриптов входят следующие подверсии:

1. Добавление сноски;

2. Обработка сносок;

3. Добавление сноски со вводом;

4. Добавление сноски с переходом;

5. Добавление последней сноски;

6. Добавление последней сноски со вводом;

7. Добавление последней сноски с переходом;

8. Унификация комментария;

9. Унификация комментариев;

10. Добавление комментария со вводом;

11. Добавление комментария с переходом;

12. Добавление последнего комментария;

13. Добавление последнего комментария со вводом;

14. Добавление последнего комментария с переходом;

15. Унификация сносок (с удалением неиспользуемых секций сносок);

16. Унификация комментариев (с удалением неиспользуемых секций комментариев);

Видно, что есть скрипты, которые работают с так называемыми «сносками», а есть которые с «комментариями». Что тут имеется в виду? А имеется тут в виду то, что можно работать одновременно с двумя потоками сносок, различающихся вот чем. Во-первых, «сноски» располагаются в ‹body name=«notes»›, а «комментарии» – в ‹body name=«comments»›. Во-вторых, текст ссылок-«комментариев» скрипт выделяет тегом ‹sup›, чего не происходит со «сносками». Это нужно для того, чтобы «комментарии» в тех читалках, где нет специальной их поддержки, отображались как верхний индекс. Третье – по умолчанию ссылка «сноски» имеет такой вид: [1], в то время как ссылки «комментариев» оформляются следующим образом: {1}. То есть для «комментариев» используются фигурные скобки, а не квадратные, таким образом можно зрительно различать тип сноски при чтении книги. Четвертое различие состоит в том, что по умолчанию id секций «сносок» имеют вид i_1, а «комментариев» – c_1. Соответственно этому различаются и адреса ссылок.

Скрипты 1 и 8 («Добавление сноски» и «Добавление комментария») добавляют простую сноску или комментарий, и больше ничего не делают – курсор оказывается в позиции сразу за добавленной ссылкой сноски.

Скрипты 2 и 9 («Обработка сносок/комментариев») отличаются тем, что не производят добавление сноски или комментария, но при этом производят перенумерацию и всяческую обработку уже имеющихся сносок/комментариев.

Скрипты 3, 6, 10 и 13 («…со вводом») позволяют после генерации пустой сноски в соответствующем боди ввести ее текст в появившемся окошке. Можно использовать различные теги, как fb2- (‹emphasis›, ‹strong› и пр.) так и теги html (‹b›, ‹i› и пр.). html-теги тоже будут преобразованы в fb2-теги, но их может быть удобнее использовать вследствие краткости, и, следовательно, большей быстроты их набора на клавиатуре. После того, как текст будет введен в окошке и сноска создана, курсор окажется в позиции сразу за свежесозданной ссылкой сноски.

Скрипты 4, 7, 11 и 14 («…с переходом») работают так, что совершаются все перенумерации, создается сноска с пустым телом, а потом в начало этого тела сноски (но после заголовка) перемещается курсор. Бывает удобно вставить текст сноски в буфер обмена, потом запустить скрипт «…с переходом» и сделать paste из буфера.

Скрипты 6, 7, 13 и 14 («Добавление *последней* сноски/комментария…») позволяют добавлять сноску только ниже по документу, чем расположена последняя сноска из уже имеющихся. Данные скрипты не производят перенумерацию ссылок и секций (т. к. при добавлении *последней* сноски в этом нет нужды), за счет чего происходит ускорение работы скрипта. Детали работы этого скрипта, я, честно говоря, сам восстанавливаю в памяти не без труда, если еще чего вспомню, то напишу.

Скрипты 15 и 16 («Унификация… с удалением неиспользуемых секций…») производят унификацию сносок либо комментариев, при этом секции сносок или комментариев, на которые нет ссылок, удаляются.

Примечания и комментарии из скобок v2.2

Бывает так, что в книге примечания сделаны прямо посреди основного текста книги, а не вынесены в отдельные секции в ‹body name=«notes»›. В таком случае может быть удобней не переносить примечания в ‹body name=«notes»› по одному, а пометить начало и конец каждого примечания (посреди текста книги) последовательностью определенных символов (такая последовательность в рамках письменного и устного общения насчет данного скрипта условно называется «скобкой»), а потом сгенерировать все (корректно оформленные) сноски сразу. Именно для такого случая и сделан данный набор скриптов.

В архиве имеются следующие скрипты:

1. Примечания из [];

2. Примечания из {};

3. Примечания из [!!];

4. Примечания из [~ ~];

5. Примечания из скобок, заданных регэкспами;

6. Примечания из скобок, заданных простым текстом;

7. Комментарии из [];

8. Комментарии из {};

9. Комментарии из [!!];

10. Комментарии из [~ ~]

11. Комментарии из скобок, заданных регэкспами;

12. Комментарии из скобок, заданных простым текстом;

Про разницу между «Примечаниями» и «Комментариями» можно прочитать в описании скрипта «Добавление сносок и примечаний».

Скрипты 1-4 и 7-10 используют жестко заданные «скобки», какие именно – указано в названиях скриптов (сначала открывающая, а затем закрывающая).

Скрипты 5 и 11 («…из скобок заданных регэкспами») позволяют задать отдельно регэксп для открывающей и закрывающей «скобок», и по этим регэкспам скрипт ищет скобки и извлекает сноски.

Скрипты 6 и 12 («…из скобок, заданных простым текстом») позволяют ввести две строковые последовательности в одном окошке (через пробел), и эти последовательности скрипт при работе будет считать за открывающую и закрывающую скобки.

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

Скрипты данного набора имеют такой недостаток, что если внутри многосимвольной «скобки» в тексте книги есть какой-то тег (например, используется скрипт «Примечания из [!!]» и открывающая скобка имеет в fb2 вид [‹emphasis›!), то такая скобка не будет обнаружена скриптом. По этой причине односимвольные «скобки» предпочтительнее многосимвольных. Если вам все же приходится использовать многосимвольные, то после обработки скриптом нужно сделать поиск «скобки» по тексту в режим «Дизайн» (в случае приведенного примера искать нужно [! и!]), подправить случаи, где тег оказался внутри «скобки», и запустить скрипт заново.