我可以将什么放入包\setmathfont{<...>.otf}
中unicode-math
以使其全部正常工作(使用 XeLaTeX 或 LuaLaTeX)?
有几条建议GitHub 页面的unicode-math
,但第一个选项是商业的,第二个和第三个不适用于以下示例:
% !TEX TS-program = xelatex
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{latinmodern-math.otf}
% \setmathfont{texgyrepagella-math.otf}
% \setmathfont{xits-math.otf}
\begin{document}
$X\setminus Y$
\end{document}
我没有\setminus
在输出中得到该字符。
\setminus
如果我根本不设置数学字体,字符也会丢失(我不知道在这种情况下使用哪种字体)。它可以与一起使用,xits-math
但我不喜欢它。
\setminus
顺便问一下,字符留空而不给出任何警告,这是预料之中的吗?
答案1
大约十二年后,这个问题已经得到解决:https://github.com/wspr/unicode-math/issues/181#issuecomment-1675944769
我对这个问题的解决方案正是如此 - 使用“2216 为 \setminus,假 \smallsetminus,任何需要不同东西的人都可以使用一些单行重新定义(例如 \renewcommand\setminus{\reversesolidus} )。
使用最新的unicode-math
,该命令\setminus
可以正常工作。
答案2
拉丁现代数学、TeX Gyre Termes Math 和 TeX Gyre Pagella 中缺少这个符号,这很奇怪,可能值得报告错误。
您可以使用以下range
选项来补充单个符号\setmathfont
:
\documentclass{article}
\usepackage{unicode-math}
%\setmathfont{Latin Modern Math} % default
\setmathfont[range=\setminus]{Asana Math}
\begin{document}
$X\setminus Y$
\end{document}
另一种可能性是将其用作\backslash
二元运算符:
$X \mathbin{\backslash} Y$
给出
在这种情况下
\renewcommand{\setminus}{\mathbin{\backslash}}
将会\setminus
执行预期的操作。但是,必须在文档开始时发出重新定义,因为unicode-math
此时准备其内部数学符号表。
\documentclass{article}
\usepackage{unicode-math}
%\setmathfont{Latin Modern Math} % default
\AtBeginDocument{% to do this after unicode-math has done its work
\renewcommand{\setminus}{\mathbin{\backslash}}%
}
\begin{document}
$X\setminus Y$
\end{document}
答案3
它适用于
\setmathfont{Asana-Math.otf}
或者如问题中所述,
\setmathfont{xits-math.otf}
正如评论中提到的那样,如果它不起作用,您会在日志中收到警告,例如 latinmodern:
Missing character: There is no ⧵ in font [latinmodern-math.otf]/ICU:script=math ;language=DFLT;!
答案4
解决此问题的一个可能方法(仍然存在)6年后) 是用来\smallsetminus
替代的。
% !TEX TS-program = xelatex
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{latinmodern-math.otf}
% \setmathfont{texgyrepagella-math.otf}
% \setmathfont{xits-math.otf}
\begin{document}
$X\smallsetminus Y$
\end{document}
给出:
如果你很懒的话,你甚至可以在序言末尾添加:
\AtBeginDocument{
\renewcommand{\setminus}{\smallsetminus}
}