Auswählen eines Bildes basierend auf der an die Klasse gesendeten Option

Auswählen eines Bildes basierend auf der an die Klasse gesendeten Option

Um in den persönlichen/internen Dokumenten, die ich schreibe, mehr Konsistenz zu erreichen, möchte ich meine Klasse so ändern, dass ich eine Option übergeben kann, die automatisch ein Bild auswählt, das in die Fußzeile auf der ersten Seite eingefügt wird, sodass man auf einen Blick erkennt, für welche Gruppe ich die Arbeit gemacht habe. Ich bin mir nicht sicher, wie ich das von hier aus machen soll.

Ich habe Folgendes versucht:

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

In der Fußzeilendefinition habe ich Folgendes hinzugefügt:

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

Dies war nur ein Versuchsaufbau, es würde also ein Bild einschließen, wenn ich die groupAOption durchgebe \documentclass[groupA]{myreports}, und nur die Zugehörigkeit ausschreiben, wenn ich groupBnichts verwende oder übergebe.

Das klappt allerdings nicht – in meiner Fußzeile wird nur das Wort „keine“ gedruckt. Irgendwelche Ideen, wie ich so etwas zum Laufen bringen könnte?

Wie gewünscht hier ein 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

Und test.tex:

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

Antwort1

Nun, ich konnte eine Lösung finden, die allerdings von dem abweicht, was ich vorher versucht habe. Mir gefällt diese Idee jedoch besser, da sie direkt mehr als eine Zugehörigkeit zu einem Dokument ermöglicht.

Ich habe es gelöst, indem ich \newif\if@groupA und dann einfach \if@groupA {} \fi-Anweisungen verwendet habe. Ich werde die resultierende Klasse unten anhängen.

\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

verwandte Informationen