When I write $$\sum_{i=1}^{n} x_{i}$$
I obtain indices which are below and above the symbol. I want to write the existential quantifier with this same formatting, but when I try to do so, it appears as $$\exists_{i=1}^{n} x_{i}$$
with the indices written to the right of the symbol on the bottom and top, respectively. Is there any way to change this so that I have a big $\exists$
symbol where the $\Sigma$
is?
2 Answers
Here is a solution which is similar in spirit to Mico's earlier answer, condensed into a few lines of code. This requires amsmath.sty
and scalefnt.sty
. (Thanks to egreg
for remarking on multiple improvements to the original answer; I've condensed it further based on his remarks.)
\newcommand\ScaleExists[1]{\vcenter{\hbox{\scalefont{#1}$\exists$}}}
\DeclareMathOperator*\bigexists{%
\vphantom\sum
\mathchoice{\ScaleExists{2}}{\ScaleExists{1.4}}{\ScaleExists{1}}{\ScaleExists{0.75}}}
The choices of font size were achieved by experimentation, and should be adequate for normalsized Computer Modern at 10pt to 12pt. Minor tweaking may be necessary for other typefaces. Because other font sizes (such as \Large
and \footnotesize
) are achieved by scaling up the size of normal characters, this should also work in other font sizes up to the limits of \scalefont
to change the character size (up to about \LARGE
at 11pt).
The parameters were chosen to achieve as similar an appearance as possible to the size and alignment of \sum
in each context (displaystyle, textstyle, scriptstyle, and scriptscritstyle), with the same default behaviour of \limits
and \nolimits
in each context. In particular, the \vphantom\sum
at the beginning of \bigexists
is used to achieve precisely the same vertical spacing of the limits from the \exists
symbol, as the limits would otherwise be closer to the symbol than they should be. Here is how it looks at 10pt:
This same code should be similarly generalized to any symbol of a similar height and depth (e.g. \forall
).
It should be easy to tweak the results to obtain better tuning for other fonts or point sizes; additional refinements (or defining a custom character with \METAFONT
) may be necessary to obtain a more robust solution.
-
Instead of computing the amount of vertical shift, you could use
\vcenter{\hbox{\scalefont{x}$\exists$}}
; also\mathop{\mathchoice{...}{...}{...}{...}}
seems more economic. Finally, use just\newcommand
instead of\DeclareMathOperator*
: you're declaring a\mathop
in the macro, aren't you?– egregFeb 4, 2013 at 11:19 -
@egreg: I think I'm starting to get the idea of when I should expect
\vcenter
tobe the secret behind vertical spacing of pieces of (La)TeX -- absent actually looking at the definitions, of course. Good point about the redundancy of\mathop
, I think it persisted due to two different approaches I was taking to prototyping the macro. Feb 4, 2013 at 11:56 -
1If you also add
\vphantom{\sum}
just before\mathchoice
you get similar placements of the limits as for\sum
– egregFeb 4, 2013 at 12:23
Whereas the symbols for \sum
, \prod
, and \int
(and a few more select symbols) are designed to scale automatically depending on whether they're used in "textstyle" or "displaystyle" math mode, that's not the case for symbols such as \exists
.
I can think of two workarounds. The first is to load the relsize
package and use its \mathlarger
command to enlarge the size of the \exists
symbol. I don't know just how large you intend the \exists
symbol to be; in the following example, I use a four-step enlargement of the symbol's size. Note also the use of the \lower
directive (a TeX
"primitive" command) to shift the position of the newly created symbol down by 0.75ex
.
\documentclass{article}
\usepackage{relsize,amsfonts}
\newcommand\bigexists{%
\mathop{\lower0.75ex\hbox{\ensuremath{%
\mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}%
\limits}
\begin{document}
$\bigexists_{i\in\mathcal{I}} x_i$
\end{document}
A second workaround involves loading the graphicx
package and using its \scalebox
command. In the following MWE, a scaling factor of 1.7 is chosen to make the resulting large symbol roughly comparable to what's produced by the four-fold use of the \mathlarger
command.
\documentclass{article}
\usepackage{amsfonts,graphicx}
\newcommand{\bigex}{%
\mathop{\lower0.75ex\hbox{%
\scalebox{1.7}{\ensuremath{\exists}}}}\limits}
\begin{document}\pagestyle{empty}
$\bigex_{i\in\mathcal{I}} x_i$
\end{document}
Addendum - By default, the "limits" of the \bigexists
and \bigex
symbols will be set below and above the symbol. If you wanted to side-set the limits, you could type
\bigexists\nolimits
\bigex\nolimits
whenever necesssary. The \nolimits
directive will override the \limits
instruction contained in the definition of \bigexists
and \bigex
.
The result probably isn't entirely satisfactory from a typographic point of view, because the stroke widths of the newly created \bigexists
and \bigex
symbols appear to be quite thick and heavy (to me at least...). A full solution would entail creating a new symbol entirely from scratch.
\mathop{\exists}\limits_{i=1}^{n} x_{i}
. Also see Why is \[ … \] preferable to $$?.