使用 \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
。