我有时会使用没有小写字母的字体,但又想使用小写字母。因此我采用了以下技巧
% have \textsc use \fauxsc if \scshape not avalible
\let\textsc\relax
\DeclareRobustCommand{\textsc}[1]{%
\sbox0{x\xdef\testA{\the\font}}%
\sbox0{\scshape x\xdef\testB{\the\font}}%
\ifx\testA\testB\fauxsc{#1}\else{\scshape #1}\fi
}
这句话太棒了!每次运行时都会产生一个警告 :(
我不能保持沉默,因为silense+hyperref 包不兼容
MWE(fauxsc 被 textbf 取代)
\documentclass{article}
\usepackage{plex-serif}
% have \textsc use \fauxsc if \scshape not avalible
\let\textsc\relax
\DeclareRobustCommand{\textsc}[1]{%
\sbox0{x\xdef\testA{\the\font}}%
\sbox0{\scshape x\xdef\testB{\the\font}}%
\ifx\testA\testB\textbf{#1}\else{\scshape #1}\fi
}
\begin{document}
Please \textsc{help} me
\end{document}
答案1
\documentclass{article}
\usepackage{plex-serif}
\makeatletter
\DeclareRobustCommand{\textsc}[1]{%
\ifcsname \f@encoding/\f@family/\f@series/sc\endcsname
{\scshape #1}%
\else
\textbf{#1}%
\fi
}
\makeatother
\begin{document}
Please \textsc{help} me
\end{document}