Substitua o caractere ausente (menos) na fonte do texto para uso em siunitx por fontspec

Substitua o caractere ausente (menos) na fonte do texto para uso em siunitx por fontspec

Sou forçado a usar um comercial (Universo) nas minhas apresentações, que obviamente não contém um \minussinal dedicado, que é chamado por. (Embora eu não tenha certeza se é \minusou algo mais.) Então, se estou digitando

\SI{-1984}{m^{-42}}

Não recebo nenhum sinal de menos exibido. Infelizmente não encontrei nenhuma fonte gratuita com o mesmo comportamento. Mas espero que você entenda o que quero dizer.

Como posso incluir os que faltamSinal de menosde outra fonte para minha fonte de texto para obterfuncionar corretamente?


Aqui está um MWE:

\documentclass{beamer}

\usefonttheme{professionalfonts}
\usepackage{siunitx}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmainfont{Univers 45 Light} 
\setmathfont{XITS Math}

\setbeamerfont{normal text}{family=\rmfamily,series=\normalfont}

\AtBeginDocument{
\usebeamerfont{normal text}
\sisetup{detect-all}
\sisetup{math-rm=\mathrm, text-rm=\rmfamily}
\sisetup{per-mode=fraction,fraction-function=\sfrac}
}

\begin{document}

\begin{frame}
The dash - is working. But the minus sign in \alert{siunitx} (e.g. \SI{-1984}{m^{-42}}) isn't, apart from when it is used in math-mode (e.g. $\SI{-1984}{m^{-42}}$). But in text I'd like to use my text font.
\end{frame}

\end{document}

me dando a saída:

insira a descrição da imagem aqui

Não tenho problemas com outras fontes.


Tentei várias coisas, as duas primeiras me deram erros de sintaxe:

\setmainfont[\minus="2212]{XITS Math}

ou como costumo fazer com a fonte matemática:

\setmainfont[range={="2212}]{XITS Math}

E eu encontrei esse código também,

\newunicodechar{"2212}{{\fontspec{XITS Math}"2212}}
\newunicodechar{\minus}{{\fontspec{XITS Math}\minus}}
\newunicodechar{-}{{\fontspec{XITS Math}-}}

nenhum deles funcionando.

Mais alguma sugestão?


A fonte que usei contém o caractere \char"2013, mas não contém \char"2212, mas parece-me que esta é a chamada porquando o sinal de menos é digitado.

sugestão de egreg

\usepackage{newunicodechar}
\newunicodechar{^^^^2212}{\char"2013}

funciona para a unidade

\SI{-1984}{m^{^^^^2212 42}}) 

mas não para o número, pois ^^^^2212é um caractere numérico inválido.

informação relacionada