Предлагаю вниманию книгоделов написанный мною скрипт "Поиск некорректных маркеров постраничных сносок с постраничной нумерацией".
Сразу договоримся о терминах. Маркеры, указывающие на поясняемый фрагмент текста и располагаемые сразу после него будем называть маркерами знаков сносок (далее — МЗС), а маркеры указывающие на текст сноски и располагаемые в начале строки — маркерами текста сносок (далее — МТС):
Маркер знака сноски*.
* Маркер текста сноски.
В замечательной группе скриптов под названием "Создать сноски или комментарии из абзацев, помеченных..." перед созданием сносок подсчитываются количества маркеров знаков сносок и относящихся к ним текстов сносок. Если эти числа равны, скрипт сообщает о готовности к созданию сносок.
Надо сказать, что равенство количества тех и других, хоть и необходимое, но всё-таки недостаточное условие для создания корректных сносок. Иногда причины этого объясняются типографским браком, результатом "экзотических" издательских решений форматирования таких маркеров, ошибками распознавания, использованием надстрочного текста в обозначениях величин плоскостей и объёмов, звёздочек вместо букв в отдельных словах и др. Простой пример: если в документе с уже правильно расставленными маркерами вдруг пропадёт первый маркер знака сноски и последний маркер текста сноски, то скрипт "Создать сноски или комментарии из абзацев, помеченных..." ничего не заметит и продолжит работу как ни в чём ни бывало. В результате получим полное несоответствие сносок.
Находить и исправлять пропавшие маркеры таких сносок довольно муторное дело. Особенно при одинаковом количестве тех и других маркеров, когда сам факт их некорректности весьма не очевиден. В таком случае можно прибегнуть к помощи нашего скрипта "Поиск некорректных маркеров сносок".
Итак, запускаем наш сценарий. Открывается окно, в котором можно выбрать вид маркеров.
![findMark.png](https://groups.google.com/group/fiction-book-editor/attach/132c46ffd3d7a/findMark.png?part=0.1&view=1)
Выбираем нужное и кликаем "Найти ошибочные маркеры". В документе выделится проблемное с точки зрения скрипта место. Внизу, в Строке Состояния появится сообщение о характере проблемы. Если у вас не включен показ строки состояния, включите его (Вид > Строка состояния). Выделяется обычно сомнительный или последний корректный маркер, о чем можно будет прочесть в статус-баре.
Возьмём, к примеру, маркеры надстрочным текстом. На что скрипт обращает внимание?
1. Маркер должен быть только числом.
1.1. Ноль (0) в единственном или в первом разряде этого числа считается ошибкой.
1.2. Пробел в границах маркеров считается ошибкой.
1.3. Пробел перед маркером текста сноски считается ошибкой.
Надо заметить, что скрипт "Создать сноски или комментарии из абзацев, помеченных маркерами", в отличии от нашего, не считает ошибкой наличие пробелов впереди и в границах маркеров. Это вовсе не мешает создавать корректные сноски.
Но нам для поиска некорректных маркеров это может помешать.
Чтобы сразу избавиться от таких, с точки зрения скрипта, «ошибок» (если они имеются), воспользуемся другим скриптом — "Убрать пробелы из маркеров сносок надстрочным текстом".
2. Первый маркер документа — маркер знака сноски № 1.
2.1. Первый маркер новой страницы со сносками (только для маркеров постраничных сносок с постраничной нумерацией) — маркер знака сноски № 1.
3. Первый в документе маркер текста сноски — маркер № 1.
3.1. Первый маркер текста сноски каждой новой страницы со сносками (только для маркеров постраничных сносок с постраничной нумерацией) — маркер № 1.
4. Каждый следующий маркер знака сноски больше на единицу предыдущего.
4.1. Каждый следующий маркер знака сноски новой страницы со сносками (только для маркеров постраничных сносок с постраничной нумерацией) больше на единицу предыдущего.
Также отметим, что очерёдность номеров маркеров для вышеупомянутого скрипта "Создать сноски или комментарии из абзацев, помеченных маркерами" никакого значения не имеет.
Опять же, в отличии от нашего скрипта. Для нас это основа нашего алгоритма.
5. Каждый следующий маркер текста сноски больше на единицу предыдущего.
5.1. Каждый следующий маркер текста сноски новой страницы со сносками (только для маркеров постраничных сносок с постраничной нумерацией) больше на единицу предыдущего.
6. Количества МЗС и МТС должны быть равны друг другу.
6.1. Количества МЗС и МТС на каждой новой странице со сносками (только для маркеров постраничных сносок с постраничной нумерацией) должны быть равны друг другу.
7. В тексте сноски не должно быть маркеров знаков сносок.
8. Последний маркер в документе — маркер знака сноски — ошибка.
9. Маркер сноски в пустой строке, или строке из одних пробелов — ошибка. Скрип не может определить назначение такого маркера.
Вы можете это «подсказать» скрипту, проставив какой-нибудь отличный от пробела символ до или после маркера в качестве временной метки.
10. Два маркера знака сноски подряд или только с пробелами между ними — ошибка. Если же так и задумано, то см. второй абзац предыдущего пункта 9.
11. Наличие в тексте документа маркера знака сноски после абзаца с текстом сноски (только для концевых сносок) — ошибка.
12. Маркер сноски из более чем 12-ти звёздочек (только для сносок звёздочками) — ошибка.
Пропустить выделенное скриптом проблемное место и просто перейти к следующему не получится. Только после исправления некорректного или недостающего маркера скрипт будет искать очередную ошибку.
Формулировки характера ошибки в строке состояния могут не всегда оказаться абсолютно точны и конкретны. В ряде случаев скрипт просто поможет найти в документе то место, с которого нужно начать поиск недостающего маркера. С чего-то ведь нужно начинать.
Уточним, что скрипт работает только с номерами маркеров сносок, и некоторые пропуски маркеров, к сожалению, могут быть не обнаружены. Например, если на странице с единственной парой знак-текст не будут распознаны оба маркера (МЗС и МТС), то скрипт этого не заметит. Или если на одной из страниц (с единственной ссылкой номер 1) распознается только МЗС №1, а на следующей (тоже с единственной ссылкой номер 1) распознается только МТС №1, то скрипт примет такую пару за корректную, и подвоха не заметит.
Скрипт представлен в 4-х модификациях:
Поиск некорректных маркеров постраничных сносок с постраничной нумерацией.js
Поиск некорректных маркеров постраничных сносок со сквозной нумерацией.js
Поиск некорректных маркеров концевых сносок.js
Поиск некорректных маркеров постраничных сносок (тексты сносок в конце книги).js
Скрипты для работы с постраничными сносками, также работают с поглавными сносками с поглавной или сквозной нумерацией. Применительно к имени и сообщениям в статус-баре скрипта прилагательные «постраничные» и «поглавные» можно рассматривать как синонимы.
В папке "Скрипты" создаём новую папку. Обзываем её "32_Маркеры сносок".
Качаем: