Calling fancy page style is somehow apparently causing the following condition to test true.

\ifcsname chapter\endcsname%

If I place \pagestyle{fancy} after the conditional, \ifcsname chapter....\fi, everything works. This is an article class, so this conditional should be false. If I call \pagestyle{plain}, it doesn't matter where I place it.

Why does this order matter?

1 Answer 1


The page style fancy (\ps@fancy) contains:


That is the LaTeX test for undefined:


\csname has the side effect that it defines an undefined command with the meaning \relax:

\pagestyle{fancy}% \@ifundefined{chapter}{...}{...}

The meaning of \chapter changes:

> \chapter=undefined.
l.3 \show\chapter

> \chapter=\relax.
l.5 \show\chapter

Now \chapter is defined for e-TeX's \ifcsname and \renewcommand{\chapter}{} is called that again used the LaTeX idea of undefined: A command is undefined if it is undefined or has the meaning of \relax. As result \renewcommand complains that `\chapter is not defined.

e-TeX's \ifcsname does not have the side effect and lets the command untouchted. (Also it is internally optimized in the sense that it does not create a hash table entry.)

The test needs to be a little longer:

\ifcsname chapter\endcsname

A defined \chapter might confuse packages and macros about the capabilities of the class (article does not have chapters). If the purpose of the mysterious \renewcommand\chapter{} is to undefine chapter, then it will fail, because \chapter remains defined with the meaning of an empty macro. A command can be undefined by assigning it to an undefined macro:

\ifcsname chapter\endcsname
  • So, I gather \ifcsname does not have this side-effect? I ask because I'd already used \ifcsname chapter\endcsname at least once earlier in my original file. But there was never a complaint when compiling.
    – A.Ellett
    Jun 20, 2013 at 6:47
  • Actually, \renewcommand\chapter{} was just for the MWE. In the actual document I'm doing something more along the lines of what @egreg was suggesting regarding tex.stackexchange.com/a/111641/22413 an earlier question of mine). I would like my package to be versatile enough to define things correctly whether the class is article, book, etc.
    – A.Ellett
    Jun 20, 2013 at 6:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .