假数学字母

假数学字母

为了解决常见的“字母太多”错误,我以某种方式创建了假的数学命令。

\documentclass[fleqn,a4paper,12pt,twoside]{book}
\usepackage[top=3.2cm,bottom=3.2cm,left=3.3cm,right=3.3cm,a4paper]{geometry}
\usepackage[MnSymbol]{mathspec}
\usepackage{xltxtra}
\usepackage{esvect}
\renewcommand{\vec}{\vv}
\defaultfontfeatures{Numbers=OldStyle,Scale=MatchLowercase}
\setmainfont[Mapping=tex-text]{Minion Pro}
\setmathfont(Digits,Latin,Greek)[Uppercase=Regular,Lowercase=Italic]{Minion Pro}

% correct commands yielding the math alphabet error messages when uncommented
\setmathrm{Minion Pro} 
\DeclareMathOperator{\dive}{div}

\begin{document}
\begin{equation}
\mathcal{A}=\cos \pi\quad\vec{e}=3\vec{\dive}(u)\mathfrak{B}
\end{equation}
\end{document}

这样的代码无法编译。解决方法是,将定义文档数学字母表的两行代码替换为(您必须对其进行注释):

% fake cosinus and divergence commands to get similar results without the error message
\renewcommand{\cos}{\text{cos}\,}
\newcommand{\dive}{\text{div}\,}

代码将会编译并得到非常相似的结果:那么这个技巧有什么问题呢?

谢谢

答案1

我不知道数学字母 MnSymbol 和 Minin Pro,但看看这里“数学字母太多”错误。他们不使用 XeTeX,但显然它与 MnSymbol 有关。如果你替换

\usepackage[MnSymbol]{mathspec}

经过

\usepackage{amssymb,amsmath}
\usepackage{mathspec}

您的示例编译没有问题。但字体可能不合适……

但关于错误的窍门:如果你在某个改变文本字体的环境中使用此构造,则此方法无效。在定理中,文本将为斜体,你的 也将为斜体\text{cos}

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\itshape
\[\cos \neq \text{cos}\]
\end{document}

此外,如果您稍后决定更改字体并且不将相同的字体用于文本和数学,您可能会看到它将cos出现在文本字体中,因此在公式中间有些不合适。

相关内容