Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Bonjour,
Je souhaite modifier des formules dans des documents que j'ai déjà tapés pour augmenter l'espacement.
Comme il y en a un très grand nombre j'ai pensé que je pouvais adapter la macro que j'avais trouvée sur internet qui me permettait déjà de changer les polices et les tailles de police. J'ai cherché, fait des essais mais sans succès.
Merci.
Sub ChangeFormatFormule
oCurrentController = ThisComponent.getCurrentController()
oTextDocument = oCurrentController.Model
oEmbeddedObjects = oTextDocument.EmbeddedObjects
nEndIndex = oEmbeddedObjects.Count-1
for nIndex=0 to nEndIndex
oMathObject = oEmbeddedObjects.getByIndex(nIndex)
oModel = oMathObject.Model
if (not isNull(oModel)) then
if(not isEmpty(oModel)) then
if oModel.supportsService("com.sun.star.formula.FormulaProperties") then
' ou if oMathObject.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997" then
oModel.BaseFontHeight = 14
policeCommune= "Liberation Serif"
' Variables
oModel.FontNameVariables= policeCommune
oModel.FontVariablesIsItalic=true
oModel.FontVariablesIsBold=false
' Fonctions
oModel.FontNameFunctions = policeCommune
oModel.FontFunctionsIsItalic=false
oModel.FontFunctionsIsBold=false
' Nombres
oModel.FontNameNumbers= "Arial"
oModel.FontNumbersIsItalic=false
oModel.FontNumbersIsBold=false
' Texte
oModel.FontNameText= "Arial"
oModel.FontTextIsItalic=false
oModel.FontTextIsBold=false
' Mise à jour
oXCOEO = oMathObject.ExtendedControlOverEmbeddedObject
oXCOEO.update()
endif ' fin si formule
endif ' fin si pas vide
endif ' fin si pas null
next nIndex
ThisComponent.reformat() ' Met à jour tous les éléments du document
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Carole21 le 07 août 2023 11:20, modifié 2 fois.
La solution est assez simple. Comment faire pour trouver ?
1) Ecrire une formule par exemple {2}over{3}+{1}over{2}
2) Editer la formule et modifier Format -> Espacement en 87 par exemple.
La formule change immédiatement d'allure.
3) Installer Xray
4) Modifier votre code de la sorte
5) C'est la propriété RelativeSpacing qui est passée à 87 et qui donc doit être modifiée.
6) Remplacer Xray oModel par oModel.RelativeSpacing = 100 par exemple.
Bien cordialement.
LibreOffice 24.2 et OpenOffice 4.1.15 sous Ubuntu 23.10, Windows 7, Windows 10, MacOs Sonoma
J'ai ajouté mon fichier.
Par contre je ne vois pas comment être plus précise, le nom de réglage dans la formule est "Espacement" (voir capture d'écran du réglage). Je ne pense pas que ce soit dans les styles, je ne parle pas d'espacement avec mon texte mais bien de l'espacement dans la formule elle même.
Merci pour ta réponse ddorange, j'ai voulu tester mais j'ai cherché sur internet et je ne trouve pas où télécharger Xray.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.