XeLaTeX Minion Pro下标垂直对齐

XeLaTeX Minion Pro下标垂直对齐

我正在尝试将 Minion Pro 与fontspecXeLaTeX 中的包一起使用,但是在与某些希腊字符一起使用时遇到了下标垂直对齐的问题:

\documentclass[a4paper,12pt,oldfontcommands]{article}
\usepackage{amsmath}
\usepackage[MnSymbol]{mathspec}
\usepackage{MnSymbol}
\defaultfontfeatures{Ligatures=TeX}
\setallmainfonts{Minion Pro}

\begin{document}

\begin{equation}
  V_\text{PSD} = V_sV_m\sin(\omega_r t + \phi_{\!s})\sin\left(\omega_r t + \phi_s\right)
\end{equation}

\begin{equation}
  \zeta_s \varsigma_s \gamma_s \kappa_s \phi_{\!s} \varphi_s \theta_s \xi_s \Xi_s f_s p_s 6_6 6_p p_6
\end{equation}

\end{document}

各种下标对齐

从图中可以看出,除了 zeta、sigma 变体、gamma、两种 phi 变体和小写 xi 之外,一些字母的下标位于正确的位置。

关于字距调整使用 XeLaTeX 的外部字体,但这似乎不是这里的问题,因为使用修复程序\phi_{\!s}只会使下标字符更接近并且不会改变垂直对齐方式(正如我在上面的两个例子中所提到的)。

为什么会发生这种情况? 可以预防吗?

答案1

编辑:请参阅最后的代码以获取建议的解决方案

旧答案:

看来,用希腊键盘输入希腊字母可以解决问题。

经过多次测试后,发现下面的代码适用于我的字体:

\documentclass[11pt,oneside]{article}

\usepackage{amsmath}
\usepackage[MnSymbol]{mathspec}
\usepackage{MnSymbol}
\defaultfontfeatures{Ligatures=TeX}
\setallmainfonts{Linux Libertine O}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setotherlanguage{english}
\setmainfont{Linux Libertine O}
%\newfontfamily\greekfont{Linux Libertine O}

\begin{document}
\selectlanguage{english}
\begin{equation}
V_\text{PSD}= V_sV_m\sin(\omega_r t + φ_{s})\sin\left(\omega_r t + φ_s\right)
\end{equation}

\begin{equation}γ_s  ζ_s ς_s  κ_s φ_{s} \varphi_s θ_s ξ_s Ξ_s f_s p_s 6_6 6_p p_6
\end{equation}
\begin{equation}\gamma_s  \zeta_s \varsigma_s  \kappa_s \phi_{s} \varphi_s \theta_s \xi_s \Xi_s f_s p_s 6_6 6_p p_6
\end{equation}
\selectlanguage{greek}
Κείμενο εδώ
\end{document}

也尝试一下你的字体。

输出:

在此处输入图片描述

如您所见,公式 (2) 中用希腊键盘输入的希腊字母可以得到足够好的结果。

附言:您不必使用希腊语作为主要语言...如果未安装或其他情况,您可以将其删除。

并且没有\setallmainfonts{Linux Libertine O} (使用系统默认的希腊语数学字体 - 仅用于比较 - )我得到:

在此处输入图片描述

编辑(建议的解决方案):

许多人想使用希腊字母,但他们没有希腊键盘。但即使他们有,用键盘在数学中写希腊字母也是不好的做法(在我看来)。(假设您想从 xelatex 创建乳胶代码,或者您想翻译成其他语言,但又不想更改数学代码)。那么解决方案就是用通常的方式写数学,然后在序言中重新定义希腊字母,如下所示:

\documentclass[11pt,oneside]{article}    
\usepackage{amsmath}
\usepackage[MnSymbol]{mathspec}
\usepackage{MnSymbol}
\defaultfontfeatures{Ligatures=TeX}
\setallmainfonts{Linux Libertine O}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setotherlanguage{english}
\setmainfont{Linux Libertine O}
%\newfontfamily\greekfont{Linux Libertine O}

% Definitions of Greek (in math mode)
\def\alpha{α}
\def\beta{β}
\def\gamma{γ}
\def\delta{δ}
\def\epsilon{ε}
\def\zeta{ζ}
\def\eta{η}
\def\theta{θ}
\def\iota{ι}
\def\kappa{κ}
\def\lambda{λ}
\def\mu{μ}
\def\nu{ν}
\def\xi{ξ}
%\def\ο{o}
\def\pi{π}
\def\rho{ρ}
\def\sigma{σ}
\def\tau{τ}
\def\upsilon{υ}
\def\phi{φ}
\def\varphi{ϕ}
\def\chi{χ}
\def\psi{ψ}
\def\omega{ω}
\def\varsigma{ς}
\def\varrho{ϱ}
\def\vartheta{ϑ}

\def\Alpha{Α}
\def\Beta{Β}
\def\Gamma{Γ}
\def\Delta{Δ}
\def\Epsilon{Ε}
\def\Zeta{Ζ}
\def\Eta{Η}
\def\Theta{Θ}
\def\Iota{Ι}
\def\Kappa{Κ}
\def\Lambda{Λ}
\def\Mu{Μ}
\def\Nu{Ν}
\def\Xi{Ξ}
%\def\Ο{O}
\def\Pi{Π}
\def\Rho{Ρ}
\def\Sigma{Σ}
\def\Tau{Τ}
\def\Upsilon{Υ}
\def\Phi{Φ}
\def\Chi{Χ}
\def\Psi{Ψ}
\def\Omega{Ω}

\begin{document}
\selectlanguage{english}

English text

\[
\alpha_{α}
\beta_{β}
\gamma_{γ}
\delta_{δ}
\epsilon_{ε}
\zeta_{ζ}
\eta_{η}
\theta_{θ}
\iota_{ι}
\kappa_{κ}
\lambda_{λ}
\mu_{μ}
\nu_{ν}
\xi_{ξ}
%\ο_{o}
\pi_{π}
\rho_{ρ}
\sigma_{σ}
\tau_{τ}
\upsilon_{υ}
\phi_{φ}
\varphi_{ϕ}
\chi_{χ}
\psi_{ψ}
\omega_{ω}
\varsigma_{ς}
\varrho_{ϱ}
\vartheta_{ϑ}\]
\[
\Alpha_{Α}
\Beta_{Β}
\Gamma_{Γ}
\Delta_{Δ}
\Epsilon_{Ε}
\Zeta_{Ζ}
\Eta_{Η}
\Theta_{Θ}
\Iota_{Ι}
\Kappa_{Κ}
\Lambda_{Λ}
\Mu_{Μ}
\Nu_{Ν}
\Xi_{Ξ}
%\Ο_{O}
\Pi_{Π}
\Rho_{Ρ}
\Sigma_{Σ}
\Tau_{Τ}
\Upsilon_{Υ}
\Phi_{Φ}
\Chi_{Χ}
\Psi_{Ψ}
\Omega_{Ω}
\]


\selectlanguage{greek}

Ελληνικό κείμενο εδώ
\end{document}

输出:

在此处输入图片描述

相关内容