> .if COND1 .ie COND2 xxx > . el yyy
> If this is considered working as designed, however, the > documentation ought to mention the restriction. It currently > implies the opposite, by saying the part after the condition > in an .if request "is interpreted as though it was on a line > by itself." Were the .ie in fact on a line by itself, groff > wouldn't grumble about the .el. I think it is working as intended. "ie" pushes the result of the conditional test onto a stack ("if" does not), to be popped by a future "el". So if COND1 is true, that stack contains the test result of COND2, which the "el" can use. If COND1 is false, the "ie" is never executed, and the stack remains empty, so "el" complains. Note that if there had been another "ie" before your program fragment, then your "el" would be consuming its result. So you can create some very interesting code this way. The documentation should say that it "is interpreted as though it was on a line by itself IF THE CONDITION IS TRUE". If not, it is never executed (except perhaps macro expansions that take place while the line is being read).