![半级上(下)标](https://linux22.com/image/367268/%E5%8D%8A%E7%BA%A7%E4%B8%8A%EF%BC%88%E4%B8%8B%EF%BC%89%E6%A0%87.png)
答案1
如果希望上标的基线位于之前高度的一半,可以使用以下代码:
\documentclass{article}
\newcommand{\halfscript}[2]{\settoheight{\hght}{#1}{#1}\raisebox{.5\hght}{$\scriptstyle{#2}$}}
\newlength{\hght}
\begin{document}
\[
\halfscript{A}{x}\halfscript{a}{x}
\]
\end{document}
这将产生输出
另一方面,如果你想要脚本符号居中对于前一个字符,使用代码
\documentclass{article}
\usepackage{calc}
\newcommand{\halfscript}[2]{\settoheight{\oneheight}{#1}\settoheight{\twoheight}{$\scriptstyle{#2}$}{#1}\raisebox{.5\oneheight-.5\twoheight}{$\scriptstyle{#2}$}}
\newlength{\oneheight}
\newlength{\twoheight}
\begin{document}
\[
\halfscript{A}{x}\halfscript{a}{x}
\]
\end{document}
这将产生输出
请注意,calc
减去高度时需要用到包裹。
要获取左侧的脚本,请使用宏
\newcommand{\prehalfscript}[2]{\settoheight{\oneheight}{#1}\settoheight{\twoheight}%
{$\scriptstyle{#2}$}\raisebox{.5\oneheight-.5\twoheight}{$\scriptstyle{#2}$}{#1}}
然后命令\prehalfscript{B}{x}\prehalfscript{a}{x}
将产生
答案2
有\valign
。享受就好,别问。
\documentclass{article}
\newcommand{\halfscript}[2]{%
\mathord{\hbox{% ensure math mode
\valign{%
\vfil##\vfil\cr
\hbox{$#1$}\cr
\hbox{$\scriptstyle#2$}\cr
}%
\kern\scriptspace
}}%
}
\newcommand{\prehalfscript}[2]{%
\mathord{\hbox{% ensure math mode
\kern\scriptspace
\valign{%
\vfil##\vfil\cr
\hbox{$\scriptstyle#2$}\cr
\hbox{$#1$}\cr
}%
}}%
}
\begin{document}
X $\halfscript{A}{x} \halfscript{a}{x}$ X
X $\prehalfscript{A}{x} \prehalfscript{a}{x}$ X
\end{document}
该\valign
命令是的“转置” \halign
,因此我们对垂直框进行对齐,以最大的框为中心;参考点将位于框的底部,这将是最终的粘合点。
改进的版本将根据原子核的高度而不是高度和深度将“半标”置于中心,这与下标和上标的情况类似。
\documentclass{article}
\makeatletter
\newcommand{\halfscript}[2]{%
\mathord{%
\setbox\z@=\hbox{% ensure math mode
\valign{%
\vfil##\vfil\cr
\hbox{$#1$}%
\xdef\halfscript@dp{\the\prevdepth}%
\kern-\prevdepth
\cr
\hbox{$\scriptstyle#2$}\cr
}%
\kern\scriptspace
}%
\dp\z@=\halfscript@dp\box\z@
}%
}
\newcommand{\prehalfscript}[2]{%
\mathord{%
\setbox\z@=\hbox{% ensure math mode
\kern\scriptspace
\valign{%
\vfil##\vfil\cr
\hbox{$\scriptstyle#2$}\cr
\hbox{$#1$}%
\xdef\halfscript@dp{\the\prevdepth}%
\kern-\prevdepth
\cr
}%
}%
\dp\z@=\halfscript@dp\box\z@
}%
}
\makeatother
\begin{document}
X $\halfscript{A}{x} \halfscript{a}{x}$ X
X $\prehalfscript{A}{x} \prehalfscript{a}{x}$ X
X $\halfscript{p}{x}$ $\prehalfscript{d}{x}$
\end{document}