5

I use \mathabx package because I like much more their mathematical symbols. Except for the empty set symbol ($\emptyset$ in LaTeX). I would like to changed it by the standard Computer Modern symbol. But I don't know how to do it. There are some examples to import particular symbols, but I don't undertsand them.

For example, the code

\DeclareFontFamily{U}{matha}{\hyphenchar\font45}
\DeclareFontShape{U}{matha}{m}{n}{
      <5> <6> <7> <8> <9> <10> gen * matha
      <10.95> matha10 <12> <14.4> <17.28> <20.74> <24.88> matha12
      }{}
\DeclareSymbolFont{matha}{U}{matha}{m}{n}
\DeclareFontSubstitution{U}{matha}{m}{n}
\DeclareMathSymbol{\abxcup}{\mathbin}{matha}{'131}

has been taken from the question The standard \cup vs. the mathabx \cup. Question Importing a Single Symbol From a Different Font also has a similar code. How can I changed them to get the standard empty set symbol?

Thanks

GuM
  • 21,558
Dog_69
  • 981
  • 1
    Is\varnothing (amssymb package) what you're looking for? – Franck Pastor Jan 12 '18 at 19:04
  • @FranckPastor No, it is \emptyset from amssymb. Maybe I should add it in the question. – Dog_69 Jan 12 '18 at 19:05
  • \emptyset doesn't come from the amssymb fonts, but from the standard Computer Modern math fonts. Its variant from the amssymb fonts is precisely \varnothing. – Franck Pastor Jan 12 '18 at 19:08
  • I thought that but yout comment confused me. – Dog_69 Jan 12 '18 at 19:09
  • Personally it's your question I find confusing in its current form ;-). So if I understand correctly, you are looking for a way to use the \varnothing symbol without having to load the whole amssymb package? – Franck Pastor Jan 12 '18 at 19:13
  • No no. My question doesn't say anything about \varnothing. The usual \emptysetsymbol. The ''slashed 0''. – Dog_69 Jan 12 '18 at 19:21
  • @FranckPastor Number 4 – Dog_69 Jan 12 '18 at 19:27
  • @Dog_69: The correct mathematical symbol is precisely mathabx \emptyset or amssymb \varnothing. Computer Modern \emptyset is a notation borrowed from Computer Science. See for instance any book of Bourbaki. – Bernard Jan 13 '18 at 00:05
  • @Bernard Really? I can't belive you!!. The \varnothing symbol is horrible!! My god... If I'm honest, I try to use the correct mathematical symbols, but in this case... And you're right. Borbaki (which its original version Hermann-Addison is one of the books with the most beautiful layout of all time for me) uses it. It makes methink... I have a dilemma... – Dog_69 Jan 14 '18 at 19:26
  • De gustibus non est disputandum… Sadly complain poor Scandinavian children who must learn to read this letter ;o) B.t.w. this notation was introduced in the mid thirties by André Weil, one of the founding members of the Bourbaki group. – Bernard Jan 14 '18 at 19:39

3 Answers3

6

For completeness, I provide the original solution, on the assumption that the font needed is not already loaded by TeX. Afterward, I show a streamlined solution, since cmsy (Computer Modern symbol font family) has already been loaded by default.

The Long Way:

Here, after mathabx is loaded, I declare and define the cmsy font family, found on p.431 of the TeXbook. cmsy is the name that the Computer Modern symbol font family is known as, to TeX. It is called a font "family" because the font is provided in different sizes, and \DeclareFontShape tells which glyph set (member of the family) to use depending on the fontsize that is requested.

I create a new symbol font Xcmsy that points to the cmsy font family. I then declare the symbol \cmemptyset to be of categorymathord, and found in slot 59 of the Xcmsy font.

If you uncomment the two fonttable lines of code, you will see the cmsy font printed out in tabular form, and can verify that the empty set glyph is found at slot 59.

\documentclass{article}
\usepackage{mathabx}
% =============================================
%Import symbols from font cmsy without importing the whole package
% =============================================
\DeclareFontFamily{U} {cmsy}{}

\DeclareFontShape{U}{cmsy}{m}{n}{
  <-8> cmsy7
  <8-9> cmsy8
  <9-10> cmsy9
  <10-> cmsy10}{}

\DeclareSymbolFont{Xcmsy} {U} {cmsy}{m}{n}

\DeclareMathSymbol{\cmemptyset}{\mathord}{Xcmsy}{59}
% =============================================
%\usepackage{fonttable}
\begin{document}
\centering

$\emptyset \cmemptyset$ 

%\tiny\fonttable{cmsy8}
\end{document}

enter image description here

The Short Way (for Computer Modern only):

Because Computer Modern is already loaded by TeX as the default font, much of the prior method is redundant and the answer can be streamlined (as noted by GuM):

\documentclass{article}
\usepackage{mathabx}
% =============================================
\DeclareMathSymbol{\cmemptyset}{\mathord}{symbols}{59}
% =============================================
\begin{document}
\centering

$\emptyset \cmemptyset$ 

\end{document}
  • 1
    could you explain the code, please? – Dog_69 Jan 12 '18 at 19:55
  • @Dog_69 I have done so. – Steven B. Segletes Jan 12 '18 at 20:10
  • I'm sorry. I expected an explanation after the code. Please excuse me. I haven't seen your body text. My apologies. – Dog_69 Jan 12 '18 at 20:14
  • @Dog_69 I edited my answer after you asked the initial question. No need to apologize. It was a reasonable request. – Steven B. Segletes Jan 12 '18 at 20:23
  • Oh! I suppose that explains why I didn't find the explanation. Anyway, thanks again. – Dog_69 Jan 12 '18 at 21:15
  • There’s no need to re-declare the font family cmsy under the U encoding, nor to introduce a new symbol font named Xcmsy: just say \DeclareMathSymbol{\cmemptyset}{\mathord}{symbols}{59} and live happy! (Doing so amounts exactly to @FranckPastor’s solution.) – GuM Jan 13 '18 at 00:21
  • @GuM Thanks. I figured CM was already loaded, but I wasn't 100% sure of the exact syntax to access it. – Steven B. Segletes Jan 13 '18 at 01:22
  • 2
    OK, I’ve seen your edit. But now I feel obliged to add that, of course, this simplified solution works only for a package, like mathabx, that does not redefine the symbols symbol font; for packages that do redefine it (e.g., newtxmath), you need the more elaborate solution \DeclareSymbolFont{cmsymbols}{OMS}{cmsy}{m}{n} \SetSymbolFont{cmsymbols}{bold}{OMS}{cmsy}{b}{n} \DeclareMathSymbol{\cmemptyset}{\mathord}{cmsymbols}{59} (say). But again, there’s no need to redeclare the cmsy font family under a different encoding (U, in your case). – GuM Jan 13 '18 at 01:46
4

The answer below is inspired by the way the author of the mathabx package, Anthony Phan, uses to retain the old \emptyset symbol (which he calls \voidset) while loading his mathabx package (see the TeX source of its documentation).

\documentclass{article}
\let\voidset=\emptyset
\usepackage{mathabx}
\let\emptyset=\voidset
\begin{document} 
$\emptyset$   
\end{document}

enter image description here

Franck Pastor
  • 18,756
  • Well, why not also \let\emptyset=\voidset, then? – GuM Jan 13 '18 at 00:52
  • @GuM No particular reason, excepted I was told once to use as few Plain TeX commands as possible in a LaTeX document. It has become an habit since. :-) But indeed, a second \let does no harm in this case as far as I see, so I've just inserted it. – Franck Pastor Jan 13 '18 at 08:28
  • There’s a slight difference in that, with \let\emptyset=\voidset, to token \emptyset remains unexpandable; but this hardly matters in practice. – GuM Jan 13 '18 at 09:03
  • @FranckPastor I thought I replied to yor answer. Anyway. It's a clever idea, very funny, and it is a useful. It is not what I was looking for actually, but I'm sure it will help many people in the future. Thanks – Dog_69 Jan 14 '18 at 19:20
1

\emptyset using package cancel. enter image description here

\documentclass{article}
\usepackage{cancel, amsmath}
\usepackage{amssymb, mathabx} 
\begin{document}
\( \cancel{\bigcirc} \)
\end{document}
Sebastiano
  • 54,118