更新

更新

使用 \superscript{number} 时,左侧字符与上标字符之间的距离取决于上标中的字符。从图中可以看出,“1”、“2”和“3”与左侧字符之间的距离比其他字母要远得多。

我希望所有上标数字都尽可能靠近左侧字符,例如“0”。这可能吗?

附加问题:为什么下标字符的位置不会像上标字符那样改变?

上标的位置取决于显示的字符。

这是我的 TeX 代码:

\documentclass{report}

% Add the ability to display 汉字 and English
\usepackage[UTF8]{ctex}
\usepackage[utf8]{inputenc}
% Add the ability to write pinyin with tones
\usepackage{xeCJK}
\usepackage{xpinyin}
% Add the ability to create fancy headers and footers
\usepackage{fancyhdr}
% Add the ability to use Lorem Ipsum placeholder text
\usepackage{lipsum}
\usepackage{xcolor}
% Add the ability to align text
\usepackage{setspace}
\usepackage{sectsty}
% Add the ability to underline
\usepackage[normalem]{ulem}
% Make "" switch to opposing quotation marks intelligently
\usepackage [english]{babel}
\usepackage [autostyle, english = american]{csquotes}
\MakeOuterQuote{"}
% Add the ability to give underlines a colour, and its thickness
\usepackage{color,soul}
\definecolor{darkblue}{rgb}{0,0.8,0.2}
\setulcolor{darkblue}
\setul{0.5ex}{0.4ex}
% Add the ability to use graphics
\usepackage{graphicx}
% Add the ability to indented paragraphs
\usepackage{indentfirst}


\pagestyle{fancy}
\chapterfont{\centering}
%\fancyhf{}% Clear header/footer
%\fancyhead[C]{Header}
%\fancyfoot[C]{Footer}% \fancyfoot[R]{\thepage}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.4pt}


\begin{document}

\setstretch{2.0}

但是\textsuperscript{0}, 但是\textsubscript{0},\\
但是\textsuperscript{1}, 但是\textsubscript{1},\\
但是\textsuperscript{2}, 但是\textsubscript{2},\\
但是\textsuperscript{3}, 但是\textsubscript{3},\\
但是\textsuperscript{4}, 但是\textsubscript{4},\\
但是\textsuperscript{5}, 但是\textsubscript{5},\\
但是\textsuperscript{6}, 但是\textsubscript{6},\\
但是\textsuperscript{7}, 但是\textsubscript{7},\\
但是\textsuperscript{8}, 但是\textsubscript{8},\\
但是\textsuperscript{9}, 但是\textsubscript{9},\\



\end{document}

TeXstudio,使用 XeLaTeX 构建

答案1

上标 1、2 和 3 看起来比其他上标小。我猜想\textsuperscript文档的实现将这些字符映射到真正的上标 U+00B2(上标二)、U+00B3(上标三)和 U+00B9(上标一)。其他上标和下标只是 ASCII 字母以较小的尺寸升高或降低。

LaTeX 内核中\textsuperscript的 没有特殊处理。也许,它是一个重新定义 的包\textsuperscript。也许,空格是由实现中的错误引起的(最有可能是行尾的不需要的空格)。

更新

问题中现在提供的示例使用 XeTeX 和使用加载包的包xunicode。此包尝试找到真正的上级字形并使用它们代替“伪造的”上标。拉丁文本使用的字体是 Latin Modern。它只为 1、2 和 3 提供上级字形;字体没有下级字形。

一种解决方法是禁用代表 1、2 和 3 的文本上标字形的内部命令:

% arara: xelatex
\documentclass{report}
\pagestyle{empty}

\usepackage{xeCJK}

% Patch for disabling using real superior glyphs
% for superscripts 1, 2, and 3.
\newcommand*{\DeactivateSuperscript}[1]{%
  \expandafter\let
  \csname\string\EU1\string\textsuperscript-#1\endcsname\relax
}
\DeactivateSuperscript{1}
\DeactivateSuperscript{2}
\DeactivateSuperscript{3}

\begin{document}
\noindent
但是\textsuperscript{0}, 但是\textsubscript{0},\\
但是\textsuperscript{1}, 但是\textsubscript{1},\\
但是\textsuperscript{2}, 但是\textsubscript{2},\\
但是\textsuperscript{3}, 但是\textsubscript{3},\\
但是\textsuperscript{4}, 但是\textsubscript{4},\\
但是\textsuperscript{5}, 但是\textsubscript{5},\\
但是\textsuperscript{6}, 但是\textsubscript{6},\\
但是\textsuperscript{7}, 但是\textsubscript{7},\\
但是\textsuperscript{8}, 但是\textsubscript{8},\\
但是\textsuperscript{9}, 但是\textsubscript{9},\\
\end{document}

结果

空格来自\CJKecglue,似乎是插入在 CJK 和西方文本之间。作为真正的上标字形,U+00B2、U+00B3 构成 U+00B9 这样的西方文本,而其他上标都是用数学下标运算构造的,因此数学模式阻止了 的插入\CJKecglue

相关内容