Информационный портал
pocket versionPOCKET  wikiWIKI  FAQFAQ  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  ПрофильПрофиль  Войти и проверить личные сообщенияВойти и проверить личные сообщения  ВходВход

Скрипт добавления сноски (и другие)
На страницу 1, 2, 3 ... 12, 13, 14  След.
 
Найти сообщения без ответов
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> Сделано для FB
Предыдущая тема :: Следующая тема  
Автор Сообщение


Sclex
Бывалый участник форума

Бывалый участник форума

Зарегистрирован: 24.09.2005
Сообщения: 416
Откуда: Минск

СообщениеДобавлено: Ср Май 30, 2007 11:59    Заголовок сообщения: Скрипт добавления сноски (и другие) Ответить с цитатой

Предлагаю вниманию пользователей FBW от Alex Saveliev для тестирования (в случае отсутствия багов - для использования) скрипт по добавлению сноски. Первая ссылка для скачивания (по этому адресу буду выкладывать последнюю версию). Вторая ссылка для скачивания (здесь останется версия 1.00), 3 КБ. В FBE, кажется, тоже поддерживаются скрипты, но точно не знаю, т.к. начал сразу с FWB, так что в FBE не тестировал.

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

Что делает скрипт.
1. Добавляет body примечаний, если его нет.
2. Добавляет заголовок body примечаний, если его нет. Если есть - оставляет без изменений.
3. Изменяет ID секций примечаний.
4. Изменяет заголовки секций примечаний.
5. Меняет адреса как сносок, так и простых ссылок, которые указывают на секции примечаний.
6. Меняет текст сносок (у простых ссылок остается как было).
7. Добавляет новую секцию примечаний.
7. Добавляет новую сноску с правильными адресом и текстом.
Кроме этого ничего не делает (если не осталось каких-то ошибок программирования).

Чтобы установить скрипт (в случае FBW), нужно его .js-файл кинуть в подкаталог styles\имя стиля\cmd в папке редактора. Далее запустить (заново, если нужно) редактор и искать пункт «Добавление сноски» в меню «Команды», или как оно называется в вашем стиле.

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

Детали алгоритма. Номер вставляемого примечания определяется по номеру примечания, расположенного перед вставляемым. Остальные не анализируются. Т.е. если вставляем после сноски, связанной с третьей секцией боди примечаний, новая сноска получит номер четыре. Тут я уже упомянул и еще один момент работы скрипта - новые адреса и тексты ссылок генерятся не по порядку их размещения в тексте, а вычисляются по тому, с какими секциями связаны ссылки. Другими словами, связь ссылки и секции сохраняется независимо от порядка их расположения. Это я считаю за фичу. Секции примечаний нумеруются с единицы для первой секции. Заголовки в секции примечаний добавляются независимо от исходного их наличия/отсутствия.

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

Настройки. В начале файла скрипта расположены определения констант, которые задают шаблоны для называния заголовков, для текста ссылок и пр. Соответственно при необходимости их можно поменять. Макрос %N задает номер секции примечания, остальное трактуется как просто текст. Скрипт в кодировке UTF-16 Little Endian. Скрипт должен содержать сигнатуру FFFE первыми байтами файла, иначе FBW не поймет его правильно, так что позаботьтесь об этом, если редактируете файл. Я редактировал в EditPadPro, перед каждым запуском скрипта запуская батник, добавляющий сигнатуру, т.к. EPP у меня ее не сохранял. В настройках же можно включить режим работы скрипта без добавления новой сноски, при этом остальная работа по упорядочению сносок будет произведена.

За предварительное тестирование и советы спасибо jurgennt'у. Он же побуждал меня к работе над скриптом.

Добавлено спустя 6 минут 45 секунд:

Re: Скрипт добавления сноски

По предложения jurgennt'а добавил в архив версию, где добавление сноски отключено (включена только обработка имеющихся сносок).


Последний раз редактировалось: Sclex (Ср Июн 06, 2007 17:36), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Marina_Ch
Постоянный участник форума

Постоянный участник форума

Зарегистрирован: 14.04.2006
Сообщения: 779
Откуда: Москва

СообщениеДобавлено: Ср Май 30, 2007 12:27    Заголовок сообщения: Ответить с цитатой

Браво! Браво! Бис!!! Благодарность
Благодарность Благодарность Благодарность Благодарность Благодарность
_________________
REB 1100, REB 1200, SE P910i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Alex Saveliev
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 29.01.2007
Сообщения: 144

СообщениеДобавлено: Ср Май 30, 2007 12:42    Заголовок сообщения: Ответить с цитатой

Очень хорошо!

По поводу UTF-16 - скрипт можно писать и в обычной кодировке, но тогда придется немного помучаться с переводом русских сообщений в UTF-8. Сделать это можно в том же FBW Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Sclex
Бывалый участник форума

Бывалый участник форума

Зарегистрирован: 24.09.2005
Сообщения: 416
Откуда: Минск

СообщениеДобавлено: Ср Июн 06, 2007 17:32    Заголовок сообщения: Ответить с цитатой

По мотивам топика "FB Editor - скрипты, вопросы..." сделал скрипт, меняющий регистр букв в выделении на нижний или верхний. По рекомендации GribUser'а работаю через DOM. От vvv взял куски алгоритма и идею использовать в качестве маркеров границ выделения пустые ссылки (оказалось очень удобно так сделать, т.к. для пустых ссылок создаются узлы и тогда не надо анализировать текст). Спасибо за советы, они пригодились.

В отличие от тех скриптов, которые прилагаются к FBW, корректно обрабатывается любая структура документа, тэги при этом не трогаются.

Ссылки для скачивания: 1 (последняя версия) и 2 (версия 1.0), 1.4 Кб.

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

Недостатки. Не обрабатываются entities (символы, задаваемые по коду). Выделение после работы скрипта не сохраняется.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Marina_Ch
Постоянный участник форума

Постоянный участник форума

Зарегистрирован: 14.04.2006
Сообщения: 779
Откуда: Москва

СообщениеДобавлено: Ср Июн 06, 2007 19:35    Заголовок сообщения: Ответить с цитатой

Sclex, респект за скрипты! Отличная работа!

Можно хотелки по сноскам?
1. В БД и ФБД все равно сноски получаются возвратными. Тут Валера никак не хочет уступать. После обработки твоим скриптом после возвратности остается мусор Crying or Very sad

а) <p id="_ftnref1"> в тексте документа осталось, надо на <p> заменить
б) <a l:href="#_ftnref1">[1]</a> в самой сноске надо убрать
по всем номерам сносок, конечно
только там может быть не только ftnref но и endref и еще какие-то похожие варианты. И все это надо убирать нафиг, потому как даже сам БД не умеет корректно работать с им же сделанными фб2.

2. При добавлении новой сноски приходится прыгать в конец документа и обратно. Можно ли сделать чтобы при вставке сноски не просто создавало и нумеровало сноски, а еще и форму для ввода текста предлагало?

3. Хочется подхватывать и конвертить в сноски различные [], {} и т.п. варианты - иногда они полностью пропущены, а иногда быстрее по тексту пробежаться и обрамить сноски [] - а потом сконвертить. Т.е. представь - есть фб2, вычитанный и более-менее отформатированный. Но сноски там оформлены [] - почему-то не сконвертили. Таких файлов в либах есть немало.

Не ругайся на то, что желаний так много - мечты же... Хотелки... Просилки... Wink
_________________
REB 1100, REB 1200, SE P910i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Sclex
Бывалый участник форума

Бывалый участник форума

Зарегистрирован: 24.09.2005
Сообщения: 416
Откуда: Минск

СообщениеДобавлено: Чт Июн 07, 2007 1:38    Заголовок сообщения: Ответить с цитатой

Marina_ch писал(а):
2. При добавлении новой сноски приходится прыгать в конец документа и обратно. Можно ли сделать чтобы при вставке сноски не просто создавало и нумеровало сноски, а еще и форму для ввода текста предлагало?

Это сделал. Добавление сноски v1.1: ссылка 1, ссылка 2, 4 КБ.

То есть теперь в архиве три файла, тебе нужен "Добавление сноски со вводом". Диалог и строка ввода - какие есть, от скрипта не зависит, в смысле что шрифт там не поменяешь.

Есть поддержка тэгов в этой строке ввода. Для курсива <i>...</i> <em>...</em> <emphasis>...</emphasis> . Для жирного <b>...</b> <strong>...<strong> . Можно вводить несколько абзацев, разделив их <br> . Хотел сделать \n , но js по регэкспу \\n не находит \n почему-то, в отличие от EditPadPro. Сделал мини-валидацию вводимого, так что если что-то некорректно, ошибка не попадет в документ, а будет предложено повторить набор.

Marina_ch писал(а):
Не ругайся на то, что желаний так много - мечты же... Хотелки... Просилки... :wink:

Предлагать можно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Marina_Ch
Постоянный участник форума

Постоянный участник форума

Зарегистрирован: 14.04.2006
Сообщения: 779
Откуда: Москва

СообщениеДобавлено: Чт Июн 07, 2007 7:09    Заголовок сообщения: Ответить с цитатой

Спасибо! Просто отличные новости с утра Very Happy

Добавлено спустя 1 час 58 минут 1 секунду:

Sclex писал(а):
Диалог и строка ввода - какие есть, от скрипта не зависит, в смысле что шрифт там не поменяешь.

Шрифт бог с ним.А вот одна строчка - тоже не поменять никак? Видно плоховато Sad
Хотя в любом случае абсолютный респект - так стало совсем хорошо и удобно! Благодарность
_________________
REB 1100, REB 1200, SE P910i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Consul
Администратор библиотеки FictionBook.Lib

Администратор библиотеки FictionBook.Lib

Зарегистрирован: 27.02.2005
Сообщения: 674
Откуда: Красноярск

СообщениеДобавлено: Чт Июн 07, 2007 9:24    Заголовок сообщения: Ответить с цитатой

Marina_Ch писал(а):
так стало совсем хорошо и удобно!

Полностью присоединяюсь.
Огромное спасибо Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail


Sclex
Бывалый участник форума

Бывалый участник форума

Зарегистрирован: 24.09.2005
Сообщения: 416
Откуда: Минск

СообщениеДобавлено: Чт Июн 07, 2007 18:00    Заголовок сообщения: Ответить с цитатой

Marina_Ch писал(а):
Шрифт бог с ним.А вот одна строчка - тоже не поменять никак? Видно плоховато :(

Я не знаю способа изменить это.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Marina_Ch
Постоянный участник форума

Постоянный участник форума

Зарегистрирован: 14.04.2006
Сообщения: 779
Откуда: Москва

СообщениеДобавлено: Чт Июн 07, 2007 18:10    Заголовок сообщения: Ответить с цитатой

Ну и бог с ним! Все равно изумительно удобно!!!
А по другим моим хотелкам что-нить скажешь?
Типа - будут, не будут, нафиг или еще чего? Wink
_________________
REB 1100, REB 1200, SE P910i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Sclex
Бывалый участник форума

Бывалый участник форума

Зарегистрирован: 24.09.2005
Сообщения: 416
Откуда: Минск

СообщениеДобавлено: Пт Июн 08, 2007 0:14    Заголовок сообщения: Ответить с цитатой

Добавление сноски v1.2. Ссылка 1. Ссылка 2. 4326 б.

Теперь в архиве четыре скрипта. Новый называется &quot;Добавление сноски с переходом&quot;. Его особенность в том, что после добавления сноски происходит смещение фокуса видимости в редакторе на секцию новосозданного примечания, т.е. сразу можно набирать текст примечания и видеть его со всем форматированием. Сообщение &quot;обработка закончена&quot; не выводится. jurgennt считает (насчет фокуса), это удобно, может и еще кто-то предпочтет такой способ. Напомню, в FBW вернуться из секции примечания обратно к сссылке сноски можно нажатием Ctrl-Backspace.

И спасибо Alex Saveliev за совет перейти на UTF-8. Так и сделал, что избавило от нужды добавлять сигнатуру в начало – теперь после сохранения файла сразу запуск.

Добавлено спустя 1 час 21 минуту 30 секунд:

Marina_Ch писал(а):
А по другим моим хотелкам что-нить скажешь?

Не исключаю, но и не обещаю. Если что-нибудь сделаю, сообщу в этом же топике.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Marina_Ch
Постоянный участник форума

Постоянный участник форума

Зарегистрирован: 14.04.2006
Сообщения: 779
Откуда: Москва

СообщениеДобавлено: Пт Июн 08, 2007 9:42    Заголовок сообщения: Ответить с цитатой

Sclex писал(а):
может и еще кто-то предпочтет такой способ

Спасибо! Лично мне больше нравится окошко, но если тело сноски большое, то прыжок предпочтительнее.
Sclex писал(а):
Не исключаю, но и не обещаю.

Спасибо. Главное - не отказал Wink
Нам спешить некуда Smile
_________________
REB 1100, REB 1200, SE P910i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Sclex
Бывалый участник форума

Бывалый участник форума

Зарегистрирован: 24.09.2005
Сообщения: 416
Откуда: Минск

СообщениеДобавлено: Пт Июн 08, 2007 10:47    Заголовок сообщения: Ответить с цитатой

Добавление сноски v1.3. Ссылка 1. Ссылка 2. 4333 б.
В предыдущей версии в случае, когда скрипту приходилось создать боди нотесов, заголовок его выглядел как &quot;+strconst5+&quot; (включая кавычки), исправлено.

Добавлено спустя 1 час 22 минуты 56 секунд:

Смена регистра v1.1. Ссылка 1. Ссылка 2. 1394 Б.
Теперь корректно обрабатывается случай, когда начало или конец выделения приходится внутри ссылки. В предыдущей версии получалось, ссылка в такой ситуации разбивалась на части. Предсказуемый результат вставления ссылки внутрь ссылки. Изменил маркер блока с <A id=BlockStart></A> на <B id=BlockStart></B> .
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Faiber
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 24.12.2005
Сообщения: 127
Откуда: г. Ростов-на-Дону

СообщениеДобавлено: Пт Июн 08, 2007 22:41    Заголовок сообщения: Ответить с цитатой

Sclex

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


Sclex
Бывалый участник форума

Бывалый участник форума

Зарегистрирован: 24.09.2005
Сообщения: 416
Откуда: Минск

СообщениеДобавлено: Пт Июн 08, 2007 22:45    Заголовок сообщения: Ответить с цитатой

Marina_Ch писал(а):
1. В БД и ФБД все равно сноски получаются возвратными. Тут Валера никак не хочет уступать. После обработки твоим скриптом после возвратности остается мусор :cry:

Скрипт "Удаление возвратных сносок v.1.0". Ссылка 1. Ссылка 2. 1367 Б.

Удаляет те ссылки, которые находятся в боди нотесов и ссылаются на абзац в любом боди, кроме боди нотесов. Также удаляем id абзацев, на которые ссылаются удаляемые ссылки. Кроме тех (абзацев), на которые есть ссылки из боди не нотесов (у них id оставляем). В версии "(неполная проверка)" последняя проверка отключена, т.е. удаляем id у всех абзацев, связанных с удаляемыми ссылками. Версию с неполной проверкой можно использовать на файлах, о которых точно известно, что нет ссылок на абзац, кроме возвратных. Она работает быстрее полной версии (разница в скорости тем заметней, чем больше ссылок).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> Сделано для FB Часовой пояс: GMT + 3
На страницу 1, 2, 3 ... 12, 13, 14  След.
Страница 1 из 14

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group