«Заголовок 4» должен быть привязан к следующему, если следующим является «Заголовок 5», но не в других случаях.

«Заголовок 4» должен быть привязан к следующему, если следующим является «Заголовок 5», но не в других случаях.

У меня есть документ Word, который является книгой правил. Чтобы сделать перечисление, для разных уровней правил (правило 1, раздел 3, статья 4, подстатья b, подстатья 1 и т. д.) используются разные заголовки. Это работает отлично.

Иногда подстатья c вводит список, содержащий несколько подстатьи. Пока все хорошо.

Но иногда указанная подстатья c является последней строкой на странице, что означает, что список подстатьи начинается с первой строки следующей страницы. Это нехорошо.

Я также не могу сделать Заголовки 4, 5 и 6всегда Продолжить со следующим, потому что тогда Заголовок 5 также будетперейти к следующемуесли следующий абзац не является списком, то слишком много текста переносятся на следующую страницу и место тратится впустую.

До сих пор моим обходным путем было просмотреть все нижние части всех страниц и вручную добавить «keep with next» к настройкам «абзаца» (по-голландски это «Alinea»), если я их замечаю. Но поскольку документ содержит более 400 стр., это не является устойчивым.

Я где-то нашел макрос (спасибо и респект!), который мне немного помог:

Sub ColonParaEnd_SetKeepWithNext()

    '=========================
    'Macro created 2010 by Lene Fredborg, DocTools - www.thedoctools.com
    'THIS MACRO IS COPYRIGHT. YOU ARE WELCOME TO USE THE MACRO BUT YOU MUST KEEP THE LINE ABOVE.
    'YOU ARE NOT ALLOWED TO PUBLISH THE MACRO AS YOUR OWN, IN WHOLE OR IN PART.
    '=========================
    'The macro iterates through all paragraphs in the active document
    'If a paragraph ends with a colon, Keep with next is applied
    '=========================

    Dim oPara As Paragraph
    Dim n As Long 'used as counter
    
    n = 0
    
    'Iterate though all paragraphs
    For Each oPara In ActiveDocument.Paragraphs
        With oPara
            'If a colon is found immediately before the paragraph mark, Chr(13), apply Keep with next
            'In case of end of a table cell, the end of cell marker is Chr(13) & Chr(7) - alså handle this
            If Right(.Range.Text, 2) = ":" & Chr(13) Or Right(.Range.Text, 3) = ":" & Chr(13) & Chr(7) Then
                .Range.ParagraphFormat.KeepWithNext = True
                n = n + 1
            End If
        End With
    Next oPara
    
    MsgBox "Finished." & vbCr & "Keep with next applied to " & n & " paragraph(s).", vbOKOnly, "Apply Keep With next"
End Sub

Поэтому я задался вопросом, не могли бы умные ребята помочь мне с умным макросом (возможно, на основе того, что я процитировал). Что я ищу:

  1. Если за заголовком 4 следует заголовок 5, сделайте этот экземпляр заголовка 4 «продолжить со следующим».
  2. Если за заголовком 5 следует заголовок 6, сделайте этот экземпляр заголовка 5 «не отходить от следующего».
  3. Если за заголовком 6 следует заголовок 7, сделайте этот экземпляр заголовка 6 «не отходить от следующего».

Заранее спасибо за ваше мнение!

Связанный контент