Take the 2-minute tour ×

I've written a package that introduces a new environment:


The package however can be used for articles, books, ... Since not all of these environments have the concept of chapter, on gets a No counter 'chapter' defined. exception.

How can I check if the chapter counter is defined?

share|improve this question
add comment

2 Answers

up vote 11 down vote accepted

If a counter foo exists then a count \c@foo exists as well as a macro \thefoo. The \newcounter command (that most likely is used by \newfloat) actually checks if \c@foo exists and calls \@nocounterr{foo} if it doesn't.

The following also checks for \c@foo using etex's \ifcsname ...\endcsname:


  \ifcsname c@#1\endcsname


Counter \texttt{chapter} \ifcounter{chapter}{exists}{doesn't exist}.

Counter \texttt{section} \ifcounter{section}{exists}{doesn't exist}.


enter image description here

share|improve this answer
\newcommand\ifcounter[3]{\@ifundefined{c@#1}{#3}{#2}} –  egreg Jan 24 at 15:08
@egreg I know :) I just like \ifcsname a tiny bit better since it doesn't leave the command as \relax if it isn't defined –  cgnieder Jan 24 at 15:10
add comment
share|improve this answer
add comment

Your Answer


