\otimes with upper and lower quadrants "removed"
I too, like @egreg, am inclined toward a solution that draws the required symbol by hand. With the help of the subroutines provided by the halloweenmath
package (which is entirely concerned with drawing math symbols using pict2e
facilities), we can provide a full answer that features:
a binary operator named
\curvetie
;a corresponding “large” operator named
\bigcurvetie
;support for the
bold
math version.
This answer can also serve as an example of how to augment the halloweenmath
package with the addition of custom symbols.
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
% The "halloweenmath" package supplies some useful suroutines and also loads
% the "amsmath" package:
\usepackage{halloweenmath}
\makeatletter
\newcommand*\@Roly@large@curvetie[1]{%
\begin{@HwM@bigop@picture}\displaystyle \textfont {6}{-3}%
\linethickness{#1\@HwM@thickness@units@for \textfont}%
\moveto(0,0)
\circlearc{0}{0}{3}{135}{225}%
\circlearc{0}{0}{3}{45}{-45}
\closepath
\strokepath
\end{@HwM@bigop@picture}%
}
\newcommand*\@Roly@Large@Curvetie{%
\@HwM@choose@thicknesses \@Roly@large@curvetie
{{}}%
{{1.8}}%
}
\newcommand*\@Roly@small@curvetie[3]{%
\begin{@HwM@bigop@picture}#1#2{4}{-2}%
\linethickness{#3\@HwM@thickness@units@for #2}%
\moveto(0,0)
\circlearc{0}{0}{2}{135}{225}%
\circlearc{0}{0}{2}{45}{-45}
\closepath
\strokepath
\end{@HwM@bigop@picture}%
}
\newcommand*\@Roly@Small@Curvetie[2]{%
\@HwM@choose@thicknesses{\@Roly@small@curvetie #1#2}%
{{}}%
{{1.6}}%
}
\newcommand*\@Roly@binop@curvetie[3]{%
\begin{@HwM@oplus@picture}#1#2{2.8284271}{-1.4142135}%
\linethickness{#3\@HwM@thickness@units@for #2}%
\moveto(0,0)
\circlearc{0}{0}{1.4142135}{135}{225}%
\circlearc{0}{0}{1.4142135}{45}{-45}
\closepath
\strokepath
\end{@HwM@oplus@picture}%
}
\newcommand*\@Roly@Binop@Curvetie[2]{%
\@HwM@choose@thicknesses{\@Roly@binop@curvetie #1#2}%
{{}}%
{{1.5}}%
}
\newcommand*\curvetie{%
\DOTSB
\@HwM@general@binary@operation \@Roly@Binop@Curvetie
}
\newcommand*\bigcurvetie{%
\DOTSB
\@HwM@general@large@operator \@Roly@Large@Curvetie \@Roly@Small@Curvetie
}
\makeatother
\begin{document}
In-line:
\( \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \).
And in display:
\[ \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \]
Now repeat in boldface type.
\begingroup
\bfseries\boldmath
In-line:
\( \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \).
And in display:
\[ \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \]
\endgroup
\end{document}
Here is the output:
Edit: I’d like to add a different version of the same code, with theonly difference that the thickness of the strokes has been adjusted to mimic more closely that of the \
[big
]otimes
symbols.
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
% The "halloweenmath" package supplies some useful suroutines and also loads
% the "amsmath" package:
\usepackage{halloweenmath}
\makeatletter
\newcommand*\@Roly@large@curvetie[1]{%
\begin{@HwM@bigop@picture}\displaystyle \textfont {6}{-3}%
\linethickness{#1\@HwM@thickness@units@for \textfont}%
\moveto(0,0)
\circlearc{0}{0}{3}{135}{225}%
\circlearc{0}{0}{3}{45}{-45}
\closepath
\strokepath
\end{@HwM@bigop@picture}%
}
\newcommand*\@Roly@Large@Curvetie{%
\@HwM@choose@thicknesses \@Roly@large@curvetie
{{2.2}}% governs thickness for "normal" math version
{{3}}% governs thickness for "bold" math version
}
\newcommand*\@Roly@small@curvetie[3]{%
\begin{@HwM@bigop@picture}#1#2{4}{-2}%
\linethickness{#3\@HwM@thickness@units@for #2}%
\moveto(0,0)
\circlearc{0}{0}{2}{135}{225}%
\circlearc{0}{0}{2}{45}{-45}
\closepath
\strokepath
\end{@HwM@bigop@picture}%
}
\newcommand*\@Roly@Small@Curvetie[2]{%
\@HwM@choose@thicknesses{\@Roly@small@curvetie #1#2}%
{{1,8}}% normal
{{2.2}}% bold
}
\newcommand*\@Roly@binop@curvetie[3]{%
\begin{@HwM@oplus@picture}#1#2{2.8284271}{-1.4142135}%
\linethickness{#3\@HwM@thickness@units@for #2}%
\moveto(0,0)
\circlearc{0}{0}{1.4142135}{135}{225}%
\circlearc{0}{0}{1.4142135}{45}{-45}
\closepath
\strokepath
\end{@HwM@oplus@picture}%
}
\newcommand*\@Roly@Binop@Curvetie[2]{%
\@HwM@choose@thicknesses{\@Roly@binop@curvetie #1#2}%
{{.8}}% normal
{{1.3}}% bold
}
\newcommand*\curvetie{%
\DOTSB
\@HwM@general@binary@operation \@Roly@Binop@Curvetie
}
\newcommand*\bigcurvetie{%
\DOTSB
\@HwM@general@large@operator \@Roly@Large@Curvetie \@Roly@Small@Curvetie
}
\makeatother
\begin{document}
In-line:
\( \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \).
And in display:
\[ \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \]
Now repeat in boldface type.
\begingroup
\bfseries\boldmath
In-line:
\( \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \).
And in display:
\[ \bigcurvetie_{i=1}^{n} X_{i} = X_{1}\curvetie\dots\curvetie X_{n} \]
\endgroup
Let us compare the thickness of the strokes:
\( {\bigotimes}{\bigcurvetie} \),
and \( {\otimes}{\curvetie} \).
{\bfseries\boldmath And in bold:
\( {\bigotimes}{\bigcurvetie}\ {\otimes}{\curvetie} \).}
Displayed:
\[ {\bigotimes}{\bigcurvetie} \]
\end{document}
The corresponding output follows:
With pict2e
; perhaps not perfect at large sizes.
\documentclass{article}
\usepackage{pict2e}
\makeatletter
\DeclareRobustCommand{\arcbowtie}{\mathbin{\mathpalette\arc@bow@tie\relax}}
\newcommand{\arc@bow@tie}[2]{%
\vcenter{\hbox{%
\sbox\z@{$\m@th#1\otimes$}%
\sbox\tw@{$\m@th\mkern1mu$}%
\setlength{\unitlength}{\wd\z@}%
\linethickness{.4\wd\tw@}%
\begin{picture}(1,1)
\polyline(0.7878,0.7878)(0.2122,0.2122)
\polyline(0.2122,0.7878)(0.7878,0.2122)
\put(0.5,0.5){\arc[-46,46]{0.4}}
\put(0.5,0.5){\arc[134,226]{0.4}}
\end{picture}%
}}%
}
\makeatother
\begin{document}
$A\arcbowtie B_{\arcbowtie}$
$A\otimes B_{\otimes}$
\end{document}
This might suffice. I use \clipbox
to truncate the top/bottom quadrants. I declare it a math operator* and scale it to the height of an X
in the local math style.
\documentclass{article}
\usepackage{trimclip,amsmath,scalerel}
\DeclareMathOperator*\otimesop{\scalerel*{\clipbox{0pt 1.10pt 0pt 1.04pt}{$\otimes$}}{X}}
\begin{document}
\[
\otimesop_{i=1}^n x_i = 42
\]
\[
\otimesop \textstyle \otimesop \scriptstyle \otimesop \scriptscriptstyle \otimesop
\]
\end{document}
One drawback of the above approach is that it is always scaling a \textstyle
version of \otimes
to the required size. Thus, at the smaller math styles, the line width looks a bit thin. A more computationally intensive alternative is to use the \otimes
from the proper math style (and scale it, as needed). Compare the below result to the above image.
Additionally, instead of scaling the operator to the size of X
, I here scale it to the vertical size of \mathop{X}^a
, to exaggerate the \displaystyle
size.
\documentclass{article}
\usepackage{trimclip,amsmath,scalerel}
\DeclareMathOperator*\otimesop{\scalerel*{\clipbox{%
0pt \dimexpr0.7\LMpt+0.4pt\relax{} 0pt \dimexpr0.64\LMpt+0.4pt\relax}{%
$\SavedStyle\otimes$}}{\mathop{X}^a}}
\begin{document}
\[
\otimesop_{i=1}^n x_i = 42
\]
\[
\textstyle\otimesop_{i}^n x_i = 42
\]
\[
\scriptstyle\otimesop_{i}^n x_i = 42
\]
\[
\scriptscriptstyle\otimesop_{i}^n x_i = 42
\]
\end{document}