Come sostituire tutte le immagini in Libreoffice con la loro descrizione


12

Ho un documento molto lungo che contiene molte immagini svg create usando l'estensione TexMaths. Questa estensione utilizza l'installazione in lattice per creare un'immagine svg dell'equazione immessa (o insieme di equazioni). Il codice in lattice per ogni equazione (o insieme di equazioni) è incorporato nell'immagine come parte della sua descrizione. È possibile accedere a tale descrizione facendo clic con il pulsante destro del mouse sull'immagine svg e selezionando l'opzione Descrizione.

Voglio sostituire tutte le immagini svg usando una macro adatta, con le descrizioni incorporate.

es. da

La famosa equazione di Einstein, [svg embedded equation: E = mc 2 ], ci dice che la massa può essere convertita in energia e viceversa.

Per

La famosa equazione di Einstein, E = mc ^ 2, ci dice che la massa può essere convertita in energia e viceversa.

Questo mi permetterà di convertire a mano il file odt contenente numerose equazioni di TexMaths in LaTeX.


4
Dai un'occhiata alla risposta in Come rimuovere tutte le immagini in un documento in LibreOffice Writer? . Ti darà le basi del desiderio che vuoi fare, ma dovrai modificarlo un po '. Se non sei in grado di apportare le modifiche necessarie, potrei essere in grado di farlo; ma non sarei in grado di raggiungerlo per alcuni giorni.
Chaskes,

4
Bene, grazie mille. In effetti ho guardato il post sopra indicato prima di porre la domanda. Il piano generale è fare un ciclo per passare attraverso ogni immagine svg. Per ogni immagine, leggi la descrizione e rimuovi i caratteri non necessari in modo che ciò che rimane sia una pura equazione o qualcosa del tipo \ begin {} .. \ end {}. Quindi rimuovere l'immagine svg. Ciò che sono perplesso ora, è la questione di mettere il testo nella posizione dell'immagine cancellata. La maggior parte sono ancorati come personaggi.
user30131,

Solo un'idea, prova a combinare graphmonkey con parte del codice sorgente di libre-office per quanto riguarda icone / immagini ?!
dschinn1001,

@ dschinn1001 Grazie, BTW TexMaths è un plugin per le formule. Potresti spiegare di più. Non sono riuscito a capire come Graphmonky convertirà TexMaths per disegnare gli oggetti nella sua descrizione. In altre parole, non avevo mai sentito parlare di graphmonkey prima; Ha un'opzione, pensavi che potesse portare a risolvere il problema?
user.dz,

Risposte:


2

Questo è un modo diverso senza usare le macro. Poiché il .odtfile è fondamentalmente solo file compressi e il file principale è un XML.

  1. Crea un foglio di stile XML texmath_raw_equation.xslt

    I contenuti completi sono qui, nel caso in cui i freni di collegamento.

    <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. Estrai il .odtfile nella tmpcartella, ad esempio texmath_test.odt:

    7z x -otmp texmath_test.odt
    
  3. Sostituisci l'immagine TexMath (mantieni per <draw:g></draw:g>tag) con la sua descrizione (mantieni per <svg:desc></svg:desc>tag)

    xsltproc -o content.xml texmath_raw_equation.xslt tmp/content.xml
    mv content.xml tmp/content.xml
    
  4. Comprimi nuovamente in un nuovo .odtfile

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

Riferimenti:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.