我正在尝试排版空集的符号并使用答案那个问题我选择了\varnothing
,但当我使用它时,我得到的是所描述的符号\emptyset
,反之亦然。此外,当我使用该amssymb
包时,我收到以下错误:
Command `\eth' already defined.
Command `\digamma' already
Command `\backepsilon' already
如果我不使用,amssymb
这两个符号仍然会发生相同的情况。发生了什么?我怎样才能得到正确的符号?(意思是\varnothing
)
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont
[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
Mapping=tex-text
]{GFSArtemisia}
\setsansfont[Mapping=tex-text]{GFSArtemisia.otf}
\usepackage[english,greek]{babel}
\usepackage[fleqn]{amsmath}
\usepackage{unicode-math}
\begin{document}
This is the problem:
\vspace{1cm}
$\varnothing \quad \emptyset$
\end{document}
答案1
空集及其变体符号没有两个不同的 Unicode 点(它们只是同一符号的不同形式)。找到一种具有圆形形式的字体并使用它。
\documentclass[12pt]{article}
\usepackage[fleqn]{amsmath}
\usepackage{unicode-math}
\usepackage[english,greek]{babel}
\setmainfont[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
]{GFSArtemisia}
%\setsansfontMapping=tex-text]{GFSArtemisia.otf} %%% it's not sans serif!
\setmathfont{Latin Modern Math}
\setmathfont[range=\varnothing]{Asana Math}
\setmathfont[range=\int]{Latin Modern Math}
\begin{document}
This is the problem: $\varnothing\subseteq A\times B$
\end{document}
顺便说一句,拉丁现代数学和 GFS Artemisia 似乎不是一个好的组合。如果你的文档包含大量数学内容,我认为不推荐使用 Artemisia 来处理拉丁字符,因为没有匹配的数学字体。
如果为某些范围的字符选择了另一种数学字体,则明确加载拉丁现代数学是必要的(fontspec
我想这是一个错误)。
请注意,根据主机系统(例如 ShareLaTeX 或 WriteLaTeX)或您自己的系统,字体可能必须通过文件名而不是字体名称加载;在这种情况下,数学字体应该使用
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\varnothing]{Asana-Math.otf}
\setmathfont[range=\int]{latinmodern-math.otf}
答案2
另一种方法是使用“msb”(?)字体,这是在amssymb
没有 的情况下加载包时使用的字体unicode-math
。
只需打开amssymb.sty
并amsfonts.sty
复制两行,然后更改\varnothing
为\varnothingold
。
%! TEX program = lualatex
\documentclass{article}
%\usepackage{amssymb}
\usepackage{unicode-math}
\DeclareSymbolFont{AMSb}{U}{msb}{m}{n} % not needed with \usepackage{amsfonts} or \usepackage{amssymb}
\DeclareMathSymbol{\varnothingold} {\mathord}{AMSb}{"3F}
\begin{document}
$\varnothing$
$\varnothingold$
\end{document}
另一种方法是使用 New Computer Modern 字体,它看起来与“默认 TeX 数学字体”类似,只是它有一个cv01
字符表(或 CharacterVariant=1 选项),可以选择符号的圆角变体∅
。
\documentclass{article}
\usepackage{unicode-math}
\begin{document}
$\emptyset$
\setmathfont[CharacterVariant=1]{NewCMMath-Regular.otf}
$\emptyset$
\end{document}
输出与上面相同。