So ersetzen Sie alle Bilder in Libreoffice durch ihre Beschreibung

12

Ich habe ein sehr langes Dokument mit vielen SVG-Bildern, die mit der Erweiterung TexMaths erstellt wurden. Diese Erweiterung verwendet die Latex-Installation, um ein SVG-Bild der eingegebenen Gleichung (oder eines Satzes von Gleichungen) zu erstellen. Der Latex-Code für jede Gleichung (oder einen Satz von Gleichungen) wird als Teil seiner Beschreibung in das Bild eingebettet. Auf eine solche Beschreibung kann zugegriffen werden, indem Sie mit der rechten Maustaste auf das SVG-Bild klicken und die Option Beschreibung auswählen.

Ich möchte alle SVG-Bilder mit einem geeigneten Makro durch die eingebetteten Beschreibungen ersetzen.

zB von

Die berühmte Einstein-Gleichung [svg embedded equation: E = mc 2 ] besagt, dass Masse in Energie umgewandelt werden kann und umgekehrt.

Zu

Die berühmte Einstein-Gleichung, E = mc ^ 2, besagt, dass Masse in Energie umgewandelt werden kann und umgekehrt.

Dadurch kann ich die odt-Datei, die zahlreiche TexMaths-Gleichungen enthält, von Hand in LaTeX konvertieren.

user30131
quelle
4
Sehen Sie sich die Antwort unter So entfernen Sie alle Bilder in einem Dokument in LibreOffice Writer an. . Es wird Ihnen die Grundlagen des Willens vermitteln, die Sie tun möchten, aber Sie müssen es ein wenig anpassen. Wenn Sie die erforderlichen Änderungen nicht vornehmen können, kann ich dies möglicherweise tun. aber ich würde nicht in der Lage sein, es für ein paar Tage zu bekommen.
chaskes
4
Nun, tnx viel. Tatsächlich habe ich mir den obigen Beitrag angesehen, bevor ich die Frage gestellt habe. Der allgemeine Plan ist, eine Schleife zu machen, um jedes SVG-Bild zu durchlaufen. Lesen Sie für jedes Bild die Beschreibung und entfernen Sie unnötige Zeichen, damit eine reine Gleichung oder so etwas wie \ begin {} .. \ end {} übrig bleibt. Dann entfernen Sie das SVG-Bild. Was mich jetzt verwundert, ist die Frage, ob der Text an die Stelle des gelöschten Bildes gesetzt wird. Die meisten davon sind übrigens als Charaktere verankert.
user30131
Nur eine Idee, versuchen Sie graphmonkey mit dem Source-Code von libre-office bezüglich Icons / Bildern zu kombinieren ?!
Dschinn1001
@ dschinn1001 Danke, BTW TexMaths ist Plugin für Formeln. Könnten Sie bitte mehr erklären. Ich konnte keine Ahnung haben, wie Graphmonky TexMaths-Zeichenobjekte in seine Beschreibung umwandelt. Mit anderen Worten, ich habe vorher nichts über graphmonkey gehört. Hat es eine Option, Sie dachten, es könnte zur Lösung des Problems führen?
user.dz

Antworten:

2

Dies ist ein anderer Weg, ohne Makros zu verwenden. Da es sich bei der .odtDatei im Grunde nur um gezippte Dateien handelt, handelt es sich bei der Hauptdatei um eine XML-Datei.

  1. Erstellen Sie ein XML-Stylesheet texmath_raw_equation.xslt

    Vollständiger Inhalt ist hier, nur für den Fall, Link Bremsen.

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" version="1.0">
    
        <xsl:template match="@* | node()">
          <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
          </xsl:copy>
        </xsl:template>
    
        <xsl:template match="draw:g">
            <xsl:value-of select="svg:desc"/>
        </xsl:template>
    
    </xsl:stylesheet>
    
  2. Extrahieren Sie .odtDatei auf tmpOrdner, zB texmath_test.odt:

    7z x -otmp texmath_test.odt
    
  3. Ersetzen Sie TexMath-Bild (durch <draw:g></draw:g>Tag halten ) durch seine Beschreibung (durch <svg:desc></svg:desc>Tag halten )

    xsltproc -o content.xml texmath_raw_equation.xslt tmp/content.xml
    mv content.xml tmp/content.xml
    
  4. Komprimiere zurück zu neuer .odtDatei

    cd tmp
    7z a -tzip ../texmath_test_new.odt *
    cd ..
    rm -r tmp
    

Verweise:

user.dz
quelle