¿Qué hay de malo en mi código de tres estrellas ( ***
)? Es tan feo comparado con mi **
y *
.
\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}
Respuesta1
La estrella se trata como un operador binario. En los dos primeros casos, no hay suficientes átomos matemáticos para un operador binario, pero en el tercer caso, la primera estrella se "multiplica" con la tercera estrella y la segunda estrella se establece como operador binario con espacios adicionales. Puedes deshacerte de este comportamiento poniendo la estrella entre llaves. Las llaves en modo matemático crean una subfórmula que se trata como un átomo matemático ordinario:
{*}{*}{*} or *{*}*
También \textstyle
se puede mejorar. Probablemente debería evitar que la estrella esté configurada en \scriptstyle como superíndice mientras que el número tiene un tamaño normal. \mathchoice
ayuda aquí. Se necesitan cuatro argumentos para los cuatro estilos y TeX usa el argumento para el estilo que finalmente está activo.
\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}
Suma
Usando LaTeX \mathpalette
la definición se puede simplificar un poco:
\newcommand*{\SuperScriptSameStyle}[1]{%
\ensuremath{%
\mathpalette\SuperScriptSameStyleAux{#1}%
}%
}
\newcommand*{\SuperScriptSameStyleAux}[2]{%
% #1: math style
% #2: superscript
{}^{#1#2}%
}
Respuesta2
Aquí hay una solución, pero no sé por qué.
\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}
Respuesta3
Otra solución:
\usepackage{mathabx}
\newcommand{\threeS}{\ensuremath{{}^{\textstyle
\asterisk\asterisk\asterisk}}}
O simplemente
\newcommand{\threeS}{\ensuremath{^{***}}}
Pero la versión de Heiko Oberdiek es mucho mejor.