使用 XeTeX 和fontspec
,unicode-math
我想使用文档主字体数字(数字)在数学模式下。另外,我想\text{}
在数学模式下使用 Lining 数字,而文档的默认数字是 OldStyle 数字。我该如何实现此行为?
我尝试插入\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,有没有办法在数学模式中实现衬线数字?
关于问题 1,这是由于range=\mathup/{num}
仅适用于 updright 数学文本。有人知道如何将此命令应用于所有范围内的所有数字吗?仅使用range={num}
会导致错误。
关于问题 2,我还有两条信息。A)在同一个文件上使用 LuaTeX,括号确实出现,但未经缩放:
B) 如果我注释掉该行\setmathfont[range=\mathup/{num}]{Linux Libertine O}
,问题就不会发生。这表明括号机制会受到更改数字字体的影响,但事实不应该如此,对吗?
顺便说一句,这个问题并非 所特有Linux Libertine O
。当我将SabonNextLTPro
其用作主文档字体时也出现了这个问题。
答案1
与此同时,在有人想出办法之前,我想分享一个解决方法。基本上就是恢复为mathspec
而不是unicode-math
。几乎所有东西都只需三行即可开箱即用:
\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}