我的三星代码( )有什么问题?与我的和***
相比,它太丑了。**
*
\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 的修复要好得多。