
Использование XeTeX с fontspec
иunicode-math
, я хотел бы использовать основной шрифт документа дляцифры(числа) в mathmode. Также я хотел бы сделать так, чтобы \text{}
в mathmode использовались номера 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}
применением только к прямому математическому тексту. Кто-нибудь знает, как применить эту команду ко всем цифрам во всех диапазонах? использование только 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}