Guía de Math 26.2

Apéndice B
Detalles técnicos

Datos interesantes sobre Math

Derechos de autor

Este documento tiene derechos de autor © 2025 por el equipo de documentación de LibreOffice. Los colaboradores se listan más abajo. Se puede distribuir y modificar bajo los términos de la GNU General Public License versión 3 o posterior o la Creative Commons Attribution License, versión 4.0 o posterior.

Todas las marcas registradas mencionadas en esta guía pertenecen a sus propietarios legítimos.

Colaboradores

De esta edición

Christian Kühl

De esta edición (traducción y revisión)

B. Antonio Fernández.

Agradecimientos

Gisbert Friege, Regina Henschel, Christian Kühl, Florian Reisinger, Jochen Schiffers.

Comentarios y sugerencias

Puede dirigir cualquier comentario o sugerencia acerca de este documento al foro del equipo de documentación: https://community.documentfoundation.org/c/spanish/documentation/11.

Todo lo que publique en este foro, incluyendo su dirección de correo y cualquier otra información personal en el mensaje se archiva públicamente y no puede ser borrada.

Fecha de publicación y versión del programa

Versión en español publicada en diciembre de 2025. Basada en la versión 26.2 de LibreOffice.

Uso de LibreOffice en macOS

Algunas pulsaciones de teclado y opciones de menú son diferentes en macOS de las usadas en Windows y Linux. La siguiente tabla muestra algunas sustituciones comunes para las instrucciones dadas en este capítulo. Para una lista detallada vea la ayuda de la aplicación.

Windows o Linux

Equivalente en Mac

Efecto

Herramientas > Opciones

LibreOffice > Preferencias

Acceso a la configuración general

Clic con el botón derecho

Ctrl + clic
(o clic derecho)

Abre el menú contextual

Ctrl (Control)

⌘ (Comando)

Utilizado con otras teclas

F5

Mayús+⌘+F5

Abre el navegador del documento

F11

⌘+T

Abre la Barra lateral en la página Estilos

Detalles técnicos

Formato de documento abierto OASIS para aplicaciones de Oficina

En las especificaciones ODF no se definió ningún estándar completamente nuevo para las fórmulas matemáticas, sino que se adoptó el estándar Mathematical Markup Language (MathML) desarrollado por el «World Wide Web Consortium (W3C)» para fórmulas en paginas web (consulte https://www.w3.org/TR/MathML2/). De los dos tipos «etiquetas de presentación» y «etiquetas de contenido» que se proporcionan, el primero es el que se utiliza en ODF y su función es describir la representación de una fórmula en lugar de su significado matemático.

El lenguaje de etiquetas de MathML es diferente del código que se utiliza en el editor de fórmulas de Math. Por ejemplo, en la fórmula int from {i=1} to 3 {f(t) {nitalic d}t}, la parte de la fórmula from…  to… no se transfiere a MathML, sino que se traduce como int_{i=1}^3. Las fórmulas en el editor de fórmulas están codificadas en StarMath 5.0. Para que no se pierda se guarda como un elemento de anotación. Otras aplicaciones no necesitan evaluar ni guardar este elemento y tampoco crean ninguno.

En LibreOffice, las fórmulas también incluyen un objeto gráfico de reemplazo. En los formatos de archivo odt, odf, etc., estos gráficos están en una carpeta separada y están vinculados internamente al documento real. Sin embargo, si guarda en el formato de Documento de texto ODF en XML plano (.fodt) o exporta a XHTML, estos objetos gráficos se incrustan codificándolos en BASE64.

Manejo de fórmulas en Basic

Esta sección no proporciona una introducción a Basic, solo describe algunos aspectos específicos de las fórmulas.

Puede encontrar más información sobre los tipos y servicios utilizados en la página: https://api.libreoffice.org/. Si introduce los términos aquí mencionados en el buscador, encontrará las descripciones correspondientes.

Fórmulas en documentos de Writer

En un documento de Writer, todos los objetos OLE (y por tanto también las fórmulas) se encuentran en una colección del tipo «SwXTextEmbeddedObjects».

oCurrentController = ThisComponent.getCurrentController()
oTextDocument = oCurrentController.Model
oEmbeddedObjects
= oTextDocument.EmbeddedObjects

Esta colección está numerada del 0 en adelante. Mediante el índice, se puede obtener un único objeto:

nEndIndex = oEmbeddedObjects.Count-1
for nIndex=0 to nEndIndex
 oMathObject = oEmbeddedObjects.getByIndex(nIndex)

Para determinar si este objeto es realmente una fórmula, verifique si admite un servicio que solo sea compatible con fórmulas:

oModel = oMathObject.Model
if oModel.supportsService("com.sun.star.formula.FormulaProperties") then

O puede comprobar que el CLSID que tiene cada objeto OLE es el de un objeto Math:

if oMathObject.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997" then

Use el modelo para cambiar las propiedades, como el tamaño del Tipo de letra

oModel.BaseFontHeight = 12

Para que los cambios sean visibles, es necesario volver a dibujar las fórmulas. La propiedad «ExtendedControlOverEmbeddedObject» proporciona métodos específicos de los objetos OLE:

oXCOEO = oMathObject.ExtendedControlOverEmbeddedObject
oXCOEO
.update()

Para aclarar, aquí hay un ejemplo de cómo puede cambiar todo el formato de todas las fórmulas en un documento:

Sub ChangeFormatFormule
 oCurrentController = ThisComponent.getCurrentController()
 oTextDocument = oCurrentController.Model
 oEmbeddedObjects = oTextDocument.EmbeddedObjects
 nEndIndex = oEmbeddedObjects.Count-1
 for nIndex=0 to nEndIndex
   oMathObject = oEmbeddedObjects.getByIndex(nIndex)
   oModel = oMathObject.Model
   if (not isNull(oModel)) then
     if (not isEmpty(oModel)) then
       if oModel.supportsService
         ("com.sun.star.formula.FormulaProperties") then
       ' o también: if oMathObject.CLSID =
       ' "078B7ABA-54FC-457F-8551-6147e776a997" then
         oModel.BaseFontHeight = 11
         policeCommune= "Liberation Serif"
       ' Variables
         oModel.FontNameVariables = policeCommune
         oModel.FontVariablesIsItalic = true
         oModel.FontVariablesIsBold = false
       ' Funciones
         oModel.FontNameFunctions = policeCommune
         oModel.FontFunctionsIsItalic = false
         oModel.FontFunctionsIsBold = false
       ' Números
         oModel.FontNameNumbers = policeCommune
         oModel.FontNumbersIsItalic = false
         oModel.FontNumbersIsBold = false
       ' Texto
         oModel.FontNameText = policeCommune
         oModel.FontTextIsItalic = false
         oModel.FontTextIsBold = false
       ' Actualizar
         oXCOEO = oMathObject.ExtendedControlOverEmbeddedObject
         oXCOEO.update()
       endif
     endif
   endif
 next nIndex
 ThisComponent.reformat() 'Actualizar todos los elementos del documento
End Sub

Para una lista completa de las configuraciones que puede cambiar, consulte la página https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1formula_1_1FormulaProperties.html

Fórmulas en documentos Draw/Impress/Calc

En un documento Draw, Impress o Calc, los objetos OLE también se consideran objetos de dibujo. Una vez que tenga acceso a un único objeto, compruebe si es un objeto OLE y luego si es una fórmula. El núcleo de una macro es, por ejemplo:

if oShape.supportsService("com.sun.star.drawing.OLE2Shape") then
 if oShape.CLSID = "078B7ABA-54FC-457F-8551-6147e776a997" then
   oModelFormula = oShape.Model
   oModelFormula.BaseFontHeight = 12

Aquí no se requiere una actualización explícita como oXCOEO.update().

Contenido