我有一個加載類似 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
不會超出邊界框太多: