Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

Schriftgröße und Schriftart von Formeln an die Umgebung anpassen

Für Math-Objekte gibt es keine Formatvorlagen. Daher sind alle Eigenschaften der Formel direkt in der Formel gespeichert. Ändert man nun die Schriftgröße eines Textdokuments von 12pt auf 10pt, so wird die Schriftgröße in der eingebetteten Formeln nicht angepasst. Auch die Schriftart innerhalb einer Formel passt sich nicht automatisch an die Schriftart der Umgebung an. Von Hand müsste man jede Formel einzeln öffnen um Größe und Schriftart zu aktualisieren. Diese Arbeit nimmt Ihnen das Makro ab.

Das Makro AdaptFormulaTextFontAndSizeToEnvironment ändert die Schriftgröße aller Math-Formelobjekte in der Weise, dass die Schriftgröße des Objekts übernommen wird, an dem die Formel verankert ist. Außerdem wird die Schriftart des Ankers als Text-Schriftart der Formel übernommen und die Schrifteigenschaft fett bzw. nicht fett des Ankers wird auf die gesamte Formel übertragen. Bei Formeln, die als Zeichen verankert sind, wird die Information benutzt, die links der Formel steht, so wie die Information in der Format-Symbolleiste angezeigt wird. Formeln, die an der Seite oder am Rahmen verankert sind, werden nicht verändert, weil eine Seite bzw. Rahmen keine Eigenschaft Schriftgröße besitzt.

sub AdaptFormulaTextFontAndSizeToEnvironment
dim oCurrentController as variant: oCurrentController = ThisComponent.getCurrentController()
dim oDoc as variant: oDoc=ThisComponent
if not(oCurrentController.supportsService("com.sun.star.text.TextDocumentView")) then
    msgbox("Macro works only in text documents.")
    exit sub
end if
dim oModelTextDocument as variant: oModelTextDocument = oCurrentController.Model
dim oEmbeddedObjects as variant: oEmbeddedObjects = oModelTextDocument.EmbeddedObjects
dim nIndex as long
dim nEndIndex as long: nEndIndex = oEmbeddedObjects.Count-1
dim oEmbeddedObject as variant
dim oModel as variant
dim oAnchor as variant
dim fCharHeight as single
dim sCharFontName as String
dim EnumItalic: EnumItalic = com.sun.star.awt.FontSlant.ITALIC
dim EnumOblique: EnumOblique = com.sun.star.awt.FontSlant.OBLIQUE
dim bIsBold as boolean
dim bIsItalic as boolean
dim oXCOEO as variant: rem oExtendedControlOverEmbeddedObject
for nIndex=0 to nEndIndex
    oEmbeddedObject = oEmbeddedObjects.getByIndex(nIndex)
    oModel = oEmbeddedObject.Model: rem might be empty
    if Not(isEmpty(oModel)) then
        if oModel.supportsService("com.sun.star.formula.FormulaProperties") then
            rem It is a formula object.
            oAnchor = oEmbeddedObject.Anchor: rem Is NULL for page anchor
            if Not(isNull(oAnchor)) then
                if oAnchor.supportsService("com.sun.star.style.CharacterProperties") then
                    fCharHeight = oAnchor.CharHeight
                    oModel.BaseFontHeight = Int(fCharHeight): rem no decimal values for formula texts
                    sCharFontName = oAnchor.CharFontName
                    oModel.FontNameText = sCharFontName
                    bIsBold = (oAnchor.CharWeight>=150) 
                    oModel.FontTextIsBold = bIsBold
                    oModel.FontVariablesIsBold = bIsBold
                    oModel.FontFunctionsIsBold = bIsBold
                    oModel.FontNumbersIsBold = bIsBold
                    bIsItalic = ((oAnchor.CharPosture = EnumItalic) OR (oAnchor.CharPosture = EnumOblique))
                    oModel.FontTextIsItalic = bIsItalic
                    oXCOEO = oEmbeddedObject.ExtendedControlOverEmbeddedObject
                    oXCOEO.update()
                end if
            end if
        end if    
    end if
next nIndex
end sub


KategorieWriter KategorieMakro KategorieMath


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28