unicode-math: Use fonte de texto para dígitos numéricos no modo matemático

unicode-math: Use fonte de texto para dígitos numéricos no modo matemático

Usando XeTeX com fontspece unicode-math, gostaria de usar a fonte principal dos documentos para fordígitos(números) no modo matemático. Além disso, gostaria de fazer \text{}no modo matemático usar números de forro, enquanto o padrão para o documento são números OldStyle. Como posso conseguir esse comportamento?

Tentei inserir \setmathfont[range=\mathup/{num}]{Linux Libertine O}mas não deu o resultado desejado.

Aqui está um MWE, apontando os problemas:

\documentclass{article}
\usepackage{iftex}

\usepackage{libertine}
\usepackage{fontspec} 
\setmainfont[Numbers=OldStyle]{Linux Libertine O} 

\usepackage{amsmath}

\usepackage{unicode-math}
% Here I try to set up the normal text font for digits in mathmode: 
\setmathfont[range=\mathup/{num}]{Linux Libertine O}

\parindent0pt

\begin{document}

This is \ifXeTeX XeTeX\fi\ifLuaTeX LuaTeX\fi 
with \fontname\font
\bigskip

Text numbers: 
0123456789; italic: \textit{0123456789}; bold: \textbf{0123456789} 

Text numbers lining: 
\liningnums{0123456789; italic: \textit{0123456789}; bold: 
\textbf{0123456789}}

Numbers in mathmode: $0123456789$ (ok)\\
mathit: $\mathit{0123456789}$ (wrong font)\\
mathbf: $\mathbf{0123456789}$ (wrong font)\\
mathrm: $\mathrm{0123456789}$ (wrong font)\\
text (math): $\text{0123456789}$ (should be lining)

In big equation, fonts for big brackets $\big( \Big( \bigg( \Bigg($ are
missing: 
\[
\left(\frac{12a}{34b}\right)
\]

\end{document}

Usando XeTeX, isso resulta em:

insira a descrição da imagem aqui

Portanto, existem 3 problemas:

  1. Linux Libertine Opara dígitos não aparece em \mathrm, \mathite \mathbfetc.
  2. Os grandes colchetes não estão funcionando. (Veja mais sobre isso abaixo.)
  3. Existe uma maneira de obter números de revestimento no modo matemático, \text{}embora o estilo do número do documento seja OldStyle?

Em relação ao problema 1, isso se deve ao fato de range=\mathup/{num}se aplicar apenas a textos matemáticos verticais. Alguém sabe como aplicar este comando para todos os números em todos os intervalos? usar apenas range={num}resulta em um erro.

Em relação ao problema 2, tenho mais duas informações. A) Usando LuaTeX no mesmo arquivo, os colchetesapareça, mas sem ser dimensionado:

insira a descrição da imagem aqui

B) Se eu comentar a linha \setmathfont[range=\mathup/{num}]{Linux Libertine O}, o problema não ocorre. Isso sugere que o mecanismo de colchetes é afetado pela alteração da fonte dos números, o que não deveria ser, certo?

insira a descrição da imagem aqui

A propósito, esse problema não é específico do Linux Libertine O. Também apareceu quando eu estava usando SabonNextLTProcomo fonte principal do documento.

Responder1

Enquanto isso, até que alguém tenha uma ideia, pensei em compartilhar uma solução alternativa. Basicamente, está revertendo para mathspecem vez de unicode-math. Quase tudo funciona imediatamente em apenas três linhas:

\documentclass{article}
\usepackage{iftex}

\usepackage[no-math]{fontspec} 
\usepackage{libertine}
\setmainfont[Numbers=OldStyle]{Linux Libertine O} 

\usepackage{amsmath}
\usepackage{mathspec}
\setmathfont(Digits){Linux Libertine O}

\parindent0pt

\begin{document}

This is \ifXeTeX XeTeX\fi\ifLuaTeX LuaTeX\fi 
with \fontname\font
\bigskip

Text numbers: 
0123456789; italic: \textit{0123456789}; bold: \textbf{0123456789} 

Text numbers lining: 
\liningnums{0123456789; italic: \textit{0123456789}; bold: 
\textbf{0123456789}}

Numbers in mathmode: $0123456789$ (ok)\\
mathit: $\mathit{0123456789}$ (correct font but no italic)\\
mathbf: $\mathbf{0123456789}$ (correct font but no boldface)\\
mathrm: $\mathrm{0123456789}$ (ok)\\
text (math): $\text{0123456789}$ (should be lining)

In equations, testing fonts for big brackets $\big( \Big( \bigg( \Bigg($: 
\[
\left(\frac{12a}{34b}\right)
\]

\end{document}

insira a descrição da imagem aqui

informação relacionada