
Чтобы быть более последовательным в личных/внутренних документах, которые я пишу, я хотел бы изменить свой класс, чтобы позволить мне передавать параметр, который будет автоматически выбирать изображение для размещения в нижнем колонтитуле на первой странице, чтобы можно было сразу увидеть, для какой группы я выполнил работу. Я не уверен, как это сделать отсюда.
Я попробовал это:
\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
И тест.текс:
\documentclass[groupA]{myreports}
\usepackage{lipsum}
\title{A Titled Report}
\author{It's Me!}
\begin{document}
\maketitle
\lipsum[1-14]
\end{document}
решение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