MS Word с 2013 по 2019 Professional: нумерация абзацев на внешнем краю страниц (маргинальные номера)
Делая следующее:
- щелкнув правой кнопкой мыши стиль нормального абзаца,
- Изменить...
- [Формат], Нумерация...
- [Определить новый формат чисел...]
- Числовой стиль: 1,2,3...; Числовой формат: 1; Выравнивание: право
а также
- щелкнув правой кнопкой мыши стиль нормального абзаца,
- Изменить...
- [Формат], абзац...
- Отступ слева: -0,25"; Специальный: подвесной; по: 0,25"
Мне удалось создать стиль, который непрерывно нумерует абзацы, выглядя следующим образом:
Однако я хочу, чтобы номера абзацев всегда появлялись на внешнем крае, т. Е. Числа от 12 до 14 должны появляться на правом краю, а не на левом краю, как на предыдущей странице.
Как и изображения, таблицы и т. Д., Я должен иметь возможность ссылаться на любой номер абзаца ("согласно абзацам 117 и далее"), что возможно при вышеуказанном подходе.
Намерение: печатный отчет, состоящий из тысяч абзацев, который будет обсуждаться очень подробно, что значительно облегчается благодаря возможности ссылаться на номера абзацев. И просто некрасиво иметь (возможно, частично затемненную) нумерацию слева на нечетных страницах.
Возможен ли такой стиль нумерации?
(Использование MS Word 2019 Professional: возможно, нам стоит добавить тег для него?)
2 ответа
Создание выделенного стиля
Этот стиль реализует последовательные числа на полях внешней страницы, выровненные по верху с нумерацией абзаца. Для этих крайних чисел необходимо создать независимый стиль.
Создайте несколько абзацев в стиле Normal. Перед таким абзацем введите пустой абзац. Поместите курсор на новый пустой абзац. В окне "Стили" нажмите кнопку "Новый стиль". В окне "Создать новый стиль из форматирования" назовите маргинальный номер нового стиля. Тип стиля - "Абзац", а для "Стиль на основе" и "Стиль" для следующих полей абзаца установлено значение "Обычный". В качестве цвета шрифта я использую средний серый, чтобы нумерация не слишком отвлекала от текста. Поток текста установлен по центру.
В раскрывающемся списке "Формат" выберите "Кадр...", а в окне "Кадр" выберите "Обтекание текстом". Горизонтальное положение снаружи, относительно страницы. Расстояние от текста должно составлять 1 см, чтобы не слишком отвлекать от чтения текста. Убедитесь, что вертикальная позиция равна 0 относительно абзаца (это значение по умолчанию). Также убедитесь, что введена минимальная высота (в группе "Размер"), чтобы не отображать маргинальное число на предыдущей стороне, а сам абзац отображается на новой стороне. Я использую здесь не менее 2 см (я использую метрические единицы измерения). Убедитесь, что установлен флажок "Переместить с текстом". Нажмите ОК.
В поле "Формат" выберите "Нумерация...", а в окне "Нумерация и маркеры" нажмите кнопку с надписью "Определить новый числовой формат". Выберите стиль чисел 1,2,3..., но убедитесь, что в числовом формате у вас есть только цифра 1, а не конечная точка или что-то еще. В Alignment снова выберите Centered. Подтвердите все окна.
В View, Views выберите Print Layout, чтобы увидеть эффект нумерации. Просто введите абзац перед существующим абзацем, уже содержащим текст, и примените к нему новый стиль: новое внешнее число будет добавлено на внешнее поле, выровненное по верху со следующим абзацем.
Есть еще одна вещь, которую нужно сделать. Поместите курсор в рамку крайнего числа сразу после номера. Есть место, которое нужно убрать. Щелкните правой кнопкой мыши, чтобы получить контекстное меню, и выберите "Настроить отступы списка...". В появившемся окне установите для позиции "Число", а также для отступа "Текст" значение 0 и "Следовать по номеру с помощью" Ничего ". После нажатия OK Word предупреждает, что эти изменения будут применены к стилю Marginal Number, а это именно то, что нам нужно, поэтому нажмите Yes. Вы заметите, что фрейм, содержащий маргинальное число, теперь намного уже, т. Е. Мы получили больше места для больших чисел.
Обратите внимание, что на эти маргинальные номера можно ссылаться через ссылки, подписи, перекрестные ссылки; они появляются как простое число.
Создать макрос для маргинальных чисел
Вся процедура добавления маргинального числа несколько утомительна: поместите курсор в начало абзаца, нажмите ввод, чтобы получить новый пустой абзац, переместите курсор в новый абзац, нажмите на новый стиль, чтобы применить его. Макрос может автоматизировать эти задачи.
Укажите некоторые абзацы с текстом, чтобы макрос мог быть записан. Поместите курсор перед первым символом еще не пронумерованного абзаца. Начните новую запись макроса с помощью Views, Macros, Record Macro... и в окне Record Macro разумно назовите макрос (здесь: InsertMarginalNumber), затем выберите Keyboard. В окне "Настроить клавиатуру" назначьте новую комбинацию клавиш, которая будет использоваться для выполнения макроса. Я выбрал Ctrl+M, где М обозначает Маргинальный номер. (Обратите внимание, что при этом будет заменен исходный ярлык, используемый для отступа абзаца. Если вы привыкли к этому ярлыку, рекомендуется использовать другой ярлык.) Нажмите кнопки Назначить, а затем Закрыть.
Теперь макрос записывается. Нажмите Enter, затем клавишу со стрелкой влево, примените стиль Marginal Number, затем нажмите клавишу со стрелкой вправо. Остановите запись макроса с помощью View, Macros, Stop Recording. Чтобы проверить макрос, поместите курсор в начало еще ненумерованного абзаца, затем нажмите Ctrl+M.
Это код записанного макроса:
Sub InsertMarginalNumber()
Selection.TypeParagraph
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Style = ActiveDocument.Styles("Marginal Number")
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub
Чтобы применить, переместите курсор в начало абзаца, затем нажмите Ctrl+M: на внешнем поле находится ваш маргинальный номер.
Я видел ваш вопрос о переполнении стека, где он был действительно "слишком широким", как он сформулирован, но он заинтриговал меня.
Это можно сделать, хотя и не полностью автоматически, вручную и / или с помощью VBA.
- Выберите любой (пустой) абзац и примените
Frame
к этому. Вы можете найтиInsert Frame
команда вDeveloper
вкладка ленты, группа элементов управления, устаревшие элементы управления. Это четвертый элемент управления слева
- Размер рамки, примените размер шрифта, который вы хотите для чисел и т. Д.
- Щелкните правой кнопкой мыши рамку, чтобы перейти в диалоговое окно "Формат рамки". Для горизонтального положения выберите
Outside
относительно страницы и при необходимости отрегулируйте расстояние от текста. Вертикальное положение должно быть 0 относительно абзаца. Убедитесь, что "Переместить с текстом" и "Блокировка привязки" активированы. Когда диалоговое окно подтверждено, рамочный абзац должен переместиться к внешнему полю непосредственно следующего абзаца. - Создайте новый стиль из этого абзаца - он будет включать определение фрейма.
- Проверьте стиль, введя или выбрав другой пустой абзац и применив к нему стиль.
Нумерация может быть сгенерирована путем размещения поля SEQ в каждом кадре с последующим обновлением полей в документе.
На этом этапе вручную можно было бы сгенерировать нумерацию. Долгая задача, конечно, для большого документа. Следующий код будет циклически повторять все абзацы в документе, вставляя пустой абзац, поле SEQ и форматируя его со стилем. В конце все поля обновляются.
Это почти наверняка (основываясь на снимках экрана, которые вы показываете) вставит больше чисел, чем вы хотите. Вы можете либо пройти и удалить их вручную, либо изменить код, чтобы игнорировать абзацы, которые соответствуют определенным критериям, которые не должны быть пронумерованы, или изменить код, чтобы пропустить эти абзацы при создании фреймов.
В этом коде стиль для фреймов называется NrPara
; если вы используете другое имя, вам нужно изменить это.
Sub NumberParas()
Dim doc as Word.Document
Dim Para As Word.Paragraph
Dim rngPara As Word.Range, rngParas() As Word.Range
Dim numParas As Long, counterPara As Long
Dim numParaStyle As Word.style
Dim rngNumPara As Word.Range
Dim sSEQ As String
sSEQ = "SEQ ParaNum"
Set doc = ActiveDocument
numParas = doc.Paragraphs.Count
ReDim rngParas(numParas - 1)
'Get an array of the paragraph ranges
For counterPara = numParas To 1 Step -1
Set Para = doc.Paragraphs(counterPara)
Set rngPara = Para.Range
Set rngParas(counterPara - 1) = rngPara
Next
'Insert a paragraph above each existing one, format and insert SEQ field
For counterPara = LBound(rngParas) To UBound(rngParas)
Set rngPara = rngParas(counterPara)
With rngPara
.InsertBefore vbCr
.Collapse wdCollapseStart
.Fields.Add rngPara, wdFieldEmpty, sSEQ, False
rngPara.style = "NrPara"
End With
Next
doc.Fields.Update
End Sub