Что не так с моим кодом для трех звезд ( ***
)? Он такой уродливый по сравнению с моим **
и *
.
\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}
решение1
Звездочка рассматривается как бинарный оператор. В первых двух случаях для бинарного оператора не хватает математических атомов, но в третьем случае первая звездочка «умножается» на третью звездочку, а вторая звездочка задается как бинарный оператор с дополнительными пробелами. Вы можете избавиться от этого поведения, поместив звездочку в фигурные скобки. Фигурные скобки в математическом режиме создают подформулу, которая рассматривается как обычный математический атом:
{*}{*}{*} or *{*}*
Также \textstyle
можно улучшить. Вероятно, следует избегать установки звезды в \scriptstyle как надстрочного индекса, тогда как число имеет нормальный размер. \mathchoice
здесь помогает. Он принимает четыре аргумента для четырех стилей, и TeX использует аргумент для стиля, который в конечном итоге активен.
\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}
Добавление
Используя LaTeX, \mathpalette
определение можно немного упростить:
\newcommand*{\SuperScriptSameStyle}[1]{%
\ensuremath{%
\mathpalette\SuperScriptSameStyleAux{#1}%
}%
}
\newcommand*{\SuperScriptSameStyleAux}[2]{%
% #1: math style
% #2: superscript
{}^{#1#2}%
}
решение2
Вот исправление, но я не знаю, зачем?
\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}
решение3
Еще одно исправление:
\usepackage{mathabx}
\newcommand{\threeS}{\ensuremath{{}^{\textstyle
\asterisk\asterisk\asterisk}}}
Или просто
\newcommand{\threeS}{\ensuremath{^{***}}}
Но решение Хайко Обердика гораздо лучше.