我怎样才能制作出不像上标那么高的东西呢?

我怎样才能制作出不像上标那么高的东西呢?

\textsuperscript命令使上标文本位于大写字母的上方。下面是一个例子来说明我的意思:

\textsuperscript{3} И сказ

在此处输入图片描述

如您所见,上标 3 位于大写字母高度之上。

我想要类似上标的东西,但它受到大写字母高度的限制,如下所示。

在此处输入图片描述

在 TeX 中是否有相对简单的方法可以做到这一点?

答案1

\Textsuperscript您可以按照与内核类似的方式定义命令\textsuperscript,但使用适当的命令\raise代替原始的命令^;类似这样的操作:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}

\makeatletter
\newlength\mylen
\DeclareRobustCommand*\Textsuperscript[1]{%
\@Textsuperscript{\selectfont#1}}
\def\@Textsuperscript#1{%
\settoheight\mylen{\fontsize\f@size\z@ A}%
{\m@th\ensuremath{\raise.3\mylen\hbox{\fontsize\sf@size\z@#1}}}}
\makeatother

\begin{document}

\textsuperscript{3}И сказ

\Textsuperscript{3}И сказ

\Large
\textsuperscript{3}И сказ

\Textsuperscript{3}И сказ

\Huge
\textsuperscript{3}И сказ

\Textsuperscript{3}И сказ

\end{document}

在此处输入图片描述

以下是原始定义:

\DeclareRobustCommand*\textsuperscript[1]{%
  \@textsuperscript{\selectfont#1}}
\def\@textsuperscript#1{%
   {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}

答案2

您提出的约束并不容易实现,因为它是矛盾的:一些大写字母(甚至数字)不会覆盖整个大写字母的高度。一些字形低于这个高度,而另一些字形则高于这个高度。因此,必须接受妥协。下面我使用来获取高度;如果您的上标只有数字,则在第二次测量中A使用 是明智的。0\fontcharht

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}

\makeatletter
\DeclareRobustCommand*\lowsuperscript[2][\sf@size]{%
  \@lowsuperscript{#1}{#2}}
\newcommand\@lowsuperscript[2]{%
  {\check@mathfonts % be sure \sf@size is defined
   \dimen0=\fontcharht\font`A
   \fontsize{#1}\z@\selectfont
   \advance\dimen0-\fontcharht\font`A % might be \fontcharht\font`0
   \raisebox{\dimen0}{#2}%
  }%
}
\makeatother

\begin{document}
\textsuperscript{3AI}И сказ \quad\lowsuperscript{3AI}И сказ

\Huge\textsuperscript{3AI}И сказ \quad\lowsuperscript{3AI}И сказ

\Huge\textsuperscript{3AI}И сказ \quad\lowsuperscript[10]{3AI}И сказ
\end{document}

\lowsuperscript命令有一个可选参数,用于为某些情况提供明确的字体大小,例如LaTeX 确定的\Huge下标大小 ( \sf@size) 太大的情况。我以 10 为例,但它可能太小了。

在此处输入图片描述

答案3

这种方式适用于不同的字体比例(经过几次编辑)。

\documentclass{article}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{stackengine}
\newcommand\myss[1]{\belowbaseline[0pt-\heightof{И}]{\scriptsize#1}}
\begin{document}
\myss{3} И сказ

\LARGE
\myss{3} И сказ
\end{document}

在此处输入图片描述

对于具有上标比例的版本,我使用\scalebox,在这种情况下,比例设置为 60%

\documentclass{article}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{stackengine}
\usepackage{graphicx}
\newcommand\myss[1]{\belowbaseline[0pt-\heightof{И}]{\scalebox{.6}{#1}}}
\begin{document}
\myss{3} И сказ

\LARGE
\myss{3} И сказ
\end{document}

在此处输入图片描述

相关内容