Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to place text over arrows. The obvious choice is to use the amsmath command \xrightarrow{#1} However, sometimes the text above may be a single digit:

%Example 1
\xrightarrow{1}

other times the text is slightly longer:

%Example 2
\xrightarrow{1000}

The problem I have is that the length of the arrow is scaled to the length of the text. So the arrow in example 1 is much shorter than the arrow in example 2.

Is there a way of making the arrows the same length? Should I use a different command altogether?

share|improve this question

1 Answer 1

up vote 13 down vote accepted

In such cases, the command \makebox comes handy. It puts the argument text into a box of customizable width. Even more useful in math mode is \mathmakebox provided by the mathtools package, because it's working better in math mode and respects the current math style.

So, we could start with \xrightarrow{\mathmakebox[3em]{1}}. But we can do better - let's write a macro for that, which produces an arrow of the same width like a text we specify. Here's such a complete example:

\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\newlength{\arrow}
\settowidth{\arrow}{\scriptsize$1000$}
\newcommand*{\myrightarrow}[1]{\xrightarrow{\mathmakebox[\arrow]{#1}}}
\begin{document}
$\myrightarrow{1}$

$\myrightarrow{1000}$
\end{document}

alt text

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.