Артефакт

Форматирование абзацев / 30 сентября 2006 г.

Когда ко мне в руки попадает текст, только что произведённый на свет программой Finereader, смотреть на него почти всегда не очень-то приятно. Finereader пытается сохранить исходное форматирование документа; кроме простейших случаев, ему это не удаётся, а вот неприятностей после таких попыток не оберёшься.

Первое, что приходит в кошмарный вид, это параметры шрифтов, которые можно посмотреть в меню MS Word Format | Font. В пределах одного абзаца текста можно встретить десяток разных кеглей и невероятные сочетания плотности символов за счёт разброса значений кернинга и трекинга. Если строчки не очень ровные, часть текста может оказаться raised или lowered, что ещё интереснее. Об отступах я уже и не говорю.

Гораздо проще уничтожить (или привести к одному знаменателю) форматирование всего документа сразу, чем в течение долгих часов возиться с каждым конкретным абзацем. А уж заголовки и прочую чепуху впоследствии как-нибудь победим.

Если мы хотим получить нормально выглядящий документ, в первую очередь придётся нормализовать состояние шрифтов и абзацев. Начнём, впрочем, со свойств документа в целом. Сперва сделаем это вручную.

Параметры страницы

Идём в меню File | Page Setup. Там сперва задаём значение Paper Size: A4 или Letter, это уж кому как удобнее и у кого какие принтеры. Затем переходим к Margins и устанавливаем bottom и top, скажем, равными 2 сантиметрам, left — 3, а right — 1,5.

Не помешает определить и масштаб отображения страницы. Я, например, почти всегда предпочитаю 90%. Выбираем (или печатаем вручную) желаемый масштаб с помощью элемента управления Zoom на панели инструментов.

Поехали дальше, нас ждут параметры шрифта обрабатываемого документа.

Настройки шрифтов

Определим свойства основного шрифта документа. Выделяем всё (Edit | Select All, или Ctrl+A) и выбираем на панели инструментов что-нибудь наподобие Verdana 10 pt.

Что говорите? Где искать все эти кнопки для настройки шрифтов? Вы не можете их найти? Неудивительно. Настроенная по умолчанию панель инструментов MS Word представляет собой зрелище, я бы сказал, прискорбное.

У меня она выглядит вот так.

Ничего лишнего, правда? Зато присутствуют, скажем, кнопочки Subscript и Superscript, которые по умолчанию на панели не видны. Давайте облагородим и ваш текстовый процессор.

Идём в меню и вызываем диалог Customize. Переключаемся на закладку Commands. В этом режиме любую кнопку с панели инструментов можно унести мышкой на открытое диалоговое окно, и она исчезнет с панели. И наоборот: вы можете пройтись по всем пунктам списка Categories слева и, просмотрев доступные в каждом случае в Commands кнопки (справа), вытащить их на панель.

Если после того, как вы закрыли Customize, на панели инструментов остались лишние блоки, щёлкните правой кнопкой мыши где-нибудь в пределах панели. Выпадет подменю со списком всех имеющихся блоков, и при включенных и отображающихся в настоящий момент будут стоять галочки. Отключите то, что вам не нужно.

Теперь делаем Select All и открываем диалог Format | Font. Сначала посмотрим на последнюю закладку, Text Effects, и убедимся, что там выбрано (none). Теперь переходим к закладке Character Spacing. Scale (масштаб) должен равняться 100%, а в выпадающих списках Spacing и Position должно быть выставлено Normal. Галочки в Kerning for Fonts быть не должно.

Теперь закладка Font. Выбираем Regular в качестве Font Style и отключаем все галочки в Effects.

Свойства абзацев

Не снимая выделения, отправляемся в Format | Paragraph.

На закладке Indents and Spacing устанавливаем Alignment в Justify, оба поля Indentation в 0 cm, поля Spacing в 0 pt, после чего задаём значение отступа красной строки (Special | First line) равным 0,5 cm, а интерлиньяж (Line Spacing) определяем как Single. Переходим к закладке Line and Page Breaks.

Здесь неплохо будет включить контроль висячих строк (Widow | Orphan Control). Всё, жмём OK.

На этом форматирование абзацев документа в общих чертах завершено.

Колонтитулы

Откроем меню View | Header and Footer. Активизируется поле Header, куда можно ввести что-то по вашему желанию. На плавающем блоке кнопок утапливаем Switch between Header and Footer:

После этого курсор переходит в поле Footer, которое редактируется аналогичным образом. Введённый текст сделаем сереньким Arial десятого кегля.

С колонтитулами всё, жмём на Close на том же самом блоке.

Номера страниц

Пункт меню Insert | Page Numbers вызывает следующий диалог:

Здесь выбираем позицию для номеров страниц (Position) Bottom of Page (Footer), устанавливаем Alignment в Right и при необходимости отключаем галочку Show number on first page. Жмём OK. После двойного щелчка на появившихся номерах можно отформатировать их по желанию (в данном случае сохраним тот же стиль, что мы выбрали для колонтитулов).

А теперь автоматизируем процесс

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

Параметры страницы

With ActiveDocument.PageSetup
   .LineNumbering.Active = False
   .Orientation = wdOrientPortrait
   .TopMargin = CentimetersToPoints(2)
   .BottomMargin = CentimetersToPoints(2)
   .LeftMargin = CentimetersToPoints(3)
   .RightMargin = CentimetersToPoints(1.5)
   .Gutter = CentimetersToPoints(0)
   .HeaderDistance = CentimetersToPoints(1.25)
   .FooterDistance = CentimetersToPoints(1.25)
   .PageWidth = CentimetersToPoints(21)
   .PageHeight = CentimetersToPoints(29.7)
   .FirstPageTray = wdPrinterDefaultBin
   .OtherPagesTray = wdPrinterDefaultBin
   .SectionStart = wdSectionNewPage
   .OddAndEvenPagesHeaderFooter = False
   .DifferentFirstPageHeaderFooter = False
   .VerticalAlignment = wdAlignVerticalTop
   .SuppressEndnotes = False
   .MirrorMargins = False
   .TwoPagesOnOne = False
   .BookFoldPrinting = False
   .BookFoldRevPrinting = False
   .BookFoldPrintingSheets = 1
   .GutterPos = wdGutterPosLeft
   .SectionDirection = wdSectionDirectionLtr
End With
ActiveWindow.ActivePane.View.Zoom.Percentage = 90

Настройки шрифтов

Selection.WholeStory
With Selection.Font
   .Name = "Verdana"
   .Size = 10
   .Underline = wdUnderlineNone
   .UnderlineColor = wdColorAutomatic
   .StrikeThrough = False
   .DoubleStrikeThrough = False
   .Outline = False
   .Emboss = False
   .Shadow = False
   .Hidden = False
   .SmallCaps = False
   .AllCaps = False
   .Color = wdColorAutomatic
   .Engrave = False
   .Spacing = 0
   .Scaling = 100
   .Position = 0
   .Kerning = 0
   .Animation = wdAnimationNone
End With

Свойства абзацев

With Selection.ParagraphFormat
    .LeftIndent = CentimetersToPoints(0)
    .RightIndent = CentimetersToPoints(0)
    .SpaceBefore = 0
    .SpaceBeforeAuto = False
    .SpaceAfter = 0
    .SpaceAfterAuto = False
    .LineSpacingRule = wdLineSpaceSingle
    .Alignment = wdAlignParagraphJustify
    .WidowControl = True
    .KeepWithNext = False
    .KeepTogether = False
    .PageBreakBefore = False
    .NoLineNumber = False
    .Hyphenation = True
    .FirstLineIndent = CentimetersToPoints(0.5)
    .OutlineLevel = wdOutlineLevelBodyText
    .CharacterUnitLeftIndent = 0
    .CharacterUnitRightIndent = 0
    .CharacterUnitFirstLineIndent = 0
    .LineUnitBefore = 0
    .LineUnitAfter = 0
    .ReadingOrder = wdReadingOrderLtr
End With

Колонтитулы и номера страниц

Эти два шага удобно объединить в один, т. к. форматирование нижнего колонтитула автоматически отнесётся и к номерам страниц.

With ActiveDocument.Sections(1)
   .Headers(wdHeaderFooterPrimary).Range.Text = "Header"
   .Footers(wdHeaderFooterPrimary).Range.Text = "Footer"
End With
With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)
   .PageNumbers.Add _
    PageNumberAlignment:=wdAlignPageNumberRight, _
    FirstPage:=True
End With
With ActiveDocument.Sections(1)
    With .Headers(wdHeaderFooterPrimary).Range.Font
      .Name = "Arial"
      .Size = 10
      .Color = wdColorGray40
    End With
    With .Footers(wdHeaderFooterPrimary).Range.Font
      .Name = "Arial"
      .Size = 10
      .Color = wdColorGray40
    End With
End With

Ну, и что получилось?

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

Макросы к статье

formatParagraphs (всё вышеописанное кроме колонтитулов и номеров страниц)
addHFPN (колонтитулы и номера страниц)
formatAll (всё вместе)

...

«О „мёртвых“ текстах» | «Perl и RegExp»

Новости раздела

18 ноября 2020 г.
Комплектация библиотеки файлами .fb2

Ещё на сайте

Библиотека
Языки
Друзья
Канада
Авторский угол

Интернет

CPAN
Citforum
W3C.org
useit.com
Типомания
Code Charts
ру/ководство
Лаборатория dk
WebReference.com
Спецификация Perl
Заметки HTML-кодера
Анатомия Adobe Photoshop
The Apache Software Foundation


Рейтинг@Mail.ru

wordpress statistics

Рейтинг@Mail.ru