如果下一个是“标题 5”,则让“标题 4”与下一个保持一致,但在其他情况下则不这样做

如果下一个是“标题 5”,则让“标题 4”与下一个保持一致,但在其他情况下则不这样做

我有一个 Word 文档,是一本规则手册。为了完成枚举,对于规则中的不同级别(规则 1、第 3 节、第 4 条、子条款 b、子条款 1 等),使用不同的标题。这很有效。

有时子条目 c 会引入包含多个子条目的列表。到目前为止一切顺利。

但有时,子条目 c 是页面的最后一行,这意味着子条目列表从下一页的第一行开始。这不太好。

我也无法将标题 4、5 和 6 改为总是 继续下一个,因为标题 5 也会继续下一个如果下一段不是列表,则会将太多文本转移到下一页,从而浪费空间。

到目前为止,我的解决方法是查看所有页面的底部,如果发现它们,则手动将“与下一个保持在一起”添加到“段落”(荷兰语为“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 的此实例“与下一个保持一致”。

提前感谢您的见解!

相关内容