Я когда-то это реализовал по такому принципу. Ответы к задачам (а также и решения) я записывал в аргументе новой команды, назовем её \answer:
Код:
\newcommand{\ans}{Answer.}
\newcommand{\answer}[1]{\if@solutions\par\emph{\ans~#1}\fi}
Но в cls-файле добавлял новую опцию solutions. Если она принимала значения "истина", то это окружение печаталось, если же нет --- тупо игнорировалось. В cls-файле
Код:
\DeclareOption{solutions}{\@solutionstrue}
и соответственно в преамбуле
Код:
\documentclass[solutions=true]{...}
или
Код:
\documentclass[solutions=false]{...}