diff options
Diffstat (limited to 'Master')
41 files changed, 1403 insertions, 112 deletions
diff --git a/Master/texmf-dist/doc/latex/proposal/README.md b/Master/texmf-dist/doc/latex/proposal/README.md deleted file mode 100644 index 3fa7664c442..00000000000 --- a/Master/texmf-dist/doc/latex/proposal/README.md +++ /dev/null @@ -1,24 +0,0 @@ -LaTeX-proposal -============== -proposal.cls: A set of LaTeX classes for preparing proposals for collaborative projects - -The base proposal class supports many of the general elemenst of project proposals. It is -optimized towards collaborate projects. This class is intended to be specialized to -particular funding bodies that have their own styles. - -MANIFEST: -base: the base proposal class -dfg: the instance for Deutsche Forschungsgemeinschaft -eu: the instance for EU proposals -etc: style files from the sTeX bundle added for convenience - (only on GitHub, not on CTAN) -lib: Makefiles for the management of self-documenting packages -bin: A script that makes GitHub issues from the deliverables of a - proposal for project managment if the proposal is granted. - -Copyright(c) 2010 Michael Kohlhase -The package is distributed under the terms of the LaTeX Project Public License (LPPL) - -The development version of this package can be found at -https://github.com/KWARC/LaTeX-proposal -This also contains examples and Makefiles that help the proposal writing process. diff --git a/Master/texmf-dist/doc/latex/proposal/base/proposal.pdf b/Master/texmf-dist/doc/latex/proposal/base/proposal.pdf Binary files differdeleted file mode 100644 index 2c003129237..00000000000 --- a/Master/texmf-dist/doc/latex/proposal/base/proposal.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/dfgproposal.pdf b/Master/texmf-dist/doc/latex/proposal/dfg/dfgproposal.pdf Binary files differindex fe2aee6b1f3..2b718ba8537 100644 --- a/Master/texmf-dist/doc/latex/proposal/dfg/dfgproposal.pdf +++ b/Master/texmf-dist/doc/latex/proposal/dfg/dfgproposal.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/funds.tex b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/funds.tex index 93faf326acf..fa6ba1619c8 100644 --- a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/funds.tex +++ b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/funds.tex @@ -65,7 +65,7 @@ an average duration of 3 weeks, we estimate the cost of one visit at 600 {\texte traveling and 70 {\texteuro} per night for accommodation, amounting to 2040 \texteuro per visit. -\subsubsubsection{-- 4.1.2.6, 4.1.3 (Expenses for Laboratory Animals / Other Costs +\subsubsection*{-- 4.1.2.6, 4.1.3 (Expenses for Laboratory Animals / Other Costs / Project Related Publication Expenses / Instrumentation) \sf\qquad n/a} % \subsubsection{Expenses for Laboratory Animals} None. diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/proposal.pdf b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/proposal.pdf Binary files differnew file mode 100644 index 00000000000..7144892c40d --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/proposal.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/proposal.tex b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/proposal.tex index e586fc2461c..6feedb55130 100644 --- a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/proposal.tex +++ b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/proposal.tex @@ -79,7 +79,6 @@ of publications. Non-published works must be included with the proposal. Funding proposal XYZ-83282 has been submitted prior to this proposal on related topic XYZ. \end{proposal} - \end{document} %%% Local Variables: diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/public.pdf b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/public.pdf Binary files differindex 2c9e43abdba..3d49aea6873 100644 --- a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/public.pdf +++ b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/public.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.pdf b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.pdf Binary files differindex 9fee2535279..df7b10b70d3 100644 --- a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.pdf +++ b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.tex b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.tex index 5d92f9374de..3f1c60607c2 100644 --- a/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.tex +++ b/Master/texmf-dist/doc/latex/proposal/dfg/proposal/submit.tex @@ -1,4 +1,4 @@ -\newcommand{\classoptions}{submit} +\newcommand{\classoptions}{,submit} \input{proposal} %%% Local Variables: diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/Makefile b/Master/texmf-dist/doc/latex/proposal/dfg/report/Makefile new file mode 100644 index 00000000000..3408045db02 --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/Makefile @@ -0,0 +1,67 @@ +# possibly customize the following variables to your setting +REPORT = finalreport.tex # the report +BIB = ../lib/dummy.bib # bibTeX databases +PROP.dir = ../../.. +########################################################################### +# the following are computed +#CVP = $(shell ls CV_PubList*.tex) # CVs of the proposers +#TSIMP = letter_submission.tex # pdflatex Targets without bibTeX +#TSIMP.pdf = $(TSIMP:%.tex=%.pdf) # PDFs to be produced +TBIB = $(REPORT) #$(CVP) # pdflatex Targets with bibTeX +TARGET = $(TSIMP) $(TBIB) # all pdflatex targets +TBIB.pdf = $(TBIB:%.tex=%.pdf) # PDFs to be produced +TBIB.aux = $(TBIB:%.tex=%.aux) # their aux files. +PDATA = $(REPORT:%.tex=%.pdata) # the proposal project data +SRC = $(filter-out $(TARGET),$(shell ls *.tex)) # included files +PDFLATEX = pdflatex -interaction batchmode -file-line-error +BBL = $(REPORT:%.tex=%.bbl) $(REPORT:%.tex=%1-blx.bbl) $(REPORT:%.tex=%2-blx.bbl) #$(CVP:%.tex=%.bbl) +PROPCLS.dir = $(PROP.dir)/base +PROPETC.dir = $(PROP.dir)/etc +DFGPROPCLS.dir = $(PROP.dir)/dfg +TEXINPUTS := .//:$(PROPCLS.dir)//:$(DFGPROPCLS.dir)//:$(PROPETC.dir)//: +BIBINPUTS := ../lib:$(BIBINPUTS) +PROPCLS.clssty = reporting.cls pdata.sty +PROPETC.sty = workaddress.sty metakeys.sty sref.sty +DFGPROPCLS.clssty = dfgreporting.cls dfgpdata.sty +PROPCLS = $(PROPCLS.clssty:%=$(PROPCLS.dir)/%) $(DFGPROPCLS.clssty:%=$(DFGPROPCLS.dir)/%) $(PROPETC.sty:%=$(PROPETC.dir)/%) + +all: $(TBIB.pdf) $(TSIMP.pdf) + +cd: # make cd will prepare CD for burning + mkdir CD;make $(TARGET.pdf); cp $(TARGET.pdf) CD + +$(BBL): %.bbl: %.aux + bibtex -min-crossrefs=100 -terse $< + +$(TSIMP.pdf): %.pdf: %.tex $(PROPCLS) $(PDATA) + $(PDFLATEX) $< || $(RM) $@ + +$(PDATA): %.pdata: %.tex + $(PDFLATEX) $< + +$(TBIB.aux): %.aux: %.tex + $(PDFLATEX) $< + +$(TBIB.pdf): %.pdf: %.tex $(SRC) $(BIB) $(PROPCLS) + $(PDFLATEX) $< || $(RM) $@ +# sort $(REPORT:%.tex=%.delivs) > $(REPORT:%.tex=%.deliverables) + @if (test -e $(patsubst %.tex, %.idx, $<));\ + then makeindex $(patsubst %.tex, %.idx, $<); fi + $(MAKE) -$(MAKEFLAGS) $(BBL) + @if (grep "(re)run BibTeX" $(patsubst %.tex, %.log, $<)> /dev/null);\ + then $(MAKE) -B $(BBL); fi + $(PDFLATEX) $< || $(RM) $@ + @if (grep Rerun $(patsubst %.tex, %.log, $<) > /dev/null);\ + then $(PDFLATEX) $< || $(RM) $@; fi + @if (grep Rerun $(patsubst %.tex, %.log, $<) > /dev/null);\ + then $(PDFLATEX) $< || $(RM) $@; fi + +clean: + rm -f *.log *.blg *~ *.synctex.gz *.cut + +distclean: clean + rm -f *.aux *.out *.run.xml *.bbl *.toc *.deliv* *.pdata + rm -Rf auto + +echo: + echo $(BIBINPUTS) diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/README b/Master/texmf-dist/doc/latex/proposal/dfg/report/README new file mode 100644 index 00000000000..dabc084504d --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/README @@ -0,0 +1,22 @@ +An Exapmle for dfgproposal.cls + +proposal.tex is a fake DFG proposal that shows all elements of + dfgproposal.cls in action. +finalreport.tex does the same for dfgreporting.cls +CV_PubList_Kohlhase.tex is an example of the CV and publication lists required + by the DFG +letter_submission.tex is an example submission letter. +*.tex the rest are intemediate files +doc contains the DFG documentation how to write proposals and + final reports: These documents are not subject to the + package's license but (c) DFG. They are bundled for your + convenience; up-to-date versions may be found at http://www.dfg.de. +Makefile allows the automation via a unix Makefile on the author's + machine, adapt it to your needs + +Copyright(c) 2010 Michael Kohlhase +The package is distributed under the terms of the LaTeX Project Public License (LPPL) + +The development version of this package can be found at +https://svn.kwarc.info/repos/kwarc/doc/macros/forCTAN/dfgproposal/ex + diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/finalreport.pdf b/Master/texmf-dist/doc/latex/proposal/dfg/report/finalreport.pdf Binary files differnew file mode 100644 index 00000000000..4ae10d47a19 --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/finalreport.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/finalreport.tex b/Master/texmf-dist/doc/latex/proposal/dfg/report/finalreport.tex new file mode 100644 index 00000000000..e09637ef354 --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/finalreport.tex @@ -0,0 +1,52 @@ +% the document class specification for the proposal writing process, add the 'submit' option +% for submitting (switches off various draft features); add the 'public' option to exclude +% any private parts. +\documentclass[gitinfo]{dfgreporting} +%\documentclass[submit]{dfgproposal} +%\documentclass[submit,public]{dfgproposal} +\addbibresource{../lib/dummy.bib} +% define the proposal acronym; +% use \texorpdfstring so that it can be used in section headings as well +% tell the class that this is the proposal acronym +\input{WApersons} +\begin{document} +\providecommand\ifprefchar[2]{}% fix biblatex + +\begin{center}\color{red}\huge + This mock proposal is just an example for \texttt{dfgreporting.cls} it reflects the + template valid until January 2012 (have to update soon) +\end{center} + +\begin{report}[importfrom=../proposal/proposal, + PI=miko,PI=gc,site=jacu,site=pcg, + key = KO 2428 99-9, + key = GS 4711 99-9, + thema=Intelligentes Schreiben von Antr\"agen, + reportperiod=1. Feb. 2010 - 31. Jan. 2012, + % jacuemployed=Junior Researcher: 1. Feb 2010 - 31. Jan 2012, + % pcgemployed=Slave Worker: 1. Feb 2010 - 31. Dec 2010, + % pcgemployed=Lazy Bones: 1.Jan 2011 - 31. Jan 2012, + applareas={Knowledge Management, Document Management, Workflow Systems}, + % coop={Acquisition Guru, Berlin, Germany}, + % coop={Deutsche Forschnungsgemeinschaft, Bonn, Germany}, + projpapers={Kohlhase:pdpl10,providemore}] + +\include{progressreport} +\include{progresssummary} +\dfgprojpapers[articles,confpapers,wspapers]{Kohlhase:pdpl10,providemore,KohDavGin:psewads11,Lange:OpenMathCDLinkedData10} +\end{report} +\end{document} + +%%% Local Variables: +%%% mode: LaTeX +%%% TeX-master: t +%%% End: + +% LocalWords: empty bibflorian systems rabe institutions modal historical pub +% LocalWords: kwarc till formalsafe miko gc ipower ipowerlong Antr agen Beitr + +% LocalWords: acrolong intellegible kollaboratives koh arenten ussen Proze +% LocalWords: Versionsmanagementsystem textsc unterst utzt konzentieren stex +% LocalWords: mechanik workplan thispagestyle newpage Principcal cvpubsmiko +% LocalWords: finalreport fundedperiod reportperiod progressreport +% LocalWords: progresssummary diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/letter_submission.pdf b/Master/texmf-dist/doc/latex/proposal/dfg/report/letter_submission.pdf Binary files differnew file mode 100644 index 00000000000..d56697a35ba --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/letter_submission.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/letter_submission.tex b/Master/texmf-dist/doc/latex/proposal/dfg/report/letter_submission.tex new file mode 100644 index 00000000000..3660eb09546 --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/letter_submission.tex @@ -0,0 +1,33 @@ +\documentclass{dinbrief} +\usepackage{ngerman} +\signature{Dr. Michael Kohlhase\hspace*{5cm} Dr. Great Communicator} +\usepackage{pdata}\readpdata{proposal} +\begin{document} + +\begin{letter}{Frau ?????\\ +Deutsche Forschungsgemeinschaft\\ +52170 Bonn} + +\subject{Antrag auf Sachbeihilfe} +\opening{Sehr geehrte Frau ?????} + +anbei senden wir Ihnen unseren Antrag auf Sachbeihilfe f"ur das Projekt "`\pn"' +(\pnlong) zu. Die elektronische Version des Antrags inklusive der Anlagen sowie Kopien +der eigenen Publikationen haben wir diesem Schreiben als CD beigef"ugt. Diese beinhaltet +die folgenden Dateien: +\begin{center} + \begin{tabular}{lp{8cm}} + \texttt{Antrag.pdf} & der Antrag\\ + \texttt{CV\_Publist\_Kohlhase.pdf} & Lebenslauf Michael Kohlhase\\ + \texttt{CV\_Publist\_Communicator.pdf} & Lebenslauf Great Communicator\\ + Publikationen & Ordner mit den im Antrag bzw. in den Lebensl"aufen angegebenen +eigenen Veröffentlichungen Das projektbezogene Publikationsverzeichnis befindet sich im +Antrag unter Abschnitt 2.2. +\end{tabular} +\end{center} + +\closing{Mit freundlichen Gr"u"sen,} +\end{letter} +\end{document} + +% LocalWords: texttt Publist Schr diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/progressreport.tex b/Master/texmf-dist/doc/latex/proposal/dfg/report/progressreport.tex new file mode 100644 index 00000000000..a14f0136099 --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/progressreport.tex @@ -0,0 +1,28 @@ +\section{Final Progress Report\deu{Arbeits- \& Ergebnisbericht}} +\begin{todo}{from the report template} +This is what the reviewers read (maximum 10 pages of A4) + \begin{itemize} + \item Project’s initial questions and objectives. + \item Project developments --- including deviations from the original plan, failures, + and problems encountered with project organisation or technical execution. + \item Presentation of results and discussion of the relevant research situation in this + context, potential perspectives for application, and conceivable follow-up research. + \item Statement on whether the results of the project are economically valuable and whether exploitation is already taking place or may be anticipated; if applicable, details regarding patents, industrial joint ventures, etc. + \item Who has contributed to the results achieved by the project (national/international partners, project staff, etc.)? + \item Qualification of young researchers in the context of your project (for example, first degree, doctorate, post-doctorate, etc.). + \end{itemize} + The report must be understandable without the need to consult additional literature. To + illustrate and enhance your presentation you may refer to your own and others’ + publications. Make it clear whenever you are referring to other researchers’ work and + explain your own papers. Please list all cited publications at the end of the + section. This reference list is not considered your list of publications. Any + unpublished work must be included with the final report. However, note that reviewers + are not required to read any of the works you cite. Reviews will be based only on the + text of the actual report. +\end{todo} +%%% Local Variables: +%%% mode: LaTeX +%%% TeX-master: "finalreport" +%%% End: + +% LocalWords: finalreport progressreport.tex diff --git a/Master/texmf-dist/doc/latex/proposal/dfg/report/progresssummary.tex b/Master/texmf-dist/doc/latex/proposal/dfg/report/progresssummary.tex new file mode 100644 index 00000000000..c2722923d88 --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/dfg/report/progresssummary.tex @@ -0,0 +1,18 @@ +\section{Final Progress Report\deu{Arbeits- \& Ergebnisbericht}} +\begin{todo}{from the report template} + This is for the DFG web site and report, made available to the general public (maximum 1 page of A4) + \begin{itemize} + \item Presentation, in clearly understandable, everyday language of the key scientific + findings and any potential applications. + \item Any surprises encountered in the course of the project and in the results + obtained. + \item Reference to any articles published in the media reporting the success of the + project.Project’s initial questions and objectives. + \end{itemize} +\end{todo} +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "finalreport" +%%% End: + +% LocalWords: finalreport diff --git a/Master/texmf-dist/doc/latex/proposal/eu/euproposal.pdf b/Master/texmf-dist/doc/latex/proposal/eu/euproposal.pdf Binary files differindex 4d93696e632..8d3cd256f04 100644 --- a/Master/texmf-dist/doc/latex/proposal/eu/euproposal.pdf +++ b/Master/texmf-dist/doc/latex/proposal/eu/euproposal.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/eu/strep/propB.pdf b/Master/texmf-dist/doc/latex/proposal/eu/strep/propB.pdf Binary files differnew file mode 100644 index 00000000000..1c5eebf5f15 --- /dev/null +++ b/Master/texmf-dist/doc/latex/proposal/eu/strep/propB.pdf diff --git a/Master/texmf-dist/doc/latex/proposal/eu/strep/propB.tex b/Master/texmf-dist/doc/latex/proposal/eu/strep/propB.tex index 986826c9433..13afd61a7df 100644 --- a/Master/texmf-dist/doc/latex/proposal/eu/strep/propB.tex +++ b/Master/texmf-dist/doc/latex/proposal/eu/strep/propB.tex @@ -4,8 +4,8 @@ % - public.tex (like submit.tex, but no financials either) \providecommand{\classoptions}{,keys} % to be overwritten in variants \documentclass[noworkareas,deliverables,gitinfo,propB\classoptions]{euproposal} -%\usepackage[T1]{fontenc} -%\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} \addbibresource{../lib/dummy} \input{../lib/WApersons}% Some sections of the included files depend on this. diff --git a/Master/texmf-dist/source/latex/proposal/base/proposal.dtx b/Master/texmf-dist/source/latex/proposal/base/proposal.dtx index d58fadbca23..733f51aa51f 100644 --- a/Master/texmf-dist/source/latex/proposal/base/proposal.dtx +++ b/Master/texmf-dist/source/latex/proposal/base/proposal.dtx @@ -13,9 +13,9 @@ % % \iffalse %<cls|pdata|reporting>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<cls>\ProvidesClass{proposal}[2015/11/22 v1.5 Project Proposal] -%<pdata>\ProvidesPackage{pdata}[2015/11/22 v1.5 Project Data] -%<reporting>\ProvidesPackage{reporting}[2015/11/22 v1.5 Project Reporting] +%<cls>\ProvidesClass{proposal}[2016/04/15 v1.5 Project Proposal] +%<pdata>\ProvidesPackage{pdata}[2016/04/15 v1.5 Project Data] +%<reporting>\ProvidesPackage{reporting}[2016/04/15 v1.5 Project Reporting] %<*driver> \documentclass{ltxdoc} \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global} @@ -28,8 +28,8 @@ \RecordChanges \usepackage{textcomp,url,paralist,a4wide,xspace} \usepackage[show]{ed} -\usepackage[maxbibnames=6,hyperref=auto,style=alphabetic]{biblatex} -\bibliography{kwarc} +\usepackage[maxbibnames=6,hyperref=auto,style=alphabetic,backend=bibtex]{biblatex} +\addbibresource{../lib/proposal.bib} \usepackage[bookmarks=true,linkcolor=blue, citecolor=blue,urlcolor=blue,colorlinks=true, breaklinks=true, bookmarksopen=true]{hyperref} @@ -610,7 +610,7 @@ \renewcommand{\familydefault}{\sfdefault} \RequirePackage[scaled=.90]{helvet} \RequirePackage{textcomp} -\RequirePackage[hyperref=auto,style=numeric,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19] +\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} @@ -699,9 +699,9 @@ \stepcounter{@site}\pdata@def{site}{#1}{number}{\the@site}% \@ifundefined{prop@gen@sites}{\xdef\prop@gen@sites{#1}}{\xdef\prop@gen@sites{\prop@gen@sites,#1}}% \define@key{prop@gen}{#1RM}{\pdata@def{site}{#1}{intendedRM}{##1}}% -\if@RAM\define@key{prop@gen}{#1RAM}{\pdata@def{site}{#1}{intendedRAM}{##1}}\fi +\define@key{prop@gen}{#1RAM}{\pdata@def{site}{#1}{intendedRAM}{##1}} \define@key{workpackage}{#1RM}{\pdata@def\wp@id{#1}{RM}{##1}}% -\if@RAM\define@key{workpackage}{#1RAM}{\pdata@def\wp@id{#1}{RAM}{##1}}\fi +\define@key{workpackage}{#1RAM}{\pdata@def\wp@id{#1}{RAM}{##1}} \define@key{prop@gen}{#1employed}{{\let\tabularnewline\relax\let\hline\relax\let\wa@ref\relax% \@ifundefined{prop@gen@employed@lines}% {\xdef\prop@gen@employed@lines{\wa@ref{institution}{#1}{shortname} & ##1\tabularnewline\hline}}% @@ -828,8 +828,8 @@ \begin{itemize} \@for\@I:=\prop@gen@PIs\do{% \item Curriculum Vitae and list of publications for - \wa@ref{person}\@I{personaltitle} \wa@ref{person}\@I{name} -\end{itemize}}\newpage + \wa@ref{person}\@I{personaltitle} \wa@ref{person}\@I{name}} +\end{itemize}\newpage \printbibliography[heading=warnpubs]} % \end{macrocode} % \end{environment} @@ -848,7 +848,7 @@ \pdata@open\jobname \if@sites\else \define@key{workpackage}{RM}{\pdata@def{wp}\wp@id{RM}{##1}\@dmp{RM=##1}} -\if@RAM\define@key{workpackage}{RAM}{\pdata@def{wp}\wp@id{RAM}{##1}\@dmp{RAM=##1}}\fi +\define@key{workpackage}{RAM}{\pdata@def{wp}\wp@id{RAM}{##1}\@dmp{RAM=##1}} \fi \newcounter{@PIs} \@ifundefined{prop@gen@PIs}{}{\@for\@I:=\prop@gen@PIs\do{\stepcounter{@PIs}}} @@ -1817,8 +1817,7 @@ ganttgray,.60/.60,.60,.60/0,0,.60/0,0,0,.40} \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 +\wpfig@legend@RAM@expl\if@sites; \wpfig@legend@lead@expl\fi \@ifundefined{wpfig@label}{\caption{\wpfig@legend@caption}}{\caption{\wpfig@caption}} \@ifundefined{wpfig@label}{\label{fig:wplist}}{\label{\wpfig@label}} \end{center}\end{table}} @@ -2445,16 +2444,14 @@ joint&\multicolumn{\the@site}{l|}{\jpub $\hat=$ publication, \jpro $\hat=$ proje % with the empty header we created before. % \begin{macrocode} \newcommand\prop@paperlist[2][]{% -\begin{refsection}% -\nocite{#2}\addtocategory{featured}{#2}% \let\biboldfont\bibfont% \renewcommand{\bibfont}{\footnotesize}% \renewcommand{\baselinestretch}{.9} +\def\do##1{\addtocategory{featured}{##1}}\docsvlist{#2}% \setkeys{paperlist}{#1} \@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}} -\if@allpapers\printbibliography[heading=empty]\fi% -\let\bibfont\biboldfont% -\end{refsection}} +\if@allpapers\printbibliography[category=featured,heading=empty]\fi% +\let\bibfont\biboldfont} % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/proposal/bin/Modparse.pm b/Master/texmf-dist/source/latex/proposal/bin/Modparse.pm new file mode 100644 index 00000000000..2fd732b063d --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/bin/Modparse.pm @@ -0,0 +1,189 @@ +####################################################################################### +# A module for loading .tex files and feeding the data to the various applications. # +# Copyright (c) 2005, Ioan Sucan, released under the Gnu General Public License (GPL) # +# see http://www.gnu.org/copyleft/gpl.html # +# $URL: svn://kwarc.eecs.iu-bremen.de/repos/kwarc/projects/content/bin/Modparse.pm$ # +# $Date: 2005-09-26 12:44:28 -0500 (Mon, 26 Sep 2005) $ $Rev: 4243 $ # +####################################################################################### + +package Modparse; + +use File::Basename; +use File::Path; + +# if both snippath and snippathList are specified, +# snippathList is ignored ! + +# if a default snippath definition file is found +# (snippath.def) it is used if no snippath is given +# as argument; +sub new { + my ($class, %options) = @_; + + $options{recursion} = 1 unless defined $options{recursion}; + $options{requireStatus} = 'include|exclude' unless defined $options{requireStatus}; + $options{loadInputs} = 1 unless defined $options{loadInputs}; + $options{onlyModuleLines} = 0 unless defined $options{onlyModuleLines}; + + if ( !(%{$options{snippath}}) && (-e "snippath.def") ) { + open(SNIPPATHDEF, 'snippath.def'); + my @snlist = <SNIPPATHDEF>; + close(SNIPPATHDEF); + for (my $i = 0 ; $i <= $#snlist; $i++) { chomp($snlist[$i]); } + %{$options{snippath}} = @snlist; } + @{$options{snippathList}} = keys(%{$options{snippath}}) + if ($options{snippath} && %{$options{snippath}}); + $options{debug} = 0; + + bless(\%options, $class); } + +sub execute{ + my ($self, $file) = @_; + + local *run_event = sub { + my ($event, $arg) = @_; + if ($self->{$event}) { $self->{$event}($arg); } + }; + + local *go = sub { + my ($location, %param) = @_; + my ($tex, $path, @tex_data) = $self->readLocation($location); + return unless @tex_data; + my $NL = $#tex_data+1; + + $param{filename} = $tex; + $param{depth}++; + $param{filecount}++; + my $i = 0; + + $param{nextline} = sub { $tex_data[++$i]; }; + $param{prevline} = sub { $tex_data[--$i]; }; + $param{rewriteline}= sub { $tex_data[$i] = $_[0]; }; + + print "Processing $tex...\n" if $self->{verbose}; + run_event('onBeginFile', \%param); + + while ($i<$NL){ + $param{original} = $tex_data[$i]; + $_ = $tex_data[$i]; chomp; /([^%]*)((%.*)?)/; + ($param{tex}, $param{comment}) = ($1, $2); $_ = $1; + s/\s+//g; $param{simple_tex} = $_; + + if (/\\begin\{module\}(\[([^\]]*)\])?/) { + if ($param{in_module}) { + push(@{$param{module_stack}}, [$param{module_id}, $param{module_arg}]); } + $param{in_module} = 1; + $param{module_args} = $1 ? $2 : undef; + $param{module_id} = ($param{module_args} && + $param{module_args} =~ /id=([^\],]+)/) ? $1 : undef; + $param{module_nesting}++; + run_event('onBeginModule', \%param); } + + if (/\\end\{module\}/) { + run_event('onEndModule', \%param); + if ($#{$param{module_stack}} >= 0) { + ($param{module_id}, $param{module_args}) = @{pop(@{$param{module_stack}})}; + } else { + $param{in_module} = 0; + ($param{module_id}, $param{module_args}) = (undef, undef); } + $param{module_nesting}--; + } + + foreach my $srch_snippath(@{$self->{snippathList}}){ + $self->{snippath}{$srch_snippath} = $1 + if (/\\def\\$srch_snippath\#1\{([^\#]+)\#1\}$/); } + + if ($self->{follow} && (/\\((requiremodules(\[($self->{requireStatus})\])?)|input|include)\{([^\}]+)\}/)){ + my $req_filename = $5; my $req_spath = ''; my $command = $1; + my $is_require = ($command =~ /requiremodules/) ? 1 : 0; + if ($is_require || $self->{loadInputs}) { + foreach my $srch_snippath(@{$self->{snippathList}}){ + if ($req_filename =~ /\\$srch_snippath\{(.+)/){ + ($req_spath, $req_filename) = ($self->{snippath}{$srch_snippath}, $1); + last; }} + run_event('onRecurse', \%param); + if ($self->{recursion} || !$is_require) { + go($self->makeLocation($req_filename, $path, $req_spath), %param); } + } + } + run_event('onEveryLine', \%param) if ($param{in_module} || !$self->{onlyModuleLines}); + + last if (/\\end\{document\}/ && $self->{stopAtEnd}); + $i++; + } + run_event('onEndFile', \%param); + $param{depth}--; return; + }; + + my %param = (pack=>$self, perm=>$self->{_AUX_DATA}, depth=>0, filecount=>0, + in_module=>0, module_nesting=>0); + run_event('onBegin', \%param); + go($self->makeLocation($file), %param); + run_event('onEnd', \%param); + return; +} + + +# add a [.tex] extension to the filename +sub add_ext{ + my ($self, $fn, $ext) = @_; + $ext = '.tex' unless $ext; + $fn.=$ext if $fn !~ /\Q$ext\E$/; + $fn; } + +# as long as the extension is .tex, drop it +sub drop_ext{ + my ($self, $filename) = @_; + while ($filename =~ /\.tex$/){ + while ($filename !~ /\.$/ ) { chop($filename); } + chop($filename); } + $filename; } + +sub new_ext{ + my ($self, $filename, $ext) = @_; + $self->add_ext($self->drop_ext($filename), $ext); } + +# location = pointer to array of strings +# first element is filename; next are possible paths +sub makeLocation{ my $self = shift; return \@_; } + +# read a location into an array of strings +# aslo return filename and path to it (just in +# case some changes were made to it, like adding +# extension and/or relative paths) +sub readLocation{ + my ($self, $location) = @_; + + my ($filename, @paths) = @{$location}; + # try to add proper extension; + my $filename_ext = $self->new_ext($filename) unless -e $filename; + $filename = $filename_ext if $filename_ext && -e $filename_ext; + + # try search paths + if (! -e $filename){ + my $all_p = ''; + foreach my $p(@paths){ + $all_p .= $p; + $filename = $all_p.$filename and last if -e $all_p.$filename; + $filename = $p.$filename and last if -e $p.$filename; + if ($filename_ext){ + $filename = $all_p.$filename_ext and last if -e $all_p.$filename_ext; + $filename = $p.$filename_ext and last if -e $p.$filename_ext; } + }} + # don't do the same work too many times + foreach my $file(@{$self->{loadedFiles}}) + { return undef if $file eq $filename; } + + push(@{$self->{loadedFiles}}, $filename); + open(FIN, $filename) or die "Cannot open '$filename'\n"; + my @data = <FIN>; + close(FIN); + + # find path of current file + my $path = dirname($filename); + $path.='/' if ($path ne ''); + + return ($filename, $path, @data); +} + +1; diff --git a/Master/texmf-dist/source/latex/proposal/bin/README b/Master/texmf-dist/source/latex/proposal/bin/README new file mode 100644 index 00000000000..e33b26bf256 --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/bin/README @@ -0,0 +1,32 @@ +This directory contains the binaries for the proposal class. + +We have three utilities: +- filedate and checksum are for managing metadata in the + DTX files of the sTeX distribution (written in perl) +- Modparse.pm is a perl library they depend on +- generate-issues is a ruby library that generates issues + on http://github.com for the project (experimental) + +============== Details ================= + +checksum + "enable, update, and disable checksums in DTX files" + +Usage: + checksum [options] + +Options: + -- disable disable the checksum by wrapping in \iffalse ... \fi + -- enable remove those again + -- update update to the correct checksum + + +filedate <input filename> <newdate> + +Purpose: + Update the dates for a \ProvidePackage invocation in a given .dtx source + +Example: + filedate omdoc.dtx + + diff --git a/Master/texmf-dist/source/latex/proposal/bin/checksum b/Master/texmf-dist/source/latex/proposal/bin/checksum new file mode 100755 index 00000000000..9f0e533a8d4 --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/bin/checksum @@ -0,0 +1,71 @@ +#!/usr/bin/perl -w +####################################################################################### +# A tool for updating .dtx files with a correspodning checksum counter # +# Copyright (c) 2010, Deyan Ginev, released under the Gnu General Public License (GPL)# +# see http://www.gnu.org/copyleft/gpl.html # +# $URL: https://svn.kwarc.info/repos/stex/trunk/bin/checksum$ # +####################################################################################### + +use strict; + +use Getopt::Long; +use Modparse; +use Pod::Usage; +use Cwd qw(abs_path); + +####### start of program ####### +my $mode = "update"; #Default is update +my $action = { "update" => \&update, "disable" => \&disable, "enable"=>\&enable }; +GetOptions("disable" => sub { $mode="disable"; }, + "enable" => sub { $mode="enable"; }, + "update" => sub { $mode="update"; }); + + +my ($path) = @ARGV; +$path = abs_path($path); +my ($volume,$dir,$file) = File::Spec->splitpath( $path ); +my @lines = `cd $dir; pdflatex "\\nonstopmode\\input{$file}"` if ($mode eq "update"); +my ($checksum) = map {$_=~/^\* The checksum should be (\d+)!/; $1;} grep ($_ =~ /^\* The checksum should be (\d+)!/,@lines) if @lines; +if (!$checksum) { +#One more possible error message: + ($checksum) = map {$_=~/^! Package doc Error: Checksum not passed \((\d+)<>(\d+)\)\./; $2;} grep ($_ =~ /^! Package doc Error: Checksum not passed \((\d+)<>(\d+)\)\./,@lines) if @lines; +} +open(IN,"<$path") or die "Cannot open DTX source: $path\n"; +@lines = (); +while (<IN>) { + push @lines, &{$$action{$mode}}($_,$checksum); +} +close(IN); +open(OUT,">$path") or die "Cannot write to DTX target: $path\n"; +print OUT join("",@lines); +close(OUT); +######### Subroutines ############ +sub update { + my $checksum=$_[1]; + $_[0]=~s/\\CheckSum\{\d*\}/\\CheckSum{$checksum}/ if $checksum; + $_[0]; +} + +sub disable { + $_[0]=~s/\\CheckSum\{(\d*)\}/\\iffalse\\CheckSum\{$1}\\fi/ unless $_[0]=~/\\iffalse\\CheckSum\{(\d*)\}\\fi/; + $_[0]; +} + +sub enable { + $_[0]=~s/\\iffalse\\CheckSum\{(\d*)\}\\fi/\\CheckSum{$1}/; + $_[0]; +} + + +__END__ + + +=head1 SYNOPSIS + +checksum <input filename> --update|enable|disable + +Purpose: + Update, enable or disable the \CheckSum macro for a given .dtx source + +Example: + checksum omd.dtx --update diff --git a/Master/texmf-dist/source/latex/proposal/bin/filedate b/Master/texmf-dist/source/latex/proposal/bin/filedate new file mode 100755 index 00000000000..af49b6550dd --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/bin/filedate @@ -0,0 +1,45 @@ +#!/usr/bin/perl -w +####################################################################################### +# A tool for updating .dtx files with a given package date. # +# Copyright (c) 2010, Deyan Ginev, released under the Gnu General Public License (GPL)# +# see http://www.gnu.org/copyleft/gpl.html # +# $URL: https://svn.kwarc.info/repos/stex/trunk/bin/filedate$ # +####################################################################################### + +use strict; + +use Getopt::Long; +use Modparse; +use Pod::Usage; +use Cwd qw(abs_path); + +my ($file) = @ARGV; +my $date = `git log --format='%ai' $file`; +$date = substr($date, 0, index($date, ' ')); +$date =~ s/-/\//g; +$file = abs_path($file); +open(IN,"<$file"); +my @lines = (); +while (<IN>) { + if ($_ =~ /\\Provides(Package|Class)/) { + $_ =~ s/\[(.*?)\s/\[$date /; + } + push @lines, $_; +} +close(IN); +open(OUT,">$file"); +print OUT join("",@lines); +close(OUT); + +__END__ + + +=head1 SYNOPSIS + +filedate <input filename> <newdate> + +Purpose: + Update the dates for a \ProvidePackage invocation in a given .dtx source + +Example: + filedate omdoc.dtx diff --git a/Master/texmf-dist/source/latex/proposal/bin/generate-issues b/Master/texmf-dist/source/latex/proposal/bin/generate-issues new file mode 100755 index 00000000000..84ebfd80fd6 --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/bin/generate-issues @@ -0,0 +1,470 @@ +#!/usr/bin/env ruby +# Generate GitHub Issues for tasks and deliverables +# - Each work package gets a WPX/README.md file +# - Each task gets an Issue +# - Each deliverable gets a Milestone +# - Each deliverable gets an Issue associated with its Milestone +# - Each deliverable Issue gets 'deliverable', 'WPX' tags +# - Each task Issue gets 'task', 'WPX' tags + +# Run me from the proposal dir containing proposal.pdata: +# cd ~/OpenDreamKit/Proposal +# ~/path/to/LaTeX-Proposal/bin/generate-issues + +require 'date' +require 'Octokit' +require 'netrc' + +# constants for running the script are for OpenDreamKit +# update these for your own proposal + +START_DATE = Date::new(2015, 9, 1) # start date of the project +HOMEPAGE = "http://opendreamkit.org" +PROPOSAL_URL = "https://github.com/OpenDreamKit/OpenDreamKit/raw/master/Proposal/proposal-www.pdf" +PROJECT = "OpenDreamKit" +REPO = "OpenDreamKit/OpenDreamKit" +TARGET = "final" # or 'proposal' + +# throttle github creation requests to 5 Hz to avoid getting flagged for abuse +THROTTLE_SECONDS = 5 + +NATURES = { + 'R' => 'Report', + 'DEM' => 'Demonstrator', + 'DEC' => 'Websites, Media, etc.', + 'OTHER' => 'Other', +} + +DISSEMINATIONS = { + 'PU' => 'Public', + 'CO' => 'Confidential', + 'CI' => 'Classified', +} + +SITES = { + 'PS' => 'Université Paris-Sud', + 'LL' => 'Logilab', + 'UV' => 'Université de Versailles Saint-Quentin', + 'UJF' => 'Université Joseph Fourier', + 'UB' => 'CNRS', + 'UO' => 'University of Oxford', + 'USH' => 'University of Sheffield', + 'USO' => 'University of Southampton', + 'SA' => 'University of St Andrews', + 'UW' => 'University of Warwick', + 'JU' => 'Jacobs University Bremen', + 'UK' => 'University of Kaiserslautern', + 'US' => 'University of Silesia', + 'ZH' => 'Universität Zürich', + 'SR' => 'Simula Research Laboratory', +} + +REVERSE_SITES = {} +SITES.each_pair do |key, name| + REVERSE_SITES[name] = key +end + +# Some sites would prefer alternative abbreviations +REVERSE_SITES['University of St Andrews'] = 'USTAN' +REVERSE_SITES['Université de Versailles Saint-Quentin'] = 'UVSQ' + +#------------------- Parsing proposal.pdata --------------------- + +def split_line(line) + # super primitive state-machine line split (not going to regex this) + parts = [] + level = 0 + buffer = [] + line.each_char do |c| + case c + when '{' + if level > 0 + buffer.push c + end + level += 1 + when '}' + level -= 1 + if level > 0 + buffer.push c + end + if level == 0 + parts.push(scrub_tex(buffer.join(''))) + buffer = [] + end + else + if level > 0 + buffer.push c + end + end + end + return parts +end + + +def scrub_tex(text) + # scrub some latex markup from text + text.gsub!(/\\\w+/, '') + text.gsub!(/[{}]/, '') + text.strip.split.join(' ') +end + + +def transform_value(key, value) + case key + when 'lead' + return SITES[value] + when 'partners' + return value.split(',').map { |v| SITES[v] } + when 'dissem' + return DISSEMINATIONS[value] + when 'nature' + return NATURES[value] + when 'month' + return value.to_i + when 'delivs' + return value.split(',') + else + return scrub_tex(value) + end +end + + +def load_pdata(proposal_dir) + pdata = File.join(proposal_dir, "#{TARGET}.pdata") + deliv_data = File.join(proposal_dir, "#{TARGET}.deliverables") + + workpackages = {} # mapping of workpackage id => wp info + deliverables = {} + + File.readlines(pdata).each do |line| + key, *args = split_line line + + case key + when 'wp' + name, key, value = args + value = transform_value(key, value) + if not workpackages.include? name + workpackages[name] = { + "tasks" => {}, + "unknown-task" => nil, + "deliverables" => [], + } + end + wp = workpackages[name] + wp[key] = value + + when 'task' + name, key, value = args + value = transform_value(key, value) + # find my workpackage + if name.index('@') + wpkey, short_name = name.split('@') + if short_name.match(/task\d+/) + workpackages[wpkey]['unknown-task'] = short_name + name = short_name + end + else + wpkey = workpackages.keys.select { |wpkey| name.start_with? wpkey }.first + end + # handle workpackage@taskNN weirdness + wp = workpackages[wpkey] + tasks = wp['tasks'] + if not wp['unknown-task'].nil? and wp['unknown-task'] != name + tasks[name] = tasks.delete(wp['unknown-task']) + wp['unknown-task'] = nil + end + if not tasks.include? name + tasks[name] = {} + end + tasks[name][key] = value + when 'deliv' + name, key, value = args + + value = transform_value(key, value) + if not deliverables.include? name + deliverables[name] = {} + end + deliverables[name][key] = value + + else + # DEBUG: + # puts " Ignored: #{args}" + end + end + + # get deliverable data, workpackage id from proposal.deliverables + File.readlines(deliv_data).each do |line| + args = split_line line + name = args[3] + if deliverables.include? name + deliverable = deliverables[name] + else + deliverable = {} + end + month = args[0].to_i + deliverable = (deliverables[name] or {}).merge({ + "month" => month, + # due date is last day of the given month, so subtract one day + "due_date" => (START_DATE >> month) - 1, + "label" => scrub_tex(args[2]), + "deliv_id" => args[3], + "dissem" => transform_value('dissem', args[4]), + "nature" => transform_value('nature', args[5]), + "title" => scrub_tex(args[6]), + "lead" => SITES[scrub_tex(args[8])], + }) + wpid = scrub_tex(args[7]) + wp = workpackages.values.find {|wp| wp['label'] == wpid} + wp['deliverables'].push(deliverable) + end + + workpackages.values.each do |wp| + wp['deliverables'].sort_by! {|d| d['label']} + end + + return workpackages.values.sort_by {|wp| wp['label']} +end + + +#--------------- GitHub-related --------------------- + +def check_token + # get GitHub auth token, creating one if we don't find it. + rc = Netrc.read Netrc.default_path + if not rc['api.github.com'].nil? + return + end + puts "We need your password to generate an OAuth token. The password will not be stored." + username = ask "Username: " + password = ask("Password: ") { |q| q.echo = '*' } + client = Octokit::Client.new( + :login => username, + :password => password, + ) + reply = client.create_authorization( + :scopes => ["public_repo"], + :note => "Issue Migration", + ) + token = reply.token + rc['api.github.com'] = username, token + rc.save +end + +$cache = { + 'issues' => {}, + 'milestones' => {}, +} + +def get_issues(github, repo) + # get issues for a repo (cached) + cache = $cache['issues'] + if not cache.include? repo + cache[repo] = github.issues(repo) + end + return cache[repo] +end + +def get_milestones(github, repo) + # get issues for a repo (cached) + cache = $cache['milestones'] + if not cache.include? repo + cache[repo] = github.list_milestones(repo) + end + return cache[repo] +end + +# Templates for making readmes, issues + +README_TPL = <<-END +# %{title} + +Lead Institution: %{lead} + +See page %{page} of the [proposal](#{PROPOSAL_URL}) for the full description. +END + +TASK_TPL = <<-END +- **%{wplabel}:** [%{wptitle}](https://github.com/#{REPO}/tree/master/%{wplabel}) +- **Lead Institution:** %{lead} +- **Partners:** %{partners} +- **Work phases:** %{wphases} + +See page %{page} of the [proposal](#{PROPOSAL_URL}) for the full description. +END + +DELIV_TPL = <<-END +- **%{wplabel}:** [%{wptitle}](https://github.com/#{REPO}/tree/master/%{wplabel}) +- **Lead Institution:** %{lead} +- **Due:** %{date} (month %{month}) +- **Nature:** %{nature} + +See page %{page} of the [proposal](#{PROPOSAL_URL}) for the full description. +END + +DELIV_MILESTONE_TPL = "# %{title}\n\n#{DELIV_TPL}" + + +def make_task_issue(github, repo, task, workpackage, options) + title = "#{task['label']}: #{task['title']}" + issues = get_issues(github, repo) + issue = issues.find { |i| i.title.start_with?(task['label'] + ':') } + if issue.nil? + body = TASK_TPL % { + wplabel: workpackage['label'], + wptitle: workpackage['title'], + lead: task['lead'], + page: task['page'], + wphases: task['wphases'], + partners: (task['partners'] or ['None']).join(', ') + } + puts "\n\nMaking Issue on #{repo}: #{title}" + puts body + + github.create_issue(repo, title, body, options) + # throttle creation calls to avoid flags for abuse + sleep THROTTLE_SECONDS + else + puts "Found Issue #{repo}##{issue.number}: #{issue.title}" + existing_labels = issue.labels.map { |label| label['name']} + missing_labels = options[:labels].reject { |label| existing_labels.include? label } + if not missing_labels.empty? + puts "Updating milestone, labels on #{repo}##{issue.number}" + github.update_issue(repo, issue.number, options) + sleep THROTTLE_SECONDS + end + end +end + + +def make_deliverable_issue(github, repo, deliverable, workpackage, options) + title = "#{deliverable['label']}: #{deliverable['title']}" + issues = get_issues(github, repo) + issue = issues.find { |i| i.title.start_with?(deliverable['label'] + ':') } + if issue.nil? + body = DELIV_TPL % { + wplabel: workpackage['label'], + wptitle: workpackage['title'], + lead: deliverable['lead'], + date: deliverable['due_date'], + month: deliverable['month'], + nature: deliverable['nature'], + page: deliverable['page'], + } + puts "\n\nMaking Issue on #{repo}: #{title}" + puts body + github.create_issue(repo, title, body, options) + # throttle creation calls to avoid flags for abuse + sleep THROTTLE_SECONDS + else + puts "Found Issue #{repo}##{issue.number}: #{issue.title}" + existing_labels = issue.labels.map { |label| label['name']} + missing_labels = options[:labels].reject { |label| existing_labels.include? label } + if issue.milestone.nil? or not missing_labels.empty? + puts "Updating milestone, labels on #{repo}##{issue.number}" + github.update_issue(repo, issue.number, options) + sleep THROTTLE_SECONDS + end + end +end + + +def make_deliverable_milestone(github, repo, deliverable, workpackage) + title = deliverable['label'] + + milestone = get_milestones(github, repo).find { |ms| ms.title == title } + if milestone.nil? + puts "Making milestone on #{repo}: #{title}" + body = DELIV_MILESTONE_TPL % { + wplabel: workpackage['label'], + wptitle: workpackage['title'], + title: deliverable['title'], + lead: deliverable['lead'], + date: deliverable['due_date'], + month: deliverable['month'], + nature: deliverable['nature'], + page: deliverable['page'], + } + + milestone = github.create_milestone(repo, title, + :due_on => deliverable['due_date'], + :description => body, + ) + # throttle creation calls to avoid flags for abuse + sleep THROTTLE_SECONDS + else + puts "Milestone #{repo}@#{title} exists" + end + return milestone.number +end + + +def populate_workpackage(github, repo, workpackage) + # populate issues for a given workpackage + label = workpackage['label'] + + readme_path = "#{label}/README.md" + begin + github.contents(repo, :path => readme_path) + rescue Octokit::NotFound + readme = README_TPL % { + title: "#{workpackage['label']}: #{workpackage['title']}", + lead: workpackage['lead'], + page: workpackage['page'], + } + + puts "Creating readme at #{repo}/#{readme_path}" + puts readme + github.create_contents(repo, readme_path, "Creating #{readme_path}", readme) + # throttle creation calls to avoid flags for abuse + sleep THROTTLE_SECONDS + end + + workpackage['tasks'].each_value do |task| + org_labels = [REVERSE_SITES[task['lead']]] + \ + (task['partners'] or []).map {|site| REVERSE_SITES[site]} + + make_task_issue(github, repo, task, workpackage, + :labels => [ + 'task', + workpackage['label'], + ] + org_labels + ) + end + workpackage['deliverables'].each do |deliverable| + milestone = make_deliverable_milestone(github, repo, deliverable, workpackage) + make_deliverable_issue(github, repo, deliverable, workpackage, { + :milestone => milestone, + :labels => [ + 'deliverable', + workpackage['label'], + REVERSE_SITES[deliverable['lead']] + ] + }) + end +end + + +def main(proposal_dir) + # run the whole thing + + # verify that there's a GitHub token in .netrc + check_token + + # create client + github = Octokit::Client.new(:netrc => true) + github.auto_paginate = true + + load_pdata(proposal_dir).each do |wp| + populate_workpackage(github, REPO, wp) + end +end + +if __FILE__ == $0 + puts ARGV + if ARGV.length > 1 + proposal_dir = ARGV[1] + else + proposal_dir = '.' + end + main(proposal_dir) +end
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/proposal/dfg/dfgproposal.dtx b/Master/texmf-dist/source/latex/proposal/dfg/dfgproposal.dtx index 53d3ecc23e8..63e6a46eadc 100644 --- a/Master/texmf-dist/source/latex/proposal/dfg/dfgproposal.dtx +++ b/Master/texmf-dist/source/latex/proposal/dfg/dfgproposal.dtx @@ -13,9 +13,9 @@ % % \iffalse %<cls|pdata|reporting>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<cls>\ProvidesClass{dfgproposal}[2015/11/22 v1.4 DFG Proposal] -%<pdata>\ProvidesPackage{dfgpdata}[2015/11/22 v1.4 DFG Project Data] -%<reporting>\ProvidesPackage{dfgreporting}[2015/11/22 v1.4 DFG Project Reporting] +%<cls>\ProvidesClass{dfgproposal}[2016/04/15 v1.4 DFG Proposal] +%<pdata>\ProvidesPackage{dfgpdata}[2016/04/15 v1.4 DFG Project Data] +%<reporting>\ProvidesPackage{dfgreporting}[2016/04/15 v1.4 DFG Project Reporting] %<*driver> \documentclass[twoside]{ltxdoc} \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global} @@ -28,8 +28,8 @@ \RecordChanges \usepackage{textcomp,url,paralist,a4wide,xspace} \usepackage[show]{ed} -\usepackage[maxnames=6,hyperref=auto,style=alphabetic]{biblatex} -\bibliography{kwarc} +\usepackage[maxnames=6,hyperref=auto,style=alphabetic,backend=bibtex]{biblatex} +\addbibresource{../lib/proposal.bib} \usepackage[bookmarks=true,linkcolor=blue, citecolor=blue,urlcolor=blue,colorlinks=true, breaklinks=true, bookmarksopen=true]{hyperref} @@ -72,10 +72,10 @@ % \subversion, allowing the proposal writing team to concentrate on the contents % rather than the mechanics of wrangling with text fragments and revisions. % -% The |dfgproposal| class extends the |proposal| class~\cite{Kohlhase:pplp:svn} and +% The |dfgproposal| class extends the |proposal| class~\cite{Kohlhase:pplp:ctan} and % supports many of the specific elements of a DFG Proposal. The package documentation % is still preliminary, fragmented and incomplete and only dwells on the particulars of -% DFG proposals, so we treat~\cite{Kohlhase:pplp:svn} as a prerequisite. Please consult +% DFG proposals, so we treat~\cite{Kohlhase:pplp:ctan} as a prerequisite. Please consult % the example proposal |dfg/proposal.tex|, which comes with the package and shows the usage of % the class in action. It is intended as a template for your proposal, but please bear in % mind that the DFG guidelines may change, if in doubt, please consult the DFG guide for @@ -106,7 +106,7 @@ % % As usual in {\LaTeX}, the package is loaded by % |\documentclass[|\meta{options}|]{dfgproposal}|, where |[|\meta{options}|]| is optional -% and gives a comma separated list of options specified in~\cite{Kohlhase:pplp:svn}. The +% and gives a comma separated list of options specified in~\cite{Kohlhase:pplp:ctan}. The % |dfgproposal| class adds the two options % \begin{compactenum} % \item \DescribeMacro{general}|general|, which allows generates a first section with @@ -507,9 +507,12 @@ Applicant\if@sites\ifnum\the@PIs>1{s}\fi\fi\ \deu{(Antragsteller)}}% % \subsection{German Reports}\label{sec:impl:german} % % We have to redefine some macros for German reports. +% % \begin{macrocode} %<*pdata> \ifdeutsch +\renewcommand\prop@count[1]{\ifcase #1 null\or ein\or zwei\or drei\or vier\or f"unf\or sechs\or sieben\or + acht\or neun\or zehn\or elf\or zw"olf\else#1\fi} \renewcommand\prop@of@pages[2]{Seite~#1\ifofpage~von~#2\fi} \renewcommand\wp@mk@title[1]{Arbeitspaket {#1}} \renewcommand\wp@label[1]{AP{#1}} @@ -532,9 +535,9 @@ Applicant\if@sites\ifnum\the@PIs>1{s}\fi\fi\ \deu{(Antragsteller)}}% \renewcommand\wpfig@legend@totalRAM{Summe HM} \renewcommand\wpfig@legend@RM{PM} \renewcommand\wpfig@legend@RAM{HM} -\renewcommand\wpfig@legend@RAM@expl{\if@RAM P/HM $\widehat=$ Personen/Hilfskraft Monate;\else\ Aufw\"ande in Personenmonaten\\\fi} -\renewcommand\wpfig@legend@lead@expl{(Arbeitspaketleiter sind \wp@lead@style@explained} -\renewcommand\wp@lead@style@explained{grau und kursiv markiert)} +\renewcommand\wpfig@legend@RAM@expl{\if@RAM P/HM $\widehat=$ Personen/Hilfskraft Monate\else\ Aufw\"ande in Personenmonaten\fi} +\renewcommand\wpfig@legend@lead@expl{Arbeitspaketleiter sind \wp@lead@style@explained} +\renewcommand\wp@lead@style@explained{grau und kursiv markiert} \renewcommand\wpfig@legend@caption{{\ifwork@areas Arbeitsbereiche und \fi}Arbeitspakete} \renewcommand\wp@legend@site{Partner} \renewcommand\wp@legend@effort{Aufwand\if@RAM{ (PM+HM)}\fi} @@ -543,12 +546,14 @@ Applicant\if@sites\ifnum\the@PIs>1{s}\fi\fi\ \deu{(Antragsteller)}}% \renewcommand\gantt@caption@lower{draft: unten die Lastverteilung} \renewcommand\coherence@caption{Bisherige Kollaboration der {\pn} Partner} \renewcommand\objective@label[1]{Z#1} -\renewcommand\task@label[1]{S#1} +\renewcommand\task@label[2]{S#1.#2} % \renewcommand\month@label[1]{M#1} \renewcommand\legend@partners{Partner} \renewcommand\legend@lead{Leiter} \renewcommand\task@label@long{Schritt} -\fi +\renewcommand\task@legend@partners{MA: } +\renewcommand\task@legend@PM{PM} +\fi%ifdeutsch %</pdata> % \end{macrocode} % \Finale diff --git a/Master/texmf-dist/source/latex/proposal/eu/euproposal.dtx b/Master/texmf-dist/source/latex/proposal/eu/euproposal.dtx index 190575903b1..d9b2e3884a0 100644 --- a/Master/texmf-dist/source/latex/proposal/eu/euproposal.dtx +++ b/Master/texmf-dist/source/latex/proposal/eu/euproposal.dtx @@ -13,9 +13,9 @@ % % \iffalse %<cls|pdata|reporting>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<cls>\ProvidesClass{euproposal}[2015/11/22 v1.5 EU Proposal] -%<pdata>\ProvidesPackage{eupdata}[2015/11/22 v1.5 EU Project Data] -%<reporting>\ProvidesPackage{eureporting}[2015/11/22 v1.5 EU Project Reporting] +%<cls>\ProvidesClass{euproposal}[2016/04/15 v1.5 EU Proposal] +%<pdata>\ProvidesPackage{eupdata}[2016/04/15 v1.5 EU Project Data] +%<reporting>\ProvidesPackage{eureporting}[2016/04/15 v1.5 EU Project Reporting] %<*driver> \documentclass[twoside]{ltxdoc} \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global} @@ -28,8 +28,8 @@ \RecordChanges \usepackage{textcomp,url,paralist,a4wide,xspace} \usepackage[show]{ed} -\usepackage[maxnames=6,hyperref=auto,style=alphabetic]{biblatex} -\bibliography{kwarc} +\usepackage[maxnames=6,hyperref=auto,style=alphabetic,backend=bibtex]{biblatex} +\addbibresource{../lib/proposal.bib} \usepackage[bookmarks=true,linkcolor=blue, citecolor=blue,urlcolor=blue,colorlinks=true, breaklinks=true, bookmarksopen=true]{hyperref} @@ -149,7 +149,7 @@ % the title page, and specify their heights; |1.5cm| is often a good value. % \end{compactitem} % -% \subsection{Work Packages and Work Areas}\label{sec:wpwa} +% \subsection{Work Packages and Work Areas}\label{sec:user:wpwa} % % \DescribeMacro{type} The |type| key specifies the activity type of the work package: % |RTD| = Research and technological development (including any activities to prepare for @@ -171,7 +171,14 @@ % name/deliverables/verification columns in the milestone table. % % \subsection{Risks}\label{sec:user:risks} -% \ednote{MK: document the infrastructure, make examples} +% In some EU proposals (e.g. FET), we need to identify risks and contingency and specify +% mitigation plans for them. In the |euproposal| we use two environments to mark them up. +% +% \DescribeMacro{risk}|\begin{risk}{|\meta{title}|}{|\meta{prob}|}{|\meta{grav}|}|\ldots|\end{risk}| +% makes a paragraph no a risk \meta{title} with gravity \meta{grav} and probability +% \meta{prob}, where the body of the environment contains a description of the risk. The +% \DescribeMacro{riskcont}|riskcont| is a variant, where \meta{title} names a risk and the +% body is a description of the contingency plan. % % \begin{newpart}{MK@MK: This is new, and only partially implemented} % \subsection{Reporting Infrastructure}\label{sec:user:report} @@ -427,7 +434,7 @@ % \end{macrocode} % \end{environment} % -% \subsection{Work Packages, Work Areas, and Deliverables}\label{sec:wpwa} +% \subsection{Work Packages, Work Areas, and Deliverables}\label{sec::impl:wpwa} % % \begin{environment}{wp*} % \begin{macrocode} @@ -555,17 +562,6 @@ % \end{macrocode} % \end{environment} % -% \subsection{Risks}\label{sec:impl:risks} -% -% In some EU proposals (e.g. FET), we need to identify risks and contingency and specify -% mitigation plans for them. In the |euproposal| we use two environments to mark them up. -% -% \DescribeMacro{risk}|\begin{risk}{|\meta{title}|}{|\meta{prob}|}{|\meta{grav}|}|\ldots|\end{risk}| -% makes a paragraph no a risk \meta{title} with gravity \meta{grav} and probability -% \meta{prob}, where the body of the environment contains a description of the risk. The -% \DescribeMacro{riskcont}|riskcont| is a variant, where \meta{title} names a risk and the -% body is a description of the contingency plan. -% % \subsection{Relevant Papers}\label{sec:impl:papers} % % \begin{macro}{\keypubs} diff --git a/Master/texmf-dist/source/latex/proposal/lib/Makefile.ctan b/Master/texmf-dist/source/latex/proposal/lib/Makefile.ctan new file mode 100644 index 00000000000..d24d524aa6a --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/lib/Makefile.ctan @@ -0,0 +1,88 @@ +################################################################ +# make a zip for CTAN submission including the TeX directory structure. +# +# The overall procedure is to run make in this directory $(HERE) and then +# export it to a temporary directory $(EXPORTED) without all the generated +# files. On this directory we run "make ctanext" (see below) which makes a +# CTAN-compliant directory structure, and zips it up to the file +# <package>.ctan.zip which can be submitted to the CTAN maintainers. +# +# Note that part of the CTAN submission is a zip file with a TDS-compliant +# directory struture, which is generated by running "make tdsext" (see below) +# on $(EXPORTED). +# +# Note furthermore, that this Makefile only automates the top-level mechanics +# of the CTAN zip files, ... It relies on the Variables set in the regular Makefiles +# and in particular on their targets "ltds", "lctan", "filedate", and "checksum". +################################################################ + +HERE = $(shell pwd) +GITREPOS = $(HERE) +REPOSNAME = LaTeX-proposal +TMP = /tmp +#TDSCOLL ?= $(shell basename $$PWD) +TDSCOLL = proposal +EXPORTED = $(TMP)/$(TDSCOLL).exp + +TDS.dir = $(TDSCOLL).tds +TDSDIR = $(TMP)/$(TDS.dir) +TDS.zip = $(TDS.dir).zip +TDSZIP = $(TMP)/$(TDS.zip) + +CTANDIR = $(TMP)/$(TDSCOLL) +CTAN.zip = $(TDSCOLL).ctan.zip +CTANZIP = $(TMP)/$(CTAN.zip) + +MAKE = make + +# this target makes the file CTANZIP by creating and populating the directory +# CTANDIR and zipping it. To be current, we first make all, and update +# the filedates and the checksums. To get rid of all the junk we commit and +# export a clean copy EXPORTED, on which we run the target ctanexp below, +# which generates a directory CTANDIR, which we zip and move into place. +ctan: all filedate checksum + git commit -am'draining just to be sure for CTAN distribution' --allow-empty + rm -Rf $(EXPORTED) + @echo "exporting a clean copy to $(EXPORTED)" + cd $(TMP);rm -Rf $(REPOSNAME);git clone $(GITREPOS);mv $(REPOSNAME) $(EXPORTED) + rm -Rf $(EXPORTED)/.git + find $(EXPORTED) -name ".gitignore" -delete + cd $(EXPORTED);$(MAKE) -$(MAKEFLAGS) ctanext + @echo "zipping the result to $(TDSCOLL).ctan.zip" + cd $(TMP);zip -r $(CTANZIP) $(TDS.zip) $(TDSCOLL);cp $(CTANZIP) $(HERE) + @echo "cleaning up" + rm -Rf $(EXPORTED) $(CTANDIR) $(CTANZIP) $(TDSZIP) + @echo "disabling checksums again for further development" + $(MAKE) -$(MAKEFLAGS) disablechecksum + +# this target is run on EXPORTED. It first makes the target tdsext below, +# and then copies all necessary stuff into CTANDIR. +ctanext: tdsext + @echo "making a CTAN compliant archive in $(CTANDIR)" + rm -Rf $(CTANDIR) $(CTANZIP) + mkdir -p $(CTANDIR) + @echo " copying material from $(EXPORTED) to $(CTANDIR)" + @for d in $(DTXDIRS); do (cd $$d && $(MAKE) -$(MAKEFLAGS) lctan) done + @for d in $(SRCDIRS) $(DOCDIRS); do (cp -R $$d $(CTANDIR)) done; + @for d in $(SRCFILES); do (cp -p $$d $(CTANDIR)) done; + cp $(TDS.README) $(CTANDIR)/README + +# this target makes the file TDSZIP by creating and populating the directory +# TDSDIR and zipping it. +tdsext: + @echo "making a TDS compliant archive" + rm -Rf $(TDSDIR) $(TDSZIP) + @echo " enabling checksums" + $(MAKE) -$(MAKEFLAGS) enablechecksum + @echo " copying LaTeX Sources to $(TDSDIR)" + @for d in $(DTXDIRS); do (cd $$d && $(MAKE) -$(MAKEFLAGS) ltds) done + @echo " copying binary dir to $(TDSDIR)" + @for d in $(SRCDIRS); do (cp -R $$d $(TDSDIR)/source/latex/$(TDSCOLL)) done; + @for d in $(SRCFILES); do (cp -R $$d $(TDSDIR)/source/latex/$(TDSCOLL)) done; + @echo " copying documentation to $(TDSDIR)" + @for d in $(DOCDIRS); do (cp -R $$d $(TDSDIR)/doc/latex/$(TDSCOLL)) done; + @for d in $(TDS.doc); do (cp -R $$d $(TDSDIR)/doc/latex/$(TDSCOLL)) done; + @echo "zipping the result to $(TDSCOLL).tds.zip" + cd $(TDSDIR);zip -r -q $(TDSZIP) . + @echo "and removing the temporary directory $(TDSDIR)" + rm -Rf $(TDSDIR) diff --git a/Master/texmf-dist/source/latex/proposal/lib/Makefile.in b/Master/texmf-dist/source/latex/proposal/lib/Makefile.in new file mode 100644 index 00000000000..57da62fad1b --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/lib/Makefile.in @@ -0,0 +1,90 @@ +all: package doc +package: $(DTX.sty) $(DTX.cls) +doc: $(DTX.pdf) $(EXAMPLE.pdf) + +$(DTX.sty) $(DTX.cls): $(INS) $(DTX) + $(PDFLATEX) $(INS) + + +$(EXAMPLE.pdf): %.pdf: %.tex $(DTX.sty) $(DTX.cls) $(EXAMPLE.deps) + $(PDFLATEX) $(firstword $<) + @if (grep 'Please (re)run Biber' $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then biber $(patsubst %.dtx, %, $(firstword $<));fi + @if (grep 'Please (re)run BibTeX' $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then bibtex $(patsubst %.dtx, %, $(firstword $<));fi + @if (grep "Writing index file" $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then makeindex\ + -o $(patsubst %.dtx, %.ind, $(firstword $<))\ + $(patsubst %.dtx, %.idx, $(firstword $<)); fi + @if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then $(PDFLATEX) $(firstword $<); fi + @if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then $(PDFLATEX) $(firstword $<); fi + +%.ind: + touch $@ + +$(DTX.pdf): %.pdf: %.dtx $(DTX.sty) $(DTX.cls) + $(PDFLATEX) $(firstword $<) + @if (grep 'Please (re)run Biber' $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then biber $(patsubst %.dtx, %, $(firstword $<));fi + @if (grep "Writing glossary file" $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then makeindex\ + -o $(patsubst %.dtx, %.gls, $(firstword $<))\ + $(patsubst %.dtx, %.glo, $(firstword $<)); fi + @if (grep "Writing index file" $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then makeindex\ + -o $(patsubst %.dtx, %.ind, $(firstword $<))\ + $(patsubst %.dtx, %.idx, $(firstword $<)); fi + @if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then $(PDFLATEX) $(firstword $<); fi + @if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\ + then $(PDFLATEX) $(firstword $<); fi + +clean: + rm -f *~ *.log *.ilg *.out *.glo *.idx *.ilg *.blg + +distclean: clean + rm -f *.aux *.ind *.gls *.ps *.dvi *.toc *.thm + rm -Rf auto + +filedate: + @for d in $(DTX); do \ + $(FILEDATEPROG) $$d ; \ + done + +checksum: + @for d in $(DTX); do \ + $(CHECKSUMPROG) $$d --update ; \ + done + +enablechecksum: + @for d in $(DTX); do \ + $(CHECKSUMPROG) $$d --enable ; \ + done + +disablechecksum: + @for d in $(DTX); do \ + $(CHECKSUMPROG) $$d --disable ; \ + done + +# copy stuff around for making the TeX Directory Structure +ltds: + rm -Rf $(TDSDIR.doc);mkdir -p $(TDSDIR.doc) + rm -Rf $(TDSDIR.tex);mkdir -p $(TDSDIR.tex) + rm -Rf $(TDSDIR.src);mkdir -p $(TDSDIR.src) + cp $(DTX.src) $(TDS.src) $(TDSDIR.src) + cp $(DTX.sty) $(DTX.cls) $(TDS.tex) $(TDSDIR.tex) + cp README $(DTX.pdf) $(EXAMPLE.tex) $(EXAMPLE.pdf) $(TDS.doc) $(TDSDIR.doc) + @for d in $(TDS.exdirs); do cp -R $$d $(TDSDIR.doc); done + +lctan: + mkdir -p $(CTANDIR) + cp $(DTX.src) $(DTX.sty) $(DTX.cls) $(TDS.src) $(TDS.tex) $(CTANDIR) + cp README $(DTX.pdf) $(EXAMPLE.tex) $(EXAMPLE.pdf) $(TDS.doc) $(CTANDIR) + @for d in $(TDS.exdirs); do cp -R $$d $(CTANDIR); done + +# sometimes (when bibLaTeX changes) we have to rerun biber; use make -B biber +biber: + pdflatex $(DTX.base:%=%.dtx) + biber $(DTX.base) diff --git a/Master/texmf-dist/source/latex/proposal/lib/Makefile.vars b/Master/texmf-dist/source/latex/proposal/lib/Makefile.vars new file mode 100644 index 00000000000..6155fee0909 --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/lib/Makefile.vars @@ -0,0 +1,38 @@ +# DTX.sty.base and DTX.cls.base are set in the including Makefiles +DTX.base ?= $(DTX.sty.base) $(DTX.cls.base) +DTX.src = $(DTX) $(DTX:%.dtx=%.ins) +INS = $(DTX:%.dtx=%.ins) + +DTX.sty = $(DTX.sty.base:%=%.sty) +DTX.cls = $(DTX.cls.base:%=%.cls) +DTX.pdf = $(DTX:%.dtx=%.pdf) + +# The examples +EXAMPLE.pdf = $(EXAMPLE.base:%=%.pdf) +EXAMPLE.tex = $(EXAMPLE.base:%=%.tex) +EXAMPLE.deps = $(filter-out $(EXAMPLE.base:%=%.tex), $(shell ls *.tex)) + +# The TeX Directory Structure (see http://www.tug.org/tds/tds.html) +TDSDIR = /tmp/$(TDSCOLL).tds +TDSDIR.tex = $(TDSDIR)/tex/latex/$(TDSCOLL)/$(PACKAGE) +TDSDIR.doc = $(TDSDIR)/doc/latex/$(TDSCOLL)/$(PACKAGE) +TDSDIR.src = $(TDSDIR)/source/latex/$(TDSCOLL)/$(PACKAGE) + +# make a zip for CTAN submission +CTANDIR = /tmp/$(TDSCOLL)/$(CTANPREFIX)$(PACKAGE) + +# the dependencies +SOURCES = $(DTX.sty) $(BIB) +TEXINPUTS := .:$(PREFIX)//: +BIBINPUTS := .:$(PREFIX)//: +BSTINPUTS := .:$(PREFIX)//: + +# we want to quiet down pdflatex +PDFLATEX = pdflatex -interaction batchmode -file-line-error + +# we set the package date for 'make filedate' to today +BINDIR = $(PREFIX)/../bin +PACKAGEDATE ?= $(shell date "+%Y/%m/%d") +FILEDATEPROG = PERL5LIB=$(BINDIR) $(BINDIR)/filedate +CHECKSUMPROG = PERL5LIB=$(BINDIR) $(BINDIR)/checksum + diff --git a/Master/texmf-dist/source/latex/proposal/lib/proposal.bib b/Master/texmf-dist/source/latex/proposal/lib/proposal.bib new file mode 100644 index 00000000000..8970c41baa9 --- /dev/null +++ b/Master/texmf-dist/source/latex/proposal/lib/proposal.bib @@ -0,0 +1,76 @@ +@STRING{stexyear = 2016} +@techreport{Kohlhase:ed:ctan,crossref={Kohlhase:ed:base}, + institution = {Comprehensive {\TeX} Archive Network (CTAN)}, + CHANGEurl = {http://www.ctan.org/get/macros/latex/contrib/ed/ed.pdf}, + pubs = {mkohlhase,projects/stex}} +@techreport{Kohlhase:ed:svn,crossref={Kohlhase:ed:base}, + url = {https://svn.kwarc.info/repos/kwarc/doc/macros/forCTAN/ed/ed.pdf}} +@techreport{Kohlhase:ed:base, + author = {Michael Kohlhase}, + title = {Editorial Notes for {\LaTeX}}, + type = {Self-documenting {\LaTeX} package}, + year = stexyear} + +@online{gitinfo2:on, + title = {gitinfo2.sty}, + subtitle = {A package for accessing metadata from the git dvcs}, + author = {Brent Longborough}, + urldate = {2014-10-26}, + url = {http://mirrors.ctan.org/macros/latex/contrib/gitinfo2/gitinfo2.pdf}} + +@techreport{Kohlhase:workaddress:ctan,crossref={Kohlhase:workaddress:base}, + institution = {Comprehensive {\TeX} Archive Network (CTAN)}, + url = {http://mirror.ctan.org/macros/latex/contrib/stex/sty/workaddress/workaddress.pdf}, + pubs = {mkohlhase,projects/stex}} +@techreport{Kohlhase:workaddress:svn,crossref={Kohlhase:workaddress:base}, + url = {https://github.com/KWARC/sTeX/raw/master/sty/stex/workaddress/workaddress.pdf}} +@techreport{Kohlhase:workaddress:base, + author = {Michael Kohlhase}, + title = {{\texttt{workaddress.sty}}: An Infrastructure for marking up {Dublin Core} Metadata in {\LaTeX} documents}, + type = {Self-documenting {\LaTeX} package}, + year = stexyear} + +@techreport{Kohlhase:pdrp:ctan,crossref={Kohlhase:pdrp:base}, + institution = {Comprehensive {\TeX} Archive Network (CTAN)}, + url = {http://mirror.ctan.org/macros/latex/contrib/proposal/dfg/dfgproposal.pdf}, + pubs = {mkohlhase,projects/stex}} +@techreport{Kohlhase:pdrp:svn,crossref={Kohlhase:pdrp:base}, + url = {http://github.com/KWARC/LaTeX-proposal/dfg/dfgproposal.pdf}} +@techreport{Kohlhase:pdrp:base, + author = {Michael Kohlhase}, + title = {Preparing DFG Proposals and Reports in {\LaTeX} with {\texttt{dfgproposal.cls}}}, + type = {Self-documenting {\LaTeX} package}, + year = stexyear} + +@techreport{Kohlhase:pplp:ctan,crossref={Kohlhase:pplp:base}, + institution = {Comprehensive {\TeX} Archive Network (CTAN)}, + url = {http://mirror.ctan.org/macros/latex/contrib/proposal/base/proposal.pdf}, + pubs = {mkohlhase,projects/stex}} +@techreport{Kohlhase:pplp:svn,crossref={Kohlhase:pplp:base}, + url = {http://github.com/KWARC/LaTeX-proposal/base/proposal.pdf}} +@techreport{Kohlhase:pplp:base, + author = {Michael Kohlhase}, + title = {Preparing Proposals in {\LaTeX} with {\tt{proposal.cls}}}, + type = {Self-documenting {\LaTeX} package}, + year = stexyear} + +@Manual{DFG:102e, + title = {Research Grants, Guidelines and Proposal Preparation Instructions}, + organization = {German Research Foundation (DFG)}, + url = {http://www.dfg.de/download/programme/emmy_noether_programm/antragstellung/1_02_e/1_02e.pdf}, + month = oct, + year = 2010} + +@Manual{DFG:2012e, + title = {Guidelines for the Use of Funds International Research Grants with Guidelines for Final Reports}, + organization = {German Research Foundation (DFG)}, + url = {http://www.dfg.de/download/programme/sachbeihilfe/antragstellung/2_012_e/2_012e.pdf}, + month = jul, + year = 2010} + +@Manual{DFG:201, + title = {Verwendungsrichtlinien, Sachbeihilfen mit Leitfaden f{\"ur}r Abschlussberichte und Regeln guter wissenschaftlicher Praxis}, + organization = {German Research Foundation (DFG)}, + url = {http://www.dfg.de/download/programme/sachbeihilfe/abschlussberichte/2_01/2_01.pdf}, + month = jun, + year = 2010} diff --git a/Master/texmf-dist/tex/latex/proposal/base/pdata.sty b/Master/texmf-dist/tex/latex/proposal/base/pdata.sty index fb8f99c8d3a..445364676bd 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}[2015/11/22 v1.5 Project Data] +\ProvidesPackage{pdata}[2016/04/15 v1.5 Project Data] \RequirePackage{workaddress}[2011/05/03] \RequirePackage{eurosym} \newif\if@sites\@sitesfalse\let\prop@gen@sites=\relax% @@ -16,9 +16,9 @@ \stepcounter{@site}\pdata@def{site}{#1}{number}{\the@site}% \@ifundefined{prop@gen@sites}{\xdef\prop@gen@sites{#1}}{\xdef\prop@gen@sites{\prop@gen@sites,#1}}% \define@key{prop@gen}{#1RM}{\pdata@def{site}{#1}{intendedRM}{##1}}% -\if@RAM\define@key{prop@gen}{#1RAM}{\pdata@def{site}{#1}{intendedRAM}{##1}}\fi +\define@key{prop@gen}{#1RAM}{\pdata@def{site}{#1}{intendedRAM}{##1}} \define@key{workpackage}{#1RM}{\pdata@def\wp@id{#1}{RM}{##1}}% -\if@RAM\define@key{workpackage}{#1RAM}{\pdata@def\wp@id{#1}{RAM}{##1}}\fi +\define@key{workpackage}{#1RAM}{\pdata@def\wp@id{#1}{RAM}{##1}} \define@key{prop@gen}{#1employed}{{\let\tabularnewline\relax\let\hline\relax\let\wa@ref\relax% \@ifundefined{prop@gen@employed@lines}% {\xdef\prop@gen@employed@lines{\wa@ref{institution}{#1}{shortname} & ##1\tabularnewline\hline}}% diff --git a/Master/texmf-dist/tex/latex/proposal/base/proposal.cls b/Master/texmf-dist/tex/latex/proposal/base/proposal.cls index 94f2250ff93..625ca4af6de 100644 --- a/Master/texmf-dist/tex/latex/proposal/base/proposal.cls +++ b/Master/texmf-dist/tex/latex/proposal/base/proposal.cls @@ -7,7 +7,7 @@ %% proposal.dtx (with options: `cls') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesClass{proposal}[2015/11/22 v1.5 Project Proposal] +\ProvidesClass{proposal}[2016/04/15 v1.5 Project Proposal] \newif\if@wpsubsection\@wpsubsectionfalse \newif\ifsubmit\submitfalse \newif\ifgrantagreement\grantagreementfalse @@ -53,7 +53,7 @@ \renewcommand{\familydefault}{\sfdefault} \RequirePackage[scaled=.90]{helvet} \RequirePackage{textcomp} -\RequirePackage[hyperref=auto,style=numeric,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19] +\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} @@ -109,15 +109,15 @@ \begin{itemize} \@for\@I:=\prop@gen@PIs\do{% \item Curriculum Vitae and list of publications for - \wa@ref{person}\@I{personaltitle} \wa@ref{person}\@I{name} -\end{itemize}}\newpage + \wa@ref{person}\@I{personaltitle} \wa@ref{person}\@I{name}} +\end{itemize}\newpage \printbibliography[heading=warnpubs]} \newenvironment{proposal}[1][]{\readpdata\jobname \ofpagetrue\setkeys{prop@gen}{#1} \pdata@open\jobname \if@sites\else \define@key{workpackage}{RM}{\pdata@def{wp}\wp@id{RM}{##1}\@dmp{RM=##1}} -\if@RAM\define@key{workpackage}{RAM}{\pdata@def{wp}\wp@id{RAM}{##1}\@dmp{RAM=##1}}\fi +\define@key{workpackage}{RAM}{\pdata@def{wp}\wp@id{RAM}{##1}\@dmp{RAM=##1}} \fi \newcounter{@PIs} \@ifundefined{prop@gen@PIs}{}{\@for\@I:=\prop@gen@PIs\do{\stepcounter{@PIs}}} @@ -564,8 +564,7 @@ ganttgray,.60/.60,.60,.60/0,0,.60/0,0,0,.40} \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 +\wpfig@legend@RAM@expl\if@sites; \wpfig@legend@lead@expl\fi \@ifundefined{wpfig@label}{\caption{\wpfig@legend@caption}}{\caption{\wpfig@caption}} \@ifundefined{wpfig@label}{\label{fig:wplist}}{\label{\wpfig@label}} \end{center}\end{table}} @@ -1003,16 +1002,14 @@ joint&\multicolumn{\the@site}{l|}{\jpub $\hat=$ publication, \jpro $\hat=$ proje \define@key{paperlist}{techreports}[true]{\prop@ppl{techreport}{Technical Reports}} \DeclareBibliographyCategory{featured} \newcommand\prop@paperlist[2][]{% -\begin{refsection}% -\nocite{#2}\addtocategory{featured}{#2}% \let\biboldfont\bibfont% \renewcommand{\bibfont}{\footnotesize}% \renewcommand{\baselinestretch}{.9} +\def\do##1{\addtocategory{featured}{##1}}\docsvlist{#2}% \setkeys{paperlist}{#1} \@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}} -\if@allpapers\printbibliography[heading=empty]\fi% -\let\bibfont\biboldfont% -\end{refsection}} +\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}% diff --git a/Master/texmf-dist/tex/latex/proposal/base/reporting.cls b/Master/texmf-dist/tex/latex/proposal/base/reporting.cls index 4ba4de475b8..f9ce0159ff3 100644 --- a/Master/texmf-dist/tex/latex/proposal/base/reporting.cls +++ b/Master/texmf-dist/tex/latex/proposal/base/reporting.cls @@ -7,7 +7,7 @@ %% proposal.dtx (with options: `reporting') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{reporting}[2015/11/22 v1.5 Project Reporting] +\ProvidesPackage{reporting}[2016/04/15 v1.5 Project Reporting] \newif\if@wpsubsection\@wpsubsectionfalse \newif\ifsubmit\submitfalse \newif\ifgrantagreement\grantagreementfalse @@ -53,7 +53,7 @@ \renewcommand{\familydefault}{\sfdefault} \RequirePackage[scaled=.90]{helvet} \RequirePackage{textcomp} -\RequirePackage[hyperref=auto,style=numeric,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19] +\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} @@ -135,16 +135,14 @@ \define@key{paperlist}{techreports}[true]{\prop@ppl{techreport}{Technical Reports}} \DeclareBibliographyCategory{featured} \newcommand\prop@paperlist[2][]{% -\begin{refsection}% -\nocite{#2}\addtocategory{featured}{#2}% \let\biboldfont\bibfont% \renewcommand{\bibfont}{\footnotesize}% \renewcommand{\baselinestretch}{.9} +\def\do##1{\addtocategory{featured}{##1}}\docsvlist{#2}% \setkeys{paperlist}{#1} \@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}} -\if@allpapers\printbibliography[heading=empty]\fi% -\let\bibfont\biboldfont% -\end{refsection}} +\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}% diff --git a/Master/texmf-dist/tex/latex/proposal/dfg/dfgpdata.sty b/Master/texmf-dist/tex/latex/proposal/dfg/dfgpdata.sty index 214ef50ba2a..4dd09dc729c 100644 --- a/Master/texmf-dist/tex/latex/proposal/dfg/dfgpdata.sty +++ b/Master/texmf-dist/tex/latex/proposal/dfg/dfgpdata.sty @@ -7,7 +7,7 @@ %% dfgproposal.dtx (with options: `pdata') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{dfgpdata}[2015/11/22 v1.4 DFG Project Data] +\ProvidesPackage{dfgpdata}[2016/04/15 v1.4 DFG Project Data] \newif\ifdeutsch\deutschfalse \DeclareOption{german}{\deutschtrue\message{Deutscher Antrag}} \ProcessOptions @@ -40,6 +40,8 @@ Applicant\if@sites\ifnum\the@PIs>1{s}\fi\fi\ \deu{(Antragsteller)}}% \ifdeutsch Arbeitsgebiet\else Fields of work\fi: \prop@gen@areas} \newcommand\dfgprojpapers[2][]{\prop@paperlist[#1]{#2}} \ifdeutsch +\renewcommand\prop@count[1]{\ifcase #1 null\or ein\or zwei\or drei\or vier\or f"unf\or sechs\or sieben\or + acht\or neun\or zehn\or elf\or zw"olf\else#1\fi} \renewcommand\prop@of@pages[2]{Seite~#1\ifofpage~von~#2\fi} \renewcommand\wp@mk@title[1]{Arbeitspaket {#1}} \renewcommand\wp@label[1]{AP{#1}} @@ -62,9 +64,9 @@ Applicant\if@sites\ifnum\the@PIs>1{s}\fi\fi\ \deu{(Antragsteller)}}% \renewcommand\wpfig@legend@totalRAM{Summe HM} \renewcommand\wpfig@legend@RM{PM} \renewcommand\wpfig@legend@RAM{HM} -\renewcommand\wpfig@legend@RAM@expl{\if@RAM P/HM $\widehat=$ Personen/Hilfskraft Monate;\else\ Aufw\"ande in Personenmonaten\\\fi} -\renewcommand\wpfig@legend@lead@expl{(Arbeitspaketleiter sind \wp@lead@style@explained} -\renewcommand\wp@lead@style@explained{grau und kursiv markiert)} +\renewcommand\wpfig@legend@RAM@expl{\if@RAM P/HM $\widehat=$ Personen/Hilfskraft Monate\else\ Aufw\"ande in Personenmonaten\fi} +\renewcommand\wpfig@legend@lead@expl{Arbeitspaketleiter sind \wp@lead@style@explained} +\renewcommand\wp@lead@style@explained{grau und kursiv markiert} \renewcommand\wpfig@legend@caption{{\ifwork@areas Arbeitsbereiche und \fi}Arbeitspakete} \renewcommand\wp@legend@site{Partner} \renewcommand\wp@legend@effort{Aufwand\if@RAM{ (PM+HM)}\fi} @@ -73,11 +75,13 @@ Applicant\if@sites\ifnum\the@PIs>1{s}\fi\fi\ \deu{(Antragsteller)}}% \renewcommand\gantt@caption@lower{draft: unten die Lastverteilung} \renewcommand\coherence@caption{Bisherige Kollaboration der {\pn} Partner} \renewcommand\objective@label[1]{Z#1} -\renewcommand\task@label[1]{S#1} +\renewcommand\task@label[2]{S#1.#2} \renewcommand\legend@partners{Partner} \renewcommand\legend@lead{Leiter} \renewcommand\task@label@long{Schritt} -\fi +\renewcommand\task@legend@partners{MA: } +\renewcommand\task@legend@PM{PM} +\fi%ifdeutsch \endinput %% %% End of file `dfgpdata.sty'. diff --git a/Master/texmf-dist/tex/latex/proposal/dfg/dfgproposal.cls b/Master/texmf-dist/tex/latex/proposal/dfg/dfgproposal.cls index 01dbbf9b3a1..a4abe627164 100644 --- a/Master/texmf-dist/tex/latex/proposal/dfg/dfgproposal.cls +++ b/Master/texmf-dist/tex/latex/proposal/dfg/dfgproposal.cls @@ -7,7 +7,7 @@ %% dfgproposal.dtx (with options: `cls') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesClass{dfgproposal}[2015/11/22 v1.4 DFG Proposal] +\ProvidesClass{dfgproposal}[2016/04/15 v1.4 DFG Proposal] \newif\ifgeneral\generalfalse \DeclareOption{general}{\generaltrue} \DeclareOption{german}{\PassOptionsToPackage{\CurrentOption}{dfgpdata}} diff --git a/Master/texmf-dist/tex/latex/proposal/dfg/dfgreporting.cls b/Master/texmf-dist/tex/latex/proposal/dfg/dfgreporting.cls index c0d17b3ed5a..9165baf1830 100644 --- a/Master/texmf-dist/tex/latex/proposal/dfg/dfgreporting.cls +++ b/Master/texmf-dist/tex/latex/proposal/dfg/dfgreporting.cls @@ -7,7 +7,7 @@ %% dfgproposal.dtx (with options: `reporting') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{dfgreporting}[2015/11/22 v1.4 DFG Project Reporting] +\ProvidesPackage{dfgreporting}[2016/04/15 v1.4 DFG Project Reporting] \DeclareOption{german}{\PassOptionsToPackage{\CurrentOption}{dfgpdata}} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{reporting}} \ProcessOptions diff --git a/Master/texmf-dist/tex/latex/proposal/eu/eupdata.sty b/Master/texmf-dist/tex/latex/proposal/eu/eupdata.sty index a26e81b1e36..bc761c73fdb 100644 --- a/Master/texmf-dist/tex/latex/proposal/eu/eupdata.sty +++ b/Master/texmf-dist/tex/latex/proposal/eu/eupdata.sty @@ -7,7 +7,7 @@ %% euproposal.dtx (with options: `pdata') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{eupdata}[2015/11/22 v1.5 EU Project Data] +\ProvidesPackage{eupdata}[2016/04/15 v1.5 EU Project Data] \define@key{prop@gen}{coordinator}{\def\prop@gen@coordinator{#1}\pdata@def{prop}{gen}{coordinator}{#1}} \define@key{prop@gen}{coordinatorsite}{\def\prop@gen@coordinatorsite{#1}\pdata@def{prop}{gen}{coordinator}{#1}} \def\prop@gen@challenge{??}\def\prop@gen@challengeid{??} diff --git a/Master/texmf-dist/tex/latex/proposal/eu/euproposal.cls b/Master/texmf-dist/tex/latex/proposal/eu/euproposal.cls index 93c3bb7febb..0a168c882b6 100644 --- a/Master/texmf-dist/tex/latex/proposal/eu/euproposal.cls +++ b/Master/texmf-dist/tex/latex/proposal/eu/euproposal.cls @@ -7,7 +7,7 @@ %% euproposal.dtx (with options: `cls') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesClass{euproposal}[2015/11/22 v1.5 EU Proposal] +\ProvidesClass{euproposal}[2016/04/15 v1.5 EU Proposal] \newif\ifpartB\partBfalse \DeclareOption{partB}{\partBtrue} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{proposal}} diff --git a/Master/texmf-dist/tex/latex/proposal/eu/eureporting.cls b/Master/texmf-dist/tex/latex/proposal/eu/eureporting.cls index 9195aec875c..7d2bec442cc 100644 --- a/Master/texmf-dist/tex/latex/proposal/eu/eureporting.cls +++ b/Master/texmf-dist/tex/latex/proposal/eu/eureporting.cls @@ -7,7 +7,7 @@ %% euproposal.dtx (with options: `reporting') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{eureporting}[2015/11/22 v1.5 EU Project Reporting] +\ProvidesPackage{eureporting}[2016/04/15 v1.5 EU Project Reporting] \DeclareOption*{\PassOptionsToClass{\CurrentOption}{reporting}} \ProcessOptions \LoadClass[report,noRAM]{reporting} |