有没有办法快速更改文档中所有公式的字体?也许有内置样式之类的...
我不想为新的样式设置默认样式,而是想改变现有的样式。
答案1
我不认为公式有内置样式。但是,你可以使用宏迭代所有公式并更改样式。法国 OpenOffice.org 常见问题解答有一个这样的宏的示例:
Sub Main
embeddedObjects = ThisComponent.getEmbeddedObjects()
elementNames = embeddedObjects.getElementNames()
for i=0 to UBOUND(elementNames)
element = embeddedObjects.getByName(elementNames(i)).Model
if (not isNull(element)) then
if (element.supportsService("com.sun.star.formula.FormulaProperties")) then
element.BaseFontHeight = 14
element.FontNameVariables= "Arial"
element.FontNameFunctions = "Arial"
element.FontNameNumbers= "Arial"
element.FontNameText= "Arial"
endif
endif
next i
ThisComponent.reformat()
End Sub
答案2
对于 LibreOffice,我必须对宏进行一些更改才能自动更新公式。我查看了OpenOffice 论坛紧接着现在的那个。
这是我使用过的宏:
REM ***** BASIC *****
Sub ReformatFormules
embeddedObjects = ThisComponent.getEmbeddedObjects()
elementNames = embeddedObjects.getElementNames()
for i=0 to UBOUND(elementNames)
element = embeddedObjects.getByName(elementNames(i)).Model
oXEO = embeddedObjects.getByName(elementNames(i)).ExtendedControlOverEmbeddedObject
iCurrentState = oXEO.currentState
oXEO.changeState(com.sun.star.embed.EmbedStates.UI_ACTIVE)
if (not isNull(element)) then
if (element.supportsService("com.sun.star.formula.FormulaProperties")) then
element.BaseFontHeight = 10
element.FontNameVariables= "Times New Roman"
element.FontVariablesIsItalic=1
element.FontNameFunctions = "Times New Roman"
element.FontNameNumbers= "Times New Roman"
element.FontNameText= "Times New Roman"
endif
endif
next i
End Sub
答案3
我尝试尽可能地简化它并使其尽可能快地运行(改变状态或“单击它”对我来说确实非常慢),然后我想出了这个解决方案:
Sub FormulaFontSizeChanger
f = InputBox("New font size:", "BaseFontHeight", 9)
o = ThisComponent.getEmbeddedObjects()
For i = 0 to o.count-1
if (not IsNull(o(i))) and (not IsNull(o(i).Model)) then
o(i).Model.BaseFontHeight = f
o(i).Component.BaseFontHeight = f
o(i).ExtendedControlOverEmbeddedObject.update()
endif
Next i
End Sub
这里的秘诀是 o(i).ExtendedControlOverEmbeddedObject.update()。它告诉 libreoffice 在内部更新/重新绘制嵌入对象,因此我们不必“欺骗”它进行更新。
看来可能没有必要同时更新组件和模型,但我觉得最好彻底一点。
顺便说一句,我正在使用 LibreOffice v4.3.4.1年龄变化率。