2015-12-17 9 views
0

Я создал оглавления (ТОС) в моем Microsoft Office Word 2013 документ, используя различные типы заголовков связанных с ТОС. Когда я пытаюсь изменить мой стиль TOC 1, так что только текст внутри этого абзаца TOC будет выделен полужирным шрифтом, он сделает весь абзац жирным шрифтом. Чего я хочу достичь:Как полужирный текст в TOC, но не лидер листинга, а не номер страницы?

ТОЛЬКО ТЕКСТ ЗДЕСЬ СДЕЛАНО .............................. ..1

, а не жирный dot leader lines ни page number как этот

ВЕСЬ Абзац Bolded ....................... ..1

Я могу сделать это вручную, но каждый раз, когда я обновляю свой ТОС, все эти изменения исчезают (все выделено полужирным шрифтом/не выделено жирным шрифтом). Как я могу полужирным только текст (не точечные лидеры или номер страницы) внутри TOC-стиля?

ответ

1

Поля отбрасывают изменения при обновлении - вы можете немного изменить это. Существует переключатель * MergeFormat, который можно добавить в коды полей, чтобы сохранить форматирование. Главный недостаток, однако, заключается в том, что он «запоминает» форматирование по расположению символов. Поэтому, если текст изменяется (становится короче или длиннее), форматирование «сходит с ума». Поэтому я не думаю, что это поможет вам.

Итак, все, что вы действительно можете сделать, - это повторное применение форматирования после каждого обновления TOC. Самый быстрый способ сделать это - использовать код (например, макрос).

Вот макрос, который работает в быстрой проверке на моей системе. Он ищет каждый символ TAB в TableOfContents. Затем, основываясь на дополнительной информации от OP, которая должна распознать только вторую вкладку, используется второй диапазон, чтобы проверить, находится ли положение ПОСЛЕ закладки в пределах одного сантиметра от правого поля.

Если это так, то он переупорядочивает диапазон целей поиска с этой точки обратно в начало абзаца, затем применяет форматирование.

Примечание 1: Вы можете изменить «подушку», используемую для определения расстояния до правого поля, изменив формулу, назначенную на PageNumLimit.

Примечание 2: Я определил STYLE с именем Toc1_Text и использовал это вместо форматирования с помощью BOLD напрямую. Не имеет значения, но он чувствует себя «чист» для меня, чем прямого форматирования :-)

Sub FormatTextInTOC() 
    Dim rngFind As word.Range, rngFound As word.Range 
    Dim bFound As Boolean 
    Dim toc As word.TableOfContents 
    Dim infoH As Double, pageNumLimit As Double 

    Set toc = ActiveDocument.TablesOfContents(1) 
    toc.Update 
    Set rngFind = toc.Range 
    pageNumLimit = rngFind.Sections(1).PageSetup.RightMargin _ 
       - CentimetersToPoints(1) 
    With rngFind.Find 
    .ClearFormatting 
    .Text = vbTab 
    .Style = word.WdBuiltinStyle.wdStyleTOC1 
    Do 
     bFound = .Execute 
     If bFound Then 
      Set rngFound = rngFind.Duplicate 
      'rngFound.Select 
      rngFound.Collapse wdCollapseEnd 
      infoH = rngFound.Information(_ 
        wdHorizontalPositionRelativeToTextBoundary) 
      If infoH >= pageNumLimit Then 
       'rngFind.Select 
       rngFind.Collapse wdCollapseStart 
       rngFind.MoveStart wdParagraph, -1 
       rngFind.Style = "Toc1_Text" 
       rngFind.Start = rngFind.Paragraphs(1).Range.End 
       'rngFind.Select 
      End If 
     End If 
    Loop While bFound 
    End With 
End Sub 
+0

ОК, получил его, но не могли бы вы изменить код так, чтобы она могла доходить до второго лепестка. Теперь только чарекеры, которые смелее, до первого TAB. Итак, теперь он выделяет только «1». У меня это выглядит так: 1. TAB это тестирование текста TAB ............. PAGENUMBER –

+0

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

+0

Не уверен, если вы правильно поняли меня. Asi просматривает ваш исходный код, я вижу, что он выделяет все, что осталось слева от первой вкладки. Можно ли установить вторую вкладку? Спасибо за оригинальный код! –

 Смежные вопросы

  • Нет связанных вопросов^_^