***
我的三顆星 ( )代碼有問題嗎?**
跟我的比起來真是太醜了*
。
\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{^{***}}}
但海科·奧伯迪克的修復要好得多。