Двойная нумерация страниц в сложных документах Word
В посте Удаление последнего раздела Word: решение проблемы XXI века я привел в качестве примера интересный документ. А интересен он тем, что у него двойная нумерация страниц. В верхнем правом углу – сквозная нумерация страниц по документу, внизу – номер страницы в разделе.
Те, кто имеет дело с ЕСКД, часто сталкиваются с очень сложными документами Microsoft Word в плане оформления. Здесь может быть несколько разделов, изменяемая ориентация страниц, сложные колонтитулы. Задача автоматической нумерации страниц тут становится не такой уж тривиальной.
Итак, погрузимся в теорию.
В Microsoft Word есть такое понятие как «коды полей». Сие есть тайные системные переменные Word, которые невооруженным глазом не видны. Один из таких кодов, наверное самый распространенный, - PAGE. Эта переменная интерпретирует номер текущей страницы. Чтобы его увидеть, выделим номер страницы в каком-нибудь документе и нажмем SHIFT-F9. Мы увидим что-то типа {PAGE \* MERGEFORMAT} ну или просто {PAGE}. Сразу обращу внимание, фигурные скобки – это на самом деле не скобки, а скрытые спецсимволы, которые вызываются нажатием CTRL-F9. Предположим где-то в своем тексте вы хотите поместить номер страницы. Жмем CTRL-F9, между скобок вписываем заветное слово PAGE, жмем правой кнопкой мыши, выбираем «Обновить поле». Вуаля!
На самом деле есть довольно много разных интересных кодов полей, посмотреть их можно здесь: https://support.microsoft.com/ru-ru/office/список-кодов-полей-в-word-1ad6d91a-55a7-4a8d-b535-cf7888659a51
Сразу скажу, вводить коды полей внутри колонтитулов крайне неудобно. Они просто не помещаются в маленькие ячейки гостовских рамок и штампов. Поэтому я рекомендую создавать коды полей внутри текста, а потом их копировать в колонтитул уже в виде значений. Итак, для переключения между кодами и значениями для каждого конкретного поля используем комбинацию клавиш SHIFT-F9. Если хотим переключаться между кодами/значениями во всем документе, жмем ALT-F9, но такая комбинация клавиш может быть на некоторых компьютерах занята другими системными приложениями.
Итак, мы создали поле {PAGE} и скопировали его в верхний колонтитул нашего документа, тем самым обеспечив сквозную нумерацию по документу.
На самом деле это не совсем так, вернее совсем не так. PAGE – это как раз нумерация внутри раздела. Я не рекомендую начинать нумерацию заново в каждом разделе, нумерация страниц должна быть сквозной и неразрывной по всему документу. Это поможет в дальнейшем избежать путаницы во многих вещах. Пусть номер каждой страницы будет уникальным, это хорошо, это правильно.
Продолжим. Коды полей позволяют использовать выражения (формулы). Например, мы решили начать нумерацию страниц в нашем документе не с 1, а с 5 (как в примере в моем предыдущем посте). Нам это нужно, потому что существует еще титульный лист, лист согласования и еще много всякой фигни, которая у нас где-то совсем в другом файле и не обязательно в формате Word.
В моем примере 2-я страница раздела соответствует 6-й странице сквозной нумерации. Мы можем создать поле с таким кодом {={PAGE}-4} (не забываем, что скобки – это не скобки, а спецсимволы, вызываемые по CTRL‑F9!). Скопируем это поле в штамп нижнего колонтитула.
Такое решение позволяет обеспечить нужную нам нумерацию в документе, состоящем из множества разделов. И казалось бы всё, все довольны, расходимся! Но у этого метода есть два существенных недостатка.
Первый. В документе из нескольких разделов, приходится постоянно редактировать формулы полей нумерации, так как количество страниц предыдущих разделов может измениться. Мы добавили одну страницу в первом разделе, нам нужно править формулы нумерации во всех последующих разделах.
Второй недостаток. Приведенный мной пример документа не случаен. Из-за того, что работа со сложными в оформлении документами требует много нервов, а инженеры, когда нервничают, становятся злыми и начинают косячить, один мудрый начальник изрек: «А на хрена вообще нужны эти сложные документы, если мы тратим на них столько времени? Это же исходники. Заказчику мы все равно отдаем pdf. Так давайте делать текстовую документацию по принципу один документ – один раздел! А потом их все равно отпэдээфим и склеим воедино!». «Браво! Бис!» - закричали восторженные инженеры, восхитившись мудрости своего начальника. На том и порешили. Так родился файл, который я привел в качестве примера (в котором остался позорный разрыв раздела, но теперь-то мы знаем как от него избавиться!).
Но тут возникла беда. Некоторым сотрудникам оказалось очень непросто объяснить, как отредактировать формулу в коде полей, они все равно косячили. Ведь всякий раз, если начинать нумерацию документа с произвольного значения нужно править смещение в формуле нумерации.
Я предлагаю элегантное решение этой проблемы, которое также работает и в сложном документе из нескольких разделов. Делаем так:
Тыкаемся в колонтитул первой страницы раздела (в большой штамп) в такое место, куда обычно не лезут шаловливыми ручонками, например, в ячейку с надписью «Лист». Заходим во Вставка\Закладка. Вводим имя закладки, например StartPage и жмем кнопку «Добавить».
Где-нибудь в тексте добавим ссылку на эту закладку. Для этого выходим из окна колонтитулов и заходим во Вставка\Перекрестная ссылка. Выбираем тип ссылки – закладка, вставить ссылку на – номер страницы, а в качестве закладки выбираем StartPage.
У нас в тексте появился номер страницы в сквозной системе нумерации, которой соответствует первая страница текущего раздела. Выделим это поле и нажмем SHIFT-F9. Мы увидим такой код {PAGEREF StartPage \h}.
Осталось теперь создать поле с нужной формулой. В нашем случае оно будет выглядеть так: {={PAGE}-{PAGEREF StartPage \h}+1}. Это поле мы скопируем в нижний штамп нашего документа
Для сложного документа из нескольких разделов поступаем аналогично, создав закладки, указывающие на первую страницу в каждом разделе.
Теперь наш спокойный инженер может начинать нумерацию страниц с какого угодно номера, изменять количество листов в разделах и ничего ему за это не будет. Только пусть закладки в штампах не удаляет. Но ему ведь это и не надо, ведь правда?








































