# difference between \prime and ' in math mode

I believed that \prime is the appropriate code to insert a prime in math mode and assumed that it would be equivalent to type '. I find that \prime inserts an ugly, large prime, whereas the ' produces something ok. Is there an explanation?

\documentclass{article}

\begin{document}

$a'_{i}$ dürfen zu $x'_{i}$ nur

$a\prime_{i}$ dürfen zu $x\prime_{i}$ nur

\end{document}


• $a'_{i}$ is actually $a^{\prime}_{i}$ – moewe Apr 13 '20 at 16:38
• you should almost never use \prime just use ' – David Carlisle Apr 13 '20 at 16:40
• – moewe Apr 13 '20 at 16:41
• I've taken the liberty of inserting a larger screenshot of your code. – Mico Apr 13 '20 at 17:38

You wrote,

I find that \prime inserts an ugly, large prime, whereas the ' produces something ok. Is there an explanation?

To address this question in depth, it's useful to check how ' (in math mode) is defined relative to \prime. Here's an excerpt from the current version (2020-02-02, patch level 5) of the LaTeX2e "kernel" -- lines 5939 to 5954 from latex.ltx, to be exact -- that provides the code that defines ' in LaTeX. (The Plain-TeX definition of ' is similar.)

\def\active@math@prime{^\bgroup\prim@s}
{\catcode\'=\active \global\let'\active@math@prime}
\def\prim@s{%
\prime\futurelet\@let@token\pr@m@s}
\def\pr@m@s{%
\ifx'\@let@token
\expandafter\pr@@@s
\else
\ifx^\@let@token
\expandafter\expandafter\expandafter\pr@@@t
\else
\egroup
\fi
\fi}
\def\pr@@@s#1{\prim@s}
\def\pr@@@t#1#2{#2\egroup}


I won't claim that this code is easy to grasp. Here's the gist of what's going on.

• The instruction

\catcode\'=\active


makes the character ' ("apostrophe" or "prime") active, in the TeX sense of the word, if the character is encountered in math mode.

• The character is let to \active@math@prime, which is defined as ^\bgroup\prim@s. Note the initiation of an exponent term via ^, followed by \bgroup -- as well as the absence, for now, of a corresponding \egroup directive.

• \prim@s, in turn, is defined as \prime\futurelet\@let@token\pr@m@s. Finally, we encounter \prime -- yay! The \prime directive -- recall that it is executed in superscript mode, so the resulting symbol is smaller than the text-style version of \prime -- is followed by

\futurelet\@let@token\pr@m@s


\futurelet\@let@token assigns the next token to \@let@token. So, what does \pr@m@s do?

• The code for \pr@m@s covers 10 lines of code; it is by far the most complicated of the macros in this bunch. It basically tells LaTeX to compare the look-ahead token (via a couple of \ifx statements) to a number of possible alternatives. In fact, the code considers three alternatives.

• If the look-ahead token is not equal to either ' or ^, then \egroup is issued -- meaning that the exponent term group is closed and can be processed by LaTeX -- and we're done. Whew!

• If the next character is equal to ^ (as in, say, g'^2), code needed to handle the exponent term, including an \egroup directive, is executed. (In case you're curious: g'^2 evaluates to g^{\prime2}. If you'd rather have the square term placed a bit further up, you will need to write {g'}^2.)

• Finally, if the next character is equal to ', then (after some more stirring of the pot...) another round of \prime\futurelet\@let@token\pr@m@s is executed, i.e., another \prime directive is executed followed by some more looking ahead.

Remembering that \bgroup and \egroup evaluate to { and }, respectively, we come to the following conclusion: the code assures that u'v gets interpreted as u^{\prime}v, w''x gets interpreted as w^{\prime\prime}x, f''' gets interpreted as f^{\prime\prime\prime}, etc. What's really important is to notice that w''x it NOT interpreted as w^{\prime}^{\prime}x, as that would trigger a dreaded "Double superscript" error.

In short, (a) typing f\prime\prime does not trigger an error message but is most definitely incorrect from a typographic perspective; (b) f^{\prime\prime} is both typographically and syntactically correct but also exceedingly tedious; (c) f'' is both correct and easy. Can you guess which method is recommended? For what it's worth, my impression is that Donald Knuth intended users to input f' and f'' all along.

• One further consideration, regarding the size of the bare \prime. Occasionally, not very often, a prime is used as a subscript. By providing a "text-size" prime shape, it can be used very easily as either a superscript or subscript in the expected size. And yes, I am sure that Knuth intended users to input f' and f'' -- after all, he and his secretary were the first users, entering the text for The Art of Computer Programming, where it would both streamline entry and yield a nicely readable file. – barbara beeton Apr 13 '20 at 22:23
• In ConTeXt (and maybe in the LaTeX Unicode engines) the input f' actually becomes 𝑓′ with U+1D453 MATHEMATICAL ITALIC SMALL F and U+2032 PRIME. – Henri Menke Apr 13 '20 at 23:11
• @HenriMenke - Thanks. To those of us :-) not as familiar with the difference between the "ordinary" math-italic lowercase letter "f" and U+1D453 MATHEMATICAL ITALIC SMALL F, could you say a word (or maybe post a separate answer) on this subject? I'm sure quite a few people (me included!) would find this very interesting. – Mico Apr 14 '20 at 1:16
• @barbarabeeton - Many thanks for offering this historically very valuable first-hand reflection. – Mico Apr 14 '20 at 1:18
• Now I (mostly) understand what is going on. I did not expect that much complication and the answer is overwhelming, but clear enough documented to be understandable! Again, thank you very much! – user855443 Apr 15 '20 at 8:01