588

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?

14
  • 19
    See this column in TUGboat for information about not using a superscript "th" Commented Mar 8, 2012 at 22:41
  • 11
    @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. Commented Apr 14, 2014 at 17:20
  • 74
    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. Commented Dec 22, 2014 at 14:51
  • 13
    @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. Commented Mar 6, 2015 at 11:01
  • 30
    @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! Commented Apr 2, 2015 at 13:52

7 Answers 7

856
+200

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

9
  • 31
    @jamaicanworm: You should use $n\textsuperscript{th}$. Commented Mar 9, 2012 at 0:50
  • 29
    $n^\textsuperscript{th}$ is a double superscript. Commented Mar 9, 2012 at 0:51
  • 3
    Right! Silly mistake... :) Commented Mar 9, 2012 at 0:52
  • 10
    @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? Commented Apr 30, 2014 at 8:44
  • 9
    Just as a side note: there's also \textsubscript{text}. Commented Jan 20, 2019 at 16:11
71

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. Commented Oct 26, 2013 at 6:53
  • 1
    @Marienplatz Oops. No problem. Thanks for the consideration. Commented 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. Commented Dec 24, 2019 at 8:26
28

The old-school solution:

29\raise0.5ex\hbox{th} 

(TeXbook, Chapter 11)

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

In ConTeXt, you can use

\high{th} 

to get the superscripts in text mode.

12

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}. Commented 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. Commented 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}. Commented Dec 12, 2017 at 0:56
  • Thanks, much obliged. I would remove those extra brackets in my comment but it is now locked. Commented Dec 12, 2017 at 1:04
  • 1
    You could change your answer, because \footnotesize and \scriptsize are also switches and should be used the same way as shown for \smaller. Commented 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.

2
  • 4
    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. Commented Jan 2, 2019 at 9:12
  • 2
    Also, \mathrm ignores spaces between characters. $^{\mathrm{some text}}$ produces the same output as $^{\mathrm{sometext}}$. Commented Aug 22, 2023 at 16:19

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.