291 lines
13 KiB
TeX
291 lines
13 KiB
TeX
%%
|
|
%% This is file `reporting.cls',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% proposal.dtx (with options: `reporting')
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
|
|
\ProvidesPackage{reporting}[2016/04/15 v1.5 Project Reporting]
|
|
\newif\if@wpsubsection\@wpsubsectionfalse
|
|
\newif\ifsubmit\submitfalse
|
|
\newif\ifgrantagreement\grantagreementfalse
|
|
\newif\ifpublic\publicfalse
|
|
\newif\ifkeys\keysfalse
|
|
\newif\ifdelivs\delivsfalse
|
|
\newif\ifwork@areas\work@areastrue
|
|
\newif\if@RAM\@RAMfalse
|
|
\newif\if@svninfo\@svninfofalse
|
|
\newif\if@gitinfo\@gitinfofalse
|
|
\def\proposal@class{article}
|
|
\DeclareOption{wpsubsection}{\@wpsubsectiontrue}
|
|
\DeclareOption{submit}{\submittrue}
|
|
\DeclareOption{grantagreement}{\grantagreementtrue}
|
|
\DeclareOption{gitinfo}{\@gitinfotrue}
|
|
\DeclareOption{svninfo}{\@svninfotrue}
|
|
\DeclareOption{public}{\publictrue}
|
|
\DeclareOption{noworkareas}{\work@areasfalse\PassOptionsToClass{\CurrentOption}{pdata}}
|
|
\DeclareOption{RAM}{\@RAMtrue}
|
|
\DeclareOption{report}{\def\proposal@class{report}}
|
|
\DeclareOption{keys}{\keystrue}
|
|
\DeclareOption{deliverables}{\delivstrue}
|
|
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
|
|
\ProcessOptions
|
|
\LoadClass[a4paper,twoside]{\proposal@class}
|
|
\RequirePackage{amssymb}
|
|
\RequirePackage{wasysym}
|
|
\RequirePackage{url}
|
|
\RequirePackage{graphicx}
|
|
\RequirePackage{colortbl}
|
|
\RequirePackage{xcolor}
|
|
\RequirePackage{rotating}
|
|
\RequirePackage{fancyhdr}
|
|
\RequirePackage{array}
|
|
\RequirePackage{xspace}
|
|
\RequirePackage{comment}
|
|
\AtBeginDocument{\ifpublic\excludecomment{private}\fi}
|
|
\RequirePackage{tikz}
|
|
\RequirePackage{paralist}
|
|
\RequirePackage[a4paper,margin=18mm]{geometry}
|
|
\RequirePackage{boxedminipage}
|
|
\renewcommand{\thempfootnote}{\roman{mpfootnote}}
|
|
\renewcommand{\familydefault}{\sfdefault}
|
|
\RequirePackage[scaled=.90]{helvet}
|
|
\RequirePackage{textcomp}
|
|
\RequirePackage[hyperref=auto,style=alphabetic,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19]
|
|
\RequirePackage{csquotes}
|
|
\RequirePackage{mdframed}
|
|
\RequirePackage{pdata}
|
|
\definecolor{darkblue}{rgb}{0,0,.7}
|
|
\ifsubmit\def\prop@link@color{darkblue}\else\def\prop@link@color{blue}\fi
|
|
\RequirePackage[bookmarks=true,linkcolor=\prop@link@color,
|
|
citecolor=\prop@link@color,urlcolor=\prop@link@color,colorlinks=true,
|
|
breaklinks=true, bookmarksopen=true]{hyperref}
|
|
\ifsubmit
|
|
\RequirePackage[hide]{ed}
|
|
\if@svninfo\RequirePackage[final,today]{svninfo}\fi
|
|
\else
|
|
\RequirePackage[show]{ed}
|
|
\if@svninfo\RequirePackage[eso-foot,today]{svninfo}\fi
|
|
\if@gitinfo\RequirePackage[mark]{gitinfo2}\fi
|
|
\fi
|
|
\renewcommand\ednoteshape{\sl\footnotesize}
|
|
\ifpublic\excludecomment{private}\else\includecomment{private}\fi
|
|
\setcounter{secnumdepth}{3}
|
|
\newif\ifofpage\ofpagefalse
|
|
\ifgrantagreement
|
|
\fancyhead{}
|
|
\renewcommand{\headrulewidth}{0pt}
|
|
\renewcommand{\footrulewidth}{0.4pt}
|
|
\else
|
|
\fancyhead[RE,LO]{\prop@gen@acronym}
|
|
\fancyhfoffset{0pt}
|
|
\fi
|
|
\fancyfoot[C]{}
|
|
\newcommand\prop@of@pages[2]{page~#1\ifofpage~of~#2\fi}
|
|
\ifgrantagreement
|
|
\fancyfoot[L]{\prop@gen@proposalnumber\quad \prop@gen@acronym\quad --\quad Part B}
|
|
\fancyfoot[R]{\thepage}
|
|
\else
|
|
\fancyhead[LE,RO]{\prop@of@pages\thepage{\pdataref@num{prop}{page}{last}}}
|
|
\fi
|
|
\pagestyle{fancyplain}
|
|
\newif\if@report\@reportfalse
|
|
\newenvironment{report}[1][]%
|
|
{\@reporttrue\readpdata\jobname%
|
|
\ofpagetrue\setkeys{prop@gen}{#1}%
|
|
\pdata@open\jobname%
|
|
\@ifundefined{prop@gen@PIs}{}{\newcounter{@PIs}\@for\@I:=\prop@gen@PIs\do{\stepcounter{@PIs}}}%
|
|
\@ifundefined{prop@gen@sites}{}{\newcounter{@sites}\@for\@I:=\prop@gen@sites\do{\stepcounter{@sites}}}%
|
|
\setcounter{page}{0}%
|
|
\begin{prop@report}}
|
|
{\end{prop@report}%
|
|
\pdata@def{prop}{page}{last}{\thepage}\ofpagefalse\newpage
|
|
\printbibliography[heading=warnpubs]
|
|
\pdata@close}
|
|
\newenvironment{prop@report}
|
|
{\begin{center}
|
|
{\LARGE Final Project Report}\\[.2cm]
|
|
{\LARGE\textbf{\prop@gen@title}}\\[.3cm]
|
|
{\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm]
|
|
{\large\today}\\[1em]
|
|
\begin{tabular}{c*{\the@PIs}{c}}
|
|
\prop@tl\prop@gen@PIs{\wa@ref3{person}\tl@ext{name}}\\
|
|
\prop@tl\prop@gen@PIs{\wa@ref3{institution}{\wa@ref3{person}\tl@ext{affiliation}}{name}}
|
|
\end{tabular}\\[2cm]
|
|
\end{center}
|
|
\setcounter{tocdepth}{2}\tableofcontents\newpage\setcounter{page}{1}}
|
|
{}
|
|
\newcommand\deliv@error{\PackageError{proposal}
|
|
{To use use deliverables, you have to specify the option 'deliverables'}}
|
|
\newenvironment{wpdelivs}{\begin{wp@delivs}}{\end{wp@delivs}}
|
|
\newenvironment{wp@delivs}
|
|
{\ifdelivs\textbf\deliv@legend@delivs:\\[-3ex]%
|
|
\begin{compactdesc}\else\deliv@error\fi}
|
|
{\ifdelivs\end{compactdesc}\fi}
|
|
\newcommand\deliv@legend@delivs{Deliverables}
|
|
\newenvironment{wadelivs}
|
|
{\textbf\deliv@legend@delivs:\\[-3ex]\begin{wp@delivs}}
|
|
{\end{wp@delivs}}
|
|
\newcommand\lec[1]{\strut\hfil\strut\null\nobreak\hfill\hbox{$\leadsto$#1}\par}
|
|
\newcommand\deliv@label[1]{D{#1}}
|
|
\newcommand\delivref[2]{\pdataRef{deliv}{#1@#2}{label}}
|
|
\newcommand\localdelivref[1]{\delivref{\wp@id}{#1}}
|
|
\newcommand\delivtref[2]{\delivref{#1}{#2}: \pdataRefFB{deliv}{#1@#2}{short}{title}}
|
|
\newcommand\localdelivtref[1]{\delivtref{\wp@id}{#1}}
|
|
\define@key{deliv}{id}{\def\deliv@id{#1}}
|
|
\define@key{deliv}{due}{\def\deliv@due{#1}}
|
|
\define@key{deliv}{dissem}{\def\deliv@dissem{#1}}
|
|
\define@key{deliv}{nature}{\def\deliv@nature{#1}}
|
|
\define@key{deliv}{miles}{\def\deliv@miles{#1}}
|
|
\define@key{deliv}{short}{\def\deliv@short{#1}}
|
|
\define@key{deliv}{lead}{\def\deliv@lead{#1}}
|
|
\define@key{deliv}{issue}{\def\deliv@issue{#1}}
|
|
\newcounter{deliverable}
|
|
\newcommand{\wpg@deliv}[3]{% keys, title, type
|
|
\stepcounter{deliverable}
|
|
\let\deliv@miles=\relax% clean state
|
|
\def\@type{#3}\def\@wp{wp}% set up ifx
|
|
\def\wpg@id{\csname #3@id\endcsname}
|
|
\setkeys{deliv}{#1}\stepcounter{deliv}% set state
|
|
\ifx\@type\@wp\def\current@label{\deliv@label{\ifwork@areas\thewa.\fi\thewp.\thedeliv}}
|
|
\else\def\current@label{\deliv@label{\thewa.\thedeliv}}\fi
|
|
\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{label}{\current@label}
|
|
\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{title}{#2}
|
|
\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{page}{\thepage}%
|
|
\@ifundefined{deliv@short}
|
|
{\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{short}{#2}}
|
|
{\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{short}{\deliv@short}}
|
|
\@ifundefined{deliv@nature}
|
|
{\protect\G@refundefinedtrue\@latex@warning{key 'nature' for Deliv \wpg@id undefined}}
|
|
{\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{nature}{\deliv@nature}}
|
|
\@ifundefined{deliv@dissem}
|
|
{\protect\G@refundefinedtrue\@latex@warning{key 'dissem' for Deliv \wpg@id undefined}}
|
|
{\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{dissem}{\deliv@dissem}}
|
|
\@ifundefined{deliv@lead}
|
|
{\protect\G@refundefinedtrue\@latex@warning{key 'lead' for Deliv \wpg@id undefined}}
|
|
{\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{lead}{\deliv@lead}}
|
|
\@ifundefined{deliv@due}{}{%
|
|
\@ifundefined{deliv@issue}{}{\pdata@def{deliv}{\taskin\deliv@id\wpg@id}{issue}{\deliv@issue}}
|
|
\@for\@I:=\deliv@due\do{\protected@write\wpg@delivs{}{\string\deliverable%
|
|
{\ifnum\@I<10 0\@I\else\@I\fi}% sort key
|
|
{\@I}% due date
|
|
{\current@label}% label
|
|
{\@ifundefined{deliv@id}{??}{\taskin\deliv@id\wpg@id}}% id
|
|
{\@ifundefined{deliv@dissem}{??}{\deliv@dissem}}% dissemination level
|
|
{\@ifundefined{deliv@nature}{??}{\deliv@nature}}% nature
|
|
{#2}
|
|
{\ifx\@type\@wp{WP\ifwork@areas\thewa.\fi\thewp}\else{WA\thewa}\fi}%WP
|
|
{\@ifundefined{deliv@lead}{??}{\string\site{\deliv@lead}}}}}}% lead
|
|
\item[\current@label\ (%
|
|
\delivs@legend@due: \@ifundefined{deliv@due}{??}{\deliv@due},
|
|
\delivs@legend@nature: \@ifundefined{deliv@nature}{??}{\deliv@nature},
|
|
\delivs@legend@dissem: \@ifundefined{deliv@dissem}{??}{\deliv@dissem},
|
|
\delivs@legend@lead: \@ifundefined{deliv@lead}{??}{\site{\deliv@lead}})]
|
|
\pdata@target{deliv}{\taskin\deliv@id\wpg@id}{\textit{#2}}
|
|
\@ifundefined{deliv@miles}{}{% print the milestones and update their deliverables
|
|
\let\m@sep=\relax% do not print the separator the first time round
|
|
\lec{\@for\@I:=\deliv@miles\do{% Iterate over the milestones mentioned
|
|
\m@sep\pdataRef{mile}{\@I}{label}% print the milestone reference
|
|
\let\m@sep=,}}%set the separator for the next times
|
|
\def\d@sep{,}
|
|
\@for\@I:=\deliv@miles\do{% Iterate over the milestones mentioned
|
|
\expandafter\ifx\csname\@I delivs\endcsname\relax% Check that the miles@delivs is empty
|
|
{\expandafter\xdef\csname\@I delivs\endcsname{\wpg@id @\deliv@id}}% if so, skip the separator
|
|
\else\expandafter\xdef\csname\@I delivs\endcsname%if not add it
|
|
{\csname\@I delivs\endcsname\d@sep\wpg@id @\deliv@id}\fi}}}
|
|
\newenvironment{wadeliv}[2][]{\ifdelivs\wpg@deliv{#1}{#2}{wa}\else\deliv@error\fi}{}
|
|
\newenvironment{wpdeliv}[2][]{\ifdelivs\wpg@deliv{#1}{#2}{wp}\else\deliv@error\fi}{}
|
|
\newcommand\milestone@label[1]{M{#1}}
|
|
\newcommand\mileref[1]{\pdataRef{mile}{#1}{label}}
|
|
\newcommand\miletref[1]{\mileref{#1}: \pdataRefFB{mile}{#1}{short}{title}}
|
|
\newcounter{milestone}
|
|
\define@key{milestone}{id}{\gdef\mile@id{#1}}
|
|
\define@key{milestone}{month}{\gdef\mile@month{#1}}
|
|
\newcommand\milestone[3][]{%
|
|
\ifdelivs%
|
|
\setkeys{milestone}{#1}\stepcounter{milestone}%
|
|
\pdata@def{mile}\mile@id{label}{\milestone@label{\themilestone}}%
|
|
\pdata@def{mile}\mile@id{month}{\mile@month}%
|
|
\pdata@def{mile}\mile@id{title}{#2}%
|
|
\pdata@def{mile}\mile@id{description}{#3}%
|
|
\@ifundefined{mile@stones}%
|
|
{\xdef\mile@stones{\mile@id}}%
|
|
{\xdef\mile@stones{\mile@stones,\mile@id}}%
|
|
\@milestone{\mile@id}{#2}{#3}% presentation
|
|
\else\deliv@error\fi}
|
|
\newcommand\@milestone[3]{% id, title, description
|
|
\item \textbf{\miles@legend@milestone\xspace\pdata@target{mile}\mile@id{\pdataref{mile}{#1}{label}}
|
|
(\miles@legend@month \pdataref{mile}\mile@id{month})
|
|
\textbf{#2}} #3}
|
|
\newcommand\miles@legend@month{Month}
|
|
\newcommand\miles@legend@milestone{Milestone}
|
|
\newenvironment{milestones}%
|
|
{\ifdelivs\begin{@milestones}\else\deliv@error\fi}
|
|
{\ifdelivs\pdata@def{all}{mile}{ids}{\mile@stones}%
|
|
\pdata@def{all}{mile}{count}{\themilestone}%
|
|
\end{@milestones}\fi}
|
|
\newenvironment{@milestones}{\begin{enumerate}}{\end{enumerate}}
|
|
\newcommand{\deliverable}[9]{\pdataRef{deliv}{#4}{label}	\\\hline}%sortkey,due,label,id,title,type,level,lead
|
|
\newenvironment{deliverables}[1]{\ifdelivs\begin{longtable}{|l|p{#1}|l|l|l|l|l|}\hline%
|
|
\#&\textbf{\delivs@legend@name}&%
|
|
\textbf{\delivs@legend@wp}&%
|
|
\textbf{\delivs@legend@lead}&%
|
|
\textbf{\delivs@legend@nature}&%
|
|
\textbf{\delivs@legend@level}&%
|
|
\textbf{\delivs@legend@due}\\\hline\hline%
|
|
\endhead%
|
|
\else\deliv@error\fi}
|
|
{\ifdelivs\end{longtable}\fi}
|
|
\newcommand\delivs@legend@name{Deliverable name}
|
|
\newcommand\delivs@legend@wp{WP}
|
|
\newcommand\delivs@legend@nature{Type}
|
|
\newcommand\delivs@legend@level{Level}
|
|
\newcommand\delivs@legend@due{Due}
|
|
\newcommand\delivs@legend@dissem{Dissem.}
|
|
\newcommand\delivs@legend@lead{Lead}
|
|
\newcommand{\inputdelivs}[1]{%
|
|
\begin{deliverables}{#1}%
|
|
\IfFileExists{\jobname.deliverables}%
|
|
{\input{\jobname.deliverables}}%
|
|
{\IfFileExists{\jobname.delivs}{\input{\jobname.delivs}}{}}
|
|
\end{deliverables}}
|
|
\defbibheading{empty}{}
|
|
\newif\if@allpapers\@allpaperstrue
|
|
\newcommand\prop@ppl[3][]{\@allpapersfalse\message{ppl processing: #2}%
|
|
\printbibliography[heading=subbibliography,type=#2,title=#3#1]%
|
|
\@ifundefined{prop@rl}{\xdef\prop@rl{#2}}{\xdef\prop@rl{\prop@rl, #2}}}
|
|
\newcommand\prop@prl[1]{\message{unclassified: #1}%
|
|
\printbibliography[heading=subbibliography,title=Unclassified,#1]}%
|
|
\define@key{paperlist}{unclassified}[true]{\message{unclass: \prop@rl}\prop@prl\prop@rl}
|
|
\define@key{paperlist}{articles}[true]{\prop@ppl{article}{Articles}}
|
|
\define@key{paperlist}{chapters}[true]{\prop@ppl{inbook}{Book Chapters}}
|
|
\define@key{paperlist}{confpapers}[true]{\prop@ppl[,keyword=conference]{inproceedings}{Conference Papers}}
|
|
\define@key{paperlist}{wspapers}[true]{\prop@ppl[,notkeyword=conference]{inproceedings}{Workshop Papers}}
|
|
\define@key{paperlist}{theses}[true]{\prop@ppl{thesis}{Theses}}
|
|
\define@key{paperlist}{submitted}[true]{\prop@ppl[,keyword=submitted]{unpublished}{Submitted}}
|
|
\define@key{paperlist}{books}[true]{\prop@ppl{book}{Monographs}}
|
|
\define@key{paperlist}{techreports}[true]{\prop@ppl{techreport}{Technical Reports}}
|
|
\DeclareBibliographyCategory{featured}
|
|
\newcommand\prop@paperlist[2][]{%
|
|
\let\biboldfont\bibfont%
|
|
\renewcommand{\bibfont}{\footnotesize}%
|
|
\renewcommand{\baselinestretch}{.9}%
|
|
\nocite{#2}\def\do##1{\addtocategory{featured}{##1}}\docsvlist{#2}%
|
|
\setkeys{paperlist}{#1}
|
|
\@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}}
|
|
\if@allpapers\printbibliography[category=featured,heading=empty]\fi%
|
|
\let\bibfont\biboldfont}
|
|
\def\prop@warnpubs@message{Many of the proposers' publications are online at one of the following URIs:}
|
|
\def\prop@warnpubs@title{References}
|
|
\defbibheading{warnpubs}{\section*{\prop@warnpubs@title}%
|
|
\@ifundefined{prop@gen@pubspages}
|
|
{\@latex@warning{No publication pages specified;
|
|
use the pubspage key in the proposal environment!}}
|
|
{\prop@warnpubs@message%
|
|
\@for\@I:=\prop@gen@pubspages\do{\par\noindent\csname\@I\endcsname}}}
|
|
\endinput
|
|
%%
|
|
%% End of file `reporting.cls'.
|