So ändern Sie die Schriftart aller Gleichungen in LibreOffice Writer

4918
KovBal

Gibt es eine Möglichkeit, die Schriftart aller Gleichungen in einem Dokument schnell zu ändern? Vielleicht gibt es für sie einen eingebauten Stil oder so ...

Ich möchte keinen Standardstil für neue festlegen, sondern vorhandene ändern.

3

3 Antworten auf die Frage

3
A.Marsan

Für LibreOffice musste ich einige Änderungen am Makro vornehmen, um eine automatische Aktualisierung der Formel zu erhalten. Ich habe mir dieses Thema in den OpenOffice-Foren neben dem vorliegenden angesehen.

Hier ist das Makro, das ich verwendet habe:

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 
Ich habe festgestellt, dass dieses besser funktioniert, da es in das Objekt "einrastet" und die Größe des Objekts ändert. Allen vor 10 Jahren 0
2
Brecht Machiels

Ich glaube nicht, dass es einen eingebauten Stil für die Formeln gibt. Sie können jedoch ein Makro über alle Formeln iterieren und den Stil ändern. Die französische OpenOffice.org-FAQ enthält ein Beispiel für ein solches Makro:

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 
Dies funktioniert nicht, da es nach der ersten Iteration nicht möglich ist, das Modell des Elements zu bestimmen. Ich benutze LibreOffice 3.4.4. KovBal vor 12 Jahren 0
In Ihrem Dokument muss es eine besondere Art von Objekt geben. Ich habe eine Überprüfung hinzugefügt, um zu sehen, ob das Objekt über die Model-Eigenschaft verfügt. Ich hoffe, dass dieses Problem möglicherweise behoben wird. Brecht Machiels vor 12 Jahren 0
Diese Version funktioniert, danke! KovBal vor 12 Jahren 0
1
Narcoleptic Snowman

Ich habe versucht, dies so weit wie möglich zu vereinfachen und so schnell wie möglich laufen zu lassen (das Ändern des Status oder das "Anklicken" war für mich wirklich sehr langsam) und ich kam zu dieser Lösung:

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 

Die geheime Sauce ist hier das o (i) .ExtendedControlOverEmbeddedObject.update (). Dadurch wird libreoffice angewiesen, das eingebettete Objekt intern zu aktualisieren bzw. neu zu zeichnen, so dass wir es nicht in die Aktualisierung "hineinziehen" müssen.

Es scheint, dass es wahrscheinlich nicht notwendig ist, sowohl die Komponente als auch das Modell zu aktualisieren, aber ich denke, es ist besser, gründlich zu sein.

Übrigens, ich benutze LibreOffice v4.3.4.1 YMMV .