Тексты академиков, такие как монография, диссертация и тезисы, иногда используют нумерацию разных страниц, начиная с пре-текста, текста и пост-текста.

Затем мне нужно создать каталожную карточку с предтекстовым и текстовым количеством страниц. Для этого, я думаю, я мог бы поместить поле с последней страницей предтекстовой части и последней страницей с номером документа (это не {NUMPAGES} потому что это дает мне общее количество страниц)

Это структура документа, чтобы лучше понять, в чем проблема:

  1. Нумерация пре-текста начинается с третьей страницы римской нумерацией (iii) и заканчивается в конце списка цифр в (xvi). Эта страница в абсолютной нумерации также 16.
  2. После того, как текстовая часть начинается с нумерации с 1 (в арабской нумерации), но в абсолютной нумерации документа это 17 страница. Затем эта нумерация заканчивается страницей 120, но в абсолютной нумерации эта страница равна 136.

Тогда мне нужно поле для печати XVI и 120. Я мог бы сделать это:

{={NUMPAGES}-16}

Но если предварительный текст увеличивает страницы, это не сработает

Я тоже буду благодарен за решения в VBA.

2 ответа2

0

обычно в нижних колонтитулах я вспоминаю, что синтаксис x xx, где xx - последняя страница.

Когда вы меняете формат с римского на арабский, где-то вы добавляете ... RestartNumberingAtSection

это пример сценария, который нуждается в проверке

При ошибке возобновить следующее

Const wdPageBreak = 7 Const wdPageNumberStyleUppercaseRoman = 1

Установите objWord = CreateObject("Word.Приложение ") objWord.Visible = True Установите objDoc = objWord.Документы.Добавлять()

Установите objSection = objDoc.Sections(1) Установите objSelection = objWord.выбор

Установите objPageNumbers = objSection.Колонтитулы (1).PageNumbers objPageNumbers.NumberStyle = wdPageNumberStyleUppercaseRoman objPageNumbers.ShowFirstPageNumber = FALSE objPageNumbers.RestartNumberingAtSection = TRUE objPageNumbers.StartingNumber = 17 objPageNumbers.Добавить (1)

objSelection.TypeText "Это страница 1". objSelection.InsertBreak(wdPageBreak) objSelection.TypeText "Это страница 2". objSelection.InsertBreak(wdPageBreak) objSelection.TypeText "Это страница 3".

0

Вы можете достичь этого с помощью поля и закладки.

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

Затем там, где вы хотите, чтобы ваш скорректированный расчет страницы показывался, вместо жесткого кодирования 16 вставьте ссылку на номер страницы закладки (и измените формат поля на арабский, чтобы он не "не работал" из-за нумерации страницы i). в этом разделе).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .