فرض کنید متغیر X را در فایل .cls به صورت زیر تعریف کردهایم:
\def\X#1{\gdef\@X{#1}} (خودم معنیاش را نمیدانم)
در فایل tex این متغیر سه مقدار a و b و c به صورت \X{a}و \X{b} و \X{c} میتواند بگیرد.
میخواهم در فایل .cls بگویم اگر مقدار X مثلا a بود فلان کار را کند، اگر b بود بهمان کار را بکند و...
چه کنم؟
\documentclass{article}
\makeatletter
\def\X#1{\gdef\@X{#1}}
\newcommand{\testX}{\if\@X a I am a\else \if\@X b I am b\else\if\@X c I am c\else I am neither a, b nor c\fi\fi\fi}
\makeatother
\begin{document}
\X{a}
\testX\\
\X{b}
\testX\\
\X{c}
\testX\\
\X{f}
\testX
\end{document}
\documentclass{article}
\makeatletter
\def\X#1{\gdef\@X{#1}}
\newcommand{\testX}{\if\@X a I am a\else \if\@X b I am b\else\if\@X c I am c\else I am neither a, b nor c\fi\fi\fi}
\makeatother
\begin{document}
\X{a}
\testX\\
\X{b}
\testX\\
\X{c}
\testX\\
\X{f}
\testX
\end{document}
اگر این دستوری که شما تعریف کردهاید (یعنی \testX) را در فایل cls به کار برم دیگر نیازی به \makeatletter و \makeatother نیست. درسته؟