Schriftart aller Formeln in einen Dokument ändern

Umfangreicher mathematischer Formeleditor

Moderator: Moderatoren

JensausHH2
Beiträge: 3
Registriert: Fr, 05.10.2007 18:01

Schriftart aller Formeln in einen Dokument ändern

Beitrag von JensausHH2 »

Ich habe das Problem, dass ich die Schriftart aller meiner Formeln in einem Dokument änedern möchte ohne jede einzelne Formel gleichzeit anklicken zu müssen - ok wurde schon gehostet - bitte weiterlesen !
Ich weiß das mit Hilfe von dmath die Größe und style geänedert für alle formeln gleichzeit geändert werden können aber nicht die Schriftart. Auf der Suche nach der Lösung dieses Problemes ist mir aufgefallen, das im Formeleditor unter Format - Schriftart auch ein leeres Feld für alle Formelschriften gewählt werden kann. Im Dokument wird dann aber sowas ähnliches wie "Arial" angezeigt. Weiß jemand um welche Schriftart sich es da handelt und wo man diese auswählen bzw. vorgeben kann. Bei Änderung dieser "Grundschriftart" würden sich ja dann vielleicht alle schriftarten in den Formeln ändern - oder ?!
Für jegliche Lösungsvorschläge wäre ich sehr dankbar.
Usch
**
Beiträge: 47
Registriert: Mo, 16.10.2006 21:31
Wohnort: Dresden

Re: Schriftart aller Formeln in einen Dokument ändern

Beitrag von Usch »

Hallo JensausHH2,
ich habe zwar mit dem Formeleditor noch keine großen Erfahrungen gemacht, auch
verwende ich DMath (noch) nicht. Ansonsten arbeite ich mit OpenOffice.org 2.3 unter Windows.
Du müßtest mit einer Kopie Deines Dokuments einmal folgendes probieren:
Wenn Du doppelt auf eine Deiner Formeln klickst, öffnet sich der Formeleditor. In der
Menüleiste mußt Du nach "Format/Schriftarten" navigieren. Dort findest Du dann einen
Button "Ändern ...". Hier kannst Du dann in verschiedenen Kategorien (Variablen, Funktionen,
Zahlen, Text, Serif, Sans und Fixed) die Grundschriftarten ändern und evtl. mit Attributen
(Fett, Kursiv) versehen. Ich habe es einmal ausprobiert und es hat funktioniert. Du mußt
nur die richtigen Kategorien finden. Ich hoffe, Dir geholfen zu haben.

Herzliche Grüße
Usch
Jensemann
***
Beiträge: 59
Registriert: Mo, 08.10.2007 12:51

Re: Schriftart aller Formeln in einen Dokument ändern

Beitrag von Jensemann »

Hallo,

meines Wissens nach ändert daas nur das Aussehen der aktuellen Formel und der neuen Formeln.
Die älteren Formeln müssen händisch geöffnet und neu gespeichert werden, aber wvtl gibt es dafür ja ein Makro.

Grüße

Jensemann
openSuSE 11.2 LibreOffice 3.6.1
Windows XP SP3 (in VirtualBox unter openSUSE 11.2) mit LibreOffice 3.5.4 sowie Apache OpenOffice 3.4.0
JensausHH2
Beiträge: 3
Registriert: Fr, 05.10.2007 18:01

Re: Schriftart aller Formeln in einen Dokument ändern

Beitrag von JensausHH2 »

Hallo,
genau, dass ist mein Problem! Die Änderungen wirken sich nur auf die eine Formel aus. Ich habe ungefähr 200 Formeln in meinen Dokument und muss diese ändern. Ein Makro habe ich bislang noch nicht gefunden. Die vorhandenen Makros greifen nur auf schriftsyle oder Schrftgröße zu! Aber unter "Format/Schriftarten" kann man auch die jeweiligen Felder leer lassen. Angezeigt wird dann so etwas wie Arial. Und meine Frage war, wo man diese Schriftart die standardmäßig für die Formeln verwendet wird (Bei leeren Feldern)ändern kann. Bei Kenntnis darüber, könnte man zukünftig die Felder leer lassen und wäre bei der gestaltung der Schriftart für alle Formeln im Dokument variable.
Dieses Problem ist meines Erachtens ein sehr sehr gr0ßer NAchteil von OpenOffice. Ich denke mittlerweile das ich mit LateX besser fahren würde. Aber ich würde mich freuen wenn wir zusammen eine Lösung finden würden - Vielen Dank für die bisherigen Beiträge!

Jens
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Re: Schriftart aller Formeln in einen Dokument ändern

Beitrag von Eia »

Ich hab mal ein Dokument mit Formeln entpackt und dabei festgestellt, dass es zu jeder Formel zwei Dateien gibt, eine "content.xml" und eine "settings.xml". Die Formate scheinen jeweils in der "settings.xml" zu stehen. Dafür ein Makro, dass alle 200 Formeln bearbeitet, ist sicher nicht ohne, aber frag doch mal im Basic-Forum nach.
mfG
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Re: Schriftart aller Formeln in einen Dokument ändern

Beitrag von Eia »

Auf dieser Seite wird ein Makro angeboten (AlterAllMathObjects.sxw), welches die Formateigenschaften aller Formeln anpassen soll. Ich hab's nicht selbst getestet.
mfG
gyckel
Beiträge: 6
Registriert: Mi, 19.09.2007 14:15

Re: Schriftart aller Formeln in einen Dokument ändern

Beitrag von gyckel »

Danke Eia für den Tipp,

ich habe mich in den letzten Tagen mit dem gleichen bzw. ähnlichen Problem herumgeschlagen, statt des Schriftfont wollte ich nur die Schriftgröße aller eingebetteten Formelobjekte ändern. Leider habe ich es nicht geschafft, das Makro "AlterAllMathObjects" von der Seite bei mir zum Laufen zu bringen. Nichtsdestotrotz war der Quellcode des Makros sehr hilfreich und ich habe mir für mein Problem folgendes Makro daraus zusammengeschustert:

Code: Alles auswählen

Option Explicit

' Last updated: 2004-10-22

'For setting the properties of all the Math objects in current Writer document
'to be the same as the currently selected Math object

'************************************************************
'	Copyright (c) 2004 Ian Laurenson
'	Anyone may run this code.
'	If you wish to modify or distribute this code, then
'	 you are granted a license to do so under the terms
'	 of the Gnu Lesser General Public License.
'	See:  http://www.gnu.org/licenses/lgpl.html
'************************************************************

sub AlterAllMathObjects
dim oDoc, oCurSelection
dim oDefaultMathObject, nObjectCounter as long, nMathObjects as long
dim oEmbeddedObjects, oEmbeddedObject, oMathObject
dim oPropertySetInfo, mProperties, sProperty as string
dim i as long, default, sVersion as string
dim nEmbeddedObjects as long


oDoc = ThisComponent
oEmbeddedObjects = oDoc.EmbeddedObjects
nEmbeddedObjects = oEmbeddedObjects.Count 'Anzahl aller eingebetteten Objekte in einem Dokument
oEmbeddedObject = oEmbeddedObjects.getbyindex(0) 'Ansicht eines Beispielobjektes im Debugger
msgbox "Anzahl der Objekte " & nEmbeddedObjects 

for nObjectCounter=0 TO nEmbeddedObjects-1 STEP 1
 oEmbeddedObject = oEmbeddedObjects.getByIndex(nObjectCounter)
 if oEmbeddedObject.clsid = "078B7ABA-54FC-457F-8551-6147e776a997" then
 	oEmbeddedObject.Component.BaseFontHeight = 12
' 	oEmbeddedObject.Component.FontNameFunctions = "TimesNewRoman"
' 	oEmbeddedObject.Component.FontNameNumbers = "TimesNewRoman"
' 	oEmbeddedObject.Component.FontNameText = "TimesNewRoman"
' 	oEmbeddedObject.Component.FontNameVariables = "TimesNewRoman"
 	nMathObjects = nMathObjects+1
 end if
next

msgbox "Anzahl Formeln " & nMathObjects
end sub
Ist natürlich programmiertechnisch nicht fein, aber es tut, was es eben tun soll.

In der FOR-Schleife werden alle eingebetteten Objekte betrachtet. Ist das aktuell betrachtete Objekt eine Formel (IF-Anweisung und Test auf die kryptische ClassID (clsid)), werden die entsprechenden Variablen des Objektes geändert, z.B. BaseFontHeight auf Schriftgröße 12 gesetzt.

Die Änderung der Schriftarten erfolgt vermutlich mit den auskommentierten Zeilen. Hier werden alle Schriftarten auf TimesNewRoman gesetzt. Die Änderung der Schriftarten habe ich aber nicht getestet!

Falls andere Variablen geändert werden sollen, empfehle ich eine Haltemarke vor dem ersten msgbox-Befehl zu setzt, und sich mit dem Debugger/Viewer das Objekt anzuschauen, dass nun unter dem Variablennamen oEmbeddedObject abgelegt wurde. Dort habe ich unter Components die Variable BaseFontHeight gefunden, über die die Schriftgröße gesteuert werden kann.

In meinem Dokument hatte ich ca. 800 Formeln und das Makro hat entsprechend lange (sehr lange) gerechnet. Es kann daher helfen, die FOR-Schleife nur über eine bestimmte Anzahl der Objekte laufen zu lassen.

so long
/gyckel
Gesperrt