使用 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 用户组中建议切换到多语制,这也有效。