假设我们有
\newcommand{\inv}{-1}
我们希望能够用 来$A^\inv$
代替,$A^{\inv}$
但这样做不行——只有减号是上标。
无意中我发现了一个可能的解决方案,即将宏定义为
\newcommand{\inv}{\kern0pt\relax -1}
但由于我不知道为什么这有效或者这是否是一个好的解决方案,所以我决定无论如何都要问一下。
\documentclass{article}
\newcommand{\inv}{\kern0pt\relax -1}
\begin{document}
$A^\inv$ $A^{-1}$.
\end{document}
答案1
在定义中添加一对括号\inv
就可以了。
\newcommand{\inv}{{-1}}
现在,当您执行 时A^\inv
,它将扩展为A^{-1}
而不是A^-1
。
答案2
我认为,在这种情况下,最好让命令“主动”控制输出。所以我会使用\inv{A}
,读作的逆A
.这样你就有满的控制输出。
\newcommand*\inv[1]{#1^{-1}}
$\inv{A}$
A^\inv
和之间的区别\inv{A}
在于,在第一种情况下,您必须进行调整\inv
才能正确使用^
,而在第二种情况下,您需要\inv
全力以赴。
只有在有利于代码的可读性(并且不损害维护性)的情况下,我才会考虑“被动”方法。考虑一下这个荒谬的例子
a + b % preferred
\add{a}{b} % easily to manage, but far less readble
在这种情况下,\inv{A}
我认为不会损害可读性/易理解性,所以我会选择这样做。