fontspec + amsmath - 數學模式下字距調整問題

fontspec + amsmath - 數學模式下字距調整問題

我有一個加載類似 Times 的字體的文件,然後是一個在數學模式下使用該字體的包。一切工作正常,pdflatex包括正確的 \operatorname{} 字距調整

% To be processed with pdflatex
\documentclass{report}

\usepackage{mathptmx}
\usepackage{amsmath}
\usepackage[lite]{mtpro2}

\begin{document}
\[
    \operatorname{Diff}^r \quad \mathrm{f}^r \quad {f}^r \quad \mathcal{C}^r
\]
\end{document}

字距調整工作正常

xelatex但是當我嘗試使用以下文件進行相同的設定時:

% To be processed with xe-lua-latex:
\documentclass{report}

%\usepackage[no-math]{fontspec}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Times New Roman}
\usepackage{amsmath}
\usepackage{mtpro2}

\begin{document}
\[
    \operatorname{Diff}^r \quad \mathrm{f}^r \quad {f}^r \quad \mathcal{C}^r
\]
\end{document}

即使其他字距調整都很好,但內部\operatorname{}和丟失內容的字距調整也是如此。\mathrm{}

數學模式內的字距調整問題

我想了解造成\mathrm{}混亂的原因。

答案1

你的 pdflatex 範例對我來說編譯時沒有錯誤 - 恕我直言,載入 mathptmx 和 mtpro2 不是一個好主意。

但除此之外:

  • 不涉及字距調整:字元來自不同的字體。
  • 您只需比較 pdflatex times 字體和 Times New Roman 即可了解為什麼例如 f 間距不同:
\documentclass{report}
\usepackage{ifxetex}
\ifxetex
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Times New Roman}
\else 
\usepackage{mathptmx}
\fi


\begin{document}
\fboxsep0pt
\fbox{f}

\end{document}

在此輸入影像描述在此輸入影像描述

您可以嘗試 TeX Gyre Termes 而不是 Times New Roman,它f不會超出邊界框太多:

在此輸入影像描述

相關內容