Comment remplacer toutes les images de Libreoffice par leur description

12

J'ai un très long document contenant beaucoup d'images svg créées en utilisant l'extension TexMaths. Cette extension utilise l'installation en latex pour créer une image svg de l'équation entrée (ou un ensemble d'équations). Le code latex de chaque équation (ou ensemble d'équations) est intégré à l'image dans le cadre de sa description. Une telle description est accessible en cliquant avec le bouton droit sur l'image svg et en choisissant l'option Description.

Je veux remplacer toutes les images svg en utilisant une macro appropriée, par les descriptions intégrées.

par exemple de

La célèbre équation d'Einstein, [équation intégrée svg: E = mc 2 ], nous dit que la masse peut être convertie en énergie et vice-versa.

À

La célèbre équation d'Einstein, E = mc ^ 2, nous dit que la masse peut être convertie en énergie et vice-versa.

Cela me permettra de convertir à la main le fichier odt contenant de nombreuses équations TexMaths en LaTeX.

user30131
la source
4
Jetez un œil à la réponse dans Comment supprimer toutes les images d'un document dans LibreOffice Writer? . Il vous donnera les bases de ce que vous voulez faire, mais vous devrez l'ajuster un peu. Si vous n'êtes pas en mesure d'apporter les modifications nécessaires, je pourrais peut-être le faire; mais je ne pourrais pas y accéder pendant quelques jours.
chasse le
4
Eh bien, beaucoup. En fait, j'ai regardé le post ci-dessus avant de poser la question. Le plan général est de faire une boucle pour parcourir chaque image svg. Pour chaque image, lisez la description et supprimez les caractères inutiles afin que ce qui reste soit une pure équation ou quelque chose comme \ begin {} .. \ end {}. Ensuite, supprimez l'image svg. Ce qui me laisse perplexe maintenant, c'est de mettre le texte à l'emplacement de l'image supprimée. La plupart d'entre eux sont ancrés en tant que personnages.
user30131
Juste une idée, essayez de combiner graphmonkey avec une partie code-source de libre-office concernant les icônes / images?!
dschinn1001
@ dschinn1001 Merci, BTW TexMaths est un plugin pour les formules. Pourriez-vous s'il vous plaît expliquer plus. Je ne pouvais pas savoir comment graphmonky convertira les objets de dessin TexMaths en sa description. En d'autres termes, je n'avais jamais entendu parler de graphmonkey; A-t-il une option, vous pensiez que cela pourrait conduire à résoudre le problème?
user.dz

Réponses:

2

C'est une manière différente sans utiliser de macros. Comme le .odtfichier est simplement des fichiers zippés et le fichier principal est un XML.

  1. Créer une feuille de style XML texmath_raw_equation.xslt

    Le contenu complet est ici, juste au cas où les freins de liaison.

    <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. Extraire le .odtfichier dans un tmpdossier, exemple texmath_test.odt:

    7z x -otmp texmath_test.odt
    
  3. Remplacer l'image TexMath (maintenue par <draw:g></draw:g>balise) par sa description (maintenue par <svg:desc></svg:desc>balise)

    xsltproc -o content.xml texmath_raw_equation.xslt tmp/content.xml
    mv content.xml tmp/content.xml
    
  4. Compressez dans un nouveau .odtfichier

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

Les références:

user.dz
la source