LyX 和 mathspec 给出 fontspec 错误,unicode-math 也没有改善

LyX 和 mathspec 给出 fontspec 错误,unicode-math 也没有改善

mathspec我在 LyX 中使用时收到以下错误消息

...Package[\eu@zf@math]{fontspec}[2008/08/09]
The package fontspec has already been loaded with options:   [] There has now been
an attempt to load it with options   [no-math] Adding the global
options:   ,no-math to your \documentclass declaration may fix this.
Try typing  <return>  to proceed.

这是我在 LyX 中的序言

\usepackage[no-math]{mathspec} 
\setmathsfont(Latin)[Scale=MatchLowercase,Uppercase=Regular,Lowercase=Italic]{SNsanafonmaruP}
\setmathsfont(Greek)[Scale=MatchLowercase,Uppercase=Regular,Lowercase=Regular]{SNsanafonmaruP}
\setmathsfont(Digits)[Numbers={Lining}]{SNsanafonmaruP} 

(nb默认mathspec加载。我明确地把它放在那里,但即使它不在那里也会出现错误。)fontspecno-math

问题是 LyX 会fontspec自动加载,从而引发错误。

我不确定该如何继续。

我正在使用 XeTeX 作为我的输出......

更新日期:2/29/12

我尝试过使用unicode-math而不是mathspec,如下所示:

usepackage[vargreek-shape=unicode]{unicode-math}
\unimathsetup{math-style=TeX} % sets whther vars are upper or lc vars and lating chars in math
\setmathfont{lmmath-regular.otf} % this is obligatory or no math font will be set...
\setmathfont[range=\mathup/{latin, Latin, num}]{SNsanafonmaruP} %  upper and lower case  latin and numbers
\setmathfont[range=\mathup/{Greek,greek}]{SNsanafonmaruP} % upper case Greek
\setmathfont[range=\mathit/{latin, Latin, num}]{SNsanafonmaruP}
\setmathfont[range=\backepsilon]{SNsanafonmaruP}
\setmathfont[range=\mathit/{greek,Greek}]{SNsanafonmaruP}

unicode-math不会默认(例如计算机现代...我对传统的 Unicode 替代品 Asana 和 STIX 不满意(太粗,尤其是求和符号,我喜欢默认符号,我只想要自己的希腊语、拉丁语和数字字体)任何东西,这会很好,所以我必须包含第一个\setmathfont并指定一个默认字体,但是当我尝试输入“Computer Modern”或“Computer Modern Math”时它找不到它,我猜它不可能是因为它不是 Unicode??,所以我尝试了lmmath-regular.otf或拉丁现代数学,我可能必须安装这些,但我在 MikTeX 中找不到它的包,无论如何,根据错误列表,unicode-math这会中断mathcal所以我不应该,并且启动它不起作用,因为找不到字体。

所以看起来我离得很近,但又很远,正如俗话所说......

答案1

更新时间:3/4/12 尽管仍然对原始查询 re: mathspec 感到好奇,但我会为有类似问题的人添加以下更新:

我发现拉丁现代字体在线,它基于计算机现代数学,所以现在我可以使用它来获得我所寻找的东西。使用的好处unicode-math是我可以微调特定字符,例如 backepsilon,尽管需要对手册进行一些解释和有根据的猜测才能得到可行的解决方案,因此我在这里记录下来只是为了后代和完整性:

%\usepackage[vargreek-shape=TeX]{unicode-math}
\usepackage[vargreek-shape=unicode]{unicode-math} %controls which shape of epsilon and phi are considered default
\unimathsetup{math-style=french} % uses so called french style italic lc latin, upright everything else
\setmathfont{Latin Modern Math} % this is obligatory or no math font will be set...

% MATHUP Case
\setmathfont[range=\mathup/{latin, Latin, num}]{SNsanafonmaruP} %  upper and lower case  latin and numbers
\setmathfont[range=\mathup/{Greek,greek}]{SNsanafonkakuP} % upper lower case Greek

% Italic
\setmathfont[range=\mathit/{latin, Latin}]{SNsanafonmaruP} %  upper and lower case  latin and numbers
%\setmathfont[range=\mathit/{greek,Greek}]{SNsanafonmaruP} % italic greek

\setmathfont[range=\mathbfup/{num}]{nagurigaki} %  boldface uppercase numbers

% SPECIAL Characters
\setmathfont[range=\phi]{Cambria Math} % this doesn't work
\setmathfont[range=\varphi]{Cambria Math} % this doesn't work
\setmathfont[range=\upvarphi]{Courier New Bold} % this works
\setmathfont[range=\upphi]{Courier New Bold} % this works
\setmathfont[range=\Phi]{Courier New Bold} % this doesn't work
\setmathfont[range=\upPhi]{Courier New Bold} % this works  
\setmathfont[range=\Upphi]{SNsanafonmaruP} % this doesn't work

\setmathfont[range=\epsilon]{Cambria Math} % this doesn't work
\setmathfont[range=\upepsilon]{Courier New Bold} % this works
\setmathfont[range=\upvarepsilon]{Courier New Bold} % this works

\setmathfont[range=\Epsilon]{Cambria Math} % this doesn't work
\setmathfont[range=\upEpsilon]{Cambria Math} % this works

\setmathfont[range=\backepsilon]{Courier New Bold} % this doesn't work
\setmathfont[range=\upbackepsilon]{Courier New Bold} % this works and fixes backepsilon

\setmathfont[range=\in]{Cambria Math} % this works / not in courier new bold
\setmathfont[range=\ni]{Cambria Math} % this works / not in courier new bold
\setmathfont[range=\upin]{Cambria Math} % this doesn't bomb but doesn't work
%\setmathfont[range=\upni]{SNsanafonmaruP} % this bombs latex!?
\setmathfont[range=\implies]{Latin Modern Math} % this doesn't bomb but doesn't work I believe..using \rightarrow instead

答案2

Lyx 加载 fontspec 包很可能是因为在 Document Settings->Fonts 中选择了“使用非 TeX 字体”设置。当您尝试再次通过 mathspec 包加载它时会产生错误。要解决此问题,请取消选择“使用非 TeX 字体”并将所有字体设置为默认字体。现在您可以在序言中自行加载 mathspec 包。将以下内容添加到 Document Settings->LaTeX Preamble 以加载 mathspec(并自动加载 fontspec)包并将所有文本(主要和数学)设置为 Minion Pro:

\usepackage{mathspec}
\setallmainfonts[Numbers={Lining,Proportional}]{Minion Pro}

相关内容