考虑一下这个MWE:
\documentclass{article}
% http://tex.stackexchange.com/questions/215447/using-cyrillic-with-tex-gyre-pagella-and-pdflatex
\usepackage[utf8]{inputenc}
\usepackage[T2A, T1]{fontenc} % before babel!
\usepackage[russian,greek,english]{babel} % tlmgr install babel-russian
\usepackage[sc]{mathpazo}
\usepackage{paratype} % tlmgr install paratype
\usepackage{tgpagella}
% T2A for cyrillic - paratype
\usepackage{substitutefont}
\substitutefont{T2A}{\rmdefault}{PTSerif-TLF}
\begin{document}
\fontencoding{T1}\selectfont
Testing: \textsc{Small-caps Test!}
\fontencoding{T2A}\selectfont
Testing: \textsc{Small-caps Test!}
\end{document}
当构建这个时,它会失败:
! No declaration for shape T2A/PTSerif-TLF/m/sc.
sub@sfcnt ...e forspace shapespace mandatory@arg }
error@fontshape else #1{Fo...
l.23 Testing: \textsc{Small-caps Test!}
...但你可以按ENTER这里,然后pdflatex
完成,产生如下结果:
所以事情是这样的:我怎么才能告诉 Latex,一旦它\scshape
在 T2A 字体编码(这里使用paratype
'sPTSerif
字体)中遇到小型大写字母(例如 ),它应该改用tgpagella
T1 编码中的字体(仅适用于小型大写字母)?我在序言中尝试过这个:
\sbox0{\fontencoding{T2A}\selectfont \scshape X}
\DeclareFontShape{T2A}{PTSerif-TLF}{m}{sc}{<-> qpl}{} % nope
...但这似乎不起作用。这种不同字体编码之间的字体映射可能吗?