Suporte MathML no Microsoft 365

As aplicações do Microsoft 365 (Word, PowerPoint, Excel e OneNote) podem importar e exportar MathML (Linguagem de Marcação Matemática). Este documento descreve que elementos, atributos e padrões MathML são suportados e que limitações se aplicam.


Importação de MathML (MathML → Matemática do Office)

Versão MathML suportada

O importador suporta MathML 3 (MathML de Apresentação), incluindo elementos e atributos preteridos no MathML Core, mas ainda utilizados, como <mfenced>, <maligngroup>, <malignmark>e o mathvariant atributo .

Processamento de espaços de nomes

O <math> elemento raiz tem de utilizar o espaço de nomes http://www.w3.org/1998/Math/MathMLMathML. Os prefixos de espaço de nomes são aceites (por exemplo, <m:math xmlns:m="...">). Um erro de criação comum ( omitindo o http: protocolo ) é corrigido automaticamente antes da importação.

O display="block" atributo em <math> é reconhecido e produz uma equação de modo de apresentação (centrado). Sem ela, a equação está inline.

Elementos suportados

Elementos de token

Elemento Descrição
<mi> Identificador (variável, nome da função)
<mo> Operador ou caráter de vedação
<mn> Número
<mtext> Texto
<ms> Literal de cadeia (com lquote/rquote atributos)
<mspace> Espaço explícito (com width, height, depth)
<mglyph> Referência do Glifo

Elementos de esquema

Elemento Descrição
<mrow> Grupo horizontal de subexpressões
<mfrac> Fração
<msqrt> Raiz quadrada
<mroot> n-th raiz
<msub> Subscrito
<msup> Sobrescrito
<msubsup> Inferior à linha e superior à linha
<munder> Inferior à linha (limite abaixo)
<mover> Superior à linha (limite acima/destaque)
<munderover> Scripts por baixo e por cima
<mmultiscripts> Vários prescripts e postscripts
<mprescripts/> Separador entre postscripts e prescripts em <mmultiscripts>
<none/> Marcador de posição de script vazio no <mmultiscripts>
<mfenced> Expressão vedada (delimitada) — Legado MathML 3
<menclose> Bastidor (caixa, círculo, rasurado, etc.)
<mphantom> Conteúdo invisível (ocupa espaço)
<mpadded> Caixa de espaçamento ajustável
<mstyle> Alteração de estilo (atributos herdáveis)
<merror> Apresentação de erros (composta como fórmula em caixa)

Elementos da tabela

Elemento Descrição
<mtable> Matriz ou tabela
<mtr> Linha da tabela
<mlabeledtr> Linha de tabela etiquetada
<mtd> Célula da tabela
<maligngroup> Marcador de grupo de alinhamento
<malignmark> Marcador de contorno de alinhamento

Elementos de anotação

Elemento Descrição
<semantics> Wrapper de anotação semântica
<annotation> Anotação de texto (por exemplo, origem LaTeX)
<annotation-xml> Anotação XML (por exemplo, Content MathML)

Quando <semantics> está presente, o primeiro subordinado (Presentation MathML) é utilizado para composição. <annotation> e <annotation-xml> as crianças são atualmente ignoradas.

Outros

Elemento Descrição
<maction> Elemento de ação — primeiro subordinado utilizado para composição

Atributos com suporte

Atributos globais

Estes atributos são aceites na maioria dos elementos:

Atributo Values Padrão Descrição
mathvariant Veja a tabela abaixo normal* Variante do tipo de letra
mathsize small, normal, bigou comprimento herdado Tamanho do tipo de letra
mathcolor Nome da cor ou #RRGGBB herdado Cor de primeiro plano
mathbackground Nome da cor ou #RRGGBB transparent Cor da tela de fundo

* Para elementos de tokens em geral, a predefinição MathML é normal, mas para elementos de caráter <mi> único, a predefinição é itálico.

Não há suporte para dir.

mathvariant valores

Todos os 18 valores MathML 3 mathvariant são reconhecidos:

Valor Mapeamento OMML
normal Vertical (simples)
bold Negrito
italic Itálico
bold-italic Negrito e itálico
double-struck Duplo toque (negrito de quadro preto)
script Script (calligraphic)
bold-script Script a negrito → mapeado para script
fraktur Fraktur
bold-fraktur Negrito → mapeado para fraktur
sans-serif Sans-serif
bold-sans-serif Negrito sans-serif → mapeado a negrito
sans-serif-italic → itálico sans-serif mapeados para itálico
sans-serif-bold-italic → itálico negrito sem serifa mapeado a negrito itálico
monospace Espaço monoespaço
initial Inicial (Árabe)
tailed Caudal (Árabe)
looped Looped (Árabe)
stretched Disperso (árabe)

<mo> atributos de operador

Atributo Values Padrão Descrição
stretchy true, false dicionário de operador Se o operador se alonga
fence true, false dicionário de operador Se o operador é uma vedação/parêntese reto
separator true, false dicionário de operador Se o operador é um separador
largeop true, false dicionário de operador Se o operador é um operador grande
accent true, false dicionário de operador Se o operador é um destaque
movablelimits true, false dicionário de operador Se os limites podem ser movidos
lspace Comprimento dicionário de operador Espaçamento à esquerda
rspace Comprimento dicionário de operador Espaçamento à direita
form prefix, infix, postfix automático (determinado a partir da posição) Formulário de operador

Os valores predefinidos para os atributos são determinados a partir de um dicionário de operador. Apenas stretchy, largeop, separatore fence podem ser substituídas por valores explícitos.

<mfrac> atributos

Atributo Values Padrão Descrição
linethickness Comprimento ou medium0 medium Espessura da barra de fração. 0 produz um coeficiente binomial (sem barra). thin e thick não são suportados.
bevelled true, false false Fração distorcida (inline)

<mfenced> atributos (legado MathML 3)

Atributo Padrão Descrição
open ( Abrir o caráter delimitador
close ) Caráter delimitador de fecho
separators , Carateres separadores entre elementos subordinados

<mfenced> é expandido internamente para o equivalente <mrow> com <mo> delimitadores. Por exemplo:

<mfenced open="[" close="]" separators=",">
  <mi>a</mi><mi>b</mi><mi>c</mi>
</mfenced>

é equivalente a:

<mrow>
  <mo>[</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>]</mo>
</mrow>

Nota: quando U+251C ├ e U+2524 ┤ são utilizados como delimitadores de cerca, são tornados invisíveis. As versões anteriores das aplicações do Microsoft 365 podem tê-las exportado para delimitadores invisíveis.

<menclose> atributos

Atributo Values Padrão Descrição
notation bottom, box, downdiagonalstrike, horizontalstrike, left, madruwb, none, radical, right, top, updiagonalstrike, verticalstrike none (A predefinição MathML 3 de longdiv não é suportada.) Estilos de bastidor. actuarial, circle, longdiv, phasoranglee roundedbox não são suportados.

Podem ser combinados vários valores de notação (separados por espaço).

<munder> / <mover> / <munderover> atributos

Atributo Values Padrão Descrição
accent true, false automatic Se a linha superior é um destaque
accentunder true, false automatic Se o inferior à linha é um destaque

<msub> / <msup> / <msubsup> atributos

subscriptshift e superscriptshift não são suportados.

<mtable> atributos

rowalign, , columnaligncolumnwidth, rowspacing, columnspacing, width, alignmentscope, frame, e framespacing não são suportados.

<mtr> e <mtd> atributos

rowalign, columnalign, rowspane columnspan não são suportados.

<mpadded> atributos

width, lspace, heighte depth não são suportados.

<mspace> atributos

width, heighte depth não são suportados.

Referências de carateres

Standard referências de carateres numéricos XML (&#x221A;, &#8730;) são suportadas em todas as entradas MathML.

As referências de carateres com nome HTML (&alpha;, &le;, &InvisibleTimes;, etc.) só são suportadas quando MathML é incorporado em HTML. Estas não fazem parte das especificações XML ou MathML e não são reconhecidas ao importar XML MathML autónomo. Consulte a secção HTML abaixo para obter detalhes.

As referências de carateres nomeados nunca são escritas durante a exportação de MathML. Todos os carateres são escritos como Unicode literal, exceto <, >e &, que têm de ser codificados em XML.

Dicionário de operador

O importador inclui um dicionário de operador incorporado que fornece propriedades de composição predefinidas para operadores comuns. Isso inclui:

  • Carateres de vedação:(, ), [, ], {, |}, , , , , , , , , , , , e CJK
  • Operadores dispersos: Setas, parênteses retos, sinais integrais, radicais, chavetas e parênteses
  • Operadores grandes: ∑, ∏, ∐, ∫, ∮, ∮∮, ⊕, ⊗, ⊙, ⋂, ⋃, ⋀, ⋁, etc.
  • Operadores de destaque: Circunflexo, til, macron, letra modificadora macron, breve, ponto, agudo, grave, carão, setas (como acima da linha), chavetas e parênteses retos
  • Operadores de limites móveis: ∑, ∏, ⋂, ⋃, lim, max, min e outros

Tradução de destaques espaçamento para combinação

Os carateres de destaque de espaçamento em MathML (por exemplo, U+02C6 circunflexo, til U+02DC) são traduzidos automaticamente para os formulários de combinação para utilização em construções de destaque OMML. Isto é necessário porque MathML utiliza formulários de espaçamento no <mo> , enquanto o OMML requer a combinação de carateres.


Exportação MathML (Expressões Matemáticas do Office → MathML)

Formato de saída

A exportação MathML produz a saída compatível com MathML Core na maioria dos casos. Evita as funcionalidades legadas do MathML 3:

  • Não <mfenced>: as expressões delimitadas são escritas como <mrow> com um abridor explícito <mo> , conteúdo e <mo> mais perto, com exceção de o OneNote copiar matemática para a área de transferência.

  • Não <maligngroup> ou <malignmark>: as colunas são adicionadas ao para alinhar o <mtable> conteúdo nos pontos de alinhamento com o espaçamento entre colunas 0. Tenha em atenção que o espaçamento e o alinhamento das colunas têm suporte limitado em todo o ecossistema.

  • Nenhum mathvariant atributo para carateres com estilo: em vez de mathvariant="bold" em <mi>, a exportação emite Símbolos Alfanuméricos Matemáticos Unicode do plano suplementar (U+1D400–U+1D7FF) ou símbolos matemáticos semelhantes a letras Unicode do intervalo U+2100–U+214F. Por exemplo, negrito itálico x é escrito como U+1D499 em vez <mi mathvariant="bold-italic">x</mi> de e o script H é escrito como U+210B em vez de <mi mathvariant="script">H</mi>. O mathvariant="normal" atributo é utilizado apenas para identificadores de múltiplos carateres que não devem ser itálicos.

Uma exceção é que <menclose> pode ser utilizada no MathML exportado.

Mapeamento de elementos OMML para MathML

A tabela seguinte mostra como os elementos OMML são convertidos em MathML.

Elemento OMML Saída MathML
<m:oMathPara> <math display="block">
<m:oMath> (inline) <math>
<m:f> (fração, barra) <mfrac>
<m:f> (fração, sem barra) <mfrac linethickness="0"> (binomial)
<m:f> (fração, distorcido) <mfrac bevelled="true">
<m:f> (fração, linear) <mrow>num<mo>/</mo>den</mrow>
<m:rad> (sem grau) <msqrt>
<m:rad> (com grau) <mroot>
<m:d> (delimitador) <mrow><mo>(</mo>...<mo>)</mo></mrow>
<m:d> (com separadores) <mrow><mo>(</mo>...<mo>\|</mo>...<mo>)</mo></mrow>
<m:nary> <munderover>, <munder>ou<msup><msub>/com <mo> o operador
<m:acc> <mover accent="true">
<m:bar> (superior) <mover> com <mo> caráter de barra
<m:bar> (inferior) <munder> com <mo> caráter de barra
<m:groupChr> <munder> ou <mover> com caráter de agrupamento
<m:limLow> <munder>
<m:limUpp> <mover>
<m:func> <mrow> com <mo>&#x2061;</mo> (ApplyFunction)
<m:sSub> <msub>
<m:sSup> <msup>
<m:sSubSup> <msubsup>
<m:sPre> <mmultiscripts> com <mprescripts/>
<m:m> (matriz) <mtable> / <mtr> / <mtd>
<m:eqArr> <mtable> com alinhamento
<m:borderBox> <menclose notation="box">
<m:box> <mpadded>
<m:phant> <mphantom>
<m:r> (executar) <mi>, <mn>, <mo>ou <mtext> consoante o conteúdo

Atributos escritos durante a exportação

Atributo Quando utilizado
display="block" Ativado <math> para equações do modo de apresentação
mathvariant="normal" Múltiplos carateres <mi> que devem estar na vertical (por exemplo, nomes de funções)
mathcolor Quando a execução tem uma cor de primeiro plano não predefinida
mathbackground Quando a execução tem uma cor de fundo não predefinida
accent="true" Ativado <mover> quando a linha superior é um destaque
accentunder="true" Ativado <munder> quando a linha inferior é um destaque
stretchy Ativado <mo> para delimitadores e operadores dispersos
separator="true" Ativado <mo> para carateres separadores em expressões delimitadas
fence="true" Ativado <mo> para carateres de cerca/parêntese reto
linethickness="0" Ativado <mfrac> para frações sem barras (binomials)
bevelled="true" Ativado <mfrac> para frações distorcidas/inline
columnalign Ativado <mtable> ou <mtd> para alinhamento de colunas
rowalign Ativado <mtable> ou <mtr> para alinhamento de linhas
notation Ativado <menclose> para estilos de box/strike

Processamento de tipos de letra durante a exportação

Em vez de utilizar o mathvariant atributo para carateres com estilo, a exportação converte os carateres nos respetivos equivalentes Alfanuméricos Matemáticos Unicode:

Estilo OMML Bloco Unicode Exemplo
Negrito U+1D400–U+1D433 A → 𝐀
Itálico U+1D434–U+1D467 um → um
Negrito e itálico U+1D468–U+1D49B x → x
Script U+1D49C–U+1D4CF L → L
Fraktur U+1D504–U+1D537 g → g
Duplo toque U+1D538–U+1D56B R → R
Sans-serif U+1D5A0–U+1D5D3 x → x
Espaço monoespaço U+1D670–U+1D6A3 x → x

Em alguns casos, são escritos símbolos matemáticos semelhantes a letras Unicode no intervalo U+2100–U+214F.

Esta abordagem produz resultados compatíveis com o MathML Core e não depende do suporte do compositor para o mathvariant atributo .


Codificação de Carateres

Importar codificação

O importador de MathML aceita a entrada nas seguintes codificações:

  • UTF-16LE — utilizado quando MathML é recebido através da área de transferência.
  • UTF-8 — utilizado quando MathML é lido a partir de ficheiros (por exemplo, documentos ODF, ficheiros HTML). A declaração XML (<?xml version="1.0" encoding="UTF-8"?>) no início da entrada é opcional.

Ambas as codificações suportam o intervalo Unicode completo. Para UTF-16LE, os pares de substituição são suportados para os carateres suplementares do plano (U+10000 e superiores).

Exportar codificação

  • UTF-16LE – a predefinição para a saída da área de transferência.
  • UTF-8 — para exportação baseada em ficheiros (atributos ODF, PDF).

O MathML exportado utiliza carateres Unicode literais. As referências de carateres nomeados (como &alpha;) nunca são escritas. As referências de carateres numéricos são utilizadas apenas quando são exigidas pelo serializador XML (por exemplo, &#x2061; para operadores invisíveis em alguns caminhos de código).


Suporte da área de transferência

As aplicações podem copiar e colar MathML para uma boa interoperabilidade com outras aplicações que suportam MathML.

MathML colocado na área de transferência durante a cópia

Nome do formato da área de transferência Descrição
MathML Marcação da Apresentação MathML (UTF-16LE)
MathML Presentation O mesmo conteúdo que MathML, registado como um formato separado para compatibilidade com aplicações que utilizam este nome

Os CF_TEXT formatos e CF_UNICODETEXT também são preenchidos com MathML se o utilizador tiver ativado a opção para o mesmo.

Formatos aceites durante a colagem

Ao colar, as aplicações marcar área de transferência para formatos específicos de matemática pela seguinte ordem de prioridade:

  1. MathML ou MathML Presentation
  2. CF_UNICODETEXT / CF_TEXT — importar como MathML é tentado e, se for bem-sucedido, é mantido. Caso contrário, a aplicação continua a tentar importar outros formatos.

HTML

MathML na importação de HTML

Quando o MathML é incorporado num documento HTML (por exemplo, colado a partir de uma página Web ou aberto como um ficheiro HTML), o analisador html extrai blocos <math>...</math> e transmite-os ao importador de MathML. Neste contexto, são reconhecidas mais de 2000 referências de carateres com nome HTML, incluindo:

  • Letras gregas: &alpha;, &beta;, &Gamma;, etc.
  • Operadores: &plus;, &minus;, &times;, &InvisibleTimes;, etc.
  • Relações: &le;, , &ge;&ne;, &equiv;, &subset;, etc.
  • Setas: &rarr;, , &harr;&larr;, &Rightarrow;, etc.
  • Letterlike: &Afr; (fraktur A), &Aopf; (duplo toque A), &Ascr; (script A), etc.
  • Operadores invisíveis: &InvisibleTimes; (U+2062), &ApplyFunction; (U+2061), &InvisibleComma; (U+2063)

Estas referências de carateres nomeados são definidas pela especificação HTML, não por XML ou MathML. Não são reconhecidos ao importar XML MathML autónomo (que só suporta referências de carateres numéricos, como &#x03B1; e &#945;).

MathML como uma ilha de dados XML com prefixo xmlns em HTML também é importado, embora não seja composto como matemática nativamente por browsers.

MathML na exportação DE HTML

MathML não é atualmente escrito ao exportar HTML. As equações na exportação HTML são compostas como imagens ou omitidas, consoante as definições de aplicação e exportação.


Formato Open Document (ODF)

Ao carregar e guardar documentos no Formato Open Document (.odt, .odp), o MathML é utilizado como o formato de equação. Ao carregar e guardar o Formato Open Document, o MathML é importado e exportado da mesma forma que o descrito acima.


Acessibilidade

Automação da Interface do Usuário (Windows)

No Windows, a representação MathML de cada equação é exposta na árvore de acessibilidade através de uma propriedade de Automação da Interface do Usuário (UIA) personalizada. As tecnologias de apoio, como os leitores de ecrã, podem ler esta propriedade para obter uma descrição matemática estruturada do conteúdo da equação.

Exportação de PDF/UA

Ao exportar para PDF, as equações são escritas com um atributoMSFT_MathML personalizado na árvore de etiquetas PDF/UA. Este atributo contém a marcação MathML para a equação. Os leitores de PDF que suportam este atributo podem utilizá-lo para tornar o conteúdo matemático acessível a tecnologias de apoio.


Limitações

Limitações de importação

  1. Content MathML não suportado. Só é importado o MathML da Apresentação. Os elementos MathML de Conteúdo (<apply>, <ci>, <cn>, <csymbol>, etc.) no interior <annotation-xml> são ignorados.

  2. <maction> parcialmente suportado. Apenas o primeiro subordinado de <maction> é composto. O actiontype atributo e o comportamento de seleção/alternância não são suportados.

  3. <mlabeledtr> tratado como <mtr>. A etiqueta (primeiro subordinado) é tratada como uma norma <mtd>.

  4. <mstyle> herança de atributos. A maioria dos atributos é herdada através <mstyle>de , mas algumas cadeias de herança complexas podem não estar totalmente resolvidas.

  5. <mpadded> dimensionamento. Os widthajustes , height, depthe lspace são analisados, mas mapeados para construções fantasma OMML, que têm um controlo de dimensionamento limitado em comparação com o modelo flexível da MathML.

  6. Quebra de linha. Os atributos de quebra de linha MathML (linebreak, linebreakstyle, lineleading, etc.) não são suportados.

  7. <menclose> cobertura de notação. Apenas é suportado um subconjunto de notation valores. Os valores não suportados (por exemplo, phasorangle, longdiv, actuarial) são ignorados.

  8. <ms> composição de cadeias de carateres. O <ms> elemento é tratado de forma semelhante a <mtext>. Os atributos e rquote personalizados lquote são reconhecidos, mas o comportamento de citação pode diferir da especificação MathML.

  9. Expansão de colunas/linhas. Os rowspan atributos e columnspan no <mtd> são analisados, mas as matrizes OMML não suportam a expansão, pelo que estes são ignorados.

  10. intent. o atributo MathML 4 intent não é suportado.

Limitações de exportação

  1. Não <semantics> ou <annotation>. O MathML exportado não inclui anotações semânticas nem representações alternativas.

  2. Sem numeração de equação. Os números/etiquetas de equação não são exportados.

  3. Tamanho e exportação de cores.mathsize, mathcolore mathbackground não são exportados.

  4. Alinhamento da matriz. O alinhamento de colunas do OMML é exportado, mas os padrões de alinhamento complexos (múltiplos grupos de alinhamento, âmbitos de alinhamento) podem não ser totalmente preservados.

  5. Operadores invisíveis. As construções OMML function-apply são exportadas com <mo>&#x2061;</mo> (ApplyFunction), mas nem todas as distinções de operadores invisíveis são preservadas.

  6. Sem MathML na exportação HTML. Ao guardar em HTML, as equações não são escritas como MathML.

Considerações de ida e volta

  • Importar → Exportação: MathML importado para o Office Math e depois exportado de volta para MathML produz uma saída semântica equivalente, mas a estrutura de markup pode ser diferente. Por exemplo, <mfenced> na entrada torna-se <mrow> com <mo> elementos na saída.

  • mathvariant → Alfanumérica Unicode: a utilização mathvariant="bold" de entrada é exportada através de Símbolos Alfanuméricos Matemáticos Unicode (U+1D400–U+1D7FF) ou símbolos matemáticos semelhantes a letras Unicode (U+2100–U+214F).

  • Referências de carateres → Carateres: As referências de carateres com nome na entrada HTML (por exemplo, &alpha;) são exportadas como carateres Unicode literais (α). Ambos são semanticamente idênticos.


Requisitos

Salvo indicação em contrário, as funcionalidades descritas aqui são suportadas no Microsoft 365 Versão 2606 (Compilação 20131.xxxxx) para Windows e Versão 16.110 para Mac e posterior. As versões anteriores suportam algumas, mas nem todas as funcionalidades descritas aqui.