复制纯 TeX 格式,我的格式文件包含以下行
\font\tenrm="[lmroman10-regular.otf]:mapping=tex-text"
\textfont0=\tenrm
\def\rm{\fam0 \tenrm}
加载 unicode 字体。但是,正如我可以使用拉丁现代字体在文本模式下排版希腊字母吗?,拉丁现代字体不包含希腊大写字母,因此$\Pi$
不显示大写字母 Pi。我该如何在 (Xe-)TeX 中修复这个问题?
答案1
如果您希望希腊字母尊重当前的字母系列,您必须完全重新定义数学字体,可能使用拉丁现代数学。
将它们定义为“固定”符号的更好方法如下:
\font\tenrm="[lmroman10-regular.otf]:mapping=tex-text"
\textfont0=\tenrm
\font\greekcapstenrm=cmr10
\font\greekcapssevenrm=cmr7
\font\greekcapsfiverm=cmr5
\newfam\greekcapsfam
\textfont\greekcapsfam=\greekcapstenrm
\scriptfont\greekcapsfam=\greekcapssevenrm
\scriptscriptfont\greekcapsfam=\greekcapsfiverm
\begingroup
\def\getlastdigitsaux#1"#2#3#4#5{#4#5}
\def\getlastdigits#1{\expandafter\getlastdigitsaux\meaning#1}
\def\redefine#1{%
\begingroup\edef\x{\endgroup
\global\Umathchardef#1=
0 % math kind
\greekcapsfam % family
"\getlastdigits#1 % slot
}\x
}
\redefine\Gamma
\redefine\Delta
\redefine\Theta
\redefine\Lambda
\redefine\Xi
\redefine\Pi
\redefine\Sigma
\redefine\Upsilon
\redefine\Phi
\redefine\Psi
\redefine\Omega
\endgroup
$\Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega$
\bye
答案2
对于 OTF,一种方法是使用以下方式定义它们
\Umathcharnumdef\Alpha="0391
\Umathcharnumdef\Beta="0392
% ...
\Umathcharnumdef\Omega="03A9
答案3
此修复对斜体、倾斜或粗体大写希腊字母不够稳健,但应该很容易适应。它从原始 Computer Modern 字体中加载缺失的字母。
\font\greekcapstenrm=cmr10
\font\greekcapssevenrm=cmr7
\font\greekcapsfiverm=cmr5
\newfam\greekcapsfam
\textfont\greekcapsfam=\greekcapstenrm
\scriptfont\greekcapsfam=\greekcapssevenrm
\scriptscriptfont\greekcapsfam=\greekcapsfiverm
\let\tmpGamma=\Gamma \def\Gamma{{\fam\greekcapsfam\tmpGamma}}
\let\tmpDelta=\Delta \def\Delta{{\fam\greekcapsfam\tmpDelta}}
\let\tmpTheta=\Theta \def\Theta{{\fam\greekcapsfam\tmpTheta}}
\let\tmpLambda=\Lambda \def\Lambda{{\fam\greekcapsfam\tmpLambda}}
\let\tmpXi=\Xi \def\Xi{{\fam\greekcapsfam\tmpXi}}
\let\tmpPi=\Pi \def\Pi{{\fam\greekcapsfam\tmpPi}}
\let\tmpSigma=\Sigma \def\Sigma{{\fam\greekcapsfam\tmpSigma}}
\let\tmpUpsilon=\Upsilon \def\Upsilon{{\fam\greekcapsfam\tmpUpsilon}}
\let\tmpPhi=\Phi \def\Phi{{\fam\greekcapsfam\tmpPhi}}
\let\tmpPsi=\Psi \def\Psi{{\fam\greekcapsfam\tmpPsi}}
\let\tmpOmega=\Omega \def\Omega{{\fam\greekcapsfam\tmpOmega}}