使用大写小写字母和数字排版缩写

使用大写小写字母和数字排版缩写

我无法很好地显示缩写。删除大写字母是一个小小的改进,但在完整文档中看起来很糟糕。我希望在文档的其余部分使用正常数字。

我怎样才能使零显示正确的大小,并将其与 O 区分开来?

梅威瑟:

\documentclass{article}
\usepackage[largesmallcaps]{kpfonts}
\begin{document}
1234567890
\oldstylenums{1234567890}
\textsc{lod}\oldstylenums{0}
\textsc{lod0}
\end{document}

在此处输入图片描述

答案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}

在此处输入图片描述

相关内容