带有拉丁现代和 TeX 的希腊大写字母

带有拉丁现代和 TeX 的希腊大写字母

复制纯 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}}

相关内容