Was ist falsch an meinem Code für drei Sterne ( ***
)? Er ist so hässlich im Vergleich zu meinem **
und *
.
\documentclass{article}
\newcommand{\oneS}{\ensuremath{{}^{\textstyle *}}}
\newcommand{\twoS}{\ensuremath{{}^{\textstyle **}}}
\newcommand{\threeS}{\ensuremath{{}^{\textstyle ***}}}
\begin{document}
0.11\oneS \newline
0.11\twoS \newline
0.11\threeS
\end{document}
Antwort1
Der Stern wird als binärer Operator behandelt. In den ersten beiden Fällen gibt es nicht genug mathematische Atome für einen binären Operator, aber im dritten Fall wird der erste Stern mit dem dritten Stern „multipliziert“ und der zweite Stern mit zusätzlichen Leerzeichen als binärer Operator gesetzt. Sie können dieses Verhalten beseitigen, indem Sie den Stern in Klammern setzen. Klammern im Mathematikmodus erzeugen eine Unterformel, die als gewöhnliches mathematisches Atom behandelt wird:
{*}{*}{*} or *{*}*
Auch \textstyle
verbesserungswürdig. Wahrscheinlich sollte vermieden werden, dass der Stern in \scriptstyle hochgestellt wird, während die Zahl normal groß ist. \mathchoice
hilft hier. Es nimmt vier Argumente für die vier Stile und TeX verwendet das Argument für den Stil, der schließlich aktiv ist.
\documentclass{article}
\newcommand*{\SuperScriptSameStyle}[1]{%
\ensuremath{%
\mathchoice
{{}^{\displaystyle #1}}%
{{}^{\textstyle #1}}%
{{}^{\scriptstyle #1}}%
{{}^{\scriptscriptstyle #1}}%
}%
}
\newcommand*{\oneS}{\SuperScriptSameStyle{*}}
\newcommand*{\twoS}{\SuperScriptSameStyle{**}}
\newcommand*{\threeS}{\SuperScriptSameStyle{*{*}*}}
\begin{document}
0.11\oneS
0.11\twoS
0.11\threeS
$\frac{0.11\oneS}{0.11\twoS_{0.11\threeS}}$
\end{document}
Zusatz
Mit LaTeX \mathpalette
kann die Definition etwas vereinfacht werden:
\newcommand*{\SuperScriptSameStyle}[1]{%
\ensuremath{%
\mathpalette\SuperScriptSameStyleAux{#1}%
}%
}
\newcommand*{\SuperScriptSameStyleAux}[2]{%
% #1: math style
% #2: superscript
{}^{#1#2}%
}
Antwort2
Hier ist eine Lösung, aber ich weiß nicht warum??
\documentclass{article}
\newcommand{\oneS}{\ensuremath{{}^{\textstyle *}}}
\newcommand{\twoS}{\ensuremath{{}^{\textstyle **}}}
\newcommand{\threeS}{\ensuremath{{}^{\textstyle **}\oneS}}
\begin{document}
0.11\oneS \par
0.11\twoS \par
0.11\threeS
\end{document}
Antwort3
Eine weitere Lösung:
\usepackage{mathabx}
\newcommand{\threeS}{\ensuremath{{}^{\textstyle
\asterisk\asterisk\asterisk}}}
Oder einfach
\newcommand{\threeS}{\ensuremath{^{***}}}
Aber die Lösung von Heiko Oberdiek ist viel besser.