\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:

Output of the code


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:

Output with thicker strokes


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}

enter image description here


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}

enter image description here

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}

enter image description here

Tags:

Symbols