带有 otfmath 选项的 XCharter 字体不会将 tcolorbox 内的脚注设置为上标

带有 otfmath 选项的 XCharter 字体不会将 tcolorbox 内的脚注设置为上标

我遇到了以下问题,我花了一些时间才深入研究 MWE。问题似乎是tcolorbox在 tcolorboxes 中将脚注标记设置为斜体。当用作XCharter数学字体时,会导致脚注标记未设置为上标。

看看以下 MWE(我使用 LuaLaTeX 来构建它们):

\documentclass{article}
% Geometry is just to get everything in a small area
\usepackage[paperheight=5cm,paperwidth=9cm,margin=5mm]{geometry}
\usepackage{tcolorbox}

% FONT SETTINGS HERE

\begin{document}
\begin{tcolorbox}
  A\footnote{footnote} test! This \(\mathcal{D}\) should have a fancy swirl.
  Normal a, italic \emph{a}, math \(a\).
\end{tcolorbox}
A\footnote{footnote} outside works just fine as expected.
\end{document}

没有附加字体选项会产生以下结果:

\usepackage[otfmath]{XCharter}

或者

\usepackage{xcharter-otf}

我获得了这个结果,它具有正确的数学字体,但没有将脚注标记设置为上标:

只需

\usepackage{XCharter}

它运行良好,但显然没有使用所需的数学字体:

以下解决方案

\usepackage{fontspec}
\setmainfont{XCharter}
\usepackage{unicode-math}
\setmathfont{XCharter Math}

到目前为止似乎运行良好,但我想知道是否缺少了什么,因为文档XCharter表明使用第一个例子应该是可行的方法。

尽管我对最后一部分有解决方案,但我还是想了解这个问题来自哪里,以及这是预期的行为还是可能是一个错误。

答案1

该包xcharter-otf,就是您在XCharter使用otfmath包调用时得到的,它确实

\RequirePackage{realscripts}

这对于数字很有效,但对于斜体字母则无效。

\documentclass{article}
\usepackage{realscripts}
\usepackage{fontspec}

\setmainfont{XCharter}

\begin{document}

t\textsuperscript{1234567890abcdefg}

t\textsuperscript{\itshape 1234567890abcdefg}

\end{document}

在此处输入图片描述

realscripts除了采用较低级别的构造之外,我看不出有其他方法可以禁用加载。

\documentclass{article}
% Geometry is just to get everything in a small area
\usepackage[paperheight=5cm,paperwidth=9cm,margin=5mm]{geometry}

\makeatletter
\disable@package@load{realscripts}{}
\makeatother
\usepackage[otfmath]{XCharter}
\usepackage{tcolorbox}

% FONT SETTINGS HERE

\begin{document}
\begin{tcolorbox}
  A\footnote{footnote} test! This \(\mathcal{D}\) should have a fancy swirl.
  Normal a, italic \emph{a}, math \(a\).
\end{tcolorbox}
A\footnote{footnote} outside works just fine as expected.
\end{document}

在此处输入图片描述

或者,\realsuperscript禁用\parboxminipage

\documentclass{article}
% Geometry is just to get everything in a small area
\usepackage[paperheight=5cm,paperwidth=9cm,margin=5mm]{geometry}

\usepackage[otfmath]{XCharter}
\usepackage{tcolorbox}

\AddToHook{cmd/@parboxrestore/after}{%
  \RenewCommandCopy\realsuperscript\fakesuperscript
}

% FONT SETTINGS HERE

\begin{document}

\begin{tcolorbox}
  A\footnote{footnote} test! This \(\mathcal{D}\) should have a fancy swirl.
  Normal a, italic \emph{a}, math \(a\).
\end{tcolorbox}
A\footnote{footnote} outside works just fine as expected.
\end{document}

在此处输入图片描述

相关内容