我正在尝试将 Minion Pro 与fontspec
XeLaTeX 中的包一起使用,但是在与某些希腊字符一起使用时遇到了下标垂直对齐的问题:
\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}
输出: