538

What is the easiest way to superscript text outside of math mode?

For example, let's say I want to write the $n^{th}$ element, but without the math mode's automatic italicization of the th. And what if I still want the n to be in math mode, but the th outside?

13
  • 18
    See this column in TUGboat for information about not using a superscript "th"
    – egreg
    Mar 8, 2012 at 22:41
  • 9
    @Bernhard My summary is: it is an abbreviation style unique to English, people stopped using it because of the spread of typewriters where it looked bad and was cumbersome to produce and then Microsoft decided to bring it back. Thus we shouldn't use it. It seemed like a non-sequitur to me.
    – Eponymous
    Apr 14, 2014 at 17:20
  • 64
    this is so typical of this community, you ask for vertical lines in tables or superscripts and people step up to tell you DONT because style. the writer of the TUGboat article is wrong in claiming superscript ordinal suffixes are solely a 'Victorian fetish' peculiar to English; his text, confessedly a 'rant', is riddled with loaded words like 'obscenity' and 'ilk'. in fact, superscript used to be common in many languages. The rant gives not a single reason, it's just a rant.
    – flow
    Dec 22, 2014 at 14:51
  • 12
    @flow: I fully agree, in particular because the authors' claims about multi-letter suffixes and endings derived from the alphabetic form being unique to English are rather baseless. Mar 6, 2015 at 11:01
  • 26
    @flow I agree too. What I read in the article is: we used superscript form, until we started using clunky devices that couldn't handle it properly. My opinion: now that we have devices that can render superscript beautifully, let's use them again!
    – dr. Sybren
    Apr 2, 2015 at 13:52

7 Answers 7

782
+200

You can use \textsuperscript{th}. It sets its contents in text mode and can be used in math or text mode.

9
  • 29
    @jamaicanworm: You should use $n\textsuperscript{th}$.
    – Werner
    Mar 9, 2012 at 0:50
  • 27
    $n^\textsuperscript{th}$ is a double superscript.
    – Philipp
    Mar 9, 2012 at 0:51
  • 3
    Right! Silly mistake... :) Mar 9, 2012 at 0:52
  • 9
    @Werner: What is the difference between $n$\textsuperscript{th} and $n\textsuperscript{th}$? Is it the spacing at the end of the inline math environment or why, if else, do you prefer the second one?
    – strpeter
    Apr 30, 2014 at 8:44
  • 7
    Just as a side note: there's also \textsubscript{text}.
    – qwerty_so
    Jan 20, 2019 at 16:11
63

For 99% of applications, Werner's answer is good enough. But since Marienplatz has offered a bounty, there presumably is interest in other ways to do this. So here, I show it done with a stack over a null entry. My preamble definition (output on the second line) appears to give the exact same result as \textsuperscript (output on the first line).

But then, I show how both the size of the script as well as the height of it can be simply changed with my stacking approach, shown in \footnotesize (and lowered) in the 3rd line of output, and in \tiny (and raised) in the last line.

While I stick just to the standard text font sizes, it would be trivial to instead use a \scalebox to get exactly the size of script text desired.

If there is a desire to place the script, not at a fixed elevation, but relative to the height of the character being scripted, that is easy too (just ask).

\documentclass{article}
\usepackage{stackengine}[2013-10-15]
\newcommand\textss[1]{\stackengine{.9ex}{}{\scriptsize#1}{O}{l}{F}{F}{L}}
\begin{document}
\noindent
a\textsuperscript{th}A\textsuperscript{th}\\
a\textss{th}A\textss{th}\\
\renewcommand\textss[1]{\stackengine{.7ex}{}{\footnotesize#1}{O}{l}{F}{F}{L}}
a\textss{th}A\textss{th}\\
\renewcommand\textss[1]{\stackengine{1ex}{}{\tiny#1}{O}{l}{F}{F}{L}}
a\textss{th}A\textss{th}\\
\end{document}

enter image description here

3
  • 3
    I am very very sorry for disappointing you. The bounty target has been set in advance. It is for Werner's answer. :-) Anyway, +1 for your solution. Oct 26, 2013 at 6:53
  • 1
    @Marienplatz Oops. No problem. Thanks for the consideration. Oct 26, 2013 at 12:32
  • Pretty sure it would be even easier to define \lets for the margin and the font size and then change those before calling the command.
    – Egor Hans
    Dec 24, 2019 at 8:26
20

The old-school solution:

29\raise0.5ex\hbox{th}

(TeXbook, Chapter 11)

2
  • 1
    Thanks! And if you don't want the superscript to affect the inter-line spacing: \smash{29\raise0.5ex\hbox{th}} May 31, 2019 at 12:47
  • This solution is great and even works inside matplotlib figures. Thanks!
    – quoniam
    May 13, 2022 at 23:09
14

In ConTeXt, you can use

\high{th}

to get the superscripts in text mode.

10

I use $n^{\text{th}}$. It seems to work okay for me.

0
3

After experimenting with variations of \textsuperscript{} and the $n^{}$ math mode superscript with \footnotesize{} and \scriptsize{} (I needed smaller superscript), I found the \uplett{} macro from the phonetic package, thanks to Scott Pakin's The Comprehensive LaTeX Symbol List, (last updated January 2017). It uses a smaller font than \textsuperscript{}, and achieved a better top-right alignment than \footnotesize{$^{}$}, without the automatic italicization.

5
  • 1
    The question is not about how to change the fonts to suit your needs. For example, you could also \usepackage{relsize} ... a\textsuperscript{\smaller abc} which produces similar results to \usepackage{phonetic} ... a\uplett{abc}.
    – Werner
    Dec 11, 2017 at 23:01
  • Thanks, I didn't know relsize! My initial question was halfway between jamaicanworm's and his comment on double superscript $n^\textsuperscript{th}$. In my case, as I was used to the italicized math mode, changing math mode for text superscript (assuming it's best practice for true text) made the text look heavier than I needed. Is \uplett{abc} more computationally intensive than \textsuperscript{\smaller{abc}}}? Is \mathrm{abc}a simpler fix since it does not involve an additional package? (unless it does). Thanks for your time. Dec 12, 2017 at 0:45
  • 1
    \mathrm doesn't require an additional package, but it's probably more intuitive to use \text (from amsmath) if you want to print text. I don't think there's much to consider in terms of computational complexity. One should rather consider the contextual syntax that's used and whether it makes sense while providing consistency across your document. By the way \smaller is a switch and doesn't take an argument; so it's {\smaller abc} and not \smaller{abc}.
    – Werner
    Dec 12, 2017 at 0:56
  • Thanks, much obliged. I would remove those extra brackets in my comment but it is now locked. Dec 12, 2017 at 1:04
  • You could change your answer, because \footnotesize and \scriptsize are also switches and should be used the same way as shown for \smaller.
    – TeXnician
    Jan 2, 2019 at 9:15
2

I use $^{\mathrm{th}}$ - the \mathrm command removes the math-mode formatting and leaves you with a superscript in the format of your text.

1
  • That does not work if the surrounding text is in italics (for instance). Mathrm will always produce upright text. The better solution is to use \text from amsmath which is shown in Natalya's answer.
    – TeXnician
    Jan 2, 2019 at 9:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .