I've recently started doing my homework in LaTeX, so I'm still very new to this world. One of the things I don't very much like doing is typing out ^{-1}
everytime I want the inverse of something, so I've taken to replacing this with a pre-defined command \newcommand{\inv}{^{-1}}
. So far nothing seems to have broken and everything's displaying fine, but I was curious if this is somehow bad practice in LaTeX. Perhaps this results in some miniscule changes I am simply not aware of?
1 Answer
You run into a problem the moment you want to take e.g. the inverse of a'
, as a'\inv
will yield a double superscript error. This issue annoyed me for many years, and eventually, I created the package SemanTeX to solve this and many other problems. It allows you to type all your math semantically, using keyval syntax, and issues like double superscripts never happen. Here is a code example:
\documentclass{article}
\usepackage{semantex}
\NewVariableClass\MyVar[
output=\MyVar,
define keys={
{inv}{ upper=-1 },
},
]
\NewObject\MyVar\va{a} % this means "variable a"
\begin{document}
$ \va[inv] $, $ \va[prime,inv] $, $ \va[prime,spar,inv] $
\end{document}
Following a request from the comments (not to this answer, but to the original question), I provide a macro \inv
taking two optional arguments: an optional *
, which adds a prime, and an optional argument, which allows you to raise to a negative power other than -1
:
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand\inv{ s O{1} }
{%
\IfBooleanTF{#1}%
{%
^{\prime-#2}%
}%
{%
^{-#2}%
}%
}
\begin{document}
$ a\inv $, $ a\inv[2] $, $ a\inv* $, $ a\inv*[2] $
\end{document}
You can in principle also use a '
instead of a *
by replacing { s O{1} }
by { t{'} O{1} }
. I did not use this approach, as I don’t really find a\inv'
to be an intuitive syntax for a'⁻¹ (the inversion and prime are in the opposite order of how they are printed). But that is entirely a matter of personal taste.
-
1The double superscript error is kind of a dealbreaker, but I have to say that your method looks unnecessarily complicated to me (it could be simply because I'm new to LaTeX and this is actually considered normal). Commented Nov 10, 2020 at 13:26
-
@V.Ch. You have a valid point. My keyval-based approach makes the most sense when writing papers with complicated constructions like
\mathcal{C}_{/X}^{\mathrm{op}}
or\mathcal{D}^{b,\ge0}(X)
. Then I find it blessing to be able to instead write something like\catC[over=\vX,op]
and\der[bounded,positive degree]{\vX}
. But that is entirely a matter of taste, of course.;-)
– GausslerCommented Nov 10, 2020 at 13:32 -
Incidentally, is there a difference between
a'
anda\prime
? I've been using the former this whole time, but I'm noticing people using the latter in this thread. Commented Nov 10, 2020 at 14:21 -
1In fact,
a'
is equivalent toa^{\prime}
. Knuth made it this way precisely so that you can typea^{\prime 2}
to get a'². You should never writea\prime
, however, as this will put a giant prime to the right of youra
.– GausslerCommented Nov 10, 2020 at 14:23 -
1@V.Ch. The Declare variant overrides any previous definitions. I guess I should have used the New variant. Updating the answer with this.– GausslerCommented Nov 11, 2020 at 6:24
^{-1}
is directly readable by others and yourself in the future. It is not worth having a new command to save just a few keystrokes(in my opinion).\inv
could collide with other things that comes from packages or what you do yourself elsewhere or in the future.\newcommand{\inv}[1][1]{^{-#1}}
, so you can typea\inv
but alsoa\inv[2]
fora^{-2}
. Anyway, as you see, this is mostly a question of opinion.\inv
ofa'
as in my answer, you could use thexparse
package to allow this. For instance, you could add an optional star so thata\inv*
producesa^{\prime -1}
.;-)