クラスに送信されたオプションに基づいて画像を選択する

クラスに送信されたオプションに基づいて画像を選択する

私が書く個人/社内文書の一貫性を高めるために、クラスを変更して、最初のページのフッターに配置する画像を自動的に選択するオプションを渡すことができるようにし、どのグループのために作業を行ったのかが一目でわかるようにしたいと思います。ここからどのように実行すればよいかわかりません。

私はこれを試しました:

    \DeclareOption{groupA}{\def\@affiliation{Group A}}
    \ProcessOptions \relax

フッターの定義に以下を追加しました:

    \@ifundefined{\@affiliation}{\def\@affiliation{none}}{}
    \ifthenelse{\equal{\@affiliation}{\string groupA}}
        {\includegraphics[height=2cm]{groupA_logo.png}}
        {\@affiliation}

これはただ試してみるためのものなので、groupAオプションを渡すと画像が含まれ、 を使用するか何も渡さない\documentclass[groupA]{myreports}場合は所属を入力するだけです。groupB

しかし、これはうまくいきません。フッターには none という単語だけが印刷されます。これを機能させる方法について何かアイデアはありますか?

ご要望に応じて、MWE をここに示します。myreports.cls:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myreports}[2015/07/28]
% - Declaration of options
\DeclareOption{letterpaper}{\PassOptionsToPackage{\CurrentOption}{geometry}}
\DeclareOption{groupA}{\def\@affiliation{Group A}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
% ----- Execution of options
\ExecuteOptions{letterpaper}
\ProcessOptions \relax
\LoadClass{article}
% - Page Layout
\RequirePackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\RequirePackage{graphicx}
\RequirePackage{fancyhdr}
\RequirePackage{ifthen}
% - Header and Footer Definitions
\fancypagestyle{firstpage}{
    \fancyhf{}
    \setlength\headheight{48pt}
    \setlength\headsep{-7pt}
    \fancyhead[C]{\begin{center}
        First Page Header
    \end{center}}
    \fancyfoot[C]{
        \@ifundefined{\@affiliation}{\def\@affiliation{none}}{}
        \ifthenelse{\equal{\@affiliation}{Group A}}
            {I'm in \@affiliation}
            {Don't recognize \@affiliation}
   }
}
\pagestyle{fancy}
\fancyhf{}
\setlength\headheight{48pt}
\setlength\headsep{-7pt}
\fancyhead[CE,CO]{\begin{center}
    Subsequent Pages Header
\end{center}}
\fancyfoot[CE,CO]{\thepage}
% - maketitle Definition
\makeatletter
\def\maketitle{
    \thispagestyle{firstpage}
    \par\textsc{\huge\@title}
    \par\vspace{7pt}{\large\@author}
    \vspace{21pt}
    \par
}
\makeatother
\endinput

そしてtest.tex:

\documentclass[groupA]{myreports}
\usepackage{lipsum}
\title{A Titled Report}
\author{It's Me!}
\begin{document}
\maketitle
\lipsum[1-14]
\end{document}

答え1

まあ、以前試していたものとは違うのですが、解決策を思いつきました。ただ、このアイデアの方が気に入っています。1 つのドキュメントに複数の所属を直接設定できるからです。

私は \newif\if@groupA を使用し、次に単純な \if@groupA {} \fi ステートメントを使用して解決しました。結果のクラスを以下に添付します。

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myreports}[2015/07/28]
\newif\if@groupA
\@groupAfalse
% - Declaration of options
\DeclareOption{letterpaper}{\PassOptionsToPackage{\CurrentOption}{geometry}}
\DeclareOption{groupA}{\@groupAtrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
% ----- Execution of options
\ExecuteOptions{letterpaper}
\ProcessOptions \relax
\LoadClass{article}
% - Page Layout
\RequirePackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\RequirePackage{graphicx}
\RequirePackage{fancyhdr}
\RequirePackage{ifthen}
% - Header and Footer Definitions
\fancypagestyle{firstpage}{
    \fancyhf{}
    \setlength\headheight{48pt}
    \setlength\headsep{-7pt}
    \fancyhead[C]{\begin{center}
        First Page Header
    \end{center}}
    \fancyfoot[C]{
        \if@groupA
            I'm in group A
        \else
            I'm not in group A
        \fi
   }
}
\pagestyle{fancy}
\fancyhf{}
\setlength\headheight{48pt}
\setlength\headsep{-7pt}
\fancyhead[CE,CO]{\begin{center}
    Subsequent Pages Header
\end{center}}
\fancyfoot[CE,CO]{\thepage}
% - maketitle Definition
\makeatletter
\def\maketitle{
    \thispagestyle{firstpage}
    \par\textsc{\huge\@title}
    \par\vspace{7pt}{\large\@author}
    \vspace{21pt}
    \par
} 
\makeatother
\endinput

関連情報