假设我想写入N^{eT}
,但有N^e
一个预定义命令\Ne
。因此,我想将字符附加T
到 的上标\Ne
。这可能吗?
(请注意,我不想写{\Ne}^T
,因为这会导致 T 比 e 高一级。这个问题在让 LaTeX 实现双上标顺便一提)
答案1
或者空的可选参数怎么样?
\newcommand*\Ne[1][]{N^{e#1}}
你可以使用
$\Ne$ or $\Ne[T]$
答案2
这里有一个“聪明的破解”,灵感来自于(读作:厚颜无耻地抄袭自)数学素数的定义:
\documentclass{article}
\makeatletter
\def\Ne{N^\bgroup\e@s}
\def\e@s{%
e\futurelet\@let@token\e@@s}
\def\e@@s{%
\ifx^\@let@token
\expandafter\expandafter\expandafter\e@@@s
\else
\egroup
\fi}
\def\e@@@s#1#2{#2\egroup}
\makeatother
\begin{document}
\[
\Ne^T \Ne^T_5
\]
\end{document}
你可以做\Ne^{}_{}
但不要\Ne_{}^{}
,否则定位正是N^{}_{}
答案3
我将按\Ne
以下方式定义:
\newcommand{\Ne}{\ensuremath{N^e\vphantom{N}}}
这确保任何后续上标都从与常规上标相同的高度开始N
,但同时也欺骗 TeX 认为它是不是加倍上标:
\documentclass{article}
\newcommand{\Ne}{\ensuremath{N^e\vphantom{N}}}
\begin{document}
\Ne\ $\Ne^T$\ $N^{eT}$
\end{document}
请注意,这对于下标不起作用,因为位置会偏离。要做到这一点需要付出更多努力。