使用 unicode-math 放置下标

使用 unicode-math 放置下标

我在加载下标中使用框时遇到了问题unicode-math

我从我的包中起草了以下 MWEactuarialsymbol。[以下命令\qx将下标放在符号的两侧;下标应底部对齐。]

\documentclass{article}
 \usepackage{unicode-math}

 \makeatletter
 \def\qx[#1]#2{
   \fboxsep=0pt % for debugging purposes
   \setbox\@ne\hbox{$\scriptstyle{#1}$}
   \setbox\thr@@\hbox{$\scriptstyle{#2}$}
   \ifdim \ht\@ne>\ht\thr@@
     \ht\thr@@=\ht\@ne
   \else
     \ht\@ne=\ht\thr@@
   \fi
   \vphantom{q}\sb{\fbox{\box\@ne}}%
   q\sb{\fbox{\box\thr@@}}%
 }
 \makeatother

\begin{document}

$\qx[t]{x}$

\end{document}

使用 进行编译时xetex,两侧的t和的高度不同:xq

在此处输入图片描述

注释掉后unicode-math,下标处于相同的高度,正如我所期望的,并且与以下内容一起工作pdftex

在此处输入图片描述

在符号构建之前添加\the\ht\thr@@\the\ht\@ne解决了定位问题(但显然不是一个可行的解决方案)。删除对的调用\vphantom也可以解决定位问题。

我在文档中看到unicode-math使用 xetex 对 unicode-math 中的下标进行了一些处理,但老实说,我不知道我可能做错了什么或者应该如何解决这个问题。

使用 unicode-math 放置下标。这是 XeTeX 错误吗?似乎与我的问题密切相关,但遗憾的是没有任何帮助。

答案1

\vphantom我可以看到使用时的不同移位。奇怪的是,如果明确选择\textstyle\vphantom 内部,它会消失。它看起来像泄漏 mathstyles 问题的另一种变体,在我看来,这可能是一个xetex问题,而不是unicode math

\documentclass{article}
 \usepackage{unicode-math}


\makeatletter
 \def\qx[#1]#2{
   \fboxsep=0pt % for debugging purposes
   \setbox\@ne\hbox{$\scriptstyle{#1}$}
   \setbox\thr@@\hbox{$\scriptstyle{#2}$}
   \ifdim \ht\@ne>\ht\thr@@
     \ht\thr@@=\ht\@ne
   \else
     \ht\@ne=\ht\thr@@
   \fi
   \vphantom{q}\sb{\fbox{\box\@ne}}%
   q\sb{\fbox{\box\thr@@}}%
 }
\makeatother
\usepackage{tikz}
\begin{document}



\tikz[overlay]\draw[red] (0,-2.47003pt)--++(10cm,-2.47003pt);
$\vphantom{\textstyle q}\sb{t} q\sb{t}$

\tikz[overlay]\draw[red] (0,-2.47003pt)--++(10cm,-2.47003pt);
$\vphantom{q}\sb{t} q\sb{t}$

\tikz[overlay]\draw[red] (0,-2.47003pt)--++(10cm,-2.47003pt);
$\qx[t]{x}$


\makeatletter
 \def\qx[#1]#2{
   \fboxsep=0pt % for debugging purposes
   \setbox\@ne\hbox{$\scriptstyle{#1}$}
   \setbox\thr@@\hbox{$\scriptstyle{#2}$}
   \ifdim \ht\@ne>\ht\thr@@
     \ht\thr@@=\ht\@ne
   \else
     \ht\@ne=\ht\thr@@
   \fi
   \vphantom{\textstyle q}\sb{\fbox{\box\@ne}}%
   q\sb{\fbox{\box\thr@@}}%
 }
\makeatother

\tikz[overlay]\draw[red] (0,-2.47003pt)--++(10cm,-2.47003pt);
$\qx[t]{x}$



\end{document}

在此处输入图片描述

答案2

我无法确认该问题:

\documentclass{article}
\usepackage{ifxetex}
\ifxetex
  \usepackage{unicode-math}
\else
  \usepackage{lmodern}
\fi

\makeatletter
\def\qx[#1]#2{%
  \begingroup
  \sbox\z@{$\scriptstyle{#1}$}%
  \sbox\tw@{$\scriptstyle{#2}$}%
  \ifdim \ht\z@>\ht\tw@
    \ht\tw@=\ht\z@
  \else
    \ht\z@=\ht\tw@
  \fi
  \vphantom{q}\sb{\box\z@}%
  q\sb{\box\tw@}%
  \endgroup
}
\makeatother
\newcommand{\debugrule}{%
  \leavevmode
  \rlap{%
    \sbox0{$q_x$}\sbox2{$q$}%
    \dimen0=\dp0 \ifdim\dp2>\dp0 \dimen=\dp2\fi
    \vrule depth \dimen0 height \dimexpr0.1pt-\dimen0\relax width 2cm}%
}

\begin{document}

\debugrule$q_tq_x\qx[t]{x}$

\debugrule$\vphantom{q}_{q}q_x\qx[q]{x}$

\debugrule$\vphantom{q}_{t}q_x\qx[t]{x}$

\end{document}

使用 XeLaTeX 编译后得到

在此处输入图片描述

\vphantom{q}_t仅在未调整高度的情况下使用时才会出现错位。

相关内容