由于 setmathfont(在 LyX 中),blindtext、unicode-math 和 babel 无法正常播放

由于 setmathfont(在 LyX 中),blindtext、unicode-math 和 babel 无法正常播放

使用 unicode-math,我尝试(在 LyX 中)将一种字体作为我的主要字体,同时也用于数学拉丁字符和希腊字符,同时保持其余部分保持原样。

同时,我想使用blindtext

盲文仅允许\blindmathtrue在语言已经设置为英语

我认为我必须通过 LyX 文档偏好设置中的语言包自定义区域来完成此操作,但是使用\usepackage[english]{babel}breakunicode-math

我明白了

! 字体 \l_tmpb_font 只有 8 个 fontdimen 参数。

如果我使用默认语言包,则所有功能都可以正常使用,但如上所述,盲文英语/数学除外。

%This is in my preamble:
\usepackage[vargreek-shape=unicode]{unicode-math}
\setmathfont{Latin Modern Math} % this is obligatory or no math font will
be set...
%everything works to here. But this setmathfonts is causing the problem
\setmathfont[range=\mathit/{latin, Latin}]{SNsanafonmaruP} 
% upper and lower case latin and numbers 
% any font will do

\setmainfont[Mapping= tex-text]{SNsanafonmaruP} % not actually relevant....
\usepackage{blindtext}

我不认为我使用的字体是问题所在;无论我使用什么文本字体,我都会得到相同的行为,即使是像 Biolinium 或 Hoefler Text 这样常见的字体。

(注意:该示例从大量用于unicode-math邪恶目的的用途中大量删减,因此这是为了尽最大努力为似乎是问题的关键的部分提供 MWE。)

问题不在于 LyX。以下是无法正常工作的 TeX (TeXShop) 文档:

% tell TeXShop to use xelatex, open/save in Unicode
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage[english]{babel}

\usepackage[vargreek-shape=unicode]{unicode-math}
\setmathfont{Latin Modern Math} % obligatory or no math font will be set...

%UNCOMMNENTING THIS LINE CAUSES ERROR
% using text only font: I also tried Hoefler Text, etc. The font I really want is SNsanafonmaruP
%\setmathfont[range=\mathit/{latin, Latin}]{Linux Biolinum O} %  upper and lower case  latin and numbers
%Using a font like LLO however, does work
%\setmathfont[range=\mathit/{latin, Latin}]{Linux Libertine O} %  upper and lower case  latin and numbers

\usepackage{blindtext}
\begin{document}

No math:\blindtext
\blindmathtrue
With Math:\blindtext

\end{document}

答案1

很好埃格尔和谷歌的帮助我找到了答案。答案可以找到这里 (github)这里 (tex.stackexchange)并添加\setmathfont[range=\int]{Latin Modern Math}到序言的末尾。

(或者,使用polyglossia而不是也可以babel。)

以下是逐一分析:

埃格雷格正确建议我将其用作$\sqrt[3]{2}$最小示例。当我这样做时,我能够排除blindtext罪魁祸首,因为即使没有盲文,我也遇到了错误。

此外,他敏锐地指出,问题在于“所选字体不适用于数学“。这让我想到range=\mathit/{latin, Latin},除了将默认数学字体更改为“拉丁”字符的文本字体(所需行为)之外,还以某种方式捕获了平方根符号。由于文本字体中不存在这个符号,因此引发了错误。我想通过添加另一个来解决这个问题\setmathfont,这让我在谷歌上搜索“setmathfont range”,在那里我认出了埃格尔臭名昭著的平方根:如果 \setmathfont 使用两次以上,\sqrt[n]{x} 会中断,链接到\sqrt[x]{y} 与 unicode-math 不符

看起来这是一个漏洞(你又说对了,埃格尔) 在unicode-math中似乎“将最后一个字体集映射到\setmathfont\l_um_font然后在\r@@t[平方根] 中使用它来获取\fontdimen“。”添加所需的所有其他符号和字母,看看是否还有其他问题“!可能是必要的。此外,”LuaTeX 和 XeTeX 对平方根的重新定义不同,因此您只会看到 XeTeX 的问题。

之后,某人LyX 用户组中建议切换到多语制,这也有效。

相关内容