
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 groupA
Option durchgebe \documentclass[groupA]{myreports}
, und nur die Zugehörigkeit ausschreiben, wenn ich groupB
nichts 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