空集符号混淆

空集符号混淆

我正在尝试排版空集的符号并使用答案那个问题我选择了\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.styamsfonts.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}

输出与上面相同。

相关内容