From a30f052f895d1f1fd9f112c555d360a2f5845929 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 23 Nov 2015 23:03:44 +0000 Subject: proposal (23nov15) git-svn-id: svn://tug.org/texlive/trunk@38923 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/proposal/base/pdata.sty | 33 +- .../tex/latex/proposal/base/proposal.cls | 384 +++++++++++++-------- .../tex/latex/proposal/base/reporting.cls | 42 ++- 3 files changed, 306 insertions(+), 153 deletions(-) (limited to 'Master/texmf-dist/tex/latex/proposal/base') diff --git a/Master/texmf-dist/tex/latex/proposal/base/pdata.sty b/Master/texmf-dist/tex/latex/proposal/base/pdata.sty index a08372865b9..fb8f99c8d3a 100644 --- a/Master/texmf-dist/tex/latex/proposal/base/pdata.sty +++ b/Master/texmf-dist/tex/latex/proposal/base/pdata.sty @@ -7,7 +7,7 @@ %% proposal.dtx (with options: `pdata') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{pdata}[2013/02/13 v1.4 Project Data] +\ProvidesPackage{pdata}[2015/11/22 v1.5 Project Data] \RequirePackage{workaddress}[2011/05/03] \RequirePackage{eurosym} \newif\if@sites\@sitesfalse\let\prop@gen@sites=\relax% @@ -42,6 +42,8 @@ \pdata@def{prop}{gen}{acronym}{#1}\@dmp{acro=#1}} \define@key{prop@gen}{acrolong}{\def\prop@gen@acrolong{#1}% \pdata@def{prop}{gen}{acrolong}{#1}} +\define@key{prop@gen}{proposalnumber}{\def\prop@gen@proposalnumber{#1}% +\pdata@def{prop}{gen}{proposalnumber}{#1}} \define@key{prop@gen}{discipline}{\def\prop@gen@discipline{#1}% \pdata@def{prop}{gen}{discipline}{#1}} \define@key{prop@gen}{areas}{\def\prop@gen@areas{#1}% @@ -56,10 +58,17 @@ \pdata@def{prop}{gen}{totalduration}{#1}} \define@key{prop@gen}{fundsuntil}{\def\prop@gen@fundsuntil{#1}% \pdata@def{prop}{gen}{fundsuntil}{#1}} -\newcommand\prop@gen@acro{ACRONYM} -\newcommand\prop@gen@months{???} -\newcommand\prop@gen@title{???Proposal Title???} -\newcommand\prop@gen@instrument{??? Instrument ???} +\define@key{prop@gen}{topdownPM}[true]{\def\prop@gen@topdownPM{#1}} +\define@key{prop@gen}{botupPM}[true]{\def\prop@gen@botupPM{#1}} +\define@key{prop@gen}{keywords}{\def\prop@gen@keywords{#1}} +\newcommand\prop@gen@acro@default{ACRONYM} +\def\prop@gen@acro{\prop@gen@acro@default} +\newcommand\prop@gen@months@default{???months???} +\def\prop@gen@months{\prop@gen@months@default} +\newcommand\prop@gen@title@default{???Proposal Title???} +\def\prop@gen@title{\prop@gen@title@default} +\newcommand\prop@gen@instrument@default{??? Instrument ???} +\def\prop@gen@instrument{\prop@gen@instrument@default} \newcommand\prop@tl[2]{\xdef\tab@line{} \@for\tl@ext:={#1}\do{\xdef\tab@line{\tab@line}} \tab@line} @@ -85,19 +94,29 @@ \newcommand\pdataref@aux[3]{\@ifundefined{#1@#2@#3}{??}{\csname #1@#2@#3\endcsname}}% \newcommand\pdataref@num[3]{\@ifundefined{#1@#2@#3}{0}{\csname #1@#2@#3\endcsname}}% \newcommand\pdataref@safe[3]{\@ifundefined{#1@#2@#3}{}{\csname #1@#2@#3\endcsname}}% +\newcommand\pdatarefFB[4]{\@ifundefined{#1@#2@#3}% +{\@ifundefined{#1@#2@#4}% +{\protect\G@refundefinedtrue\@latex@warning{both #3 and its fallback #4 undefined for #1 #2}??}% +{\csname #1@#2@#4\endcsname}} +{\csname #1@#2@#3\endcsname}} \newcommand\pdataRef[3]{\@ifundefined{#1@#2@#3}% {\protect\G@refundefinedtrue\@latex@warning{#3 for #1 #2 undefined}??}% {\hyperlink{#1@#2@target}{\csname #1@#2@#3\endcsname}}} +\newcommand\pdataRefFB[4]{\@ifundefined{#1@#2@#3}% +{\@ifundefined{#1@#2@#4}% +{\protect\G@refundefinedtrue\@latex@warning{both #3 and its fallback #4 undefined for #1 #2}??}% +{\hyperlink{#1@#2@target}{\csname #1@#2@#4\endcsname}}} +{\hyperlink{#1@#2@target}{\csname #1@#2@#3\endcsname}}} \newcommand\prop@count[1]{\ifcase #1 zero\or one\or two\or three\or four\or five\or six\or seven \or eight\or nine\or ten\or eleven \or twelve\else#1\fi} \newcommand\pdatacount[2]{\prop@count{\pdataref@num{#1}{#2}{count}}} \newcommand\pn{\pdataref{prop}{gen}{acronym}\xspace} \newcommand\pnlong{\pdataref{prop}{gen}{acrolong}\xspace} \newcommand\WPref[1]{\pdataRef{wp}{#1}{label}} -\newcommand\WPtref[1]{\pdataRef{wp}{#1}{label}: \pdataRef{wp}{#1}{short}} +\newcommand\WPtref[1]{\WPref{#1}: \pdataRefFB{wp}{#1}{short}{title}} \ifwork@areas \newcommand\WAref[1]{\pdataRef{wa}{#1}{label}} -\newcommand\WAtref[1]{\pdataRef{wa}{#1}{label}: \pdataRef{wa}{#1}{title}} +\newcommand\WAtref[1]{\WAref{#1}: \pdataRefFB{wa}{#1}{short}{title}} \fi \newcommand{\signatures}[1]{\section{#1} \qquad\number\day. \number\month. \number\year\\[6ex] diff --git a/Master/texmf-dist/tex/latex/proposal/base/proposal.cls b/Master/texmf-dist/tex/latex/proposal/base/proposal.cls index 6e1b3aa39b0..94f2250ff93 100644 --- a/Master/texmf-dist/tex/latex/proposal/base/proposal.cls +++ b/Master/texmf-dist/tex/latex/proposal/base/proposal.cls @@ -7,17 +7,23 @@ %% proposal.dtx (with options: `cls') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesClass{proposal}[2013/02/13 v1.4 Project Proposal] +\ProvidesClass{proposal}[2015/11/22 v1.5 Project Proposal] \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} @@ -28,6 +34,7 @@ \ProcessOptions \LoadClass[a4paper,twoside]{\proposal@class} \RequirePackage{amssymb} +\RequirePackage{wasysym} \RequirePackage{url} \RequirePackage{graphicx} \RequirePackage{colortbl} @@ -40,13 +47,13 @@ \AtBeginDocument{\ifpublic\excludecomment{private}\fi} \RequirePackage{tikz} \RequirePackage{paralist} -\RequirePackage{a4wide} +\RequirePackage[a4paper,margin=18mm]{geometry} \RequirePackage{boxedminipage} \renewcommand{\thempfootnote}{\roman{mpfootnote}} \renewcommand{\familydefault}{\sfdefault} \RequirePackage[scaled=.90]{helvet} \RequirePackage{textcomp} -\RequirePackage[hyperref=auto,style=numeric,defernumbers=true,backend=bibtex]{biblatex}[2010/11-19] +\RequirePackage[hyperref=auto,style=numeric,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19] \RequirePackage{csquotes} \RequirePackage{mdframed} \RequirePackage{pdata} @@ -57,18 +64,32 @@ breaklinks=true, bookmarksopen=true]{hyperref} \ifsubmit \RequirePackage[hide]{ed} -\RequirePackage[final,today]{svninfo} +\if@svninfo\RequirePackage[final,today]{svninfo}\fi \else \RequirePackage[show]{ed} -\RequirePackage[eso-foot,today]{svninfo} +\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} \newmdenv[settings=\large]{emphbox} \newenvironment{prop@proposal} @@ -90,7 +111,7 @@ \item Curriculum Vitae and list of publications for \wa@ref{person}\@I{personaltitle} \wa@ref{person}\@I{name} \end{itemize}}\newpage -\printbibliography[heading=warnpubs,maxnames=999]} +\printbibliography[heading=warnpubs]} \newenvironment{proposal}[1][]{\readpdata\jobname \ofpagetrue\setkeys{prop@gen}{#1} \pdata@open\jobname @@ -115,8 +136,8 @@ \define@key{obj}{short}{\def\obj@short{#1}\@dmp{short=#1}} \newcounter{objective} \newenvironment{objective}[1][] -{\let\obj@id\relax\let\obj@title\relax\let\obj@short% -\relax\setkeys{obj}{#1}\stepcounter{objective}% +{\let\obj@id\relax\let\obj@title\relax\let\obj@short\relax% +\setkeys{obj}{#1}\stepcounter{objective}% \goodbreak\smallskip\par\noindent% \textbf{\objective@label{\arabic{objective}}:% ~\pdata@target{obj}{\obj@id}{\pdataref{obj}{\obj@id}{title}}\ignorespaces}% @@ -125,7 +146,7 @@ \@ifundefined{obj@short}{}{\pdata@def{obj}\obj@id{short}\obj@short}} {} \newcommand\OBJref[1]{\pdataRef{obj}{#1}{label}} -\newcommand\OBJtref[1]{\pdataRef{obj}{#1}{label}: \pdataRef{obj}{#1}{title}} +\newcommand\OBJtref[1]{\OBJref{#1}: \pdataRefFB{obj}{#1}{short}{title}} \ifwork@areas \define@key{workarea}{id}{\def\wa@id{#1}\@dmp{id=#1}} \define@key{workarea}{title}{\pdata@def{wa}\wa@id{title}{#1}} @@ -134,10 +155,11 @@ \fi \define@key{workpackage}{id}{\def\wp@id{#1}\@dmp{id=#1}} \define@key{workpackage}{title}{\pdata@def{wp}\wp@id{title}{#1}} -\define@key{workpackage}{lead}{\pdata@def{wp}\wp@id{lead}{#1}\def\wp@lead{#1}\@dmp{lead=#1}} \define@key{workpackage}{short}{\pdata@def{wp}\wp@id{short}{#1}} +\define@key{workpackage}{lead}{\pdata@def{wp}\wp@id{lead}{#1}\def\wp@lead{#1}\@dmp{lead=#1}} \define@key{workpackage}{type}{\def\wp@type{#1}\pdata@def{wp}\wp@id{type}{#1}} \define@key{workpackage}{wphases}{\def\wp@wphases{#1}\pdata@def{wp}\wp@id{wphases}{#1}} +\define@key{workpackage}{swsites}[true]{\def\wp@swsites{#1}} \newcommand\wp@mk@title[1]{Work Package {#1}} \newcommand\wp@label[1]{WP{#1}} \ifwork@areas @@ -167,6 +189,7 @@ \if@RAM\newcounter{wp@RAM}\fi \newenvironment{work@package}[1][]% {\def\wp@wphases{0-0}% default values +\def\wp@swsites{false} \setkeys{workpackage}{#1}\stepcounter{wp}\stepcounter{allwp}% \startend@wphases\wp@wphases% \pdata@def{wp}\wp@id{start}\wphase@start\pdata@def{wp}\wp@id{end}\wphase@end% @@ -190,10 +213,12 @@ {\@ifundefined{@tasks}{}{\pdata@def{\wp@id}{task}{ids}\@tasks}} \newenvironment{workpackage}[1][]% {\begin{work@package}[#1]% +\ifgrantagreement\else \if@sites\goodbreak\medskip\wpheadertable% \else\subsubsection*{{\wptitle} (\wprm)}\fi% \addcontentsline{toc}{paragraph}{{\wp@mk@title\thewp}: \pdataref{wp}\wp@id{title}}% -} +\noindent\ignorespaces% +\fi} {\end{work@package}} \newcommand\wptitle{\wp@mk@title{\wp@num}: \pdata@target{wp}{\wp@id}{\pdataref{wp}\wp@id{title}}} \newcommand\wprm{\pdataref@safe{wp}\wp@id{RM}\if@RAM\ RM+\pdataref{wp}\wp@id{RAM} RAM\fi} @@ -206,14 +231,23 @@ \newcounter{wp@sites@num} \newcommand\wp@sites@efforts@lines{% \setcounter{wp@sites@num}{0} -{\let\G@refundefinedtrue=\relax\let\@latex@warning=\relax% +{\let\G@refundefinedtrue=\relax\let\@latex@warning=\relax\let\@sw\relax% \let\site\relax\let\textbf\relax\let\sum@style\relax\let\lead@style\relax% +\let\pn\relax\let\sys\relax% \xdef\wp@sites@line{\wp@legend@site}\xdef\wp@efforts@line{\wp@legend@effort}%initialize lines \@for\@site:=\prop@gen@sites\do{\if@site@contributes\@site{\stepcounter{wp@sites@num}}% \xdef\wp@sites@line{\wp@sites@line% -\if@site@contributes\@site{&\ifx\@site\wp@lead\lead@style{\site{\@site}}\else\site{\@site}\fi}}% +\if@site@contributes\@site{&% +\ifx\wp@swsites\@true% +\@sw{\ifx\@site\wp@lead\lead@style{\site{\@site}}\else\site{\@site}\fi}% +\else\ifx\@site\wp@lead\lead@style{\site{\@site}}\else\site{\@site}\fi% +\fi}}% \xdef\wp@efforts@line{\wp@efforts@line% -\if@site@contributes\@site{&\pdataref@safe\wp@id\@site{RM}\if@RAM+\pdataref@safe\wp@id\@site{RAM}\fi}}}% +\if@site@contributes\@site{&% +\ifx\@site\wp@lead% +\lead@style{\pdataref@safe\wp@id\@site{RM}\if@RAM+\pdataref@safe\wp@id\@site{RAM}\fi} +\else\pdataref@safe\wp@id\@site{RM}\if@RAM+\pdataref@safe\wp@id\@site{RAM}\fi\fi}}% +}% do \xdef\wp@sites@line{\wp@sites@line&\sum@style{\wp@legend@all}}% \xdef\wp@efforts@line{\wp@efforts@line& \sum@style{\textbf{\pdataref{wp}\wp@id{RM}\if@RAM+\pdataref{wp}\wp@id{RAM}\fi}}}}} @@ -260,7 +294,8 @@ \pdata@def{prop}{all}{RAM}\theprop@RAM \fi \subsubsection*{{\wa@mk@title\thewa}: {\pdata@target{wa}\wa@id{\pdataref{wa}\wa@id{title}}}} -\addcontentsline{toc}{subsubsection}{{\wa@mk@title\thewa}: \pdataref{wa}\wa@id{title}}} +\addcontentsline{toc}{subsubsection}{{\wa@mk@title\thewa}: \pdataref{wa}\wa@id{title}}% +\ignorespaces} {\@ifundefined{@wps}{}{\pdata@def\wa@id{wp}{ids}\@wps}\pdata@def\wa@id{wp}{count}\thewa@wps}\fi \ifdelivs\newwrite\wpg@delivs\fi \newenvironment{workplan}% @@ -295,15 +330,18 @@ {\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]{M{#1}} +\newcommand\deliv@label[1]{D{#1}} \newcommand\delivref[2]{\pdataRef{deliv}{#1#2}{label}} -\newcommand\delivtref[2]{\pdataRef{deliv}{#1#2}{label}: \pdataRef{deliv}{#1#2}{short}} +\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}} \newcounter{deliverable} \newcommand{\wpg@deliv}[3]{% keys, title, type \stepcounter{deliverable} @@ -315,25 +353,36 @@ \else\def\current@label{\deliv@label{\thewa.\thedeliv}}\fi \pdata@def{deliv}{\wpg@id\deliv@id}{label}{\current@label} \pdata@def{deliv}{\wpg@id\deliv@id}{title}{#2} +\pdata@def{deliv}{\wpg@id\deliv@id}{page}{\thepage}% \@ifundefined{deliv@short} {\pdata@def{deliv}{\wpg@id\deliv@id}{short}{#2}} {\pdata@def{deliv}{\wpg@id\deliv@id}{short}{\deliv@short}} -\pdata@def{deliv}{\wpg@id\deliv@id}{nature}{\deliv@nature} -\pdata@def{deliv}{\wpg@id\deliv@id}{dissem}{\deliv@dissem} +\@ifundefined{deliv@nature} +{\protect\G@refundefinedtrue\@latex@warning{key 'nature' for Deliv \wpg@id undefined}} +{\pdata@def{deliv}{\wpg@id\deliv@id}{nature}{\deliv@nature}} +\@ifundefined{deliv@dissem} +{\protect\G@refundefinedtrue\@latex@warning{key 'dissem' for Deliv \wpg@id undefined}} +{\pdata@def{deliv}{\wpg@id\deliv@id}{dissem}{\deliv@dissem}} +\@ifundefined{deliv@lead} +{\protect\G@refundefinedtrue\@latex@warning{key 'lead' for Deliv \wpg@id undefined}} +{\pdata@def{deliv}{\wpg@id\deliv@id}{lead}{\deliv@lead}} \@ifundefined{deliv@due}{}{% \@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}{\protect\G@refundefinedtrue\@latex@warning{key 'id' for Deliv #1 - undefined}??}{\wpg@id\deliv@id}}% id -{\@ifundefined{deliv@dissem}{\protect\G@refundefinedtrue\@latex@warning{key 'dissem' for - Deliv #1 undefined}??}{\deliv@dissem}}% dissemination level -{\@ifundefined{deliv@nature}{\protect\G@refundefinedtrue\@latex@warning{key 'nature' for Deliv - #1 undefined}??}{\deliv@nature}}% nature +{\@ifundefined{deliv@id}{??}{\wpg@id\deliv@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 -\item[\current@label: (Month \deliv@due; nature: \deliv@nature, dissem.: \deliv@dissem)] \pdata@target{deliv}{\wpg@id\deliv@id}{\textit{#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}{\wpg@id\deliv@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 @@ -349,7 +398,7 @@ \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]{\pdataRef{mile}{#1}{label}: \pdataRef{mile}{#1}{short}} +\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}} @@ -361,41 +410,39 @@ \pdata@def{mile}\mile@id{month}{\mile@month}% \pdata@def{mile}\mile@id{verif}{\mile@verif}% \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{#1}{#2}{#3}% presentation +\@milestone{\mile@id}{#2}{#3}% presentation \else\deliv@error\fi} -\newcommand\@milestone[3]{% -\pdata@target{mile}\mile@id{\textbf{\milestone@label\themilestone}}& -\textbf{#2} & -\prop@milesfor\mile@id & -\pdataref{mile}\mile@id{month} & -\pdataref{mile}\mile@id{verif}\\\hline -\multicolumn{5}{|p{14cm}|}{#3}\\\hline\hline} -\newenvironment{milestones}{\begin{@milestones}}{\end{@milestones}} -\newenvironment{@milestones} -{\ifdelivs\begin{longtable}{|l|p{4cm}|p{5cm}|l|p{2.5cm}|}\hline -\#&\miles@legend@name&\miles@legend@involved&\miles@legend@month&\miles@legend@verif\\\hline\hline% +\newcommand\@milestone[3]{% id, title, description +\item \textbf{\miles@legend@milestone \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}% -\footnotetext\miles@legend@footnote\fi} -\newcommand\miles@legend@name{Name} -\newcommand\miles@legend@month{Mo} -\newcommand\miles@legend@verif{Means of Verif.} -\newcommand\miles@legend@involved{WPs\footnotemark/Deliverables involved} -\newcommand\miles@legend@footnote{The work package number is the first number in the deliverable number.} -\newcommand\prop@milesfor[1]{\edef\@delivs{\pdataref@safe{mile}{#1}{delivs}}% -\let\m@sep=\relax\def\new@sep{,\ }% -\@for\@I:=\@delivs\do{\m@sep\pdataRef{deliv}\@I{label}\let\m@sep=\new@sep}} -\newcommand{\deliverable}[8]{\pdataRef{deliv}{#4}{label}\\\hline}%sortkey,due,label,id,title,type,level -\newenvironment{deliverables}[1]{\ifdelivs\begin{longtable}{|l|p{#1}|l|l|l|l|}\hline -\#&\delivs@legend@name&\delivs@legend@wp&\delivs@legend@nature& -\delivs@legend@level&\delivs@legend@due\\\hline\hline\else\deliv@error\fi} {\ifdelivs\end{longtable}\fi} \newcommand\delivs@legend@name{Deliverable name} \newcommand\delivs@legend@wp{WP} -\newcommand\delivs@legend@nature{Nature} +\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}% @@ -404,30 +451,42 @@ \end{deliverables}} \newenvironment{tasklist} {\begin{compactenum}}{\end{compactenum}} -\newcommand\task@label[1]{T#1} +\newcommand\task@label[2]{\textbf{T#1.#2}} \define@key{task}{id}{\def\task@id{#1}\@dmp{id=#1}} \define@key{task}{wphases}{\def\task@wphases{#1}\pdata@def{task}{\taskin\task@id\wp@id}{wphases}{#1}\@dmp{wphases=#1}} \define@key{task}{requires}{\@requires\task@id{#1}\@dmp{req=#1}} -\define@key{task}{title}{\def\task@title{#1}\pdata@def{task}{\taskin\task@id\wp@id}{title}{#1}\@dmp{title=#1}} -\define@key{task}{lead}{\def\task@lead{#1}\pdata@def{task}{\taskin\task@id\wp@id}{lead}{#1}\@dmp{lead=#1}} -\define@key{task}{partners}{\def\task@partners{#1}\pdata@def{task}{\taskin\task@id\wp@id}{partners}{#1}\@dmp{partners=#1}} +\define@key{task}{title}{\def\task@title{#1}\pdata@def{task}{\taskin\task@id\wp@id}{title}{#1}} +\define@key{task}{lead}{\def\task@lead{#1}\pdata@def{task}{\taskin\task@id\wp@id}{lead}{#1}} +\define@key{task}{partners}{\def\task@partners{#1}\pdata@def{task}{\taskin\task@id\wp@id}{partners}{#1}} +\define@key{task}{PM}{\def\task@PM{#1}\pdata@def{task}{\taskin\task@id\wp@id}{PM}{#1}} \def\task@set#1{\edef\task@id{task\thetask@all} -\def\task@wphases{0-0}\def\task@partners{}\def\task@lead{} +\def\task@wphases{0-0}\def\task@partners{}\def\task@lead{}\def\task@PM{} \setkeys{task}{#1}} +\def\task@post@title@space{\;} \newcounter{alltasks} +\def\task@post@title@space{\quad} +\newcommand\task@legend@partners{Sites: } +\newcommand\task@legend@PM{PM} \newenvironment{task}[1][]% -{\stepcounter{alltasks} -\@task{#1}\item[\pdata@target{task}{\taskin\task@id\wp@id}{\task@label{\thetask@wp}}]% -\@ifundefined{task@title}{}{\textbf\task@title}% +{\stepcounter{alltasks}% +\@task{#1}\item[\pdata@target{task}{\taskin\task@id\wp@id}{\task@label\thewp\thetask@wp}]% +\@ifundefined{task@title}{}{\textbf\task@title}\task@post@title@space% \def\@initial{0-0}\ifx\task@wphases\@initial\else% -\ (\let\@@sep=\relax\@for\@I:=\task@wphases% -\do{\decode@wphase\@I\@@sep\show@wphase\wphase@start\wphase@end\wphase@force\let\@@sep=\sep@wphases}% -\ifx\task@lead\@empty\else; \task@legend@partners: \site\task@lead~(\legend@lead)\fi% -\ifx\task@partners\@empty\else\@for \@I:=\task@partners\do{, \site\@I}\fi)\\\fi} -{} +\let\@@sep=\relax\@for\@I:=\task@wphases% +\do{\decode@wphase\@I% +\@@sep\show@wphase\wphase@start\wphase@end\wphase@force% +\let\@@sep=\sep@wphases}% +\fi% initial +\hfill% +\ifsubmit\else\ifx\task@PM\@empty\else\task@PM~\task@legend@PM;\fi\fi% +\ifx\task@lead\@empty\else\ \task@legend@partners\site\task@lead~(\legend@lead)\fi% +\@for\@I:=\task@partners\do{, \site\@I}\\% +\ignorespaces} +{\medskip} \newcommand\month@label[1]{M#1} -\newcommand\show@wphase[3]{\def\@test{#3}\month@label{#1}-\month@label{#2}% -\ifx\@test\@empty\@ #3} +\newcommand\show@wphase[3]{\edef\@test{#3}\def\@one{1}% +\month@label{#1}-\month@label{#2}% +\ifx\@test\@empty\else\ifx\@test\@one\else @#3\fi\fi} \newcommand\sep@wphases{; } \newcommand\legend@partners{Partners} \newcommand\legend@lead{lead} @@ -437,18 +496,19 @@ \def\@task#1{\stepcounter{task@all}\stepcounter{task@wp}% \task@set{#1}% \pdata@def{task}{\taskin\task@id\wp@id}{wphases}\task@wphases -\pdata@def{task}{\taskin\task@id\wp@id}{label}{\task@label\thetask@wp}% +\pdata@def{task}{\taskin\task@id\wp@id}{label}{\task@label\thewp\thetask@wp}% \pdata@def{task}{\taskin\task@id\wp@id}{number}{\thetask@wp}% \pdata@def{task}{\taskin\task@id\wp@id}{page}{\thepage}% \update@tasks{\taskin\task@id\wp@id}} \newcommand\workphase[1]{\PackageError{proposal} {The \protect\workphase macro is deprecated,\MessageBreak use the attributes wphase on the workpackage environment instead!}} -\newcommand\localtaskref[1]{\pdataRef{task}{\wp@id @#1}{label}} \newcommand\taskin[2]{#2@#1} -\newcommand\taskref[2]{\WPref{#1}.\pdataRef{task}{#1@#2}{label}} -\newcommand\taskreflong[2]{\WPref{#1}.\pdataRef{task}{#2}{label}} -\newcommand\tasktref[2]{\WPref{#1} (\task@label@long \pdataRef{task}{#1@#2}{number})} +\newcommand\taskref[2]{\pdataRef{task}{#1@#2}{label}} +\newcommand\taskreflong[2]{\pdataRef{task}{#2}{label}} +\newcommand\tasktref[2]{\taskref{#1}{#2}: \pdataRefFB{task}{#1@#2}{short}{title}} +\newcommand\localtaskref[1]{\taskref{\wp@id}{#1}} +\newcommand\localtasktref[1]{\tasktref{\wp@id}{#1}} \newcounter{gantt@deps} \def\@requires#1#2{\stepcounter{gantt@deps}% \edef\dep@id{taskdep\thegantt@deps}% @@ -460,7 +520,8 @@ {\csname wp@#1@lead\endcsname}} \definecolorset{gray/rgb/hsb/cmyk}{}{}% {leadgray,.90/.90,.90,.90/0,0,.90/0,0,0,.10;% -wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} +wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30;% +ganttgray,.60/.60,.60,.60/0,0,.60/0,0,0,.40} \newcommand\sum@style[1]{\cellcolor{wagray}{\textbf{#1}}} \newcommand\wa@style[1]{\cellcolor{wagray}{\textbf{#1}}} \newcommand\wp@style[1]{#1} @@ -479,9 +540,11 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \define@key{wpfig}{length}[true]{\def\wpfig@length{#1}\stepcounter{wpfig@options}} \def\wpfig@end{false} \define@key{wpfig}{end}[true]{\def\wpfig@end{#1}\stepcounter{wpfig@options}} +\define@key{wpfig}{label}{\def\wpfig@label{#1}} +\define@key{wpfig}{caption}{\def\wpfig@caption{#1}} \def\@sw#1{\begin{sideways}#1\end{sideways}} -\newenvironment{wp@figure}{\begin{figure}[ht]\wpfig@style\begin{center} -{\let\@sw\relax\let\textbf\relax\let\site\relax% +\newenvironment{wp@figure}{\begin{table}[ht]\wpfig@style\begin{center} +{\let\@sw\relax\let\textbf\relax\let\site\relax\let\pn\relax\let\sys\relax% \gdef\wpfig@headline{\wpfig@legend@wap&\wpfig@legend@title% \ifx\wpfig@type\@true&\wpfig@legend@type\fi% \ifx\wpfig@pages\@true&\@sw{\wpfig@legend@page}\fi% @@ -498,13 +561,14 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \xdef\wpfig@headline{\wpfig@headline &\@sw{\wpfig@legend@RM}\if@RAM&\@sw{\wpfig@legend@RAM}\fi} \fi}%if@sites \if@RAM\begin{tabular}{|l|l|*{\thewpfig@options}{r|}*{\the@sites}{r|r|}|r|r|}\hline -\else\begin{tabular}{|l|l|*{\thewpfig@options}{r|}|*{\the@sites}{r|}|r|}\hline\fi +\else\begin{tabular}{|l|l|*{\thewpfig@options}{r|}|*{\the@sites}{r|}|r|}\hline\fi%| \wpfig@headline\\\hline\hline} {\end{tabular}\smallskip\\ \wpfig@legend@RAM@expl \if@sites; \wpfig@legend@lead@expl\fi -\caption{\wpfig@legend@caption}\label{fig:wplist} -\end{center}\end{figure}} +\@ifundefined{wpfig@label}{\caption{\wpfig@legend@caption}}{\caption{\wpfig@caption}} +\@ifundefined{wpfig@label}{\label{fig:wplist}}{\label{\wpfig@label}} +\end{center}\end{table}} \newcommand\wpfig@legend@wap{\textbf{\ifwork@areas{WA/P}\else{WP}\fi}} \newcommand\wpfig@legend@title{\textbf{Title}} \newcommand\wpfig@legend@type{\textbf{type}} @@ -682,12 +746,16 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \xdef\@totals{&\the\@@@RM\if@RAM &\the\@@@RAM\fi} \fi% if@sites \fi -\gdef\intended@totals{} +\gdef\intended@totals{}\gdef\requested@totals{} \if@sites \@for\@site:=\prop@gen@sites\do{ \xdef\intended@totals{\intended@totals&\textbf{\pdataref@safe{site}\@site{intendedRM}}} +\xdef\requested@totals{\requested@totals&\pdataref@safe{site}\@site{reqPM}} \if@RAM\xdef\intended@totals{\intended@totals&\textbf{\pdataref@safe{site}\@site{intendedRAM}}}\fi} -\if@RAM\xdef\intended@totals{\intended@totals&&}\else\xdef\intended@totals{\intended@totals&}\fi +\if@RAM\xdef\intended@totals{\intended@totals&&}\else% +\xdef\intended@totals{\intended@totals&}% +\xdef\requested@totals{\requested@totals&}% +\fi \else% if@sites \xdef\intended@totals{\intended@totals&\textbf{\pdataref@safe{all}{intended}{RM}}} \if@RAM\xdef\intended@totals{\intended@totals&\textbf{\pdataref@safe{all}{intended}{RAM}}}\fi @@ -695,38 +763,63 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \local@count\thewpfig@options\advance\local@count by 2 \begin{wp@figure} \@wp@lines\hline% -\multicolumn{\the\local@count}{|c||}{\prop@legend@totals}\@totals\\\hline% -\ifsubmit\else\multicolumn{\the\local@count}{|c||}{\prop@legend@intendedtotals}% -\intended@totals\\\hline\fi +\multicolumn{\the\local@count}{|c|}{\prop@legend@totals}\@totals\\\hline% +\ifsubmit\else% +\ifx\prop@gen@topdownPM\@true% +\multicolumn{\the\local@count}{|c|}{\prop@legend@intendedtotals}\intended@totals\\\hline% +\fi% topdownPM +\ifx\prop@gen@botupPM\@true% +\multicolumn{\the\local@count}{|c|}{\prop@legend@requestedtotals}\requested@totals\\\hline% +\fi% botupPM +\fi% submit \end{wp@figure}} \newcommand\prop@legend@totals{\textbf{totals}} \newcommand\prop@legend@intendedtotals{\textbf{intended totals}} +\newcommand\prop@legend@requestedtotals{\textbf{requested totals}} \newif\ifgantt@draft\gantt@draftfalse +\newif\ifgantt@miles\gantt@milesfalse \define@key{gantt}{xscale}{\def\gantt@xscale{#1}} \define@key{gantt}{yscale}{\def\gantt@yscale{#1}} \define@key{gantt}{step}{\def\gantt@step{#1}} \define@key{gantt}{size}{\def\gantt@size{#1}} \define@key{gantt}{draft}[true]{\ifsubmit\else\gantt@drafttrue\fi} +\define@key{gantt}{milestones}[true]{\gantt@milestrue} \def\gantt@set#1{\gantt@draftfalse\def\gantt@xscale{1}\def\gantt@yscale{.35}\def\gantt@step{3} \setkeys{gantt}{#1}} \newenvironment{gantt}[2][] -{\gantt@set{#1} +{\gantt@set{#1}\gdef\gantt@height{#2} +\def\@test{\prop@gen@months@default} +\ifx\@test\prop@gen@months +\ClassError{proposal}{Need overall project months to draw gantt + chart - expect trouble;\MessageBreak specify + \protect\begin{proposal}[...,months=??,...] to fix}\fi \@ifundefined{gantt@size}{}{\csname\gantt@size\endcsname} \newdimen\gantt@ymonths -\gantt@ymonths=#2 cm -\advance\gantt@ymonths by .5cm -\begin{tikzpicture}[xscale=\gantt@xscale,yscale=\gantt@yscale] -\draw[xstep=\gantt@step,gray,very thin] (0,0) grid (\prop@gen@months,#2); -\foreach \x in {0,\gantt@step,...,\prop@gen@months} \node at (\x,\gantt@ymonths) {\x};} -{\end{tikzpicture}} +\gantt@ymonths=\gantt@height cm +\advance\gantt@ymonths by .8cm +\begin{tikzpicture}[xscale=\gantt@xscale,yscale=\gantt@yscale]} +{\draw[xstep=\gantt@step,very thin] (0,0) grid (\prop@gen@months,\gantt@height); +\foreach \x in {0,\gantt@step,...,\prop@gen@months} \node at (\x,\gantt@ymonths) {\x}; +\ifgantt@miles +\newdimen\gantt@ymiles\gantt@ymiles=\gantt@height cm +\advance\gantt@ymiles by 2cm +\newdimen\gantt@ymiles@top\gantt@ymiles@top=\gantt@height cm +\edef\@@miles{\pdataref@safe{all}{mile}{ids}} +\@for\@I:=\@@miles\do{% +\edef\@@month{\pdataref@safe{mile}{\@I}{month}} +\draw[very thick,blue] (\@@month,\gantt@ymiles@top) -- (\@@month,0); +\node[blue] at (\@@month,\gantt@ymiles) {\pdataref{mile}{\@I}{label}};} +\fi %gantt@miles +\end{tikzpicture}} \newdimen\gantt@ymid\newdimen\gantt@yinc\newdimen\gantt@xend -\newcommand{\@action}[5]{% -\gantt@ymid=#2 cm\gantt@yinc=\gantt@yscale cm -\gantt@xend=#3 cm\advance\gantt@xend by #4 cm +\newcommand{\@action}[6][]{\def\@test{#1}% +\ifx\@test\@empty\def\@@color{ganttgray}\else\def\@@color{#1}\fi +\gantt@ymid=#3 cm\gantt@yinc=\gantt@yscale cm +\gantt@xend=#4 cm\advance\gantt@xend by #5 cm \advance\gantt@ymid by \gantt@yinc -\fill (#3,#2) rectangle +(#4,#5); -\node (#1@left) at (#3,\gantt@ymid) {}; -\node (#1@right) at (\gantt@xend,\gantt@ymid) {};} +\fill[\@@color] (#4,#3) rectangle +(#5,#6); +\node (#2@left) at (#4,\gantt@ymid) {}; +\node (#2@right) at (\gantt@xend,\gantt@ymid) {};} \def\@dependency#1#2{\draw[->,line width=2pt,color=red] (#1@right) -- (#2@left);} \newcommand\gantt@compute@effort[3]{% start, len, force \@@e=#1\advance\@@e by #2 @@ -756,7 +849,7 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \@for\@@ft:=\@@wphases\do{%task-level work phases \decode@wphase\@@ft \@action\@@task\@@line\wphase@start\wphase@len\wphase@force}}}} - \else% ifwork@ares + \else% ifwork@areas false \edef\@@wps{\pdataref@safe{all}{wp}{ids}} \@for\@@wp:=\@@wps\do{% iterate over work packages \stepcounter{taskwps} @@ -772,7 +865,7 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \@for\@@ft:=\@@wphases\do{%iterate over the task-level work phases \decode@wphase\@@ft \@action\@@task\@@line\wphase@start\wphase@len\wphase@force}}} - \fi% ifwork@areas + \fi% ifwork@areas end \edef\@@deps{\pdataref@safe{all}{task}{deps}} \@for\@@dep:=\@@deps\do{% \@dependency{\pdataref@safe{taskdep}\@@dep{from}}{\pdataref@safe{taskdep}\@@dep{to}}} @@ -796,7 +889,7 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \@for\@@ft:=\@@wphases\do{%iterate over the wp-level work phases \decode@wphase\@@ft \gantt@compute@effort\wphase@start\wphase@len\wphase@force}}}} - \fill (\thegantt@month,-5) rectangle +(1,\gantt@effort); + \fill[ganttgray] (\thegantt@month,-5) rectangle +(1,\gantt@effort); \else% ifwork@areas \edef\@@wps{\pdataref@safe{all}{wp}{ids}} \@for\@@wp:=\@@wps\do{% iterate over work packages @@ -810,77 +903,95 @@ wagray,.70/.70,.70,.70/0,0,.70/0,0,0,.30} \@for\@@ft:=\@@wphases\do{%iterate over the wp-level work phases \decode@wphase\@@ft \gantt@compute@effort\wphase@start\wphase@len\wphase@force}}} - \fill (\thegantt@month,-5) rectangle +(1,\gantt@effort); + \fill[ganttgray] (\thegantt@month,-5) rectangle +(1,\gantt@effort); \fi% ifwork@areas \stepcounter{gantt@month}} \fi% ifgantt@draft \end{gantt} \caption{\gantt@caption}\label{fig:gantt} -\end{figure}} -\newcommand\gantt@caption@main{Overview Work Package Activities} +\end{figure}\footnotetext\gantt@footnote} +\newcommand\gantt@caption@main{Gantt Chart: Overview Work Package Activities} \newcommand\gantt@caption@lower{lower bar shows the overall effort \if@RAM (RAM only)\fi per month} -\newcommand\gantt@caption{\gantt@caption@main\ifgantt@draft\xspace (\gantt@caption@lower)\fi} -\newcommand{\gantttaskchart}[1][]{\begin{figure}[ht]\centering\gantt@set{#1} -\def\gantt@tasks{\pdataref@num{all}{task}{count}} -\begin{gantt}[#1]{\gantt@tasks} +\newcommand\gantt@caption{\gantt@caption@main\ifgantt@draft\xspace + (\gantt@caption@lower)\fi} +\newcommand\gantt@footnote{Bars shown at reduced height (e.g. 50\%) indicate reduced + intensity during that work phase (e.g. to 50\%).} +\newcommand{\gantttaskchart}[1][]{\begin{figure}[hbtp]\centering\gantt@set{#1} +\newcounter{gantt@all@tasks}% +\setcounter{gantt@all@tasks}{\pdataref@num{all}{task}{count}} +\addtocounter{gantt@all@tasks}{\pdataref@num{all}{wp}{count}} +\begin{gantt}[#1]{\thegantt@all@tasks} \newcounter{gantt@tasks}\newcount\@@line \edef\@@wps{\pdataref@safe{all}{wp}{ids}} \@for\@@wp:=\@@wps\do{% iterate over work packages + \stepcounter{gantt@tasks} \edef\@@tasks{\pdataref@safe\@@wp{task}{ids}} \@for\@@task:=\@@tasks\do{% iterate over the tasks \stepcounter{gantt@tasks} - \@@line=\gantt@tasks\advance\@@line by -\thegantt@tasks - \node at (-1/\gantt@xscale,\@@line) [above=-2pt] {\taskreflong\@@wp\@@task}; + \@@line=\thegantt@all@tasks\advance\@@line by -\thegantt@tasks + \node at (-.5/\gantt@xscale,\@@line) [above=-2pt] {{\footnotesize\taskreflong\@@wp\@@task}}; \edef\@@wphases{\pdataref@safe{task}\@@task{wphases}} \@for\@@ft:=\@@wphases\do{%iterate over the task-level work phases \decode@wphase\@@ft \@action\@@task\@@line\wphase@start\wphase@len\wphase@force }}}% end all iterations \end{gantt} - \caption{\gantt@caption@main}\label{fig:gantt} + \caption{\gantt@caption@main{} -- \emph{\gantt@footnote}}\label{fig:gantt} \end{figure}} -\newcommand\jpub{\textcolor{\prop@link@color}{\textbf{\large{$\star$}}}} -\newcommand\jpro{\textcolor{\prop@link@color}{\textbf{\large{$\bullet$}}}} -\newcommand\jorga{\textcolor{\prop@link@color}{\textbf{\large{$\circ$}}}} +\newcommand\jpub{\textcolor{\prop@link@color}{\textbf{\Large{$\star$}}}} +\newcommand\jpro{\textcolor{\prop@link@color}{\textbf{\Large{$\bullet$}}}} +\newcommand\jsoft{\textcolor{\prop@link@color}{\textbf{@}}} +\newcommand\jorga{\textcolor{\prop@link@color}{\textbf{\Large{$\circ$}}}} +\newcommand\jsup{\textcolor{\prop@link@color}{\textbf{\smiley}}} \newcommand\add@joint[3]{\@ifundefined{coherence@#1@#2}% {\@namedef{coherence@#1@#2}{#3}}% {\expandafter\g@addto@macro\csname coherence@#1@#2\endcsname{#3}}} \newcommand\prop@joint[2]{\@for\@first:=#2\do{% \@for\@second:=#2\do{\ifx\@first\@second\else\add@joint\@first\@second{#1}\fi}}} \newcommand\jointproj[1]{\prop@joint\jpro{#1}} -\newcommand\jointpub[1]{\prop@joint\jpro{#1}} +\newcommand\jointpub[1]{\prop@joint\jpub{#1}} \newcommand\jointorga[1]{\prop@joint\jorga{#1}} +\newcommand\jointsoft[1]{\prop@joint\jsoft{#1}} +\newcommand\jointsup[1]{\prop@joint\jsup{#1}} \newcommand{\coherencematrix}{ {\let\tabularnewline\relax\let\hline\relax\let\site\relax% so they do - \let\@sw\relax\let\jpub\relax\let\jpro\relax\let\jorga\relax% not bother us -\gdef\@ct@head{} -\@for\@site:=\prop@gen@sites\do{\xdef\@ct@head{\@ct@head &\site{\@site}}} + \let\@sw\relax\let\jpub\relax\let\jpro\relax\let\jorga\relax% not bother + \let\jsoft\relax\let\jsup\relax\let\cellcolor\relax% us +\gdef\@ct@head{}% +\@for\@site:=\prop@gen@sites\do{\xdef\@ct@head{\@ct@head% +&\ifx\cht@swsites\@true\@sw{\site{\@site}}\else\site{\@site}\fi}}% \gdef\@ct@lines{\@ct@head\tabularnewline\hline\hline} %initialize with head line -\@for\@site:=\prop@gen@sites\do{\xdef\@ct@line{\site{\@site}} - \@for\@@site:=\prop@gen@sites\do{ - \xdef\@ct@line{\@ct@line&\ifx\@site\@@site{X}\fi - \@ifundefined{coherence@\@site @\@@site}{}{\@nameuse{coherence@\@site @\@@site}}}} - \xdef\@ct@lines{\@ct@lines\@ct@line\tabularnewline\hline}}} -\begin{tabular}{|l||*{\the@site}{c|}}\hline -\@ct@lines\hline +\@for\@site:=\prop@gen@sites\do{\xdef\@ct@line{\site{\@site}}% + \@for\@@site:=\prop@gen@sites\do{% + \xdef\@ct@line{\@ct@line&\ifx\@site\@@site{\cellcolor{wagray}{}}\fi% + \@ifundefined{coherence@\@site @\@@site}{}{\@nameuse{coherence@\@site @\@@site}}}}% + \xdef\@ct@lines{\@ct@lines\@ct@line\tabularnewline\hline}}}% +\begin{tabular}{|l||*{\the@site}{c|}}\hline% +\@ct@lines\hline% joint&\multicolumn{\the@site}{l|}{\jpub $\hat=$ publication, \jpro $\hat=$ project, - \jorga $\hat=$ organization}\\\hline + \jorga $\hat=$ organization, \jsoft $\hat=$ software/resource dev, + \jsup $\hat=$ supervision}\\\hline \end{tabular}} -\newcommand\coherencetable{% -\begin{table}[ht] -\begin{center}\small\setlength{\tabcolsep}{.5em} -\renewcommand{\arraystretch}{.9}\coherencematrix -\end{center} +\define@key{coherencetable}{swsites}[true]{\def\cht@swsites{#1}} +\define@key{coherencetable}{stretch}{\def\cht@stretch{#1}} +\newcommand\coherencetable[1][]{% +\def\cht@swsites{false}% +\def\cht@stretch{1}% +\setkeys{coherencetable}{#1}% +\begin{table}[ht]\centering% +\small\setlength{\tabcolsep}{.5em}% +\renewcommand{\arraystretch}{\cht@stretch}% +\coherencematrix% \caption{\coherence@caption}\label{tab:collaboration} \end{table}} \newcommand\coherence@caption{Previous Collaboration between {\pn} members} \defbibheading{empty}{} \newif\if@allpapers\@allpaperstrue \newcommand\prop@ppl[3][]{\@allpapersfalse\message{ppl processing: #2}% -\printbibliography[heading=subbibliography,maxnames=999,type=#2,title=#3#1]% +\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,maxnames=999,title=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}} @@ -890,15 +1001,16 @@ joint&\multicolumn{\the@site}{l|}{\jpub $\hat=$ publication, \jpro $\hat=$ proje \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][]{% \begin{refsection}% -\nocite{#2}% +\nocite{#2}\addtocategory{featured}{#2}% \let\biboldfont\bibfont% \renewcommand{\bibfont}{\footnotesize}% \renewcommand{\baselinestretch}{.9} \setkeys{paperlist}{#1} \@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}} -\if@allpapers\printbibliography[heading=empty,maxnames=999]\fi% +\if@allpapers\printbibliography[heading=empty]\fi% \let\bibfont\biboldfont% \end{refsection}} \def\prop@warnpubs@message{Many of the proposers' publications are online at one of the following URIs:} diff --git a/Master/texmf-dist/tex/latex/proposal/base/reporting.cls b/Master/texmf-dist/tex/latex/proposal/base/reporting.cls index 936238b2633..4ba4de475b8 100644 --- a/Master/texmf-dist/tex/latex/proposal/base/reporting.cls +++ b/Master/texmf-dist/tex/latex/proposal/base/reporting.cls @@ -7,17 +7,23 @@ %% proposal.dtx (with options: `reporting') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{reporting}[2013/02/13 v1.4 Project Reporting] +\ProvidesPackage{reporting}[2015/11/22 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} @@ -28,6 +34,7 @@ \ProcessOptions \LoadClass[a4paper,twoside]{\proposal@class} \RequirePackage{amssymb} +\RequirePackage{wasysym} \RequirePackage{url} \RequirePackage{graphicx} \RequirePackage{colortbl} @@ -40,13 +47,13 @@ \AtBeginDocument{\ifpublic\excludecomment{private}\fi} \RequirePackage{tikz} \RequirePackage{paralist} -\RequirePackage{a4wide} +\RequirePackage[a4paper,margin=18mm]{geometry} \RequirePackage{boxedminipage} \renewcommand{\thempfootnote}{\roman{mpfootnote}} \renewcommand{\familydefault}{\sfdefault} \RequirePackage[scaled=.90]{helvet} \RequirePackage{textcomp} -\RequirePackage[hyperref=auto,style=numeric,defernumbers=true,backend=bibtex]{biblatex}[2010/11-19] +\RequirePackage[hyperref=auto,style=numeric,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19] \RequirePackage{csquotes} \RequirePackage{mdframed} \RequirePackage{pdata} @@ -57,18 +64,32 @@ breaklinks=true, bookmarksopen=true]{hyperref} \ifsubmit \RequirePackage[hide]{ed} -\RequirePackage[final,today]{svninfo} +\if@svninfo\RequirePackage[final,today]{svninfo}\fi \else \RequirePackage[show]{ed} -\RequirePackage[eso-foot,today]{svninfo} +\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][]% @@ -81,7 +102,7 @@ \begin{prop@report}} {\end{prop@report}% \pdata@def{prop}{page}{last}{\thepage}\ofpagefalse\newpage -\printbibliography[heading=warnpubs,maxnames=999] +\printbibliography[heading=warnpubs] \pdata@close} \newenvironment{prop@report} {\begin{center} @@ -99,10 +120,10 @@ \defbibheading{empty}{} \newif\if@allpapers\@allpaperstrue \newcommand\prop@ppl[3][]{\@allpapersfalse\message{ppl processing: #2}% -\printbibliography[heading=subbibliography,maxnames=999,type=#2,title=#3#1]% +\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,maxnames=999,title=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}} @@ -112,15 +133,16 @@ \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][]{% \begin{refsection}% -\nocite{#2}% +\nocite{#2}\addtocategory{featured}{#2}% \let\biboldfont\bibfont% \renewcommand{\bibfont}{\footnotesize}% \renewcommand{\baselinestretch}{.9} \setkeys{paperlist}{#1} \@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}} -\if@allpapers\printbibliography[heading=empty,maxnames=999]\fi% +\if@allpapers\printbibliography[heading=empty]\fi% \let\bibfont\biboldfont% \end{refsection}} \def\prop@warnpubs@message{Many of the proposers' publications are online at one of the following URIs:} -- cgit v1.2.3