Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


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.