1

Тема: Как удалять стилевой мусор не поштучно, а за один приём?

Задача: после приведения в божеский вид цифровых гранок, полученных в несколько этапов из PDF, нужно убрать из него массу ранее созданных автоматически паразитных служебных стилей, большая часть из которых уже не используется, однако в файле присутствует. Их обычно штук по 20–40.
Приличные люди в таком виде файлы клиентам не отправляют, только вот никаких средств для удаления этого паскудства в очевидном месте в Word 2010 я так обнаружить и не сумел.
Как можно видеть, что в штатной панели стилей, что в диалоговом окне, якобы специально предназначенном для управления стилями (sic!) по определению невозможно выбрать их столько, сколько требуется (даже не в произвольном порядке, а хотя бы диапазон!).
Как удалять стилевой мусор не поштучно, а за один приём?
А чтобы не показалось вдруг мало, интеллектуалы-профессионалы из Microsoft ещё и считают обязательным потребовать подтвердить каждое решение об удалении стиля!
Как удалять стилевой мусор не поштучно, а за один приём?
Кто пробовал проделать такую операцию хотя бы раз 15, хорошо знает испытываемые при этом чувства и стремления…
Может, кто-нибудь знает нормальный способ устранения стилевого хлама?
Казалось бы, элементарная вещь, но мелкомягкие и её превратили в вечный бой…

2

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Интересный вопрос! Сам часто мучаюсь.
Пока могу предложить только следующий макрос:

Sub DeleteStyles()
    ActiveDocument.Styles("s11").Delete
    ActiveDocument.Styles("s111").Delete
    ActiveDocument.Styles("s12").Delete
    ActiveDocument.Styles("s121").Delete
     ............................
End Sub

Поскольку, как правило, такие "мусорные" стили имеют однотипные названия, то их довольно легко указывать в макросе копированием.
В принципе, эти стили, скорее всего, имеют номера в коллекции Styles, идущие подряд, но проблема будет состоять в том, каким образом узнать эти номера.
Если номера стилей будут известны, то легко организуется цикл.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

…их довольно легко указывать в макросе копированием.
В принципе, эти стили, скорее всего, имеют номера в коллекции Styles, идущие подряд, но проблема будет состоять в том, каким образом узнать эти номера.

Только-то? То есть само по себе копирование нескольких десятков машиночитаемых названий — это уже и не проблема (особенно если их удалось предварительно выяснить)?
Загоняем, в общем, таракана под шкаф, и отпиливаем шкафу ножки…  sad

4

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Я-то, собственно, нашёл очевидный паллиатив, который на порядок уменьшает объём кретинической работы (всё-таки после обработки файла большинство стилей существует только в таблице, но в самом тексте-то их нет), но это в любом случае некомильфотно и сильно напоминает решение проблемы профессиональной импотенции части ведущих программистов Microsoft (точнее, их хамского отношения к сектору B2C) посредством деревянной ложки и изоленты.

5

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Я вообще стили, которыми обрабатываю файлы, обозначаю своим значком и остальные скрываю либо удаляю.

6

Re: Как удалять стилевой мусор не поштучно, а за один приём?

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

7

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Тогда предлагаю такой алгоритм.
Перебираете все стили с поиском в файле ищете стиль, если его нет, то удаляете

8

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Самый простой способ - выделить все и скопировать в новый документ. Неиспользуемые стили останутся в старом.

Макросы под заказ и готовый пакет - mtdmacro.ru

9

Re: Как удалять стилевой мусор не поштучно, а за один приём?

aap77 пишет:

Перебираете все стили с поиском в файле ищете стиль, если его нет, то удаляете

И так несколько десятков раз… Нет уж, спасибо.
Короче, Идет ветер к югу, и переходит к северу, кружится, кружится на ходу своем, и возвращается ветер на круги свои. © Пока что из всего этого следует вывод, что с моей собственной квалификацией всё в порядке: необходимый и очевидный грамотным пользователям инструментарий в Word попросту отсутствует.
Дело не во мне, а в последовательной ориентации разработчиков на самую безмозглую и некомпетентную часть пользователей Потребности последних, учитывая ничтожный процент в общей массе покупателей лицензий, и, следовательно, ничтожную долю прибыли от них, исторически игнорируются. А пипл, тот всё хавает…  hmm

10

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Вождь пишет:

Самый простой способ - выделить все и скопировать в новый документ.

Ну да, об этом я и писал выше. Если что осталось недочищеным, его существенно меньше, меньше и мороки. Но для этого нужно создавать новый документ, писать его поверх старого… Деревянная нога лучше, чем вовсе никакой, но с настоящей живётся всё-таки легче.
А мелкомягким быдлокодерам — стыд и срам.

11

Re: Как удалять стилевой мусор не поштучно, а за один приём?

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

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

12

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Вождь пишет:

Самый простой способ - выделить все и скопировать в новый документ.

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

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

13

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Ой, а шрифты-то тут каким боком?!
Только прикладывать мне, увы, нечего: то, что было доведено до этапа, требующего чистки, уже почищено описанными выше перректальными способами, а новый файл ещё надо подготовить…
Но насчёт шрифтов всё равно интересно. Неожиданный поворот сюжета.

14

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Brains пишет:

...нужно создавать новый документ, писать его поверх старого…

Можно без нового: копируем в буфер, удаляем все стили, вставляем из буфера.

Brains пишет:

...мелкомягким быдлокодерам — стыд и срам...

У них принципиально другой подход к работе, не для наших мозгов smile

Макросы под заказ и готовый пакет - mtdmacro.ru

15

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

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

Да нет, в моём случае даже если они и используются, это — мусор. Речь идёт о цифровых гранках, то есть стили в них могут быть либо типовые, из шаблона Normal, либо пара-другая моих собственных, создаваемых на моё усмотрение и по согласованию с клиентом. Я включаюсь в цепочку обработки контента примерно между редакцией и участком вёрстки и публикации, так что моё дело — выдать на-гора нормальный издательский текстовый оригинал. Всё, что родилось само собою и непорочно — фтопку.

16

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:
Вождь пишет:

Самый простой способ - выделить все и скопировать в новый документ.

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

Оказывается, что макрос:

Sub DeleteStyles()
    ActiveDocument.Styles("s11").Delete
    ActiveDocument.Styles("s111").Delete
    ActiveDocument.Styles("s12").Delete
    ActiveDocument.Styles("s121").Delete
     ............................
End Sub

прекрасно удаляет стили, которые используются в тексте, а текст преобразуется в стиль Обычный. Чудеса!  smile 
Они все-таки не так глупы, как это кажется!  smile

Следующий макрос выводит по одному номера стилей в коллекции и их наименования:

Sub ShowStyles()
    Dim i As Integer
    For i = 1 To ActiveDocument.Styles.Count
        MsgBox (i & " " & ActiveDocument.Styles(i).NameLocal)
    Next i
End Sub

Было бы хорошо выводить все это не в окно на экране, а в активный файл Word, но пока не знаю, как это сделать. Коллеги, не могли бы посоветовать?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

17

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

Они все-таки не так глупы, как это кажется!  smile

Кто — «они»-то

18

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Brains пишет:
Alex_Gur пишет:

Они все-таки не так глупы, как это кажется!  smile

Кто — «они»-то

Разработчики.
Радует, что при удалении стиля не задается указанный вами вопрос: "Удалить стиль ... из документа?", а соответствующий текст автоматически преобразуется во что-то разумное (в данном случае, в стиль Обычный).

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

19

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Все же, кто-нибудь в курсе, как записать результаты действия макроса в файл Word (или хотя бы в файл TXT)?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

20

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

Все же, кто-нибудь в курсе, как записать результаты действия макроса в файл Word (или хотя бы в файл TXT)?

Нашел следующее решение:

Sub ShowStyles()
    Dim i As Integer
    MsgBox "Количество стилей: " & ActiveDocument.Styles.Count
    Selection.EndKey Unit:=wdStory
    For i = 1 To ActiveDocument.Styles.Count
        'вывод номеров стилей и их наименований в конец текущего файла
        'MsgBox (i & " " & ActiveDocument.Styles(i).NameLocal)
        Selection.Range.Text = i & " " & ActiveDocument.Styles(i).NameLocal
        Selection.EndKey Unit:=wdLine
        Selection.TypeParagraph
    Next i
End Sub

Теперь будет удобно удалять ненужные стили.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

21

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

Разработчики.
Радует, что при удалении стиля не задается указанный вами вопрос…

Так вы ж его макрокомандой (типа изнутри) удаляете, а не через графический интерфейс! Чтобы создать нормальный пользовательский интерфейс, нужна оооочень солидная квалификация и огромная ширина кругозора, сильно выходящие за рамки быдлокодерства (сродни поездке медведя на мотоциклете).
То, что эти особи не мешают вам работать на уровне программного кода, говорит не о том, что ответственные за развитие продукта особи пригодны для того, чем занимаются,  но что они не являются сознательными вредителями. И на том, конечно, спасибо, но Дилберту от этого не легче. И мне бы вот интерфейсу хотелось бы осмысленного.

22

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

Теперь будет удобно удалять ненужные стили.

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

23

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Brains пишет:
Alex_Gur пишет:

Теперь будет удобно удалять ненужные стили.

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

Верно. Так было бы лучше.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

24

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Вообще-то я незаморачиваюсь на эту тему, как бывшего верстальщик, на должности швеца-жнеца выработал свою стратегию работы. Со стилями особенно. Так как авторы приносят свой мусор, редакторы 30% убирают, 10 добавляют + у каждого свои замечания.
Короче есть я написал себе макросов предварительной обработки, убирающие весь мусор из текста, который можно легко вычислить. Составил свою таблицу стилей, причем на английском, для совместимости с другими прогами и отсеивающими совпадениями с русскими стилями Worda, не поленился составить на каждый вид объектов стили заголовков со стилями названий и т.п., добавил к стилям идентифицирующие значки. Вывел в отдельный шаблон, где отражены только мои стили. При вставке текста быстренько запускаю макрос скрытия чужих(могу объяснить почему скрытия, а не удаления) прохожу по тексту назначая нужные мне стили, удаляя видимый мусор и вырезая в отдельные файлы элементы, которые могут некорректно отобразиться в других программах и когда я все это подготовлю я спокойно удаляю удаляемое и скрываю скрываемое

25

Re: Как удалять стилевой мусор не поштучно, а за один приём?

aap77 пишет:

При вставке текста быстренько запускаю макрос скрытия чужих(могу объяснить почему скрытия, а не удаления) ...

Почему скрытие, а не удаление?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

26

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

Почему скрытие, а не удаление?

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

27

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Удалить несколько стилей сразу можно через диалоговое окно "Организатор". В Word 2013 он находится на вкладке Вид -> Макросы.

28

Re: Как удалять стилевой мусор не поштучно, а за один приём?

dron_07 пишет:

Удалить несколько стилей сразу можно через диалоговое окно "Организатор". В Word 2013 он находится на вкладке Вид -> Макросы.

Интересная возможность! Ненужные стили прекрасно удаляются!

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

29

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Всем доброго времени суток.

Нашёл решение тут: внешняя ссылка

Скажу сразу. что в обрабатываемом документе изначально было более 600 стилей. Так что в ручную я его точно не хотел обрабатывать.

При запуске макроса, у меня Word 2013 просто выпал. Думаю, что из-за слишком долгой обработки. Но при втором запуске всё прошло успешно.

Удачного всем использования.
И, несомненно, спасибо автору.

30

Re: Как удалять стилевой мусор не поштучно, а за один приём?

K&Co пишет:

Всем доброго времени суток.

Нашёл решение тут: внешняя ссылка

Скажу сразу. что в обрабатываемом документе изначально было более 600 стилей. Так что в ручную я его точно не хотел обрабатывать.

При запуске макроса, у меня Word 2013 просто выпал. Думаю, что из-за слишком долгой обработки. Но при втором запуске всё прошло успешно.

Удачного всем использования.
И, несомненно, спасибо автору.

Большое спасибо! Очень интересный макрос!
Правда, он заканчивается у меня с ошибкой "Run-time error 4198", но все ненужные стили этот макрос успешно удалил!

Было бы очень интересно, если бы кто-нибудь прокомментировал этот код:

With ActiveDocument.Content.Find
        .ClearFormatting
        .Style = oStyle.NameLocal
        .Execute FindText:="", Format:=True
        If .Found = False Then oStyle.Delete
End With
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

31

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Суть данной части проста: ищется подстрока к которой применён текущий (в цикле) стиль.

ActiveDocument.Content.Find

Говорит, что мы ищем по всему содержимому текущего документа


.Style = oStyle.NameLocal

Что имя стиля для текущего фрагмента совпадает с искомым.

.Execute FindText:="", Format:=True

Что мы ищем отформатированную подстроку с нулевой длинной

If .Found = False Then oStyle.Delete

Если такую строку не нашли, то считаем, что стиль не используется и удаляем его

Назначение этой строки

.ClearFormatting

не подскажу. Т.к. описание ничего толкового мне лично не дало.

К сожалению нельзя проверять неиспользуемый стиль так:

If oStyle.BuiltIn = False And oStyle.InUse = False Then

причина кроется в особенности свойства

inUse

, которое описано тут

32

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Большое спасибо, K&Co!

Еще немножко хотел бы добавить:

Просматриваем в цикле каждый из имеющихся стилей:

    For Each oStyle In ActiveDocument.Styles

Только для невстроенных стилей:

        If oStyle.BuiltIn = False Then

Content – возвращает объект типа Range, представляющий основной документ (the main document story). Объект Find содержит критерии для операции поиска в основном документе (только для чтения):

            With ActiveDocument.Content.Find

ClearFormatting – очищает параметры поиска от предыдущих значений:

                .ClearFormatting

Проверяем, совпадает ли имя стиля текущего фрагмента с искомым. oStyle.NameLocal – имя искомого в цикле стиля.

                .Style = oStyle.NameLocal

Ищем отформатированный текст. FindText – текст, который нужно найти. Если используется пустая строка ("") и Format:=True, то ищется только форматированный текст:

               .Execute FindText:="", Format:=True

Если текст с данным стилем в документе не найден, то стиль удаляется:

                If .Found = False Then oStyle.Delete
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

33

Re: Как удалять стилевой мусор не поштучно, а за один приём?

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

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

34

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Alex_Gur пишет:

...данный макрос может...

Еще, этот макрос выкосит ВСЕ стили таблиц (Find их просто не находит) и стили не задействованные в главной части, а только в колонтитулах например.

Макросы под заказ и готовый пакет - mtdmacro.ru

35

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Еще две небольшие модификации данного макроса:

Удаление неиспользуемых стилей (из стилей, названия которых НЕ содержат определенные символы)

Допустим, я создал собственные пользовательские стили, и названия всех этих стилей начинаются с символов "АГ-". Тогда, чтобы все эти стили избежали удаления (независимо от того, используются они или нет), можно добавить в макрос дополнительное условие:

Sub DeleteUnusedStyles1()
    Dim oStyle As Style

    For Each oStyle In ActiveDocument.Styles
        'Отбираются только стили, названия которых не содержат символы "АГ-"
        If InStr(oStyle.NameLocal, "АГ-") = 0 Then
            'Only check out non-built-in styles
            If oStyle.BuiltIn = False Then
                With ActiveDocument.Content.Find
                    .ClearFormatting
                    .Style = oStyle.NameLocal
                    .Execute FindText:="", Format:=True
                    If .Found = False Then oStyle.Delete
                End With
            End If
       End If
    Next oStyle
End Sub

Удаление неиспользуемых стилей (из стилей, названия которых содержат определенные символы)

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

Sub DeleteUnusedStyles2()
    Dim oStyle As Style

    For Each oStyle In ActiveDocument.Styles
        'Отбираются только стили, названия которых начинаются с символа "x"
        If InStr(oStyle.NameLocal, "x") = 1 Then
            'Only check out non-built-in styles
            If oStyle.BuiltIn = False Then
                With ActiveDocument.Content.Find
                    .ClearFormatting
                    .Style = oStyle.NameLocal
                    .Execute FindText:="", Format:=True
                    If .Found = False Then oStyle.Delete
                End With
            End If
       End If
    Next oStyle
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

36

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Я бы модифицировал макрос так.

Sub DeleteUnusedStyles2()
    Dim oStyle As Style, inp1 As String, inp2 As Byte
    inp1 = InputBox("Введите символы из названия стиля:")
    inp2 = CByte(InputBox("Введите начальный номер 1-го символа:"))
    For Each oStyle In ActiveDocument.Styles
        If InStr(oStyle.NameLocal, inp1) >= inp2 Then
            If oStyle.BuiltIn = False Then
                With ActiveDocument.Content.Find
                    .ClearFormatting
                    .Style = oStyle.NameLocal
                    .Execute FindText:="", Format:=True
                    If .Found = False Then oStyle.Delete
                End With
            End If
       End If
    Next oStyle
End Sub

Теперь мы запрашиваем сочетание символов из названия стиля и положение 1-го символа, а затем по этим параметрам удаляем стили.

37

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Вождь пишет:

Еще, этот макрос выкосит ВСЕ стили таблиц

У меня Таблицы обрабатываются корректно.

Может есть какие-то конкретные условия, когда они могут быть удалены?

38

Re: Как удалять стилевой мусор не поштучно, а за один приём?

K&Co пишет:
Вождь пишет:

Еще, этот макрос выкосит ВСЕ стили таблиц

У меня Таблицы обрабатываются корректно.

Может есть какие-то конкретные условия, когда они могут быть удалены?

А у Вас используются стили таблиц?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

39

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Для не любителей макросов есть встроенное стредство:
Вкладка Разработчик
Макросы
на всплывшем окне - Организатор
закладка Стили

40

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Проще так: Alt+F8 > Кнопка "Организатор"

Макросы под заказ и готовый пакет - mtdmacro.ru

41

Re: Как удалять стилевой мусор не поштучно, а за один приём?

SAVeta пишет:

Для не любителей макросов есть встроенное средство:
Вкладка Разработчик
Макросы
на всплывшем окне - Организатор
закладка Стили

Спасибо, SAVeta!
Хорошее средство.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

42

Re: Как удалять стилевой мусор не поштучно, а за один приём?

Brains пишет:

Может, кто-нибудь знает нормальный способ устранения стилевого хлама?

«Чистить» документ от «левых» стилей имеет смысл при наличии критериев очистки. В своей практике я использую такой критерий: стиль считается законным, если он есть встроенный стиль Word или присутствует в стилевом шаблоне, прикрепленном к целевому документу. Если стиль используется в документе (но не является встроенным или не входит в стилевой шаблон), то такой стиль является «терпимым» с точки зрения чистки документа.
Общая процедура (реализованная как VBA-макрос) при описанном подходе такова:
1. Макрос узнает, прикреплен ли к документу стилевой шаблон. Если не прикреплен, то выдача сообщения об ошибке и завершение работы макроса.
2. Все стили, имеющие в имени разделитель (напр., стиль с именем «List Bullet;LB;список2») переименовываются, с оставлением в имени только первого «корня» (в приведенном примере новым именем станет «List Bullet». Ошибки переименования (а они могут быть) игнорируются.
3. Составляется список «нелегальных» стилей. Таковыми считаются невстроенные стили, не найденные в стилевом шаблоне и не примененные в самом документе.
4. Нелегальные стили по сформированному списку удаляются из документа.
Могут быть и другие критерии, напр., соответствие имен стилей списку стилей.