Usando Linux Libertine em modo matemático com unicode-math (XeLaTeX)

Usando Linux Libertine em modo matemático com unicode-math (XeLaTeX)

Estou tentando usar a fonte Linux Libertine para minha tese. Na verdade, o Libertine possui símbolos matemáticos, mas não consegui usá-los corretamente na matemática unicode. O exemplo a seguir resume minhas tentativas de adicionar símbolos progressivamente da fonte e destaca as falhas. Estou ciente de que alguns dos problemas não puderam ser resolvidos porque a fonte OTF não oferece suporte total à matemática, mas talvez alguns dos problemas possam ser resolvidos usando truques avançados do TeX. Os dois principais problemas são os acentos e colchetes; Posso tolerar que outros símbolos sejam retirados de outra fonte.

\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}

Tentando renderizar uma fórmula matemática complexa usando Linux Libertine

Responder1

Não use nada além de símbolos alfanuméricos de fontes matemáticas que não sejam OpenType, como Linux Libertine. Parênteses, grandes operadores (somatório, integrais, etc.), acentos largos, raízes e assim por diante, todos precisam de considerações especiais invejáveis ​​apenas em fontes matemáticas OpenType completas.

Em geral, se você deseja a mais alta qualidade de composição matemática, use apenas fontes matemáticas completas, como você pode ver, mesmo no primeiro exemplo do Libertine, os acentos e a raiz estão desativados.

XITS Math pode ser uma combinação melhor do que a fonte Latin Modern mais leve.

Responder2

As coisas podem ter mudado desde que esta pergunta foi feita e ela aborda apenas uma parte dela, eu acredito, mas eu estava em uma situação semelhante (querendo usar o Linux Libertine em uma tese), e senti um enorme alívio quando encontrei o pacotenewtx, que fornece inúmeras melhorias para definir matemática em uma grande variedade de fontes, com foco no Linux Libertine em particular.

Eu uso o XeLaTeX e resumindo (o preâmbulo no documento verdadeiro tem mais de 100 linhas neste ponto…) coloco o seguinte no preâmbulo:

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

e de repente mais ou menos todos os problemas de kerning e mais no modo matemático foram resolvidos por padrão.

Eu iria mais longe e diria que o Linux Libertine é praticamente inutilizável para documentos, incluindo matemática, sem newtxesforço. Pode-se gastar horas e horas adicionando saltos, espaços e kerns manuais, ou pode-se carregar arquivos newtxmath.

Não estou ciente dos detalhes internos da definição de métricas para fontes no modo matemático, então posso estar tecnicamente enganado, mas acredito que seria um grande aprimoramento para o Linux Libertine se pudesse incluir os recursos de kerning deste pacote externo na linha principal Fonte. Quase todos os caracteres definidos no modo matemático são problemáticos sem ele.

Espero que aqueles que encontrarem esta questão explorem este pacote completamente.

Responder3

experimente o novo TeX Gyre Pagella Math que faz parte do 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}

insira a descrição da imagem aqui

Responder4

O mantenedor do libertinepacote CTAN, que também é ode fatomantenedor das fontes Libertine, recomenda o uso

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

para "matemática compatível" em XeTeX ou LuaTeX. A fonte libertinusmath-regular.otf pertence aofontes libertinusPacote CTAN. Se eu tivesse controle total sobre as opções de fonte no documento que estou alterando agora, provavelmente mudaria para elas; Libertinus é um fork da família Libertine com “muitos bugs corrigidos” e um monte de detalhes estilísticos.

informação relacionada