我定义标题 1到标题 9风格标题 N是基于标题 N-1进行了一些额外的样式更改。这使我能够更新标题风格在各个层面都保持一致。
然而,在某个时间点,我设置了标题 8样式,无法撤消此更改。最终结果是,每当我编辑标题 1 的字体颜色时,所有标题样式标题 1到标题 7显示更新的字体颜色,但停止于标题 8。
如何纠正这个问题? 甚至使用 VBA 修复也是可行的。
答案1
我找到了一个 VBA 修复程序来重置任何给定的样式,它确实有效。以下是 VBA 代码:
Private Sub ClearStyle(sStyleName As String)
Dim oStyle As Variant
Set oStyle = ActiveDocument.Styles(sStyleName)
With ActiveDocument.Styles(oStyle)
If .BaseStyle <> "" Then
.Font = .BaseStyle.Font
.ParagraphFormat = .BaseStyle.ParagraphFormat
End If
End With
End Sub
Public Sub clearDirtyStyles()
ClearStyle "Heading 8"
End Sub
通过从损坏的模板调用 ClearDirtyStyles VBA 宏,可以重置样式。
Heading 1
我在 MS Word for Mac 2016 上重新测试了它,它有效。亲自尝试一下,在和Heading 2
中尝试字体颜色Heading 3
,然后运行ClearStyle "Heading 3"
。
答案2
TL;DR:编辑样式的 XML 定义。
将值设置为 BaseStyle 值是一次性修复,不是恢复继承的某些东西。这些值明确设置为基本样式的值,但不能继承。
示例:字符样式 C1 基于段落样式列表编号 2 的默认值。LN2 基于 Normal。Normal 字体为 Calibri 11 pt black。打开 C1,您会看到其字体和大小为空白。更改为 Arial 10,现在它永远是一个显式值。运行宏,C1 将重新设置为 Calibri 11 pt black - 而不是空白(继承)!更改 LN2,C1 保持 Calibri 11 pt black - 不是 LN2 的字体和大小。我很难过。
从 XML 角度来看,样式呼呼已w:color
设置为绿色。其基本样式有 11 pt 文本
<w:style w:type="character" w:customStyle="1" w:styleId="grrr">
<w:name w:val="grrr"/>
<w:basedOn w:val="DefaultParagraphFont"/>
<w:uiPriority w:val="1"/>
<w:qFormat/>
<w:rsid w:val="009014C2"/>
<w:rPr>
<w:color w:val="00B050"/>
</w:rPr>
</w:style>
w:sz
未定义注意。
手动更改为 8 pts 后,XML 显示如下:
<w:sz w:val="16"/>
使用上面的 .BaseStyle 宏后,在 XML 中明确将其设置为 11 pts:
<w:sz w:val="22"/>
那是不是继承。这是对基本样式值的明确设置。
<w:sz w:val="22"/>
从 XML 中手动删除已恢复的继承。这是一个荒谬的解决方案。
在 UI 中,我们看到字体大小为 11 pts。这与基本样式的值相同,并且是使用 BaseStyle 方法设置的,但这与手动将其设置为 11 相同。
当我更改基本样式时,使用 Asset Title 格式化的文本不会改变。没有继承 - 只有 11 pts。
编辑 docname.docx\word\styles.xml 后(没有如果我们删除“继承”下的“线性化!”,<w:sz w:val="22"/>
我们会看到继承已恢复——字体大小控件为空,这是 Word 告诉我们该值是继承的方式。
当我更改基本样式时,使用 Asset Title 格式化的文本会发生变化。存在继承 - 它是 11 pts,因为它的父级是 11 pts。