
Usando XeTeX com fontspec
e 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:
Portanto, existem 3 problemas:
Linux Libertine O
para dígitos não aparece em\mathrm
,\mathit
e\mathbf
etc.- Os grandes colchetes não estão funcionando. (Veja mais sobre isso abaixo.)
- 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:
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?
A propósito, esse problema não é específico do Linux Libertine O
. Também apareceu quando eu estava usando SabonNextLTPro
como 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 mathspec
em 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}