在大多数字体中,小型大写字母的高度与 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。