私は論文に Linux Libertine フォントを使用しようとしています。実際、Libertine には数学記号がありますが、Unicode-math で適切に使用できませんでした。次の例は、フォントから記号を段階的に追加する試みをまとめたもので、失敗した点をハイライトしています。OTF フォントが数学を完全にサポートしていないため、一部の問題を解決できなかったことは承知していますが、高度な TeX トリックを使用すれば、一部の問題を解決できるかもしれません。主な問題は 2 つ、アクセントと括弧です。他の記号が別のフォントから取得されることは許容できます。
\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}
答え1
Linux Libertine などの非 OpenType 数学フォントの英数字記号以外は使用しないでください。括弧、大きな演算子 (合計、積分など)、幅の広いアクセント、ルートなどはすべて、完全な 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
TL 2012 の一部である新しい TeX Gyre Pagella Math を試してみてください。
\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
CTANパッケージのメンテナーlibertine
であり、デファクトLibertineフォントの管理者は、
\usepackage{unicode-math}
\setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
XeTeXまたはLuaTeXの「互換数学」用フォント。フォントlibertinusmath-regular.otfはlibertinus フォントCTAN パッケージ。現在作業中の文書のフォント選択を完全に制御できるなら、おそらくすべて CTAN に切り替えるでしょう。Libertinus は、多くのバグが修正され、より多くのスタイル上の装飾が施された Libertine ファミリーのフォークです。