Использование Linux Libertine в математическом режиме с unicode-math (XeLaTeX)

Использование Linux Libertine в математическом режиме с unicode-math (XeLaTeX)

Я пытаюсь использовать шрифт Linux Libertine для своей диссертации. В Libertine на самом деле есть математические символы, но мне не удалось правильно использовать их в unicode-math. Следующий пример суммирует мои попытки постепенно добавлять символы из шрифта и подчеркивает неудачи. Я знаю, что некоторые проблемы не могут быть решены, поскольку шрифт OTF не полностью поддерживает математику, но, возможно, некоторые проблемы можно решить с помощью продвинутых трюков TeX. Две основные проблемы — это ударения и скобки; я могу терпеть другие символы, взятые из другого шрифта.

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}
\setlength{\parindent}{0pt}
\usepackage{fontspec}
\usepackage[partial=upright,nabla=upright]{unicode-math}

\newcommand{\sample}{\[ \underbrace{\frac{\partial y}{\partial x}R(x)^2}_{\text{Foo}} = \left[ \sum_{i=0}^\infty \tilde{f}_i \arcsin\left( \alpha_i^3 x \right) \right]^{-1} \sqrt[6]{\int \nabla y\times\mathbf{\theta}(y) \mathrm{d}\phi} \geq \mathring{\Omega}_\ell [d]\]}

\begin{document}
\sample
This is a correct rendering using Latin Modern. Let's try to add some Libertine\ldots

\setmainfont[Mapping=tex-text]{Linux Libertine O}
\setmathfont[range=\mathit/{latin,Latin,num,Greek,greek}]{Linux Libertine O Italic}
\setmathfont[range=\mathup/{latin,Latin,num,Greek,greek}]{Linux Libertine O}
\setmathfont[range=\mathbfup/{latin,Latin,num,Greek,greek}]{Linux Libertine O Bold}
\setmathfont[range=\mathbfit/{latin,Latin,num,Greek,greek}]{Linux Libertine O Bold Italic}
\setmathfont[range={"0300-"036F}]{Linux Libertine O}% Accents - won't compile correctly without this line
\setmathfont[range={"003D,"00D7,"2202,"2207,"2212,"221E,"2265}]{Linux Libertine O} % some more symbols, they work properly
% U+003D    Equal sign
% U+00D7    Cross
% U+2202    Partial
% U+2207    Nabla
% U+2212    Minus
% U+221E    Infinity
% U+2265    Greater or equal

\sample

\textcolor{red}{Problem 1:} accents are off (ugly hack: use \texttt{\backslash skew})\\
\textcolor{red}{Problem 2:} brackets are still in LM; at least the normal sized brackets must match the text, so let's add parentheses \& square brackets:

\setmathfont[range={"0028,"0029,"005B,"005D}]{Linux Libertine O}

\sample

\textcolor{red}{Problem 3:} only the right parenthesis extends\\
\textcolor{red}{Problem 4:} the underbrace became gibberish\\
Possible fix to 3 \& 4: include the extending brackets from  `Miscellaneous Technical' unicode block (\texttt{U+239B}--\texttt{U+23AA}); unfortunately it doesn't change anything.
\medskip

Libertine has a summation and integral symbol, let's try to use them:

\setmathfont[range={"2211,"222B}]{Linux Libertine O}

\sample

\textcolor{red}{Problem 5:} the summation symbol is too small; Note that the integral symbol was broken to an top and bottom parts (both exist in the font), but there are no top and bottom parts of the summation symbol in this font.
\end{document}

Попытка отобразить сложную математическую формулу с помощью Linux Libertine

решение1

Не используйте ничего, кроме буквенно-цифровых символов из математических шрифтов, отличных от OpenType, таких как Linux Libertine. Скобки, большие операторы (суммирование, интегралы и т. д.), широкие акценты, корни и т. д. — все это требует особого внимания, завидного только в полных математических шрифтах OpenType.

В общем, если вам нужно наивысшее качество набора математических текстов, используйте только полноценные математические шрифты, поскольку даже в первом примере Libertine вы можете видеть, что ударения и корень смещены.

Шрифт XITS Math может подойти лучше, чем более светлый Latin Modern.

решение2

Возможно, с тех пор, как был задан этот вопрос, что-то изменилось, и я полагаю, что он затрагивает только часть вопроса, но я был в похожей ситуации (хотел использовать Linux Libertine в диссертации), и я почувствовал огромное облегчение, когда нашел этот пакет.newtx, который предоставляет многочисленные улучшения для настройки математических символов в большом количестве шрифтов, уделяя особое внимание Linux Libertine.

Я использую XeLaTeX и, короче говоря (преамбула в настоящем документе на данный момент составляет более 100 строк…), пишу в преамбуле следующее:

\usepackage[libertine]{newtxmath}
\usepackage[no-math]{fontspec}
\setmainfont{Linux Libertine O}

и внезапно более или менее все проблемы с кернингом и другие проблемы в математическом режиме были решены по умолчанию.

Я бы даже сказал, что Linux Libertine практически непригоден для документов, содержащих математику, без усилий newtx. Можно потратить много часов на добавление вручную пропусков, пробелов и кернов, или можно загрузить newtxmath.

Я не знаком с внутренними принципами определения метрик для шрифтов в математическом режиме, поэтому я могу ошибаться технически, но я считаю, что было бы огромным улучшением для Linux Libertine, если бы он мог включить функции кернинга из этого внешнего пакета в основной шрифт. Почти каждый набор символов в математическом режиме без него проблематичен.

Надеюсь, те, кто задастся этим вопросом, тщательно изучат этот пакет.

решение3

попробуйте новый TeX Gyre Pagella Math, который является частью TL 2012:

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}
\setlength{\parindent}{0pt}
\usepackage[partial=upright,nabla=upright]{unicode-math}
\setmainfont{Linux Libertine O}
\setmonofont{LinMonoO} 
\setmathfont{TG Pagella Math}
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math}

\def\Macro#1{\texttt{\textbackslash#1}}
\begin{document}

\[ \underbrace{\frac{\partial y}{\partial x}R(x)^2}_{\text{Foo}} = \left[ \sum_{i=0}^\infty \tilde{f}_i \arcsin\left( \alpha_i^3 x \right) \right]^{-1} \sqrt[6]{\int \nabla y\times\mathbf{\theta}(y) \mathrm{d}\phi} \geq \mathring{\Omega}_\ell [d]
\]

\Macro{mathscr}: $\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
\Macro{mathscr}: $\mathscr{abcdefghijklmnopqrstuvwxyz}$\\
\Macro{mathbfscr}: $\mathbfscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
\Macro{mathbfscr}: $\mathbfscr{abcdefghijklmnopqrstuvwxyz}$

\bigskip
\Macro{mathcal} and \Macro{mathbfcal}

\texttt{StylisticSet=1}: $\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
\texttt{StylisticSet=1}: $\mathbfcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$

\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=2]{XITS Math}
\texttt{StylisticSet=2}: $\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
\texttt{StylisticSet=2}: $\mathbfcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$

\end{document}

введите описание изображения здесь

решение4

Разработчик пакета libertineCTAN, который также являетсяде-факторазработчик шрифтов Libertine, рекомендует использовать

\usepackage{unicode-math}
\setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}

для "совместимой математики" в XeTeX или LuaTeX. Шрифт libertinusmath-regular.otf принадлежитlibertinus-шрифтыПакет CTAN. Если бы у меня был полный контроль над выбором шрифтов в документе, с которым я сейчас работаю, я бы, наверное, вообще переключился на них; Libertinus — это ответвление семейства Libertine с «множеством исправленных ошибок» и кучей стилистических излишеств.

Связанный контент