[texhax] the Underscore

Heiko Oberdiek heiko.oberdiek at googlemail.com
Tue Jun 28 08:09:30 CEST 2011


On Tue, Jun 28, 2011 at 06:40:42AM +0530, E. Krishnan wrote:

> Krishnan
> 
> On Fri, 24 Jun 2011, Heiko Oberdiek wrote:
> 
> >On Fri, Jun 24, 2011 at 09:43:33AM +0100, Paul Stanley wrote:
> >
> >>Anyone know the macro for the underscore?
> >>I tried \_ but whatever that appears in the PDF is invisible to the
> >>screen reader.
> 
> In text mode, \textunderscore produces an underscore.

\_ is defined in latex.ltx as:

  \DeclareRobustCommand{\_}{%
    \ifmmode\nfss at text{\textunderscore}\else\textunderscore\fi
  }

Thus it's calling \textunderscore and can also be used in math mode.

And \textunderscore is defined as rule:

  \DeclareTextCommandDefault{\textunderscore}{%
    \leavevmode \kern.06em\vbox{\hrule\@width.3em}%
  }

The encoding OT1 (default in LaTeX 2.09) does not change this,
although cmtt would contain such glyph. The other families (rm, sf)
misses it. Thus it's a shortcoming of OT1.

T1 encoding (t1enc.def) uses a glyph of the font:

  \DeclareTextSymbol{\textunderscore}{T1}{95}

Then it depends on the font, what is used. Usually it's indeed a glyph,
but it could be a virtual font where this character is drawn as rule
again (e.g. package ae, font encoding T1, \rmfamily).

If someone wants to test this, here is a small pdflatex example
for playing:

\pdfobjcompresslevel=0
\pdfcompresslevel=0
\documentclass{minimal}
\pagestyle{empty}
\usepackage[T1]{fontenc}
\usepackage{ae}
\begin{document}
\textrm{\_}
\end{document}

No font is embedded, the underscore is drawn as rule.
A font glyph is used without package `ae' or using \texttt
instead of \textrm.

Yours sincerely
  Heiko Oberdiek


More information about the texhax mailing list