统计意义星

统计意义星

我的三星代码( )有什么问题?与我的和***相比,它太丑了。***

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

但 Heiko Oberdiek 的修复要好得多。

相关内容