5

I've defined the following new commands:

\newcommand{\atoi}{\mathrm{\rotatebox[origin=c]{180}{$\iotaup$}}}
\newcommand{\scriptatoi}{{\scriptsize{\mathrm{\rotatebox[origin=c]{180}{$\iotaup$}}}}}

to use in this formula (and other formulas in which $\atoi$ occurs):

$\psi^{\scriptatoi x\phi}_{z}  \equiv \exists y(\phi^y_x \:\&\: \forall u(\phi^u_x \rightarrow u\!=\!y) \:\&\: \psi^y_z)$

When I typeset the LaTeX source file using pdflatex (from TeXLive 2010), I get the following complaint:

LaTeX Font Warning: Command \scriptsize invalid in math mode on input line 352.

If, however, I write the following line instead:

$\psi^{\atoi x\phi}_{z}  \equiv \exists y(\phi^y_x \:\&\: \forall u(\phi^u_x \rightarrow u\!=\!y) \:\&\: \psi^y_z)$

the atoi character appears full size, not superscript size.

Writing

$\psi^{\scriptsize\atoi x\phi}_{z}  \equiv \exists y(\phi^y_x \:\&\: \forall u(\phi^u_x \rightarrow u\!=\!y) \:\&\: \psi^y_z)$

again yields the desired typeset result, and again yields the LaTeX Font Warning.

How can I do what I want, that is, get my new symbol in an appropriate superscript size when using it in a superscript, while respecting the font restrictions of math mode?

3

3 Answers 3

4

this construction is simple enough that you can forget about redefining it for multiple sizes. instead, use the \text facility of amsmath:

\renewcommand{\atoi}{\text{\rotatebox[origin=c]{180}{$\iotaup$}}}

this can be used both in the "main line" and in super/subscripts of any level, and it should produce the desired result.

(the definition of \text is based on \mathchoice; take a look at amstext.sty -- it isn't very long.)

10

You can use the command \mathchoice that chooses the correct math size:

\newcommand\atoistyle[1]{\mbox{\rotatebox[origin=c]{180}{$#1\iotaup$}}}
\newcommand\atoi{\mathchoice
  {\atoistyle\displaystyle}
  {\atoistyle\textstyle}
  {\atoistyle\scriptstyle}
  {\atoistyle\scriptscriptstyle}
}

As egreg points out in the chat, this is the job of the command \mathpalette (see details here), so the following is an exact equivalent of the preceeding:

\newcommand\atoistyle[2]{\mbox{\rotatebox[origin=c]{180}{$#1\iotaup$}}}
\newcommand\atoi{\mathpalette\atoistyle\relax}
2

use it this way:

\newcommand\atoi{\rotatebox[origin=c]{180}{$\iotaup$}}
\newcommand\scriptatoi{\rotatebox[origin=c]{180}{$\scriptstyle\iotaup$}}

in math mode the font style is scriptstyle

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .