考虑以下 MWE:
\documentclass[preview]{standalone}
\usepackage{fontspec}
\usepackage[english]{babel}
\usepackage[babel]{microtype}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{unicode-math}
% Operators
\DeclareMathOperator{\E}{\mathbb{E}}
\DeclareMathOperator{\var}{var}
\begin{document}
Let \(X\) be a random variable. Its expected value is denoted by
\(\E X\), and its variance by \(\var X\).
\(\sin X\) and \(\cos X\) are also random variables.
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-command-extra-options: "-shell-escape"
%%% TeX-engine: luatex
%%% TeX-master: t
%%% End:
生成的输出如下所示。显然,\DeclareMathOperator{\E}{\mathbb{E}}
没有起作用。日志不包含任何有用的信息。
现在,如果我在和unicode-math
之前加载,如下所示:mathtools
amsthm
\usepackage{unicode-math}
\usepackage{mathtools}
\usepackage{amsthm}
我得到了如下所示的输出。 \DeclareMathOperator{\E}{\mathbb{E}}
似乎可以工作,但是其他运算符(例如\sin
,\cos
和自定义)\var
以斜体而不是罗马字体排列。
这些文档使用以下版本的 LuaLaTeX、mathtools
和排版unicode-math
:
# LuaLaTeX
This is LuaTeX, Version 1.0.4 (TeX Live 2017)
# unicode-math
package: unicode-math
category: Package
shortdesc: Unicode mathematics support for XeTeX and LuaTeX
revision: 46300
cat-version: 0.8k
cat-date: 2018-01-13 15:04:43 +0100
# mathtools
package: mathtools
category: Package
shortdesc: Mathematical tools to use with amsmath
cat-version: 1.21
cat-date: 2018-01-08 15:01:37 +0100
答案1
以下是该问题的一个更简单的例子:
\documentclass{article}
\usepackage{unicode-math}
\begin{document}
\makeatletter
${\operator@font foo}$
${\operator@font \mathbb{foo}}$
\makeatother
\end{document}
(顺便说一下,日志文件显示了问题的本质。)
短期内解决办法如下:
\documentclass{article}
\usepackage{unicode-math}
\setoperatorfont\symup
\begin{document}
\makeatletter
${\operator@font foo}$
${\operator@font \mathbb{foo}}$
\makeatother
\end{document}
但是,此修复会稍微扰乱您的其他操作符(如\sin
和)\cos
,这取决于您对这些事情的挑剔程度。
我可能需要定义多个操作员字体!