# Automatically inserting “Section”, “Subsection”, etc

Is there a package that automatically inserts the ToC level of the reference I inserted?

Section 1.1
\label{a}
Subsection 1.1.1
\label{b}
Subsection 1.1.2
\label{c}


So that the text:

Blah \superref{a} and \superref{b} and \superref{c}


becomes:

Blah Section 1.1 and Subsection 1.1.1 and Subsection 1.1.2


So that it automatically adapts if I change the level of a label?

-

Use the cleveref package and its \cref macro. Note that sectioning levels below \section are referred to as "section" by default, but this can be customized.

EDIT: In case you want the first letter of the reference name capitalized, use \Cref.

\documentclass{book}

\usepackage{cleveref}
\crefname{subsection}{subsection}{subsections}

\begin{document}

\chapter{First}

\section{First-first}\label{a}

\subsection{First-first-first}\label{b}

\subsection{First-first-second}\label{c}

See \cref{a} and \cref{b} and \cref{c}~\dots

\end{document}


-
\Cref is for starting a sentence, akin to \Citet. For consistent capitalization, use the capitalize package option. Use noabbrev to fully spell out the reference names. (See Section 6 of the manual.) –  krlmlr Jun 15 '13 at 13:44
If one writes See \cref{a,b,c}, the output is See section 1.1 and subsections 1.1.1 and 1.1.2. A \cref instruction can take multiple inputs, and cleveref parses, sorts, and (if necessary) compresses the cross-references on its own. –  Mico Mar 1 at 21:24

The hyperref package provides \autoref{<label>} which inserts the name of the reference type as well. These names can also be changed e.g. redefine \sectionautorefname to change the name for sections.

-