diff --git a/texlive-20200327-poppler-0.90.patch b/texlive-20200327-poppler-0.90.patch deleted file mode 100644 index e76b436..0000000 --- a/texlive-20200327-poppler-0.90.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -up texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler090 texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler090 2020-07-14 13:13:31.620607263 -0400 -+++ texlive-base-20200327/source/texk/web2c/pdftexdir/pdftoepdf.cc 2020-07-14 13:16:01.530248309 -0400 -@@ -766,7 +766,7 @@ read_pdf_info(char *image_name, char *pa - if (page_name) { - // get page by name - GString name(page_name); -- LinkDest *link = pdf_doc->doc->findDest(&name); -+ std::unique_ptr link = pdf_doc->doc->findDest(&name); - if (link == 0 || !link->isOk()) - pdftex_fail("PDF inclusion: invalid destination <%s>", page_name); - Ref ref = link->getPageRef(); -@@ -774,7 +774,6 @@ read_pdf_info(char *image_name, char *pa - if (page_num == 0) - pdftex_fail("PDF inclusion: destination is not a page <%s>", - page_name); -- delete link; - } else { - // get page by number - if (page_num <= 0 || page_num > epdf_num_pages) diff --git a/texlive-20210325-new-poppler.patch b/texlive-20210325-new-poppler.patch deleted file mode 100644 index 2f5ba71..0000000 --- a/texlive-20210325-new-poppler.patch +++ /dev/null @@ -1,578 +0,0 @@ -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.newpoppler texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.newpoppler 2020-05-14 17:45:48.000000000 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-06 17:39:49.308416042 -0400 -@@ -1,5 +1,5 @@ - /* --Copyright 1996-2016 Han The Thanh, -+Copyright 1996-2017 Han The Thanh, - - This file is part of pdfTeX. - -@@ -17,6 +17,15 @@ You should have received a copy of the G - with this program. If not, see . - */ - -+/* -+This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at -+https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk -+by Arch Linux. A little modifications are made to avoid a crash for -+some kind of pdf images, such as figure_missing.pdf in gnuplot. -+The poppler should be 0.59.0 or newer versions. -+POPPLER_VERSION should be defined. -+*/ -+ - /* Do this early in order to avoid a conflict between - MINGW32 defining 'boolean' as 'unsigned char' and - defining Pascal's boolean as 'int'. -@@ -75,31 +84,6 @@ extern integer zround(double); - #define MASK_SUPPRESS_PTEX_PAGENUMBER 0x04 - #define MASK_SUPPRESS_PTEX_INFODICT 0x08 - --// PdfObject encapsulates the xpdf Object type, --// and properly frees its resources on destruction. --// Use obj-> to access members of the Object, --// and &obj to get a pointer to the object. --// It is no longer necessary to call Object::free explicitely. -- --class PdfObject { -- public: -- PdfObject() { // nothing -- } ~PdfObject() { -- iObject.free(); -- } -- Object *operator->() { -- return &iObject; -- } -- Object *operator&() { -- return &iObject; -- } -- private: // no copying or assigning -- PdfObject(const PdfObject &); -- void operator=(const PdfObject &); -- public: -- Object iObject; --}; -- - // When copying the Resources of the selected page, all objects are copied - // recusively top-down. Indirect objects however are not fetched during - // copying, but get a new object number from pdfTeX and then will be -@@ -203,18 +187,6 @@ static void delete_document(PdfDocument - delete pdf_doc; - } - --// Replacement for --// Object *initDict(Dict *dict1){ initObj(objDict); dict = dict1; return this; } -- --static void initDictFromDict(PdfObject & obj, Dict * dict) --{ -- obj->initDict(xref); -- for (int i = 0, l = dict->getLength(); i < l; i++) { -- Object obj1; -- obj->dictAdd(copyString(dict->getKey(i)), dict->getValNF(i, &obj1)); -- } --} -- - // -------------------------------------------------------------------- - - static int addEncoding(GfxFont * gfont) -@@ -311,10 +283,10 @@ static void copyName(char *s) - - static void copyDictEntry(Object * obj, int i) - { -- PdfObject obj1; -+ Object obj1; - copyName(obj->dictGetKey(i)); - pdf_puts(" "); -- obj->dictGetValNF(i, &obj1); -+ obj1 = obj->dictGetValNF(i); - copyObject(&obj1); - pdf_puts("\n"); - } -@@ -367,17 +339,17 @@ static void copyStream(Stream * str) - static void copyProcSet(Object * obj) - { - int i, l; -- PdfObject procset; -+ Object procset; - if (!obj->isArray()) - pdftex_fail("PDF inclusion: invalid ProcSet array type <%s>", - obj->getTypeName()); - pdf_puts("/ProcSet [ "); - for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { -- obj->arrayGetNF(i, &procset); -- if (!procset->isName()) -+ procset = obj->arrayGetNF(i); -+ if (!procset.isName()) - pdftex_fail("PDF inclusion: invalid ProcSet entry type <%s>", -- procset->getTypeName()); -- copyName(procset->getName()); -+ procset.getTypeName()); -+ copyName(procset.getName()); - pdf_puts(" "); - } - pdf_puts("]\n"); -@@ -385,10 +357,29 @@ static void copyProcSet(Object * obj) - - #define REPLACE_TYPE1C true - -+static bool embeddableFont(Object * fontdesc) -+{ -+ Object fontfile, ffsubtype; -+ -+ if (!fontdesc->isDict()) -+ return false; -+ fontfile = fontdesc->dictLookup("FontFile"); -+ if (fontfile.isStream()) -+ return true; -+ if (REPLACE_TYPE1C) { -+ fontfile = fontdesc->dictLookup("FontFile3"); -+ if (!fontfile.isStream()) -+ return false; -+ ffsubtype = fontfile.streamGetDict()->lookup("Subtype"); -+ return ffsubtype.isName() && !strcmp(ffsubtype.getName(), "Type1C"); -+ } -+ return false; -+} -+ - static void copyFont(char *tag, Object * fontRef) - { -- PdfObject fontdict, subtype, basefont, fontdescRef, fontdesc, charset, -- fontfile, ffsubtype, stemV; -+ Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset, -+ stemV; - GfxFont *gfont; - fd_entry *fd; - fm_entry *fontmap; -@@ -404,33 +395,39 @@ static void copyFont(char *tag, Object * - } - // Only handle included Type1 (and Type1C) fonts; anything else will be copied. - // Type1C fonts are replaced by Type1 fonts, if REPLACE_TYPE1C is true. -- if (!fixedinclusioncopyfont && fontRef->fetch(xref, &fontdict)->isDict() -- && fontdict->dictLookup("Subtype", &subtype)->isName() -- && !strcmp(subtype->getName(), "Type1") -- && fontdict->dictLookup("BaseFont", &basefont)->isName() -- && fontdict->dictLookupNF("FontDescriptor", &fontdescRef)->isRef() -- && fontdescRef->fetch(xref, &fontdesc)->isDict() -- && (fontdesc->dictLookup("FontFile", &fontfile)->isStream() -- || (REPLACE_TYPE1C -- && fontdesc->dictLookup("FontFile3", &fontfile)->isStream() -- && fontfile->streamGetDict()->lookup("Subtype", -- &ffsubtype)->isName() -- && !strcmp(ffsubtype->getName(), "Type1C"))) -- && (fontmap = lookup_fontmap(basefont->getName())) != NULL) { -+ fontdict = fontRef->fetch(xref); -+ fontdesc = Object(objNull); -+ if (fontdict.isDict()) { -+ subtype = fontdict.dictLookup("Subtype"); -+ basefont = fontdict.dictLookup("BaseFont"); -+ fontdescRef = fontdict.dictLookupNF("FontDescriptor"); -+ if (fontdescRef.isRef()) { -+ fontdesc = fontdescRef.fetch(xref); -+ } -+ } -+ if (!fixedinclusioncopyfont && fontdict.isDict() -+ && subtype.isName() -+ && !strcmp(subtype.getName(), "Type1") -+ && basefont.isName() -+ && fontdescRef.isRef() -+ && fontdesc.isDict() -+ && embeddableFont(&fontdesc) -+ && (fontmap = lookup_fontmap(basefont.getName())) != NULL) { - // round /StemV value, since the PDF input is a float - // (see Font Descriptors in PDF reference), but we only store an - // integer, since we don't want to change the struct. -- fontdesc->dictLookup("StemV", &stemV); -- fd = epdf_create_fontdescriptor(fontmap, zround(stemV->getNum())); -- if (fontdesc->dictLookup("CharSet", &charset) && -- charset->isString() && is_subsetable(fontmap)) -- epdf_mark_glyphs(fd, charset->getString()->getCString()); -+ stemV = fontdesc.dictLookup("StemV"); -+ fd = epdf_create_fontdescriptor(fontmap, zround(stemV.getNum())); -+ charset = fontdesc.dictLookup("CharSet"); -+ if (!charset.isNull() && -+ charset.isString() && is_subsetable(fontmap)) -+ epdf_mark_glyphs(fd, charset.getString()->getCString()); - else - embed_whole_font(fd); -- addFontDesc(fontdescRef->getRef(), fd); -+ addFontDesc(fontdescRef.getRef(), fd); - copyName(tag); - gfont = GfxFont::makeFont(xref, tag, fontRef->getRef(), -- fontdict->getDict()); -+ fontdict.getDict()); - pdf_printf(" %d 0 R ", addFont(fontRef->getRef(), fd, - addEncoding(gfont))); - } else { -@@ -442,24 +439,24 @@ static void copyFont(char *tag, Object * - - static void copyFontResources(Object * obj) - { -- PdfObject fontRef; -+ Object fontRef; - int i, l; - if (!obj->isDict()) - pdftex_fail("PDF inclusion: invalid font resources dict type <%s>", - obj->getTypeName()); - pdf_puts("/Font << "); - for (i = 0, l = obj->dictGetLength(); i < l; ++i) { -- obj->dictGetValNF(i, &fontRef); -- if (fontRef->isRef()) -+ fontRef = obj->dictGetValNF(i); -+ if (fontRef.isRef()) - copyFont(obj->dictGetKey(i), &fontRef); -- else if (fontRef->isDict()) { // some programs generate pdf with embedded font object -+ else if (fontRef.isDict()) { // some programs generate pdf with embedded font object - copyName(obj->dictGetKey(i)); - pdf_puts(" "); - copyObject(&fontRef); - } - else - pdftex_fail("PDF inclusion: invalid font in reference type <%s>", -- fontRef->getTypeName()); -+ fontRef.getTypeName()); - } - pdf_puts(">>\n"); - } -@@ -548,7 +545,7 @@ static char *convertNumToPDF(double n) - - static void copyObject(Object * obj) - { -- PdfObject obj1; -+ Object obj1; - int i, l, c; - Ref ref; - char *p; -@@ -592,8 +589,8 @@ static void copyObject(Object * obj) - } else if (obj->isArray()) { - pdf_puts("["); - for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { -- obj->arrayGetNF(i, &obj1); -- if (!obj1->isName()) -+ obj1 = obj->arrayGetNF(i); -+ if (!obj1.isName()) - pdf_puts(" "); - copyObject(&obj1); - } -@@ -603,9 +600,8 @@ static void copyObject(Object * obj) - copyDict(obj); - pdf_puts(">>"); - } else if (obj->isStream()) { -- initDictFromDict(obj1, obj->streamGetDict()); - pdf_puts("<<\n"); -- copyDict(&obj1); -+ copyDict(obj->getStream()->getDictObject()); - pdf_puts(">>\n"); - pdf_puts("stream\n"); - copyStream(obj->getStream()->getUndecodedStream()); -@@ -629,9 +625,8 @@ static void writeRefs() - InObj *r; - for (r = inObjList; r != 0; r = r->next) { - if (!r->written) { -- Object obj1; - r->written = 1; -- xref->fetch(r->ref.num, r->ref.gen, &obj1); -+ Object obj1 = xref->fetch(r->ref.num, r->ref.gen); - if (r->type == objFont) { - assert(!obj1.isStream()); - pdfbeginobj(r->num, 2); // \pdfobjcompresslevel = 2 is for this -@@ -647,7 +642,6 @@ static void writeRefs() - pdf_puts("\n"); - pdfendobj(); - } -- obj1.free(); - } - } - } -@@ -805,8 +799,8 @@ void write_epdf(void) - Page *page; - Ref *pageRef; - Dict *pageDict; -- PdfObject contents, obj1, obj2, pageObj, dictObj; -- PdfObject groupDict; -+ Object contents, obj1, obj2, pageObj, dictObj; -+ Object groupDict; - bool writeSepGroup = false; - Object info; - char *key; -@@ -833,8 +827,8 @@ void write_epdf(void) - encodingList = 0; - page = pdf_doc->doc->getCatalog()->getPage(epdf_selected_page); - pageRef = pdf_doc->doc->getCatalog()->getPageRef(epdf_selected_page); -- xref->fetch(pageRef->num, pageRef->gen, &pageObj); -- pageDict = pageObj->getDict(); -+ pageObj = xref->fetch(pageRef->num, pageRef->gen); -+ pageDict = pageObj.getDict(); - rotate = page->getRotate(); - PDFRectangle *pagebox; - // write the Page header -@@ -852,7 +846,7 @@ void write_epdf(void) - pdf_printf("/%s.PageNumber %i\n", pdfkeyprefix, (int) epdf_selected_page); - } - if ((suppress_ptex_info & MASK_SUPPRESS_PTEX_INFODICT) == 0) { -- pdf_doc->doc->getDocInfoNF(&info); -+ info = pdf_doc->doc->getDocInfoNF(); - if (info.isRef()) { - // the info dict must be indirect (PDF Ref p. 61) - pdf_printf("/%s.InfoDict ", pdfkeyprefix); -@@ -908,14 +902,14 @@ void write_epdf(void) - pdf_puts(stripzeros(s)); - - // Metadata validity check (as a stream it must be indirect) -- pageDict->lookupNF("Metadata", &dictObj); -- if (!dictObj->isNull() && !dictObj->isRef()) -+ dictObj = pageDict->lookupNF("Metadata"); -+ if (!dictObj.isNull() && !dictObj.isRef()) - pdftex_warn("PDF inclusion: /Metadata must be indirect object"); - - // copy selected items in Page dictionary except Resources & Group - for (i = 0; pageDictKeys[i] != NULL; i++) { -- pageDict->lookupNF(pageDictKeys[i], &dictObj); -- if (!dictObj->isNull()) { -+ dictObj = pageDict->lookupNF(pageDictKeys[i]); -+ if (!dictObj.isNull()) { - pdf_newline(); - pdf_printf("/%s ", pageDictKeys[i]); - copyObject(&dictObj); // preserves indirection -@@ -923,8 +917,8 @@ void write_epdf(void) - } - - // handle page group -- pageDict->lookupNF("Group", &dictObj); -- if (!dictObj->isNull()) { -+ dictObj = pageDict->lookupNF("Group"); -+ if (!dictObj.isNull()) { - if (pdfpagegroupval == 0) { - // another pdf with page group was included earlier on the - // same page; copy the Group entry as is. See manual for -@@ -938,11 +932,36 @@ void write_epdf(void) - copyObject(&dictObj); - } else { - // write Group dict as a separate object, since the Page dict also refers to it -- pageDict->lookup("Group", &dictObj); -- if (!dictObj->isDict()) -+ dictObj = pageDict->lookup("Group"); -+ if (!dictObj.isDict()) - pdftex_fail("PDF inclusion: /Group dict missing"); - writeSepGroup = true; -- initDictFromDict(groupDict, page->getGroup()); -+/* -+This part is only a single line -+ groupDict = Object(page->getGroup()); -+in the original patch. In this case, however, pdftex crashes at -+"delete pdf_doc->doc" in "delete_document()" for inclusion of some -+kind of pdf images, for example, figure_missing.pdf in gnuplot. -+A change -+ groupDict = Object(page->getGroup()).copy(); -+does not improve the situation. -+The changes below seem to work fine. -+*/ -+// begin modification -+ groupDict = pageDict->lookup("Group"); -+ const Dict& dic1 = page->getGroup(); -+ const Dict& dic2 = groupDict.getDict(); -+ // replace dic2 in groupDict with dic1 -+ l = dic2.getLength(); -+ for (i = 0; i < l; i++) { -+ groupDict.dictRemove(dic2.getKey(i)); -+ } -+ l = dic1.getLength(); -+ for (i = 0; i < l; i++) { -+ groupDict.dictAdd(copyString(dic1.getKey(i)), -+ dic1.getValNF(i)); -+ } -+// end modification - pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); - } - } -@@ -955,14 +974,14 @@ void write_epdf(void) - pdftex_warn - ("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)"); - } else { -- initDictFromDict(obj1, page->getResourceDict()); -+ Object *obj1 = page->getResourceDictObject(); - if (!obj1->isDict()) - pdftex_fail("PDF inclusion: invalid resources dict type <%s>", - obj1->getTypeName()); - pdf_newline(); - pdf_puts("/Resources <<\n"); - for (i = 0, l = obj1->dictGetLength(); i < l; ++i) { -- obj1->dictGetVal(i, &obj2); -+ obj2 = obj1->dictGetVal(i); - key = obj1->dictGetKey(i); - if (strcmp("Font", key) == 0) - copyFontResources(&obj2); -@@ -975,8 +994,8 @@ void write_epdf(void) - } - - // write the page contents -- page->getContents(&contents); -- if (contents->isStream()) { -+ contents = page->getContents(); -+ if (contents.isStream()) { - - // Variant A: get stream and recompress under control - // of \pdfcompresslevel -@@ -987,36 +1006,35 @@ void write_epdf(void) - - // Variant B: copy stream without recompressing - // -- contents->streamGetDict()->lookup("F", &obj1); -- if (!obj1->isNull()) { -+ obj1 = contents.streamGetDict()->lookup("F"); -+ if (!obj1.isNull()) { - pdftex_fail("PDF inclusion: Unsupported external stream"); - } -- contents->streamGetDict()->lookup("Length", &obj1); -- assert(!obj1->isNull()); -+ obj1 = contents.streamGetDict()->lookup("Length"); -+ assert(!obj1.isNull()); - pdf_puts("/Length "); - copyObject(&obj1); - pdf_puts("\n"); -- contents->streamGetDict()->lookup("Filter", &obj1); -- if (!obj1->isNull()) { -+ obj1 = contents.streamGetDict()->lookup("Filter"); -+ if (!obj1.isNull()) { - pdf_puts("/Filter "); - copyObject(&obj1); - pdf_puts("\n"); -- contents->streamGetDict()->lookup("DecodeParms", &obj1); -- if (!obj1->isNull()) { -+ obj1 = contents.streamGetDict()->lookup("DecodeParms"); -+ if (!obj1.isNull()) { - pdf_puts("/DecodeParms "); - copyObject(&obj1); - pdf_puts("\n"); - } - } - pdf_puts(">>\nstream\n"); -- copyStream(contents->getStream()->getUndecodedStream()); -+ copyStream(contents.getStream()->getUndecodedStream()); - pdfendstream(); -- } else if (contents->isArray()) { -+ } else if (contents.isArray()) { - pdfbeginstream(); -- for (i = 0, l = contents->arrayGetLength(); i < l; ++i) { -- Object contentsobj; -- copyStream((contents->arrayGet(i, &contentsobj))->getStream()); -- contentsobj.free(); -+ for (i = 0, l = contents.arrayGetLength(); i < l; ++i) { -+ Object contentsobj = contents.arrayGet(i); -+ copyStream(contentsobj.getStream()); - if (i < l - 1) - pdf_newline(); // add a newline after each stream except the last - } -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.newpoppler texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.newpoppler 2020-05-14 17:45:48.000000000 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-06 17:50:38.863177570 -0400 -@@ -16,6 +16,14 @@ GNU General Public License for more deta - You should have received a copy of the GNU General Public License along - with this program. If not, see . - */ -+ -+/* -+This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at -+https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk -+by Arch Linux. The poppler should be 0.59.0 or newer versions. -+POPPLER_VERSION should be defined. -+*/ -+ - #include - - #include -@@ -77,22 +85,20 @@ int main(int argc, char *argv[]) - objgen = atoi(argv[3]); - } - xref = doc->getXRef(); -- catalogDict.initNull(); -- xref->getCatalog(&catalogDict); -+ catalogDict = xref->getCatalog(); - if (!catalogDict.isDict("Catalog")) { - fprintf(stderr, "No Catalog found\n"); - exit(1); - } -- srcStream.initNull(); -+ srcStream = Object(objNull); - if (objnum == 0) { -- catalogDict.dictLookup("SourceObject", &srcStream); -+ srcStream = catalogDict.dictLookup("SourceObject"); - static char const_SourceFile[] = "SourceFile"; - if (!srcStream.isStream(const_SourceFile)) { - fprintf(stderr, "No SourceObject found\n"); - exit(1); - } -- srcName.initNull(); -- srcStream.getStream()->getDict()->lookup("SourceName", &srcName); -+ srcName = srcStream.getStream()->getDict()->lookup("SourceName"); - if (!srcName.isString()) { - fprintf(stderr, "No SourceName found\n"); - exit(1); -@@ -101,7 +107,7 @@ int main(int argc, char *argv[]) - // We cannot free srcName, as objname shares its string. - // srcName.free(); - } else if (objnum > 0) { -- xref->fetch(objnum, objgen, &srcStream); -+ srcStream = xref->fetch(objnum, objgen); - if (!srcStream.isStream()) { - fprintf(stderr, "Not a Stream object\n"); - exit(1); -@@ -151,26 +157,24 @@ int main(int argc, char *argv[]) - int localOffset = 0; - Guint firstOffset; - -- assert(xref->fetch(e->offset, 0, &objStr)->isStream()); -- nObjects = objStr.streamGetDict()->lookup("N", &obj1)->getInt(); -- obj1.free(); -- first = objStr.streamGetDict()->lookup("First", &obj1)->getInt(); -- obj1.free(); -+ objStr = xref->fetch(e->offset, 0); -+ assert(objStr.isStream()); -+ obj1 = objStr.streamGetDict()->lookup("N"); -+ nObjects = obj1.getInt(); -+ obj1 = objStr.streamGetDict()->lookup("First"); -+ first = obj1.getInt(); - firstOffset = objStr.getStream()->getBaseStream()->getStart() + first; - - // parse the header: object numbers and offsets - objStr.streamReset(); -- obj1.initNull(); -- str = new EmbedStream(objStr.getStream(), &obj1, gTrue, first); -+ str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first); - lexer = new Lexer(xref, str); - parser = new Parser(xref, lexer, gFalse); - for (n = 0; n < nObjects; ++n) { -- parser->getObj(&obj1); -- parser->getObj(&obj2); -+ obj1 = parser->getObj(); -+ obj2 = parser->getObj(); - if (n == e->gen) - localOffset = obj2.getInt(); -- obj1.free(); -- obj2.free(); - } - #if defined(XPDF304) - while (str->getChar() != EOF) ; -@@ -178,7 +182,6 @@ int main(int argc, char *argv[]) - lexer->skipToEOF(); - #endif - delete parser; -- objStr.free(); - - fprintf(outfile, "%.10lu 00000 n\n", - (long unsigned)(firstOffset + localOffset)); -@@ -189,7 +192,6 @@ int main(int argc, char *argv[]) - s->reset(); - while ((c = s->getChar()) != EOF) - fputc(c, outfile); -- srcStream.free(); - } - if (objnum == 0) - fprintf(stderr, "Source file extracted to %s\n", outname); -@@ -198,7 +200,6 @@ int main(int argc, char *argv[]) - else - fprintf(stderr, "Cross-reference table extracted to %s\n", outname); - fclose(outfile); -- catalogDict.free(); - delete doc; - delete globalParams; - } diff --git a/texlive-20210325-poppler-0.73.patch b/texlive-20210325-poppler-0.73.patch deleted file mode 100644 index 4b24f29..0000000 --- a/texlive-20210325-poppler-0.73.patch +++ /dev/null @@ -1,200 +0,0 @@ -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.73 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.73 2021-05-06 18:01:35.847959461 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-06 18:08:20.143955577 -0400 -@@ -114,7 +114,7 @@ struct UsedEncoding { - - static InObj *inObjList; - static UsedEncoding *encodingList; --static GBool isInit = gFalse; -+static bool isInit = false; - - // -------------------------------------------------------------------- - // Maintain list of open embedded PDF files -@@ -269,7 +269,7 @@ static int getNewObjectNumber(Ref ref) - - static void copyObject(Object *); - --static void copyName(char *s) -+static void copyName(const char *s) - { - pdf_puts("/"); - for (; *s != 0; s++) { -@@ -304,7 +304,7 @@ static void copyDict(Object * obj) - static void copyFontDict(Object * obj, InObj * r) - { - int i, l; -- char *key; -+ const char *key; - if (!obj->isDict()) - pdftex_fail("PDF inclusion: invalid dict type <%s>", - obj->getTypeName()); -@@ -376,7 +376,7 @@ static bool embeddableFont(Object * font - return false; - } - --static void copyFont(char *tag, Object * fontRef) -+static void copyFont(const char *tag, Object * fontRef) - { - Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset, - stemV; -@@ -412,7 +412,7 @@ static void copyFont(char *tag, Object * - && fontdescRef.isRef() - && fontdesc.isDict() - && embeddableFont(&fontdesc) -- && (fontmap = lookup_fontmap(basefont.getName())) != NULL) { -+ && (fontmap = lookup_fontmap((char *)basefont.getName())) != NULL) { - // round /StemV value, since the PDF input is a float - // (see Font Descriptors in PDF reference), but we only store an - // integer, since we don't want to change the struct. -@@ -421,7 +421,7 @@ static void copyFont(char *tag, Object * - charset = fontdesc.dictLookup("CharSet"); - if (!charset.isNull() && - charset.isString() && is_subsetable(fontmap)) -- epdf_mark_glyphs(fd, charset.getString()->getCString()); -+ epdf_mark_glyphs(fd, (char *)charset.getString()->c_str()); - else - embed_whole_font(fd); - addFontDesc(fontdescRef.getRef(), fd); -@@ -461,7 +461,7 @@ static void copyFontResources(Object * o - pdf_puts(">>\n"); - } - --static void copyOtherResources(Object * obj, char *key) -+static void copyOtherResources(Object * obj, const char *key) - { - // copies all other resources (write_epdf handles Fonts and ProcSets), - -@@ -548,8 +548,8 @@ static void copyObject(Object * obj) - Object obj1; - int i, l, c; - Ref ref; -- char *p; -- GString *s; -+ const char *p; -+ const GString *s; - if (obj->isBool()) { - pdf_printf("%s", obj->getBool()? "true" : "false"); - } else if (obj->isInt()) { -@@ -560,7 +560,7 @@ static void copyObject(Object * obj) - pdf_printf("%s", convertNumToPDF(obj->getNum())); - } else if (obj->isString()) { - s = obj->getString(); -- p = s->getCString(); -+ p = s->c_str(); - l = s->getLength(); - if (strlen(p) == (unsigned int) l) { - pdf_puts("("); -@@ -658,7 +658,7 @@ static void writeEncodings() - ("PDF inclusion: CID fonts are not supported" - " (try to disable font replacement to fix this)"); - } -- if ((s = ((Gfx8BitFont *) r->font)->getCharName(i)) != 0) -+ if ((s = (char *) ((Gfx8BitFont *) r->font)->getCharName(i)) != 0) - glyphNames[i] = s; - else - glyphNames[i] = notdef; -@@ -673,7 +673,7 @@ static void writeEncodings() - } - - // get the pagebox according to the pagebox_spec --static PDFRectangle *get_pagebox(Page * page, int pagebox_spec) -+static const PDFRectangle *get_pagebox(Page * page, int pagebox_spec) - { - if (pagebox_spec == pdfboxspecmedia) - return page->getMediaBox(); -@@ -705,13 +705,13 @@ read_pdf_info(char *image_name, char *pa - { - PdfDocument *pdf_doc; - Page *page; -- PDFRectangle *pagebox; -+ const PDFRectangle *pagebox; - float pdf_version_found, pdf_version_wanted; - // initialize - if (!isInit) { - globalParams = new GlobalParams(); -- globalParams->setErrQuiet(gFalse); -- isInit = gTrue; -+ globalParams->setErrQuiet(false); -+ isInit = true; - } - // open PDF file - pdf_doc = find_add_document(image_name); -@@ -803,7 +803,7 @@ void write_epdf(void) - Object groupDict; - bool writeSepGroup = false; - Object info; -- char *key; -+ const char *key; - char s[256]; - int i, l; - int rotate; -@@ -830,7 +830,7 @@ void write_epdf(void) - pageObj = xref->fetch(pageRef->num, pageRef->gen); - pageDict = pageObj.getDict(); - rotate = page->getRotate(); -- PDFRectangle *pagebox; -+ const PDFRectangle *pagebox; - // write the Page header - pdf_puts("/Type /XObject\n"); - pdf_puts("/Subtype /Form\n"); -@@ -958,7 +958,7 @@ The changes below seem to work fine. - } - l = dic1.getLength(); - for (i = 0; i < l; i++) { -- groupDict.dictAdd(copyString(dic1.getKey(i)), -+ groupDict.dictAdd(dic1.getKey(i), - dic1.getValNF(i)); - } - // end modification -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.73 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.73 2021-05-06 18:01:35.847959461 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-06 18:01:35.854959565 -0400 -@@ -103,7 +103,7 @@ int main(int argc, char *argv[]) - fprintf(stderr, "No SourceName found\n"); - exit(1); - } -- outname = srcName.getString()->getCString(); -+ outname = (char *)srcName.getString()->c_str(); - // We cannot free srcName, as objname shares its string. - // srcName.free(); - } else if (objnum > 0) { -@@ -112,7 +112,7 @@ int main(int argc, char *argv[]) - fprintf(stderr, "Not a Stream object\n"); - exit(1); - } -- sprintf(buf, "%s", fileName->getCString()); -+ sprintf(buf, "%s", fileName->c_str()); - if ((p = strrchr(buf, '.')) == 0) - p = strchr(buf, 0); - if (objgen == 0) -@@ -122,7 +122,7 @@ int main(int argc, char *argv[]) - outname = buf; - } else { // objnum < 0 means we are extracting the XRef table - extract_xref_table = true; -- sprintf(buf, "%s", fileName->getCString()); -+ sprintf(buf, "%s", fileName->c_str()); - if ((p = strrchr(buf, '.')) == 0) - p = strchr(buf, 0); - sprintf(p, ".xref"); -@@ -155,7 +155,7 @@ int main(int argc, char *argv[]) - Object objStr, obj1, obj2; - int nObjects, first, n; - int localOffset = 0; -- Guint firstOffset; -+ unsigned int firstOffset; - - objStr = xref->fetch(e->offset, 0); - assert(objStr.isStream()); -@@ -167,9 +167,9 @@ int main(int argc, char *argv[]) - - // parse the header: object numbers and offsets - objStr.streamReset(); -- str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first); -+ str = new EmbedStream(objStr.getStream(), Object(objNull), true, first); - lexer = new Lexer(xref, str); -- parser = new Parser(xref, lexer, gFalse); -+ parser = new Parser(xref, lexer, false); - for (n = 0; n < nObjects; ++n) { - obj1 = parser->getObj(); - obj2 = parser->getObj(); -diff -up texlive-base-20210325/source/texk/web2c/xetexdir/pdfimage.cpp.poppler-0.73 texlive-base-20210325/source/texk/web2c/xetexdir/pdfimage.cpp diff --git a/texlive-20210325-poppler-0.84.patch b/texlive-20210325-poppler-0.84.patch deleted file mode 100644 index 37cb1c3..0000000 --- a/texlive-20210325-poppler-0.84.patch +++ /dev/null @@ -1,228 +0,0 @@ -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.84 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-0.84 2021-05-06 18:21:18.379430999 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-10 11:15:09.572907304 -0400 -@@ -26,6 +26,15 @@ The poppler should be 0.59.0 or newer ve - POPPLER_VERSION should be defined. - */ - -+#ifdef POPPLER_VERSION -+#include -+#define xpdfVersion POPPLER_VERSION -+#define xpdfString "poppler" -+#else -+#include /* just to get the xpdf version */ -+#define xpdfString "xpdf" -+#endif -+ - /* Do this early in order to avoid a conflict between - MINGW32 defining 'boolean' as 'unsigned char' and - defining Pascal's boolean as 'int'. -@@ -286,7 +295,7 @@ static void copyDictEntry(Object * obj, - Object obj1; - copyName(obj->dictGetKey(i)); - pdf_puts(" "); -- obj1 = obj->dictGetValNF(i); -+ obj1 = obj->dictGetValNF(i).copy(); - copyObject(&obj1); - pdf_puts("\n"); - } -@@ -345,7 +354,7 @@ static void copyProcSet(Object * obj) - obj->getTypeName()); - pdf_puts("/ProcSet [ "); - for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { -- procset = obj->arrayGetNF(i); -+ procset = obj->arrayGetNF(i).copy(); - if (!procset.isName()) - pdftex_fail("PDF inclusion: invalid ProcSet entry type <%s>", - procset.getTypeName()); -@@ -400,7 +409,7 @@ static void copyFont(const char *tag, Ob - if (fontdict.isDict()) { - subtype = fontdict.dictLookup("Subtype"); - basefont = fontdict.dictLookup("BaseFont"); -- fontdescRef = fontdict.dictLookupNF("FontDescriptor"); -+ fontdescRef = fontdict.dictLookupNF("FontDescriptor").copy(); - if (fontdescRef.isRef()) { - fontdesc = fontdescRef.fetch(xref); - } -@@ -446,7 +455,7 @@ static void copyFontResources(Object * o - obj->getTypeName()); - pdf_puts("/Font << "); - for (i = 0, l = obj->dictGetLength(); i < l; ++i) { -- fontRef = obj->dictGetValNF(i); -+ fontRef = obj->dictGetValNF(i).copy(); - if (fontRef.isRef()) - copyFont(obj->dictGetKey(i), &fontRef); - else if (fontRef.isDict()) { // some programs generate pdf with embedded font object -@@ -589,7 +598,7 @@ static void copyObject(Object * obj) - } else if (obj->isArray()) { - pdf_puts("["); - for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { -- obj1 = obj->arrayGetNF(i); -+ obj1 = obj->arrayGetNF(i).copy(); - if (!obj1.isName()) - pdf_puts(" "); - copyObject(&obj1); -@@ -709,7 +718,7 @@ read_pdf_info(char *image_name, char *pa - float pdf_version_found, pdf_version_wanted; - // initialize - if (!isInit) { -- globalParams = new GlobalParams(); -+ globalParams = std::unique_ptr(new GlobalParams()); - globalParams->setErrQuiet(false); - isInit = true; - } -@@ -742,7 +751,7 @@ read_pdf_info(char *image_name, char *pa - if (link == 0 || !link->isOk()) - pdftex_fail("PDF inclusion: invalid destination <%s>", page_name); - Ref ref = link->getPageRef(); -- page_num = pdf_doc->doc->getCatalog()->findPage(ref.num, ref.gen); -+ page_num = pdf_doc->doc->getCatalog()->findPage(ref); - if (page_num == 0) - pdftex_fail("PDF inclusion: destination is not a page <%s>", - page_name); -@@ -902,13 +911,13 @@ void write_epdf(void) - pdf_puts(stripzeros(s)); - - // Metadata validity check (as a stream it must be indirect) -- dictObj = pageDict->lookupNF("Metadata"); -+ dictObj = pageDict->lookupNF("Metadata").copy(); - if (!dictObj.isNull() && !dictObj.isRef()) - pdftex_warn("PDF inclusion: /Metadata must be indirect object"); - - // copy selected items in Page dictionary except Resources & Group - for (i = 0; pageDictKeys[i] != NULL; i++) { -- dictObj = pageDict->lookupNF(pageDictKeys[i]); -+ dictObj = pageDict->lookupNF(pageDictKeys[i]).copy(); - if (!dictObj.isNull()) { - pdf_newline(); - pdf_printf("/%s ", pageDictKeys[i]); -@@ -917,7 +926,7 @@ void write_epdf(void) - } - - // handle page group -- dictObj = pageDict->lookupNF("Group"); -+ dictObj = pageDict->lookupNF("Group").copy(); - if (!dictObj.isNull()) { - if (pdfpagegroupval == 0) { - // another pdf with page group was included earlier on the -@@ -959,7 +968,7 @@ The changes below seem to work fine. - l = dic1.getLength(); - for (i = 0; i < l; i++) { - groupDict.dictAdd(dic1.getKey(i), -- dic1.getValNF(i)); -+ dic1.getValNF(i).copy()); - } - // end modification - pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); -@@ -1089,6 +1098,6 @@ void epdf_check_mem() - delete_document(p); - } - // see above for globalParams -- delete globalParams; -+ globalParams.reset(); - } - } -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.84 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-0.84 2021-05-06 18:21:18.379430999 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-06 18:21:18.383431058 -0400 -@@ -24,6 +24,15 @@ by Arch Linux. The poppler should be 0.5 - POPPLER_VERSION should be defined. - */ - -+#ifdef POPPLER_VERSION -+#include -+#define xpdfVersion POPPLER_VERSION -+#define xpdfString "poppler" -+#else -+#include /* just to get the xpdf version */ -+#define xpdfString "xpdf" -+#endif -+ - #include - - #include -@@ -73,7 +82,7 @@ int main(int argc, char *argv[]) - exit(1); - } - fileName = new GString(argv[1]); -- globalParams = new GlobalParams(); -+ globalParams = std::unique_ptr(new GlobalParams()); - doc = new PDFDoc(fileName); - if (!doc->isOk()) { - fprintf(stderr, "Invalid PDF file\n"); -@@ -94,7 +103,7 @@ int main(int argc, char *argv[]) - if (objnum == 0) { - srcStream = catalogDict.dictLookup("SourceObject"); - static char const_SourceFile[] = "SourceFile"; -- if (!srcStream.isStream(const_SourceFile)) { -+ if (!(srcStream.isStream() && srcStream.getDict()->is(const_SourceFile))) { - fprintf(stderr, "No SourceObject found\n"); - exit(1); - } -@@ -150,7 +159,6 @@ int main(int argc, char *argv[]) - (e->type == xrefEntryFree ? "f" : "n")); - else { // e->offset is the object number of the object stream - Stream *str; -- Lexer *lexer; - Parser *parser; - Object objStr, obj1, obj2; - int nObjects, first, n; -@@ -168,8 +176,7 @@ int main(int argc, char *argv[]) - // parse the header: object numbers and offsets - objStr.streamReset(); - str = new EmbedStream(objStr.getStream(), Object(objNull), true, first); -- lexer = new Lexer(xref, str); -- parser = new Parser(xref, lexer, false); -+ parser = new Parser(xref, str, false); - for (n = 0; n < nObjects; ++n) { - obj1 = parser->getObj(); - obj2 = parser->getObj(); -@@ -201,5 +208,5 @@ int main(int argc, char *argv[]) - fprintf(stderr, "Cross-reference table extracted to %s\n", outname); - fclose(outfile); - delete doc; -- delete globalParams; -+ globalParams.reset(); - } -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c.poppler-0.84 texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c ---- texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c.poppler-0.84 2019-12-29 19:37:32.000000000 -0500 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/utils.c 2021-05-06 18:21:18.383431058 -0400 -@@ -32,14 +32,6 @@ with this program. If not, see - #include "ptexlib.h" - #include --#ifdef POPPLER_VERSION --/* POPPLER_VERSION should be a proper version string */ --#define xpdfVersion POPPLER_VERSION --#define xpdfString "poppler" --#else --#include /* just to get the xpdf version */ --#define xpdfString "xpdf" --#endif - - #define check_nprintf(size_get, size_want) \ - if ((unsigned)(size_get) >= (unsigned)(size_want)) \ -@@ -977,12 +969,10 @@ void initversionstring(char **versions) - { - const_string fmt = - "Compiled with libpng %s; using libpng %s\n" -- "Compiled with zlib %s; using zlib %s\n" -- "Compiled with %s version %s\n"; -+ "Compiled with zlib %s; using zlib %s\n"; - size_t len = strlen(fmt) - + strlen(PNG_LIBPNG_VER_STRING) + strlen(png_libpng_ver) - + strlen(ZLIB_VERSION) + strlen(zlib_version) -- + strlen(xpdfString) + strlen(xpdfVersion) - + 1; - - /* len will be more than enough, because of the placeholder chars in fmt -@@ -990,7 +980,7 @@ void initversionstring(char **versions) - *versions = xmalloc(len); - sprintf(*versions, fmt, - PNG_LIBPNG_VER_STRING, png_libpng_ver, -- ZLIB_VERSION, zlib_version, xpdfString, xpdfVersion); -+ ZLIB_VERSION, zlib_version); - } - - -diff -up texlive-base-20210325/source/texk/web2c/xetexdir/XeTeX_ext.c.poppler-0.84 texlive-base-20210325/source/texk/web2c/xetexdir/XeTeX_ext.c diff --git a/texlive-20220321-disable-more-failing-tests.patch b/texlive-20220321-disable-more-failing-tests.patch deleted file mode 100644 index 6e17370..0000000 --- a/texlive-20220321-disable-more-failing-tests.patch +++ /dev/null @@ -1,140 +0,0 @@ -diff -up texlive-base-20220321/source/texk/kpathsea/Makefile.am.dt texlive-base-20220321/source/texk/kpathsea/Makefile.am ---- texlive-base-20220321/source/texk/kpathsea/Makefile.am.dt 2020-06-22 18:11:50.000000000 -0400 -+++ texlive-base-20220321/source/texk/kpathsea/Makefile.am 2022-04-24 15:03:32.852801273 -0400 -@@ -275,7 +275,7 @@ uninstall-local: - AM_TESTS_ENVIRONMENT = LN_S='$(LN_S)'; export LN_S; - AM_TESTS_ENVIRONMENT += LT_OBJDIR='$(LT_OBJDIR)'; export LT_OBJDIR; - # --TESTS = tests/cnfline.test tests/cnfnewline.test -+TESTS = tests/cnfnewline.test - TESTS += tests/cnfnull.test tests/cnfprog.test - TESTS += tests/kpseaccess.test - TESTS += tests/kpsereadlink.test tests/kpsestat.test tests/kpsewhich.test -diff -up texlive-base-20220321/source/texk/kpathsea/Makefile.in.dt texlive-base-20220321/source/texk/kpathsea/Makefile.in ---- texlive-base-20220321/source/texk/kpathsea/Makefile.in.dt 2021-10-04 11:13:00.000000000 -0400 -+++ texlive-base-20220321/source/texk/kpathsea/Makefile.in 2022-04-24 15:03:32.852801273 -0400 -@@ -861,7 +861,7 @@ dist_noinst_DATA = texmf.cnf - AM_TESTS_ENVIRONMENT = LN_S='$(LN_S)'; export LN_S; \ - LT_OBJDIR='$(LT_OBJDIR)'; export LT_OBJDIR; - # --TESTS = tests/cnfline.test tests/cnfnewline.test tests/cnfnull.test \ -+TESTS = tests/cnfnewline.test tests/cnfnull.test \ - tests/cnfprog.test tests/kpseaccess.test \ - tests/kpsereadlink.test tests/kpsestat.test \ - tests/kpsewhich.test -diff -up texlive-base-20220321/source/texk/web2c/am/texmf.am.dt texlive-base-20220321/source/texk/web2c/am/texmf.am ---- texlive-base-20220321/source/texk/web2c/am/texmf.am.dt 2022-01-11 17:47:10.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/am/texmf.am 2022-04-24 15:03:32.850801263 -0400 -@@ -77,7 +77,7 @@ DISTCLEANFILES += $(nodist_tex_SOURCES) - - # TeX tests - # --tex_tests = triptest.test tests/write18-quote-test.pl tests/tex-closeout.test -+tex_tests = tests/write18-quote-test.pl tests/tex-closeout.test - triptest.log: tex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) - tests/write18-quote-test.log tests/tex-closeout.test: tex$(EXEEXT) - EXTRA_DIST += $(tex_tests) -@@ -205,7 +205,7 @@ DISTCLEANFILES += $(nodist_libmf_a_SOURC - - # Metafont tests - # --mf_tests = mftraptest.test -+mf_tests = - mftraptest.log: mf$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) - EXTRA_DIST += $(mf_tests) - if MF -diff -up texlive-base-20220321/source/texk/web2c/eptexdir/am/eptex.am.dt texlive-base-20220321/source/texk/web2c/eptexdir/am/eptex.am ---- texlive-base-20220321/source/texk/web2c/eptexdir/am/eptex.am.dt 2022-01-11 17:47:10.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/eptexdir/am/eptex.am 2022-04-24 15:03:32.850801263 -0400 -@@ -89,7 +89,7 @@ EXTRA_DIST += \ - - # e-pTeX Tests - # --eptex_tests = eptexdir/eptriptest.test eptexdir/pdfprimitive.test eptexdir/epver.test -+eptex_tests = eptexdir/epver.test - eptexdir/eptriptest.log: eptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) - eptexdir/pdfprimitive.log: eptex$(EXEEXT) - eptexdir/epver.log: eptex$(EXEEXT) -diff -up texlive-base-20220321/source/texk/web2c/euptexdir/am/euptex.am.dt texlive-base-20220321/source/texk/web2c/euptexdir/am/euptex.am ---- texlive-base-20220321/source/texk/web2c/euptexdir/am/euptex.am.dt 2022-01-11 17:47:10.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/euptexdir/am/euptex.am 2022-04-24 15:03:32.850801263 -0400 -@@ -90,7 +90,7 @@ EXTRA_DIST += \ - - # e-upTeX Tests - # --euptex_tests = euptexdir/euptriptest.test euptexdir/pdfprimitive.test euptexdir/eupver.test -+euptex_tests = euptexdir/eupver.test - euptexdir/euptriptest.log: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) - euptexdir/pdfprimitive.log: euptex$(EXEEXT) - euptexdir/eupver.log: euptex$(EXEEXT) -diff -up texlive-base-20220321/source/texk/web2c/mfluadir/am/mflua.am.dt texlive-base-20220321/source/texk/web2c/mfluadir/am/mflua.am ---- texlive-base-20220321/source/texk/web2c/mfluadir/am/mflua.am.dt 2022-02-18 13:44:19.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/mfluadir/am/mflua.am 2022-04-24 15:03:32.850801263 -0400 -@@ -110,7 +110,7 @@ EXTRA_DIST += \ - - # MFLua tests - # --mflua_tests = mfluadir/mfluatraptest.test -+mflua_tests = - mfluadir/mfluatraptest.log: mflua$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) - EXTRA_DIST += $(mflua_tests) - -diff -up texlive-base-20220321/source/texk/web2c/mfluajitdir/am/mfluajit.am.dt texlive-base-20220321/source/texk/web2c/mfluajitdir/am/mfluajit.am ---- texlive-base-20220321/source/texk/web2c/mfluajitdir/am/mfluajit.am.dt 2022-02-18 13:44:19.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/mfluajitdir/am/mfluajit.am 2022-04-24 15:03:32.851801268 -0400 -@@ -106,7 +106,7 @@ EXTRA_DIST += \ - - # MFLuaJIT tests - # --mfluajit_tests = mfluajitdir/mfluajittraptest.test -+mfluajit_tests = - mfluajitdir/mfluajittraptest.log: mfluajit$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) - EXTRA_DIST += $(mfluajit_tests) - -diff -up texlive-base-20220321/source/texk/web2c/pdftexdir/am/pdftex.am.dt texlive-base-20220321/source/texk/web2c/pdftexdir/am/pdftex.am ---- texlive-base-20220321/source/texk/web2c/pdftexdir/am/pdftex.am.dt 2022-04-24 15:03:32.851801268 -0400 -+++ texlive-base-20220321/source/texk/web2c/pdftexdir/am/pdftex.am 2022-04-24 15:47:20.351639955 -0400 -@@ -104,7 +104,7 @@ EXTRA_DIST += \ - # pdfTeX tests - # - pdftex_tests = pdftexdir/wprob.test pdftexdir/pdftex.test \ -- pdftexdir/pdfimage.test pdftexdir/expanded.test \ -+ pdftexdir/expanded.test \ - pdftexdir/tests/cnfline.test pdftexdir/tests/partoken.test - - pdftexdir/wprob.log pdftexdir/pdftex.log \ -diff -up texlive-base-20220321/source/texk/web2c/ptexdir/am/ptex.am.dt texlive-base-20220321/source/texk/web2c/ptexdir/am/ptex.am ---- texlive-base-20220321/source/texk/web2c/ptexdir/am/ptex.am.dt 2022-01-11 17:47:10.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/ptexdir/am/ptex.am 2022-04-24 15:03:32.851801268 -0400 -@@ -171,7 +171,7 @@ EXTRA_DIST += \ - - # pTeX Tests - # --ptex_tests = ptexdir/ptriptest.test ptexdir/pver.test -+ptex_tests = ptexdir/pver.test - ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) - ptexdir/pver.log: ptex$(EXEEXT) - pweb_tests = \ -diff -up texlive-base-20220321/source/texk/web2c/uptexdir/am/uptex.am.dt texlive-base-20220321/source/texk/web2c/uptexdir/am/uptex.am ---- texlive-base-20220321/source/texk/web2c/uptexdir/am/uptex.am.dt 2022-01-29 05:40:22.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/uptexdir/am/uptex.am 2022-04-24 15:03:32.851801268 -0400 -@@ -161,7 +161,7 @@ EXTRA_DIST += \ - uptexdir/ChangeLog - - # upTeX Tests --uptex_tests = uptexdir/uptriptest.test uptexdir/upver.test -+uptex_tests = uptexdir/upver.test - uptexdir/uptriptest.log: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) - uptexdir/upver.log: uptex$(EXEEXT) - upweb_tests = \ -diff -up texlive-base-20220321/source/texk/web2c/xetexdir/am/xetex.am.dt texlive-base-20220321/source/texk/web2c/xetexdir/am/xetex.am ---- texlive-base-20220321/source/texk/web2c/xetexdir/am/xetex.am.dt 2022-01-11 17:47:10.000000000 -0500 -+++ texlive-base-20220321/source/texk/web2c/xetexdir/am/xetex.am 2022-04-24 15:03:32.852801273 -0400 -@@ -203,7 +203,6 @@ EXTRA_DIST += \ - # - xetex_tests = \ - xetexdir/xetex-filedump.test \ -- xetexdir/xetex-bug73.test \ - xetexdir/xetex.test - xetexdir/xetex-filedump.log xetexdir/xetex-bug73.log xetexdir/xetex.log: xetex$(EXEEXT) - diff --git a/texlive-base-20180414-disable-omegafonts-check-test.patch b/texlive-base-20180414-disable-omegafonts-check-test.patch deleted file mode 100644 index 1879359..0000000 --- a/texlive-base-20180414-disable-omegafonts-check-test.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up texlive-base-20180414/source/texk/web2c/omegafonts/check.test.disabletest texlive-base-20180414/source/texk/web2c/omegafonts/check.test ---- texlive-base-20180414/source/texk/web2c/omegafonts/check.test.disabletest 2018-10-04 13:24:17.965126655 -0400 -+++ texlive-base-20180414/source/texk/web2c/omegafonts/check.test 2018-10-04 13:24:26.068945230 -0400 -@@ -4,6 +4,8 @@ - # Copyright 2014, 2015 Peter Breitenlohner - # You may freely use, modify and/or distribute this file. - -+exit 0 -+ - test -d tests || mkdir -p tests - - TEXMFCNF=$srcdir/../../kpathsea diff --git a/texlive-base-20210325-configure-poppler-xpdf-fix.patch b/texlive-base-20210325-configure-poppler-xpdf-fix.patch deleted file mode 100644 index 61b144c..0000000 --- a/texlive-base-20210325-configure-poppler-xpdf-fix.patch +++ /dev/null @@ -1,159 +0,0 @@ -diff -up texlive-base-20210325/source/configure.poppler-xpdf-fix texlive-base-20210325/source/configure ---- texlive-base-20210325/source/configure.poppler-xpdf-fix 2021-03-24 17:28:22.000000000 -0400 -+++ texlive-base-20210325/source/configure 2021-05-10 15:21:08.254142588 -0400 -@@ -21497,7 +21497,27 @@ if test "x$with_mpfr_libdir" != x && tes - MPFR_LIBS="-L$with_mpfr_libdir $MPFR_LIBS" - fi - --: "kpse_xpdf_system_flags - no-op" -+if $PKG_CONFIG poppler --atleast-version=0.30; then -+ POPPLER_INCLUDES=`$PKG_CONFIG poppler --cflags` -+ POPPLER_LIBS=`$PKG_CONFIG poppler --libs` -+elif test "x$need_poppler:$with_system_poppler" = xyes:yes; then -+ as_fn_error $? "did not find poppler 0.30 or better" "$LINENO" 5 -+fi -+ -+POPPLER_VERSION='-DPOPPLER_VERSION=\"'`$PKG_CONFIG poppler --modversion`'\"' -+POPPLER_INCLUDES="$POPPLER_VERSION $POPPLER_INCLUDES" -+ -+if $PKG_CONFIG poppler --atleast-version=0.12; then -+ XPDF_INCLUDES=`$PKG_CONFIG poppler --cflags` -+ XPDF_LIBS=`$PKG_CONFIG poppler --libs` -+elif test "x$need_xpdf:$with_system_xpdf" = xyes:yes; then -+ as_fn_error $? "did not find poppler 0.12 or better" "$LINENO" 5 -+fi -+ -+POPPLER_VERSION='-DPOPPLER_VERSION=\"'`$PKG_CONFIG poppler --modversion`'\"' -+XPDF_INCLUDES="$POPPLER_VERSION $XPDF_INCLUDES" -+ -+# : "kpse_xpdf_system_flags - no-op" - - if $PKG_CONFIG zziplib --atleast-version=0.12; then - ZZIPLIB_INCLUDES=`$PKG_CONFIG zziplib --cflags` -diff -up texlive-base-20210325/source/texk/web2c/configure.poppler-xpdf-fix texlive-base-20210325/source/texk/web2c/configure ---- texlive-base-20210325/source/texk/web2c/configure.poppler-xpdf-fix 2021-02-16 22:03:54.000000000 -0500 -+++ texlive-base-20210325/source/texk/web2c/configure 2021-05-10 15:21:08.256142617 -0400 -@@ -25500,9 +25500,21 @@ fi - ##tldbg _KPSE_LIB_FLAGS: Setup xpdf (-lxpdf) flags. - echo 'tldbg:_KPSE_LIB_FLAGS called: libdir=xpdf, libname=xpdf, options=, tlincl=-DPDF_PARSER_ONLY -IBLD/libs/xpdf -IBLD/libs/xpdf/goo -IBLD/libs/xpdf/xpdf, tllib=BLD/libs/xpdf/libxpdf.a, tlextra=, rebuildsrcdeps=, rebuildblddeps=${top_builddir}/../../libs/xpdf/xpdf/Stream.h.' >&5 - ##tldbg _KPSE_LIB_FLAGS_TL: xpdf (xpdf) . --: "kpse_xpdf_options - no-op" -+# Check whether --with-system-xpdf was given. -+if test "${with_system_xpdf+set}" = set; then : -+ withval=$with_system_xpdf; -+fi -+ - if test "x$with_system_xpdf" = xyes; then -- : "kpse_xpdf_system_flags - no-op" -+ if $PKG_CONFIG poppler --atleast-version=0.12; then -+ XPDF_INCLUDES=`$PKG_CONFIG poppler --cflags` -+ XPDF_LIBS=`$PKG_CONFIG poppler --libs` -+elif test "x$need_xpdf:$with_system_xpdf" = xyes:yes; then -+ as_fn_error $? "did not find poppler 0.12 or better" "$LINENO" 5 -+fi -+ -+POPPLER_VERSION='-DPOPPLER_VERSION=\"'`$PKG_CONFIG poppler --modversion`'\"' -+XPDF_INCLUDES="$POPPLER_VERSION $XPDF_INCLUDES" - else - XPDF_INCLUDES="-DPDF_PARSER_ONLY -I$kpse_BLD/libs/xpdf -I$kpse_BLD/libs/xpdf/goo -I$kpse_BLD/libs/xpdf/xpdf" - XPDF_LIBS="$kpse_BLD/libs/xpdf/libxpdf.a" -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-xpdf-fix texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-xpdf-fix 2021-05-10 15:56:50.770034767 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2021-05-10 16:05:07.939283063 -0400 -@@ -49,10 +49,16 @@ POPPLER_VERSION should be defined. - #include - #include - --#include --#include --#include --#include -+#ifdef POPPLER_VERSION -+#include -+#include -+#include -+#include -+#include -+#define GString GooString -+#else -+#error POPPLER_VERSION should be defined. -+#endif - #include - - #include "Object.h" -@@ -676,7 +682,7 @@ static void writeEncodings() - } - for (r = encodingList; r != 0; r = n) { - n = r->next; -- delete r->font; -+ r->font->decRefCnt(); - delete r; - } - } -@@ -715,7 +721,7 @@ read_pdf_info(char *image_name, char *pa - PdfDocument *pdf_doc; - Page *page; - const PDFRectangle *pagebox; -- float pdf_version_found, pdf_version_wanted; -+ int pdf_major_version_found, pdf_minor_version_found; - // initialize - if (!isInit) { - globalParams = std::unique_ptr(new GlobalParams()); -@@ -730,17 +736,18 @@ read_pdf_info(char *image_name, char *pa - // this works only for PDF 1.x -- but since any versions of PDF newer - // than 1.x will not be backwards compatible to PDF 1.x, pdfTeX will - // then have to changed drastically anyway. -- pdf_version_found = pdf_doc->doc->getPDFVersion(); -- pdf_version_wanted = major_pdf_version_wanted + (minor_pdf_version_wanted * 0.1); -- if (pdf_version_found > pdf_version_wanted + 0.01) { -- char msg[] = -- "PDF inclusion: found PDF version <%.1f>, but at most version <%.1f> allowed"; -+ pdf_major_version_found = pdf_doc->doc->getPDFMajorVersion(); -+ pdf_minor_version_found = pdf_doc->doc->getPDFMinorVersion(); -+ if ((pdf_major_version_found > major_pdf_version_wanted) -+ || (pdf_minor_version_found > minor_pdf_version_wanted)) { -+ const char *msg = -+ "PDF inclusion: found PDF version <%d.%d>, but at most version <%d.%d> allowed"; - if (pdf_inclusion_errorlevel > 0) { -- pdftex_fail(msg, pdf_version_found, pdf_version_wanted); -+ pdftex_fail(msg, pdf_major_version_found, pdf_minor_version_found, major_pdf_version_wanted, minor_pdf_version_wanted); - } else if (pdf_inclusion_errorlevel < 0) { - ; /* do nothing */ - } else { /* = 0, give warning */ -- pdftex_warn(msg, pdf_version_found, pdf_version_wanted); -+ pdftex_warn(msg, pdf_major_version_found, pdf_minor_version_found, major_pdf_version_wanted, minor_pdf_version_wanted); - } - } - epdf_num_pages = pdf_doc->doc->getCatalog()->getNumPages(); -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-xpdf-fix texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-xpdf-fix 2021-05-10 15:26:43.545060694 -0400 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftosrc.cc 2021-05-10 16:06:58.614896618 -0400 -@@ -41,10 +41,15 @@ POPPLER_VERSION should be defined. - #include - #include - --#include --#include --#include --#include -+#ifdef POPPLER_VERSION -+#define GString GooString -+#include -+#include -+#include -+#include -+#else -+#error POPPLER_VERSION should be defined. -+#endif - #include - - #include "Object.h" -@@ -183,7 +188,7 @@ int main(int argc, char *argv[]) - if (n == e->gen) - localOffset = obj2.getInt(); - } --#if defined(XPDF304) -+#if defined(POPPLER_VERSION) || defined(XPDF304) - while (str->getChar() != EOF) ; - #else /* xpdf 4.00 */ - lexer->skipToEOF(); diff --git a/texlive-base-20210325-pdftoepdf-fix-crash.patch b/texlive-base-20210325-pdftoepdf-fix-crash.patch deleted file mode 100644 index b19d483..0000000 --- a/texlive-base-20210325-pdftoepdf-fix-crash.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.debug texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.debug 2022-01-20 10:25:58.454233201 -0500 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2022-01-20 12:57:04.241513707 -0500 -@@ -962,21 +962,30 @@ A change - does not improve the situation. - The changes below seem to work fine. - */ -+ if (page->getGroup() != NULL) { -+ groupDict = Object(page->getGroup()); -+ } else { -+ pdftex_fail("PDF inclusion: getGroup failed"); -+ } -+/* - // begin modification - groupDict = pageDict->lookup("Group"); - Dict *dic1 = page->getGroup(); - Dict *dic2 = groupDict.getDict(); - // replace dic2 in groupDict with dic1 - l = dic2->getLength(); -+ pdftex_warn("dic2 length is %d", l); - for (i = 0; i < l; i++) { - groupDict.dictRemove(dic2->getKey(i)); - } - l = dic1->getLength(); -+ pdftex_warn("dic1 length is %d", l); - for (i = 0; i < l; i++) { - groupDict.dictAdd(dic1->getKey(i), - dic1->getValNF(i).copy()); - } - // end modification -+*/ - pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); - } - } diff --git a/texlive-base-20210325-poppler-22.01.0.patch b/texlive-base-20210325-poppler-22.01.0.patch deleted file mode 100644 index 483eb6a..0000000 --- a/texlive-base-20210325-poppler-22.01.0.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff -up texlive-base-20210325/source/texk/web2c/Makefile.in.poppler22 texlive-base-20210325/source/texk/web2c/Makefile.in ---- texlive-base-20210325/source/texk/web2c/Makefile.in.poppler22 2022-01-15 16:57:15.020632269 -0500 -+++ texlive-base-20210325/source/texk/web2c/Makefile.in 2022-01-15 17:00:20.852711238 -0500 -@@ -4573,7 +4573,7 @@ ttf2afm_tests = pdftexdir/ttf2afm.test - # Force Automake to use CXXLD for linking - nodist_EXTRA_pdftosrc_SOURCES = dummy.cxx - pdftosrc_CPPFLAGS = $(pdftex_cppflags) --pdftosrc_CXXFLAGS = $(WARNING_CXXFLAGS) -+pdftosrc_CXXFLAGS = $(WARNING_CXXFLAGS) -std=c++17 - pdftosrc_SOURCES = pdftexdir/pdftosrc.cc - pdftosrc_LDADD = $(pdftex_ldadd) $(LDADD) - pdftosrc_DEPENDENCIES = $(pdftex_dependencies) -@@ -18343,7 +18343,7 @@ xetex-xetex-pool.obj: xetex-pool.c - @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - - pdftexdir/libpdftex_a-pdftoepdf.o: pdftexdir/pdftoepdf.cc --@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpdftex_a_CPPFLAGS) $(CPPFLAGS) $(libpdftex_a_CXXFLAGS) $(CXXFLAGS) -MT pdftexdir/libpdftex_a-pdftoepdf.o -MD -MP -MF pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Tpo -c -o pdftexdir/libpdftex_a-pdftoepdf.o `test -f 'pdftexdir/pdftoepdf.cc' || echo '$(srcdir)/'`pdftexdir/pdftoepdf.cc -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpdftex_a_CPPFLAGS) $(CPPFLAGS) -std=c++17 $(libpdftex_a_CXXFLAGS) $(CXXFLAGS) -MT pdftexdir/libpdftex_a-pdftoepdf.o -MD -MP -MF pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Tpo -c -o pdftexdir/libpdftex_a-pdftoepdf.o `test -f 'pdftexdir/pdftoepdf.cc' || echo '$(srcdir)/'`pdftexdir/pdftoepdf.cc - @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Tpo pdftexdir/$(DEPDIR)/libpdftex_a-pdftoepdf.Po - @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='pdftexdir/pdftoepdf.cc' object='pdftexdir/libpdftex_a-pdftoepdf.o' libtool=no @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -diff -up texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler22 texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler22 2022-01-14 15:01:29.811105995 -0500 -+++ texlive-base-20210325/source/texk/web2c/pdftexdir/pdftoepdf.cc 2022-01-14 15:01:29.831106120 -0500 -@@ -964,17 +964,17 @@ The changes below seem to work fine. - */ - // begin modification - groupDict = pageDict->lookup("Group"); -- const Dict& dic1 = page->getGroup(); -- const Dict& dic2 = groupDict.getDict(); -+ Dict *dic1 = page->getGroup(); -+ Dict *dic2 = groupDict.getDict(); - // replace dic2 in groupDict with dic1 -- l = dic2.getLength(); -+ l = dic2->getLength(); - for (i = 0; i < l; i++) { -- groupDict.dictRemove(dic2.getKey(i)); -+ groupDict.dictRemove(dic2->getKey(i)); - } -- l = dic1.getLength(); -+ l = dic1->getLength(); - for (i = 0; i < l; i++) { -- groupDict.dictAdd(dic1.getKey(i), -- dic1.getValNF(i).copy()); -+ groupDict.dictAdd(dic1->getKey(i), -+ dic1->getValNF(i).copy()); - } - // end modification - pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); diff --git a/texlive-base-20220321-poppler-22.08.0.patch b/texlive-base-20220321-poppler-22.08.0.patch deleted file mode 100644 index 1385077..0000000 --- a/texlive-base-20220321-poppler-22.08.0.patch +++ /dev/null @@ -1,123 +0,0 @@ -diff -up texlive-base-20220321/source/configure.poppler-22.08.0 texlive-base-20220321/source/configure ---- texlive-base-20220321/source/configure.poppler-22.08.0 2022-10-31 09:48:21.875540925 -0400 -+++ texlive-base-20220321/source/configure 2022-10-31 09:50:13.731220862 -0400 -@@ -23545,7 +23545,7 @@ printf %s "checking requested system \`x - int - main (void) - { --GfxFont *gfxFont; gfxFont->decRefCnt(); -+GfxFont *gfxFont; gfxFont->getFlags(); - ; - return 0; - } -diff -up texlive-base-20220321/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-22.08.0 texlive-base-20220321/source/texk/web2c/pdftexdir/pdftoepdf.cc ---- texlive-base-20220321/source/texk/web2c/pdftexdir/pdftoepdf.cc.poppler-22.08.0 2022-10-31 09:48:21.872540907 -0400 -+++ texlive-base-20220321/source/texk/web2c/pdftexdir/pdftoepdf.cc 2022-10-31 09:48:21.876540932 -0400 -@@ -123,7 +123,7 @@ struct InObj { - - struct UsedEncoding { - int enc_objnum; -- GfxFont *font; -+ std::shared_ptr font; - UsedEncoding *next; - }; - -@@ -167,8 +167,8 @@ static PdfDocument *find_add_document(ch - p->file_name = xstrdup(file_name); - p->xref = xref = 0; - p->occurences = 0; -- GString *docName = new GString(p->file_name); -- p->doc = new PDFDoc(docName); // takes ownership of docName -+ // GString *docName = new GString(p->file_name); -+ p->doc = new PDFDoc(std::make_unique(p->file_name)); // takes ownership of docName - if (!p->doc->isOk() || !p->doc->okToPrint()) { - pdftex_fail("xpdf: reading PDF image failed"); - } -@@ -204,7 +204,7 @@ static void delete_document(PdfDocument - - // -------------------------------------------------------------------- - --static int addEncoding(GfxFont * gfont) -+static int addEncoding(std::shared_ptr gfont) - { - UsedEncoding *n; - n = new UsedEncoding; -@@ -395,7 +395,8 @@ static void copyFont(const char *tag, Ob - { - Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset, - stemV; -- GfxFont *gfont; -+ // GfxFont *gfont; -+ std::shared_ptr gfont; - fd_entry *fd; - fm_entry *fontmap; - // Check whether the font has already been embedded before analysing it. -@@ -666,6 +667,7 @@ static void writeEncodings() - UsedEncoding *r, *n; - char *glyphNames[256], *s; - int i; -+ - for (r = encodingList; r != 0; r = r->next) { - for (i = 0; i < 256; i++) { - if (r->font->isCIDFont()) { -@@ -673,7 +675,8 @@ static void writeEncodings() - ("PDF inclusion: CID fonts are not supported" - " (try to disable font replacement to fix this)"); - } -- if ((s = (char *) ((Gfx8BitFont *) r->font)->getCharName(i)) != 0) -+ const GfxFont *const font = r->font.get(); -+ if ((s = (char *) ((Gfx8BitFont *) font)->getCharName(i)) != 0) - glyphNames[i] = s; - else - glyphNames[i] = notdef; -@@ -682,7 +685,7 @@ static void writeEncodings() - } - for (r = encodingList; r != 0; r = n) { - n = r->next; -- r->font->decRefCnt(); -+ // r->font->decRefCnt(); - delete r; - } - } -diff -up texlive-base-20220321/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-22.08.0 texlive-base-20220321/source/texk/web2c/pdftexdir/pdftosrc.cc ---- texlive-base-20220321/source/texk/web2c/pdftexdir/pdftosrc.cc.poppler-22.08.0 2022-10-31 09:48:21.866540870 -0400 -+++ texlive-base-20220321/source/texk/web2c/pdftexdir/pdftosrc.cc 2022-10-31 09:48:21.876540932 -0400 -@@ -72,7 +72,7 @@ int main(int argc, char *argv[]) - { - char *p, buf[1024]; - PDFDoc *doc; -- GString *fileName; -+ std::unique_ptr fileName; - Stream *s; - Object srcStream, srcName, catalogDict; - FILE *outfile; -@@ -86,9 +86,9 @@ int main(int argc, char *argv[]) - "Usage: pdftosrc []\n"); - exit(1); - } -- fileName = new GString(argv[1]); -+ fileName = std::make_unique(argv[1]); - globalParams = std::unique_ptr(new GlobalParams()); -- doc = new PDFDoc(fileName); -+ doc = new PDFDoc(std::move(fileName)); - if (!doc->isOk()) { - fprintf(stderr, "Invalid PDF file\n"); - exit(1); -@@ -126,7 +126,7 @@ int main(int argc, char *argv[]) - fprintf(stderr, "Not a Stream object\n"); - exit(1); - } -- sprintf(buf, "%s", fileName->c_str()); -+ sprintf(buf, "%s", argv[1]); - if ((p = strrchr(buf, '.')) == 0) - p = strchr(buf, 0); - if (objgen == 0) -@@ -136,7 +136,7 @@ int main(int argc, char *argv[]) - outname = buf; - } else { // objnum < 0 means we are extracting the XRef table - extract_xref_table = true; -- sprintf(buf, "%s", fileName->c_str()); -+ sprintf(buf, "%s", argv[1]); - if ((p = strrchr(buf, '.')) == 0) - p = strchr(buf, 0); - sprintf(p, ".xref"); diff --git a/texlive-bz#1442706-python-path.patch b/texlive-bz#1442706-python-path.patch deleted file mode 100644 index 18064eb..0000000 --- a/texlive-bz#1442706-python-path.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -up tex/latex/sympytexpackage/sympytex.sty.than tex/latex/sympytexpackage/sympytex.sty ---- tex/latex/sympytexpackage/sympytex.sty.than 2017-07-05 14:24:09.206951593 +0200 -+++ tex/latex/sympytexpackage/sympytex.sty 2017-07-05 14:25:09.994666464 +0200 -@@ -43,13 +43,13 @@ - \newwrite\ST@sf - \immediate\openout\ST@sf=\jobname.sympy - \newcommand{\ST@wsf}[1]{\immediate\write\ST@sf{#1}} --\iffalse -+%\iffalse - %% To get .sympy files to automatically change the Python path to find - %% sympytex.py, delete the \iffalse and \fi lines surrounding this and - %% change the directory below to where sympytex.py can be found. - \ST@wsf{import sys} --\ST@wsf{sys.path.insert(0, 'directory with sympytex.py')} --\fi -+\ST@wsf{sys.path.insert(0, '/usr/share/texlive/texmf-dist/scripts/sympytexpackage')} -+%\fi - \ST@wsf{import sympy} - \ST@wsf{import sympytex} - \ST@wsf{sympytex.openout('\jobname')} diff --git a/texlive-no-l3regex.patch b/texlive-no-l3regex.patch deleted file mode 100644 index f550cd9..0000000 --- a/texlive-no-l3regex.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff -up tex/latex/pkgloader/pkgloader.sty.nol3regex tex/latex/pkgloader/pkgloader.sty ---- tex/latex/pkgloader/pkgloader.sty.nol3regex 2020-05-12 15:43:34.909265349 -0400 -+++ tex/latex/pkgloader/pkgloader.sty 2020-05-12 15:44:42.157074791 -0400 -@@ -71,7 +71,6 @@ - % \begin{macrocode} - \RequirePackage{xparse} - \RequirePackage{l3keys2e} --\RequirePackage{l3regex} - \RequirePackage{lt3graph} - % \end{macrocode} - % -@@ -660,7 +659,7 @@ - % - % \begin{macrocode} - \prop_map_inline:Nn \g__pkgloader_known_pkg_prop {%%%%%%%%%%%%%% ##1 -- \int_step_inline:nncn {1} {1} {g__pkgloader_count_(##1)_int} {%% ####1 -+ \int_step_inline:nnvn {1} {1} {g__pkgloader_count_(##1)_int} {%% ####1 - % \end{macrocode} - % - % If the current configuration should be loaded but still -@@ -767,9 +766,8 @@ - % \end{macrocode} - % \uninteresting\begin{macrocode} - } --\cs_generate_variant:Nn \int_step_inline:nnnn {nncn} -+\cs_generate_variant:Nn \int_step_inline:nnnn {nnvn} - \cs_generate_variant:Nn \bool_if:nT {vT} --\cs_generate_variant:Nn \withargs:nnn {vvn} - \cs_generate_variant:Nn \graph_gput_vertex:Nnn {Nnf} - \graph_new:N \l__pkgloader_order_graph - \tl_new:N \l__pkgloader_used_configs_tl -@@ -836,8 +834,8 @@ - } - } - } --\cs_generate_variant:Nn \withargs:nn {xn} --\cs_generate_variant:Nn \withargs:nnnnn {vvfvn} -+\cs_generate_variant:Nn \withargs:nn {x} -+\cs_generate_variant:Nn \withargs:nnnnn {vvfv} - % \end{macrocode} - % - % And it needs the following auxiliary function to strip diff --git a/texlive-proposal-no-workaddress.patch b/texlive-proposal-no-workaddress.patch deleted file mode 100644 index 39fba4d..0000000 --- a/texlive-proposal-no-workaddress.patch +++ /dev/null @@ -1,1758 +0,0 @@ -diff -up tex/latex/proposal/base/pdata.sty.noworkaddress tex/latex/proposal/base/pdata.sty ---- tex/latex/proposal/base/pdata.sty.noworkaddress 2022-12-31 12:19:13.710831748 -0500 -+++ tex/latex/proposal/base/pdata.sty 2022-12-31 12:31:58.439831981 -0500 -@@ -7,22 +7,33 @@ - %% proposal.dtx (with options: `pdata') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesPackage{pdata}[2016/04/15 v1.5 Project Data] --\RequirePackage{workaddress}[2011/05/03] -+\ProvidesPackage{pdata}[2020/08/21 v1.7 Project Data] - \RequirePackage{eurosym} - \newif\if@sites\@sitesfalse\let\prop@gen@sites=\relax% - \newcounter{@site}% - \define@key{prop@gen}{site}{\@sitestrue\@dmp{site=#1}% - \stepcounter{@site}\pdata@def{site}{#1}{number}{\the@site}% -+\define@key{prop@gen}{#1name}{\pdata@def{site}{#1}{name}{##1}} -+\define@key{prop@gen}{#1acronym}{\pdata@def{site}{#1}{acronym}{##1}} -+\define@key{prop@gen}{#1country}{\pdata@def{site}{#1}{country}{##1}} -+\define@key{prop@gen}{#1countryshort}{\pdata@def{site}{#1}{countryshort}{##1}} -+\define@key{prop@gen}{#1streetaddress}{\pdata@def{site}{#1}{streetaddress}{##1}} -+\define@key{prop@gen}{#1townzip}{\pdata@def{site}{#1}{townzip}{##1}} -+\define@key{prop@gen}{#1url}{\pdata@def{site}{#1}{url}{##1}} -+\define@key{prop@gen}{#1logo}{\pdata@def{site}{#1}{logo}{##1}} -+\define@key{prop@gen}{#1type}{\pdata@def{site}{#1}{type}{##1}} - \@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}}% --\define@key{prop@gen}{#1RAM}{\pdata@def{site}{#1}{intendedRAM}{##1}} -+\if@RAM\define@key{prop@gen}{#1RAM}{\pdata@def{site}{#1}{intendedRAM}{##1}}\fi - \define@key{workpackage}{#1RM}{\pdata@def\wp@id{#1}{RM}{##1}}% --\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% -+\if@RAM\define@key{workpackage}{#1RAM}{\pdata@def\wp@id{#1}{RAM}{##1}}\fi -+\define@key{task}{#1RM}{\pdata@def{\wp@id @\task@id}{#1}{RM}{##1}}% -+\if@RAM\define@key{task}{#1RAM}{\pdata@def{\wp@id @\task@id}{#1}{RAM}{##1}}\fi -+\define@key{prop@gen}{#1shortname}{\pdata@def{site}{#1}{shortname}{##1}} -+\define@key{prop@gen}{#1employed}{{\let\tabularnewline\relax\let\hline\relax\let% - \@ifundefined{prop@gen@employed@lines}% --{\xdef\prop@gen@employed@lines{\wa@ref{institution}{#1}{shortname} & ##1\tabularnewline\hline}}% --{\xdef\prop@gen@employed@lines{\prop@gen@employed@lines \wa@ref{institution}{#1}{shortname} & ##1\tabularnewline\hline}}}}} -+{\xdef\prop@gen@employed@lines{\pdataref{site}{#1}{shortname} & ##1\tabularnewline\hline}}% -+{\xdef\prop@gen@employed@lines{\prop@gen@employed@lines\ \pdataref{site}{#1}{shortname} & ##1\tabularnewline\hline}}}}} - \define@key{prop@gen}{RM}{\@dmp{RM=#1}\if@sites% - \PackageWarning{Do not use the RM key in the presence of sites}\else% - \pdata@def{all}{intended}{RM}{#1}\fi} -@@ -30,10 +41,14 @@ - \PackageWarning{Do not use the RAM key in the presence of sites}\else% - \pdata@def{all}{intended}{RAM}{#1}\fi} - \define@key{prop@gen}{PI}{\@dmp{PI=#1}% -+\define@key{prop@gen}{#1name}{\pdata@def{PI}{#1}{name}{##1}}% -+\define@key{prop@gen}{#1title}{\pdata@def{PI}{#1}{title}{##1}}% -+\define@key{prop@gen}{#1affiliation}{\pdata@def{PI}{#1}{affiliation}{##1}}% -+\define@key{prop@gen}{#1dept}{\pdata@def{PI}{#1}{dept}{##1}}% - \@ifundefined{prop@gen@PIs}{\xdef\prop@gen@PIs{#1}}{\xdef\prop@gen@PIs{\prop@gen@PIs,#1}}} - \define@key{prop@gen}{pubspage}{\@ifundefined{prop@gen@pubspages}% - {\xdef\prop@gen@pubspages{#1}}{\xdef\prop@gen@pubspages{\prop@gen@pubspages,#1}}} --\define@key{prop@gen}{importfrom}{\message{importing proposal data from #1.pdata}\readpdata{#1}} -+\define@key{prop@gen}{importfrom}{\readpdata{#1}} - \define@key{prop@gen}{instrument}{\def\prop@gen@instrument{#1}% - \pdata@def{prop}{gen}{instrument}{#1}\@dmp{inst=#1}} - \define@key{prop@gen}{title}{\def\prop@gen@title{#1}% -@@ -81,9 +96,12 @@ - \newwrite\pdata@out - \newcommand\pdata@open[1]{\immediate\openout\pdata@out=#1.pdata} - \newcommand\pdata@close{\closeout\pdata@out} --\newcommand\readpdata[1]{\IfFileExists{#1.pdata} --{\message{proposal: Reading Project Data}\makeatletter\input{#1.pdata}\makeatother} --{proposal: No Project Data found, (forward) references may be compromized}} -+\newcommand\readpdata[1]{\IfFileExists{./#1.pdata} -+ {\PackageInfo{pdata}{importing proposal data from #1.pdata}% -+ \makeatletter\input{./#1.pdata}\makeatother} -+{\PackageError{pdata} -+ {No project data file found at #1.pdata,\MessageBreak (forward) references may be compromized} -+ {You may have to re-format the original proposal to generate a new project data file #1.pdata}}} - \newcommand\pdata@target[3]{\hypertarget{#1@#2@target}{#3}} - \newcommand\pdata@def[4]{%\@pdata@def{#1}{#2}{#3}{#4}% - \protected@write\pdata@out{}{\string\@pdata@def{#1}{#2}{#3}{#4}}} -@@ -121,9 +139,11 @@ - \newcommand{\signatures}[1]{\section{#1} - \qquad\number\day. \number\month. \number\year\\[6ex] - \strut\qquad Date\hfill\@for\@p:=\prop@gen@PIs\do{% --\wa@ref{person}\@p{personaltitle}~\wa@ref{person}\@p{name}\hfill}} --\def\@dmp#1{\ifkeys\marginpar{#1}\fi} -+\pdataref{PI}\@p{title}~\pdataref{PI}\@p{name}\hfill}} -+\def\@dmp#1{\ifkeys\marginpar{\small #1}\fi} - \renewcommand\euro{\officialeuro\xspace} -+ -+ - \endinput - %% - %% End of file `pdata.sty'. -diff -up tex/latex/proposal/base/proposal.cls.noworkaddress tex/latex/proposal/base/proposal.cls ---- tex/latex/proposal/base/proposal.cls.noworkaddress 2016-04-15 17:38:41.000000000 -0400 -+++ tex/latex/proposal/base/proposal.cls 2022-12-31 12:31:58.439831981 -0500 -@@ -7,7 +7,7 @@ - %% proposal.dtx (with options: `cls') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesClass{proposal}[2016/04/15 v1.5 Project Proposal] -+\ProvidesClass{proposal}[2020/08/21 v1.7 Project Proposal] - \newif\if@wpsubsection\@wpsubsectionfalse - \newif\ifsubmit\submitfalse - \newif\ifgrantagreement\grantagreementfalse -@@ -18,11 +18,15 @@ - \newif\if@RAM\@RAMfalse - \newif\if@svninfo\@svninfofalse - \newif\if@gitinfo\@gitinfofalse -+\newif\if@numericcites\@numericcitesfalse -+\newif\if@longtasklabels\@longtasklabelsfalse -+\newif\if@attachments\@attachmentsfalse - \def\proposal@class{article} - \DeclareOption{wpsubsection}{\@wpsubsectiontrue} - \DeclareOption{submit}{\submittrue} - \DeclareOption{grantagreement}{\grantagreementtrue} - \DeclareOption{gitinfo}{\@gitinfotrue} -+\DeclareOption{numericcites}{\@numericcitestrue} - \DeclareOption{svninfo}{\@svninfotrue} - \DeclareOption{public}{\publictrue} - \DeclareOption{noworkareas}{\work@areasfalse\PassOptionsToClass{\CurrentOption}{pdata}} -@@ -30,995 +34,14 @@ - \DeclareOption{report}{\def\proposal@class{report}} - \DeclareOption{keys}{\keystrue} - \DeclareOption{deliverables}{\delivstrue} --\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} -+\DeclareOption{longtasklabels}{\@longtasklabelstrue} -+\DeclareOption{attachments}{\@attachmentsfalse} -+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\proposal@class}} - \ProcessOptions - \LoadClass[a4paper,twoside]{\proposal@class} --\RequirePackage{amssymb} --\RequirePackage{wasysym} --\RequirePackage{url} --\RequirePackage{graphicx} --\RequirePackage{colortbl} --\RequirePackage{xcolor} --\RequirePackage{rotating} --\RequirePackage{fancyhdr} --\RequirePackage{array} --\RequirePackage{xspace} --\RequirePackage{comment} --\AtBeginDocument{\ifpublic\excludecomment{private}\fi} --\RequirePackage{tikz} --\RequirePackage{paralist} --\RequirePackage[a4paper,margin=18mm]{geometry} --\RequirePackage{boxedminipage} --\renewcommand{\thempfootnote}{\roman{mpfootnote}} --\renewcommand{\familydefault}{\sfdefault} --\RequirePackage[scaled=.90]{helvet} --\RequirePackage{textcomp} --\RequirePackage[hyperref=auto,style=alphabetic,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19] --\RequirePackage{csquotes} --\RequirePackage{mdframed} --\RequirePackage{pdata} --\definecolor{darkblue}{rgb}{0,0,.7} --\ifsubmit\def\prop@link@color{darkblue}\else\def\prop@link@color{blue}\fi --\RequirePackage[bookmarks=true,linkcolor=\prop@link@color, -- citecolor=\prop@link@color,urlcolor=\prop@link@color,colorlinks=true, -- breaklinks=true, bookmarksopen=true]{hyperref} --\ifsubmit --\RequirePackage[hide]{ed} --\if@svninfo\RequirePackage[final,today]{svninfo}\fi --\else --\RequirePackage[show]{ed} --\if@svninfo\RequirePackage[eso-foot,today]{svninfo}\fi --\if@gitinfo\RequirePackage[mark]{gitinfo2}\fi --\fi --\renewcommand\ednoteshape{\sl\footnotesize} --\ifpublic\excludecomment{private}\else\includecomment{private}\fi --\setcounter{secnumdepth}{3} --\newif\ifofpage\ofpagefalse --\ifgrantagreement --\fancyhead{} --\renewcommand{\headrulewidth}{0pt} --\renewcommand{\footrulewidth}{0.4pt} --\else --\fancyhead[RE,LO]{\prop@gen@acronym} --\fancyhfoffset{0pt} --\fi --\fancyfoot[C]{} --\newcommand\prop@of@pages[2]{page~#1\ifofpage~of~#2\fi} --\ifgrantagreement --\fancyfoot[L]{\prop@gen@proposalnumber\quad \prop@gen@acronym\quad --\quad Part B} --\fancyfoot[R]{\thepage} --\else --\fancyhead[LE,RO]{\prop@of@pages\thepage{\pdataref@num{prop}{page}{last}}} --\fi --\pagestyle{fancyplain} --\newmdenv[settings=\large]{emphbox} --\newenvironment{prop@proposal} --{\thispagestyle{empty}% --\begin{center} -- {\LARGE \prop@gen@instrument}\\[.2cm] -- {\LARGE\textbf{\prop@gen@title}}\\[.3cm] -- {\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm] -- {\large\today}\\[1em] -- \begin{tabular}{c*{\the@PIs}{c}} -- \prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{name}}\\ -- \prop@tl\prop@gen@PIs{\wa@ref{institution}{\wa@ref{person}\tl@ext{affiliation}}{name}} -- \end{tabular}\\[2cm] --\end{center} --\setcounter{tocdepth}{2}\tableofcontents\newpage\setcounter{page}{1}} --{\section{List of Attachments} --\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 --\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}} --\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}}} --\newcounter{@sites} --\@ifundefined{prop@gen@sites}{}{\@for\@I:=\prop@gen@sites\do{\stepcounter{@sites}}} --\setcounter{page}{0} --\begin{prop@proposal}} --{\end{prop@proposal} --\pdata@def{prop}{page}{last}{\thepage}\ofpagefalse --\pdata@close} --\newcommand\site[1]{\hyperlink{site@#1@target}{\wa@ref{institution}{#1}{acronym}}} --\newcommand\sitename[1]{\hyperlink{site@#1@target}{\wa@ref{institution}{#1}{name}}} --\newcommand\objective@label[1]{O#1} --\define@key{obj}{id}{\def\obj@id{#1}\@dmp{id=#1}} --\define@key{obj}{title}{\def\obj@title{#1}\@dmp{title=#1}} --\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}% --\goodbreak\smallskip\par\noindent% --\textbf{\objective@label{\arabic{objective}}:% --~\pdata@target{obj}{\obj@id}{\pdataref{obj}{\obj@id}{title}}\ignorespaces}% --\pdata@def{obj}\obj@id{label}{\objective@label\theobjective}% --\@ifundefined{obj@title}{}{\pdata@def{obj}\obj@id{title}\obj@title}% --\@ifundefined{obj@short}{}{\pdata@def{obj}\obj@id{short}\obj@short}} --{} --\newcommand\OBJref[1]{\pdataRef{obj}{#1}{label}} --\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}} --\define@key{workarea}{short}{\pdata@def{wa}\wa@id{short}{#1}} --\define@key{workarea}{lead}{\pdata@def{wa}\wa@id{lead}{#1}} --\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}{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 --\newcommand\wa@label[1]{WA{#1}} --\newcommand\wa@mk@title[1]{Work Area {#1}} --\fi --\ifwork@areas\newcounter{wa}\newcounter{wp}[wa]\else\newcounter{wp}\fi --\ifdelivs\newcounter{deliv}[wp]\fi --\newcounter{allwp} --\newcommand\update@wps[1]{\@ifundefined{@wps}{\xdef\@wps{#1}}{\xdef\@wps{\@wps,#1}}} --\newcommand\update@tasks[1]{\@ifundefined{@tasks}{\xdef\@tasks{#1}}{\xdef\@tasks{\@tasks,#1}}} --\newcommand\update@deps[1]{\@ifundefined{task@deps}{\xdef\task@deps{#1}}{\xdef\task@deps{\task@deps,#1}}} --\ifwork@areas\def\update@was#1{\@ifundefined{@was}{\xdef\@was{#1}}{\xdef\@was{\@was,#1}}}\fi --\newcommand\decode@wphase[1]{\expandafter\decode@p@start#1@% --\local@count\wphase@end\advance\local@count by -\wphase@start% --\def\wphase@len{\the\local@count}} --\def\decode@p@start#1-#2@{\def\wphase@start{#1}\decode@p@end#2!@} --\def\decode@p@end#1!#2@{\def\wphase@end{#1}\def\@test{#2}% --\ifx\@test\@empty\def\wphase@force{1}\else\decode@p@force#2\fi} --\def\decode@p@force#1!{\def\wphase@force{#1}} --\def\wphases@start#1-#2@{\def\wphase@start{#1}} --\newcommand\startend@wphases[1]{\def\@test{#1} --\ifx\@test\@empty\def\wphase@start{0}\def\wphase@end{0}\else% --\@for\@I:=#1\do{\expandafter\decode@p@start\@I @} --\expandafter\wphases@start#1@\fi} --\newcounter{wp@RM} --\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% --\@ifundefined{wp@type}{}{\pdata@def{wp}\wp@id{type}\wp@type}% --\let\@tasks=\relax% --\edef\wp@num{\ifwork@areas\thewa.\fi\thewp}% --\pdata@def{wp}\wp@id{label}{\wp@label\wp@num}% --\pdata@def{wp}\wp@id{number}{\thewp}% --\pdata@def{wp}\wp@id{page}{\thepage}% --\update@wps\wp@id% --\edef\wp@num{\ifwork@areas\thewa.\fi\thewp}% --\pdata@def{wp}{\wp@id}{num}{\thewp}% --\if@sites% --\setcounter{wp@RM}{0}\if@RAM\setcounter{wp@RAM}{0}\fi% --\@for\@site:=\prop@gen@sites\do{% --\edef\@RM{\pdataref@num\wp@id\@site{RM}}\addtocounter{wp@RM}{\@RM}% --\if@RAM\edef\@RAM{\pdataref@num\wp@id\@site{RAM}}\addtocounter{wp@RAM}{\@RAM}\fi} --\pdata@def{wp}\wp@id{RM}{\thewp@RM}% --\if@RAM\pdata@def{wp}\wp@id{RAM}{\thewp@RAM}\fi% --\fi}% if@sites --{\@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} --\newcount\site@contribution% --\newcommand\if@site@contributes[2]{% --\ifx\prop@gen@compactht\@true --\if@RAM\ifnum\pdataref@num\wp@id{#1}{RM} > 0 \ifnum \pdataref@num\wp@id{#1}{RAM} > 0 #2\fi\fi --\else\ifnum\pdataref@num\wp@id{#1}{RM} > 0 #2\fi\fi --\else #2\fi} --\newcounter{wp@sites@num} --\newcommand\wp@sites@efforts@lines{% --\setcounter{wp@sites@num}{0} --{\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\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{&% --\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}}}}} --\newcommand\wpheadertable{% --\wp@sites@efforts@lines% --\par\noindent\begin{tabular}{|l||l|*{\thewp@sites@num}{c|}|c|}\hline% --\textbf{\wp@mk@title{\wp@num}}&\wp@sites@line\\\hline% --\textsf{\pdata@target{wp}{\wp@id}{\pdataref{wp}\wp@id{title}}} &\wp@efforts@line\\\hline% --\end{tabular}\smallskip\par\noindent\ignorespaces} --\newcommand\wp@legend@site{Site} --\newcommand\wp@legend@effort{Effort\if@RAM{ (RM+RAM)}\fi} --\newcommand\wp@legend@all{\textbf{all}} --\newcounter{prop@RM}\if@RAM\newcounter{prop@RAM}\fi --\ifwork@areas --\newcounter{wa@RM}\if@RAM\newcounter{wa@RAM}\fi\newcounter{wa@wps} --\newenvironment{workarea}[1][] --{\setkeys{workarea}{#1} --\let\@wps=\relax --\stepcounter{wa} --\pdata@def{wa}{\wa@id}{label}{\wa@label\thewa} --\pdata@def{wa}{\wa@id}{number}{\thewa} --\pdata@def{wa}{\wa@id}{page}{\thepage} --\update@was{\wa@id} --\pdata@def{wa}{\wa@id}{num}{\thewa} --\setcounter{wa@RM}{0}\if@RAM\setcounter{wa@RAM}{0}\fi\setcounter{wa@wps}{0} --\edef\@@wps{\pdataref@aux\wa@id{wp}{ids}} --\@for\@wp:=\@@wps\do{\stepcounter{wa@wps}% --\if@sites --\@for\@site:=\prop@gen@sites\do{% -- \edef\@RM{\pdataref@num\@wp\@site{RM}} -- \if@RAM\edef\@RAM{\pdataref@num\@wp\@site{RAM}}\fi -- \addtocounter{wa@RM}{\@RM}\addtocounter{prop@RM}{\@RM} -- \if@RAM\addtocounter{wa@RAM}{\@RAM}\addtocounter{prop@RAM}{\@RAM}\fi} --\else --\edef\@RM{\pdataref@num{wp}\@wp{RM}} --\if@RAM\edef\@RAM{\pdataref@num{wp}\@wp{RAM}}\fi --\addtocounter{wa@RM}{\@RM}\addtocounter{prop@RM}{\@RM} --\if@RAM\addtocounter{wa@RAM}{\@RAM}\addtocounter{prop@RAM}{\@RAM}\fi --\fi} --\pdata@def{wa}\wa@id{RM}\thewa@RM --\pdata@def{prop}{all}{RM}\theprop@RM --\if@RAM --\pdata@def{wa}\wa@id{RAM}\thewa@RAM --\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}}% --\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}% --{\ifdelivs\immediate\openout\wpg@delivs=\jobname.delivs\fi --\ifwork@areas\let\@was=\relax\else\let\@wps=\relax\fi}% --{\@ifundefined{task@deps}{}{\pdata@def{all}{task}{deps}{\task@deps}} --\pdata@def{all}{task}{count}{\thealltasks} --\ifwork@areas --\@ifundefined{@was}{}{\pdata@def{all}{wa}{ids}\@was} --\else --\@ifundefined{@wps}{}{\pdata@def{all}{wp}{ids}\@wps} --\fi --\ifdelivs\@ifundefined{mile@stones}{} --{\@for\@I:=\mile@stones\do{% --\pdata@def{mile}\@I{delivs}{\@ifundefined{\@I delivs}{}{\csname\@I delivs\endcsname}}}}\fi --\ifwork@areas\pdata@def{all}{wa}{count}{\thewa}\fi --\pdata@def{all}{wp}{count}{\theallwp} --\ifdelivs --\pdata@def{all}{deliverables}{count}{\thedeliverable} --\pdata@def{all}{milestones}{count}{\themilestone} --\fi --\ifdelivs\closeout\wpg@delivs\fi} --\newcommand\deliv@error{\PackageError{proposal} --{To use use deliverables, you have to specify the option 'deliverables'}} --\newenvironment{wpdelivs}{\begin{wp@delivs}}{\end{wp@delivs}} --\newenvironment{wp@delivs} --{\ifdelivs\textbf\deliv@legend@delivs:\\[-3ex]% --\begin{compactdesc}\else\deliv@error\fi} --{\ifdelivs\end{compactdesc}\fi} --\newcommand\deliv@legend@delivs{Deliverables} --\newenvironment{wadelivs} --{\textbf\deliv@legend@delivs:\\[-3ex]\begin{wp@delivs}} --{\end{wp@delivs}} --\newcommand\lec[1]{\strut\hfil\strut\null\nobreak\hfill\hbox{$\leadsto$#1}\par} --\newcommand\deliv@label[1]{D{#1}} --\newcommand\delivref[2]{\pdataRef{deliv}{#1#2}{label}} --\newcommand\localdelivref[1]{\delivref{\wp@id}{#1}} --\newcommand\delivtref[2]{\delivref{#1}{#2}: \pdataRefFB{deliv}{#1#2}{short}{title}} --\newcommand\localdelivtref[1]{\delivtref{\wp@id}{#1}} --\define@key{deliv}{id}{\def\deliv@id{#1}} --\define@key{deliv}{due}{\def\deliv@due{#1}} --\define@key{deliv}{dissem}{\def\deliv@dissem{#1}} --\define@key{deliv}{nature}{\def\deliv@nature{#1}} --\define@key{deliv}{miles}{\def\deliv@miles{#1}} --\define@key{deliv}{short}{\def\deliv@short{#1}} --\define@key{deliv}{lead}{\def\deliv@lead{#1}} --\newcounter{deliverable} --\newcommand{\wpg@deliv}[3]{% keys, title, type --\stepcounter{deliverable} --\let\deliv@miles=\relax% clean state --\def\@type{#3}\def\@wp{wp}% set up ifx --\def\wpg@id{\csname #3@id\endcsname} --\setkeys{deliv}{#1}\stepcounter{deliv}% set state --\ifx\@type\@wp\def\current@label{\deliv@label{\ifwork@areas\thewa.\fi\thewp.\thedeliv}} --\else\def\current@label{\deliv@label{\thewa.\thedeliv}}\fi --\pdata@def{deliv}{\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}} --\@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}{??}{\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 --{\@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 --\m@sep\pdataRef{mile}{\@I}{label}% print the milestone reference --\let\m@sep=,}}%set the separator for the next times --\def\d@sep{,} -- \@for\@I:=\deliv@miles\do{% Iterate over the milestones mentioned -- \expandafter\ifx\csname\@I delivs\endcsname\relax% Check that the miles@delivs is empty -- {\expandafter\xdef\csname\@I delivs\endcsname{\wpg@id\deliv@id}}% if so, skip the separator -- \else\expandafter\xdef\csname\@I delivs\endcsname%if not add it -- {\csname\@I delivs\endcsname\d@sep\wpg@id\deliv@id}\fi}}} --\newenvironment{wadeliv}[2][]{\ifdelivs\wpg@deliv{#1}{#2}{wa}\else\deliv@error\fi}{} --\newenvironment{wpdeliv}[2][]{\ifdelivs\wpg@deliv{#1}{#2}{wp}\else\deliv@error\fi}{} --\newcommand\milestone@label[1]{M{#1}} --\newcommand\mileref[1]{\pdataRef{mile}{#1}{label}} --\newcommand\miletref[1]{\mileref{#1}: \pdataRefFB{mile}{#1}{short}{title}} --\newcounter{milestone} --\define@key{milestone}{id}{\gdef\mile@id{#1}} --\define@key{milestone}{month}{\gdef\mile@month{#1}} --\define@key{milestone}{verif}{\gdef\mile@verif{#1}} --\newcommand\milestone[3][]{% --\ifdelivs% --\setkeys{milestone}{#1}\stepcounter{milestone}% --\pdata@def{mile}\mile@id{label}{\milestone@label{\themilestone}}% --\pdata@def{mile}\mile@id{month}{\mile@month}% --\pdata@def{mile}\mile@id{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{\mile@id}{#2}{#3}% presentation --\else\deliv@error\fi} --\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}\fi} --\newcommand\delivs@legend@name{Deliverable name} --\newcommand\delivs@legend@wp{WP} --\newcommand\delivs@legend@nature{Type} --\newcommand\delivs@legend@level{Level} --\newcommand\delivs@legend@due{Due} --\newcommand\delivs@legend@dissem{Dissem.} --\newcommand\delivs@legend@lead{Lead} --\newcommand{\inputdelivs}[1]{% --\begin{deliverables}{#1}% --\IfFileExists{\jobname.deliverables}% --{\input{\jobname.deliverables}}% --{\IfFileExists{\jobname.delivs}{\input{\jobname.delivs}}{}} --\end{deliverables}} --\newenvironment{tasklist} --{\begin{compactenum}}{\end{compactenum}} --\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}} --\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@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\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}% --\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]{\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} --\newcommand\task@label@long{Task} --\newcounter{task@all}\newcounter{task@wp}[wp] --\newcount\task@@end --\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\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\taskin[2]{#2@#1} --\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}% --\pdata@def{taskdep}\dep@id{from}{\taskin{#1}\wp@id}% --\pdata@def{taskdep}\dep@id{to}{#2}% --\update@deps\dep@id} --\newcommand\prop@lead[1]{\@ifundefined{wp@#1@lead}% --{\protect\G@refundefinedtrue\@latex@warning{lead for WP #1 undefined}??}% --{\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;% --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} --\newcommand\lead@style[1]{\cellcolor{leadgray}{\textit{#1}}} --\newcommand\wp@lead@style@explained{light gray italicised} --\newcounter{wpfig@options} --\define@key{wpfig}{size}{\def\wpfig@size{#1}\@dmp{size=#1}} --\def\@true{true} --\def\wpfig@pages{false} --\define@key{wpfig}{pages}[true]{\def\wpfig@pages{#1}\stepcounter{wpfig@options}} --\def\wpfig@type{false} --\define@key{wpfig}{type}[true]{\def\wpfig@type{#1}\stepcounter{wpfig@options}} --\def\wpfig@start{false} --\define@key{wpfig}{start}[true]{\def\wpfig@start{#1}\stepcounter{wpfig@options}} --\def\wpfig@length{false} --\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{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% --\ifx\wpfig@start\@true&\@sw{\wpfig@legend@start}\fi% --\ifx\wpfig@length\@true&\@sw{\wpfig@legend@length}\fi --\ifx\wpfig@end\@true&\@sw{\wpfig@legend@end}\fi}% --\if@sites% --\@for\@site:=\prop@gen@sites\do{% --\xdef\wpfig@headline{\wpfig@headline&\@sw{\wpfig@legend@siteRM{\@site}}}% --\if@RAM\xdef\wpfig@headline{\wpfig@headline&\@sw{\wpfig@legend@siteRAM{\@site}}}\fi}% --\xdef\wpfig@headline{\wpfig@headline&\@sw{\wpfig@legend@totalRM}}% --\if@RAM\xdef\wpfig@headline{\wpfig@headline&\@sw{\wpfig@legend@totalRAM}}\fi% --\else% if@sites --\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%| --\wpfig@headline\\\hline\hline} --{\end{tabular}\smallskip\\ --\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}} --\newcommand\wpfig@legend@wap{\textbf{\ifwork@areas{WA/P}\else{WP}\fi}} --\newcommand\wpfig@legend@title{\textbf{Title}} --\newcommand\wpfig@legend@type{\textbf{type}} --\newcommand\wpfig@legend@page{\textbf{page}} --\newcommand\wpfig@legend@start{\textbf{start}} --\newcommand\wpfig@legend@length{\textbf{length}} --\newcommand\wpfig@legend@end{\textbf{end}} --\newcommand\wpfig@legend@siteRM[1]{\site{#1}\if@RAM\ RM\fi} --\newcommand\wpfig@legend@siteRAM[1]{\site{#1}\ RAM} --\newcommand\wpfig@legend@totalRM{total\if@RAM\ RM\fi} --\newcommand\wpfig@legend@totalRAM{total RAM} --\newcommand\wpfig@legend@RM{RM} --\newcommand\wpfig@legend@RAM{RAM} --\newcommand\wpfig@legend@RAM@expl{\if@RAM R(A)M $\widehat=$ Researcher (Assistant) Months\else\ Efforts in PM\fi} --\newcommand\wpfig@legend@lead@expl{WP lead efforts \wp@lead@style@explained} --\newcommand\wpfig@legend@caption{{\ifwork@areas Work Areas and \fi}Work Packages} --\def\wpfig@style{} --\newcommand\wpfigstyle[1]{\def\wpfig@style{#1}} --\newcount\local@count --\newcount\@@@RM\if@RAM\newcount\@@@RAM\fi --\newcount\all@@@RM\if@RAM\newcount\all@@@RAM\fi --\newcommand{\wpfig}[1][]{\setcounter{wpfig@options}{0}\setkeys{wpfig}{#1} --{\gdef\@wp@lines{}%initialize --\let\tabularnewline\relax\let\hline\relax\let\lead@style\relax% so they --\let\wa@style\relax\let\wp@style\relax \let\@sw\relax\let\textbf\relax% do not --\let\G@refundefinedtrue=\relax\let\@latex@warning=\relax\let\hyperlink=\relax% bother --\let\pn\relax\let\xspace\relax% us --\ifwork@areas --\edef\@@was{\pdataref@safe{all}{wa}{ids}}% --\@for\@@wa:=\@@was\do{% iterate over the work areas --\xdef\@@wa@line{\wa@style{\pdataRef{wa}\@@wa{label}}% --&\wa@style{\@ifundefined{wa@\@@wa @short}{\pdataref{wa}\@@wa{title}}{\pdataref{wa}\@@wa{short}}}% --\ifx\wpfig@type\@true&\wa@style{\pdataref{wa}\@@wa{type}}\fi% --\ifx\wpfig@pages\@true&\wa@style{\pdataref{wa}\@@wa{page}}\fi% --\ifx\wpfig@start\@true&\wa@style{\pdataref{wa}\@@wa{start}}\fi% --\ifx\wpfig@length\@true&\wa@style{\pdataref{wa}\@@wa{len}}\fi% --\ifx\wpfig@end\@true&\wa@style{\pdataref{wa}\@@wa{end}}\fi} --\if@sites --\@for\@site:=\prop@gen@sites\do{% --\edef\@@wps{\pdataref@safe\@@wa{wp}{ids}}% --\local@count 0% --\@for\@@wp:=\@@wps\do{\advance\local@count by \pdataref@num\@@wp\@site{RM}}% --\pdata@def\@@wa\@site{RM}{\the\local@count}% --\xdef\@@wa@line{\@@wa@line&\wa@style{\the\local@count}}% --\if@RAM --\local@count 0% --\@for\@@wp:=\@@wps\do{\advance\local@count by \pdataref@num\@@wp\@site{RAM}} --\pdata@def\@@wa\@site{RAM}{\the\local@count}% --\xdef\@@wa@line{\@@wa@line&\wa@style{\the\local@count}}% --\fi} --\local@count0\relax% --\@for\@site:=\prop@gen@sites\do{\global\advance\local@count by \pdataref@num\@@wa\@site{RM}}% --\xdef\@@wa@line{\@@wa@line &\wa@style{\textbf{\the\local@count}}} --\if@RAM --\local@count0\relax% --\@for\@site:=\prop@gen@sites\do{\global\advance\local@count by \pdataref@num\@@wa\@site{RAM}}% --\xdef\@@wa@line{\@@wa@line &\wa@style{\textbf{\the\local@count}}} --\fi --\else% if@sites --\edef\@@wps{\pdataref@safe{all}{wp}{ids}}% --\xdef\@@wa@line{\@@wa@line&\wa@style{\pdataref{wa}\@@wa{RM}} --\if@RAM&\wa@style{\pdataref{wa}\@@wa{RAM}}\fi}% --\fi% if@sites --\xdef\@wp@lines{\@wp@lines\@@wa@line\tabularnewline\hline}% add the line for the workarea --\edef\@@wps{\pdataref@safe\@@wa{wp}{ids}}% --\@for\@@wp:=\@@wps\do{% iterate over its work packages --\xdef\@@wp@line{\pdataRef{wp}\@@wp{label}% --&\@ifundefined{wp@\@@wp @short}{\pdataref{wp}\@@wp{title}}{\pdataref{wp}\@@wp{short}}% --\ifx\wpfig@type\@true&\pdataref{wp}\@@wp{type}\fi% --\ifx\wpfig@pages\@true&\pdataref{wp}\@@wp{page}\fi% --\ifx\wpfig@start\@true&\pdataref{wp}\@@wp{start}\fi% --\ifx\wpfig@length\@true&\pdataref{wp}\@@wp{len}\fi% --\ifx\wpfig@end\@true&\pdataref{wp}\@@wp{end}\fi} --\if@sites --\@for\@site:=\prop@gen@sites\do{% --\edef\@@lead{\pdataref@safe{wp}\@@wp{lead}} --\edef\@@RM{\ifx\@@lead\@site\lead@style{\pdataref@safe\@@wp\@site{RM}}\else\wp@style{\pdataref@safe\@@wp\@site{RM}}\fi} --\xdef\@@wp@line{\@@wp@line&\@@RM} --\if@RAM --\edef\@@RAM{\ifx\@@lead\@site\lead@style{\pdataref@safe\@@wp\@site{RAM}}\else\wp@style{\pdataref@safe\@@wp\@site{RAM}}\fi} --\xdef\@@wp@line{\@@wp@line&\@@RAM} --\fi} --\local@count0\relax% --\@for\@site:=\prop@gen@sites\do{\global\advance\local@count by \pdataref@num\@@wp\@site{RM}}% --\xdef\@@wp@line{\@@wp@line &\textbf{\the\local@count}} --\if@RAM --\global\local@count0\relax% --\@for\@site:=\prop@gen@sites\do{\global\advance\local@count by \pdataref@num\@@wp\@site{RAM}}% --\xdef\@@wp@line{\@@wp@line &\textbf{\the\local@count}} --\fi% if@sites --\else% if@sites --\xdef\@@wp@line{\@@wp@line&\wp@style{\pdataref@safe{wp}\@@wp{RM}}} --\if@RAM\xdef\@@wp@line{\@@wp@line&\wp@style{\pdataref@safe{wp}\@@wp{RAM}}}\fi --\fi% if@sites --\xdef\@wp@lines{\@wp@lines\@@wp@line\tabularnewline\hline}}} --\else% ifwork@areas --\edef\@@wps{\pdataref@safe{all}{wp}{ids}}% --\@for\@@wp:=\@@wps\do{% iterate over its work packages --\xdef\@@wp@line{\pdataRef{wp}\@@wp{label}% --&\@ifundefined{wp@\@@wp @short}{\pdataref{wp}\@@wp{title}}{\pdataref{wp}\@@wp{short}} --\ifx\wpfig@type\@true&\pdataref{wp}\@@wp{type}\fi% --\ifx\wpfig@pages\@true&\pdataref{wp}\@@wp{page}\fi% --\ifx\wpfig@start\@true&\pdataref{wp}\@@wp{start}\fi% --\ifx\wpfig@length\@true&\pdataref{wp}\@@wp{len}\fi% --\ifx\wpfig@end\@true&\pdataref{wp}\@@wp{end}\fi} --\if@sites --\@for\@site:=\prop@gen@sites\do{% --\edef\@@lead{\pdataref@safe{wp}\@@wp{lead}} --\edef\@@RM{\ifx\@@lead\@site\lead@style{\pdataref@safe\@@wp\@site{RM}}\else\wp@style{\pdataref@safe\@@wp\@site{RM}}\fi} --\xdef\@@wp@line{\@@wp@line&\@@RM} --\if@RAM --\edef\@@RAM{\ifx\@@lead\@site\lead@style{\pdataref@safe\@@wp\@site{RAM}}\else\wp@style{\pdataref@safe\@@wp\@site{RAM}}\fi} --\xdef\@@wp@line{\@@wp@line&\wp@style\@@RAM} --\fi} --\global\local@count0\relax% --\@for\@site:=\prop@gen@sites\do{\global\advance\local@count by \pdataref@num\@@wp\@site{RM}}% --\xdef\@@wp@line{\@@wp@line &\textbf{\the\local@count}} --\if@RAM --\global\local@count0\relax% --\@for\@site:=\prop@gen@sites\do{\global\advance\local@count by \pdataref@num{#1}\@site{RAM}}% --\xdef\@@wp@line{\@@wp@line &\textbf{\the\local@count}} --\fi --\else% if@sites --\xdef\@@wp@line{\@@wp@line&\wp@style{\pdataref@safe{wp}\@@wp{RM}}} --\if@RAM\xdef\@@wp@line{\@@wp@line&\wp@style{\pdataref@safe{wp}\@@wp{RAM}}\fi} --\fi% if@sites --\xdef\@wp@lines{\@wp@lines\@@wp@line\tabularnewline\hline}} --\fi%ifwork@areas --\gdef\@totals{} --\ifwork@areas --\if@sites --\@for\@site:=\prop@gen@sites\do{% iterate over the sites --\@@@RM=0\if@RAM\@@@RAM=0\fi --\edef\@@was{\pdataref@safe{all}{wa}{ids}}% --\@for\@@wa:=\@@was\do{% iterate over the work areas --\edef\@@wps{\pdataref@safe\@@wa{wp}{ids}}% --\@for\@@wp:=\@@wps\do{% iterate over the work packages --\advance\@@@RM by \pdataref@num\@@wp\@site{RM}% --\if@RAM\advance\@@@RAM by \pdataref@num\@@wp\@site{RAM}\fi}} --\pdata@def{all}\@site{RM}{\the\@@@RM}\if@RAM\pdata@def{all}\@site{RAM}{\the\@@@RAM}\fi --\advance\all@@@RM by \the\@@@RM\if@RAM\advance\all@@@RAM by \the\@@@RAM\fi --\xdef\@totals{\@totals & \textbf{\the\@@@RM}\if@RAM& \textbf{\the\@@@RAM}\fi}} --\xdef\@totals{\@totals & \textbf{\the\all@@@RM}\if@RAM&\textbf{\the\all@@@RAM}\fi} --\pdata@def{all}{total}{RM}{\the\all@@@RM}\if@RAM\pdata@def{all}{total}{RAM}{\the\all@@@RAM}\fi --\else% if@sites --\@@@RM=0\if@RAM\@@@RAM=0\fi --\edef\@@was{\pdataref@safe{all}{wa}{ids}}% --\@for\@@wa:=\@@was\do{\edef\@@wps{\pdataref@safe\@@wa{wp}{ids}}% --\@for\@@wp:=\@@wps\do{% iterate over the work packages --\advance\@@@RM by \pdataref@num{wp}\@@wp{RM}% --\if@RAM\advance\@@@RAM by \pdataref@num{wp}\@@wp{RAM}\fi}} --\pdata@def{all}{total}{RM}{\the\@@@RM}\if@RAM\pdata@def{all}{total}{RAM}{\the\@@@RAM}\fi --\xdef\@totals{&\the\@@@RM\if@RAM &\the\@@@RAM\fi} --\fi% if@sites --\else%i.e. no work@areas --\if@sites --\@for\@site:=\prop@gen@sites\do{%iterate over the sites --\@@@RM=0\if@RAM\@@@RAM=0\fi% --\edef\@@wps{\pdataref@safe{all}{wp}{ids}}% --\@for\@@wp:=\@@wps\do{% iterate over the work packages --\advance\@@@RM by \pdataref@num\@@wp\@site{RM}% --\if@RAM\advance\@@@RAM by \pdataref@num\@@wp\@site{RAM}\fi} --\pdata@def{all}\@site{RM}{\the\@@@RM}\if@RAM\pdata@def{all}\@site{RAM}{\the\@@@RAM}\fi --\xdef\@totals{\@totals & \textbf{\the\@@@RM}\if@RAM& \textbf{\the\@@@RAM}\fi} --\advance\all@@@RM by \the\@@@RM\if@RAM\advance\all@@@RAM by \the\@@@RAM\fi} --\xdef\@totals{\@totals &\textbf{\the\all@@@RM}\if@RAM&\textbf{\the\all@@@RAM}\fi} --\pdata@def{all}{total}{RM}{\the\all@@@RM}\if@RAM\pdata@def{all}{total}{RAM}{\the\all@@@RAM}\fi --\else% if@sites --\@@@RM=0\if@RAM\@@@RAM=0\fi --\edef\@@wps{\pdataref@safe{all}{wp}{ids}}% --\@for\@@wp:=\@@wps\do{% iterate over the work packages --\advance\@@@RM by \pdataref@num{wp}\@@wp{RM}% --\if@RAM\advance\@@@RAM by \pdataref@num{wp}\@@wp{RAM}\fi} --\pdata@def{all}{total}{RM}{\the\@@@RM}\if@RAM\pdata@def{all}{total}{RAM}{\the\@@@RAM}\fi --\xdef\@totals{&\the\@@@RM\if@RAM &\the\@@@RAM\fi} --\fi% if@sites --\fi --\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&}% --\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 --\fi}% if@sites --\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% --\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}\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=\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}[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[\@@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 -- \ifnum\thegantt@month<#1\else -- \ifnum\thegantt@month<\@@e -- \gantt@plus=#3cm\advance\gantt@effort by \gantt@plus\fi\fi} --\newcommand{\ganttchart}[1][]{\begin{figure}[ht]\centering --\gantt@set{#1} --\def\gantt@wps{\pdataref@num{all}{wp}{count}} --\begin{gantt}[#1]{\gantt@wps} -- \newcounter{taskwps}\newcount\@@line -- \edef\@@was{\pdataref@safe{all}{wa}{ids}} -- \ifwork@areas -- \@for\@@wa:=\@@was\do{% iterate over work areas -- \edef\@@wps{\pdataref@safe\@@wa{wp}{ids}} -- \@for\@@wp:=\@@wps\do{% iterate over work packages -- \stepcounter{taskwps} -- \@@line=\gantt@wps\advance\@@line by -\thetaskwps -- \edef\@@tasks{\pdataref@safe\@@wp{task}{ids}} -- \node at (-1/\gantt@xscale,\@@line) [above=-2pt] {\pdataRef{wp}\@@wp{label}}; -- \edef\@@wphases{\pdataref@safe{wp}\@@wp{wphases}} -- \@for\@@ft:=\@@wphases\do{%wp-level work phases -- \decode@wphase\@@ft -- \@action\@@wp\@@line\wphase@start\wphase@len\wphase@force} -- \@for\@@task:=\@@tasks\do{% tasks -- \edef\@@wphases{\pdataref@safe{task}\@@task{wphases}} -- \@for\@@ft:=\@@wphases\do{%task-level work phases -- \decode@wphase\@@ft -- \@action\@@task\@@line\wphase@start\wphase@len\wphase@force}}}} -- \else% ifwork@areas false -- \edef\@@wps{\pdataref@safe{all}{wp}{ids}} -- \@for\@@wp:=\@@wps\do{% iterate over work packages -- \stepcounter{taskwps} -- \@@line=\gantt@wps\advance\@@line by -\thetaskwps -- \edef\@@tasks{\pdataref@safe\@@wp{task}{ids}} -- \node at (-1/\gantt@xscale,\@@line) [above=-2pt] {\pdataRef{wp}\@@wp{label}}; -- \edef\@@wphases{\pdataref@safe{wp}\@@wp{wphases}} -- \@for\@@ft:=\@@wphases\do{%iterate over the wp-level work phases -- \decode@wphase\@@ft -- \@action\@@wp\@@line\wphase@start\wphase@len\wphase@force} -- \@for\@@task:=\@@tasks\do{% task-level work phases -- \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}}} -- \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}}} -- \ifgantt@draft -- \newcounter{gantt@month} -- \newcount\@@e\newdimen\gantt@effort\newdimen\gantt@plus -- \@whilenum\thegantt@month<\prop@gen@months\do{% step over months -- \gantt@effort=0cm -- \ifwork@areas -- \edef\@@was{\pdataref@safe{all}{wa}{ids}} -- \@for\@@wa:=\@@was\do{% iterate over work areas -- \edef\@@wps{\pdataref@safe\@@wa{wp}{ids}} -- \@for\@@wp:=\@@wps\do{% iterate over work packages -- \edef\@@wphases{\pdataref@safe{wp}\@@wp{wphases}} -- \@for\@@ft:=\@@wphases\do{%iterate over the wp-level work phases -- \decode@wphase\@@ft -- \gantt@compute@effort\wphase@start\wphase@len\wphase@force} -- \edef\@@tasks{\pdataref@safe\@@wp{task}{ids}} -- \@for\@@task:=\@@tasks\do{% iterate over tasks -- \edef\@@wphases{\pdataref@safe{task}\@@task{wphases}} -- \@for\@@ft:=\@@wphases\do{%iterate over the wp-level work phases -- \decode@wphase\@@ft -- \gantt@compute@effort\wphase@start\wphase@len\wphase@force}}}} -- \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 -- \edef\@@wphases{\pdataref@safe{wp}\@@wp{wphases}} -- \@for\@@ft:=\@@wphases\do{%iterate over the wp-level work phases -- \decode@wphase\@@ft -- \gantt@compute@effort\wphase@start\wphase@len\wphase@force} -- \edef\@@tasks{\pdataref@safe\@@wp{task}{ids}} -- \@for\@@task:=\@@tasks\do{% iterate over tasks -- \edef\@@wphases{\pdataref@safe{task}\@@task{wphases}} -- \@for\@@ft:=\@@wphases\do{%iterate over the wp-level work phases -- \decode@wphase\@@ft -- \gantt@compute@effort\wphase@start\wphase@len\wphase@force}}} -- \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}\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\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=\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{} -- \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\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\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 -- \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{\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, \jsoft $\hat=$ software/resource dev, -- \jsup $\hat=$ supervision}\\\hline --\end{tabular}} --\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,type=#2,title=#3#1]% --\@ifundefined{prop@rl}{\xdef\prop@rl{#2}}{\xdef\prop@rl{\prop@rl, #2}}} --\newcommand\prop@prl[1]{\message{unclassified: #1}% --\printbibliography[heading=subbibliography,title=Unclassified,#1]}% --\define@key{paperlist}{unclassified}[true]{\message{unclass: \prop@rl}\prop@prl\prop@rl} --\define@key{paperlist}{articles}[true]{\prop@ppl{article}{Articles}} --\define@key{paperlist}{chapters}[true]{\prop@ppl{inbook}{Book Chapters}} --\define@key{paperlist}{confpapers}[true]{\prop@ppl[,keyword=conference]{inproceedings}{Conference Papers}} --\define@key{paperlist}{wspapers}[true]{\prop@ppl[,notkeyword=conference]{inproceedings}{Workshop Papers}} --\define@key{paperlist}{theses}[true]{\prop@ppl{thesis}{Theses}} --\define@key{paperlist}{submitted}[true]{\prop@ppl[,keyword=submitted]{unpublished}{Submitted}} --\define@key{paperlist}{books}[true]{\prop@ppl{book}{Monographs}} --\define@key{paperlist}{techreports}[true]{\prop@ppl{techreport}{Technical Reports}} --\DeclareBibliographyCategory{featured} --\newcommand\prop@paperlist[2][]{% --\let\biboldfont\bibfont% --\renewcommand{\bibfont}{\footnotesize}% --\renewcommand{\baselinestretch}{.9} --\def\do##1{\addtocategory{featured}{##1}}\docsvlist{#2}% --\setkeys{paperlist}{#1} --\@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}} --\if@allpapers\printbibliography[category=featured,heading=empty]\fi% --\let\bibfont\biboldfont} --\def\prop@warnpubs@message{Many of the proposers' publications are online at one of the following URIs:} --\def\prop@warnpubs@title{References} --\defbibheading{warnpubs}{\section*{\prop@warnpubs@title}% -- \@ifundefined{prop@gen@pubspages} -- {\@latex@warning{No publication pages specified; -- use the pubspage key in the proposal environment!}} -- {\prop@warnpubs@message% -- \@for\@I:=\prop@gen@pubspages\do{\par\noindent\csname\@I\endcsname}}} --\defbibheading{empty}{} -+\RequirePackage{proposal} -+ -+ - \endinput - %% - %% End of file `proposal.cls'. -diff -up tex/latex/proposal/base/reporting.cls.noworkaddress tex/latex/proposal/base/reporting.cls ---- tex/latex/proposal/base/reporting.cls.noworkaddress 2022-12-31 12:22:39.739994906 -0500 -+++ tex/latex/proposal/base/reporting.cls 2022-12-31 12:31:58.440831980 -0500 -@@ -7,7 +7,7 @@ - %% proposal.dtx (with options: `reporting') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesPackage{reporting}[2016/04/15 v1.5 Project Reporting] -+\ProvidesPackage{reporting}[2020/08/21 v1.7 Project Reporting] - \newif\if@wpsubsection\@wpsubsectionfalse - \newif\ifsubmit\submitfalse - \newif\ifgrantagreement\grantagreementfalse -@@ -18,11 +18,15 @@ - \newif\if@RAM\@RAMfalse - \newif\if@svninfo\@svninfofalse - \newif\if@gitinfo\@gitinfofalse -+\newif\if@numericcites\@numericcitesfalse -+\newif\if@longtasklabels\@longtasklabelsfalse -+\newif\if@attachments\@attachmentsfalse - \def\proposal@class{article} - \DeclareOption{wpsubsection}{\@wpsubsectiontrue} - \DeclareOption{submit}{\submittrue} - \DeclareOption{grantagreement}{\grantagreementtrue} - \DeclareOption{gitinfo}{\@gitinfotrue} -+\DeclareOption{numericcites}{\@numericcitestrue} - \DeclareOption{svninfo}{\@svninfotrue} - \DeclareOption{public}{\publictrue} - \DeclareOption{noworkareas}{\work@areasfalse\PassOptionsToClass{\CurrentOption}{pdata}} -@@ -30,67 +34,12 @@ - \DeclareOption{report}{\def\proposal@class{report}} - \DeclareOption{keys}{\keystrue} - \DeclareOption{deliverables}{\delivstrue} --\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} -+\DeclareOption{longtasklabels}{\@longtasklabelstrue} -+\DeclareOption{attachments}{\@attachmentsfalse} -+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\proposal@class}} - \ProcessOptions - \LoadClass[a4paper,twoside]{\proposal@class} --\RequirePackage{amssymb} --\RequirePackage{wasysym} --\RequirePackage{url} --\RequirePackage{graphicx} --\RequirePackage{colortbl} --\RequirePackage{xcolor} --\RequirePackage{rotating} --\RequirePackage{fancyhdr} --\RequirePackage{array} --\RequirePackage{xspace} --\RequirePackage{comment} --\AtBeginDocument{\ifpublic\excludecomment{private}\fi} --\RequirePackage{tikz} --\RequirePackage{paralist} --\RequirePackage[a4paper,margin=18mm]{geometry} --\RequirePackage{boxedminipage} --\renewcommand{\thempfootnote}{\roman{mpfootnote}} --\renewcommand{\familydefault}{\sfdefault} --\RequirePackage[scaled=.90]{helvet} --\RequirePackage{textcomp} --\RequirePackage[hyperref=auto,style=alphabetic,defernumbers=true,backend=bibtex,backref=true,firstinits=true,maxbibnames=6]{biblatex}[2010/11-19] --\RequirePackage{csquotes} --\RequirePackage{mdframed} --\RequirePackage{pdata} --\definecolor{darkblue}{rgb}{0,0,.7} --\ifsubmit\def\prop@link@color{darkblue}\else\def\prop@link@color{blue}\fi --\RequirePackage[bookmarks=true,linkcolor=\prop@link@color, -- citecolor=\prop@link@color,urlcolor=\prop@link@color,colorlinks=true, -- breaklinks=true, bookmarksopen=true]{hyperref} --\ifsubmit --\RequirePackage[hide]{ed} --\if@svninfo\RequirePackage[final,today]{svninfo}\fi --\else --\RequirePackage[show]{ed} --\if@svninfo\RequirePackage[eso-foot,today]{svninfo}\fi --\if@gitinfo\RequirePackage[mark]{gitinfo2}\fi --\fi --\renewcommand\ednoteshape{\sl\footnotesize} --\ifpublic\excludecomment{private}\else\includecomment{private}\fi --\setcounter{secnumdepth}{3} --\newif\ifofpage\ofpagefalse --\ifgrantagreement --\fancyhead{} --\renewcommand{\headrulewidth}{0pt} --\renewcommand{\footrulewidth}{0.4pt} --\else --\fancyhead[RE,LO]{\prop@gen@acronym} --\fancyhfoffset{0pt} --\fi --\fancyfoot[C]{} --\newcommand\prop@of@pages[2]{page~#1\ifofpage~of~#2\fi} --\ifgrantagreement --\fancyfoot[L]{\prop@gen@proposalnumber\quad \prop@gen@acronym\quad --\quad Part B} --\fancyfoot[R]{\thepage} --\else --\fancyhead[LE,RO]{\prop@of@pages\thepage{\pdataref@num{prop}{page}{last}}} --\fi --\pagestyle{fancyplain} -+\RequirePackage{proposal} - \newif\if@report\@reportfalse - \newenvironment{report}[1][]% - {\@reporttrue\readpdata\jobname% -@@ -108,7 +57,7 @@ - {\begin{center} - {\LARGE Final Project Report}\\[.2cm] - {\LARGE\textbf{\prop@gen@title}}\\[.3cm] -- {\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm] -+ \ifx\prop@gen@acronym\@empty\else{\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm]\fi - {\large\today}\\[1em] - \begin{tabular}{c*{\the@PIs}{c}} - \prop@tl\prop@gen@PIs{\pdataref{PI}\tl@ext{name}}\\ -@@ -118,41 +67,8 @@ - \end{center} - \setcounter{tocdepth}{2}\tableofcontents\newpage\setcounter{page}{1}} - {} --\defbibheading{empty}{} --\newif\if@allpapers\@allpaperstrue --\newcommand\prop@ppl[3][]{\@allpapersfalse\message{ppl processing: #2}% --\printbibliography[heading=subbibliography,type=#2,title=#3#1]% --\@ifundefined{prop@rl}{\xdef\prop@rl{#2}}{\xdef\prop@rl{\prop@rl, #2}}} --\newcommand\prop@prl[1]{\message{unclassified: #1}% --\printbibliography[heading=subbibliography,title=Unclassified,#1]}% --\define@key{paperlist}{unclassified}[true]{\message{unclass: \prop@rl}\prop@prl\prop@rl} --\define@key{paperlist}{articles}[true]{\prop@ppl{article}{Articles}} --\define@key{paperlist}{chapters}[true]{\prop@ppl{inbook}{Book Chapters}} --\define@key{paperlist}{confpapers}[true]{\prop@ppl[,keyword=conference]{inproceedings}{Conference Papers}} --\define@key{paperlist}{wspapers}[true]{\prop@ppl[,notkeyword=conference]{inproceedings}{Workshop Papers}} --\define@key{paperlist}{theses}[true]{\prop@ppl{thesis}{Theses}} --\define@key{paperlist}{submitted}[true]{\prop@ppl[,keyword=submitted]{unpublished}{Submitted}} --\define@key{paperlist}{books}[true]{\prop@ppl{book}{Monographs}} --\define@key{paperlist}{techreports}[true]{\prop@ppl{techreport}{Technical Reports}} --\DeclareBibliographyCategory{featured} --\newcommand\prop@paperlist[2][]{% --\let\biboldfont\bibfont% --\renewcommand{\bibfont}{\footnotesize}% --\renewcommand{\baselinestretch}{.9} --\def\do##1{\addtocategory{featured}{##1}}\docsvlist{#2}% --\setkeys{paperlist}{#1} --\@ifundefined{prop@rl}{}{\@latex@warning{some papers are not classified!}} --\if@allpapers\printbibliography[category=featured,heading=empty]\fi% --\let\bibfont\biboldfont} --\def\prop@warnpubs@message{Many of the proposers' publications are online at one of the following URIs:} --\def\prop@warnpubs@title{References} --\defbibheading{warnpubs}{\section*{\prop@warnpubs@title}% -- \@ifundefined{prop@gen@pubspages} -- {\@latex@warning{No publication pages specified; -- use the pubspage key in the proposal environment!}} -- {\prop@warnpubs@message% -- \@for\@I:=\prop@gen@pubspages\do{\par\noindent\csname\@I\endcsname}}} --\defbibheading{empty}{} -+ -+ - \endinput - %% - %% End of file `reporting.cls'. -diff -up tex/latex/proposal/dfg/dfgpdata.sty.noworkaddress tex/latex/proposal/dfg/dfgpdata.sty ---- tex/latex/proposal/dfg/dfgpdata.sty.noworkaddress 2016-04-15 17:38:41.000000000 -0400 -+++ tex/latex/proposal/dfg/dfgpdata.sty 2022-12-31 12:32:42.674795973 -0500 -@@ -7,35 +7,21 @@ - %% dfgproposal.dtx (with options: `pdata') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesPackage{dfgpdata}[2016/04/15 v1.4 DFG Project Data] -+\ProvidesPackage{dfgpdata}[2020/08/21 v1.5 DFG Project Data] - \newif\ifdeutsch\deutschfalse - \DeclareOption{german}{\deutschtrue\message{Deutscher Antrag}} - \ProcessOptions - \define@key{prop@gen}{thema}{\def\prop@gen@thema{#1}\pdata@def{prop}{gen}{thema}{#1}} -+\def\prop@gen@Dkeywords{kommt noch} -+\def\prop@gen@keywords{to be added} -+\define@key{prop@gen}{Dkeywords}{\def\prop@gen@Dkeywords{#1}} - \renewcommand\prop@gen@instrument{Neuantrag auf Sachbeihilfe} - \newcommand\prop@gen@thema{??? Thema ???} - \newcommand\deu[1]{#1} --\newcommand\dfg@applicants@lines{% --\prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{personaltitle} \wa@ref{person}\tl@ext{name}}\\ --\prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{academictitle}}\\ --\prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{birthdate}}\\} --\newcommand\dfg@applicants@institute@lines{% --\prop@tl\prop@gen@PIs{\wa@ref{institution}{\wa@ref{person}\tl@ext{affiliation}}{shortname}}\\ --\prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{workaddress}}\\ --\prop@tl\prop@gen@PIs{Tel: \wa@ref{person}\tl@ext{worktel}}\\ --\prop@tl\prop@gen@PIs{Fax: \wa@ref{person}\tl@ext{workfax}}\\ --\prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{email}}\\} --\newcommand\dfg@applicants@private@lines{% --\prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{privaddress}}\\ --\prop@tl\prop@gen@PIs{Tel: \wa@ref{person}\tl@ext{privtel}}\\} --\newcommand\dfg@applicants{% --\subsection{\if@sites\ifnum\the@sites>1 Joint Proposal; \fi\fi% --Applicant\if@sites\ifnum\the@PIs>1{s}\fi\fi\ \deu{(Antragsteller)}}% --\dfg@applicants@table} --\newcommand\dfg@topic{\subsection{\ifdeutsch Thema\else Topic \deu{(Thema)}\fi}\prop@gen@thema} -+\newcommand\dfg@topic{\subsection{\ifdeutsch Thema\else Topic\fi}\prop@gen@thema} - \newcommand\dfg@area@field{% - \ifdeutsch\subsection{Fachgebiet und Arbeitsrichtung}\else --\subsection{Research area and field of work \deu{(Fachgebiet und Arbeitsrichtung)}}\fi -+\subsection{Research area and field of work }\fi - \ifdeutsch Disziplin\else Scientific discipline\fi: \prop@gen@discipline\\ - \ifdeutsch Arbeitsgebiet\else Fields of work\fi: \prop@gen@areas} - \newcommand\dfgprojpapers[2][]{\prop@paperlist[#1]{#2}} -@@ -71,6 +57,8 @@ Applicant\if@sites\ifnum\the@PIs>1{s}\fi - \renewcommand\wp@legend@site{Partner} - \renewcommand\wp@legend@effort{Aufwand\if@RAM{ (PM+HM)}\fi} - \renewcommand\wp@legend@all{\textbf{Summe}} -+\renewcommand\wprm{\pdataref@safe{wp}\wp@id{RM}\if@RAM\ PM+\pdataref{wp}\wp@id{RAM} HM\fi} -+\renewcommand\gantt@footnote{Balken mit reduzierter H\"ohe (z.B. 50\%) bedeuten reduzierte Arbeitslast in dieser Phase (z.B. auf 50\%)} - \renewcommand\gantt@caption@main{Zeitliche Verteilung der Arbeitspakete} - \renewcommand\gantt@caption@lower{draft: unten die Lastverteilung} - \renewcommand\coherence@caption{Bisherige Kollaboration der {\pn} Partner} -diff -up tex/latex/proposal/dfg/dfgproposal.cls.noworkaddress tex/latex/proposal/dfg/dfgproposal.cls ---- tex/latex/proposal/dfg/dfgproposal.cls.noworkaddress 2016-04-15 17:38:41.000000000 -0400 -+++ tex/latex/proposal/dfg/dfgproposal.cls 2022-12-31 12:32:42.674795973 -0500 -@@ -7,58 +7,54 @@ - %% dfgproposal.dtx (with options: `cls') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesClass{dfgproposal}[2016/04/15 v1.4 DFG Proposal] -+\ProvidesClass{dfgproposal}[2020/08/21 v1.5 DFG Proposal] - \newif\ifgeneral\generalfalse - \DeclareOption{general}{\generaltrue} - \DeclareOption{german}{\PassOptionsToPackage{\CurrentOption}{dfgpdata}} -+\PassOptionsToClass{11pt}{article} - \DeclareOption*{\PassOptionsToClass{\CurrentOption}{proposal}} - \ProcessOptions - \LoadClass{proposal} - \RequirePackage{eurosym} - \RequirePackage{dfgpdata} - \ifdeutsch\RequirePackage[ngerman]{babel} --\else\RequirePackage[ngerman,USenglish]{babel}\fi -+\else\RequirePackage[ngerman,english]{babel}\fi -+\RequirePackage[scaled=.90]{helvet} -+\renewcommand{\familydefault}{\sfdefault} - \newenvironment{sitedescription}[2][]% --{\def\@test{#1}\def\@@title{\ifx\@test\@empty\wa@ref{institution}{#2}{acronym}\else #1\fi: --\textsc{\wa@ref{institution}{#2}{name}}} -+{\def\@test{#1}\def\@@title{\ifx\@test\@empty\pdataref{site}{#2}{acronym}\else #1\fi: -+\textsc{\pdataref{site}{#2}{name}}} - \@for\@I:=#2\do{\pdata@target{site}\@I{}}\subsubsection\@@title} - {} --\newlength\applicants@table@columnwidth --\newcommand\dfg@applicants@table% --{\setlength\applicants@table@columnwidth\textwidth --\advance\applicants@table@columnwidth by -6em --\divide\applicants@table@columnwidth by \the@PIs --\ifnum\the@PIs>2\begin{tabular}{|l|*{\the@PIs}{p{\applicants@table@columnwidth}|}} --\else\begin{tabular}{|l|*{\the@PIs}{l|}}\fi --\hline --\dfg@applicants@lines\hline --&\multicolumn{\the@PIs}{|l|}{\textbf{Work Address\deu{ (Dienstanschrift)}:}}\\\hline --\dfg@applicants@institute@lines\hline --&\multicolumn{\the@PIs}{|l|}{\textbf{Private Address\deu{ (Privatanschrift)}:}}\\\hline --\dfg@applicants@private@lines\hline --\end{tabular}} - \renewenvironment{prop@proposal} --{\thispagestyle{empty}% -+{\ifsubmit\setcounter{page}{1}\else\thispagestyle{empty}\fi - \begin{center} - {\LARGE \prop@gen@instrument}\\[.2cm] - {\LARGE\textbf{\prop@gen@title}}\\[.3cm] --{\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm] -+\ifx\prop@gen@acronym\@empty\else{\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm]\fi - {\large\today}\\[1em] --\WAauthorblock[aff]\prop@gen@PIs\\[2cm] -+\edef\the@PIs{\pdataref{all}{PI}{count}} -+\edef\prop@gen@PIs{\pdataref{all}{PI}{ids}} -+\begin{tabular}{c*{\the@PIs}{c}} -+\prop@tl\prop@gen@PIs{\pdataref@safe{PI}\tl@ext{name}}\\ -+\prop@tl\prop@gen@PIs{\pdataref@safe{PI}\tl@ext{affiliation}}\\ -+\prop@tl\prop@gen@PIs{\pdataref@safe{PI}\tl@ext{dept}}\\ -+\end{tabular}\\[2cm] - \end{center} -+\ifgeneral -+\ifsubmit\else -+\setcounter{section}{-1} - \edef\keep@tocdepth{\value{tocdepth}} - \setcounter{tocdepth}{2}\tableofcontents - \setcounter{tocdepth}{\keep@tocdepth} --\ifgeneral\setcounter{section}{-1} - \newpage\thispagestyle{empty} - \ifdeutsch\section{Allgemeine Angaben (nur f\"ur ELAN)}\else - \section{General Information (for the ELAN system only)}\fi --\dfg@applicants - \dfg@topic - \dfg@area@field - \ifdeutsch\subsection{Voraussichtliche Gesamtdauer}\else --\subsection{Anticipated total duration \deu{(Voraussichtliche Gesamtdauer)}} --\fi -+\subsection{Anticipated total duration} -+\fi% ifdeutsch - \@ifundefined{prop@gen@totalduration}{????}{\prop@gen@totalduration}; - \ifdeutsch - \@ifundefined{prop@gen@since}{Erstantrag}{Fortsetungsantrag, das Project l\"auft seit -@@ -66,34 +62,31 @@ - \else - \@ifundefined{prop@gen@since}{initial proposal}{continuation proposal, the project started - \prop@gen@since.} -+\fi%ifdeutsch -+\ifdeutsch -+\subsection{Schl\"usselw\"orter}\prop@gen@Dkeywords -+\else\subsection{Keywords}\prop@gen@keywords - \fi - \ifdeutsch\subsection{Antragszeitraum}\else --\subsection{Application period \deu{(Antragszeitraum)}}\fi -+\subsection{Application period}\fi - \prop@gen@months\quad Months starting \prop@gen@start - \@ifundefined{prop@gen@fundsuntil}{} - { (\ifdeutsch Mittel reichen bis\else funds last until\fi\ \prop@gen@fundsuntil)} --\ifdeutsch\else\selectlanguage{USenglish}\fi --\newpage\fi%ifgeneral --\setcounter{page}{0}} -+\ifdeutsch\else\selectlanguage{english}\fi -+\newpage -+\setcounter{page}{0}% -+\fi\fi}% ifsubmit ifgeneral - {} - \ifdeutsch - \def\prop@warnpubs@message{Viele der Publikationen der Antragsteller sind verf\"ugbar unter folgenden URLs:} - \def\prop@warnpubs@title{Literatur} - \fi - \newcommand\attachments{\ifdeutsch\section{Verzeichnis der Anlagen}\else --\section{List of Attachments \deu{(Verzeichnis der Anlagen)}}\fi -+\section{List of Attachments}\fi - \begin{itemize} - \@for\@I:=\prop@gen@PIs\do{% -- \item\ifdeutsch Lebenslauf und Publikatinsverzeichnis\else -- Curriculum Vitae and list of publications for \fi -- \@nameuse{wa@person@\@I @personaltitle} -- \@nameuse{wa@person@\@I @name} -- (CD + \ifdeutsch Ausdruck\else printed version\fi)} --\ifdeutsch --\item Publications either cited in section~\ref{sec:ourpubs} or occurring in one of the -- curricula vitae (CD only)\else --\item Zitierte Publikationen aus Abschnitt~\ref{sec:ourpubs} oder einem der Lebensl\"aufe -- (nur CD)\fi -+ \item\ifdeutsch Lebenslauf und Publikatinsverzeichnis\else Curriculum Vitae and list of publications for \fi -+ \pdataref{PI}\@I{title}\pdataref{PI}\@I{name}} - \end{itemize}} - \ifgeneral - \newenvironment{Zusammenfassung}{\thispagestyle{empty}\subsection{Zusammenfassung}\begin{otherlanguage}{ngerman}} -diff -up tex/latex/proposal/dfg/dfgreporting.cls.noworkaddress tex/latex/proposal/dfg/dfgreporting.cls ---- tex/latex/proposal/dfg/dfgreporting.cls.noworkaddress 2016-04-15 17:38:41.000000000 -0400 -+++ tex/latex/proposal/dfg/dfgreporting.cls 2022-12-31 12:32:42.674795973 -0500 -@@ -7,15 +7,18 @@ - %% dfgproposal.dtx (with options: `reporting') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesPackage{dfgreporting}[2016/04/15 v1.4 DFG Project Reporting] -+\ProvidesPackage{dfgreporting}[2020/08/21 v1.5 DFG Project Reporting] - \DeclareOption{german}{\PassOptionsToPackage{\CurrentOption}{dfgpdata}} -+\PassOptionsToClass{11pt}{article} - \DeclareOption*{\PassOptionsToClass{\CurrentOption}{reporting}} - \ProcessOptions - \LoadClass{reporting} - \RequirePackage{eurosym} - \RequirePackage{dfgpdata} - \ifdeutsch\RequirePackage[ngerman]{babel} --\else\RequirePackage[ngerman,USenglish]{babel}\fi -+\else\RequirePackage[ngerman,english]{babel}\fi -+\RequirePackage[scaled=.90]{helvet} -+\renewcommand{\familydefault}{\sfdefault} - \define@key{prop@gen}{reportperiod}{\def\prop@gen@reportperiod{#1}} - \define@key{prop@gen}{applareas}{\def\prop@gen@applareas{#1}} - \define@key{prop@gen}{key}{\@dmp{key=#1}% -@@ -23,45 +26,38 @@ - \define@key{prop@gen}{coop}{\@dmp{coop=#1}% - \@ifundefined{prop@gen@coops}{\xdef\prop@gen@coops{{#1}}}{\xdef\prop@gen@coops{\prop@gen@coops,{#1}}}} - \define@key{prop@gen}{projpapers}{\def\prop@gen@projpapers{#1}} --\newcommand\dfg@applicants@table% --{\begin{tabular}{|l|*{\the@PIs}{l|}}\hline --\dfg@applicants@lines\hline --&\multicolumn{\the@PIs}{|l|}{\textbf{Private Address\deu{ (Privatanschrift)}:}}\\\hline --\dfg@applicants@private@lines\hline --\end{tabular}} --\newcommand\dfg@institute@table% --{\begin{tabular}{|l|*{\the@PIs}{l|}}\hline --\dfg@applicants@institute@lines\hline --\end{tabular}} - \newcommand\prop@assoc[2]{\let\@tmpop=\relax\@for\@I:=#2\do{\@tmpop\@I\let\@tmpop=#1}} - \newcommand\show@prop@gen@keys{\def\@cb{, }\@ifundefined{prop@gen@keys}{??:???? ?/?}{\prop@assoc\@cb\prop@gen@keys}} - \renewenvironment{prop@report} --{\selectlanguage{USenglish} --\thispagestyle{empty}% -+{\ifsubmit\setcounter{page}{1}\else\thispagestyle{empty}\fi% - \begin{center} -- {\LARGE Final Project Report}\\[.2cm] -- {\LARGE\textbf{\prop@gen@title}}\\[.3cm] -- {\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm] -- {\large Reference number(s): \show@prop@gen@keys}\\[.2cm] -- {\large\today}\\[1em] -- \begin{tabular}{c*{\the@PIs}{c}} -- \prop@tl\prop@gen@PIs{\wa@ref{person}\tl@ext{name}}\\ -- \prop@tl\prop@gen@PIs{\wa@ref{institution}{\wa@ref{person}\tl@ext{affiliation}}{name}} -- \end{tabular}\\[2cm] -+{\LARGE \prop@gen@instrument}\\[.2cm] -+{\LARGE\textbf{\prop@gen@title}}\\[.3cm] -+\ifx\prop@gen@acronym\@empty\else{\LARGE Acronym: {\prop@gen@acronym}}\\[.2cm]\fi -+{\large\today}\\[1em] -+\edef\the@PIs{\pdataref{all}{PI}{count}} -+\edef\prop@gen@PIs{\pdataref{all}{PI}{ids}} -+\begin{tabular}{c*{\the@PIs}{c}} -+\prop@tl\prop@gen@PIs{\pdataref@safe{PI}\tl@ext{name}}\\ -+\prop@tl\prop@gen@PIs{\pdataref@safe{PI}\tl@ext{affiliation}}\\ -+\prop@tl\prop@gen@PIs{\pdataref@safe{PI}\tl@ext{dept}}\\ -+\end{tabular}\\[2cm] - \end{center} --\setcounter{tocdepth}{1}\tableofcontents\newpage\setcounter{page}{1} --\section{General Information \deu{(Allgemeine Angaben)}} --\subsection{Reference Numbers \deu{(DFG Gesch\"aftszeichen)}} -+\setcounter{section}{-1} -+\edef\keep@tocdepth{\value{tocdepth}} -+\setcounter{tocdepth}{2}\tableofcontents -+\setcounter{tocdepth}{\keep@tocdepth} -+\newpage\thispagestyle{empty} -+\ifdeutsch\section{Allgemeine Angaben (nur f\"ur ELAN)}\else -+\section{General Information (for the ELAN system only)}\fi -+\subsection{Reference Numbers} - \show@prop@gen@keys --\dfg@applicants --\subsection{Institute/Chair \deu{(Institut/Lehrstuhl)}}\dfg@institute@table --\dfg@topic --\subsection{Report and Funding Period \deu{(Berichts- und F\"orderzeitraum)}} -+\subsection{Report and Funding Period} - \prop@gen@reportperiod - \dfg@area@field --\subsection{Application Areas \deu{(Verwertungsfelder)}}\prop@gen@applareas -+\subsection{Application Areas}\prop@gen@applareas - \dfgprojpapers\prop@gen@projpapers} --{\signatures{Signatures \deu{(Unterschriften)}}} -+{} - \endinput - %% - %% End of file `dfgreporting.cls'. -diff -up tex/latex/proposal/eu/eupdata.sty.noworkaddress tex/latex/proposal/eu/eupdata.sty ---- tex/latex/proposal/eu/eupdata.sty.noworkaddress 2016-04-15 17:38:41.000000000 -0400 -+++ tex/latex/proposal/eu/eupdata.sty 2022-12-31 12:33:20.956764811 -0500 -@@ -7,9 +7,11 @@ - %% euproposal.dtx (with options: `pdata') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesPackage{eupdata}[2016/04/15 v1.5 EU Project Data] -+\ProvidesPackage{eupdata}[2020/08/21 v1.7 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}} -+\define@key{prop@gen}{Csite}{\def\prop@gen@Csite{#1}\pdata@def{prop}{gen}{Csite}{#1}} -+\define@key{prop@gen}{Cemail}{\def\prop@gen@Cemail{#1}\pdata@def{prop}{gen}{Cemail}{#1}} -+\define@key{prop@gen}{Ctelfax}{\def\prop@gen@Ctelfax{#1}\pdata@def{prop}{gen}{Ctelfax}{#1}} - \def\prop@gen@challenge{??}\def\prop@gen@challengeid{??} - \define@key{prop@gen}{challenge}{\def\prop@gen@challenge{#1}\pdata@def{prop}{gen}{challenge}{#1}} - \define@key{prop@gen}{challengeid}{\def\prop@gen@challengeid{#1}\pdata@def{prop}{gen}{challengeid}{#1}} -@@ -19,8 +21,8 @@ - \def\prop@gen@outcome{??}\def\prop@gen@outcomeid{??} - \define@key{prop@gen}{outcome}{\def\prop@gen@outcome{#1}\pdata@def{prop}{gen}{outcome}{#1}} - \define@key{prop@gen}{outcomeid}{\def\prop@gen@outcomeid{#1}\pdata@def{prop}{gen}{outcomeid}{#1}} --\define@key{prop@gen}{callname}{\def\prop@gen@call{#1}\pdata@def{prop}{gen}{callname}{#1}} --\define@key{prop@gen}{callid}{\def\prop@gen@call{#1}\pdata@def{prop}{gen}{callid}{#1}} -+\define@key{prop@gen}{callname}{\def\prop@gen@callname{#1}\pdata@def{prop}{gen}{callname}{#1}} -+\define@key{prop@gen}{callid}{\def\prop@gen@callid{#1}\pdata@def{prop}{gen}{callid}{#1}} - \define@key{prop@gen}{iconrowheight}{\def\prop@gen@iconrowheight{#1}} - \define@key{prop@gen}{topicsaddressed}{\def\prop@gen@topicsaddressed{#1}} - \endinput -diff -up tex/latex/proposal/eu/euproposal.cls.noworkaddress tex/latex/proposal/eu/euproposal.cls ---- tex/latex/proposal/eu/euproposal.cls.noworkaddress 2016-04-15 17:38:41.000000000 -0400 -+++ tex/latex/proposal/eu/euproposal.cls 2022-12-31 12:33:20.956764811 -0500 -@@ -7,32 +7,35 @@ - %% euproposal.dtx (with options: `cls') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesClass{euproposal}[2016/04/15 v1.5 EU Proposal] -+\ProvidesClass{euproposal}[2020/08/21 v1.7 EU Proposal] - \newif\ifpartB\partBfalse - \DeclareOption{partB}{\partBtrue} -+\newif\if@split\@splitfalse -+\DeclareOption{split}{\@splittrue} - \DeclareOption*{\PassOptionsToClass{\CurrentOption}{proposal}} - \ProcessOptions --\ifpartB\LoadClass[report,noRAM]{proposal}\else\LoadClass[noRAM]{proposal}\fi -+\ifpartB\LoadClass[report]{proposal}\else\LoadClass{proposal}\fi - \RequirePackage{longtable} - \RequirePackage{eurosym} - \RequirePackage{wrapfig} - \RequirePackage{eupdata} -+\RequirePackage{datetime} - \RequirePackage{chngcntr} - \counterwithin{figure}{subsection} - \counterwithin{table}{subsection} -+\setcounter{secnumdepth}{4} - \ifpartB - \def\thepart{\Alph{part}} - \setcounter{part}{2} - \def\thechapter{\thepart.\arabic{chapter}} - \def\numberline#1{\hb@xt@\@tempdima{#1\hfil} } --\fi -+\fi% ifpartB - \newcommand\prop@sites@table{\def\@@table{} - {\let\tabularnewline\relax\let\hline\relax --\@for\@I:=\prop@gen@sites\do{\xdef\@@table{\@@table\pdataref{site}\@I{number}} --\xdef\@@table{\@@table&\@nameuse{wa@institution@\@I @name} --\ifx\@I\prop@gen@coordinatorsite (coordinator)\fi} --\xdef\@@table{\@@table&\@nameuse{wa@institution@\@I @acronym}} --\xdef\@@table{\@@table&\@nameuse{wa@institution@\@I @countryshort}\tabularnewline\hline}}} -+\@for\@I:=\prop@gen@sites\do{\xdef\@@table{\@@table\pdataref@safe{site}\@I{number}} -+\xdef\@@table{\@@table&\pdataref@safe{site}\@I{shortname}\ifx\@I\prop@gen@coordinatorsite (coordinator)\fi} -+\xdef\@@table{\@@table&\pdataref@safe{site}\@I{acronym}} -+\xdef\@@table{\@@table&\pdataref@safe{site}\@I{countryshort}\tabularnewline\hline}}} - \begin{tabular}{|l|p{8cm}|l|l|}\hline%| - \# & Participant organisation name & Short name & Country\\\hline\hline - \@@table -@@ -44,9 +47,9 @@ - {\Large\textbf\prop@gen@callname}\\[.4cm] - {\LARGE \prop@gen@callid}\\[.8cm] - {\huge\textbf\prop@gen@title}\\[.4cm] -- {\LARGE Acronym: {\prop@gen@acronym}}\\[2cm] -+ \ifx\prop@gen@acronym\@empty\else{\LARGE Acronym: {\prop@gen@acronym}}\\[2cm]\fi - \end{center} --{\large\textbf{Date of Preparation: \today}} -+{\large\textbf{Date of Preparation: \today: \currenttime}} - \\[1em] - \begin{large} - \begin{description} -@@ -56,9 +59,9 @@ - % \textbf{Objective \prop@gen@objectiveid}: \prop@gen@objective, - % \textbf{target outcome \prop@gen@outcomeid}) \prop@gen@outcome. - % {\prop@gen@topicsaddressed}\\[1em] -- \item[Coordinator:] \wa@ref{person}\prop@gen@coordinator{name} -- \item[e-mail:] \wa@ref{person}\prop@gen@coordinator{email} -- \item[tel/fax:] \wa@ref{person}\prop@gen@coordinator{worktelfax} -+ \item[Coordinator:] \prop@gen@coordinator -+ \item[e-mail:] \prop@gen@Cemail -+ \item[tel/fax:] \prop@gen@Ctelfax - \@ifundefined{prop@gen@keywords}{}{\item[Keywords:] \prop@gen@keywords} - \end{description} - \end{large} -@@ -66,12 +69,18 @@ - \begin{center} - \prop@sites@table\vfill - \@ifundefined{prop@gen@iconrowheight}{} --{\@for\@site:=\prop@gen@sites\do{\wa@institution@logo[height=\prop@gen@iconrowheight]\@site\qquad}} -+{\@for\@site:=\prop@gen@sites\do{\includegraphics[height=\prop@gen@iconrowheight]{\pdataref@safe{site}\@site{logo}}\qquad}} - \end{center} - \newpage - \fi% ifgrantagreement - \setcounter{tocdepth}{2}\setcounter{part}{2}} --{\newpage\printbibliography[heading=warnpubs,maxnames=999]} -+{\newpage\printbibliography[heading=warnpubs]% -+\if@split -+\newwrite\@@SPLIT% -+\immediate\openout\@@SPLIT=SPLIT.at% -+\protected@write\@@SPLIT{}{\thepage}% -+\closeout\@@SPLIT% -+\fi}% if@split - \def\prop@gen@instrument{Proposal Instrument (e.g. IP)} - \define@key{site@desc}{box}[true]{\def\site@desc@box{#1}% - \pdata@def{sitedesc}{\@site}{box}{#1}} -@@ -93,16 +102,16 @@ - \begin{wrapfigure}{r}{\site@desc@width}\vspace{-2.5ex}% - \begin{tabular}{|p{\site@desc@width}|}\hline\vspace{1mm}% - \ifx\@site@desc@logo\@true% if we want a logo --\wa@institution@logo[height=\site@desc@width]{#2}\\[1ex]% -+\includegraphics[height=\site@desc@width]{#2}\\[1ex]% - \fi% end logo --\textbf{\wa@ref{institution}{#2}{type}.\hfill \wa@ref{institution}{#2}{country}}\\% --\small\wa@ref{institution}{#2}{streetaddress}, \wa@ref{institution}{#2}{townzip}\\\hline% -+\textbf{\pdataref@safe{site}{#2}{type}.\hfill \pdataref@safe{site}{#2}{country}}\\% -+\small\pdataref@safe{site}{#2}{streetaddress}, \pdataref@safe{site}{#2}{townzip}\\\hline% - \end{tabular}\vspace{-2.5ex}% - \end{wrapfigure}% - \fi% end box - \pdata@target{site}{#2}% --{\subsubsection{\wa@ref{institution}{#2}{acronym}: % space here --{\textsc{\wa@ref{institution}{#2}{name}} (\wa@ref{institution}{#2}{countryshort})}}}% -+{\subsubsection{\pdataref@safe{site}{#2}{acronym}: % space here -+{\textsc{\pdataref@safe{site}{#2}{shortname}} (\pdataref@safe{site}{#2}{countryshort})}}}% - \small% - \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% - {0.25ex \@plus1ex \@minus.2ex}% -@@ -148,6 +157,8 @@ - \define@key{mst}{wdeliv}{\gdef\mst@wdeliv{#1}} - \define@key{mst}{wverif}{\gdef\mst@wverif{#1}} - \newcommand\milestonetable[1][]{% -+\IfFileExists{./\jobname.deliverables}{% to avoid errors -+\message{euproposal.cls: Generating Milestones Table}% - \def\mst@caption{Milestones, Deliverables, and Verification}% - \def\mst@wname{2.5cm}\def\mst@wdeliv{7cm}\def\mst@wverif{4cm} - \setkeys{mst}{#1}% -@@ -174,14 +185,15 @@ - &\textbf{\miles@legend@verif}\\\hline\hline - \mst@lines - \end{tabular} --\caption{\mst@caption}\label{tab:milestonetable} --\end{table} --\footnotetext\miles@legend@footnote} -+\caption{\mst@caption\ ($^\ast$\miles@legend)}\label{tab:milestonetable} -+\end{table}} -+{\ClassWarning{not formatting mile stones table yet, deliverables are -+ still missing; generate\jobname.deliverables\ to get it!}}} - \newcommand\miles@legend@name{Name} - \newcommand\miles@legend@mo{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\miles@legend@involved{WPs$^\ast$/Deliverables involved} -+\newcommand\miles@legend{WP is first number in deliverable label} - \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}} -@@ -192,8 +204,7 @@ - {\begin{risk}{#1}{#2}{#3}\textbf{Contingency:} } - {\end{risk}} - \newcommand\keypubs[1]{% --\paragraph{Key publications relevant to the project}% --{\renewcommand{\baselinestretch}{.9}\prop@paperlist{#1}}} -+\begin{refsection}\nocite{#1}\printbibliography[heading=empty]\end{refsection}} - \endinput - %% - %% End of file `euproposal.cls'. -diff -up tex/latex/proposal/eu/eureporting.cls.noworkaddress tex/latex/proposal/eu/eureporting.cls ---- tex/latex/proposal/eu/eureporting.cls.noworkaddress 2016-04-15 17:38:41.000000000 -0400 -+++ tex/latex/proposal/eu/eureporting.cls 2022-12-31 12:33:20.956764811 -0500 -@@ -7,17 +7,19 @@ - %% euproposal.dtx (with options: `reporting') - %% - \NeedsTeXFormat{LaTeX2e}[1999/12/01] --\ProvidesPackage{eureporting}[2016/04/15 v1.5 EU Project Reporting] -+\ProvidesPackage{eureporting}[2020/08/21 v1.7 EU Project Reporting] - \DeclareOption*{\PassOptionsToClass{\CurrentOption}{reporting}} - \ProcessOptions --\LoadClass[report,noRAM]{reporting} -+\LoadClass[report]{reporting} - \RequirePackage{longtable} - \RequirePackage{eurosym} - \RequirePackage{wrapfig} - \RequirePackage{eupdata} -+\RequirePackage{datetime} - \RequirePackage{chngcntr} - \counterwithin{figure}{subsection} - \counterwithin{table}{subsection} -+\setcounter{secnumdepth}{4} - \define@key{prop@gen}{reportperiod}{\def\prop@gen@reportperiod{#1}} - \define@key{prop@gen}{key}{\@dmp{key=#1}% - \@ifundefined{prop@gen@keys}{\xdef\prop@gen@keys{#1}}{\xdef\prop@gen@keys{\prop@gen@keys,#1}}} diff --git a/texlive-scrpage2-obsolete-fixes.patch b/texlive-scrpage2-obsolete-fixes.patch deleted file mode 100644 index 3a36844..0000000 --- a/texlive-scrpage2-obsolete-fixes.patch +++ /dev/null @@ -1,77 +0,0 @@ -diff -up tex/latex/bgteubner/bgteubner.cls.fixme tex/latex/bgteubner/bgteubner.cls ---- tex/latex/bgteubner/bgteubner.cls.fixme 2020-05-11 11:18:45.614265736 -0400 -+++ tex/latex/bgteubner/bgteubner.cls 2020-05-11 11:19:44.848269987 -0400 -@@ -280,7 +280,8 @@ - \RequirePackage{warning}[2001/08/17] - \RequirePackage[all]{onlyamsmath}[2001/10/04] - \RequirePackage[sepfour,autolanguage]{numprint}[2003/11/09] --\RequirePackage{scrpage2}[2002/11/01] -+\RequirePackage{scrlfile} -+\ReplacePackage{scrpage2}{scrlayer-scrpage} - \RequirePackage[fixlanguage]{babelbib}[2003/07/28] - \RequirePackage{fnbreak}[2003/04/03] - \RequirePackage[countmax]{subfloat}[2002/12/16] -diff -up tex/latex/mdframed/ltxmdf.cls.fixme tex/latex/mdframed/ltxmdf.cls ---- tex/latex/mdframed/ltxmdf.cls.fixme 2020-05-11 11:15:55.073132609 -0400 -+++ tex/latex/mdframed/ltxmdf.cls 2020-05-11 11:16:31.591518713 -0400 -@@ -68,7 +68,8 @@ - \endgroup - \xspaceaddexceptions{\xspace@check@icr} - \RequirePackage{multicol}\columnseprule0.4pt --\RequirePackage{scrpage2} -+\RequirePackage{scrlfile} -+\ReplacePackage{scrpage2}{scrlayer-scrpage} - \RequirePackage[inline]{enumitem} - \RequirePackage{amsmath} - \RequirePackage{listings} -diff -up tex/latex/mentis/mentis.cls.fixme tex/latex/mentis/mentis.cls ---- tex/latex/mentis/mentis.cls.fixme 2020-05-11 11:44:12.168603751 -0400 -+++ tex/latex/mentis/mentis.cls 2020-05-11 11:44:31.344281400 -0400 -@@ -40,7 +40,8 @@ - %%% \end{macrocode} - \RequirePackage{xspace} - \RequirePackage{textcomp} --\RequirePackage{scrpage2} -+\RequirePackage{scrlfile} -+\ReplacePackage{scrpage2}{scrlayer-scrpage} - \RequirePackage{jurabib} - %%% \begin{macrocode} - %%\RequirePackage{picinpar} -diff -up tex/latex/rcsinfo/rcsinfo.sty.fixme tex/latex/rcsinfo/rcsinfo.sty ---- tex/latex/rcsinfo/rcsinfo.sty.fixme 2020-05-11 11:27:58.018979581 -0400 -+++ tex/latex/rcsinfo/rcsinfo.sty 2020-05-11 11:29:20.177598457 -0400 -@@ -119,7 +119,8 @@ - \RequirePackage{fancyhdr} - \fi - \if@rcsInfoUseScrpage@ -- \RequirePackage{scrpage2} -+ \RequirePackage{scrlfile} -+ \ReplacePackage{scrpage2}{scrlayer-scrpage} - \fi - \def\today{\ifcase\month\or - January\or February\or March\or April\or May\or June\or -diff -up tex/latex/rtklage/rtklage.cls.fixme tex/latex/rtklage/rtklage.cls ---- tex/latex/rtklage/rtklage.cls.fixme 2020-05-11 11:22:57.281035108 -0400 -+++ tex/latex/rtklage/rtklage.cls 2020-05-11 11:23:18.024686393 -0400 -@@ -7,7 +7,7 @@ - \RequirePackage{scrdate} - \RequirePackage{calc} - \RequirePackage[np]{numprint} --\RequirePackage[plainheadsepline]{scrpage2} -+\RequirePackage[plainheadsepline]{scrlayer-scrpage} - \RequirePackage{alphanum} - \RequirePackage{eso-pic} - \RequirePackage{color} -diff -up tex/latex/svninfo/svninfo.sty.fixme tex/latex/svninfo/svninfo.sty ---- tex/latex/svninfo/svninfo.sty.fixme 2020-05-11 11:34:20.516549642 -0400 -+++ tex/latex/svninfo/svninfo.sty 2020-05-11 11:34:50.985037457 -0400 -@@ -144,7 +144,8 @@ - \RequirePackage{fancyhdr} - \fi - \if@svnInfoUseScrpage@ -- \RequirePackage{scrpage2} -+ \RequirePackage{scrlfile} -+ \ReplacePackage{scrpage2}{scrlayer-scrpage} - \fi - \if@svnInfoUseEsofoot@ - \RequirePackage{eso-pic} diff --git a/texlive-tabu-fix-longtable.patch b/texlive-tabu-fix-longtable.patch deleted file mode 100644 index ac05c39..0000000 --- a/texlive-tabu-fix-longtable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up tex/latex/tabu/tabu.sty.fix-longtable tex/latex/tabu/tabu.sty ---- tex/latex/tabu/tabu.sty.fix-longtable 2023-01-07 22:26:25.122509902 -0500 -+++ tex/latex/tabu/tabu.sty 2023-01-07 22:27:36.507051072 -0500 -@@ -1356,7 +1356,7 @@ - \tabuendlongtrial}\egroup % got \tabu@box - }% \tabu@longtrial - \def\tabuendlongtrial{% no @ allowed for \scantokens -- \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne -+ \LT@echunk \global\setbox\LT@gbox \hbox{\unhbox\LT@gbox}\kern\wd\LT@gbox - \LT@get@widths - }% \tabuendlongtrial - \def\tabu@adl@endtrial{% diff --git a/texlive.spec b/texlive.spec index dcf1572..75d185d 100644 --- a/texlive.spec +++ b/texlive.spec @@ -771,32 +771,17 @@ Source10005: https://ctan.math.illinois.edu/systems/texlive/tlnet/archive/acrony Patch1: tl-kpfix.patch Patch2: tl-format.patch Patch5: texlive-2016-kpathsea-texlive-path.patch -# fixes from arch and upstream texlive -Patch7: texlive-20210325-new-poppler.patch # fix texmf.cnf so that it finds texinfo bits in Fedora Patch8: texlive-20230311-texinfo-path-fix.patch -# These tests only fail on 32 bit arches with gcc8 -Patch11: texlive-20220321-disable-more-failing-tests.patch -# Another test which fails on 32 bit arches (in F30+) -# probably because of stricter malloc checks in glibc. -# https://bugzilla.redhat.com/show_bug.cgi?id=1631847 -# Filed issue upstream, no resolution yet. -Patch15: texlive-base-20180414-disable-omegafonts-check-test.patch # fix annocheck issue detected by rpmdiff Patch17: texlive-20180414-annocheck.patch -Patch18: texlive-20210325-poppler-0.73.patch # Fix libgs detection in configure/configure.ac in dvisvgm # Patch20: texlive-20190410-dvisvgm-fix-libgs-detection.patch # Since we need to include tlmgr.pl for texconfig # lets try to keep people from shooting themselves with it Patch21: texlive-20190410-tlmgr-ignore-warning.patch -Patch23: texlive-20210325-poppler-0.84.patch -# Fixes for poppler 0.90 (f33+) -Patch29: texlive-20200327-poppler-0.90.patch # Fix pdflatex run out of memory Patch30: texlive-base-20220321-out-of-memory.patch -# Fix configure to properly detect poppler -Patch31: texlive-base-20210325-configure-poppler-xpdf-fix.patch # Just remove obsolete decRefCnt check from configure, valid in either case. Patch32: texlive-base-20220321-xpdf-no-GfxFont-decRefCnt.patch @@ -804,13 +789,6 @@ Patch32: texlive-base-20220321-xpdf-no-GfxFont-decRefCnt.patch # Remove deprecated setpdfwrite ghostscript call # Patch33: texlive-base-20210325-no-setpdfwrite.patch -# Poppler 22 -Patch34: texlive-base-20210325-poppler-22.01.0.patch -# Fix crash in handling Group -Patch35: texlive-base-20210325-pdftoepdf-fix-crash.patch -# Poppler 22.08.0 -Patch36: texlive-base-20220321-poppler-22.08.0.patch - # libpaper v2 changes # 1. one psutils test needs adjustment, see https://github.com/rrthomas/libpaper/issues/23 Patch37: texlive-base-libpaperv2.patch @@ -819,16 +797,9 @@ Patch37: texlive-base-libpaperv2.patch Patch44: texlive-base-20220321-pdf-header-order-fix.patch Patch101: etex-addlanguage-fix-bz1215257.patch -# fix bz#1442706, set correct python path -Patch106: texlive-bz#1442706-python-path.patch Patch108: texlive-2017-xepersian-python.patch Patch109: texlive-2021-py3-and-pep8.patch Patch110: tabu-update-to-git-930bc77.patch -Patch111: texlive-scrpage2-obsolete-fixes.patch -Patch112: texlive-no-l3regex.patch -Patch113: texlive-proposal-no-workaddress.patch -# see https://github.com/tabu-issues-for-future-maintainer/tabu/issues/26 -Patch114: texlive-tabu-fix-longtable.patch %description @@ -24239,43 +24210,11 @@ xz -dc %{SOURCE0} | tar x %patch -P1 -p0 %patch -P2 -p1 -b .format %patch -P5 -p0 -%if %{with poppler} -%if 0%{?fedora} || 0%{?rhel} >= 8 -%patch -P7 -p1 -b .newpoppler -%endif -%endif %patch -P8 -p1 -b .texinfo-fix -# %%patch -P11 -p1 -b .dt -# %%patch -P15 -p1 -b .disabletest %patch -P17 -p1 -b .annocheck -%if %{with poppler} -%if 0%{?fedora} || 0%{?rhel} >= 8 -%patch -P18 -p1 -b .poppler-0.73 -%endif -%if 0%{?fedora} || 0%{?rhel} >= 8 -%patch -P23 -p1 -b .poppler-0.84 -%endif -%if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 -%patch -P29 -p1 -b .poppler090 -%endif -%endif %patch -P30 -p1 -b .out_of_memory -%if %{with poppler} -%patch -P31 -p1 -b .poppler-xpdf-fix -%if 0%{?fedora} >= 36 || 0%{?rhel} > 9 -%patch -P34 -p1 -b .poppler22 -%patch -P35 -p1 -b .poppler-crash-fix -%endif -%if 0%{?fedora} >= 37 || 0%{?rhel} > 9 -%patch -P36 -p1 -b .poppler-22.08.0 -%endif -%else %patch -P32 -p1 -b .configure-no-GfxFont-decRefCnt -%endif - -%if 0%{?fedora} >= 38 || 0%{?rhel} > 9 %patch -P37 -p1 -b .libpaper2 -%endif # Setup copies of the licenses for l in `unxz -c %{SOURCE3} | tar t`; do @@ -25328,7 +25267,7 @@ mkdir -p %{buildroot}%{_rpmmacrodir} cp -a %{SOURCE1} %{buildroot}%{_rpmmacrodir}/macros.texlive # install texlive.tlpdb -xz --decompress --stdout > %{SOURCE2} %{buildroot}%{_texdir}/texlive.tlpdb +xz --decompress --stdout %{SOURCE2} > %{buildroot}%{_texdir}/texlive.tlpdb # make a symlink so texdoc is happy pushd %{buildroot}%{_texdir}/tlpkg ln -s ../texlive.tlpdb .