我希望有一个命令,将\oldstylenums
参数中的数字和\textsc
参数中的文本结合起来。我相信使用一些 for 循环的解决方案是可能的,但我认为一定有一个更简单的解决方案。
梅威瑟:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\pagestyle{empty}
\begin{document}
I get \oldstylenums{1s}
I want \oldstylenums{1}\textsc{s}
\end{document}
答案1
当然你真的在这种情况下,您想要的是带有小写字母和旧式数字的字体。作为真实或虚拟字体,那么您只需访问字体,TeX 无需执行任何操作。但虚拟字体现在并不那么流行,也许可以执行 TeX 循环:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\pagestyle{empty}
\begin{document}
I get \oldstylenums{1s}
I want \oldstylenums{1}\textsc{s}
\makeatletter
\def\zzz#1{%
\@tfor\tmp:=#1\do{%
\ifcat1\tmp\relax\oldstylenums\tmp\else\textsc\tmp\fi}}
\makeatother
\zzz{1s}
\end{document}
答案2
提供cfr-lm
对拉丁现代旧式数字的支持,其中包括:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[rm=oldstyle]{cfr-lm}
\pagestyle{empty}
\begin{document}
1234567890
\textsc{I want 1234567890}
\end{document}