Größe oder Schriftart für alle Formeln in einem Dokument löschen

    From The Document Foundation Wiki
    < Macros‎ | Math
    This page is a translated version of the page Macros/Math/001 and the translation is 100% complete.


    Other languages:

    Beschreibung

    Zur Änderung eines Attributes in allen ihren Formularen foge man der Beschreibung unter Faq/Math/008 (in Französisch). Zur Änderung im Einzelfall müssen alle Formeln einzeln abgeändert werden. Bei einer grossen Anzahl Formeln kann das schnell sehr aufwändig werden.

    Dieses Sktipt wählt im Dokument eingebettete Formelobjekte aus[1]. Dieses Makro löst das Problem i#5092.

    Code

    In LibreOffice Basic:

    Option Explicit
    
    Sub ChangeFormulasSizeAndFont()
        '''Ändere die Größe oder die Schriftart aller Math Formeln im Dokument'''
        Dim embeddedObjects As Object ' com.sun.star.text.TextEmbeddedObjects
        Dim elementNames() As String ' Name array
        Dim element As Object ' com.sun.star.text.TextEmbeddedObject.Model
        Dim realElem As Object ' com.sun.star.text.TextEmbeddedObject.(get)EmbeddedObject
    
        embeddedObjects = ThisComponent.getEmbeddedObjects() ' com.sun.star.text.TextEmbeddedObjects
        elementNames = embeddedObjects.getElementNames() ' name array
    
        For i = 0 To UBound(elementNames)
    
            element = embeddedObjects.getByName(elementNames(i)).Model
            If (not isNull(element)) Then
                With element ' com.sun.star.text.TextEmbeddedObject.Model
                If .supportsService("com.sun.star.formula.FormulaProperties") Then
                    ' Erzwinge die Aktualisierung
                    realElem = embeddedObjects.getByName(elementNames(i)).EmbeddedObject
                    realElem.updateMode = com.sun.star.embed.EmbedUpdateModes.ALWAYS_UPDATE
                    .BaseFontHeight = 14
                    .FontNameVariables = "Arial"
                    .FontNameFunctions = "Arial"
                    .FontNameNumbers = "Arial"
                    .FontNameText = "Arial"
                End If
                End With ' element As com.sun.star.formula.FormulaProperties
           End If
    
         Next i
     
        ThisComponent.reformat()
    
    End Sub ' ChangeFormulasSizeAndFont

    in Phyton:

    # coding: utf-8
    from __future__ import unicode_literals
    
    import uno
    # from com.sun.star.document import OfficeDocument
    
    FRAME_DESKTOP = 'com.sun.star.frame.Desktop'
    FORMULA_PROPERTIES = 'com.sun.star.formula.FormulaProperties'
    
    class UIFormulaCollection():
        """ Aktuelles Dokument Formelsammlung """
        def __init__(self):
            """ Durchsuche standardmäßig das aktuelle Dokument am Bildschirm """
            # ctx = uno.getComponentContext()  # GetDefaultContext
            # smgr = ctx.getServiceManager()  # GetProcessServiceManager
            # desktop =  smgr.createInstanceWithContext(FRAME_DESKTOP, ctx)  # StarDesktop
            # self.doc = desktop.CurrentComponent  # ThisComponent
            self.doc = XSCRIPTCONTEXT.getDocument()
            self.objects = self.doc.EmbeddedObjects
            self.names = self.objects.getElementNames()
        def reformat(self, fontHeight=None, font=None):
            """ füge alle gewünschten Eigenschaften hinzu """
            for name in self.names:
                element = self.objects.getByName(name).Model
                if element.supportsService(FORMULA_PROPERTIES):
                    if font:
                        element.FontNameFunctions = font
                        element.FontNameText = font
                        element.FontNameNumbers = font
                        element.FontNameVariables = font
                    if fontHeight:
                        element.BaseFontHeight = fontHeight
                self.doc.reformat()
    
    
    def reformatAllFormulas():
        ui = UIFormulaCollection()
        ui.reformat(font="Arial", fontHeight=14)
    
    g_exportedScripts = reformatAllFormulas,


    ODT Dateien, um das Makro zu testen

    Zum Testen kann jedes veröffentlichte Math Handbuch herhalten.

    Hinweise

    • Siehe die API Dokumentation zu den FormulaProperties zu anderen änderbaren Eigenschaften.