Статистическая значимость звезд

Статистическая значимость звезд

Что не так с моим кодом для трех звезд ( ***)? Он такой уродливый по сравнению с моим **и *.

\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{^{***}}}

Но решение Хайко Обердика гораздо лучше.

Связанный контент