Hallo Jochen,
Jochen schrieb:
Hallo Regina,
Am 08.10.2011 20:47, schrieb Regina Henschel:
Ich habe inzwischen überlegt, ob man nicht etwas zu dem OASIS Standard
sagen sollte.
+ 1
Das könnte zusammen mit Informationen zu Makros in ein
Kapitel "Technische Einzelheiten".
Welches Handbuch meinst Du?
Hier meinte ich eigentlich das Math-Handbuch. Und ich wollte hier auch
nur beschreiben, wie im OASIS Standard die Math-Formeln behandelt
werden. Auch bei Makros geht es mir nicht um Makros an sich, sondern
darum, wie man mit Math-Formeln in Makros umgeht. Einen ersten Entwurf
kopiere ich hier rein, damit du siehst worum es mir geht. Beim ersten
Abschnitt über den Standard allgemein bin ich mir über den Ort nicht
sicher; das würde wohl eher in das Glossar gehören.
MfG
Regina
=Technische Einzelheiten=
==OASIS Open Document Format for Office Applications==
Das OpenDocument Format ist ein von der OASIS entwickelter Standard. Die
Spezifikationen befinden sich auf http://www.oasis-open.org/standards.
LibreOffice berücksichtigt aber auch schon neuere Entwicklungen wie sie
im technischen Komitee erarbeitet werden. Eine Übersicht bietet die
Website des Komitees
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office. Diese
Spezifikationen beziehen sich alle darauf, wie die Information
gespeichert ist. Sie enthalten keine Festlegungen wie die
Benutzeroberfläche aussieht und wie der Benutzer die Formeln bearbeitet.
In den ODF-Spezifikationen wurde für die Math-Formeln kein vollständig
neuer Standard festgelegt, sondern der schon vom World Wide Web
Consortium (W3C) für Formeln in Webseiten erarbeitete Standard
Mathematical Markup Language (MathML) wurde übernommen, siehe
http://www.w3.org/TR/2003/REC-MathML2-20031021. Von den dort
vorgesehenen zwei Arten „Presentation Markup“ und „Content Markup“ wird
in ODF die erstere benutzt. Es wird also mehr die Darstellung einer
Formel beschrieben als ihre mathematische Bedeutung.
Die Markup-Sprache MathML unterscheidet sich von dem Markup, das in
Kommandofenster benutzt wird. So lassen sich beispielsweise in der
Formel int from {i=1} to 3 {f(t) {nitalic d}t} die Teile from…to… nicht
übersetzen, sonder werden wie int_{i=1}^3 in MathML übertragen. Die
ursprüngliche Formel aus dem Kommandofenster ist eine StarMath 5.0
Kodierung. Damit diese nicht verloren geht, wird sie in einem
annotation-Element gespeichert. Andere Anwendungen brauchen dieses
Element weder auswerten noch bewahren und erzeugen ihrerseits auch keins.
Zu den Formeln gehört bei LibreOffice auch jeweils eine Ersatzgrafik. In
den Containerformaten odt, odf usw. liegen diese Grafiken in einem
separaten Ordner und sind zu dem eigentlichen Dokument intern verlinkt.
Benutzen Sie jedoch das Speicherformat „Open Dokument (Flat XML)“ oder
den Export nach XHTML, müssen diese Grafiken eingebettet werden. Dazu
werden sie in BASE64 kodiert.
=Handhabung von Formeln in Basic=
Dieser Abschnitt enthält keine Einführung in Basic, sondern beschreibt
nur einige spezielle Aspekte von Formeln.
Nähere Informationen zu den unten benutzten Typen und Services finden
Sie in
http://api.libreoffice.org/common/ref/com/sun/star/module-ix.html, Wenn
Sie die hier erwähnten Bezeichnungen über den Index suchen, gelangen Sie
schnell zu den relevanten Beschreibungen.
==Formeln im einem Writer-Dokument==
In einem Writer-Dokument liegen alle OLE-Objekte – und damit auch die
Formeln – in einer Sammlung von Typ SwXTextEmbeddedObjects.
oCurrentController = ThisComponent.getCurrentController()
oTextDocument = oCurrentController.Model
oEmbeddedObjects = oTextDocument.EmbeddedObjects
Diese Sammlung ist von 0 an durchnummeriert. Ein einzelnes Objekt
erhalten Sie über den Index
nEndIndex = oEmbeddedObjects.Count-1
for nIndex=0 to nEndIndex
oMathObject = oEmbeddedObjects.getByIndex(nIndex)
Um festzustellen, ob dieses Objekt tatsächlich eine Formel ist,
überprüfen Sie, ob es einen Sevice unterstützt, der nur von Formeln
unterstützt wird.
oModel = oMathObject.Model
if oModel.supportsService("com.sun.star.formula.FormulaProperties") then
oder Sie überprüfen, ob die CLSID, die jedes OLE-Object besitzt,
dasjenige eines Math-Objekts ist.
if oMathObject.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997" then
Über das Model ändern Sie dann die Eigenschaften der Formel, wie
beispielsweise die Basisschriftgröße.
oModel.BaseFontHeight = 12
Damit die Änderungen sichtbar werden, müssen die Formeln neu gezeichnet
werden. Die Eigenschaft ExtendedControlOverEmbeddedObject stellt einige
Methoden bereit, die sich speziell auf OLE-Objekte beziehen,
oXCOEO = oMathObject.ExtendedControlOverEmbeddedObject
oXCOEO.update()
==Formeln in einem Draw/Impress/Calc-Dokument==
In einem Draw-, Impress- oder Calc-Dokument, werden auch OLE-Objekte als
Zeichenobjekte angesehen. Nachdem Sie Zugriff auf ein einzelnes Objekt
haben, testen Sie, ob es ein OLE-Objekt ist und anschließend, ob es eine
Formel ist. Kernstück eines Makros ist dann beispielsweise
if oShape.supportsService("com.sun.star.drawing.OLE2Shape") then
if oShape.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997" then
oModelFormula = oShape.Model
oModelFormula.BaseFontHeight = 12
Ein explizites Update ist in hier nicht erforderlich.
--
Informationen zum Abmelden: E-Mail an discuss+help@de.libreoffice.org
Tips zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/discuss/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.