![\setminus invisible](https://linux22.com/image/466641/%5Csetminus%20invisible%20.png)
使用拉丁现代字体时,符号 \setminus 是不可见的(我偶然发现它已从我的所有文档中消失)。以下是 MWE:
\documentclass[10pt,a4paper,french]{article}
\usepackage{mathtools}
\usepackage{babel}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket},math-style=french]{unicode-math}
\usepackage[scale={0.75,0.8},footskip=1.5cm,heightrounded]{geometry}
\newfontface{\STIXTWO}{STIX Two Math}
\RenewDocumentCommand{\setminus}{}{\mbox{\STIXTWO\symbol{"029F5}}}
\begin{document}
$A\setminus B$
\end{document}
所以我尝试\newfontface
使用 StiX Two(感谢 egreg 为我解答了另一个符号问题)但不起作用。我该怎么办?
答案1
TeX Gyre 字体缺少此符号。这是一个常见的错误,它unicode-math
2011 年没有修复,因为这是一个上游问题,然后也没有实现任何解决方法。例如,可以以字体无关的方式检查当前数学字体是否包含 U+29F5,如果不包含,则重新映射。
你可能想在文档顶部附近设置
\tracinglostchars=3
让 TeX 将缺失的字符视为错误,而不是默默地忽略它们。
您的选择包括:
- 加载具有该字体的字体,例如 New Computer Modern (
\usepackage[default]{fontsetup}
),但这实际上使用了\smallsetminus
的字形\setminus
。 - 从具有该符号的字体中加载此符号(
\setmathfont{Asana Math}[range=\setminus, Scale=MatchUppercase]
) - 重新映射到另一个字符,例如
\smallsetminus
或反斜杠 (\AtBeginDocument{\renewcommand{\setminus}{\smallsetminus}}
)
答案2
你也可以这样做,但你会得到一个形状与拉丁现代不兼容的符号。改进的版本将是
\documentclass[10pt,a4paper,french]{article}
\usepackage{mathtools}
\usepackage{babel}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket},math-style=french]{unicode-math}
\usepackage[scale={0.75,0.8},footskip=1.5cm,heightrounded]{geometry}
\newfontface{\STIXTWO}{STIX Two Math}
\AtBeginDocument{%
\RenewDocumentCommand{\setminus}{}{\mathbin{\text{\STIXTWO\symbol{"029F5}}}}%
}
\begin{document}
$A\setminus B$
$x_{A\setminus B}$
\end{document}
但对于拉丁现代字体(以及其他缺少该字符的字体)来说,更好的解决方案如下。
\documentclass[10pt,a4paper,french]{article}
\usepackage{mathtools}
\usepackage{babel}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket},math-style=french]{unicode-math}
\usepackage[scale={0.75,0.8},footskip=1.5cm,heightrounded]{geometry}
\AtBeginDocument{%
\RenewDocumentCommand{\setminus}{}{\mathbin{\backslash}}%
}
\begin{document}
$A\setminus B$
$x_{A\setminus B}$
\end{document}