如何在 TeX 中定义 \sc?

如何在 TeX 中定义 \sc?

受到 TeXbook(第 350 页)的启发,我定义了:

\font\tensc=eccc1000
\font\twelvesc=eccc1200

例如,以下内容按预期工作:

\font\tensc=eccc1000
\centerline{Donald {\tensc Knuth}}
\bye

但我想定义一个更通用的\sc行为,如\rm\bf等等,但我不知道如何做到这一点。

\def\sc{something}
\centerline{Donald {\sc Knuth}}
\bye

其中plain.tex有:

\def\rm{\fam\z@\tenrm}
\def\bf{\fam\bffam\tenbf}

\newfam但我认为字体系列仅适用于数学模式?我对、\textfont等有点困惑。

答案1

抱歉,但如果您坚持使用纯 TeX,您将会遇到这种字体的麻烦。

\font\tensc=eccc1000

{\tensc \'a\`a\"u\c{a}\={a}\d{a}}

\bye

在此处输入图片描述

哎呀!发生了什么事? EC 字体的编码与 Knuth 的字体不同,特别是重音符号不在同一个位置。

您需要将所有内容切换为 EC 字体并重新定义所有重音命令。

那里Computer Modern 系列中的大写和小型大写字体,即cmcsc10(原始 Knuth 发行版中没有光学尺寸,但 AMS 提供了cmcsc8cmcsc9)。

\font\tensc=cmcsc10

{\tensc \'a\`a\"u\c{a}\={a}\d{a}}

{\tensc Test With Caps}

\bye

您可能不想设置这种形状的数学字体,因此\newfam不需要。

\def\sc{\tensc}如果您喜欢减少击键次数,您也可以这样做。


评论后进行编辑。

对于 XeTeX,您应该使用 OpenType 字体。不仅限于小型大写字母。

\font\tensc=[lmromancaps10-regular.otf]

{\tensc áàüçāạ}

{\tensc Test With Caps}

\bye

在此处输入图片描述

为什么不应该在 XeTeX 中使用 EC 字体?

\font\tenscOT=[lmromancaps10-regular.otf]
\font\tenscL=eccc1000

With legacy {\tt eccc1000} font

{\tenscL ĀĂĄĆČĎĚĘǦĹĽŁŃŇŊOŐŔRRŘSŚSŠŞTŤŢŰŸŹZŽŻŻİ}

{\tenscL ÀÁAÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖŒØÙÚÛÜÝÞ}

\bigskip

With OpenType

{\tenscOT ĀĂĄĆČĎĚĘǦĹĽŁŃŇŊOŐŔRRŘSŚSŠŞTŤŢŰŸŹZŽŻŻİ}

{\tenscOT ÀÁAÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖŒØÙÚÛÜÝÞ}

\bye

在此处输入图片描述

相关内容