受到 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 提供了cmcsc8
和cmcsc9
)。
\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