unicode-math: 数式モードで数値にテキストフォントを使用する

unicode-math: 数式モードで数値にテキストフォントを使用する

XeTeXを と で使用してfontspecunicode-mathの文書のメインフォントを使用したいと思います。数字(数字) を数式モードで使用します。また、ドキュメントのデフォルトは OldStyle 数字ですが、数式モードでは Lining 数字を使用するようにしたいと思います\text{}。この動作を実現するにはどうすればよいでしょうか。

挿入してみました\setmathfont[range=\mathup/{num}]{Linux Libertine O}が、期待した結果が得られませんでした。

問題点を指摘する MWE は次のとおりです。

\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}

XeTeX を使用すると、次のようになります。

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

つまり、3 つの問題があります。

  1. Linux Libertine O\mathrm数字の は、、、\mathitなどには現れません\mathbf
  2. 大きな括弧は機能しません。(詳細は以下を参照してください。)
  3. \text{}ドキュメント番号スタイルが OldStyle であっても、数式モードで Lineing 番号を実現する方法はありますか?

問題 1 に関しては、これは直立した数学テキストにのみ適用されているためですrange=\mathup/{num}。このコマンドをすべての範囲のすべての数字に適用する方法を知っている人はいますか? のみを使用するとrange={num}エラーが発生します。

問題2に関して、さらに2つの情報があります。A) 同じファイルでLuaTeXを使用すると、括弧現れるただし、スケールは変更されません。

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

B) 行をコメントアウトすると\setmathfont[range=\mathup/{num}]{Linux Libertine O}、問題はまったく発生しません。これは、数字のフォントを変更することで括弧のメカニズムが影響を受けていることを示していますが、これは本来あるべきではないことですよね?

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

ちなみに、この問題は に固有のものではありません。をメイン文書のフォントとしてLinux Libertine O使用している場合にも発生しました。SabonNextLTPro

答え1

誰かがアイデアを思いつくまでの間、回避策を共有しようと思いました。基本的には、 のmathspec代わりに に戻すことですunicode-math。ほぼすべてが、わずか 3 行ですぐに機能します。

\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}

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

関連情報