# Print counter received as argument

I'm trying to print a counter whose name I receive in the argument #1. I tried \the#1, which doesn't work and also tried the solution given in this answer, which gives me the error "You can't use \let after \the".

Is there any way I can do what I want?

Here's an example of what I want:

\newcommand{\printcounter}[1]{\expandafter\the\csname #1\endcsname}
\begin{document}
\printcounter{section} % this doesn't work

• \expandafter\the#1? – Bernard Sep 30 '17 at 21:55
• @Bernard: That tells me "You can't use 'the letter t' after \the" – user141173 Sep 30 '17 at 21:56
• Could you post a full code, that we can play with? – Bernard Sep 30 '17 at 21:57
• It depends what you mean by "counter". \csname the#1\endcsname could work. If not make a complete example – Ulrike Fischer Sep 30 '17 at 21:59
• @UlrikeFischer: A counter, like section, subsection, etc. – user141173 Sep 30 '17 at 22:01

If you want the abstract numeric value:

\newcommand{\printcounter}[1]{\the\value{#1}}


and

\printcounter{section}


If you want the representation,

\thesection


or, for a generic interface

\newcommand{\printcounter}{\csname the#1\endcsname}

\printcounter{section}


What's the difference? Under standard settings, if we are at section 2, subsection 3, the first \printcounter{subsection} would print 3, the second one would print 2.3 (the current representation). Take your pick.