Guía de Math 26.2
Apéndice B
Detalles técnicos
Datos interesantes sobre Math
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.
De esta edición (traducción y revisión)
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.
Nota
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.
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 |
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 |
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.
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.
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
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().