9

What is a good way to get an O-times between the sizes of \otimes and \bigotimes? I should add that I want it to act as a math operator as in \bigotimes (so that I can use subscripts below it.)

I managed to get it by \DeclareMathOperator*{\Motimes}{\raisebox{-0.25ex}{\scalebox{1.2}{$\bigotimes$}}} using one of the approaches here: A medium dot in math mode

I was wondering if there a better way?

9

With your declaration you get a symbol that is bigger than \bigotimes...

Assuming that you really want a symbol between the sizes of \otimes and \bigotimes you can declare it as

\DeclareMathOperator*{\Motimes}{\text{\raisebox{0.25ex}{\scalebox{0.8}{$\bigotimes$}}}}

The following MWE shows the difference between it and \bigotimes

\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}

\DeclareMathOperator*{\Motimes}{\text{\raisebox{0.25ex}{\scalebox{0.8}{$\bigotimes$}}}}

\begin{document}

\[
\bigotimes_{i=1}^{k}V_i \qquad A \bigotimes B_{A \bigotimes B_{A \bigotimes B}}
\]

\bigskip

\[
\Motimes_{i=1}^{k}V_i \qquad A\Motimes B_{A \Motimes B_{A \Motimes B}}
\]

\end{document} 

Output:

enter image description here

  • You could use the \vcenter{\hbox{...}} primitives to align the rescaled symbol on the math axis; doing so would dispense with the guesswork associated with the \raisebox method. – Mico Jan 18 '14 at 8:58
  • @Mico Do you mean something like \DeclareMathOperator*{\Motimes}{\text{$\vcenter{\hbox{\scalebox{0.8}{$\bigotimes$}}}$}}? To be honest, I prefer the symbol a bit higher. – karlkoeller Jan 18 '14 at 9:20
  • Yes, except that I think the outer \text{$ and $} group isn't strictly necessary, right? About the desirability of placing the symbol a bit higher: That's a matter of taste, I suppose, and we all know what they say about arguing about tastes... – Mico Jan 18 '14 at 9:56
  • @Mico but if you remove the outer \text{$ and $} group the symbol is quite smaller and increasing the scale it looks bad. – karlkoeller Jan 18 '14 at 10:04
  • Did you compute the ration 0.25ex / 0.8, or is it just by chance, because it "looks good" or "right"? – Clément May 5 '16 at 17:53
4

You could do

\newcommand{\sbigotimes}{%
  \mathop{\mathchoice{\textstyle\bigotimes}{\bigotimes}{\bigotimes}{\bigotimes}}%
}

and

\[
\sbigotimes_{i=1}^n A_i\otimes B
\]

would produce

enter image description here

to be compared with the original (with \bigotimes)

enter image description here

I suggest an “abstract” version:

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\makesmalleroperator}[1]{%
  \expandafter\let\csname saved\string#1\endcsname#1% save the old command
  \def#1{\mathop{\small@mathchoice#1}}% redefine it
}
\def\small@mathchoice#1{%
  \mathchoice{\textstyle\@nameuse{saved\string#1}}%
             {\@nameuse{saved\string#1}}%
             {\@nameuse{saved\string#1}}%
             {\@nameuse{saved\string#1}}%
}
\makeatother

% now we declare what operators should be treated like this
\makesmalleroperator\bigotimes

\begin{document}

\[
\bigotimes_{i=1}^n A_i\otimes B
\]

\end{document}

This will give the same result as above with \sbigotimes. What are the advantages?

  1. You can do the same for \bigvee, \bigwedge and all the operators you need with a single line for each of them.

  2. You can use the normal names; if you change your mind or have to submit the document somewhere, you can simply remove the definitions and the calls to \makesmalleroperator

The same size as in display math will be used for inline usage.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.