使用 lualatex 和 unicode-math 移动 underbrace

使用 lualatex 和 unicode-math 移动 underbrace

编译此示例:

\documentclass{scrartcl}

\usepackage{mathtools}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}

\begin{document}
\begin{equation*}
  \symcal{L}_{\text{QED}} =
    - \underbrace{\frac{1}{4} F_{\mu\nu} F^{\mu\nu}}_\text{Photon}
    + \underbrace{\bar{\psi} (i \gamma^\mu\partial_\mu - m) \psi}_\text{Dirac}
    - \underbrace{eQ\bar{\psi} \gamma_\mu \psi A^\mu}_\text{WW}
\end{equation*}
\end{document}

使用 TeXLive 2016 中的 lualatex,第二个\underbrace 向左移动。这似乎只发生在第一个是\underbrace\bar

即使添加一些荒谬的东西也可以\hphantom{}解决问题。

仅有的\underbrace{\bar{\psi} (i \gamma^\mu\partial_\mu - m) \psi}_\text{Dirac}

结果1

\hphantom{}在之前添加\bar

结果2


一个“更简单”的例子,用来编译luatex

\input ifluatex.sty
\ifluatex
  \input luaotfload.sty
\fi

\font\mf="[latinmodern-math.otf]"
\textfont1=\mf \scriptfont1=\mf \scriptscriptfont1=\mf
\protected\def\underbrace#1{%
  \mathop{\Umathaccent bottom 7 1 "023DF\relax {#1}}\limits
}
\protected\def\hat{\Umathaccent fixed 7 1 "00302\relax}

$\underbrace{z+w}_y$\qquad$\underbrace{\hat{z}+w}_{y}$

\bye

在此处输入图片描述

如果使用编译xetex,则输出为

在此处输入图片描述

将数学字体更改为xits-math.otf不会改变情况。Asana-Math.otf输出有所不同:

在此处输入图片描述 在此处输入图片描述

答案1

作为临时的解决方法,您可以添加由大卫·卡莱尔在过度支撑和不足支撑的定义中。

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

\cs_set:Nn \__um_set_math_overunder:Nnnn
 {
  \cs_gset_protected_nopar:Npx #1 ##1
   {
    \mathop
     { \__um_accent:nnn {#2} {#3} {#4} {{}{##1}} } % see the empty braces?
    \limits
   }
 }

\ExplSyntaxOff
\begin{document}
\[
  \symcal{L}_{\text{QED}} =
    - \underbrace{\frac{1}{4} F_{\mu\nu} F^{\mu\nu}}_\text{Photon}
    + \underbrace{\bar{\psi} (i \gamma^\mu\partial_\mu - m) \psi}_\text{Dirac}
    - \underbrace{eQ\bar{\psi} \gamma_\mu \psi A^\mu}_\text{WW}
\]
\end{document}

在此处输入图片描述

相关内容