From 572dc806dd00d29ab418ec6deaa36762d1d59ae6 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 5 Aug 2022 03:01:02 +0000 Subject: CTAN sync 202208050301 --- macros/latex/contrib/animate/ChangeLog | 4 + macros/latex/contrib/animate/animate.pdf | 1491 ++++++++++---------- macros/latex/contrib/animate/animate.sty | 1393 +++++++++--------- macros/latex/contrib/animate/animate.tex | 7 +- .../contrib/create-theorem/create-theorem-doc.pdf | Bin 67899 -> 71867 bytes .../contrib/create-theorem/create-theorem-doc.tex | 86 +- .../contrib/create-theorem/create-theorem.sty | 26 +- macros/latex/contrib/media4svg/ChangeLog | 8 + macros/latex/contrib/media4svg/README.md | 2 +- .../contrib/media4svg/example/beamer-example-1.svg | 92 +- .../contrib/media4svg/example/beamer-example-2.svg | 40 +- .../contrib/media4svg/example/beamer-example-3.svg | 34 +- .../contrib/media4svg/example/beamer-example-4.svg | 332 ++--- .../contrib/media4svg/example/beamer-example.tex | 3 +- macros/latex/contrib/media4svg/media4svg.sty | 45 +- macros/latex/contrib/media9/ChangeLog | 5 + macros/latex/contrib/media9/doc/media9.pdf | Bin 3747996 -> 3660318 bytes macros/latex/contrib/media9/doc/media9.tex | 15 +- macros/latex/contrib/media9/media9.sty | 94 +- macros/latex/contrib/media9/pdfbase.sty | 323 +++-- macros/latex/contrib/ocgx2/ChangeLog | 5 + macros/latex/contrib/ocgx2/ocgbase.sty | 62 +- macros/latex/contrib/ocgx2/ocgx2.sty | 72 +- macros/latex/contrib/xsavebox/ChangeLog | 4 + macros/latex/contrib/xsavebox/xsavebox.pdf | Bin 378552 -> 378194 bytes macros/latex/contrib/xsavebox/xsavebox.sty | 62 +- macros/latex/contrib/xsavebox/xsavebox.tex | 3 +- 27 files changed, 2193 insertions(+), 2015 deletions(-) (limited to 'macros/latex') diff --git a/macros/latex/contrib/animate/ChangeLog b/macros/latex/contrib/animate/ChangeLog index e30e23a04f..d9da4f0679 100644 --- a/macros/latex/contrib/animate/ChangeLog +++ b/macros/latex/contrib/animate/ChangeLog @@ -1,3 +1,7 @@ +2022-08-04 + * fix: a few obsolete code lines removed; option processing acc. to new + LaTeX format 22-06-01 + 2022-02-21 * improvement: svg clipping code simplified diff --git a/macros/latex/contrib/animate/animate.pdf b/macros/latex/contrib/animate/animate.pdf index 6920b0466d..33f6b8c81b 100644 --- a/macros/latex/contrib/animate/animate.pdf +++ b/macros/latex/contrib/animate/animate.pdf @@ -1,7 +1,7 @@ %PDF-1.4 % 610 0 obj -<< /Linearized 1 /L 3751389 /H [ 3136261 524 ] /O 1884 /E 3171591 /N 29 /T 3739069 >> +<< /Linearized 1 /L 3751366 /H [ 3136261 525 ] /O 1884 /E 3171583 /N 29 /T 3739046 >> endobj xref @@ -1280,62 +1280,62 @@ xref 0003135858 00000 n 0003136096 00000 n 0003136261 00000 n -0003136785 00000 n -0003137209 00000 n -0003137340 00000 n -0003141260 00000 n -0003141515 00000 n -0003141734 00000 n -0003141914 00000 n -0003142094 00000 n -0003142274 00000 n -0003142454 00000 n -0003142634 00000 n -0003142814 00000 n -0003142999 00000 n -0003143184 00000 n -0003143364 00000 n -0003143544 00000 n -0003143729 00000 n -0003143914 00000 n -0003144094 00000 n -0003144300 00000 n -0003144512 00000 n -0003144575 00000 n -0003144627 00000 n -0003144732 00000 n -0003144857 00000 n -0003144981 00000 n -0003145352 00000 n -0003145653 00000 n -0003146132 00000 n -0003146531 00000 n -0003147076 00000 n -0003147720 00000 n -0003153969 00000 n -0003156230 00000 n -0003166505 00000 n -0003167062 00000 n -0003167187 00000 n -0003167540 00000 n -0003168280 00000 n -0003168397 00000 n -0003168478 00000 n -0003168636 00000 n -0003168809 00000 n -0003168982 00000 n -0003169175 00000 n -0003169372 00000 n -0003169598 00000 n -0003169773 00000 n -0003169980 00000 n -0003170189 00000 n -0003170387 00000 n -0003170722 00000 n -0003171093 00000 n -0003171266 00000 n -0003171412 00000 n -trailer << /Info 218 0 R /Root 611 0 R /Size 1939 /Prev 3739059 /ID [<3f5051c93ffdfa157c0ad1d1ec61c1ae>] >> +0003136786 00000 n +0003137210 00000 n +0003137341 00000 n +0003141252 00000 n +0003141507 00000 n +0003141726 00000 n +0003141906 00000 n +0003142086 00000 n +0003142266 00000 n +0003142446 00000 n +0003142626 00000 n +0003142806 00000 n +0003142991 00000 n +0003143176 00000 n +0003143356 00000 n +0003143536 00000 n +0003143721 00000 n +0003143906 00000 n +0003144086 00000 n +0003144292 00000 n +0003144504 00000 n +0003144567 00000 n +0003144619 00000 n +0003144724 00000 n +0003144849 00000 n +0003144973 00000 n +0003145344 00000 n +0003145645 00000 n +0003146124 00000 n +0003146523 00000 n +0003147068 00000 n +0003147712 00000 n +0003153961 00000 n +0003156222 00000 n +0003166497 00000 n +0003167054 00000 n +0003167179 00000 n +0003167532 00000 n +0003168272 00000 n +0003168389 00000 n +0003168470 00000 n +0003168628 00000 n +0003168801 00000 n +0003168974 00000 n +0003169167 00000 n +0003169364 00000 n +0003169590 00000 n +0003169765 00000 n +0003169972 00000 n +0003170181 00000 n +0003170379 00000 n +0003170714 00000 n +0003171085 00000 n +0003171258 00000 n +0003171404 00000 n +trailer << /Info 218 0 R /Root 611 0 R /Size 1939 /Prev 3739036 /ID [<75e8fb4f5346631caadd4dd62bc0c8cf>] >> startxref 0 %%EOF @@ -1442,7 +1442,7 @@ stream xLH4/IK׬KS5JJS5k34b M["k4%jj NJHuqjj[Qbn5]%endstream endobj 625 0 obj -<< /AA << /PC << /JS 624 0 R /S /JavaScript >> /PI << /JS 624 0 R /S /JavaScript >> /PO << /JS 623 0 R /S /JavaScript >> /PV << /JS 623 0 R /S /JavaScript >> >> /AP << /N 616 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/02/21) /F 4 /FT /Btn /Ff 65537 /H /N /MK << /I 616 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 333.72 629.38 347.04 638.62 ] /Subtype /Widget /T (anm0) /Type /Annot >> +<< /AA << /PC << /JS 624 0 R /S /JavaScript >> /PI << /JS 624 0 R /S /JavaScript >> /PO << /JS 623 0 R /S /JavaScript >> /PV << /JS 623 0 R /S /JavaScript >> >> /AP << /N 616 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/08/04) /F 4 /FT /Btn /Ff 65537 /H /N /MK << /I 616 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 333.72 629.38 347.04 638.62 ] /Subtype /Widget /T (anm0) /Type /Annot >> endobj 626 0 obj << /BaseFont /DFMPLS+LinLibertineTI /Encoding 1872 0 R /FirstChar 27 /FontDescriptor 627 0 R /LastChar 246 /Subtype /Type1 /ToUnicode 1871 0 R /Type /Font /Widths [ 564 0 0 0 0 0 0 0 0 0 0 0 268 306 313 0 0 219 333 219 291 0 0 0 0 444 0 0 0 0 444 219 0 0 527 0 0 0 667 557 0 667 526 457 664 0 280 414 637 519 804 0 668 499 0 0 454 544 0 597 0 628 0 0 0 0 0 0 0 268 486 478 389 489 401 314 477 519 276 259 486 266 783 518 447 489 0 357 353 307 521 472 688 475 503 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 447 ] >> @@ -1483,7 +1483,7 @@ stream xLH4/IK׬KS5JJS5k34b M["k4%jj NJHuqjj[Qbn5_)%endstream endobj 634 0 obj -<< /AA << /PC << /JS 633 0 R /S /JavaScript >> /PI << /JS 633 0 R /S /JavaScript >> /PO << /JS 632 0 R /S /JavaScript >> /PV << /JS 632 0 R /S /JavaScript >> >> /AP << /N 628 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/02/21) /F 4 /FT /Btn /Ff 65537 /H /N /MK << /I 628 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 124.8 547.18 166.8 559.06 ] /Subtype /Widget /T (anm1) /Type /Annot >> +<< /AA << /PC << /JS 633 0 R /S /JavaScript >> /PI << /JS 633 0 R /S /JavaScript >> /PO << /JS 632 0 R /S /JavaScript >> /PV << /JS 632 0 R /S /JavaScript >> >> /AP << /N 628 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/08/04) /F 4 /FT /Btn /Ff 65537 /H /N /MK << /I 628 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 124.8 547.18 166.8 559.06 ] /Subtype /Widget /T (anm1) /Type /Annot >> endobj 635 0 obj << /BaseFont /EPUAGO+LibertinusT1Math /Encoding 1882 0 R /FirstChar 11 /FontDescriptor 636 0 R /LastChar 122 /Subtype /Type1 /ToUnicode 1881 0 R /Type /Font /Widths [ 522 472 458 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 220 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 299 0 0 0 475 503 436 ] >> @@ -1715,7 +1715,7 @@ stream xLH4/IK׬KS5JJS5k34b M["k4%jj NJHuqjj[Qbn5`%endstream endobj 671 0 obj -<< /AA << /D << /JS (try{if\(a2_playing\){a2_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 670 0 R /S /JavaScript >> /PI << /JS 670 0 R /S /JavaScript >> /PO << /JS 669 0 R /S /JavaScript >> /PV << /JS 669 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a2_playsRight=!a2_playsRight;var\ndoplay=true;if\(a2_idx==8&&a2_playsRight\){a2_stopFirst\(\);}if\(a2_idx==0&&!a2_playsRight\){a2_stopLast\(\);}if\(doplay\){if\(a2_playsRight\){a2_playRight\(\);}else{a2_playLeft\(\);}}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 643 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/02/21) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 643 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 217.2 554.14 376.2 716.14 ] /Subtype /Widget /T (anm2) /Type /Annot >> +<< /AA << /D << /JS (try{if\(a2_playing\){a2_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 670 0 R /S /JavaScript >> /PI << /JS 670 0 R /S /JavaScript >> /PO << /JS 669 0 R /S /JavaScript >> /PV << /JS 669 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a2_playsRight=!a2_playsRight;var\ndoplay=true;if\(a2_idx==8&&a2_playsRight\){a2_stopFirst\(\);}if\(a2_idx==0&&!a2_playsRight\){a2_stopLast\(\);}if\(doplay\){if\(a2_playsRight\){a2_playRight\(\);}else{a2_playLeft\(\);}}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 643 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/08/04) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 643 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 217.2 554.14 376.2 716.14 ] /Subtype /Widget /T (anm2) /Type /Annot >> endobj 672 0 obj << /BBox [ 0 8270 150 8420 ] /Filter /FlateDecode /FormType 1 /Matrix [ 0.833333 0 0 -0.833333 0 7016.67 ] /Resources << /ProcSet [ /PDF ] >> /Subtype /Form /Type /XObject /Length 165 >> @@ -4184,7 +4184,7 @@ stream xLH4/IK׬KS5JJS5k34b M["k4%jj NJHuqjj[Qbn5b]%endstream endobj 1170 0 obj -<< /AA << /D << /JS (try{if\(a3_playing\){a3_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1169 0 R /S /JavaScript >> /PI << /JS 1169 0 R /S /JavaScript >> /PO << /JS 1168 0 R /S /JavaScript >> /PV << /JS 1168 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a3_playsRight=!a3_playsRight;var\ndoplay=true;if\(a3_idx==100&&a3_playsRight\){a3_stopFirst\(\);}if\(a3_idx==0&&!a3_playsRight\){a3_stopLast\(\);}if\(doplay\){if\(a3_playsRight\){a3_playRight\(\);}else{a3_playLeft\(\);}}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 966 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/02/21) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 966 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 159.12 451.78 434.16 716.14 ] /Subtype /Widget /T (anm3) /Type /Annot >> +<< /AA << /D << /JS (try{if\(a3_playing\){a3_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1169 0 R /S /JavaScript >> /PI << /JS 1169 0 R /S /JavaScript >> /PO << /JS 1168 0 R /S /JavaScript >> /PV << /JS 1168 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a3_playsRight=!a3_playsRight;var\ndoplay=true;if\(a3_idx==100&&a3_playsRight\){a3_stopFirst\(\);}if\(a3_idx==0&&!a3_playsRight\){a3_stopLast\(\);}if\(doplay\){if\(a3_playsRight\){a3_playRight\(\);}else{a3_playLeft\(\);}}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 966 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/08/04) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 966 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 159.12 451.78 434.16 716.14 ] /Subtype /Widget /T (anm3) /Type /Annot >> endobj 1171 0 obj << /AA << /D << /JS (a3_stopFirst\(\);) /S /JavaScript >> >> /AP << /N 672 0 R >> /BS << /W 0 >> /F 0 /FT /Btn /Ff 65536 /H /I /MK << /I 672 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 229.92 435.94 244.32 450.34 ] /Subtype /Widget /T (3.EndLeft) /Type /Annot >> @@ -7674,7 +7674,7 @@ stream xLH4/IK׬KS5JJS5k34b M["k4%jj NJHyqjj[Qbno &bendstream endobj 1244 0 obj -<< /AA << /D << /JS (try{if\(a4_playing\){a4_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1243 0 R /S /JavaScript >> /PI << /JS 1243 0 R /S /JavaScript >> /PO << /JS 1242 0 R /S /JavaScript >> /PV << /JS 1242 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a4_playsRight=!a4_playsRight;if\(a4_idx==0\)a4_playsRight=true;if\(a4_idx==28\)a4_playsRight=false;if\(a4_playsRight\){a4_playRight\(\);}else{a4_playLeft\(\);}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 1212 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/02/21) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 1212 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 174.6 584.14 418.68 716.14 ] /Subtype /Widget /T (anm4) /Type /Annot >> +<< /AA << /D << /JS (try{if\(a4_playing\){a4_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1243 0 R /S /JavaScript >> /PI << /JS 1243 0 R /S /JavaScript >> /PO << /JS 1242 0 R /S /JavaScript >> /PV << /JS 1242 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a4_playsRight=!a4_playsRight;if\(a4_idx==0\)a4_playsRight=true;if\(a4_idx==28\)a4_playsRight=false;if\(a4_playsRight\){a4_playRight\(\);}else{a4_playLeft\(\);}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 1212 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/08/04) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 1212 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 174.6 584.14 418.68 716.14 ] /Subtype /Widget /T (anm4) /Type /Annot >> endobj 1245 0 obj << /AA << /D << /JS (a4_stopFirst\(\);) /S /JavaScript >> >> /AP << /N 672 0 R >> /BS << /W 0 >> /F 0 /FT /Btn /Ff 65536 /H /I /MK << /I 672 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 229.92 568.42 244.32 582.7 ] /Subtype /Widget /T (4.EndLeft) /Type /Annot >> @@ -16192,7 +16192,7 @@ stream xLH4/IK׬KS5JJS5k34b M["k4%jj NJH}qjj[QbnH&endstream endobj 1742 0 obj -<< /AA << /D << /JS (try{if\(a5_playing\){a5_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1741 0 R /S /JavaScript >> /PI << /JS 1741 0 R /S /JavaScript >> /PO << /JS 1740 0 R /S /JavaScript >> /PV << /JS 1740 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a5_playsRight=!a5_playsRight;var\ndoplay=true;if\(a5_idx==190&&a5_playsRight\){a5_stopFirst\(\);}if\(a5_idx==0&&!a5_playsRight\){a5_stopLast\(\);}if\(doplay\){if\(a5_playsRight\){a5_playRight\(\);}else{a5_playLeft\(\);}}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 1448 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/02/21) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 1448 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 125.28 395.38 468 716.14 ] /Subtype /Widget /T (anm5) /Type /Annot >> +<< /AA << /D << /JS (try{if\(a5_playing\){a5_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1741 0 R /S /JavaScript >> /PI << /JS 1741 0 R /S /JavaScript >> /PO << /JS 1740 0 R /S /JavaScript >> /PV << /JS 1740 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a5_playsRight=!a5_playsRight;var\ndoplay=true;if\(a5_idx==190&&a5_playsRight\){a5_stopFirst\(\);}if\(a5_idx==0&&!a5_playsRight\){a5_stopLast\(\);}if\(doplay\){if\(a5_playsRight\){a5_playRight\(\);}else{a5_playLeft\(\);}}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 1448 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/08/04) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 1448 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 125.28 395.38 468 716.14 ] /Subtype /Widget /T (anm5) /Type /Annot >> endobj 1743 0 obj << /AA << /D << /JS (a5_stopFirst\(\);) /S /JavaScript >> >> /AP << /N 672 0 R >> /BS << /W 0 >> /F 0 /FT /Btn /Ff 65536 /H /I /MK << /I 672 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 229.92 379.54 244.32 393.94 ] /Subtype /Widget /T (5.EndLeft) /Type /Annot >> @@ -16694,7 +16694,7 @@ stream xLH4/IK׬KS5JJS5k34b M["k4%jj NJHuqjj[Qbn5g+%endstream endobj 1840 0 obj -<< /AA << /D << /JS (try{if\(a6_playing\){a6_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1839 0 R /S /JavaScript >> /PI << /JS 1839 0 R /S /JavaScript >> /PO << /JS 1838 0 R /S /JavaScript >> /PV << /JS 1838 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a6_playsRight=!a6_playsRight;if\(a6_idx==0\)a6_playsRight=true;if\(a6_idx==25\)a6_playsRight=false;if\(a6_playsRight\){a6_playRight\(\);}else{a6_playLeft\(\);}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 1786 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/02/21) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 1786 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 176.4 165.34 417 418.66 ] /Subtype /Widget /T (anm6) /Type /Annot >> +<< /AA << /D << /JS (try{if\(a6_playing\){a6_pause\(\);}}catch\(e\){}) /S /JavaScript >> /PC << /JS 1839 0 R /S /JavaScript >> /PI << /JS 1839 0 R /S /JavaScript >> /PO << /JS 1838 0 R /S /JavaScript >> /PV << /JS 1838 0 R /S /JavaScript >> /U << /JS (try{if\(event.shift\)a6_playsRight=!a6_playsRight;if\(a6_idx==0\)a6_playsRight=true;if\(a6_idx==25\)a6_playsRight=false;if\(a6_playsRight\){a6_playRight\(\);}else{a6_playLeft\(\);}}catch\(e\){}) /S /JavaScript >> >> /AP << /N 1786 0 R >> /BS << /W 0 >> /Contents (animation by animate, v. 2022/08/04) /F 4 /FT /Btn /Ff 65536 /H /N /MK << /I 1786 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 176.4 165.34 417 418.66 ] /Subtype /Widget /T (anm6) /Type /Annot >> endobj 1841 0 obj << /AA << /D << /JS (a6_stopFirst\(\);) /S /JavaScript >> >> /AP << /N 672 0 R >> /BS << /W 0 >> /F 0 /FT /Btn /Ff 65536 /H /I /MK << /I 672 0 R /IF << /FB true /S /A >> /TP 1 >> /Rect [ 229.92 149.62 244.32 163.9 ] /Subtype /Widget /T (6.EndLeft) /Type /Annot >> @@ -16986,12 +16986,10 @@ endobj << /BaseEncoding /WinAnsiEncoding /Differences [ 11 /u1D6FC /u1D6FD /u1D6FE 59 /comma 116 /u1D461 120 /u1D465 /u1D466 /u1D467 ] /Type /Encoding >> endobj 1883 0 obj -<< /Filter /FlateDecode /S 425 /O 568 /Length 435 >> +<< /Filter /FlateDecode /S 425 /O 568 /Length 436 >> stream -xc```aпc `6X!V Ff3 ,& VK5L~jqqc <0'3,P>9AV_l - O -4X"m+zMi1ض;oԟH꿿tftmOgn9=i7 -ӎ(T0m6PIb$3d$ $7RuDRHwP K,Uګl@ 3rI,|iiwJ?Lm߯e#`}"H=8LX/|>piCjeSj tx<?9f͑0ETC'mYz\T©vО XEgDh`fF CZ +xc```aпc `6X!V Ff3 ,&0k@u 70x8=`NfY|s/,%@#%hֱD,۪W:wU*%3A*vYWـfX >ew_4G"T ) "E16b{p,0^`|i9 + L IN5,`a`udT`縚5G Su,[dWOserz w`6S A{'cjg!u؛ * `jU[ֿ endstream endobj 1884 0 obj @@ -17001,28 +16999,25 @@ endobj << /FT /Btn /Ff 65537 /Rect [ 0.960007 837.94 3.96001 840.94 ] /Subtype /Widget /T (pbs@ARFix@1) /Type /Annot >> endobj 1886 0 obj -<< /Filter /FlateDecode /Length 3845 >> -stream -x[ms5 e,NzHH8R㨃6+OKQƛu쨻կOKjqv始'D -&gG?)Кze,.+[OKu*vKǤ\>IP xt -O2:Rѩ;H% -X0!8'ɏVxv: '{ݓ`E) ++Gw`{4=9aJHeu1QlOy|bel(cDw/AZikAZ2afvڹn}=iGċ>t۪^}mtUI{+f?NВ|xtu} - - QS\^'HW=aqWQҧ'U=9uЂAͩLci ) -}`U%{f~}_uDJ_0oʚKB 1(LﺓB6 <BYk =Ce\x[a#~V -TyR,bm. tQKAvp5^t7B rbBNl42Y6Ue&NvolfDI8&`Skz٤Q c'75*|txa~ALY)9i&\)?ERF&ijrU6+sT.z]sD1$r|`AG?<2x._6Z, 6 -4փeDb12Q苃>_.t.AF9ka[7c%h?WHd&cH GEU2]miK.hPi߲5𮚤%vu/3岍P' 5 yk}v#l!lM*]&\J͝~%= 1#l1{Kރ - )X-PUh[s^"ɷ)T"4乄U$O}@R0%rt-'QʳXt %$@9e[D]U8ܐAǨkș MiB)+|;nڢMii8Ѐy6P17!9E}/ߺEµ nj|-VrVI#^ޔ4$-(Ժ`[Zp|Xd4kl˔"o :r39 nQ:+hW(%!q-HNf1 ^l!nRcSb(\y7Z*5C^f`C-7h+H-շ-B>~h 3)?JnZCu+'<ЫwR -;9!Y#ugi>'[\{-5?ox='MwBBP6GѨAV>%R:V7WȕH)Jޭn䵳'xX>jmڦ>&/睹af)`jbZ _sH[pƧ ZlтmwnXl?r:x  ej -d5j@0t2UƎލ5&]F^S3S- SZ4Ȭ֪Ti;>y9}'K3\rc놃9áPIh7: >`D Pw9 #u >v Ϲ]"yFbFc lC7#qSb5qltbXMMd7oOM|چmo ->tP=vg ͡@LSy$!?A*͚55宆$y|Q_nux: J^o +1j21b0]|%h@1zmw*Øn;=ޛǹkJ1ݨHlqI)3tW0n8u ]M24!sࢰ˹MüA5k!ʾ[XnhpK`᭙Z)Ea+a)p<À.xJBiȘK$ 2 -oO|V>% Ң]F=PWD1Iz.fэE+|"N i T %ߨXm;s|k?r>c?mGZA:[Eſ}rkS{|_c=@!x1WW,›E5 w]DovH2̆WJ{q>|:\A0;l:M}YGax^\ O4/c"#vuerv!BOo8Yo̧uw*OLpZF>):|K/D YB}cU{ʻ>Yati|tfO< bp*|{rŘ-h?8_nY-̽{G5aDJQК+'cbiw"endstream +<< /Filter /FlateDecode /Length 3836 >> +stream +x[ms5 e,ŎzߒpQWu +OKQ7v쨻կOK'jqz始^ZhM mou˕D݋%:hKǤ\>IP x eeu&t SwJBw\aBpO^};حQJ=Dw@ZikAZ2afvڹnli{Ҏg{}. U)4ޓV~#% ૫, +K.`rN^Ǒ谸u)9,pIUOz59k,9)e}Qn Nl6RzUO:d>:bt8m M֛;([g[ 6eo=fxŃ>bwt&&%mhE!,rF`g9SD͋)- 8)F̘|qSr^zH_#1B-"7ֺdRLw}s0DN^ O!2/NӒOlG[5)VXT}E|ڔ|Sm2%;b7 a#9Ŕ!&]ߣP6B&qi!ݛGE";m/7oUjB@o䜫rhT/ĂC E2f}0H*]VEWg%>CjO)&A}{5ΔXbA+tݳB6 <BYk=Ce\x[#~V +Tɜ7X7KFRqe?\ W0] %䡘A0[G@0%ձLqMlK6O$ hHLU7vrSgIG"E ΎI8m A"xZ/62ISƶq_lNuF9+wŐq&7(୺Vsm8$Xll5[hˈ< pcd&|};)m!w o;x}1lfĨHAQ.2Fp0dVT+!і8z-[IZb7`ts)m&e>XC_6Na7rfҎ0Rj. Y)gS \U߸=H` UuZMP5~m1+|˝B%BcJKHZLԷ ,`- +S.GarPkm9,iFyBs< !PN?fyڝ;!x +gkg҅ +] SB^Ii15$肛xƈ DBV~QqBecB2XqWT0JoXX$v7 F_M.mqj9*,g#]8Pe)>D_=ӄsU  (0 zb{89TZLeܝ[,W္p +`RQ-Gn"2)7U!0SA̠c~ʵ@`̆&T4!UӔUh~]Rhm;uB,u4 bf TMnHrNmQ'7nspmksCwJvl4EMY!@O61b08AU͇EJF3_jƶL)#G#Y2$jW0iB<ЂR+,t:%zzb{&h ,A%3jb:ecusꆰn&j!32y]=O!qa<"o$\mI*ld! ԝ- 0EkselCy˶-hu6z:F J-!Ŷ¼ɸBl@eO閬4]ݚZ^{IzDgffI | -Z xPNp0|5"LMFͼ"]h KOg!= +(3[jXSh޵9嵯=u=<3eAZj#<`O^N#N.9ܱuIpnbe0Gc(I肁]/5| 8qDEČ|#h ؆>D㔧 /rkJ=X97AD+xn<? b (}3iD8zCy +^ +C4l6󲓄4kH֔r+7ge G}||jMЧP_LPE +dxG_QQQCr#,@ +?ek+FTt۽уὙ1+zxӍ +vI';1Cw趁#\)}E$J L9׽݁. +ؼa}km4T컅n zi27,1}"(lx/Q\wSJ@\Z4 iQDk|-pMu41Dʦ&>&jEIz3w1n,w_pNXgZ(Fro#Dޙ{wX)ils0<l- +.*op@wچ[ݟYW D?d,Y"z#{G*XRa6Tmw  GÅqæ$-.NZ|dt,8˷&%n|u*jD=m?+ҝr x[>YDFpda+#ʰH#]oQ>~P&/( >d֨}uk1e~ kiX.X8~0f|>OMyhSJH|l!RZ1,yeP\~o&\AX-VP'|A.FV7osA?~?G/rhqGfOu]fnlc+>O9b|;nΗWlFx #S.rG& fYG{ɣr'x?!Ⱦc0$؁_ו10 +=Y\dYO4-ީN?1ȍآi:zFwIk~*0L3 dȷh})W-SlO%%N#RvrIǽ6ͷBྐE(dyS gk)":qw}$gOK+ K눤7u7{2`#VI竄e n.1cA|lͻd0`BC`j ՏLދPNKHێ?2noC1*;%?;42b﬇S څ('>Uf#_Uh>FbsdZF u,^|u?endstream endobj 1887 0 obj << /AA << /PC << /JS 624 0 R /S /JavaScript >> /PI << /JS 624 0 R /S /JavaScript >> /PO << /JS 623 0 R /S /JavaScript >> /PV << /JS 623 0 R /S /JavaScript >> >> /F 2 /Rect [ 333.72 629.38 338.76 634.54 ] /Subtype /Screen /Type /Annot >> @@ -17589,31 +17584,41 @@ endobj << /FT /Btn /Ff 65537 /Rect [ 0.960007 837.94 3.96001 840.94 ] /Subtype /Widget /T (pbs@ARFix@9) /Type /Annot >> endobj 49 0 obj -<< /Filter /FlateDecode /Length 6053 >> -stream -x]YeGu~)OpnnZ5v,|طvUkT~xxz髻x87¨+ ;݋W>>^m\h-7Gi=|v䛔Z~zx|x{La^o{_HSxl3/}-7/{9wo࣌{%M;/3~_|%Y8BY|o-Y_N({9|[ΌVŅR1L2pg^ dy?ALStu4~՟ -*}Y zXV_œ3Sʭ^̇A µyZiP^FZU(a7]upO^$zKyˣt)XDG9bS>o $UԶVo!"Ig2NH<+7gSb—P4zEXP4z3$bs.s }e.0C܂>:Yaw9~+2P>?*)B4#lҝ#$OXl!k+{H=j[UAG3`w+FszWX&D,a[ǣvW;*pADhA8;=9`4fOQHk1~fs.0 a~ f&j]xV2C\oPؿprbU&^E%^ -n1귃|Z^߾PήE  0j8p h0QŽҪEd5d^d]opC,($\܋W1ټL]0@@Mb䝓͎k)ӀH,= $RLОtr aB*^6 r\]oY ,~$SLCTNF0MÁkvk zB::A]dd2TR=jj'y*DFkYN,:mlXX_$5̘yrd7y[9 ` xjK>fb poepS>pCئ2hd(* jnΏ@Y[q5*ǁ.>nG.ب$/z;ЪDG*9g[X.l.V-l ۸Γ.[u sIuzGV"I BBX>j d'4>BN,b>RnMsB+QşLA]yi' #E_ǀ|mD~{.Ղ-ޛ%pA$i5cE_G :.!GI+11,ˉEF^A ڥMUw"g&Q,)倈p]0jV!h M1Nc -Rk HaòDc[ ܻwvhv!SKr~և Zi$ fҲ,xiOˌzMf5QJ(u%Sm ZԮi$*GNh$-Id G&(0ӄ!$%sʄqb^xGJ/<}p1Y# 7)!mHBongX= DҚ NTUg,sΰW<z슦jʍpkʼn1])??,/×BLd~,d9.qmes fVa2%%H@ ױN'#gT8.?@6?A=d'}Z/ee+ͪc uD7ga˸uxv: -F|pٽ`ke8 -KрOt5`:[$Z$NAP?ASuÞ(YKt%@%KDBc2R3}P LǯH~DM7 @EƱإ մ#` i`STJe} Kn+O0&s$$S;#nr!F$yį M_(9'h]o;yīt YPuWfeE1=flf(&Ir3cDki݃3!@2%bxPL2VD¿gUgjW*pRVel(8*x 6SQ֧ȚbfqZ#e6-v ̘>bR:Uu^SJmx2l߹eHӘwfqζ+$nW3@aZAAۀX_@/d@j, ,0p,Ls]޹tTՇ1UwOcm_XpZee3=WC3[fP!"t:s  -ITO2)( N7˥Lj P\֦/+[\(x  & n7q8/ ]3?clFq1%kV.KMAN9J獤Ʈ29ӑa%ЫGCO(7A%%Z*qkU]>6ix1n>8w} Q +G1B~H"'*W{7p4QX V:&h*&ۏ3`yw&!{7q؏ 1B &M,M=9QYZ+ -,z 6Hau2V%LΏք6+DFQWj LoPpWC]&3H9EdnGs,j࡭70T9}73C[uX늂j-g; J+^1ޟ|?={$r!9(1FAF\u,=6S'`@fO5&xhhTC'8mqloT->O%j %nr5m0xI Yn'd{p0Ψq'PG'XxX`M\ VȞ[[-9 Nek&eъ A{k%{$!R93fnf}E5#}yegR*;b]֗~CvWZiErcH%imxңw{+$YWJLn^.sʇi v%;:c ALksj.—t`}b Q{?|OI61H?-?mICY{#~W?.ojd` } -jͻ)$}1 Hn}¹T^֦p2'j%:X`c<%U mU:=z~,(:!Mo3q'R4_d xV3t٥O1jD°gY5t'O[*UsWVWu`AeuzSVSt6rBY tE`G`~pS0T8zNb=Jqc5gȒn:; =T埋fi)DK=1ɖ̡8A[V2W:QEgw0Л^̍ؗ@tr#ch -MxEHlD@m$u}11M y(1mj :_2;s'' xC%leZO~sk'lǚ!.(j~fSFC3 Cǥ_M))] =!KWLt8v$Q^"i+ 梿Ŭ)=&[=KL>X4Ÿ*"Mb3B8l9]u#IWKmB@s_K -~jU7C;(V`˹x06)j ".tE/R&YPfhWXq.5*(SJ(=t_m7&T6W9K R9-nmRv|>\GPluS]U_sլB胸j"JJ P#$JZV5> ˅['ʺץr4Lxt.t*~AK6bHC_3W\H@ 6h/Ku%iuw -Vw.C ;A"n*Xc>D?6֫?tlu껱|Ӱ%:4w&UIz%@ ӭ#2$h;aO#j#*԰ -Ꝍ(p\prg|To"3x dσʬilaN -+z4__&=#+p)d YCx,(&iْ#vg3 -A珷5X/nu0a"Izt̀AA#RY;+[eux@?^a\s}nbp@6I -Fo -.S8[z\&7Z-G8=L}mzanjRrC$l_@WF=àª]&-sŅvdga'(#v3=4pMb@xu4dRXofٗ.f]Y8Bx凇8`\|xeuSO/#nLQ(CJ"jA+rW&@D}51drqoiFh;SqiK^VR)qWnM}x؃A}kjL둓핦w@5JyM'mk&E;O "FRvwU$Tkqwb[FFhd+dһu%/ٚ˦fvڅ2KSαH y_8I=^RKs -Xrl7b C(-,QѢVŰZĈ2I"/>>OIޯlD37=Ɓ!ŖyUNt7OW).\W3oӊexmti -DpPz'6^t)mqdg]Ϙ -@8e`O˭b~ ;pa(şe t`nt&9:YiZ*8zyY-fF%G+ϱq(?2zwMZN]"䬴{uvxY6# Y)[V} oT/%%C#;z6->O`BWD;0U7g[bhp.s fY#^3?"ixe+NiA觡jXr1^ -GIݹ8|M(XZ ,Q[мۆ4Ǚz/ZD.-y+vlJmlLʾvX]ʵKS8QoZ Af+(]P ]7Bpxrq7D?/z{PrKk1Wխ=MuR]n|_hK_ŋg -?,8endstream +<< /Filter /FlateDecode /Length 6035 >> +stream +x]Yu~_Stoi׾8pY@hI#&dNsN VSgVҿ~z3ޥ>}~)w~FuY|q6wgٸ{g;ޫ 6/|Rksx<åۇbs0lS>?p|yfT}x6=|qdR<9썷y VLkޏ_lYYwnr΄ՇιL~y|qf<|1nkfhw)qw߼g=˼x :Ho9ݹ9Lo^Zl^vo=0ϟ5p՟"{UY}=_R cX)lf3N,a 5˃K}$w) O'8En72{Ed +I & 0> yH(U7N8H +28*KAS +2 #D2p +e῎ +w*I, +l83R2_%)|}>>܍nJ_#8kA"1꫸sFxJՋy?#pmhV!$y|%JMW;ddaN¥Qn"\T[)JDQ*j[J[3`'$3.1BK~a,(^χ?<#~\`z_  ϣGV؝ߊL< LBӃDQs ړ$LHEr˦A3U+ uB"1k3p_cJa_#iQ~͎c~2A`uV᷐P5ywtQch5x}<l"5,Q'6 ,,es¯Tf<92EĭJ~0%gbW31Brep[nrsdMX@szAr'|ADÜP @jىqh:881˼qYF)ʮ*ABpr]9c_$TN4^tdrlo { xNጳ}\쾴Ǔg#]o鍑fk7?A7{gZ>"qI!ԖQ.+_9", ,0pd/Hs]޹tTՇ~1YUOce^~) jIc DD.`!N=|ơ40CQO23) ^/42?0i㦡Q7ŶIR<68JҴP%ebVn̗kl3{  3#ج`D`=W-~iW48=G+2a[zXjgo˕ĘKZ8냎畝7w +;b]֗ {CvWiAVcH%imxw{Iɬ3%&}VDq H7ϝJ8Vt 5$./\d` } +j鿻)$}1 6G~UI@-զo2&j% :`c<%U m Y:M<ߧEKRS9ng3q%R4_wGmxQلS}^z{ONn'qnӤ7CQ#!+PׄI0ٛz7b cl6PcTt=d v&Ov6H JzR7َ˔4RRTтK{}pD#IiKJj!rrQ0`.[\̚R{CaB)e^ǻјA_ˠUI)x?-6#OS+z܅_="z5& 34Ex" +̀׬6ZxAƓԛֿ0QHT)t/z ȂB0C;NJtXQEZWBѤj ~0a|5J(PWd*XEֺR9-n}_`lcy%qv]7ZߵmXD]9jV!qGV%-h_xZtAsU['L'sdb>a/;|Oa H|s`4ѕ-yT#!I = +FŁ4 +t`FQMon$MG +PPwnayCJ<k|9$_&5H__؇(xAsF>zMs}Y{ų|Ӱ$s$ di§ SHjXEmu\qLNFkQ|.8i읏JM}yP~҇p9VXѣ:|Oxnng1?d =`fKgWyvZ8Sىlx  +W&d@ L H$4r+Ӻ;_Q + 5Gt&gI $for7)v[-=9f . +|N|&ɾ607{5i!V/L`+i#E͞aP[aUi%_dC̭ ?w֗ۥنLLhE<^4 TҒfJ=c=}f_st f >q +/5j&b0W;^7(!H%T'ڠx9]U +ἥIjo4ZLe-{[9Hx]ۻ-7"٥cv\v=i@NWީpləޛNiۋvDhHĢ<=X?ݺl!S +vkms,bvC>&xR\6³p9#V\m'ۍy861.e -pפ4 H,LJXgWe3R t9+ؼP%sMjG$?&hB˝ڽ? ځ +<>@cEYV)ϏH@8#F +b97Zsi(9\}WrhRgw.5_s +ָ" DT-4o㶡(m-q&яHԥ%/^s{$ԎMO=Xn'՚M\=f[R?YU +z?k/$_ +gת,whE/rUqiW2&|iT }opÉ +@E_B/_<4endstream endobj 50 0 obj << /R11 612 0 R /R43 1913 0 R >> @@ -17625,7 +17630,7 @@ endobj << /FT /Btn /Ff 65537 /Rect [ 0.960007 837.94 3.96001 840.94 ] /Subtype /Widget /T (pbs@ARFix@10) /Type /Annot >> endobj 53 0 obj -<< /Filter /FlateDecode /Length 5525 >> +<< /Filter /FlateDecode /Length 5528 >> stream x\[\G~߿3sKH!cH$xǎIwZ}931ʃ'/]ׯKK]]˧\zytuۇp~WoQ]%jU2rw^yóY_v{}U=[-JNNxnryyfr\; 5|P?} 3at׫sɎR*)axV)TϙU.gκ9.{#o C\aqW;a4Pg,;jZ^BLۅt?<$0#">}SAM%͝\Α@#pU@(K|5RVÀuB]*at;"0#vv8p+$ PxZ/?#y>nΌw vc?wЍ1I!paI{[dVg!r:Q@_1\6Y]8qZ\˯K~8 @@ -17637,22 +17642,12 @@ x 8MOOXas`dd O`ãGݗ V6 :ԯN~ N@E/ﹱ+hen@{qOU}ҮVSJ#~废9%^j32G{{fC?RftboXt$UݡTw#vG"C6Rf8HYu@l:+{uunMli c"Z:byߵlf%TCM[PF=ofƉ~g 5:ɿ\ȦvNArpp@s8t4N7xO.xt̞!y)0qSL2j#Ӝ.T@8m#G -%%c@e՛LH<ׇvqMDfPEA^.S)YQb=pĚ+%iIZrN98хB5%ʆEreyXqU|D/&ꨜ+`JOHJZ|EN=1-)~CN lQFa(B)伻dVRb&׀`bީV 7l͎d hqF35)PϺ!TD'EI̾5MALD*X?$êlū#tݞokWfP(PDf vɕӌֳaoojOGQ(DOG*ژ( B bں*T_/L45^d(qk7}3bPc7@]^}-N`)ۚh.qJ7T` oP6R5P@7#r3/" @ϓo&T-^ej"tr0!~(&ro\touU[?mM(|tQ|uN㍩|'׈̃OJl(J_a>AK96j#ώ kI*n;`y2FHeq ġIҍn\IqkJs^PL-4L7؇lqo-qӼ/ Mo[I82 xUǨe![h=nP*q|L r= [t\ Je 0#VjsQܙ/f=)=:UrtݘɻoۦCV(@ Udluφp\++n-ٍ=HZAGӗuRwgc&gdj2znGzب -ZZ꒞!ȟ]UKRNGHI9:)'FV sTklf oAj͡Pvz=8 v]밖xm( m5yMBR&/DVez!u=$:ص[pqlӤ E(oh 7^|B"X%wT\oo4v-{ ~-YˈYok!`Xg~?A$;O-JPȺixaDza < W#źK"b1pM|܉H"5wzEKES,4~[bWt%'^P+m+ l%2~e1z. lqIMZKsENTK#9YXy Z>1U0O30=q? -VZjBZHhC77QQZ;%hMnp"1N -\@ByG)Eʦ Ϥ0/{rz:bU)*/6AV[WwdN1ͫ-o-W%p:TV7 D$ c(NuB}-{85E'8n^;:VQ$%zV9>TBA3`) -TjMxzM!5V❐y|AȮ! -3A{պ9%O* -ۨ#+ ׫)Su/ -'wו>(dE㺑 !RFrnv*%|.^S%w*fXc S!MꐋAU-*.ߝ>B2y;:OVm#a#5`HOuQKpO -XQ[Z̥%IZF`h]隰 M!vDXr򫧕/ -{i>P+X4ZHJ4x?f[L(dK O͚0 6`VPJ :2t=*xwǗʠ!gfAԧK&;8n@'J,Йq/0( @)0[!;V*AEƻĩ*=|$dv'+)u(E:1I7x4\ֳI.xV* -t R|lCn %;`s'ߎ)\hC\.B'uڹ>MA` N4wjRXݏ*@mm]\~?pqCP<:nz -r̐ܧȏO~(<>MwJC;,Ͳj@+wvC;ANGqV Ojaz -nY#U5E"kQs9_f i͗*ޘT,\$Ywj5.D'G} 9843' |զ'9X3& -gDn7ZwvF>G5A>F19$ լYR}uiA~ЀpuzZ!]JRSg{9-'^LOp^G6? o2nnD=JT5=ӑ`_ZdGߕ -r7+[ґ-85r:}J@K DN m@m⤠ȤZ5蠒`|pۏǡfFg*‹*ݸ_P tPDx-y4o>=vX.\3BU"vpb~ KtχD+OI/A'y-A[v;Glڇ#o<:RƥVׇ`2laB[b mULg;L` -isvwSl>uW}q"UdG\64|xHf6۸)_&L\-/ mHB~dF7iB8Kx1+֜`w ov׶;z_.Al?sVl"Ǟ`mwB.<^ze(!FAKûhrDh S8{?Y48cD\.+1+0)s/^$AUg[a.om lcw/AFF7/`QtvK @C ͦi368Tkd"3ӝ&/67 Q4 .j5 ?6MX nƤZrZ^O=;YӇ*>~O'np:~oiYD"O^hN#rϑ#uZ\3́ -_GXz =BKӕkݔQVEW8ML+ Oc <|1\Tendstream +%%c@e՛LH<ׇvqMDfPEA^.S)YQb=pĚ+%iIZrN98хB5%ʆEreyXqU|D/&ꨜ+`JOHJZ|EN=1-)~CN lQFa(B)伻dVRb&׀`bީV 7l͎d hqF35)PϺ!TD'EI̾5MALD*X?$êlū#tݞokWfP(PDf vɕӌֳaoojOGQ(DOG*ژ( B bں*T_/L45^d(qk7}3bPc7@]^}-N`)ۚh.qJ7T` oP6R5P@7#r3/" @ϓo&T-^ej"tr0!~(&ro\touU[?mM(|tQ|uN㍩|'׈̃OJl(Jٗ6a>AjF ~qWa-Im}70G|R{/c.)"`YcE&xCqT&"C,^T'_HZ<iL"84/Iэ5)nAinƗ~I-:?C߲×X# %n坸)@m+ GfJR,DU{ ~ J Nu0Cab+n@ѓ}T,aCfD:JTmr.s#;,''5QGX.3ywsctJ%djߘKveŭ%Ikr hNNYläLCm1VFSύHowڂUASXK]3$jIVwc) 0q9)G'4vBȪduӜqlmR; Tt9*C_ϺQn 50qR3|20tM"/I\VH_]*DE hتL;$D~ 4n@m4y0 !&ڋo_HnbJm|4ƮeϷO%x=M]pV<$L'd穅VI*Y=!5-#/h]/0?*zXw5UD 6&.O?;P[h)vSt*ŗoKL$7Dkj{a|Wlt9f_Eq-6 ^awrȩci$Gu=k+OAG=fiF;'GQJKPHCw }!*Jk畢$Qs-r_MacN$f۩_KB"0H4e>@@Vo_G*9e\&j,)yTg^jf!tҜ$~E)W?|oedkGNJX;JD[jQ4܇c޷](S~,<JZ)A)aFJ2O_/T HU>Va&2hZ3䉀^EtxdE5]zU4enT@]ZA!n^⺒ǕtŜh\7}RWW$ض7]HNEW޵kNE,k 5a*VX8Iy?ZrӀ;E%E79GC7zc'y Z'iܪmUsqQ?lޱfbI)`o. +z NI=j+30^\3Ihs 4]).KnU~œP4t/g# +wF IlK7 s )Y&&l +Jx[AGGeVR4,ȿzidՍ$Bs:307:Ŗf0;Vfq+DyǪ_%(wx8U'4x=C3f"QQt³@4+z70JeS_Ammdl18ܒ qEĺ\;ߧ)!)NM4QR͸8kӒkU.\4]r"9^M\APr2)ǧ^ihYv\myΎyhG2s (jaBɲB!@O-k82([$cm2j4 $mVřˑ$[MƅW=2hY$gDZ &q䀯$3kD!h->@Kp<pzGV;`(&:G4C$آ64CJP׳/.#w1No=]_u"KIxl/%dk3 KП>MF5"G +Fg:V,RZAfvE8qK:2fTNO H~ {1)Kh@o1wa m`7[lzAkCg MtTT`5prӓy8S WExQ^ *Q53o5Ϙͧ˅kq&PJ7RNo!=}y}I8(אv)0($%9h.p`Mp`䭂'TGtr5ӸԖJ,Z&y-[(|@ Vl!?-~bilqW\6u.x-Cҧ2N3!0jV”+ކxcجf7EX]˄K0ó2e^ȏ(0Map5vؚlnv\O"˅;( AyΊM]}.Wȅk[ E Đר:H{U|xmSSN-|_9Aw +g'1ˁFg,ݕ˥w%fEc}{8%sŋ$4,b+Eݻm@`-}W%Ȉthbf;ޣnN?pp:xhT#;mGГjL$^b pł5&d<&sRF<'[>5V]>͘T Zn Vkx9kPǏxb6~ nP--kÁHDi܋ yD9rDNkƗ9pY y8B/b'~[ci|2jҊ'_iqe74|BAi ǀ/ЕS6<{[endstream endobj 54 0 obj << /A << /D (section.7) /S /GoTo >> /Border [ 0 0 0 ] /C [ 0.701176 0.4 0.414118 ] /H /I /Rect [ 145.524 690.827 152.196 701.685 ] /Subtype /Link /Type /Annot >> @@ -19610,7 +19605,7 @@ endobj << /Activation << /Condition /PO /Presentation << /PassContextClick false /Style /Embedded /Transparent true >> >> /Deactivation << /Condition /PC >> >> endobj 166 0 obj -<< /AP << /N 157 0 R >> /BS << /S /S /W 0 >> /Contents (media embedded by media9 [1.23\(2021/10/18\)]) /F 4 /NM (click) /Rect [ 172.08 165.34 176.4 169.66 ] /RichMediaContent 164 0 R /RichMediaSettings 165 0 R /Subtype /RichMedia /Type /Annot >> +<< /AP << /N 157 0 R >> /BS << /S /S /W 0 >> /Contents (media embedded by media9 [1.25\(2022/08/04\)]) /F 4 /NM (click) /Rect [ 172.08 165.34 176.4 169.66 ] /RichMediaContent 164 0 R /RichMediaSettings 165 0 R /Subtype /RichMedia /Type /Annot >> endobj 167 0 obj << /AA << /PC << /JS 1839 0 R /S /JavaScript >> /PI << /JS 1839 0 R /S /JavaScript >> /PO << /JS 1838 0 R /S /JavaScript >> /PV << /JS 1838 0 R /S /JavaScript >> >> /F 2 /Rect [ 176.4 165.34 180.6 169.66 ] /Subtype /Screen /Type /Annot >> @@ -19897,7 +19892,7 @@ endobj << /Count 29 /Kids [ 1884 0 R 1 0 R 9 0 R 16 0 R 22 0 R 31 0 R 37 0 R 43 0 R 47 0 R 51 0 R 58 0 R 64 0 R 73 0 R 83 0 R 87 0 R 96 0 R 100 0 R 107 0 R 116 0 R 122 0 R 129 0 R 141 0 R 147 0 R 154 0 R 170 0 R 176 0 R 180 0 R 184 0 R 192 0 R ] /Type /Pages >> endobj 218 0 obj -<< /Author /CreationDate (D:20220221150420+01'00') /Creator /Keywords /ModDate (D:20220221150420+01'00') /Producer (GPL Ghostscript 9.55.0) /Subject /Title >> +<< /Author /CreationDate (D:20220804170136+02'00') /Creator /Keywords /ModDate (D:20220804170136+02'00') /Producer (GPL Ghostscript 9.55.0) /Subject /Title >> endobj 219 0 obj << /Limits [ (Doc-Start) (table.4) ] /Names [ (Doc-Start) 221 0 R (Hfootnote.1) 232 0 R (Item.1) 587 0 R (Item.2) 588 0 R (Item.3) 589 0 R (Item.4) 590 0 R (Item.5) 591 0 R (Item.6) 592 0 R (Item.7) 593 0 R (Item.8) 595 0 R (beginend) 242 0 R (cite.chupin) 598 0 R (cite.dvisvgm) 599 0 R (cite.gilg05) 600 0 R (cite.hol) 601 0 R (cite.luque12) 602 0 R (cite.media4svg) 603 0 R (cite.media9) 604 0 R (cite.texsx) 605 0 R (dest:mem) 586 0 R (figure.1) 323 0 R (figure.2) 341 0 R (figure.3) 412 0 R (figure.4) 424 0 R (figure.5) 508 0 R (lstlisting.-1) 255 0 R (lstlisting.-2) 265 0 R (lstlisting.-3) 284 0 R (lstlisting.-4) 324 0 R (lstlisting.-5) 370 0 R (lstlisting.-6) 413 0 R (lstlisting.-7) 480 0 R (lstlisting.-8) 556 0 R (lstlisting.-9) 578 0 R (lstnumber.-1.1) 256 0 R (lstnumber.-1.2) 257 0 R (lstnumber.-1.3) 258 0 R (lstnumber.-1.4) 259 0 R (lstnumber.-1.5) 260 0 R (lstnumber.-1.6) 261 0 R (lstnumber.-1.7) 262 0 R (lstnumber.-2.1) 266 0 R (lstnumber.-2.10) 275 0 R (lstnumber.-2.11) 276 0 R (lstnumber.-2.12) 277 0 R (lstnumber.-2.2) 267 0 R (lstnumber.-2.3) 268 0 R (lstnumber.-2.4) 269 0 R (lstnumber.-2.5) 270 0 R (lstnumber.-2.6) 271 0 R (lstnumber.-2.7) 272 0 R (lstnumber.-2.8) 273 0 R (lstnumber.-2.9) 274 0 R (lstnumber.-3.1) 285 0 R (lstnumber.-3.10) 294 0 R (lstnumber.-3.11) 295 0 R (lstnumber.-3.12) 296 0 R (lstnumber.-3.13) 297 0 R (lstnumber.-3.14) 298 0 R (lstnumber.-3.15) 299 0 R (lstnumber.-3.16) 300 0 R (lstnumber.-3.17) 301 0 R (lstnumber.-3.18) 302 0 R (lstnumber.-3.19) 303 0 R (lstnumber.-3.2) 286 0 R (lstnumber.-3.20) 304 0 R (lstnumber.-3.21) 305 0 R (lstnumber.-3.22) 306 0 R (lstnumber.-3.23) 307 0 R (lstnumber.-3.24) 308 0 R (lstnumber.-3.25) 309 0 R (lstnumber.-3.26) 310 0 R (lstnumber.-3.27) 311 0 R (lstnumber.-3.28) 312 0 R (lstnumber.-3.29) 313 0 R (lstnumber.-3.3) 287 0 R (lstnumber.-3.30) 314 0 R (lstnumber.-3.31) 315 0 R (lstnumber.-3.32) 316 0 R (lstnumber.-3.33) 317 0 R (lstnumber.-3.34) 318 0 R (lstnumber.-3.35) 319 0 R (lstnumber.-3.36) 320 0 R (lstnumber.-3.37) 321 0 R (lstnumber.-3.4) 288 0 R (lstnumber.-3.5) 289 0 R (lstnumber.-3.6) 290 0 R (lstnumber.-3.7) 291 0 R (lstnumber.-3.8) 292 0 R (lstnumber.-3.9) 293 0 R (lstnumber.-4.1) 325 0 R (lstnumber.-4.10) 334 0 R (lstnumber.-4.11) 335 0 R (lstnumber.-4.12) 336 0 R (lstnumber.-4.13) 337 0 R (lstnumber.-4.14) 338 0 R (lstnumber.-4.15) 339 0 R (lstnumber.-4.16) 342 0 R (lstnumber.-4.17) 343 0 R (lstnumber.-4.18) 344 0 R (lstnumber.-4.19) 345 0 R (lstnumber.-4.2) 326 0 R (lstnumber.-4.20) 346 0 R (lstnumber.-4.21) 347 0 R (lstnumber.-4.22) 348 0 R (lstnumber.-4.23) 349 0 R (lstnumber.-4.24) 350 0 R (lstnumber.-4.25) 351 0 R (lstnumber.-4.26) 352 0 R (lstnumber.-4.27) 353 0 R (lstnumber.-4.28) 354 0 R (lstnumber.-4.29) 355 0 R (lstnumber.-4.3) 327 0 R (lstnumber.-4.30) 356 0 R (lstnumber.-4.31) 357 0 R (lstnumber.-4.32) 358 0 R (lstnumber.-4.33) 359 0 R (lstnumber.-4.34) 360 0 R (lstnumber.-4.35) 361 0 R (lstnumber.-4.36) 362 0 R (lstnumber.-4.37) 363 0 R (lstnumber.-4.38) 364 0 R (lstnumber.-4.39) 366 0 R (lstnumber.-4.4) 328 0 R (lstnumber.-4.40) 367 0 R (lstnumber.-4.41) 368 0 R (lstnumber.-4.5) 329 0 R (lstnumber.-4.6) 330 0 R (lstnumber.-4.7) 331 0 R (lstnumber.-4.8) 332 0 R (lstnumber.-4.9) 333 0 R (lstnumber.-5.1) 371 0 R (lstnumber.-5.10) 380 0 R (lstnumber.-5.11) 381 0 R (lstnumber.-5.12) 382 0 R (lstnumber.-5.13) 383 0 R (lstnumber.-5.14) 384 0 R (lstnumber.-5.15) 385 0 R (lstnumber.-5.16) 386 0 R (lstnumber.-5.17) 387 0 R (lstnumber.-5.18) 388 0 R (lstnumber.-5.19) 389 0 R (lstnumber.-5.2) 372 0 R (lstnumber.-5.20) 390 0 R (lstnumber.-5.21) 391 0 R (lstnumber.-5.22) 392 0 R (lstnumber.-5.23) 393 0 R (lstnumber.-5.24) 394 0 R (lstnumber.-5.25) 395 0 R (lstnumber.-5.26) 396 0 R (lstnumber.-5.27) 397 0 R (lstnumber.-5.28) 398 0 R (lstnumber.-5.29) 399 0 R (lstnumber.-5.3) 373 0 R (lstnumber.-5.30) 400 0 R (lstnumber.-5.31) 401 0 R (lstnumber.-5.32) 402 0 R (lstnumber.-5.33) 403 0 R (lstnumber.-5.34) 404 0 R (lstnumber.-5.35) 405 0 R (lstnumber.-5.36) 406 0 R (lstnumber.-5.37) 407 0 R (lstnumber.-5.38) 408 0 R (lstnumber.-5.39) 409 0 R (lstnumber.-5.4) 374 0 R (lstnumber.-5.40) 410 0 R (lstnumber.-5.5) 375 0 R (lstnumber.-5.6) 376 0 R (lstnumber.-5.7) 377 0 R (lstnumber.-5.8) 378 0 R (lstnumber.-5.9) 379 0 R (lstnumber.-6.1) 414 0 R (lstnumber.-6.10) 425 0 R (lstnumber.-6.11) 426 0 R (lstnumber.-6.12) 427 0 R (lstnumber.-6.13) 428 0 R (lstnumber.-6.14) 429 0 R (lstnumber.-6.15) 430 0 R (lstnumber.-6.16) 431 0 R (lstnumber.-6.17) 432 0 R (lstnumber.-6.18) 433 0 R (lstnumber.-6.19) 434 0 R (lstnumber.-6.2) 415 0 R (lstnumber.-6.20) 435 0 R (lstnumber.-6.21) 436 0 R (lstnumber.-6.22) 437 0 R (lstnumber.-6.23) 438 0 R (lstnumber.-6.24) 439 0 R (lstnumber.-6.25) 440 0 R (lstnumber.-6.26) 441 0 R (lstnumber.-6.27) 442 0 R (lstnumber.-6.28) 444 0 R (lstnumber.-6.29) 445 0 R (lstnumber.-6.3) 416 0 R (lstnumber.-6.30) 446 0 R (lstnumber.-6.31) 447 0 R (lstnumber.-6.32) 448 0 R (lstnumber.-6.33) 449 0 R (lstnumber.-6.34) 450 0 R (lstnumber.-6.35) 451 0 R (lstnumber.-6.36) 452 0 R (lstnumber.-6.37) 453 0 R (lstnumber.-6.38) 454 0 R (lstnumber.-6.39) 455 0 R (lstnumber.-6.4) 417 0 R (lstnumber.-6.40) 456 0 R (lstnumber.-6.41) 457 0 R (lstnumber.-6.42) 458 0 R (lstnumber.-6.43) 459 0 R (lstnumber.-6.44) 460 0 R (lstnumber.-6.45) 461 0 R (lstnumber.-6.46) 462 0 R (lstnumber.-6.47) 463 0 R (lstnumber.-6.48) 464 0 R (lstnumber.-6.49) 465 0 R (lstnumber.-6.5) 418 0 R (lstnumber.-6.50) 466 0 R (lstnumber.-6.51) 467 0 R (lstnumber.-6.52) 468 0 R (lstnumber.-6.53) 469 0 R (lstnumber.-6.54) 470 0 R (lstnumber.-6.55) 471 0 R (lstnumber.-6.56) 472 0 R (lstnumber.-6.57) 473 0 R (lstnumber.-6.58) 474 0 R (lstnumber.-6.59) 475 0 R (lstnumber.-6.6) 419 0 R (lstnumber.-6.60) 476 0 R (lstnumber.-6.61) 477 0 R (lstnumber.-6.62) 478 0 R (lstnumber.-6.63) 479 0 R (lstnumber.-6.7) 420 0 R (lstnumber.-6.8) 421 0 R (lstnumber.-6.9) 422 0 R (lstnumber.-7.1) 481 0 R (lstnumber.-7.10) 491 0 R (lstnumber.-7.11) 492 0 R (lstnumber.-7.12) 493 0 R (lstnumber.-7.13) 494 0 R (lstnumber.-7.14) 495 0 R (lstnumber.-7.15) 496 0 R (lstnumber.-7.16) 497 0 R (lstnumber.-7.17) 498 0 R (lstnumber.-7.18) 499 0 R (lstnumber.-7.19) 500 0 R (lstnumber.-7.2) 482 0 R (lstnumber.-7.20) 501 0 R (lstnumber.-7.21) 502 0 R (lstnumber.-7.22) 503 0 R (lstnumber.-7.23) 504 0 R (lstnumber.-7.24) 505 0 R (lstnumber.-7.25) 506 0 R (lstnumber.-7.26) 507 0 R (lstnumber.-7.27) 510 0 R (lstnumber.-7.28) 511 0 R (lstnumber.-7.29) 512 0 R (lstnumber.-7.3) 483 0 R (lstnumber.-7.30) 513 0 R (lstnumber.-7.31) 514 0 R (lstnumber.-7.32) 515 0 R (lstnumber.-7.33) 516 0 R (lstnumber.-7.34) 517 0 R (lstnumber.-7.35) 518 0 R (lstnumber.-7.36) 519 0 R (lstnumber.-7.37) 520 0 R (lstnumber.-7.38) 521 0 R (lstnumber.-7.39) 522 0 R (lstnumber.-7.4) 485 0 R (lstnumber.-7.40) 523 0 R (lstnumber.-7.41) 524 0 R (lstnumber.-7.42) 525 0 R (lstnumber.-7.43) 526 0 R (lstnumber.-7.44) 527 0 R (lstnumber.-7.45) 528 0 R (lstnumber.-7.46) 529 0 R (lstnumber.-7.47) 530 0 R (lstnumber.-7.48) 531 0 R (lstnumber.-7.49) 532 0 R (lstnumber.-7.5) 486 0 R (lstnumber.-7.50) 533 0 R (lstnumber.-7.51) 534 0 R (lstnumber.-7.52) 535 0 R (lstnumber.-7.53) 536 0 R (lstnumber.-7.54) 537 0 R (lstnumber.-7.55) 538 0 R (lstnumber.-7.56) 539 0 R (lstnumber.-7.57) 540 0 R (lstnumber.-7.58) 541 0 R (lstnumber.-7.59) 542 0 R (lstnumber.-7.6) 487 0 R (lstnumber.-7.60) 543 0 R (lstnumber.-7.61) 544 0 R (lstnumber.-7.62) 545 0 R (lstnumber.-7.63) 546 0 R (lstnumber.-7.64) 547 0 R (lstnumber.-7.65) 548 0 R (lstnumber.-7.66) 549 0 R (lstnumber.-7.67) 550 0 R (lstnumber.-7.68) 551 0 R (lstnumber.-7.69) 552 0 R (lstnumber.-7.7) 488 0 R (lstnumber.-7.70) 553 0 R (lstnumber.-7.8) 489 0 R (lstnumber.-7.9) 490 0 R (lstnumber.-8.1) 557 0 R (lstnumber.-8.10) 566 0 R (lstnumber.-8.11) 567 0 R (lstnumber.-8.12) 568 0 R (lstnumber.-8.13) 569 0 R (lstnumber.-8.14) 570 0 R (lstnumber.-8.15) 571 0 R (lstnumber.-8.16) 572 0 R (lstnumber.-8.17) 573 0 R (lstnumber.-8.18) 574 0 R (lstnumber.-8.19) 575 0 R (lstnumber.-8.2) 558 0 R (lstnumber.-8.20) 576 0 R (lstnumber.-8.3) 559 0 R (lstnumber.-8.4) 560 0 R (lstnumber.-8.5) 561 0 R (lstnumber.-8.6) 562 0 R (lstnumber.-8.7) 563 0 R (lstnumber.-8.8) 564 0 R (lstnumber.-8.9) 565 0 R (lstnumber.-9.1) 579 0 R (lstnumber.-9.2) 580 0 R (lstnumber.-9.3) 581 0 R (lstnumber.-9.4) 582 0 R (lstnumber.-9.5) 583 0 R (page.1) 220 0 R (page.10) 241 0 R (page.11) 244 0 R (page.12) 246 0 R (page.13) 250 0 R (page.14) 252 0 R (page.15) 263 0 R (page.16) 278 0 R (page.17) 281 0 R (page.18) 322 0 R (page.19) 340 0 R (page.2) 223 0 R (page.20) 365 0 R (page.21) 411 0 R (page.22) 423 0 R (page.23) 443 0 R (page.24) 484 0 R (page.25) 509 0 R (page.26) 555 0 R (page.27) 577 0 R (page.28) 585 0 R (page.29) 594 0 R (page.3) 226 0 R (page.4) 229 0 R (page.5) 231 0 R (page.6) 233 0 R (page.7) 236 0 R (page.8) 239 0 R (page.9) 240 0 R (section*.1) 222 0 R (section*.2) 234 0 R (section*.3) 235 0 R (section*.4) 245 0 R (section*.5) 247 0 R (section*.6) 249 0 R (section*.7) 251 0 R (section*.8) 254 0 R (section*.9) 597 0 R (section.1) 224 0 R (section.10) 584 0 R (section.11) 596 0 R (section.2) 225 0 R (section.3) 227 0 R (section.4) 228 0 R (section.5) 230 0 R (section.6) 237 0 R (section.7) 264 0 R (section.8) 282 0 R (section.9) 554 0 R (subsection.6.1) 238 0 R (subsection.6.2) 243 0 R (subsection.8.1) 283 0 R (subsection.8.2) 369 0 R (table.1) 248 0 R (table.2) 253 0 R (table.3) 279 0 R (table.4) 280 0 R ] >> @@ -21079,10 +21074,10 @@ stream GPL Ghostscript 9.55.0 include portable PDF animation SVG animation animated PDF animated SVG dvisvgm html TeX4ht web animating embed animated graphics LaTeX pdfLaTeX LuaLaTeX PSTricks pgf TikZ LaTeX-picture MetaPost inline graphics vector graphics animated GIF LaTeX dvips ps2pdf dvipdfmx XeLaTeX JavaScript Acrobat Reader KDE Okular PDF-XChange Foxit Reader Firefox Chrome Chromium -2022-02-21T15:04:20+01:00 -2022-02-21T15:04:20+01:00 +2022-08-04T17:01:36+02:00 +2022-08-04T17:01:36+02:00 LaTeX with hyperref - + The animate PackageAlexander GrahnDocumentation @@ -21093,616 +21088,616 @@ endobj xref 0 610 0000000000 65535 f -0003171591 00000 n -0003171799 00000 n -0003171927 00000 n -0003177816 00000 n -0003177994 00000 n -0003178172 00000 n -0003178354 00000 n -0003178403 00000 n -0003178478 00000 n -0003178686 00000 n -0003178815 00000 n -0003181929 00000 n -0003182181 00000 n -0003182360 00000 n -0003182410 00000 n -0003182473 00000 n -0003182696 00000 n -0003182825 00000 n -0003187597 00000 n -0003187849 00000 n -0003187897 00000 n -0003187973 00000 n -0003188183 00000 n -0003188312 00000 n -0003194471 00000 n -0003194651 00000 n -0003194886 00000 n -0003195150 00000 n -0003195200 00000 n -0003195275 00000 n -0003196358 00000 n -0003196568 00000 n -0003196697 00000 n -0003204491 00000 n -0003204674 00000 n -0003204724 00000 n -0003204813 00000 n -0003205015 00000 n -0003205144 00000 n -0003209740 00000 n -0003209918 00000 n -0003209968 00000 n -0003210044 00000 n -0003210220 00000 n -0003210349 00000 n -0003214569 00000 n -0003214618 00000 n -0003214794 00000 n -0003214923 00000 n -0003221049 00000 n -0003221098 00000 n -0003221307 00000 n -0003221437 00000 n -0003227035 00000 n -0003227213 00000 n -0003227391 00000 n -0003227441 00000 n -0003227518 00000 n -0003227720 00000 n -0003227850 00000 n -0003234911 00000 n -0003235090 00000 n -0003235140 00000 n -0003235202 00000 n -0003235433 00000 n -0003235563 00000 n -0003240962 00000 n -0003241138 00000 n -0003241315 00000 n -0003241492 00000 n -0003241675 00000 n -0003241725 00000 n -0003241787 00000 n -0003242017 00000 n -0003242147 00000 n -0003248803 00000 n -0003248979 00000 n -0003249156 00000 n -0003249339 00000 n -0003249519 00000 n -0003249697 00000 n -0003249747 00000 n -0003249809 00000 n -0003249993 00000 n -0003250123 00000 n -0003253170 00000 n -0003253232 00000 n -0003253455 00000 n -0003253585 00000 n -0003257167 00000 n -0003257343 00000 n -0003257519 00000 n -0003257702 00000 n -0003257881 00000 n -0003257931 00000 n -0003257994 00000 n -0003258178 00000 n -0003258308 00000 n -0003261946 00000 n -0003261995 00000 n -0003262211 00000 n -0003262342 00000 n -0003265728 00000 n -0003265906 00000 n -0003266084 00000 n -0003266135 00000 n -0003266254 00000 n -0003266687 00000 n -0003266818 00000 n -0003270465 00000 n -0003270717 00000 n -0003270895 00000 n -0003271076 00000 n -0003271519 00000 n -0003271570 00000 n -0003271676 00000 n -0003272899 00000 n -0003273030 00000 n -0003274279 00000 n -0003274537 00000 n -0003279586 00000 n -0003279734 00000 n -0003279950 00000 n -0003280081 00000 n -0003282667 00000 n -0003282845 00000 n -0003283026 00000 n -0003283077 00000 n -0003283155 00000 n -0003283783 00000 n -0003283914 00000 n -0003287914 00000 n -0003288171 00000 n -0003288349 00000 n -0003288522 00000 n -0003288758 00000 n -0003289216 00000 n -0003289267 00000 n -0003289359 00000 n -0003290024 00000 n -0003290123 00000 n -0003292173 00000 n -0003292304 00000 n -0003293394 00000 n -0003293651 00000 n -0003298330 00000 n -0003298394 00000 n -0003298610 00000 n -0003298741 00000 n -0003303356 00000 n -0003303534 00000 n -0003303716 00000 n -0003303767 00000 n -0003303817 00000 n -0003304399 00000 n -0003304530 00000 n -0003305224 00000 n -0003305458 00000 n -0003659918 00000 n -0003659995 00000 n -0003662284 00000 n -0003662359 00000 n -0003662516 00000 n -0003662608 00000 n -0003662750 00000 n -0003662920 00000 n -0003663183 00000 n -0003663439 00000 n -0003664325 00000 n -0003664404 00000 n -0003664612 00000 n -0003664743 00000 n -0003667241 00000 n -0003667423 00000 n -0003667474 00000 n -0003667538 00000 n -0003667718 00000 n -0003667849 00000 n -0003672598 00000 n -0003672662 00000 n -0003672842 00000 n -0003672973 00000 n -0003678869 00000 n -0003678933 00000 n -0003679157 00000 n -0003679288 00000 n -0003685065 00000 n -0003685243 00000 n -0003685419 00000 n -0003685595 00000 n -0003685646 00000 n -0003685722 00000 n -0003686018 00000 n -0003686149 00000 n -0003691472 00000 n -0003691695 00000 n -0003691875 00000 n -0003692054 00000 n -0003692233 00000 n -0003692489 00000 n -0003692745 00000 n -0003692947 00000 n -0003693160 00000 n -0003693378 00000 n -0003693593 00000 n -0003693816 00000 n -0003694039 00000 n -0003694090 00000 n -0003694167 00000 n -0003694649 00000 n -0003695026 00000 n -0003695246 00000 n -0003695486 00000 n -0003696460 00000 n -0003698838 00000 n -0003699183 00000 n -0003699406 00000 n -0003699678 00000 n -0003701593 00000 n -0003711056 00000 n -0003711127 00000 n -0003711195 00000 n -0003711263 00000 n -0003711328 00000 n -0003711392 00000 n -0003711457 00000 n -0003711525 00000 n -0003711590 00000 n -0003711655 00000 n -0003711721 00000 n -0003711785 00000 n -0003711854 00000 n -0003711920 00000 n -0003711986 00000 n -0003712052 00000 n -0003712118 00000 n -0003712187 00000 n -0003712253 00000 n -0003712319 00000 n -0003712385 00000 n -0003712454 00000 n -0003712520 00000 n -0003712585 00000 n -0003712650 00000 n -0003712719 00000 n -0003712785 00000 n -0003712851 00000 n -0003712916 00000 n -0003712982 00000 n -0003713048 00000 n -0003713117 00000 n -0003713183 00000 n -0003713249 00000 n -0003713315 00000 n -0003713381 00000 n -0003713447 00000 n -0003713512 00000 n -0003713578 00000 n -0003713644 00000 n -0003713710 00000 n -0003713775 00000 n -0003713841 00000 n -0003713907 00000 n -0003713976 00000 n -0003714042 00000 n -0003714108 00000 n -0003714174 00000 n -0003714240 00000 n -0003714305 00000 n -0003714371 00000 n -0003714437 00000 n -0003714503 00000 n -0003714569 00000 n -0003714635 00000 n -0003714701 00000 n -0003714767 00000 n -0003714833 00000 n -0003714899 00000 n -0003714965 00000 n -0003715031 00000 n -0003715097 00000 n -0003715167 00000 n -0003715234 00000 n -0003715301 00000 n -0003715368 00000 n -0003715435 00000 n -0003715502 00000 n -0003715569 00000 n -0003715635 00000 n -0003715701 00000 n -0003715768 00000 n -0003715835 00000 n -0003715902 00000 n -0003715968 00000 n -0003716034 00000 n -0003716101 00000 n -0003716168 00000 n -0003716235 00000 n -0003716301 00000 n -0003716368 00000 n -0003716435 00000 n -0003716502 00000 n -0003716568 00000 n -0003716634 00000 n -0003716701 00000 n -0003716768 00000 n -0003716835 00000 n -0003716902 00000 n -0003716969 00000 n -0003717036 00000 n -0003717103 00000 n -0003717170 00000 n -0003717237 00000 n -0003717304 00000 n -0003717371 00000 n -0003717438 00000 n -0003717505 00000 n -0003717571 00000 n -0003717638 00000 n -0003717705 00000 n -0003717772 00000 n -0003717839 00000 n -0003717906 00000 n -0003717973 00000 n -0003718038 00000 n -0003718105 00000 n -0003718172 00000 n -0003718239 00000 n -0003718306 00000 n -0003718373 00000 n -0003718440 00000 n -0003718507 00000 n -0003718574 00000 n -0003718641 00000 n -0003718708 00000 n -0003718775 00000 n -0003718842 00000 n -0003718909 00000 n -0003718976 00000 n -0003719043 00000 n -0003719113 00000 n -0003719180 00000 n -0003719247 00000 n -0003719314 00000 n -0003719381 00000 n -0003719448 00000 n -0003719513 00000 n -0003719580 00000 n -0003719647 00000 n -0003719714 00000 n -0003719781 00000 n -0003719848 00000 n -0003719915 00000 n -0003719982 00000 n -0003720049 00000 n -0003720115 00000 n -0003720181 00000 n -0003720248 00000 n -0003720315 00000 n -0003720382 00000 n -0003720448 00000 n -0003720515 00000 n -0003720582 00000 n -0003720649 00000 n -0003720716 00000 n -0003720783 00000 n -0003720850 00000 n -0003720917 00000 n -0003720984 00000 n -0003721051 00000 n -0003721118 00000 n -0003721185 00000 n -0003721252 00000 n -0003721319 00000 n -0003721386 00000 n -0003721452 00000 n -0003721519 00000 n -0003721586 00000 n -0003721653 00000 n -0003721720 00000 n -0003721787 00000 n -0003721854 00000 n -0003721921 00000 n -0003721988 00000 n -0003722055 00000 n -0003722122 00000 n -0003722189 00000 n -0003722256 00000 n -0003722323 00000 n -0003722390 00000 n -0003722454 00000 n -0003722521 00000 n -0003722585 00000 n -0003722652 00000 n -0003722718 00000 n -0003722785 00000 n -0003722852 00000 n -0003722919 00000 n -0003722986 00000 n -0003723052 00000 n -0003723119 00000 n -0003723186 00000 n -0003723253 00000 n -0003723320 00000 n -0003723386 00000 n -0003723453 00000 n -0003723520 00000 n -0003723587 00000 n -0003723653 00000 n -0003723719 00000 n -0003723786 00000 n -0003723856 00000 n -0003723923 00000 n -0003723990 00000 n -0003724057 00000 n -0003724124 00000 n -0003724191 00000 n -0003724258 00000 n -0003724325 00000 n -0003724392 00000 n -0003724459 00000 n -0003724526 00000 n -0003724593 00000 n -0003724660 00000 n -0003724727 00000 n -0003724794 00000 n -0003724861 00000 n -0003724928 00000 n -0003724995 00000 n -0003725062 00000 n -0003725129 00000 n -0003725196 00000 n -0003725263 00000 n -0003725330 00000 n -0003725396 00000 n -0003725460 00000 n -0003725527 00000 n -0003725594 00000 n -0003725661 00000 n -0003725728 00000 n -0003725795 00000 n -0003725862 00000 n -0003725929 00000 n -0003725999 00000 n -0003726066 00000 n -0003726133 00000 n -0003726200 00000 n -0003726266 00000 n -0003726332 00000 n -0003726399 00000 n -0003726466 00000 n -0003726533 00000 n -0003726599 00000 n -0003726665 00000 n -0003726732 00000 n -0003726799 00000 n -0003726866 00000 n -0003726932 00000 n -0003726999 00000 n -0003727066 00000 n -0003727133 00000 n -0003727200 00000 n -0003727267 00000 n -0003727334 00000 n -0003727401 00000 n -0003727465 00000 n -0003727532 00000 n -0003727599 00000 n -0003727666 00000 n -0003727733 00000 n -0003727800 00000 n -0003727866 00000 n -0003727933 00000 n -0003728000 00000 n -0003728067 00000 n -0003728134 00000 n -0003728201 00000 n -0003728268 00000 n -0003728335 00000 n -0003728402 00000 n -0003728469 00000 n -0003728535 00000 n -0003728602 00000 n -0003728666 00000 n -0003728733 00000 n -0003728800 00000 n -0003728867 00000 n -0003728934 00000 n -0003729000 00000 n -0003729066 00000 n -0003729133 00000 n -0003729200 00000 n -0003729267 00000 n -0003729333 00000 n -0003729399 00000 n -0003729466 00000 n -0003729533 00000 n -0003729600 00000 n -0003729666 00000 n -0003729733 00000 n -0003729800 00000 n -0003729867 00000 n -0003729934 00000 n -0003730001 00000 n -0003730068 00000 n -0003730135 00000 n -0003730199 00000 n -0003730266 00000 n -0003730333 00000 n -0003730403 00000 n -0003730470 00000 n -0003730537 00000 n -0003730604 00000 n -0003730670 00000 n -0003730736 00000 n -0003730803 00000 n -0003730870 00000 n -0003730937 00000 n -0003731003 00000 n -0003731069 00000 n -0003731136 00000 n -0003731203 00000 n -0003731270 00000 n -0003731336 00000 n -0003731403 00000 n -0003731470 00000 n -0003731537 00000 n -0003731604 00000 n -0003731671 00000 n -0003731738 00000 n -0003731805 00000 n -0003731869 00000 n -0003731936 00000 n -0003732003 00000 n -0003732070 00000 n -0003732137 00000 n -0003732204 00000 n -0003732270 00000 n -0003732337 00000 n -0003732404 00000 n -0003732471 00000 n -0003732538 00000 n -0003732605 00000 n -0003732672 00000 n -0003732739 00000 n -0003732806 00000 n -0003732873 00000 n -0003732940 00000 n -0003733007 00000 n -0003733074 00000 n -0003733141 00000 n -0003733208 00000 n -0003733275 00000 n -0003733342 00000 n -0003733409 00000 n -0003733476 00000 n -0003733543 00000 n -0003733610 00000 n -0003733677 00000 n -0003733744 00000 n -0003733811 00000 n -0003733878 00000 n -0003733942 00000 n -0003734009 00000 n -0003734076 00000 n -0003734143 00000 n -0003734210 00000 n -0003734277 00000 n -0003734343 00000 n -0003734410 00000 n -0003734477 00000 n -0003734544 00000 n -0003734611 00000 n -0003734678 00000 n -0003734745 00000 n -0003734812 00000 n -0003734879 00000 n -0003734949 00000 n -0003735016 00000 n -0003735083 00000 n -0003735150 00000 n -0003735217 00000 n -0003735284 00000 n -0003735351 00000 n -0003735418 00000 n -0003735485 00000 n -0003735552 00000 n -0003735619 00000 n -0003735686 00000 n -0003735753 00000 n -0003735820 00000 n -0003735887 00000 n -0003735954 00000 n -0003736021 00000 n -0003736091 00000 n -0003736158 00000 n -0003736225 00000 n -0003736292 00000 n -0003736359 00000 n -0003736426 00000 n -0003736493 00000 n -0003736560 00000 n -0003736627 00000 n -0003736694 00000 n -0003736761 00000 n -0003736828 00000 n -0003736867 00000 n -0003736897 00000 n -0003737182 00000 n -trailer << /Size 610 /ID [<3f5051c93ffdfa157c0ad1d1ec61c1ae>] >> +0003171583 00000 n +0003171791 00000 n +0003171919 00000 n +0003177808 00000 n +0003177986 00000 n +0003178164 00000 n +0003178346 00000 n +0003178395 00000 n +0003178470 00000 n +0003178678 00000 n +0003178807 00000 n +0003181921 00000 n +0003182173 00000 n +0003182352 00000 n +0003182402 00000 n +0003182465 00000 n +0003182688 00000 n +0003182817 00000 n +0003187589 00000 n +0003187841 00000 n +0003187889 00000 n +0003187965 00000 n +0003188175 00000 n +0003188304 00000 n +0003194463 00000 n +0003194643 00000 n +0003194878 00000 n +0003195142 00000 n +0003195192 00000 n +0003195267 00000 n +0003196350 00000 n +0003196560 00000 n +0003196689 00000 n +0003204483 00000 n +0003204666 00000 n +0003204716 00000 n +0003204805 00000 n +0003205007 00000 n +0003205136 00000 n +0003209732 00000 n +0003209910 00000 n +0003209960 00000 n +0003210036 00000 n +0003210212 00000 n +0003210341 00000 n +0003214561 00000 n +0003214610 00000 n +0003214786 00000 n +0003214915 00000 n +0003221023 00000 n +0003221072 00000 n +0003221281 00000 n +0003221411 00000 n +0003227012 00000 n +0003227190 00000 n +0003227368 00000 n +0003227418 00000 n +0003227495 00000 n +0003227697 00000 n +0003227827 00000 n +0003234888 00000 n +0003235067 00000 n +0003235117 00000 n +0003235179 00000 n +0003235410 00000 n +0003235540 00000 n +0003240939 00000 n +0003241115 00000 n +0003241292 00000 n +0003241469 00000 n +0003241652 00000 n +0003241702 00000 n +0003241764 00000 n +0003241994 00000 n +0003242124 00000 n +0003248780 00000 n +0003248956 00000 n +0003249133 00000 n +0003249316 00000 n +0003249496 00000 n +0003249674 00000 n +0003249724 00000 n +0003249786 00000 n +0003249970 00000 n +0003250100 00000 n +0003253147 00000 n +0003253209 00000 n +0003253432 00000 n +0003253562 00000 n +0003257144 00000 n +0003257320 00000 n +0003257496 00000 n +0003257679 00000 n +0003257858 00000 n +0003257908 00000 n +0003257971 00000 n +0003258155 00000 n +0003258285 00000 n +0003261923 00000 n +0003261972 00000 n +0003262188 00000 n +0003262319 00000 n +0003265705 00000 n +0003265883 00000 n +0003266061 00000 n +0003266112 00000 n +0003266231 00000 n +0003266664 00000 n +0003266795 00000 n +0003270442 00000 n +0003270694 00000 n +0003270872 00000 n +0003271053 00000 n +0003271496 00000 n +0003271547 00000 n +0003271653 00000 n +0003272876 00000 n +0003273007 00000 n +0003274256 00000 n +0003274514 00000 n +0003279563 00000 n +0003279711 00000 n +0003279927 00000 n +0003280058 00000 n +0003282644 00000 n +0003282822 00000 n +0003283003 00000 n +0003283054 00000 n +0003283132 00000 n +0003283760 00000 n +0003283891 00000 n +0003287891 00000 n +0003288148 00000 n +0003288326 00000 n +0003288499 00000 n +0003288735 00000 n +0003289193 00000 n +0003289244 00000 n +0003289336 00000 n +0003290001 00000 n +0003290100 00000 n +0003292150 00000 n +0003292281 00000 n +0003293371 00000 n +0003293628 00000 n +0003298307 00000 n +0003298371 00000 n +0003298587 00000 n +0003298718 00000 n +0003303333 00000 n +0003303511 00000 n +0003303693 00000 n +0003303744 00000 n +0003303794 00000 n +0003304376 00000 n +0003304507 00000 n +0003305201 00000 n +0003305435 00000 n +0003659895 00000 n +0003659972 00000 n +0003662261 00000 n +0003662336 00000 n +0003662493 00000 n +0003662585 00000 n +0003662727 00000 n +0003662897 00000 n +0003663160 00000 n +0003663416 00000 n +0003664302 00000 n +0003664381 00000 n +0003664589 00000 n +0003664720 00000 n +0003667218 00000 n +0003667400 00000 n +0003667451 00000 n +0003667515 00000 n +0003667695 00000 n +0003667826 00000 n +0003672575 00000 n +0003672639 00000 n +0003672819 00000 n +0003672950 00000 n +0003678846 00000 n +0003678910 00000 n +0003679134 00000 n +0003679265 00000 n +0003685042 00000 n +0003685220 00000 n +0003685396 00000 n +0003685572 00000 n +0003685623 00000 n +0003685699 00000 n +0003685995 00000 n +0003686126 00000 n +0003691449 00000 n +0003691672 00000 n +0003691852 00000 n +0003692031 00000 n +0003692210 00000 n +0003692466 00000 n +0003692722 00000 n +0003692924 00000 n +0003693137 00000 n +0003693355 00000 n +0003693570 00000 n +0003693793 00000 n +0003694016 00000 n +0003694067 00000 n +0003694144 00000 n +0003694626 00000 n +0003695003 00000 n +0003695223 00000 n +0003695463 00000 n +0003696437 00000 n +0003698815 00000 n +0003699160 00000 n +0003699383 00000 n +0003699655 00000 n +0003701570 00000 n +0003711033 00000 n +0003711104 00000 n +0003711172 00000 n +0003711240 00000 n +0003711305 00000 n +0003711369 00000 n +0003711434 00000 n +0003711502 00000 n +0003711567 00000 n +0003711632 00000 n +0003711698 00000 n +0003711762 00000 n +0003711831 00000 n +0003711897 00000 n +0003711963 00000 n +0003712029 00000 n +0003712095 00000 n +0003712164 00000 n +0003712230 00000 n +0003712296 00000 n +0003712362 00000 n +0003712431 00000 n +0003712497 00000 n +0003712562 00000 n +0003712627 00000 n +0003712696 00000 n +0003712762 00000 n +0003712828 00000 n +0003712893 00000 n +0003712959 00000 n +0003713025 00000 n +0003713094 00000 n +0003713160 00000 n +0003713226 00000 n +0003713292 00000 n +0003713358 00000 n +0003713424 00000 n +0003713489 00000 n +0003713555 00000 n +0003713621 00000 n +0003713687 00000 n +0003713752 00000 n +0003713818 00000 n +0003713884 00000 n +0003713953 00000 n +0003714019 00000 n +0003714085 00000 n +0003714151 00000 n +0003714217 00000 n +0003714282 00000 n +0003714348 00000 n +0003714414 00000 n +0003714480 00000 n +0003714546 00000 n +0003714612 00000 n +0003714678 00000 n +0003714744 00000 n +0003714810 00000 n +0003714876 00000 n +0003714942 00000 n +0003715008 00000 n +0003715074 00000 n +0003715144 00000 n +0003715211 00000 n +0003715278 00000 n +0003715345 00000 n +0003715412 00000 n +0003715479 00000 n +0003715546 00000 n +0003715612 00000 n +0003715678 00000 n +0003715745 00000 n +0003715812 00000 n +0003715879 00000 n +0003715945 00000 n +0003716011 00000 n +0003716078 00000 n +0003716145 00000 n +0003716212 00000 n +0003716278 00000 n +0003716345 00000 n +0003716412 00000 n +0003716479 00000 n +0003716545 00000 n +0003716611 00000 n +0003716678 00000 n +0003716745 00000 n +0003716812 00000 n +0003716879 00000 n +0003716946 00000 n +0003717013 00000 n +0003717080 00000 n +0003717147 00000 n +0003717214 00000 n +0003717281 00000 n +0003717348 00000 n +0003717415 00000 n +0003717482 00000 n +0003717548 00000 n +0003717615 00000 n +0003717682 00000 n +0003717749 00000 n +0003717816 00000 n +0003717883 00000 n +0003717950 00000 n +0003718015 00000 n +0003718082 00000 n +0003718149 00000 n +0003718216 00000 n +0003718283 00000 n +0003718350 00000 n +0003718417 00000 n +0003718484 00000 n +0003718551 00000 n +0003718618 00000 n +0003718685 00000 n +0003718752 00000 n +0003718819 00000 n +0003718886 00000 n +0003718953 00000 n +0003719020 00000 n +0003719090 00000 n +0003719157 00000 n +0003719224 00000 n +0003719291 00000 n +0003719358 00000 n +0003719425 00000 n +0003719490 00000 n +0003719557 00000 n +0003719624 00000 n +0003719691 00000 n +0003719758 00000 n +0003719825 00000 n +0003719892 00000 n +0003719959 00000 n +0003720026 00000 n +0003720092 00000 n +0003720158 00000 n +0003720225 00000 n +0003720292 00000 n +0003720359 00000 n +0003720425 00000 n +0003720492 00000 n +0003720559 00000 n +0003720626 00000 n +0003720693 00000 n +0003720760 00000 n +0003720827 00000 n +0003720894 00000 n +0003720961 00000 n +0003721028 00000 n +0003721095 00000 n +0003721162 00000 n +0003721229 00000 n +0003721296 00000 n +0003721363 00000 n +0003721429 00000 n +0003721496 00000 n +0003721563 00000 n +0003721630 00000 n +0003721697 00000 n +0003721764 00000 n +0003721831 00000 n +0003721898 00000 n +0003721965 00000 n +0003722032 00000 n +0003722099 00000 n +0003722166 00000 n +0003722233 00000 n +0003722300 00000 n +0003722367 00000 n +0003722431 00000 n +0003722498 00000 n +0003722562 00000 n +0003722629 00000 n +0003722695 00000 n +0003722762 00000 n +0003722829 00000 n +0003722896 00000 n +0003722963 00000 n +0003723029 00000 n +0003723096 00000 n +0003723163 00000 n +0003723230 00000 n +0003723297 00000 n +0003723363 00000 n +0003723430 00000 n +0003723497 00000 n +0003723564 00000 n +0003723630 00000 n +0003723696 00000 n +0003723763 00000 n +0003723833 00000 n +0003723900 00000 n +0003723967 00000 n +0003724034 00000 n +0003724101 00000 n +0003724168 00000 n +0003724235 00000 n +0003724302 00000 n +0003724369 00000 n +0003724436 00000 n +0003724503 00000 n +0003724570 00000 n +0003724637 00000 n +0003724704 00000 n +0003724771 00000 n +0003724838 00000 n +0003724905 00000 n +0003724972 00000 n +0003725039 00000 n +0003725106 00000 n +0003725173 00000 n +0003725240 00000 n +0003725307 00000 n +0003725373 00000 n +0003725437 00000 n +0003725504 00000 n +0003725571 00000 n +0003725638 00000 n +0003725705 00000 n +0003725772 00000 n +0003725839 00000 n +0003725906 00000 n +0003725976 00000 n +0003726043 00000 n +0003726110 00000 n +0003726177 00000 n +0003726243 00000 n +0003726309 00000 n +0003726376 00000 n +0003726443 00000 n +0003726510 00000 n +0003726576 00000 n +0003726642 00000 n +0003726709 00000 n +0003726776 00000 n +0003726843 00000 n +0003726909 00000 n +0003726976 00000 n +0003727043 00000 n +0003727110 00000 n +0003727177 00000 n +0003727244 00000 n +0003727311 00000 n +0003727378 00000 n +0003727442 00000 n +0003727509 00000 n +0003727576 00000 n +0003727643 00000 n +0003727710 00000 n +0003727777 00000 n +0003727843 00000 n +0003727910 00000 n +0003727977 00000 n +0003728044 00000 n +0003728111 00000 n +0003728178 00000 n +0003728245 00000 n +0003728312 00000 n +0003728379 00000 n +0003728446 00000 n +0003728512 00000 n +0003728579 00000 n +0003728643 00000 n +0003728710 00000 n +0003728777 00000 n +0003728844 00000 n +0003728911 00000 n +0003728977 00000 n +0003729043 00000 n +0003729110 00000 n +0003729177 00000 n +0003729244 00000 n +0003729310 00000 n +0003729376 00000 n +0003729443 00000 n +0003729510 00000 n +0003729577 00000 n +0003729643 00000 n +0003729710 00000 n +0003729777 00000 n +0003729844 00000 n +0003729911 00000 n +0003729978 00000 n +0003730045 00000 n +0003730112 00000 n +0003730176 00000 n +0003730243 00000 n +0003730310 00000 n +0003730380 00000 n +0003730447 00000 n +0003730514 00000 n +0003730581 00000 n +0003730647 00000 n +0003730713 00000 n +0003730780 00000 n +0003730847 00000 n +0003730914 00000 n +0003730980 00000 n +0003731046 00000 n +0003731113 00000 n +0003731180 00000 n +0003731247 00000 n +0003731313 00000 n +0003731380 00000 n +0003731447 00000 n +0003731514 00000 n +0003731581 00000 n +0003731648 00000 n +0003731715 00000 n +0003731782 00000 n +0003731846 00000 n +0003731913 00000 n +0003731980 00000 n +0003732047 00000 n +0003732114 00000 n +0003732181 00000 n +0003732247 00000 n +0003732314 00000 n +0003732381 00000 n +0003732448 00000 n +0003732515 00000 n +0003732582 00000 n +0003732649 00000 n +0003732716 00000 n +0003732783 00000 n +0003732850 00000 n +0003732917 00000 n +0003732984 00000 n +0003733051 00000 n +0003733118 00000 n +0003733185 00000 n +0003733252 00000 n +0003733319 00000 n +0003733386 00000 n +0003733453 00000 n +0003733520 00000 n +0003733587 00000 n +0003733654 00000 n +0003733721 00000 n +0003733788 00000 n +0003733855 00000 n +0003733919 00000 n +0003733986 00000 n +0003734053 00000 n +0003734120 00000 n +0003734187 00000 n +0003734254 00000 n +0003734320 00000 n +0003734387 00000 n +0003734454 00000 n +0003734521 00000 n +0003734588 00000 n +0003734655 00000 n +0003734722 00000 n +0003734789 00000 n +0003734856 00000 n +0003734926 00000 n +0003734993 00000 n +0003735060 00000 n +0003735127 00000 n +0003735194 00000 n +0003735261 00000 n +0003735328 00000 n +0003735395 00000 n +0003735462 00000 n +0003735529 00000 n +0003735596 00000 n +0003735663 00000 n +0003735730 00000 n +0003735797 00000 n +0003735864 00000 n +0003735931 00000 n +0003735998 00000 n +0003736068 00000 n +0003736135 00000 n +0003736202 00000 n +0003736269 00000 n +0003736336 00000 n +0003736403 00000 n +0003736470 00000 n +0003736537 00000 n +0003736604 00000 n +0003736671 00000 n +0003736738 00000 n +0003736805 00000 n +0003736844 00000 n +0003736874 00000 n +0003737159 00000 n +trailer << /Size 610 /ID [<75e8fb4f5346631caadd4dd62bc0c8cf>] >> startxref 216 %%EOF diff --git a/macros/latex/contrib/animate/animate.sty b/macros/latex/contrib/animate/animate.sty index 6964db89a1..408cf967f3 100644 --- a/macros/latex/contrib/animate/animate.sty +++ b/macros/latex/contrib/animate/animate.sty @@ -11,13 +11,12 @@ % Supports LaTeX->dvips->ps2pdf, (Xe)LaTeX->(x)dvipdfmx, LuaLaTeX, % pdfLaTeX and LaTeX->dvisvgm workflows. -\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\NeedsTeXFormat{LaTeX2e}[2022-06-01] -\def\@anim@version{2022/02/21} +\def\@anim@version{2022/08/04} \ProvidesPackage{animate} [\@anim@version\space PDF & SVG animations from files and inline graphics] -\RequirePackage{xkeyval} \RequirePackage{ifthen} \RequirePackage{iftex} \RequirePackage{ifdraft} @@ -25,60 +24,85 @@ %driver options (the only package options we process immediately) \newboolean{@anim@dvips} -\setboolean{@anim@dvips}{false} \newboolean{@anim@dvipdfmx} -\setboolean{@anim@dvipdfmx}{false} \newboolean{@anim@dvisvgm} -\setboolean{@anim@dvisvgm}{false} -\ifpdf\else - \setboolean{@anim@dvips}{true}% default dvi mode - \setboolean{@anim@dvipdfmx}{false} - \DeclareOptionX{dvips}{% - \setboolean{@anim@dvips}{true} - \setboolean{@anim@dvipdfmx}{false} - } - \DeclareOptionX{dvipdfmx}{% - \setboolean{@anim@dvipdfmx}{true} - \setboolean{@anim@dvips}{false} +\newboolean{@anim@xetex} +\newboolean{@anim@export}%exporting animation frames + +\ExplSyntaxOn +\DeclareKeys[anim@pkg]{ + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, + + dvipdfmx.code:n = { \PassOptionsToPackage{dvipdfmx}{pdfbase} + \PassOptionsToPackage{dvipdfmx}{ocgbase} \PassOptionsToPackage{dvipdfmx}{graphics} - } - \DeclareOptionX{xetex}{% - \setboolean{@anim@dvipdfmx}{true} - \setboolean{@anim@dvips}{false} - \PassOptionsToPackage{xetex}{pdfbase} - } - \DeclareOptionX{dvisvgm}{% - \setboolean{@anim@dvisvgm}{true} - \setboolean{@anim@dvips}{false} + }, + dvipdfmx.value_forbidden:n = true, + + dvisvgm.code:n = { \PassOptionsToPackage{dvisvgm}{pdfbase} \PassOptionsToPackage{dvisvgm}{graphics} - } + }, + dvisvgm.value_forbidden:n = true, + + export.legacy_if_gset:n = @anim@export, + export.default:n = true, +} +\ExplSyntaxOff +\DeclareUnknownKeyHandler[anim@pkg]{} + +\ProcessKeyOptions[anim@pkg] +% remaining package options to be processed near end of this file + +\RequirePackage{pdfbase} +\@ifpackagelater{pdfbase}{2022/08/04}{}{ + \PackageError{animate}{% + Support package `pdfbase.sty' too old.% + }{% + Please install an up to date version of `pdfbase.sty'.\MessageBreak% + Aborting.% + }% +} + +\ifpdf\else + \setboolean{@anim@dvips}{true}% default dvi mode \fi -\newboolean{@anim@xetex} -\setboolean{@anim@xetex}{false} -\ifxetex - \setboolean{@anim@xetex}{true} + +\ExplSyntaxOn +\bool_if:NT\g_pbs_dvipdfmx_bool{ \setboolean{@anim@dvipdfmx}{true} \setboolean{@anim@dvips}{false} -\fi -%exporting animation frames -\newboolean{@anim@export} -\setboolean{@anim@export}{false} +} +\bool_if:NT\g_pbs_dvisvgm_bool{ + \setboolean{@anim@dvisvgm}{true} + \setboolean{@anim@dvips}{false} +} +\sys_if_engine_xetex:T{ + \bool_if:NT\g_pbs_dvipdfmx_bool{\setboolean{@anim@xetex}{true}} + \setboolean{@anim@dvips}{false} +} +\ExplSyntaxOff + +\RequirePackage{graphics}%\scalebox, \resizebox, \rotatebox +\RequirePackage{zref-abspage} + \newboolean{@anim@insideexport} -\setboolean{@anim@insideexport}{false} \newenvironment{anim@export}{% \global\@anim@insideexporttrue% }{% \global\@anim@insideexportfalse% } -\DeclareOptionX{export}{\setboolean{@anim@export}{true}} - -\DeclareOptionX*{}\ProcessOptionsX*\relax %allow anything as an option -%(remaining package options will be processed near end of this file) - -\RequirePackage{graphics}%\scalebox, \resizebox, \rotatebox -\RequirePackage{zref-abspage} % get number of pages in file given as #1 (file basename); #2 extension; % store result into macro given as #3 @@ -148,7 +172,7 @@ \if@anim@export \@ifclassloaded{standalone}{}{ \PackageError{animate}{% - Option `export' requires `standalone' document class.\MessageBreak% + Option `export' requires the `standalone' document class.\MessageBreak% Replace current document class with `standalone'% }{% Put the line\MessageBreak% @@ -162,16 +186,6 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % low level PDF/SVG operations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage{pdfbase} -\@ifpackagelater{pdfbase}{2017/09/29}{}{ - \PackageError{animate}{% - Support package `pdfbase.sty' too old.% - }{% - Please install an up to date version of `pdfbase.sty'.\MessageBreak% - Aborting.% - }% -} - \ExplSyntaxOn \let\@anim@literal\pbs_literal:nn @@ -193,8 +207,6 @@ \ExplSyntaxOff \if@anim@dvisvgm - \setboolean{@anim@export}{false} - \def\@anim@updatebbox#1#2#3{\special{dvisvgm:bbox #1 #2 #3 transform}} %approach similar to OCGs, that is, putting the frame content in an svg group, @@ -226,8 +238,6 @@ \pbs_pdfannot:nnnn{#1}{#2}{#3}{#4} \pbs_appendtofields:n{\pbs_pdflastann:} } - - \let\@anim@pdfcatalog\pbs_pdfcatalog:n \ExplSyntaxOff \RequirePackage{ocgbase} %OCG generating and configuration macros @@ -356,7 +366,7 @@ }% \edef\@anim@curxform{\@anim@getkeyval{xform:\@anim@fingerprint}}% \ifthenelse{\equal{\@anim@curxform}{}}{% - % new ".." + % new file \@anim@filebox{#3}{#4}{#5}{\@anim@box}% store file in a box \edef\@anim@natdims{{\the\wd\@anim@box}{\the\ht\@anim@box}{\the\dp\@anim@box}}% \@anim@xinline{#1}{#2}{\@anim@box}{newfile}% Form XObject creation @@ -415,7 +425,7 @@ \fi% \ifthenelse{\equal{#4}{newfile}\OR\equal{#4}{inline}}{% \@anim@xform{1}{1}{}{}{#3}% - %keep a record of XObject number, needed when timeline is built + %keep a record of XObject number \@anim@newkey{img@#2}{\@anim@lastxform}% }{% %known file @@ -496,11 +506,9 @@ \hss% }% % rotate content on lscape pages - \ifnum\@anim@method>\@ne\else% - \ifx\@anim@lscape\@anim@@lscape% + \ifnum\@anim@method>\@ne\else\ifx\@anim@lscape\@anim@@lscape% \setbox\@anim@box=\hbox{\rotatebox{90}{\box\@anim@box}}% - \fi% - \fi% + \fi\fi% \fi% \ifcase\@anim@method% icon based \if@anim@singleref\else% @@ -1577,7 +1585,7 @@ \ifcsname Ginput@path\endcsname% make use of graphic[xs] search path \let\input@path\Ginput@path% \fi% - \setkeys{anim@user}{#1}% + \SetKeys[anim@user]{#1}% \ifx\empty\@anim@bg\empty\xdef\@anim@alpha{}\fi% \xdef\@anim@btnsize{\the\dimexpr\@anim@btnsize\relax}% %correct wrong option combination; totalheight overrides height @@ -2108,7 +2116,7 @@ \ifcsname Ginput@path\endcsname% make use of graphic[xs] search path \let\input@path\Ginput@path% \fi% - \setkeys{anim@user}{#1}% + \SetKeys[anim@user]{#1}% \ifx\empty\@anim@bg\empty\xdef\@anim@alpha{}\fi% \xdef\@anim@btnsize{\the\dimexpr\@anim@btnsize\relax}% %correct wrong option combination; totalheight overrides height @@ -2848,171 +2856,27 @@ } %command options -\define@key{anim@user}{label}{% - \gdef\@anim@label{#1}% - \ifcsname @anim@#1\endcsname% - \PackageWarning{animate}{Label #1 multiply defined} - \ifdefined\@anim@multlabel\else - \gdef\@anim@multlabel{}% - \AtEndDocument{% - \PackageWarningNoLine{animate}{% - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\MessageBreak - @ There are multiply-defined labels! @\MessageBreak - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}% - }% - \fi% - \fi% - \expandafter\gdef\csname @anim@#1\endcsname{}% -} -%setting the widget size -\define@key{anim@user}{width}{% - \gdef\@anim@widtharg{#1}% - \ifdefined\@anim@usrwd\else% - \global\advance\@anim@resizeflags by 4% - \def\@anim@usrwd{}% - \fi% -} -\define@key{anim@user}{height}{% - \gdef\@anim@heightarg{#1}% - \ifdefined\@anim@usrht\else% - \global\advance\@anim@resizeflags by 2% - \def\@anim@usrht{}% - \fi% -} -\define@key{anim@user}{totalheight}{% - \gdef\@anim@totheightarg{#1}% - \ifdefined\@anim@usrtht\else% - \global\advance\@anim@resizeflags by \@ne% - \def\@anim@usrtht{}% - \fi% -} -\define@key{anim@user}{depth}{% - \PackageWarning{animate}{Ignoring obsolete `depth' option.}% -} \newboolean{@anim@iso} -\define@key{anim@user}{keepaspectratio}[true]{% - \setboolean{@anim@iso}{#1}% -} -\define@key{anim@user}{bb}{% - \xdef\@anim@bb{bb=#1}% -} -\define@key{anim@user}{viewport}{% - \xdef\@anim@viewport{viewport=#1}% -} -\define@key{anim@user}{trim}{% - \xdef\@anim@trim{trim=#1}% -} -\define@key{anim@user}{angle}{% - \xdef\@anim@angle{angle=#1}% -} -\define@key{anim@user}{clip}[true]{% - %no-op, as embedded graphics are always clipped to widget box -} \newboolean{@anim@hiresbb} -\define@key{anim@user}{hiresbb}[true]{% - \setboolean{@anim@hiresbb}{#1}% -} \newboolean{@anim@interpolate} -\define@key{anim@user}{interpolate}[true]{% - \setboolean{@anim@interpolate}{#1}% -} -\define@key{anim@user}{pagebox}{% - \xdef\@anim@pagebox{pagebox=#1}% -} -\define@key{anim@user}{scale}{% - \xdef\@anim@boxscale{#1}% -} -\define@key{anim@user}{buttonsize}{% - \gdef\@anim@btnsize{#1}% -} -\def\@anim@colours#1:#2\@nil{% helper macro to get number of colour components - \xdef\@anim@colour{\@anim@colour\space #1}% and to replace : by ` ' in the arg - \ifthenelse{\equal{#2}{}}{}{% - \global\advance\@anim@tmpcnt by \@ne% - \@anim@colours#2\@nil% - }% -} -\define@key{anim@user}{buttonbg}{%background colour of buttons - \global\@anim@tmpcnt=\@ne% - \gdef\@anim@colour{}% - \@anim@colours#1:\@nil% - \global\let\@anim@bgcolour\@anim@colour% - \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1% - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@bg{\@anim@colour\space setgray}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@bg{\@anim@colour\space setrgbcolor}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@bg{\@anim@colour\space setcmykcolor}% - \fi% - \fi% - \fi% - \else% pdftex and dvipdfmx - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@bg{\@anim@colour\space g}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@bg{\@anim@colour\space rg}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@bg{\@anim@colour\space k}% - \fi% - \fi% - \fi% - \fi% -} -\define@key{anim@user}{buttonfg}{%stroking colour of buttons - \global\@anim@tmpcnt=\@ne% - \gdef\@anim@colour{}% - \@anim@colours#1:\@nil% - \global\let\@anim@fgcolour\@anim@colour% - \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1% - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@fg{\@anim@colour\space setgray}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@fg{\@anim@colour\space setrgbcolor}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@fg{\@anim@colour\space setcmykcolor}% - \fi% - \fi% - \fi% - \else% pdftex and dvipdfmx - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@fg{\@anim@colour\space G}% - \xdef\@anim@@@fg{\@anim@colour\space g}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@fg{\@anim@colour\space RG}% - \xdef\@anim@@@fg{\@anim@colour\space rg}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@fg{\@anim@colour\space K}% - \xdef\@anim@@@fg{\@anim@colour\space k}% - \fi% - \fi% - \fi% - \fi% -} -\define@key{anim@user}{buttonalpha}{%button opacity - \xdef\@anim@alpha{#1}% -} -\define@key{anim@user}{alttext}{% - \ifthenelse{\equal{#1}{none}}{% - \gdef\@anim@alttext{}% - }{% - \xdef\@anim@alttext{/Contents (#1)}% - }% -} - \newboolean{@anim@controls} \newboolean{@anim@controls@play} \newboolean{@anim@controls@step} \newboolean{@anim@controls@stop} \newboolean{@anim@controls@speed} +\newboolean{@anim@ctrlleft} +\newboolean{@anim@ctrlright} +\newboolean{@anim@ctrlcentre} +\newboolean{@anim@loop} +\newboolean{@anim@autoplay} +\newboolean{@anim@autoresume} +\newboolean{@anim@autopause} +\newboolean{@anim@palindrome} +\newboolean{@anim@step} +\newboolean{@anim@meas} +\setboolean{@anim@nomouse}{false} +\newboolean{@anim@draft} +\def\@anim@mone{-1}\def\@anim@mtwo{-2} \def\@anim@user@controls@all{% \setboolean{@anim@controls}{true}% \setboolean{@anim@controls@play}{true}% @@ -3027,185 +2891,333 @@ \setboolean{@anim@controls@stop}{false}% \setboolean{@anim@controls@speed}{false}% } -\define@key{anim@user}{controls}[all]{% - \@anim@user@controls@none% - \setkeys{anim@user@controls}{#1}% -} -\define@key{anim@user@controls}{all}[]{\@anim@user@controls@all} -\define@key{anim@user@controls}{true}[]{\@anim@user@controls@all} -\define@key{anim@user@controls}{on}[]{\@anim@user@controls@all} -\define@key{anim@user@controls}{none}[]{\@anim@user@controls@none} -\define@key{anim@user@controls}{false}[]{\@anim@user@controls@none} -\define@key{anim@user@controls}{off}[]{\@anim@user@controls@none} -\define@key{anim@user@controls}{play}[]{% - \setboolean{@anim@controls}{true}% - \setboolean{@anim@controls@play}{true}% -} -\define@key{anim@user@controls}{step}[]{% - \setboolean{@anim@controls}{true}% - \setboolean{@anim@controls@step}{true}% -} -\define@key{anim@user@controls}{stop}[]{% - \setboolean{@anim@controls}{true}% - \setboolean{@anim@controls@stop}{true}% -} -\define@key{anim@user@controls}{speed}[]{% - \setboolean{@anim@controls}{true}% - \setboolean{@anim@controls@speed}{true}% -} - \def\@anim@parse@ctrlsalignarg#1#2#3+#4\@nil{% \ifthenelse{\equal{#3}{}}{}{\def#1{#3}}% \ifthenelse{\equal{#4}{}}{#2=\z@}{\@anim@getalignindent#2#4\@nil}% } \def\@anim@getalignindent#1#2+\@nil{#1=#2} - -\newboolean{@anim@ctrlleft} -\newboolean{@anim@ctrlright} -\newboolean{@anim@ctrlcentre} -\define@key{anim@user}{controlsaligned}{% - \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil% - \ifthenelse{\equal{\@anim@tmpvar}{left}}{% - \setboolean{@anim@ctrlleft}{true}% - \setboolean{@anim@ctrlright}{false}% - \setboolean{@anim@ctrlcentre}{false}% - \xdef\@anim@ctrlsindent{\the\@anim@tmpdima}% - }{% - \ifthenelse{\equal{\@anim@tmpvar}{right}}{% - \setboolean{@anim@ctrlleft}{false}% - \setboolean{@anim@ctrlright}{true}% - \setboolean{@anim@ctrlcentre}{false}% - \xdef\@anim@ctrlsindent{\the\@anim@tmpdima}% - }{% - \ifthenelse{\equal{\@anim@tmpvar}{center}}{% - \setboolean{@anim@ctrlleft}{false}% - \setboolean{@anim@ctrlright}{false}% - \setboolean{@anim@ctrlcentre}{true}% - \xdef\@anim@ctrlsindent{\z@}% - }{}% - }% +% helper macro to get number of colour components +\def\@anim@colours#1{\@anim@@colours#1:\@nil} +\def\@anim@@colours#1:#2\@nil{% helper macro to get number of colour components + \xdef\@anim@colour{\@anim@colour\space #1}% and to replace : by ` ' in the arg + \ifthenelse{\equal{#2}{}}{}{% + \global\advance\@anim@tmpcnt by \@ne% + \@anim@@colours#2\@nil% }% } -\newboolean{@anim@loop} -\define@key{anim@user}{loop}[true]{% - \setboolean{@anim@loop}{#1}% -} -\newboolean{@anim@autoplay} -\define@key{anim@user}{autoplay}[true]{% - \setboolean{@anim@autoplay}{#1}% - \if@anim@autoplay% - \setboolean{@anim@autoresume}{false}% - \fi% -} -\newboolean{@anim@autoresume} -\define@key{anim@user}{autoresume}[true]{% - \setboolean{@anim@autoresume}{#1}% - \if@anim@autoresume% - \setboolean{@anim@autoplay}{false}% - \fi% -} -\newboolean{@anim@autopause} -\define@key{anim@user}{autopause}[true]{% - \setboolean{@anim@autopause}{#1}% -} -\newboolean{@anim@palindrome} -\define@key{anim@user}{palindrome}[true]{% - \setboolean{@anim@palindrome}{#1}% -} -\def\@anim@mone{-1}\def\@anim@mtwo{-2} -\define@key{anim@user}{poster}[first]{% | first | last | none - \ifthenelse{% - \equal{#1}{first}% - }{% - \gdef\@anim@poster{0}% - }{% - \ifthenelse{% - \equal{#1}{last}% - }{% - \gdef\@anim@poster{-1}% - }{% - \ifthenelse{% - \equal{#1}{none}% - }{% - \gdef\@anim@poster{-2}% - }{% - \ifnum#1<\z@\relax% - \PackageError{animate}{% - Poster frame `#1' is out-of-bounds on\MessageBreak% - input line \the\inputlineno.\MessageBreak% - Try one of `poster=first' or `poster=none'% - }{}% - \fi% - \gdef\@anim@poster{#1}% - }% - }% - }% -} -\newboolean{@anim@step} -\define@key{anim@user}{step}[true]{% - \setboolean{@anim@step}{#1}% -} -\newboolean{@anim@draft} -\define@key{anim@user}{draft}[true]{% - \setboolean{@anim@draft}{#1}% -} -\define@key{anim@user}{final}[true]{% - \ifthenelse{\equal{#1}{true}}{% - \setboolean{@anim@draft}{false}% - }{% - \setboolean{@anim@draft}{true}% - }% -} -\setboolean{@anim@nomouse}{false} -\define@key{anim@user}{nomouse}[true]{% - \setboolean{@anim@nomouse}{#1}% -} -\define@key{anim@user}{timeline}{% - \IfFileExists{#1}{% - \xdef\@anim@tmlnfile{\expandafter\zap@finalspace\@filef@und\@nil}% - \setboolean{@anim@timeline}{true}% - }{% - \PackageError{animate}{timeline file `#1' cannot be opened for reading% - }{% - Make sure file `#1' exists and is readable!% - }% - }% -} -\define@key{anim@user}{begin}{% - \gdef\@anim@begin{#1}% -} -\define@key{anim@user}{end}{% - \gdef\@anim@end{#1}% -} -\define@key{anim@user}{every}{% embed every #1th frame - \ifnum#1<\@ne\relax\gdef\@anim@every{1}\else\gdef\@anim@every{#1}\fi% -} -\newboolean{@anim@meas} -\define@key{anim@user}{measure}[true]{% - \setboolean{@anim@meas}{#1}% -} -\define@key{anim@user}{method}{% - \ifthenelse{\equal{#1}{icon}}{% - \def\@anim@method{\z@}% - }{% - \ifthenelse{\equal{#1}{widget}}{% - \def\@anim@method{\@ne}% - }{% - \ifthenelse{\equal{#1}{ocg}}{% - \def\@anim@method{\tw@}% - }{}% - }% - }% -} -\define@key{anim@user}{useocg}[]{% - \PackageError{animate}{% - Option `useocg' has been removed.\MessageBreak% - Use `method=ocg' instead% - }{}% -} +\ExplSyntaxOn +\DeclareKeys[anim@user]{ + label.code:n = { + \gdef\@anim@label{#1} + \ifcsname @anim@#1\endcsname + \PackageWarning{animate}{Label~#1~multiply~defined} + \ifdefined\@anim@multlabel\else + \gdef\@anim@multlabel{} + \AtEndDocument{ + \PackageWarningNoLine{animate}{ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\MessageBreak + @~There~are~multiply-defined~labels!~@\MessageBreak + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@} + } + \fi + \fi + \expandafter\gdef\csname @anim@#1\endcsname{} + }, + label.value_required:n = true, + + width.code:n = { + \gdef\@anim@widtharg{#1} + \ifdefined\@anim@usrwd\else + \global\advance\@anim@resizeflags by 4 + \def\@anim@usrwd{} + \fi + }, + width.value_required:n = true, + + height.code:n = { + \gdef\@anim@heightarg{#1} + \ifdefined\@anim@usrht\else + \global\advance\@anim@resizeflags by 2 + \def\@anim@usrht{} + \fi + }, + height.value_required:n = true, + + totalheight.code:n = { + \gdef\@anim@totheightarg{#1} + \ifdefined\@anim@usrtht\else + \global\advance\@anim@resizeflags by \@ne + \def\@anim@usrtht{} + \fi + }, + totalheight.value_required:n = true, + + keepaspectratio.legacy_if_gset:n = @anim@iso, + keepaspectratio.default:n = true, + + bb.code:n = {\xdef\@anim@bb{bb=#1}}, + bb.value_required:n = true, + + viewport.code:n = {\xdef\@anim@viewport{viewport=#1}}, + viewport.value_required:n = true, -\define@key{anim@user}{type}{\gdef\@anim@ftype{#1}}% + trim.code:n = {\xdef\@anim@trim{trim=#1}}, + trim.value_required:n = true, + + angle.code:n = {\xdef\@anim@angle{angle=#1}}, + angle.value_required:n = true, + + pagebox.code:n = {\xdef\@anim@pagebox{pagebox=#1}}, + pagebox.value_required:n = true, + + clip.code:n = {}, % no-op, as embedded graphics are always + clip.default:n = true, % clipped to widget box + + hiresbb.legacy_if_gset:n = @anim@hiresbb, + hiresbb.default:n = true, + + interpolate.legacy_if_gset:n = @anim@interpolate, + interpolate.default:n = true, + + scale.tl_gset_x:N = \@anim@boxscale, + scale.value_required:n = true, + + buttonsize.tl_gset:N = \@anim@btnsize, + buttonsize.value_required:n = true, + + buttonbg.code:n = { + \global\@anim@tmpcnt=\@ne + \gdef\@anim@colour{} + \@anim@colours{#1} + \global\let\@anim@bgcolour\@anim@colour + \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1 + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@bg{\@anim@colour\space setgray} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@bg{\@anim@colour\space setrgbcolor} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@bg{\@anim@colour\space setcmykcolor} + \fi + \fi + \fi + \else% pdftex and dvipdfmx + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@bg{\@anim@colour\space g} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@bg{\@anim@colour\space rg} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@bg{\@anim@colour\space k} + \fi + \fi + \fi + \fi + }, + buttonbg.value_required:n = true, + + buttonfg.code:n = { + \global\@anim@tmpcnt=\@ne + \gdef\@anim@colour{} + \@anim@colours{#1} + \global\let\@anim@fgcolour\@anim@colour + \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1 + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@fg{\@anim@colour\space setgray} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@fg{\@anim@colour\space setrgbcolor} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@fg{\@anim@colour\space setcmykcolor} + \fi + \fi + \fi + \else% pdftex and dvipdfmx + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@fg{\@anim@colour\space G} + \xdef\@anim@@@fg{\@anim@colour\space g} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@fg{\@anim@colour\space RG} + \xdef\@anim@@@fg{\@anim@colour\space rg} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@fg{\@anim@colour\space K} + \xdef\@anim@@@fg{\@anim@colour\space k} + \fi + \fi + \fi + \fi + }, + buttonfg.value_required:n = true, + + buttonalpha.tl_gset_x:N = \@anim@alpha, + buttonalpha.value_required:n = true, + + alttext.code:n = { + \ifthenelse{\equal{#1}{none}}{ + \gdef\@anim@alttext{} + }{ + \xdef\@anim@alttext{/Contents~(#1)} + } + }, + alttext.value_required:n = true, + + controls.multichoice:, + controls / all.code:n = {\@anim@user@controls@all}, + controls / true.code:n = {\@anim@user@controls@all}, + controls / on.code:n = {\@anim@user@controls@all}, + controls / none.code:n = {\@anim@user@controls@none}, + controls / false.code:n = {\@anim@user@controls@none}, + controls / off.code:n = {\@anim@user@controls@none}, + controls / play.code:n = { + \setboolean{@anim@controls}{true} + \setboolean{@anim@controls@play}{true} + }, + controls / step.code:n = { + \setboolean{@anim@controls}{true} + \setboolean{@anim@controls@step}{true} + }, + controls / stop.code:n = { + \setboolean{@anim@controls}{true} + \setboolean{@anim@controls@stop}{true} + }, + controls / speed.code:n = { + \setboolean{@anim@controls}{true} + \setboolean{@anim@controls@speed}{true} + }, + controls.default:n = all, + + controlsaligned.code:n = { + \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil + \ifthenelse{\equal{\@anim@tmpvar}{left}}{ + \setboolean{@anim@ctrlleft}{true} + \setboolean{@anim@ctrlright}{false} + \setboolean{@anim@ctrlcentre}{false} + \xdef\@anim@ctrlsindent{\the\@anim@tmpdima} + }{ + \ifthenelse{\equal{\@anim@tmpvar}{right}}{ + \setboolean{@anim@ctrlleft}{false} + \setboolean{@anim@ctrlright}{true} + \setboolean{@anim@ctrlcentre}{false} + \xdef\@anim@ctrlsindent{\the\@anim@tmpdima} + }{ + \ifthenelse{\equal{\@anim@tmpvar}{center}}{ + \setboolean{@anim@ctrlleft}{false} + \setboolean{@anim@ctrlright}{false} + \setboolean{@anim@ctrlcentre}{true} + \xdef\@anim@ctrlsindent{\z@} + }{} + } + } + }, + controlsaligned.value_required:n = true, + + loop.legacy_if_gset:n = @anim@loop, + loop.default:n = true, + + autoplay.code:n = { + \setboolean{@anim@autoplay}{#1} + \if@anim@autoplay\setboolean{@anim@autoresume}{false}\fi + }, + autoplay.default:n = true, + + autoresume.code:n = { + \setboolean{@anim@autoresume}{#1} + \if@anim@autoresume\setboolean{@anim@autoplay}{false}\fi + }, + autoresume.default:n = true, + + autopause.legacy_if_gset:n = @anim@autopause, + autopause.default:n = true, + + palindrome.legacy_if_gset:n = @anim@palindrome, + palindrome.default:n = true, + + poster.choice:, % | first | last | none + poster / first.code:n = {\gdef\@anim@poster{0}}, + poster / last.code:n = {\gdef\@anim@poster{-1}}, + poster / none.code:n = {\gdef\@anim@poster{-2}}, + poster / unknown.code:n = {% frame + \ifnum#1<\z@\relax + \PackageError{animate}{ + Poster~frame~`#1'~is~out-of-bounds~on\MessageBreak + input~line~\the\inputlineno.\MessageBreak + Try~one~of~`poster=first'~or~`poster=none' + }{} + \fi + \gdef\@anim@poster{#1} + }, + poster.default:n = first, + + step.legacy_if_gset:n = @anim@step, + step.default:n = true, + + draft.legacy_if_gset:n = @anim@draft, + draft.default:n = true, + + final.code:n = { + \ifthenelse{\equal{#1}{true}}{ + \setboolean{@anim@draft}{false} + }{ + \setboolean{@anim@draft}{true} + } + }, + final.default:n = true, + + nomouse.legacy_if_gset:n = @anim@nomouse, + nomouse.default:n = true, + + timeline.code:n = { + \IfFileExists{#1}{ + \xdef\@anim@tmlnfile{\expandafter\zap@finalspace\@filef@und\@nil} + \setboolean{@anim@timeline}{true} + }{ + \PackageError{animate}{timeline~file~`#1'~cannot~be~opened~for~reading + }{ + Make~sure~file~`#1'~exists~and~is~readable! + } + } + }, + timeline.value_required:n = true, + + begin.tl_gset:N = \@anim@begin, + begin.value_required:n = true, + + end.tl_gset:N = \@anim@end, + end.value_required:n = true, + + every.code:n = { + \ifnum#1<\@ne\relax\gdef\@anim@every{1}\else\gdef\@anim@every{#1}\fi + }, + every.value_required:n = true, + + measure.legacy_if_gset:n = @anim@meas, + measure.default:n = true, + + method.choices:nn = {icon,widget,ocg} { + \ifthenelse{\equal{#1}{icon}}{ + \def\@anim@method{\z@} + }{ + \ifthenelse{\equal{#1}{widget}}{ + \def\@anim@method{\@ne} + }{ + \ifthenelse{\equal{#1}{ocg}}{ + \def\@anim@method{\tw@} + }{} + } + } + }, + method.value_required:n = true, + + type.tl_gset_x:N = \@anim@ftype, + type.value_required:n = true, +} +\ExplSyntaxOff %macro to reset macros and booleans \def\@anim@reset{% @@ -3274,197 +3286,25 @@ } %package options -\define@key{anim@pkg}{dvips}[]{% - \ifthenelse{\equal{#1}{}}{}{% - \PackageError{animate}{% - Package option `dvips' does not accept arguments% - }{}% - }% -}% -\define@key{anim@pkg}{dvipdfmx}[]{ - \ifthenelse{\equal{#1}{}}{}{% - \PackageError{animate}{% - Package option `dvipdfmx' does not accept arguments% - }{}% - }% -}% -\define@key{anim@pkg}{dvisvgm}[]{ - \ifthenelse{\equal{#1}{}}{}{% - \PackageError{animate}{% - Package option `dvisvgm' does not accept arguments% - }{}% - }% -}% -\define@key{anim@pkg}{xetex}[]{ - \ifthenelse{\equal{#1}{}}{}{% - \PackageError{animate}{% - Package option `xetex' does not accept arguments% - }{}% - }% -}% -\define@key{anim@pkg}{export}[]{ - \ifthenelse{\equal{#1}{}}{}{% - \PackageError{animate}{% - Package option `export' does not accept arguments% - }{}% - }% -}% -\def\@anim@@bg{} -\def\@anim@@bgcolour{} -\define@key{anim@pkg}{buttonbg}{%background colour of buttons - \global\@anim@tmpcnt=\@ne% - \gdef\@anim@colour{}% - \@anim@colours#1:\@nil% - \global\let\@anim@@bgcolour\@anim@colour% - \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1% - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@@bg{\@anim@colour\space setgray}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@@bg{\@anim@colour\space setrgbcolor}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@@bg{\@anim@colour\space setcmykcolor}% - \fi% - \fi% - \fi% - \else% pdftex and dvipdfmx - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@@bg{\@anim@colour\space g}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@@bg{\@anim@colour\space rg}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@@bg{\@anim@colour\space k}% - \fi% - \fi% - \fi% - \fi% -} - -\ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1 - %dvips .OR. dvisvgm - \def\@anim@@fg{0 setgray}\def\@anim@@@@fg{} -\else% pdftex and dvipdfmx - \def\@anim@@fg{0 G}\def\@anim@@@@fg{0 g} -\fi -\def\@anim@@fgcolour{} -\define@key{anim@pkg}{buttonfg}{%stroking colour of buttons - \global\@anim@tmpcnt=\@ne% - \gdef\@anim@colour{}% - \@anim@colours#1:\@nil% - \global\let\@anim@@fgcolour\@anim@colour% - \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1% - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@@fg{\@anim@colour\space setgray}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@@fg{\@anim@colour\space setrgbcolor}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@@fg{\@anim@colour\space setcmykcolor}% - \fi% - \fi% - \fi% - \else% pdftex and dvipdfmx - \ifnum\@anim@tmpcnt=\@ne\relax% - \xdef\@anim@@fg{\@anim@colour\space G}% - \xdef\@anim@@@@fg{\@anim@colour\space g}% - \else% - \ifnum\@anim@tmpcnt=3\relax% - \xdef\@anim@@fg{\@anim@colour\space RG}% - \xdef\@anim@@@@fg{\@anim@colour\space rg}% - \else% - \ifnum\@anim@tmpcnt=4\relax% - \xdef\@anim@@fg{\@anim@colour\space K}% - \xdef\@anim@@@@fg{\@anim@colour\space k}% - \fi% - \fi% - \fi% - \fi% -} -\def\@anim@@alpha{} -\define@key{anim@pkg}{buttonalpha}{%button opacity - \xdef\@anim@@alpha{#1}% -} \newcount\@anim@@resizeflags -\def\@anim@@widtharg{\width}% -\define@key{anim@pkg}{width}{% - \def\@anim@@widtharg{#1}% - \ifdefined\@anim@pkgwd\else% - \advance\@anim@@resizeflags by 4% - \def\@anim@pkgwd{}% - \fi% -} -\def\@anim@@heightarg{\height}% -\define@key{anim@pkg}{height}{% - \def\@anim@@heightarg{#1}% - \ifdefined\@anim@pkght\else% - \advance\@anim@@resizeflags by 2% - \def\@anim@pkght{}% - \fi% -} -\def\@anim@@totheightarg{\totalheight}% -\define@key{anim@pkg}{totalheight}{% - \def\@anim@@totheightarg{#1}% - \ifdefined\@anim@pkgtht\else% - \advance\@anim@@resizeflags by \@ne% - \def\@anim@pkgtht{}% - \fi% -} +\def\@anim@@widtharg{\width} +\def\@anim@@heightarg{\height} +\def\@anim@@totheightarg{\totalheight} \newboolean{@anim@@iso} -\define@key{anim@pkg}{keepaspectratio}[true]{% - \setboolean{@anim@@iso}{#1}% -} \def\@anim@@bb{} -\define@key{anim@pkg}{bb}{% - \xdef\@anim@bb{bb=#1}% -} \def\@anim@@viewport{} -\define@key{anim@pkg}{viewport}{% - \xdef\@anim@@viewport{viewport=#1}% -} \def\@anim@@trim{} -\define@key{anim@pkg}{trim}{% - \xdef\@anim@@trim{trim=#1}% -} \def\@anim@@angle{} -\define@key{anim@pkg}{angle}{% - \xdef\@anim@@angle{angle=#1}% -} -\define@key{anim@pkg}{clip}[true]{% - %no-op, as embedded graphics are always clipped to widget box -} +\def\@anim@@pagebox{} \newboolean{@anim@@hiresbb} -\define@key{anim@pkg}{hiresbb}[true]{% - \setboolean{@anim@@hiresbb}{#1}% -} \newboolean{@anim@@interpolate} -\define@key{anim@pkg}{interpolate}[true]{% - \setboolean{@anim@@interpolate}{#1}% -} -\def\@anim@@pagebox{} -\define@key{anim@pkg}{pagebox}{% - \xdef\@anim@@pagebox{pagebox=#1}% -} -\def\@anim@@boxscale{1}% -\define@key{anim@pkg}{scale}{% - \def\@anim@@boxscale{#1}% -} -\def\@anim@@btnsize{1.44em}% -\define@key{anim@pkg}{buttonsize}{% - \gdef\@anim@@btnsize{#1}% -} +\def\@anim@@boxscale{1} +\def\@anim@@btnsize{1.44em} +\def\@anim@@bg{} +\def\@anim@@bgcolour{} +\def\@anim@@fgcolour{} +\def\@anim@@alpha{} \edef\@anim@@alttext{/Contents (animation by animate, v. \@anim@version)} -\define@key{anim@pkg}{alttext}{% - \ifthenelse{\equal{#1}{none}}{% - \gdef\@anim@@alttext{}% - }{% - \xdef\@anim@@alttext{/Contents (#1)}% - }% -} - \newboolean{@anim@@controls} \newboolean{@anim@@controls@play} \newboolean{@anim@@controls@step} @@ -3484,170 +3324,301 @@ \setboolean{@anim@@controls@stop}{false}% \setboolean{@anim@@controls@speed}{false}% } -\define@key{anim@pkg}{controls}[all]{% - \@anim@pkg@controls@none% - \setkeys{anim@pkg@controls}{#1}% -} -\define@key{anim@pkg@controls}{all}[]{\@anim@pkg@controls@all} -\define@key{anim@pkg@controls}{true}[]{\@anim@pkg@controls@all} -\define@key{anim@pkg@controls}{on}[]{\@anim@pkg@controls@all} -\define@key{anim@pkg@controls}{none}[]{\@anim@pkg@controls@none} -\define@key{anim@pkg@controls}{false}[]{\@anim@pkg@controls@none} -\define@key{anim@pkg@controls}{off}[]{\@anim@pkg@controls@none} -\define@key{anim@pkg@controls}{play}[]{% - \setboolean{@anim@@controls}{true}% - \setboolean{@anim@@controls@play}{true}% -} -\define@key{anim@pkg@controls}{step}[]{% - \setboolean{@anim@@controls}{true}% - \setboolean{@anim@@controls@step}{true}% -} -\define@key{anim@pkg@controls}{stop}[]{% - \setboolean{@anim@@controls}{true}% - \setboolean{@anim@@controls@stop}{true}% -} -\define@key{anim@pkg@controls}{speed}[]{% - \setboolean{@anim@@controls}{true}% - \setboolean{@anim@@controls@speed}{true}% -} - \newboolean{@anim@@ctrlleft} \newboolean{@anim@@ctrlright} \newboolean{@anim@@ctrlcentre} \setboolean{@anim@@ctrlcentre}{true} \def\@anim@@ctrlsindent{\z@} -\define@key{anim@pkg}{controlsaligned}{% - \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil% - \setboolean{@anim@@ctrlcentre}{false}% - \ifthenelse{\equal{\@anim@tmpvar}{left}}{% - \setboolean{@anim@@ctrlleft}{true}% - \edef\@anim@@ctrlsindent{\the\@anim@tmpdima}% - }{% - \ifthenelse{\equal{\@anim@tmpvar}{right}}{% - \setboolean{@anim@@ctrlright}{true}% - \edef\@anim@@ctrlsindent{\the\@anim@tmpdima}% - }{\setboolean{@anim@@ctrlcentre}{true}}% - }% -} - \newboolean{@anim@@loop} -\setboolean{@anim@@loop}{false}% -\define@key{anim@pkg}{loop}[true]{% - \setboolean{@anim@@loop}{#1}% -} \newboolean{@anim@@autoplay} -\setboolean{@anim@@autoplay}{false} -\define@key{anim@pkg}{autoplay}[true]{% - \setboolean{@anim@@autoplay}{#1}% - \if@anim@@autoplay\setboolean{@anim@@autoresume}{false}\fi% -} \newboolean{@anim@@autoresume} -\setboolean{@anim@@autoresume}{false} -\define@key{anim@pkg}{autoresume}[true]{% - \setboolean{@anim@@autoresume}{#1}% - \if@anim@@autoresume\setboolean{@anim@@autoplay}{false}\fi% -} \newboolean{@anim@@autopause} -\setboolean{@anim@@autopause}{false} -\define@key{anim@pkg}{autopause}[true]{% - \setboolean{@anim@@autopause}{#1}% -} \newboolean{@anim@@palindrome} -\setboolean{@anim@@palindrome}{false} -\define@key{anim@pkg}{palindrome}[true]{% - \setboolean{@anim@@palindrome}{#1}% -} \gdef\@anim@@poster{0}% -\define@key{anim@pkg}{poster}[first]{% - \ifthenelse{% - \equal{#1}{first}% - }{% - \gdef\@anim@@poster{0}% - }{% - \ifthenelse{% - \equal{#1}{last}% - }{% - \gdef\@anim@@poster{-1}% - }{% - \ifthenelse{% - \equal{#1}{none}% - }{% - \gdef\@anim@@poster{-2}% - }{% - \ifnum#1<\z@\relax% - \PackageError{animate}{% - Poster frame `#1' is out-of-bounds on\MessageBreak% - input line \the\inputlineno.\MessageBreak% - Try one of `poster=first' or `poster=none'% - }{}% - \fi% - \gdef\@anim@@poster{#1}% - }% - }% - }% -} \newboolean{@anim@@step} -\setboolean{@anim@@step}{false} -\define@key{anim@pkg}{step}[true]{% - \setboolean{@anim@@step}{#1}% -} \newboolean{@anim@@draft} \ifdraft{%globally set by document class \setboolean{@anim@@draft}{true}% }{% \setboolean{@anim@@draft}{false}% -}% -\define@key{anim@pkg}{draft}[true]{% - \setboolean{@anim@@draft}{#1}% - \if@anim@export% - \setboolean{@anim@@draft}{false}% - \fi% -} -\define@key{anim@pkg}{final}[true]{% - \ifthenelse{\equal{#1}{true}}{% - \setboolean{@anim@@draft}{false}% - }{% - \setboolean{@anim@@draft}{true}% - }% } \newboolean{@anim@@nomouse} -\setboolean{@anim@@nomouse}{false} -\define@key{anim@pkg}{nomouse}[true]{% - \setboolean{@anim@@nomouse}{#1}% -} +\def\@anim@@method{\z@}%default animation method is `icon' +\def\@anim@@ftype{}% file type (extension) of graphics + +\ExplSyntaxOn +\DeclareKeys[anim@pkg]{ + width.code:n = { + \gdef\@anim@@widtharg{#1} + \ifdefined\@anim@pkgwd\else + \advance\@anim@@resizeflags by 4 + \def\@anim@pkgwd{}% + \fi% + }, + width.value_required:n = true, -%file type (extension) of graphics files to be embedded -\def\@anim@@ftype{}% -\define@key{anim@pkg}{type}{\def\@anim@@ftype{#1}}% + height.code:n = { + \gdef\@anim@@heightarg{#1} + \ifdefined\@anim@pkght\else + \advance\@anim@@resizeflags by 2 + \def\@anim@pkght{} + \fi + }, + height.value_required:n = true, -% animation method: icon vs. widget vs. ocg based -\define@key{anim@pkg}{method}{% - \ifthenelse{\equal{#1}{icon}}{% - \def\@anim@@method{\z@}% - }{% - \ifthenelse{\equal{#1}{widget}}{% - \def\@anim@@method{\@ne}% + totalheight.code:n = { + \gdef\@anim@@totheightarg{#1} + \ifdefined\@anim@pkgtht\else + \advance\@anim@@resizeflags by \@ne + \def\@anim@pkgtht{} + \fi + }, + totalheight.value_required:n = true, + + keepaspectratio.legacy_if_gset:n = @anim@@iso, + keepaspectratio.default:n = true, + + bb.code:n = {\xdef\@anim@@bb{bb=#1}}, + bb.value_required:n = true, + + viewport.code:n = {\xdef\@anim@@viewport{viewport=#1}}, + viewport.value_required:n = true, + + trim.code:n = {\xdef\@anim@@trim{trim=#1}}, + trim.value_required:n = true, + + angle.code:n = {\xdef\@anim@@angle{angle=#1}}, + angle.value_required:n = true, + + pagebox.code:n = {\xdef\@anim@@pagebox{pagebox=#1}}, + pagebox.value_required:n = true, + + clip.code:n = {}, % no-op, as embedded graphics are always + clip.default:n = true, % clipped to widget box + + hiresbb.legacy_if_gset:n = @anim@@hiresbb, + hiresbb.default:n = true, + + interpolate.legacy_if_gset:n = @anim@@interpolate, + interpolate.default:n = true, + + scale.tl_gset_x:N = \@anim@@boxscale, + scale.value_required:n = true, + + buttonsize.tl_gset:N = \@anim@@btnsize, + buttonsize.value_required:n = true, + + buttonbg.code:n = { + \global\@anim@tmpcnt=\@ne + \gdef\@anim@colour{} + \@anim@colours{#1} + \global\let\@anim@@bgcolour\@anim@colour + \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1 + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@@bg{\@anim@colour\space setgray} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@@bg{\@anim@colour\space setrgbcolor} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@@bg{\@anim@colour\space setcmykcolor} + \fi + \fi + \fi + \else% pdftex and dvipdfmx + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@@bg{\@anim@colour\space g} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@@bg{\@anim@colour\space rg} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@@bg{\@anim@colour\space k} + \fi + \fi + \fi + \fi + }, + buttonbg.value_required:n = true, + + buttonfg.code:n = { + \global\@anim@tmpcnt=\@ne + \gdef\@anim@colour{} + \@anim@@colours#1:\@nil + \global\let\@anim@@fgcolour\@anim@colour + \ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1 + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@@fg{\@anim@colour\space setgray} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@@fg{\@anim@colour\space setrgbcolor} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@@fg{\@anim@colour\space setcmykcolor} + \fi + \fi + \fi + \else% pdftex and dvipdfmx + \ifnum\@anim@tmpcnt=\@ne\relax + \xdef\@anim@@fg{\@anim@colour\space G} + \xdef\@anim@@@@fg{\@anim@colour\space g} + \else + \ifnum\@anim@tmpcnt=3\relax + \xdef\@anim@@fg{\@anim@colour\space RG} + \xdef\@anim@@@@fg{\@anim@colour\space rg} + \else + \ifnum\@anim@tmpcnt=4\relax + \xdef\@anim@@fg{\@anim@colour\space K} + \xdef\@anim@@@@fg{\@anim@colour\space k} + \fi + \fi + \fi + \fi + }, + buttonfg.value_required:n = true, + + buttonalpha.tl_gset_x:N = \@anim@@alpha, + buttonalpha.value_required:n = true, + + alttext.code:n = { + \ifthenelse{\equal{#1}{none}}{ + \gdef\@anim@@alttext{} + }{ + \xdef\@anim@@alttext{/Contents~(#1)} + } + }, + alttext.value_required:n = true, + + controls.multichoice:, + controls / all.code:n = {\@anim@pkg@controls@all}, + controls / true.code:n = {\@anim@pkg@controls@all}, + controls / on.code:n = {\@anim@pkg@controls@all}, + controls / none.code:n = {\@anim@pkg@controls@none}, + controls / false.code:n = {\@anim@pkg@controls@none}, + controls / off.code:n = {\@anim@pkg@controls@none}, + controls / play.code:n = { + \setboolean{@anim@@controls}{true} + \setboolean{@anim@@controls@play}{true} + }, + controls / step.code:n = { + \setboolean{@anim@@controls}{true} + \setboolean{@anim@@controls@step}{true} + }, + controls / stop.code:n = { + \setboolean{@anim@@controls}{true} + \setboolean{@anim@@controls@stop}{true} + }, + controls / speed.code:n = { + \setboolean{@anim@@controls}{true} + \setboolean{@anim@@controls@speed}{true} + }, + controls.default:n = all, + + controlsaligned.code:n = { + \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil + \setboolean{@anim@@ctrlcentre}{false} + \ifthenelse{\equal{\@anim@tmpvar}{left}}{ + \setboolean{@anim@@ctrlleft}{true} + \edef\@anim@@ctrlsindent{\the\@anim@tmpdima} + }{ + \ifthenelse{\equal{\@anim@tmpvar}{right}}{ + \setboolean{@anim@@ctrlright}{true} + \edef\@anim@@ctrlsindent{\the\@anim@tmpdima} + }{ + \setboolean{@anim@@ctrlcentre}{true} + \xdef\@anim@@ctrlsindent{\z@} + } + } + }, + controlsaligned.value_required:n = true, + + loop.legacy_if_gset:n = @anim@@loop, + loop.default:n = true, + + autoplay.code:n = { + \setboolean{@anim@@autoplay}{#1} + \if@anim@@autoplay\setboolean{@anim@@autoresume}{false}\fi + }, + autoplay.default:n = true, + + autoresume.code:n = { + \setboolean{@anim@@autoresume}{#1} + \if@anim@@autoresume\setboolean{@anim@@autoplay}{false}\fi + }, + autoresume.default:n = true, + + autopause.legacy_if_gset:n = @anim@@autopause, + autopause.default:n = true, + + palindrome.legacy_if_gset:n = @anim@@palindrome, + palindrome.default:n = true, + + poster.choice:, % | first | last | none + poster / first.code:n = {\gdef\@anim@@poster{0}}, + poster / last.code:n = {\gdef\@anim@@poster{-1}}, + poster / none.code:n = {\gdef\@anim@@poster{-2}}, + poster / unknown.code:n = {% frame + \ifnum#1<\z@\relax + \PackageError{animate}{ + Poster~frame~`#1'~is~out-of-bounds~on\MessageBreak + input~line~\the\inputlineno.\MessageBreak + Try~one~of~`poster=first'~or~`poster=none' + }{} + \fi + \gdef\@anim@@poster{#1} + }, + poster.default:n = first, + + step.legacy_if_gset:n = @anim@@step, + step.default:n = true, + + draft.code:n = { + \setboolean{@anim@@draft}{#1} + \if@anim@export\setboolean{@anim@@draft}{false}\fi + }, + draft.default:n = true, + + final.code:n = { + \ifthenelse{\equal{#1}{true}}{ + \setboolean{@anim@@draft}{false} }{% - \ifthenelse{\equal{#1}{ocg}}{% - \def\@anim@@method{\tw@}% - }{}% ignoring wrong input + \setboolean{@anim@@draft}{true} }% - }% -} -\define@key{anim@pkg}{useocg}[]{% - \PackageError{animate}{% - Package option `useocg' has been removed.\MessageBreak% - Use `method=ocg' instead% - }{}% + }, + final.default:n = true, + + nomouse.legacy_if_gset:n = @anim@@nomouse, + nomouse.default:n = true, + + method.choices:nn = {icon,widget,ocg} { + \ifthenelse{\equal{#1}{icon}}{ + \def\@anim@@method{\z@} + }{ + \ifthenelse{\equal{#1}{widget}}{ + \def\@anim@@method{\@ne} + }{ + \ifthenelse{\equal{#1}{ocg}}{ + \def\@anim@@method{\tw@} + }{}% ignoring wrong input + } + } + }, + method.value_required:n = true, + + type.tl_gset_x:N = \@anim@@ftype, + type.value_required:n = true, } +\ExplSyntaxOff -%default animation method is Icon based -\def\@anim@@method{\z@} +\ifnum\if@anim@dvips 1\else\if@anim@dvisvgm 1\else0\fi\fi=1 + %dvips .OR. dvisvgm + \def\@anim@@fg{0 setgray}\def\@anim@@@@fg{} +\else% pdftex and dvipdfmx + \def\@anim@@fg{0 G}\def\@anim@@@@fg{0 g} +\fi %process package options -\def\@anim@setpkgkeys#1{\setkeys{anim@pkg}{#1}} -\edef\@anim@pkgopts{{\@ptionlist{\@currname.\@currext}}} -\expandafter\@anim@setpkgkeys\@anim@pkgopts +\ProcessKeyOptions[anim@pkg] %%%%%%%%%%%%%%%%%%%%%%%% % JavaScript part diff --git a/macros/latex/contrib/animate/animate.tex b/macros/latex/contrib/animate/animate.tex index 9c1e922325..3c7df213ac 100644 --- a/macros/latex/contrib/animate/animate.tex +++ b/macros/latex/contrib/animate/animate.tex @@ -1,5 +1,5 @@ \listfiles -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % Copyright 2007--\today Alexander Grahn % % This material is subject to the LaTeX Project Public License. See @@ -10,8 +10,7 @@ \ifdefined\outputmode\outputmode=0\fi \ifdefined\pdfoutput\pdfoutput=0\fi %%%%%%% pdfmanagement-testphase %%%%%% -\RequirePackage{pdfmanagement-testphase} % load the package -\DeclareDocumentMetadata % activates the PDF management interface +\DocumentMetadata % activates the PDF management interface { %uncompress, } @@ -361,7 +360,7 @@ interpolate controls[=all | true | on] controls=(none | false | off) | {[play][,step][,stop][,speed]} \end{verbatim} -Inserts control buttons below the animation widget. Visibility of buttons can be fine-tuned through optional keys. By default, if setting `\verb+controls+' alone, all available buttons are shown, while any of `\verb+none+', `\verb+false+' or `\verb+off+' suppresses them altogether. A comma-separated selection from `\verb+play+', `\verb+step+', `\verb+stop+' and `\verb+speed+' enables corresponding pairs or groups of buttons. Such a comma list must be enclosed in braces, i.\,e. \verb+controls={..., ..., ...}+. If all buttons are shown, their meaning is as follows, from left to right: stop \& first frame, step backwards, play backwards, play forwards, step forwards, stop \& last frame, decrease speed, default speed, increase speed. Both `play' buttons are replaced by a large `pause' button while the animation is playing. +Inserts control buttons below the animation widget. Visibility of buttons can be fine-tuned through optional keys. By default, if setting `\verb+controls+' alone, all available buttons are shown, while any of `\verb+none+', `\verb+false+' or `\verb+off+' suppresses them altogether. A comma-separated selection from `\verb+play+', `\verb+step+', `\verb+stop+' and `\verb+speed+' enables corresponding pairs or groups of buttons. Such a comma list must be enclosed in braces, i.\,e. \verb+controls={play, stop}+. If all buttons are shown, their meaning is as follows, from left to right: stop \& first frame, step backwards, play backwards, play forwards, step forwards, stop \& last frame, decrease speed, default speed, increase speed. Both `play' buttons are replaced by a large `pause' button while the animation is playing. \begin{verbatim} controlsaligned=left[+] | center | right[+] \end{verbatim} diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf index a8a12f42eb..540dc7052e 100644 Binary files a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf and b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf differ diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.tex b/macros/latex/contrib/create-theorem/create-theorem-doc.tex index e041c1dad1..6ac3cb8604 100644 --- a/macros/latex/contrib/create-theorem/create-theorem-doc.tex +++ b/macros/latex/contrib/create-theorem/create-theorem-doc.tex @@ -39,6 +39,8 @@ texcsstyle =* \color{code-main}, moretexcs = { + ExplSyntaxOn,ExplSyntaxOff, + NewDocumentCommand,NewDocumentEnvironment, cref,crefname, Cref,Crefname, crefformat, @@ -47,9 +49,11 @@ crefthemark, selectlanguage, theoremstyle, + proofname, NameTheorem, CreateTheorem, SetTheorem, + SetTheoremBinding, } } \lstset{% LaTeX3 commands @@ -57,6 +61,9 @@ texcsstyle =* \color{code-expl3}, moretexcs = { + tl_new:N, + tl_set:Nn, + cs_undefine:c, } } \lstnewenvironment{code}{\setstretch{1.05}\LocallyStopLineNumbers}{\ResumeLineNumbers\vspace{-.3\baselineskip}\vspace{-.5\parskip}} @@ -97,7 +104,7 @@ \begin{document} -\def\PackageVersion{2022/07/31} +\def\PackageVersion{2022/08/04} \title{\createtheorempackage{}\\\smallskip\itshape Initializing theorem-like environments with multilingual support} \author{Jinwen XU} @@ -357,6 +364,12 @@ Supported keys are: \end{itemize} \end{itemize} +\medskip +In some cases, you may define an internal environment (for example, a generic version) first and then use it to define the final environment. You may wish to hide the internal names from the users so that they can use \lstinline|\SetTheorem| with the name of the final environments. This can be done with the following command: +\begin{code} +\SetTheoremBinding{(*\meta{list of the name of environments}*)}{(*\meta{the environment to bind with}*)} +\end{code} + \bigskip \begin{center} \itshape @@ -366,9 +379,9 @@ Supported keys are: \section{Examples} -\subsection{The environment \texttt{idea}} +\subsection{The environment {\normalfont\texttt{idea}}} -First, let's getting familiar with these two commands by creating the environment \texttt{idea}. +First, let's getting familiar with these two commands by creating the environment {\normalfont\texttt{idea}}. \begin{code} \NameTheorem{idea}{ @@ -409,16 +422,16 @@ This is not exciting at all. Now, let's say we are writing a bilingual note in E } \end{code} -With this, if you use \lstinline|\selectlanguage{french}|, the \texttt{idea} environment shall be automatically displayed as \textquote{Idée}. And if you \lstinline|\crefthe| it, the definite article and the name showed up properly just as expected. +With this, if you use \lstinline|\selectlanguage{french}|, the {\normalfont\texttt{idea}} environment shall be automatically displayed as \textquote{Idée}. And if you \lstinline|\crefthe| it, the definite article and the name showed up properly just as expected. \medskip -Next we shall deal with the numbering problem. Let's continue to use this environment \texttt{idea} for demonstration -- suppose that we have set the names up with \lstinline|\NameTheorem|. +Next we shall deal with the numbering problem. Let's continue to use this environment {\normalfont\texttt{idea}} for demonstration -- suppose that we have set the names up with \lstinline|\NameTheorem|. \subsection{Let's play with numbering} Remember the exercise I left you in the previous section? Let's do it together now. -\subsubsection{Numbered \texttt{idea} and numbered \texttt{idea*}} +\subsubsection{Numbered {\normalfont\texttt{idea}} and numbered {\normalfont\texttt{idea*}}} This is easy, \commandoption{copy existed} suffices: @@ -427,7 +440,7 @@ This is easy, \commandoption{copy existed} suffices: \CreateTheorem{idea*}{(*\commandoption{copy existed}*) = idea} \end{code} -\subsubsection{Numbered \texttt{idea} and unnumbered \texttt{idea*}} +\subsubsection{Numbered {\normalfont\texttt{idea}} and unnumbered {\normalfont\texttt{idea*}}} This is the easiest, \commandoption{create starred version} will do. @@ -438,11 +451,11 @@ This is the easiest, \commandoption{create starred version} will do. } \end{code} -Notice that you cannot use \lstinline|\CreateTheorem{idea*}{|\commandoption{numberless}\lstinline|}| here, since we don't have names defined for \texttt{idea*}. +Notice that you cannot use \lstinline|\CreateTheorem{idea*}{|\commandoption{numberless}\lstinline|}| here, since we don't have names defined for {\normalfont\texttt{idea*}}. -\subsubsection{Unnumbered \texttt{idea} and numbered \texttt{idea*}} +\subsubsection{Unnumbered {\normalfont\texttt{idea}} and numbered {\normalfont\texttt{idea*}}} -This is a bit tricky: by default we can only create numbered \texttt{idea} or unnumbered \texttt{idea*}, and the question is how to switch them. We shall need an intermediary. +This is a bit tricky: by default we can only create numbered {\normalfont\texttt{idea}} or unnumbered {\normalfont\texttt{idea*}}, and the question is how to switch them. We shall need an intermediary. \begin{code} \CreateTheorem{idea}{(*\commandoption{create starred version}*)} @@ -451,9 +464,9 @@ This is a bit tricky: by default we can only create numbered \texttt{idea} or un \CreateTheorem{idea}{(*\commandoption{copy existed}*) = idea-temp} \end{code} -\subsubsection{Unnumbered \texttt{idea} and unnumbered \texttt{idea*}} +\subsubsection{Unnumbered {\normalfont\texttt{idea}} and unnumbered {\normalfont\texttt{idea*}}} -This is the combination of the first two cases --- we need to create \texttt{idea*} first and then copy it to \texttt{idea}: +This is the combination of the first two cases --- we need to create {\normalfont\texttt{idea*}} first and then copy it to {\normalfont\texttt{idea}}: \begin{code} \CreateTheorem{idea}{(*\commandoption{create starred version}*)} @@ -461,7 +474,7 @@ This is the combination of the first two cases --- we need to create \texttt{ide \end{code} \smallskip -In each case, the two environments \texttt{idea} and \texttt{idea*} share the same set of names. +In each case, the two environments {\normalfont\texttt{idea}} and {\normalfont\texttt{idea*}} share the same set of names. \subsection{The \emph{proofless} version -- theorems with a Q.E.D. symbol} @@ -473,7 +486,52 @@ Sometimes you may encounter a theorem without a proof, in which case you might w \CreateTheorem { theorem+* } { (*\commandoption{copy existed}*) = theorem*, (*\commandoption{qed}*) } \end{code} -The code above defines two new environments \lstinline|theorem+| and \lstinline|theorem+*| in addition to \lstinline|theorem| and \lstinline|theorem*|. The \lstinline|+| version behaves exactly the same as the usual version, except it has a Q.E.D. symbol. +The code above defines two new environments \lstinline|theorem+| and \lstinline|theorem+*| in addition to \lstinline|theorem| and \lstinline|theorem*|. The \lstinline|+| version behaves exactly the same as the usual version, except that it has a Q.E.D. symbol. + +\subsection{Redefine the {\normalfont\texttt{proof}} environment} + +If you wish to have a {\normalfont\texttt{proof}} environment with a custom theorem style, or to have a numbered version {\normalfont\texttt{proof*}} of it, the following code could be helpful: + +\begin{code} +\ExplSyntaxOn + +\newcounter { proof } +\tl_new:N \l_mymodule_name_of_proof_tl +\CreateTheorem { proof_inner } + { + (*\commandoption{name}*) = { (*\commandoption{heading}*) = { \l_mymodule_name_of_proof_tl } }, + (*\commandoption{create-starred-version}*), + (*\commandoption{style}*) = remark, + (*\commandoption{qed}*), + (*\commandoption{shared-counter}*) = proof, + } + +\cs_undefine:c { proof } +\cs_undefine:c { endproof } +\NewDocumentEnvironment { proof } { O{\proofname} } + { + \tl_set:Nn \l_mymodule_name_of_proof_tl { #1 } + \begin { proof_inner* } + } + { + \end { proof_inner* } + } +\NewDocumentEnvironment { proof* } { O{\proofname} } + { + \tl_set:Nn \l_mymodule_name_of_proof_tl { #1 } + \begin { proof_inner } + } + { + \end { proof_inner } + } + +\SetTheoremBinding { proof } { proof_inner* } +\SetTheoremBinding { proof* } { proof_inner } + +\ExplSyntaxOff +\end{code} + +It defines an environment \lstinline|proof_inner| (with its starred variant) with theorem style \lstinline|remark| to mimic the default style (you are welcome to use your own style here), and with the name to be a variable which is latter used to define the actual environments \lstinline|proof| and \lstinline|proof*|. These two environments are defined in such a way that \lstinline|proof| is the usual unnumbered version and \lstinline|proof*| is the numbered version. The \lstinline|\SetTheoremBinding| lines are to ensure that user can directly write \lstinline|\SetTheorem{proof}| rather than \lstinline|\SetTheorem{proof_inner}|. \bigskip diff --git a/macros/latex/contrib/create-theorem/create-theorem.sty b/macros/latex/contrib/create-theorem/create-theorem.sty index 329217b5b3..411d7f6873 100644 --- a/macros/latex/contrib/create-theorem/create-theorem.sty +++ b/macros/latex/contrib/create-theorem/create-theorem.sty @@ -12,7 +12,7 @@ \NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage {create-theorem} - {2022/07/31} {} + {2022/08/04} {} {Initializing theorem-like environments with multilingual support} \keys_define:nn { create-theorem } @@ -702,6 +702,8 @@ \bool_new:N \l__crthm_creating_apply_style_bool \tl_new:N \l__crthm_creating_apply_style_tl +\bool_new:N \l__crthm_creating_qed_bool +\tl_new:N \l__crthm_creating_qed_tl \bool_new:N \l__crthm_creating_numberless_bool \bool_new:N \l__crthm_creating_create_starred_bool \bool_new:N \l__crthm_creating_copy_existed_bool @@ -733,15 +735,8 @@ , apply-style .value_required:n = true , apply style .meta:n = { style = { #1 } } , apply style .value_required:n = true - , qed .code:n = { - \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { #1 } } \pushQED{\qed} } - \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /end } { crthm } { \popQED } - \bool_if:NT \l__crthm_creating_create_starred_bool - { - \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { #1 } } \pushQED{\qed} } - \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /end } { crthm } { \popQED } - } - } + , qed .code:n = { \bool_set_true:N \l__crthm_creating_qed_bool + \tl_set:Nn \l__crthm_creating_qed_tl { #1 } } , qed .default:n = \c__crthm_original_qedsymbol_tl , qed~symbol .meta:n = { qed = #1 } , qed~symbol .default:n = \c__crthm_original_qedsymbol_tl @@ -885,6 +880,17 @@ \end{ #1 _crthm_regional } } \keys_set:nn { create-theorem-creating / counter-management } { #2 } + + \bool_if:NT \l__crthm_creating_qed_bool + { + \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { \l__crthm_creating_qed_tl } } \pushQED{\qed} } + \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /end } { crthm } { \popQED } + \bool_if:NT \l__crthm_creating_create_starred_bool + { + \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { \l__crthm_creating_qed_tl } } \pushQED{\qed} } + \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /end } { crthm } { \popQED } + } + } } { \msg_error:nnn { create-theorem } { env-not-named } { #1 } diff --git a/macros/latex/contrib/media4svg/ChangeLog b/macros/latex/contrib/media4svg/ChangeLog index 9f427a00d5..5a25d497a9 100644 --- a/macros/latex/contrib/media4svg/ChangeLog +++ b/macros/latex/contrib/media4svg/ChangeLog @@ -1,3 +1,11 @@ +2022-08-04 + * v0.8 + * fix: option processing acc. to new LaTeX format 22-06-01 + +2022-05-18 + * v0.7 + * fix: let PgUp/PgDown events propagate to parent + 2022-05-18 * v0.7 * fix: let PgUp/PgDown events propagate to parent diff --git a/macros/latex/contrib/media4svg/README.md b/macros/latex/contrib/media4svg/README.md index cf5686653d..5884f5a2ed 100644 --- a/macros/latex/contrib/media4svg/README.md +++ b/macros/latex/contrib/media4svg/README.md @@ -1,6 +1,6 @@ # The `media4svg` LaTeX Package -Version 0.7, 2022/05/18 +Version 0.8, 2022/08/04 © 2020--today, Alexander Grahn diff --git a/macros/latex/contrib/media4svg/example/beamer-example-1.svg b/macros/latex/contrib/media4svg/example/beamer-example-1.svg index bf5f1909ce..ce6ee99695 100644 --- a/macros/latex/contrib/media4svg/example/beamer-example-1.svg +++ b/macros/latex/contrib/media4svg/example/beamer-example-1.svg @@ -9,20 +9,20 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());}; @@ -33,24 +33,24 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Presentationexamplewithembeddedvideo -UseaWebbrowserandpress - +Presentationexamplewithembeddedvideo +UseaWebbrowserandpress + - + - - + + -F11 +F11 @@ -61,25 +61,25 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -AlexG18thMay2022 - -Navigatewith - +AlexG4thAugust2022 + +Navigatewith + - + - - + + -PageUp +PageUp @@ -90,23 +90,23 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -& - +& + - + - - + + -PageDn +PageDn @@ -117,23 +117,23 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -,toggleFull-Screenwith - +,toggleFull-Screenwith + - + - - + + -F11 +F11 @@ -144,12 +144,12 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -.Tobuildthispresentationfromthesource,run: -dvilualatexbeamer-exampledvilualatexbeamer-exampledvisvgm--bbox=papersize--font-format=woff2--zoom=-1--page=---output=%f-%0p.svg\beamer-example - +.Tobuildthispresentationfromthesource,run: +dvilualatexbeamer-exampledvilualatexbeamer-exampledvisvgm--bbox=papersize--font-format=woff2--zoom=-1--page=---output=%f-%0p.svg\beamer-example + - - + + \ No newline at end of file diff --git a/macros/latex/contrib/media4svg/example/beamer-example-2.svg b/macros/latex/contrib/media4svg/example/beamer-example-2.svg index 6f57ce4f4a..dd5135d555 100644 --- a/macros/latex/contrib/media4svg/example/beamer-example-2.svg +++ b/macros/latex/contrib/media4svg/example/beamer-example-2.svg @@ -9,16 +9,16 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());}; @@ -29,15 +29,15 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Videofile -Embeddedlocalvideofilefrompackage -mwe -\includemedia[width=24em,height=13.5em]{}{example-movie.mp4} - +Videofile +Embeddedlocalvideofilefrompackage +mwe +\includemedia[width=24em,height=13.5em]{}{example-movie.mp4} + - + \ No newline at end of file diff --git a/macros/latex/contrib/media4svg/example/beamer-example-3.svg b/macros/latex/contrib/media4svg/example/beamer-example-3.svg index 3798755a18..06496d9d97 100644 --- a/macros/latex/contrib/media4svg/example/beamer-example-3.svg +++ b/macros/latex/contrib/media4svg/example/beamer-example-3.svg @@ -9,14 +9,14 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());}; @@ -27,25 +27,25 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Remotevideo -VideostreamedfromURL -\includemedia[width=24em,height=13.5em,url]{}{%https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm} - +Remotevideo +VideostreamedfromURL +\includemedia[width=24em,height=13.5em,url]{}{%https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm} + - + - - + + - - + + \ No newline at end of file diff --git a/macros/latex/contrib/media4svg/example/beamer-example-4.svg b/macros/latex/contrib/media4svg/example/beamer-example-4.svg index 9ca065a1ab..c3f79aef3e 100644 --- a/macros/latex/contrib/media4svg/example/beamer-example-4.svg +++ b/macros/latex/contrib/media4svg/example/beamer-example-4.svg @@ -9,20 +9,20 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());}; @@ -33,30 +33,30 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Playercontrol -Thestandardplayercontrols(option -controls -’)takealotofspaceofthemediadisplay.Therefore,itisnotrecommendedtoenablethem.Nevertheless,interactivityisstillprovidedthroughtouchorleftmousebuttonclick,andthroughthekeyboardassummarizedinthetable.Clickonthemediadisplaytostartplayback.Topauseplayback,presstheleftmousebuttononthemediadisplay.Releaseittoresumeplayback.Topauseplaybackpermanently,presstheleftmousebuttononthemediadisplayandmovethemouseoutwhilekeepingthebuttonpressed. - -CommandShortcut - -TogglePlay/Pause - +Playercontrol +Thestandardplayercontrols(option +controls +’)takealotofspaceofthemediadisplay.Therefore,itisnotrecommendedtoenablethem.Nevertheless,interactivityisstillprovidedthroughtouchorleftmousebuttonclick,andthroughthekeyboardassummarizedinthetable.Clickonthemediadisplaytostartplayback.Topauseplayback,presstheleftmousebuttononthemediadisplay.Releaseittoresumeplayback.Topauseplaybackpermanently,presstheleftmousebuttononthemediadisplayandmovethemouseoutwhilekeepingthebuttonpressed. + +CommandShortcut + +TogglePlay/Pause + - + - - + + -Space +Space @@ -67,34 +67,34 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Increasevolume - +Increasevolume + - + - - + + - + - - - - + + + + - + @@ -115,34 +115,34 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Decreasevolume - +Decreasevolume + - + - - + + - + - - - - + + + + - + @@ -163,23 +163,23 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Unmuteaudio - +Unmuteaudio + - + - - + + -Ctrl +Ctrl @@ -190,34 +190,34 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -+ - ++ + - + - - + + - + - - - - + + + + - + @@ -238,23 +238,23 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Muteaudio - +Muteaudio + - + - - + + -Ctrl +Ctrl @@ -265,34 +265,34 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -+ - ++ + - + - - + + - + - - - - + + + + - + @@ -313,23 +313,23 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -ToggleFull-Screen - +ToggleFull-Screen + - + - - + + -F11 +F11 @@ -340,38 +340,38 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} - -CommandShortcut - -Seekback1 -% - + +CommandShortcut + +Seekback1 +% + - + - - + + - + - - - - + + + + - + @@ -392,35 +392,35 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Seekforward1 -% - +Seekforward1 +% + - + - - + + - + - - - - + + + + - + @@ -441,24 +441,24 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Seekback10 -% - +Seekback10 +% + - + - - + + -Ctrl +Ctrl @@ -469,34 +469,34 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -+ - ++ + - + - - + + - + - - - - + + + + - + @@ -517,24 +517,24 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Seekforward10 -% - +Seekforward10 +% + - + - - + + -Ctrl +Ctrl @@ -545,34 +545,34 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -+ - ++ + - + - - + + - + - - - - + + + + - + @@ -593,23 +593,23 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Seektobeginning - +Seektobeginning + - + - - + + -Home +Home @@ -620,23 +620,23 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} -Seektoend - +Seektoend + - + - - + + -End +End @@ -648,9 +648,9 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px} - - + + - + \ No newline at end of file diff --git a/macros/latex/contrib/media4svg/example/beamer-example.tex b/macros/latex/contrib/media4svg/example/beamer-example.tex index c00834d218..5597c404d4 100644 --- a/macros/latex/contrib/media4svg/example/beamer-example.tex +++ b/macros/latex/contrib/media4svg/example/beamer-example.tex @@ -1,8 +1,7 @@ \documentclass[dvisvgm,hypertex,aspectratio=169]{beamer} -\usepackage[british]{babel} \usefonttheme{serif} -\usepackage[T1]{fontenc} +\usepackage[british]{babel} \usepackage{media4svg} \usepackage{menukeys,siunitx,calc} diff --git a/macros/latex/contrib/media4svg/media4svg.sty b/macros/latex/contrib/media4svg/media4svg.sty index 58508dc662..4a3396f10a 100644 --- a/macros/latex/contrib/media4svg/media4svg.sty +++ b/macros/latex/contrib/media4svg/media4svg.sty @@ -23,24 +23,13 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} +\def\g@msvg@date@tl{2022/08/04} +\def\g@msvg@version@tl{0.8} -\def\g@msvg@date@tl{2022/05/18} -\def\g@msvg@version@tl{0.7} - -\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{media4svg}{\g@msvg@date@tl}{\g@msvg@version@tl} {multimedia inclusion with dvisvgm} -\sys_if_output_pdf:T{ - \PackageError{media4svg}{ - Wrong~output~format~(PDF).\MessageBreak - This~package~only~works~with~the~`dvisvgm'~backend.\MessageBreak - A~TeX~engine~must~be~used~that~produces\MessageBreak - DVI~or~XDV~output - }{}% -} - \tl_gset_eq:NN\g_msvg_date_tl\g@msvg@date@tl \tl_gset_eq:NN\g_msvg_version_tl\g@msvg@version@tl @@ -50,7 +39,6 @@ perhaps~it~is~spelled~incorrectly. } -\bool_new:N\g_msvg_dvisvgm_bool \bool_new:N\g_msvg_pkgdraft_bool \bool_new:N\g_msvg_pkgembed_bool \bool_gset_true:N\g_msvg_pkgembed_bool @@ -68,13 +56,10 @@ \tl_gset:Nn\g_msvg_pkgmtype_tl{audio/mpeg} \keys_define:nn{media4svg}{ - dvisvgm .choice:, - dvisvgm / true .code:n = { - \bool_gset_true:N\g_msvg_dvisvgm_bool -% \PassOptionsToPackage{dvisvgm}{pdfbase} + dvisvgm .code:n = { + \PassOptionsToPackage{dvisvgm}{pdfbase} }, - dvisvgm / false .code:n = {\bool_gset_false:N\g_msvg_dvisvgm_bool}, - dvisvgm .default:n = {true}, + dvisvgm .value_forbidden:n = true, draft .bool_gset:N = \g_msvg_pkgdraft_bool, @@ -145,13 +130,25 @@ \msg_error:nnx{media4svg}{unknown~package~option}{\l_keys_key_tl} } } -\ProcessKeysOptions{media4svg} +\ProcessKeyOptions[media4svg] + +\RequirePackage{pdfbase} + +\sys_if_output_pdf:T{ + \PackageError{media4svg}{ + Wrong~output~format~(PDF).\MessageBreak + This~package~only~works~with~the~`dvisvgm'~backend.\MessageBreak + A~TeX~engine~must~be~used~that~produces\MessageBreak + DVI~or~XDV~output + }{}% +} \msg_set:nnnn{media4svg}{missing~driver~option}{Global~option~`dvisvgm'~no~set.}{ This~package~only~works~with~the~`dvisvgm'~backend.\\ - Set~`dvisvgm'~as~documentclass~option. + Set~`dvisvgm'~as~a~package~or~documentclass~option. } -\bool_if:NF\g_msvg_dvisvgm_bool{ + +\bool_if:NF\g_pbs_dvisvgm_bool{ \msg_error:nn{media4svg}{missing~driver~option} } diff --git a/macros/latex/contrib/media9/ChangeLog b/macros/latex/contrib/media9/ChangeLog index 455df93cc4..a0a11296e1 100644 --- a/macros/latex/contrib/media9/ChangeLog +++ b/macros/latex/contrib/media9/ChangeLog @@ -1,3 +1,8 @@ +2022-08-04 + * v1.25 : media9.sty + * v0.55 : pdfbase.sty + * fix : pkg option processing acc. to new LaTeX format 22-06-01 + 2022-03-18 * v1.24 : media9.sty * v0.54 : pdfbase.sty diff --git a/macros/latex/contrib/media9/doc/media9.pdf b/macros/latex/contrib/media9/doc/media9.pdf index 9f4ede4536..2b85529903 100644 Binary files a/macros/latex/contrib/media9/doc/media9.pdf and b/macros/latex/contrib/media9/doc/media9.pdf differ diff --git a/macros/latex/contrib/media9/doc/media9.tex b/macros/latex/contrib/media9/doc/media9.tex index d7acd9d0e3..a593d7bfe9 100644 --- a/macros/latex/contrib/media9/doc/media9.tex +++ b/macros/latex/contrib/media9/doc/media9.tex @@ -5,16 +5,15 @@ % for the details of that license. % \listfiles -%%%%%%% pdfmanagement-testphase %%%%%% -\RequirePackage{pdfmanagement-testphase} % load the package -\DeclareDocumentMetadata % activates the PDF management interface +%%%%%%%% pdfmanagement-testphase %%%%%% +\DocumentMetadata % activates the PDF management interface { %uncompress, } -%%%%%% /pdfmanagement-testphase %%%%%% +%%%%%%% /pdfmanagement-testphase %%%%%% \documentclass[a4paper]{article} \frenchspacing -\usepackage[utf8]{inputenc} +%\usepackage[utf8]{inputenc} \usepackage{textcomp} \usepackage[attachfiles]{media9} %\usepackage[draft]{media9} @@ -25,8 +24,8 @@ \usepackage[main=UKenglish,nil]{babel} \usepackage{graphicx} \usepackage{color} -\usepackage[T1]{fontenc} -%\usepackage{lmodern} +%\usepackage[T1]{fontenc} +%%\usepackage{lmodern} %\usepackage[scaled=0.85]{luximono} \usepackage[tt=false]{libertine} %override beramono (doesn't look like tt font) \usepackage[libertine]{newtxmath} @@ -40,7 +39,7 @@ \usepackage{hypcap} \def\keywords{embed flash movie LaTeX pdf 3d include sound swf mp3 video mp4 h.264 aac slideshow image gallery flv audio multimedia streamed media rtmp YouTube animation JavaScript pdfLaTeX dvips ps2pdf dvipdfmx XeLaTeX u3d prc Adobe Reader Foxit RichMedia annotation LuaLaTeX} \hypersetup{ - bookmarksnumbered,linktocpage,breaklinks, + bookmarksnumbered,linktocpage,%breaklinks, pdftitle={The media9 Package}, pdfsubject={Documentation}, pdfauthor={Alexander Grahn}, diff --git a/macros/latex/contrib/media9/media9.sty b/macros/latex/contrib/media9/media9.sty index 2c4db16dc2..c1e00febb4 100644 --- a/macros/latex/contrib/media9/media9.sty +++ b/macros/latex/contrib/media9/media9.sty @@ -39,26 +39,25 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} +\def\g@mix@date@tl{2022/08/04} +\def\g@mix@version@tl{1.25} -\def\g@mix@date@tl{2022/03/18} -\def\g@mix@version@tl{1.24} - -\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl} {acrobat-9/X~compatible~media} \tl_gset_eq:NN\g_mix_date_tl\g@mix@date@tl \tl_gset_eq:NN\g_mix_version_tl\g@mix@version@tl -%package options +% package options -%unknown package option error message \msg_set:nnnn{media9}{unknown~package~option}{Unknown~package~option~`#1'.}{ Package option~'#1'~is~unknown;\\ perhaps~it~is~spelled~incorrectly. } +\msg_set:nnn{media9}{generic~msg}{#1\\#2} + \bool_new:N\g_mix_pkgattach_bool \bool_new:N\g_mix_dvipdfmx_bool \bool_new:N\g_mix_pkgdraft_bool @@ -112,15 +111,23 @@ } \keys_define:nn{media9}{ - xetex .code:n = {}, %dummy + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, - dvipdfmx .choice:, - dvipdfmx / true .code:n = { - \bool_gset_true:N\g_mix_dvipdfmx_bool + xetex .code:n = {}, + xetex .value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, + + dvipdfmx .code:n = { \PassOptionsToPackage{dvipdfmx}{pdfbase} + \PassOptionsToPackage{dvipdfmx}{ocgbase} }, - dvipdfmx / false .code:n = {\bool_gset_false:N\g_mix_dvipdfmx_bool}, - dvipdfmx .default:n = {true}, + dvipdfmx .value_forbidden:n = true, bigfiles .choice:, bigfiles / true .code:n = { @@ -290,11 +297,21 @@ \msg_error:nnx{media9}{unknown~package~option}{\l_keys_key_tl} } } -\ProcessKeysOptions{media9} -\sys_if_engine_xetex:T{\bool_gset_true:N\g_mix_dvipdfmx_bool} +\ProcessKeyOptions[media9] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{pdfbase} + +\bool_gset_eq:NN\g_mix_dvipdfmx_bool\g_pbs_dvipdfmx_bool + +\bool_if:NT\g_pbs_dvisvgm_bool{ + \msg_error:nnnn{media9}{generic~msg}{ + Package~`media9'~is~incompatible~with~the~`dvisvgm'~backend. + }{ + Use~package~`media4svg'~instead. + } +} + %aliases for commands from pdfbase.sty \cs_set_eq:NN\mix_pdfobj:nnn \pbs_pdfobj:nnn \cs_set_eq:NN\mix_pdfannot:nnnn\pbs_pdfannot:nnnn @@ -2429,26 +2446,25 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} +\def\g@mix@date@tl{2022/08/04} +\def\g@mix@version@tl{1.25} -\def\g@mix@date@tl{2022/03/18} -\def\g@mix@version@tl{1.24} - -\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl} {acrobat-9/X compatible media} \tl_gset_eq:NN\g_mix_date_tl\g@mix@date@tl \tl_gset_eq:NN\g_mix_version_tl\g@mix@version@tl -%package options +% package options -%unknown package option error message \msg_set:nnnn{media9}{unknown~package~option}{Unknown~package~option~`#1'.}{ Package option~'#1'~is~unknown;\\ perhaps~it~is~spelled~incorrectly. } +\msg_set:nnn{media9}{generic~msg}{#1\\#2} + \bool_new:N\g_mix_pkgattach_bool \bool_new:N\g_mix_dvipdfmx_bool \bool_new:N\g_mix_pkgdraft_bool @@ -2502,15 +2518,23 @@ } \keys_define:nn{media9}{ - xetex .code:n = {}, %dummy + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, - dvipdfmx .choice:, - dvipdfmx / true .code:n = { - \bool_gset_true:N\g_mix_dvipdfmx_bool + xetex .code:n = {}, + xetex .value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, + + dvipdfmx .code:n = { \PassOptionsToPackage{dvipdfmx}{pdfbase} + \PassOptionsToPackage{dvipdfmx}{ocgbase} }, - dvipdfmx / false .code:n = {\bool_gset_false:N\g_mix_dvipdfmx_bool}, - dvipdfmx .default:n = {true}, + dvipdfmx .value_forbidden:n = true, bigfiles .choice:, bigfiles / true .code:n = { @@ -2680,11 +2704,21 @@ \msg_error:nnx{media9}{unknown~package~option}{\l_keys_key_tl} } } -\ProcessKeysOptions{media9} -\sys_if_engine_xetex:T{\bool_gset_true:N\g_mix_dvipdfmx_bool} +\ProcessKeyOptions[media9] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{pdfbase} + +\bool_gset_eq:NN\g_mix_dvipdfmx_bool\g_pbs_dvipdfmx_bool + +\bool_if:NT\g_pbs_dvisvgm_bool{ + \msg_error:nnnn{media9}{generic~msg}{ + Package~`media9'~is~incompatible~with~the~`dvisvgm'~backend. + }{ + Use~package~`media4svg'~instead. + } +} + %aliases for commands from pdfbase.sty \cs_set_eq:NN\mix_pdfobj:nnn \pbs_pdfobj:nnn \cs_set_eq:NN\mix_pdfannot:nnnn\pbs_pdfannot:nnnn diff --git a/macros/latex/contrib/media9/pdfbase.sty b/macros/latex/contrib/media9/pdfbase.sty index a5cc1dcb44..67ff708ad5 100644 --- a/macros/latex/contrib/media9/pdfbase.sty +++ b/macros/latex/contrib/media9/pdfbase.sty @@ -156,15 +156,95 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} +\def\g@pbs@date@tl{2022/08/04} +\def\g@pbs@version@tl{0.55} -\def\g@pbs@date@tl{2022/03/18} -\def\g@pbs@version@tl{0.54} - -\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl} {driver~independent~access~to~low-level~PDF~features} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% package options +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{ + Package option~'#1'~is~unknown;\\ + perhaps~it~is~spelled~incorrectly. +} + +\bool_new:N\g_pbs_pkgbigfiles_bool +\bool_new:N\g_pbs_dvipdfmx_bool +\bool_new:N\g_pbs_dvisvgm_bool +\str_new:N\g_pbs_backend_str + +\keys_define:nn{pdfbase}{ + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, + + dvipdfmx .code:n = { + \str_gset:Nn\g_pbs_backend_str{dvipdfmx} + }, + dvipdfmx .value_forbidden:n = true, + + dvisvgm .code:n = { + \str_gset:Nn\g_pbs_backend_str{dvisvgm} + }, + dvisvgm .value_forbidden:n = true, + + bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool, + + unknown .code:n = { + \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl} + } +} +\ProcessKeyOptions[pdfbase] + +% ensure that backend code is loaded +% possible values for \c_sys_backend_str: pdftex, luatex, xetex, dvips, dvipdfmx, dvisvgm +\cs_if_exist:NF\c_sys_backend_str{\sys_load_backend:n{}} + +\sys_if_output_pdf:TF{ % this excludes dvipdfmx, dvisvgm + \bool_gset_false:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool +}{ + \str_case_e:nnF{\g_pbs_backend_str}{ % pdfbase options have precedence + {dvipdfmx}{ + \bool_gset_true:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool + } + {dvisvgm}{ + \bool_gset_false:N\g_pbs_dvipdfmx_bool + \bool_gset_true:N\g_pbs_dvisvgm_bool + } + }{ % otherwise let the L3 backend code decide + \str_case_e:nn{\c_sys_backend_str}{ + {dvisvgm}{ + \bool_gset_false:N\g_pbs_dvipdfmx_bool + \bool_gset_true:N\g_pbs_dvisvgm_bool + } + {dvipdfmx}{ + \bool_gset_true:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool + } + } + } +} + +\sys_if_engine_xetex:T{ + \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \int_new:N\g_pbs_page_int %abs. page counter %creating global definitions @@ -172,8 +252,7 @@ \msg_set:nnn{pdfbase}{rerun}{Rerun~to~get~internal~references~right!} -%LaTeX2e wrapper -\cs_new_nopar:Npn\pbs@seq@push@cx#1#2{ +\cs_new_protected_nopar:Npn\pbs@seq@push@cx#1#2{ \seq_if_exist:cF{#1}{\seq_new:c{#1}} \seq_gput_right:cx{#1}{#2} } @@ -191,6 +270,8 @@ \seq_new:N\g_pbs_bop_seq \seq_new:N\g_pbs_eop_seq +\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env +\bool_new:N\g_pbs_ocgbase_loaded_bool \AtBeginDocument{ \iow_now:Nx\@mainaux{ \token_to_str:N\providecommand\token_to_str:N\pbs@newkey[2]{} @@ -198,65 +279,14 @@ \iow_now:Nx\@mainaux{ \token_to_str:N\providecommand\token_to_str:N\pbs@seq@push@cx[2]{} } -} - -%%%%%%%%%%%%%%%%% -%package options -%%%%%%%%%%%%%%%%% -%unknown package option error message -\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{ - Package option~'#1'~is~unknown;\\ - perhaps~it~is~spelled~incorrectly. -} - -\bool_new:N\g_pbs_pkgbigfiles_bool -\bool_new:N\g_pbs_dvipdfmx_bool -\bool_new:N\g_pbs_dvisvgm_bool -\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env -\AtBeginDocument{ \cs_if_exist:NT\landscape{% \tl_put_right:Nn\landscape{\bool_gset_true:N\g_pbs_lscape_bool} \tl_put_left:Nn\endlandscape{\bool_gset_false:N\g_pbs_lscape_bool} } + \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{} } -\keys_define:nn{pdfbase}{ - xetex .code:n = {}, %dummy, we use engine test instead - - dvipdfmx .choice:, - dvipdfmx / true .code:n = { - \bool_gset_true:N\g_pbs_dvipdfmx_bool - \bool_gset_false:N\g_pbs_dvisvgm_bool - }, - dvipdfmx / false .code:n = {\bool_gset_false:N\g_pbs_dvipdfmx_bool}, - dvipdfmx .default:n = {true}, - - dvisvgm .choice:, - dvisvgm / true .code:n = { - \bool_gset_true:N\g_pbs_dvisvgm_bool - \bool_gset_false:N\g_pbs_dvipdfmx_bool - }, - dvisvgm / false .code:n = {\bool_gset_false:N\g_pbs_dvisvgm_bool}, - dvisvgm .default:n = {true}, - - bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool, - - unknown .code:n = { - \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl} - } -} -\ProcessKeysOptions{pdfbase} - -\sys_if_output_pdf:T{ - \bool_gset_false:N\g_pbs_dvipdfmx_bool - \bool_gset_false:N\g_pbs_dvisvgm_bool -} - -\sys_if_engine_xetex:T{ - \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool} -} - -\cs_new_nopar:Nn\pbs_insert_properties_entry:{} +\cs_new_protected_nopar:Nn\pbs_insert_properties_entry:{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %commands for creating PDF objects, annots etc. @@ -281,7 +311,7 @@ \cs_set_protected:Npn\pdflastobj{\numexpr\pdffeedback~lastobj\relax} \cs_set_protected:Npn\pdflastannot{\numexpr\pdffeedback~lastannot\relax} \cs_set:Npn\pdfpageref{\pdffeedback~pageref} - \cs_set:Npx\pdfpageresources{\pdfvariable~pageresources} + \cs_set_protected:Npx\pdfpageresources{\pdfvariable~pageresources} \cs_set_eq:NN\pdfximage\saveimageresource \cs_set_eq:NN\pdfrefximage\useimageresource \cs_set_eq:NN\pdflastximage\lastsavedimageresourceindex @@ -462,7 +492,7 @@ \cs_new_protected_nopar:Nn\pbs_pdfemc:{\pdfliteral~page~{EMC}} %inserts /Properties <<...>> entry into page resources - \cs_gset:Nn\pbs_insert_properties_entry:{ + \cs_gset_protected:Nn\pbs_insert_properties_entry:{ \pbs_zap_properties: %purge those from previous page \tl_set:Nx\l_tmpa_tl{\seq_if_exist:cT{pbs@props@\int_use:N\g_pbs_page_int}{ \seq_use:cn{pbs@props@\int_use:N\g_pbs_page_int}{~}}} @@ -677,7 +707,7 @@ /Properties~<>>>} \int_gincr:N\g_pbs_oc_int } - \cs_new_nopar:Nn\pbs_pdfemc:{\special{pdf:code~EMC}} + \cs_new_protected_nopar:Nn\pbs_pdfemc:{\special{pdf:code~EMC}} }{ \bool_if:NTF\g_pbs_dvisvgm_bool{ \tl_gset:Nx\g_pbs_hash_tl{\token_to_str:N#} @@ -1242,7 +1272,7 @@ } } } - \cs_new_nopar:Nn\pbs_pdfemc:{\pbs_special:n{~mark~/EMC~pdfmark}} + \cs_new_protected_nopar:Nn\pbs_pdfemc:{\pbs_special:n{~mark~/EMC~pdfmark}} } } } @@ -1275,7 +1305,7 @@ %modify output routine for output box insertions \bool_new:N\l_pbs_is_vertical_bool \cs_set_eq:NN\pbs_outputpage_orig:\@outputpage -\cs_set_nopar:Npn\@outputpage{ +\cs_set_protected_nopar:Npn\@outputpage{ \int_gincr:N\g_pbs_page_int \box_if_vertical:cTF{@outputbox}{ \bool_set_true:N\l_pbs_is_vertical_bool @@ -1295,10 +1325,6 @@ \pbs_outputpage_orig: } -\bool_new:N\g_pbs_ocgbase_loaded_bool -\AtBeginDocument{ - \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{} -} \AddToHook{shipout/foreground}{ %insert /Properties into current page's resources \put(0,0){\pbs_insert_properties_entry:} @@ -1513,15 +1539,95 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} +\def\g@pbs@date@tl{2022/08/04} +\def\g@pbs@version@tl{0.55} -\def\g@pbs@date@tl{2022/03/18} -\def\g@pbs@version@tl{0.54} - -\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl} {driver independent access to low-level PDF features} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% package options +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{ + Package option~'#1'~is~unknown;\\ + perhaps~it~is~spelled~incorrectly. +} + +\bool_new:N\g_pbs_pkgbigfiles_bool +\bool_new:N\g_pbs_dvipdfmx_bool +\bool_new:N\g_pbs_dvisvgm_bool +\str_new:N\g_pbs_backend_str + +\keys_define:nn{pdfbase}{ + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, + + dvipdfmx .code:n = { + \str_gset:Nn\g_pbs_backend_str{dvipdfmx} + }, + dvipdfmx .value_forbidden:n = true, + + dvisvgm .code:n = { + \str_gset:Nn\g_pbs_backend_str{dvisvgm} + }, + dvisvgm .value_forbidden:n = true, + + bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool, + + unknown .code:n = { + \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl} + } +} +\ProcessKeyOptions[pdfbase] + +% ensure that backend code is loaded +% possible values for \c_sys_backend_str: pdftex, luatex, xetex, dvips, dvipdfmx, dvisvgm +\cs_if_exist:NF\c_sys_backend_str{\sys_load_backend:n{}} + +\sys_if_output_pdf:TF{ % this excludes dvipdfmx, dvisvgm + \bool_gset_false:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool +}{ + \str_case_e:nnF{\g_pbs_backend_str}{ % pdfbase options have precedence + {dvipdfmx}{ + \bool_gset_true:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool + } + {dvisvgm}{ + \bool_gset_false:N\g_pbs_dvipdfmx_bool + \bool_gset_true:N\g_pbs_dvisvgm_bool + } + }{ % otherwise let the L3 backend code decide + \str_case_e:nn{\c_sys_backend_str}{ + {dvisvgm}{ + \bool_gset_false:N\g_pbs_dvipdfmx_bool + \bool_gset_true:N\g_pbs_dvisvgm_bool + } + {dvipdfmx}{ + \bool_gset_true:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool + } + } + } +} + +\sys_if_engine_xetex:T{ + \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \int_new:N\g_pbs_page_int %abs. page counter %creating global definitions @@ -1529,8 +1635,7 @@ \msg_set:nnn{pdfbase}{rerun}{Rerun~to~get~internal~references~right!} -%LaTeX2e wrapper -\cs_new_nopar:Npn\pbs@seq@push@cx#1#2{ +\cs_new_protected_nopar:Npn\pbs@seq@push@cx#1#2{ \seq_if_exist:cF{#1}{\seq_new:c{#1}} \seq_gput_right:cx{#1}{#2} } @@ -1548,6 +1653,8 @@ \seq_new:N\g_pbs_bop_seq \seq_new:N\g_pbs_eop_seq +\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env +\bool_new:N\g_pbs_ocgbase_loaded_bool \AtBeginDocument{ \iow_now:Nx\@mainaux{ \token_to_str:N\providecommand\token_to_str:N\pbs@newkey[2]{} @@ -1555,66 +1662,14 @@ \iow_now:Nx\@mainaux{ \token_to_str:N\providecommand\token_to_str:N\pbs@seq@push@cx[2]{} } -} - -%%%%%%%%%%%%%%%%% -%package options -%%%%%%%%%%%%%%%%% -%unknown package option error message -\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{ - Package option~'#1'~is~unknown;\\ - perhaps~it~is~spelled~incorrectly. -} - -\bool_new:N\g_pbs_pkgbigfiles_bool -\bool_new:N\g_pbs_dvipdfmx_bool -\bool_new:N\g_pbs_dvisvgm_bool -\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env -\AtBeginDocument{ \cs_if_exist:NT\landscape{% \tl_put_right:Nn\landscape{\bool_gset_true:N\g_pbs_lscape_bool} \tl_put_left:Nn\endlandscape{\bool_gset_false:N\g_pbs_lscape_bool} } + \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{} } -\keys_define:nn{pdfbase}{ - xetex .code:n = {}, %dummy, we use engine test instead - - dvipdfmx .choice:, - dvipdfmx / true .code:n = { - \bool_gset_true:N\g_pbs_dvipdfmx_bool - \bool_gset_false:N\g_pbs_dvisvgm_bool - }, - dvipdfmx / false .code:n = {\bool_gset_false:N\g_pbs_dvipdfmx_bool}, - dvipdfmx .default:n = {true}, - - dvisvgm .choice:, - dvisvgm / true .code:n = { - \bool_gset_true:N\g_pbs_dvisvgm_bool - \bool_gset_false:N\g_pbs_dvipdfmx_bool - }, - dvisvgm / false .code:n = {\bool_gset_false:N\g_pbs_dvisvgm_bool}, - dvisvgm .default:n = {true}, - - bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool, - - unknown .code:n = { - \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl} - } -} -\ProcessKeysOptions{pdfbase} - -\sys_if_output_pdf:T{ - \bool_gset_false:N\g_pbs_dvipdfmx_bool - \bool_gset_false:N\g_pbs_dvisvgm_bool -} - -\sys_if_engine_xetex:T{ - \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool} -} - -% writing to core objects in the PDF, using the new -% pdfmanagement interface +% writing to core objects in the PDF, using the new pdfmanagement interface \cs_new_protected_nopar:Nn\pbs_appendtofields:n{ \pdfmanagement_add:nnx{Catalog/AcroForm}{Fields}{#1} } @@ -1629,7 +1684,6 @@ }{ !\int_compare_p:n{\luatexversion<95} }{ - \cs_set:Npx\pdfpageresources{\pdfvariable~pageresources} \cs_set_protected:Npn\pdfobj{\pdfextension~obj~} \cs_set_protected:Npn\pdfrefobj{\pdfextension~refobj~} \cs_set_protected:Npn\pdfannot{\pdfextension~annot~} @@ -1641,6 +1695,7 @@ \cs_set_protected:Npn\pdflastobj{\numexpr\pdffeedback~lastobj\relax} \cs_set_protected:Npn\pdflastannot{\numexpr\pdffeedback~lastannot\relax} \cs_set:Npn\pdfpageref{\pdffeedback~pageref} + \cs_set_protected:Npx\pdfpageresources{\pdfvariable~pageresources} \cs_set_eq:NN\pdfximage\saveimageresource \cs_set_eq:NN\pdfrefximage\useimageresource \cs_set_eq:NN\pdflastximage\lastsavedimageresourceindex @@ -2558,7 +2613,7 @@ %modify output routine for output box insertions \bool_new:N\l_pbs_is_vertical_bool \cs_set_eq:NN\pbs_outputpage_orig:\@outputpage -\cs_set_nopar:Npn\@outputpage{ +\cs_set_protected_nopar:Npn\@outputpage{ \int_gincr:N\g_pbs_page_int \box_if_vertical:cTF{@outputbox}{ \bool_set_true:N\l_pbs_is_vertical_bool @@ -2578,10 +2633,6 @@ \pbs_outputpage_orig: } -\bool_new:N\g_pbs_ocgbase_loaded_bool -\AtBeginDocument{ - \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{} -} \AddToHook{shipout/background}{ % workaround for curious AR bug (pdf annot or link placed on % OCG remains active although OCG is hidden) diff --git a/macros/latex/contrib/ocgx2/ChangeLog b/macros/latex/contrib/ocgx2/ChangeLog index 2c6de07b3f..6a05dbbcb9 100644 --- a/macros/latex/contrib/ocgx2/ChangeLog +++ b/macros/latex/contrib/ocgx2/ChangeLog @@ -1,3 +1,8 @@ +2022-08-04 + * v0.55: ocgx2.sty + * v0.22: ocgbase.sty + * fix : pkg option processing acc. to new LaTeX format 22-06-01 + 2022-04-01 * v0.54: ocgx2.sty * v0.21: ocgbase.sty diff --git a/macros/latex/contrib/ocgx2/ocgbase.sty b/macros/latex/contrib/ocgx2/ocgbase.sty index e8df5e87df..bf4edf432b 100644 --- a/macros/latex/contrib/ocgx2/ocgbase.sty +++ b/macros/latex/contrib/ocgx2/ocgbase.sty @@ -100,35 +100,42 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} - -\def\g@ocgbase@date@tl{2022/04/01} -\def\g@ocgbase@version@tl{0.21} +\def\g@ocgbase@date@tl{2022/08/04} +\def\g@ocgbase@version@tl{0.22} \ProvidesExplPackage{ocgbase}{\g@ocgbase@date@tl}{\g@ocgbase@version@tl} {support package for ocgx2.sty} %package options -%unknown package option error message \msg_set:nnnn{ocgbase}{unknown~package~option}{Unknown~package~option~`#1'.}{ Package option~'#1'~is~unknown;\\ perhaps~it~is~spelled~incorrectly. } \keys_define:nn{ocgbase}{ - xetex .code:n = {}, %dummy + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, - dvipdfmx .choice:, - dvipdfmx / true .code:n = {\PassOptionsToPackage{dvipdfmx}{pdfbase}}, - dvipdfmx / false .code:n = {}, - dvipdfmx .default:n = {true}, + dvipdfmx .code:n = { + \PassOptionsToPackage{dvipdfmx}{pdfbase} + }, + dvipdfmx .value_forbidden:n = true, unknown .code:n = { \msg_error:nnx{ocgbase}{unknown~package~option}{\l_keys_key_tl} } } -\ProcessKeysOptions{ocgbase} +\ProcessKeyOptions[ocgbase] \RequirePackage{pdfbase} @@ -138,7 +145,7 @@ Get~an~up~to~date~version~of~`#1'.\\ Aborting. } -\@ifpackagelater{pdfbase}{2017/09/29}{}{ +\@ifpackagelater{pdfbase}{2022/08/04}{}{ \msg_error:nnn{ocgbase}{support~outdated}{pdfbase.sty} \tex_endinput:D } @@ -472,35 +479,42 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} - -\def\g@ocgbase@date@tl{2022/04/01} -\def\g@ocgbase@version@tl{0.21} +\def\g@ocgbase@date@tl{2022/08/04} +\def\g@ocgbase@version@tl{0.22} \ProvidesExplPackage{ocgbase}{\g@ocgbase@date@tl}{\g@ocgbase@version@tl} {support package for ocgx2.sty} %package options -%unknown package option error message \msg_set:nnnn{ocgbase}{unknown~package~option}{Unknown~package~option~`#1'.}{ Package option~'#1'~is~unknown;\\ perhaps~it~is~spelled~incorrectly. } \keys_define:nn{ocgbase}{ - xetex .code:n = {}, %dummy + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, - dvipdfmx .choice:, - dvipdfmx / true .code:n = {\PassOptionsToPackage{dvipdfmx}{pdfbase}}, - dvipdfmx / false .code:n = {}, - dvipdfmx .default:n = {true}, + dvipdfmx .code:n = { + \PassOptionsToPackage{dvipdfmx}{pdfbase} + }, + dvipdfmx .value_forbidden:n = true, unknown .code:n = { \msg_error:nnx{ocgbase}{unknown~package~option}{\l_keys_key_tl} } } -\ProcessKeysOptions{ocgbase} +\ProcessKeyOptions[ocgbase] \RequirePackage{pdfbase} @@ -510,7 +524,7 @@ Get~an~up~to~date~version~of~`#1'.\\ Aborting. } -\@ifpackagelater{pdfbase}{2017/09/29}{}{ +\@ifpackagelater{pdfbase}{2022/08/04}{}{ \msg_error:nnn{ocgbase}{support~outdated}{pdfbase.sty} \tex_endinput:D } diff --git a/macros/latex/contrib/ocgx2/ocgx2.sty b/macros/latex/contrib/ocgx2/ocgx2.sty index 46c42aca35..16319e52a3 100644 --- a/macros/latex/contrib/ocgx2/ocgx2.sty +++ b/macros/latex/contrib/ocgx2/ocgx2.sty @@ -43,10 +43,8 @@ % % The Current Maintainer of this work is A. Grahn. - \RequirePackage{l3keys2e} - - \def\g@ocgxii@date@tl{2022/04/01} - \def\g@ocgxii@version@tl{0.54} + \def\g@ocgxii@date@tl{2022/08/04} + \def\g@ocgxii@version@tl{0.55} \ProvidesExplPackage{ocgx2}{\g@ocgxii@date@tl}{\g@ocgxii@version@tl} {ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx} @@ -86,8 +84,8 @@ Using~`colorlinks'~instead. } - %package opts - %unknown package option error message + % package options + \msg_set:nnnn{ocgx2}{unknown~package~option}{Unknown~package~option~`#1'.}{ Package option~'#1'~is~unknown;\\ perhaps~it~is~spelled~incorrectly. @@ -100,13 +98,22 @@ \bool_new:N\l_ocgxii_showingui_bool \keys_define:nn{ocgx2}{ - xetex .code:n = {}, %dummy + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, dvipdfmx .code:n = { \PassOptionsToPackage{dvipdfmx}{ocgbase} - \PassOptionsToPackage{dvipdfmx}{pdfbase} - \bool_gset_true:N\g_ocgxii_dvipdfmx_bool }, + dvipdfmx .value_forbidden:n = true, viewocg .choice:, viewocg / always .code:n={ @@ -162,11 +169,18 @@ \keys_set:nn{ocgx2}{viewocg,printocg,exportocg,showingui,tikz=false} %process package options - \ProcessKeysOptions{ocgx2} - \sys_if_engine_xetex:T{\bool_gset_true:N\g_ocgxii_dvipdfmx_bool} + \ProcessKeyOptions[ocgx2] \RequirePackage{ocgbase} %also loads pdfbase.sty + \bool_gset_eq:NN\g_ocgxii_dvipdfmx_bool\g_pbs_dvipdfmx_bool + + \bool_if:NT\g_pbs_dvisvgm_bool{ + \msg_error:nnn{ocgx2}{generic~msg}{ + Package~`ocgx2'~is~incompatible~with~the~`dvisvgm'~backend. + } + } + %re-implement ocg-p's `ocg' environment \DeclareDocumentEnvironment{ocg}{O{}mmm}{ \ocgxii_begin_ocg:nnnn{#1}{#2}{#3}{#4} @@ -1578,10 +1592,8 @@ % % The Current Maintainer of this work is A. Grahn. -\RequirePackage{l3keys2e} - -\def\g@ocgxii@date@tl{2022/04/01} -\def\g@ocgxii@version@tl{0.54} +\def\g@ocgxii@date@tl{2022/08/04} +\def\g@ocgxii@version@tl{0.55} \ProvidesExplPackage{ocgx2}{\g@ocgxii@date@tl}{\g@ocgxii@version@tl} {ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx} @@ -1621,8 +1633,8 @@ Using~`colorlinks'~instead. } -%package opts -%unknown package option error message +% package options + \msg_set:nnnn{ocgx2}{unknown~package~option}{Unknown~package~option~`#1'.}{ Package option~'#1'~is~unknown;\\ perhaps~it~is~spelled~incorrectly. @@ -1635,13 +1647,22 @@ \bool_new:N\l_ocgxii_showingui_bool \keys_define:nn{ocgx2}{ - xetex .code:n = {}, %dummy + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, + + dvips.code:n = {}, + dvips.value_forbidden:n = true, dvipdfmx .code:n = { \PassOptionsToPackage{dvipdfmx}{ocgbase} - \PassOptionsToPackage{dvipdfmx}{pdfbase} - \bool_gset_true:N\g_ocgxii_dvipdfmx_bool }, + dvipdfmx .value_forbidden:n = true, viewocg .choice:, viewocg / always .code:n={ @@ -1697,11 +1718,18 @@ \keys_set:nn{ocgx2}{viewocg,printocg,exportocg,showingui,tikz=false} %process package options -\ProcessKeysOptions{ocgx2} -\sys_if_engine_xetex:T{\bool_gset_true:N\g_ocgxii_dvipdfmx_bool} +\ProcessKeyOptions[ocgx2] \RequirePackage{ocgbase} %also loads pdfbase.sty +\bool_gset_eq:NN\g_ocgxii_dvipdfmx_bool\g_pbs_dvipdfmx_bool + +\bool_if:NT\g_pbs_dvisvgm_bool{ + \msg_error:nnn{ocgx2}{generic~msg}{ + Package~`ocgx2'~is~incompatible~with~the~`dvisvgm'~backend. + } +} + %re-implement ocg-p's `ocg' environment \DeclareDocumentEnvironment{ocg}{O{}mmm}{ \ocgxii_begin_ocg:nnnn{#1}{#2}{#3}{#4} diff --git a/macros/latex/contrib/xsavebox/ChangeLog b/macros/latex/contrib/xsavebox/ChangeLog index 040cc92a78..edeaa103fd 100644 --- a/macros/latex/contrib/xsavebox/ChangeLog +++ b/macros/latex/contrib/xsavebox/ChangeLog @@ -1,3 +1,7 @@ +2022-08-04 + * v0.18 + * fix : pkg option processing acc. to new LaTeX format 22-06-01 + 2022-03-10 * v0.17 * fix: content saving optimised diff --git a/macros/latex/contrib/xsavebox/xsavebox.pdf b/macros/latex/contrib/xsavebox/xsavebox.pdf index 39e3051880..16db549281 100644 Binary files a/macros/latex/contrib/xsavebox/xsavebox.pdf and b/macros/latex/contrib/xsavebox/xsavebox.pdf differ diff --git a/macros/latex/contrib/xsavebox/xsavebox.sty b/macros/latex/contrib/xsavebox/xsavebox.sty index 36aeaaa1d0..ddec5f4383 100644 --- a/macros/latex/contrib/xsavebox/xsavebox.sty +++ b/macros/latex/contrib/xsavebox/xsavebox.sty @@ -34,25 +34,24 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in +% conditions of the LaTeX Project Public License +% % http://mirrors.ctan.org/macros/latex/base/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is A. Grahn. -\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\RequirePackage{l3keys2e} +\NeedsTeXFormat{LaTeX2e}[2022-06-01] -\def\g@xsb@version@tl{0.17} -\def\g@xsb@date@tl{2022/03/10} +\def\g@xsb@version@tl{0.18} +\def\g@xsb@date@tl{2022/08/04} \ProvidesExplPackage{xsavebox}{\g@xsb@date@tl}{\g@xsb@version@tl} {saveboxes for repeating content without code replication} +% ensure that backend code is loaded +\cs_if_exist:NF\c_sys_backend_str{\sys_load_backend:n{}} + \msg_set:nnnn{xsavebox}{support~outdated}{ Support~package~`#1'~too~old. }{ @@ -75,51 +74,54 @@ perhaps~it~is~spelled~incorrectly. } +% possible values for \c_sys_backend_str: pdftex, luatex, xetex, dvips, dvipdfmx, dvisvgm %package options -\bool_new:N\g_xsb_dvisvgm_bool %`dvisvgm' driver option \tl_gset:Nn\g_xsb_margin_tl{3pt} \keys_define:nn{xsavebox}{ - margin .code:n = { - \setlength\l_tmpa_dim{#1} - \tl_gset:Nx\g_xsb_margin_tl{\dim_use:N\l_tmpa_dim} - }, + pdftex.code:n = {}, + pdftex.value_forbidden:n = true, + + luatex.code:n = {}, + luatex.value_forbidden:n = true, + + xetex.code:n = {}, + xetex.value_forbidden:n = true, - xetex .code:n = {}, %dummy, we use engine test instead + dvips.code:n = {}, + dvips.value_forbidden:n = true, - dvipdfmx .choice:, - dvipdfmx / true .code:n = { - \bool_gset_false:N\g_xsb_dvisvgm_bool + dvipdfmx.code:n = { \PassOptionsToPackage{dvipdfmx}{pdfbase} }, - dvipdfmx / false .code:n = {}, - dvipdfmx .default:n = {true}, + dvipdfmx.value_forbidden:n = true, - dvisvgm .choice:, - dvisvgm / true .code:n = { - \bool_gset_true:N\g_xsb_dvisvgm_bool + dvisvgm.code:n = { \PassOptionsToPackage{dvisvgm}{pdfbase} }, - dvisvgm / false .code:n = {\bool_gset_false:N\g_xsb_dvisvgm_bool}, - dvisvgm .default:n = {true}, + dvisvgm.value_forbidden:n = true, + + margin .code:n = { + \setlength\l_tmpa_dim{#1} + \tl_gset:Nx\g_xsb_margin_tl{\dim_use:N\l_tmpa_dim} + }, unknown .code:n = { \msg_error:nnx{xsavebox}{unknown~package~option}{\l_keys_key_tl} } } -\ProcessKeysOptions{xsavebox} - -\sys_if_output_pdf:T{\bool_gset_false:N\g_xsb_dvisvgm_bool} +\ProcessKeyOptions[xsavebox] \RequirePackage{pdfbase} -\@ifpackagelater{pdfbase}{2017/03/23}{}{ +\@ifpackagelater{pdfbase}{2022/08/04}{}{ \msg_error:nnn{xsavebox}{support~outdated}{pdfbase.sty} \tex_endinput:D } + \cs_gset_eq:NN\xsb_pdfxform:nnnnn\pbs_pdfxform:nnnnn \cs_gset_eq:NN\xsb_pdflastxform:\pbs_pdflastxform: \cs_gset_eq:NN\xsb_pdfrefxform:n\pbs_pdfrefxform:n -\bool_if:NTF\g_xsb_dvisvgm_bool{ +\bool_if:NTF\g_pbs_dvisvgm_bool{ \tl_gset:Nn\g_xsb_margin_tl{0pt} \cs_new_protected_nopar:Nn\xsb_updatebbox:nnn{ \special{dvisvgm:bbox~#1~#2~#3~transform} diff --git a/macros/latex/contrib/xsavebox/xsavebox.tex b/macros/latex/contrib/xsavebox/xsavebox.tex index 0c1cbc6f68..f2f7b6b2b9 100644 --- a/macros/latex/contrib/xsavebox/xsavebox.tex +++ b/macros/latex/contrib/xsavebox/xsavebox.tex @@ -6,8 +6,7 @@ % \listfiles %%%%%%% pdfmanagement-testphase %%%%%% -\RequirePackage{pdfmanagement-testphase} % load the package -\DeclareDocumentMetadata % activates the PDF management interface +\DocumentMetadata % activates the PDF management interface { %uncompress, } -- cgit v1.2.3