
XeTeXを と で使用してfontspec
、unicode-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 つの問題があります。
Linux Libertine O
\mathrm
数字の は、、、\mathit
などには現れません\mathbf
。- 大きな括弧は機能しません。(詳細は以下を参照してください。)
\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}