# Short horizontal and vertical bar of same length in math

I want to mark a variable I with a short vertical or horizontal bar in order to relate it to something being vertical or horizontal in real life. For the vertical line, $I^\shortmid$ (from amssymb) is looking very nicely, but I can't produce a horizontal line of equal length. I tried $I^{\rotatebox[origin=c]{90}{$\shortmid$}}$, however this makes the bar longer for reasons I don't understand:

Taking a different symbol like I^- and I^\text{-} produces ugly results as well. Can someone please explain what is happening inside the \rotatebox and suggest a fix? I will also appreciate any alternative markup.

You need to take care of the current math style:

\documentclass{article}
\usepackage{amsmath,amssymb,graphicx}

\newcommand{\vrt}{\shortmid}
\makeatletter
\newcommand{\hrz}{{\mathpalette\hrz@\relax}}
\newcommand{\hrz@}[2]{%
\mspace{-1mu}%
\rotatebox[origin=c]{90}{$\m@th#1\,\vrt$}%
\mspace{-1mu}%
}
\makeatother

\begin{document}

$I^\hrz I^\vrt$

\end{document}


The reason why the rotated \shortmid seems larger is because the default math size setting within \rotatebox would be \textstyle, while it should be \scripstyle if you're using it in a superscript.

You could try with the following definitions of \vertical and \horizontal:

\documentclass{article}

\usepackage{amssymb,graphicx}

\newcommand{\horizontal}[1]{%
#1^{\rotatebox[origin=c]{90}{$\scriptstyle\shortmid$}}
}
\newcommand{\vertical}[1]{%
#1^{\shortmid}
}

\begin{document}

$\vertical{I}\ \horizontal{I}$

\end{document}

• Thank you for your explanation, now I understand what's going on. However, because @egreg proposed a more general solution and also took care of positioning, I accepted his answer. – Eldrad Nov 5 '18 at 18:37
• @Eldrad: Yes, that's great. I just answered the question. He went the extra mile. – Werner Nov 5 '18 at 19:04

Preserves the proper math style.

\documentclass{article}
\usepackage{amssymb,graphicx,scalerel}
\newcommand{\vrt}{\shortmid}
\newcommand{\hrz}{{\ThisStyle{\rotatebox[origin=c]{90}{$\SavedStyle\vrt$}}}}
\begin{document}
$I^\hrz I^\vrt$

$\scriptstyle I^\hrz I^\vrt$
\end{document}