重新定义 \textsc 为略大的小写字母

重新定义 \textsc 为略大的小写字母

在大多数字体中,小型大写字母的高度与 x 高度相同,但当你想在缩写词末尾添加一个 's' 来使其成为复数时,这看起来很奇怪(在嗜菌菌)。

我可以创建一个新命令\textmc(用于大写字母)可以轻松做到这一点:

\usepackage{scalefnt}
\newcommand{\textmc}[1]{\textsc{\scalefont{1.1}#1}}

但我更愿意重新定义\textsc。然而,我所采取的方法似乎给了我一个无限循环,因为它在定义之间来回翻转:

\newcommand{\oldtextsc}[1]{\textsc{#1}}
\renewcommand{\textsc}[1]{\oldtextsc{\scalefont{1.1}#1}}

关于如何重新定义调用原始定义的命令有什么建议吗?

答案1

一种直接的方法是使用\let来存储 的当前定义\textsc

\let\oldtextsc\textsc
\renewcommand{\textsc}[1]{\oldtextsc{\scalefont{1.1}#1}}

(看修补现有命令有关详细信息,请参阅 TeX FAQ。)

\textsc但是,如果碰巧在辅助文件中的某个地方写入(例如,章节标题),则可能会失败,因此更安全的版本是

\usepackage{letltxmacro}
\LetLtxMacro{\oldtextsc}{\textsc}
\renewcommand{\textsc}[1]{\oldtextsc{\scalefont{1.1}#1}}

letltxmacro(有关更多信息,请参阅文档)。

问题是,这\textsc是一个“强健”的命令,因此 LaTeX 会在辅助文件中写入它的特殊形式;类似于\section{\textsc{a}}会导致 LaTeX 写入

\textsc  {\scalefont  {1.1}a}

当将其解释为目录时,它将变成

\oldtextsc{\scalefont{1.1}\scalefont{1.1}a}

最终缩放系数为1.21。

相关内容