siunitx で使用するテキスト フォント内の欠落している文字 (マイナス) を fontspec で置き換えます。

siunitx で使用するテキスト フォント内の欠落している文字 (マイナス) を fontspec で置き換えます。

私はコマーシャルを使わざるを得ない(ユニバース)フォントは私のプレゼンテーションで使用していますが、明らかに専用の\minus記号は含まれていません。(それが何か他のことなのかは分かりませんが\minus)私が入力しているのなら

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

マイナスは表示されません。残念ながら、同じ動作をする無料フォントは見つかりませんでした。しかし、私の言っている意味を理解していただければ幸いです。

不足しているものを含めるにはどうすればいいですかマイナス記号別のフォントからテキストフォントに正常に動作するには?


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}

出力は次のようになります:

ここに画像の説明を入力してください

他のフォントでは問題はありません。


いろいろ試してみましたが、最初の 2 つでは構文エラーが発生しました。

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

または、私が数学フォントでよく使う方法は次のとおりです。

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

そしてこのコードも見つけました

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

どれも機能していません。

他に何か提案はありますか?


私が使用したフォントには文字が含まれています\char"2013が、含まれていないよう\char"2212ですが、これはマイナスを入力するとき。

egregの提案

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

ユニットで働く

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

^^^^2212ただし、数字の場合は無効な数字文字であるため、数字には適用されません。

関連情報