unicode-math 或 lualatex 中存在错误?

unicode-math 或 lualatex 中存在错误?

考虑以下最小示例:

\documentclass{article}

\usepackage{unicode-math}

\newcommand{\dotcup}{\ensuremath{\mathaccent\cdot\cup}}

\begin{document}
$a \dotcup b$
\end{document}

如果编译时lualatex出现以下错误

This is LuaTeX, Version 0.95.0 (TeX Live 2016) 
 restricted system commands enabled.
(./min.tex
LaTeX2e <2016/03/31> patch level 2
Babel <3.9r> and hyphenation patterns for 1 language(s) loaded.
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
...
! Missing number, treated as zero.
<to be read again> 
\cdot 
l.8 $a \dotcup
             b$
...

另一方面,如果我不unicode-math使用 而是使用 来编译示例,那么我将获得所需的 PDF 文件。这是或pdflatex中的错误吗?unicode-mathlualatex

编辑: 该命令\dotcup在文件中作为示例给出symbols-a4.pdf,它作为将两个符号居中的示例。最后,我对那个特定的符号不感兴趣,而是对两个其他符号的组合感兴趣,我收到了同样的错误。这意味着,它为我提供了一个通用示例,以确定这是一个错误还是预期行为。

答案1

在旧版 LaTeX 和 中,\mathaccent和的实现有很大不同。\cdotunicode-math

\documentclass{article}

\usepackage{unicode-math}
\newcommand{\cdotaccent}{\Umathaccent fixed "7 "2 `⋅ }

\newcommand{\dotcup}{\mathbin{\cdotaccent\cup}}

\begin{document}
$a \dotcup b$
\end{document}

当然\ensuremath是没用的,但是却\mathbin给出了预期的间距。

在此处输入图片描述

答案2

用法非常奇怪(\mathaccent以数字而不是字符作为说明符)虽然如果给它一个\mathchardef标记它就会起作用,因为它将数学代码重新解释为数学重音。

unicode-math\cdot将(和大多数符号)的定义更改\let为Unicode字符而不是\mathchardef定义的标记,因此它不是一个有效的数字。

然而,即使对于 pdftex 来说,这个定义似乎也不好,因为你可能想要一个\mathbin操作符来使用\cup

我认为你想要 U+228D (⊍) 所以

在此处输入图片描述

\documentclass{article}

\usepackage{unicode-math}



\begin{document}


$a \cupdot b$
\end{document}

相关内容