答案1
我引入了一个宏,\scht{}
它设置了它的参数\scshape
,然后将结果拉伸到的高度\textsc{x}
。
\documentclass{article}
%\usepackage[largesmallcaps]{kpfonts}
\usepackage{scalerel}
\newcommand\scht[1]{\stretchrel*{$\textsc{#1}$}{\textsc{x}}}
\begin{document}
1234567890
\oldstylenums{1234567890}
\textsc{lod}\oldstylenums{0}
\textsc{lod0}
\textsc{lod\scht{0}}
\textsc{lod\scht{234}}
\end{document}
答案2
如果这种缩写风格会让读者感到困惑,我会避免使用它。无论如何,这里有一个可能的解决方案:首先我展示我使用的基本命令,然后再介绍一个避免输入尴尬的解决方案。
\documentclass{article}
\usepackage[largesmallcaps]{kpfonts}
\usepackage{graphicx}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\abbr}{m}
{
\tl_set:Nn \l_tmpa_tl { #1 }
\regex_replace_all:nnN
{ ([0-9]+) } % any run of digits
{ \c{resizedigit}\cB\{ \1 \cE\} } % replace it with \resizedigit{...}
\l_tmpa_tl
\textsc{ \tl_use:N \l_tmpa_tl }
}
\NewDocumentCommand{\resizedigit}{m}{\resizebox{!}{1ex}{#1}}
\ExplSyntaxOff
\begin{document}
Abc \textsc{lod\resizebox{!}{1ex}{0}} def
Abc \abbr{lod0} def
Abc \abbr{x12y3z} def
\end{document}