From a090105758cdab68b58246a8aea7cb79dc168501 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 27 Jun 2021 03:01:41 +0000 Subject: CTAN sync 202106270301 --- macros/latex/contrib/acrotex-js/README.md | 4 +- macros/latex/contrib/acrotex-js/acrotex-js.dtx | 15 +- .../acrotex-js/docs/acrobat-in-workflow.pdf | Bin 396417 -> 393853 bytes .../latex/contrib/acrotex-js/docs/acrotex-js.pdf | Bin 213534 -> 218642 bytes .../contrib/acrotex-js/js-files/aeb-reader.js | 50 +++++ .../latex/contrib/acrotex-js/js-files/aeb_pro.js | 11 +- .../contrib/acrotex-js/js-test/test_install.pdf | Bin 47782 -> 47856 bytes .../contrib/acrotex-js/js-test/test_install.tex | 1 + macros/latex/contrib/huawei/cover-picture.pdf | Bin 253724 -> 0 bytes .../latex/contrib/huawei/huawei-cover-picture.pdf | Bin 0 -> 253724 bytes macros/latex/contrib/huawei/huawei.cls | 38 +++- macros/latex/contrib/huawei/huawei.pdf | Bin 336307 -> 336211 bytes macros/latex/contrib/huawei/huawei.tex | 7 +- macros/latex/contrib/huawei/samples/huawei-cfp.tex | 2 +- macros/latex/contrib/hvfloat/Changes | 2 + .../contrib/hvfloat/doc/examples/after1s1c.pdf | Bin 80294 -> 80294 bytes .../contrib/hvfloat/doc/examples/after2s2c.pdf | Bin 86720 -> 86722 bytes .../latex/contrib/hvfloat/doc/examples/capPos.pdf | Bin 95390 -> 95389 bytes .../contrib/hvfloat/doc/examples/default1s1c.pdf | Bin 81992 -> 81991 bytes .../contrib/hvfloat/doc/examples/default1s2c.pdf | Bin 83375 -> 83275 bytes .../contrib/hvfloat/doc/examples/default2s1c.pdf | Bin 79445 -> 79445 bytes .../contrib/hvfloat/doc/examples/default2s2c.pdf | Bin 85825 -> 85824 bytes .../hvfloat/doc/examples/doublepage2s1c.pdf | Bin 2317102 -> 2314853 bytes .../hvfloat/doc/examples/doublepage2s2c.pdf | Bin 619035 -> 619030 bytes .../contrib/hvfloat/doc/examples/even1s1c.pdf | Bin 77658 -> 77658 bytes .../contrib/hvfloat/doc/examples/even1s2c.pdf | Bin 86404 -> 86404 bytes .../contrib/hvfloat/doc/examples/even2s1c.pdf | Bin 84815 -> 84813 bytes .../contrib/hvfloat/doc/examples/even2s2c.pdf | Bin 85100 -> 85098 bytes .../contrib/hvfloat/doc/examples/fullpage1s2c.pdf | Bin 86778 -> 86773 bytes .../contrib/hvfloat/doc/examples/inner1s2c.pdf | Bin 84024 -> 84020 bytes .../contrib/hvfloat/doc/examples/inner2s1c.pdf | Bin 83979 -> 83977 bytes .../contrib/hvfloat/doc/examples/inner2s2c.pdf | Bin 84014 -> 84013 bytes .../contrib/hvfloat/doc/examples/left2s2c.pdf | Bin 85511 -> 85512 bytes .../hvfloat/doc/examples/multi-after1s1c.pdf | Bin 142627 -> 142624 bytes .../hvfloat/doc/examples/multi-default1s1c.pdf | Bin 146171 -> 146172 bytes .../hvfloat/doc/examples/multi-default1s2c.pdf | Bin 94585 -> 94586 bytes .../hvfloat/doc/examples/multi-default2s1c.pdf | Bin 146344 -> 146343 bytes .../hvfloat/doc/examples/multi-default2s2c.pdf | Bin 92184 -> 92182 bytes .../hvfloat/doc/examples/multi-inner2s2c.pdf | Bin 89789 -> 89784 bytes .../hvfloat/doc/examples/multi-outer2s2c.pdf | Bin 92987 -> 92984 bytes .../hvfloat/doc/examples/multi-right1s1c.pdf | Bin 145742 -> 145736 bytes .../latex/contrib/hvfloat/doc/examples/odd1s1c.pdf | Bin 77806 -> 77805 bytes .../latex/contrib/hvfloat/doc/examples/odd1s1c.tex | 2 +- .../latex/contrib/hvfloat/doc/examples/odd1s2c.pdf | Bin 86525 -> 86523 bytes .../latex/contrib/hvfloat/doc/examples/odd2s1c.pdf | Bin 174218 -> 174218 bytes .../latex/contrib/hvfloat/doc/examples/odd2s2c.pdf | Bin 85567 -> 85566 bytes .../contrib/hvfloat/doc/examples/outer1s2c.pdf | Bin 86320 -> 86318 bytes .../contrib/hvfloat/doc/examples/outer2s1c.pdf | Bin 84295 -> 84292 bytes .../contrib/hvfloat/doc/examples/outer2s2c.pdf | Bin 84682 -> 84680 bytes .../hvfloat/doc/examples/paper-after1s1c.pdf | Bin 79176 -> 79267 bytes .../hvfloat/doc/examples/paper-default1s1c.pdf | Bin 79887 -> 79967 bytes .../hvfloat/doc/examples/paper-default1s2c.pdf | Bin 90508 -> 90508 bytes .../hvfloat/doc/examples/paper-default2s1c.pdf | Bin 0 -> 87935 bytes .../hvfloat/doc/examples/paper-default2s1c.tex | 81 ++++++++ .../hvfloat/doc/examples/paper-default2s2c.pdf | Bin 90333 -> 90332 bytes .../hvfloat/doc/examples/paper-inner2s2c.pdf | Bin 87859 -> 87855 bytes .../hvfloat/doc/examples/paper-right1s1c.pdf | Bin 80205 -> 80290 bytes .../contrib/hvfloat/doc/examples/right1s1c.pdf | Bin 80126 -> 80126 bytes .../contrib/hvfloat/doc/examples/right1s2c.pdf | Bin 89342 -> 89340 bytes .../contrib/hvfloat/doc/examples/right2s1c.pdf | Bin 81033 -> 81033 bytes .../contrib/hvfloat/doc/examples/right2s2c.pdf | Bin 85585 -> 85585 bytes .../contrib/hvfloat/doc/examples/sub-after1s1c.pdf | Bin 143893 -> 143952 bytes .../contrib/hvfloat/doc/examples/sub-after2s2c.pdf | Bin 144709 -> 144771 bytes .../hvfloat/doc/examples/sub-default1s1c.pdf | Bin 144111 -> 144003 bytes .../hvfloat/doc/examples/sub-default1s2c.pdf | Bin 144341 -> 144217 bytes .../hvfloat/doc/examples/sub-default2s2c.pdf | Bin 143647 -> 143517 bytes .../contrib/hvfloat/doc/examples/sub-right1s1c.pdf | Bin 143826 -> 143873 bytes .../contrib/hvfloat/doc/examples/sub-right1s2c.pdf | Bin 144812 -> 144879 bytes .../contrib/hvfloat/doc/examples/sub-right2s2c.pdf | Bin 144268 -> 144315 bytes .../contrib/hvfloat/doc/examples/wide1s2c.pdf | Bin 120954 -> 120949 bytes .../contrib/hvfloat/doc/examples/wide2s2c.pdf | Bin 121929 -> 121917 bytes macros/latex/contrib/hvfloat/doc/hvfloat.pdf | Bin 7119431 -> 7126601 bytes macros/latex/contrib/hvfloat/doc/hvfloat.tex | 227 ++++++++++++++------- .../latex/contrib/hvfloat/doc/images/missing.txt | 4 + macros/latex/contrib/hvfloat/latex/hvfloat-fps.sty | 10 +- macros/latex/contrib/hvfloat/latex/hvfloat.sty | 19 +- macros/latex/contrib/thorshammer/README.md | 8 +- .../thorshammer/docs/install-action-seq.pdf | Bin 345357 -> 487300 bytes .../thorshammer/docs/install-action-seq.tex | 81 ++++++++ macros/latex/contrib/thorshammer/docs/thmclass.pdf | Bin 207656 -> 1807261 bytes .../contrib/thorshammer/docs/thors-the-man.pdf | Bin 1388897 -> 1457397 bytes .../contrib/thorshammer/docs/thors-the-man.tex | 119 +++++------ .../latex/contrib/thorshammer/docs/thorshammer.pdf | Bin 6227257 -> 490931 bytes .../thorshammer/examples/nosolns/thexrt.tex | 4 +- .../examples/ordinary-option/get-hash-string.tex | 35 ---- .../ordinary-option/quiz-pwd-to-correct-AA.tex | 190 ----------------- .../ordinary-option/quiz-pwd-to-correct-AR.tex | 174 ---------------- .../examples/ordinary-option/thqz-p2c.pdf | Bin 0 -> 143076 bytes .../examples/ordinary-option/thqz-p2c.tex | 181 ++++++++++++++++ .../contrib/thorshammer/folder-js/aeb-reader.js | 50 ----- .../latex/contrib/thorshammer/folder-js/aeb_pro.js | 158 -------------- .../system-scripts/standalone/00-class.cfg | 4 + .../system-scripts/standalone/csvTOcfg.ps1 | 67 ++++++ .../system-scripts/standalone/mkclassFolders.ps1 | 60 ++++++ .../system-scripts/thors-structure/thmclass.ps1 | 109 ++++++++-- macros/latex/contrib/thorshammer/thorshammer.dtx | 78 ++++--- 96 files changed, 966 insertions(+), 825 deletions(-) create mode 100644 macros/latex/contrib/acrotex-js/js-files/aeb-reader.js delete mode 100644 macros/latex/contrib/huawei/cover-picture.pdf create mode 100644 macros/latex/contrib/huawei/huawei-cover-picture.pdf create mode 100644 macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.pdf create mode 100644 macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.tex create mode 100644 macros/latex/contrib/hvfloat/doc/images/missing.txt create mode 100644 macros/latex/contrib/thorshammer/docs/install-action-seq.tex delete mode 100644 macros/latex/contrib/thorshammer/examples/ordinary-option/get-hash-string.tex delete mode 100644 macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AA.tex delete mode 100644 macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AR.tex create mode 100644 macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.pdf create mode 100644 macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.tex delete mode 100644 macros/latex/contrib/thorshammer/folder-js/aeb-reader.js delete mode 100644 macros/latex/contrib/thorshammer/folder-js/aeb_pro.js create mode 100644 macros/latex/contrib/thorshammer/system-scripts/standalone/00-class.cfg create mode 100644 macros/latex/contrib/thorshammer/system-scripts/standalone/csvTOcfg.ps1 create mode 100644 macros/latex/contrib/thorshammer/system-scripts/standalone/mkclassFolders.ps1 (limited to 'macros/latex') diff --git a/macros/latex/contrib/acrotex-js/README.md b/macros/latex/contrib/acrotex-js/README.md index 90c06a1c77..c5825dac23 100644 --- a/macros/latex/contrib/acrotex-js/README.md +++ b/macros/latex/contrib/acrotex-js/README.md @@ -1,6 +1,6 @@ The acrotex-js Package Author: D. P. Story -Dated: 2021-06-19 +Dated: 2021-06-24 In the distribution of this package are two critical JavaScript files (aeb.js and aeb_pro.js) used by the packages insdljs, aeb_pro, thorshammer, and @@ -8,6 +8,8 @@ docassembly. Previously these JS files where distributed with the individual packages, now they are distributed by this package and must be installed according to the instructions in the docs folder. +What's New (2021-06-24) Version 1.6.2 of aeb_pro.js and Version 1.0 of aeb-reader.js + What's New (2021-06-19) Move certain files from other packages: acrobat-in-workflow.pdf and test_install.pdf diff --git a/macros/latex/contrib/acrotex-js/acrotex-js.dtx b/macros/latex/contrib/acrotex-js/acrotex-js.dtx index cf9af1fa08..21c30910d1 100644 --- a/macros/latex/contrib/acrotex-js/acrotex-js.dtx +++ b/macros/latex/contrib/acrotex-js/acrotex-js.dtx @@ -14,7 +14,7 @@ % %\NeedsTeXFormat{LaTeX2e}[1997/12/01] %\ProvidesPackage{acrotex-js} -% [2021/06/19 v1.1 acrotex-js: A library of JavaScript files (dps)] +% [2021/06/24 v1.2 acrotex-js: A library of JavaScript files (dps)] %<*driver> \documentclass{ltxdoc} \usepackage[colorlinks,hyperindex=false]{hyperref} @@ -70,6 +70,11 @@ % or \textsf{dvips \texttt{->} ps2pdf} workflow.\footnote{There is no harm in the routine installation of this % file even if you don't use \app{Distiller} or \app{ps2pdf}.} % \item \texttt{aeb\_pro.js}: Required by the \pkg{aeb\_pro}, \pkg{thorshammer}, and \pkg{docassembly} packages. +% \item \texttt{aeb-reader.js}: This ia a JavaScript file that is used by the \pkg{thorshammer} package.\footnote +% {See the documentation for the \pkg{thorshammer} package for more details.} It is +% installed in the same location as \texttt{aeb.js} and \texttt{aeb\_pro.js}. +% The file enhances the experience for users of \app{Adobe Reader}. +% % \end{itemize} % In all cases, the JS files must be correctly installed for the above packages for them to perform as designed. % Refer to \texttt{docs/install\_jsfiles.pdf} for installation instructions. @@ -80,12 +85,16 @@ % \item \texttt{docs} folder: \texttt{acrotex-js.pdf} (documentation), \texttt{install\_jsfile.pdf} % (installation instructions, and % \texttt{acrobat-in-workflow.pdf} (commentary on using \app{Acrobat} in your workflow). -% \item \texttt{js-files}: \texttt{aeb.js}, \texttt{aeb\_pro.js} (These are the JS files to be installed, -% follow the instructions of \texttt{install\_jsfile.pdf} in the \texttt{docs} folder. +% \item \texttt{js-files}: \texttt{aeb.js}, \texttt{aeb\_pro.js}, \texttt{aeb-reader.js}. +% To install one or more of these files, follow the instructions +% of \texttt{install\_jsfile.pdf} in the \texttt{docs} folder. The file \texttt{aeb-reader.js} is targeted +% at \app{Adobe Reader} users and goes in the same location as the others. The functionality of \texttt{aeb-reader.js} +% is included in that of \texttt{aeb\_pro.js}, so \emph{don't install them both} on the same computer, to avoid redundancy. % \item \texttt{js-test}: \texttt{test\_install.pdf} (After installing the JS files, test whether you've % understood and following the instructions correctly, open this file in \app{Acrobat} and follow instructions % contained therein.) % \end{itemize} +% \changes{v1.2}{2021/06/24}{\string\texttt{aeb\_pro.js}, version 1.6.2, and \string\texttt{aeb-reader.js}, version 1.0.} % \changes{v1.1}{2021/06/19}{Moved \string\texttt{test\_install.pdf} and \string\texttt{acrobat-in-workflow.pdf} % to this package from others} % \changes{v1.0}{2021/06/18}{First publication version} diff --git a/macros/latex/contrib/acrotex-js/docs/acrobat-in-workflow.pdf b/macros/latex/contrib/acrotex-js/docs/acrobat-in-workflow.pdf index 4dc7dda74d..d6ddca9465 100644 Binary files a/macros/latex/contrib/acrotex-js/docs/acrobat-in-workflow.pdf and b/macros/latex/contrib/acrotex-js/docs/acrobat-in-workflow.pdf differ diff --git a/macros/latex/contrib/acrotex-js/docs/acrotex-js.pdf b/macros/latex/contrib/acrotex-js/docs/acrotex-js.pdf index a26c51bf7c..d057028562 100644 Binary files a/macros/latex/contrib/acrotex-js/docs/acrotex-js.pdf and b/macros/latex/contrib/acrotex-js/docs/acrotex-js.pdf differ diff --git a/macros/latex/contrib/acrotex-js/js-files/aeb-reader.js b/macros/latex/contrib/acrotex-js/js-files/aeb-reader.js new file mode 100644 index 0000000000..87783f86b7 --- /dev/null +++ b/macros/latex/contrib/acrotex-js/js-files/aeb-reader.js @@ -0,0 +1,50 @@ +/* + AEB Adobe Acrobat Reader JavaScript Methods + + Copyright (C) 2019 AcroTeX.Net + D. P. Story + http://www.acrotex.net + + Version 1.0 +*/ +// console.println("Version 1.0 (Reader DC)"); +if ( typeof aebTrustedFunctions == "undefined") { + aebTrustedFunctions = app.trustedFunction( function ( doc, oFunction, oArgs ) + { + app.beginPriv(); + var retn = oFunction( oArgs, doc ); + app.endPriv(); + return retn; + }); +} +aebSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) +{ + app.beginPriv(); + app.execMenuItem("Save"); + app.endPriv(); +}); +aebDocSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) +{ + var Msg=function(e){return (aebDocSaveAs.msg==undefined)?("Doc SaveAs Error: " + e.toString()):aebDocSaveAs.msg;} + var Action=function(){return ((aebDocSaveAs.action==undefined)?null:eval(aebDocSaveAs.action));} + app.beginPriv(); + try { + return retn = doc.saveAs(oArgs); + } catch(e){console.println(Msg(e));Action();} + app.endPriv(); + aebDocSaveAs.msg=undefined; + aebDocSaveAs.action=undefined; +}); +aebBrowseForDoc = app.trustPropagatorFunction( function ( oArgs ) +{ + app.beginPriv(); + return retn = app.browseForDoc(oArgs); + app.endPriv(); +}); +aebLaunchURL=app.trustPropagatorFunction ( function ( oArgs ) +{ + app.beginPriv(); + var retn = app.launchURL(oArgs); + app.endPriv(); +}); + diff --git a/macros/latex/contrib/acrotex-js/js-files/aeb_pro.js b/macros/latex/contrib/acrotex-js/js-files/aeb_pro.js index 5dbfe4d53a..24fbcdaf53 100644 --- a/macros/latex/contrib/acrotex-js/js-files/aeb_pro.js +++ b/macros/latex/contrib/acrotex-js/js-files/aeb_pro.js @@ -5,8 +5,9 @@ D. P. Story http://www.acrotex.net - Version 1.6.1 + Version 1.6.2 + v1.6.2 Modified aebDocSaveAs for thorshammer v1.6.1 aebCreateTemplate now returns an object v1.6 Added aebAddWatermarkFromText, aebLaunchURL v1.5 Added aebCertifyInvisibleSign @@ -76,16 +77,18 @@ aebSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) app.execMenuItem("Save"); app.endPriv(); }); +// Version 1.7.2 aebDocSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) { var Msg=function(e){return (aebDocSaveAs.msg==undefined)?("Doc SaveAs Error: " + e.toString()):aebDocSaveAs.msg;} + var Action=function(){return ((aebDocSaveAs.action==undefined)?null:eval(aebDocSaveAs.action));} app.beginPriv(); try { - return doc.saveAs(oArgs); - } catch(e){console.println(Msg(e));} + return retn = doc.saveAs(oArgs); + } catch(e){console.println(Msg(e));Action();} app.endPriv(); aebDocSaveAs.msg=undefined; - + aebDocSaveAs.action=undefined; }); aebExtractPages = app.trustPropagatorFunction( function ( oArgs, doc ) { diff --git a/macros/latex/contrib/acrotex-js/js-test/test_install.pdf b/macros/latex/contrib/acrotex-js/js-test/test_install.pdf index c2b92f2565..cd7e28c8c0 100644 Binary files a/macros/latex/contrib/acrotex-js/js-test/test_install.pdf and b/macros/latex/contrib/acrotex-js/js-test/test_install.pdf differ diff --git a/macros/latex/contrib/acrotex-js/js-test/test_install.tex b/macros/latex/contrib/acrotex-js/js-test/test_install.tex index 72af3a51e8..a21f7a39d4 100644 --- a/macros/latex/contrib/acrotex-js/js-test/test_install.tex +++ b/macros/latex/contrib/acrotex-js/js-test/test_install.tex @@ -26,6 +26,7 @@ if ( typeof aebImportAnFDF == "function" ) { } \end{defineJS} \begin{defineJS}{\isAddWatermarkFromFileKnown} +console.clear(); console.show(); if ( typeof aebAddWatermarkFromFile == "function" ) { app.beep(0); console.println(""); diff --git a/macros/latex/contrib/huawei/cover-picture.pdf b/macros/latex/contrib/huawei/cover-picture.pdf deleted file mode 100644 index 6717a9ff35..0000000000 Binary files a/macros/latex/contrib/huawei/cover-picture.pdf and /dev/null differ diff --git a/macros/latex/contrib/huawei/huawei-cover-picture.pdf b/macros/latex/contrib/huawei/huawei-cover-picture.pdf new file mode 100644 index 0000000000..6717a9ff35 Binary files /dev/null and b/macros/latex/contrib/huawei/huawei-cover-picture.pdf differ diff --git a/macros/latex/contrib/huawei/huawei.cls b/macros/latex/contrib/huawei/huawei.cls index 61a99c65be..fd0203571e 100644 --- a/macros/latex/contrib/huawei/huawei.cls +++ b/macros/latex/contrib/huawei/huawei.cls @@ -21,10 +21,12 @@ % SOFTWARE. \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{huawei}[2021/06/15 0.6.1 Template for Huawei Documents] +\ProvidesClass{huawei}[2021/06/26 0.7.0 Template for Huawei Documents] \newif\ifnosecurity \DeclareOption{nosecurity}{\nosecuritytrue} +\newif\ifauthordraft +\DeclareOption{authordraft}{\authordrafttrue} \newif\ifnobrand \DeclareOption{nobrand}{\nobrandtrue} \newif\ifnodate @@ -149,7 +151,13 @@ \renewcommand{\headrulewidth}{0pt} \fancyhf{} \fancyfoot[L]{ - \LeftHuaweiBar{} + \ifauthordraft% + \begin{textblock}{14}[0.5,0.5](8,8)% + \tikz \node[minimum width=14\TPHorizModule] {% + \fontsize{64}{64}\selectfont\sffamily\scshape\color{gray!20}\rotatebox{30}{it is a draft} + };% + \end{textblock}% + \else\fi% \ifnum\value{page}=1\else% \ifnobrand\else% \begin{textblock}{8}[0,0](1.2,0.2)% @@ -207,17 +215,27 @@ {\color{gray!50!black}\large\thesubtitle} \fi \\[18pt] - \ifanonymous\else% - \ifx\thecompany\empty\else% - \thecompany\newline + \ifnobrand\else% + \ifanonymous\else% + \ifx\thecompany\empty\else% + \thecompany\newline + \fi \fi \fi \ifx\theauthor\empty\else% - {\scshape\theauthor}% + {\scshape\ifanonymous + Anonymous Authors + \else% + \theauthor + \fi}% \fi% - \ifx\theauthor\empty\else - \ifx\theid\empty\else - \;/ {\theid} + \ifanonymous\else% + \ifx\theauthor\empty\else + \ifnobrand\else% + \ifx\theid\empty\else + \;/ {\theid} + \fi + \fi \fi \fi\newline \vspace{2em} @@ -264,7 +282,7 @@ \maketitle \iflandscape\ifnocover\else \begin{textblock}{14}[1,1](14,14) - \raggedleft\includegraphics[height=3.6in]{cover-picture.pdf} + \raggedleft\includegraphics[height=3.6in]{huawei-cover-picture.pdf} \end{textblock} \fi\fi } diff --git a/macros/latex/contrib/huawei/huawei.pdf b/macros/latex/contrib/huawei/huawei.pdf index fde534fd9f..3c77d7e895 100644 Binary files a/macros/latex/contrib/huawei/huawei.pdf and b/macros/latex/contrib/huawei/huawei.pdf differ diff --git a/macros/latex/contrib/huawei/huawei.tex b/macros/latex/contrib/huawei/huawei.tex index 07d7d66d87..4a78656c98 100644 --- a/macros/latex/contrib/huawei/huawei.tex +++ b/macros/latex/contrib/huawei/huawei.tex @@ -29,9 +29,9 @@ \begin{document} \maketitle -\ff{Version: 0.6.1} +\ff{Version: 0.7.0} \newline -\ff{Date: 2021/06/15} +\ff{Date: 2021/06/26} \section{Overview} @@ -123,6 +123,9 @@ the layout of your document: \ff{nopaging} avoids page numbers at the bottom of each page. +\ff{authordraft} + prints a big ``It's a draft'' message across each page. + \section{Preamble} In the preamble you can specify meta information about the document, diff --git a/macros/latex/contrib/huawei/samples/huawei-cfp.tex b/macros/latex/contrib/huawei/samples/huawei-cfp.tex index 432a3ae27f..5811852155 100644 --- a/macros/latex/contrib/huawei/samples/huawei-cfp.tex +++ b/macros/latex/contrib/huawei/samples/huawei-cfp.tex @@ -20,7 +20,7 @@ % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE % SOFTWARE. -\documentclass[nobrand,nosecurity,anonymous,nopaging]{../huawei} +\documentclass[nobrand,nosecurity,anonymous,nopaging,authordraft]{../huawei} \usepackage{ffcode} \renewcommand*\thetitle{Test Call for Proposal} \renewcommand*\theauthor{Yegor Bugayenko} diff --git a/macros/latex/contrib/hvfloat/Changes b/macros/latex/contrib/hvfloat/Changes index d3e0318635..676ac9822c 100644 --- a/macros/latex/contrib/hvfloat/Changes +++ b/macros/latex/contrib/hvfloat/Changes @@ -1,4 +1,6 @@ hvfloat.sty: +2.31 2021-06-26 - suppress "Overful hbox" message for full page or + double page floats 2.30 2021-06-20 - fix for introduced bug for multifloats 2.29 2021-06-15 - some more fixes for doublepage objects - added option sameHeight for same text height on left diff --git a/macros/latex/contrib/hvfloat/doc/examples/after1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/after1s1c.pdf index d74d1e268e..40854d1f72 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/after1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/after1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/after2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/after2s2c.pdf index 9567c26d36..6a3f002998 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/after2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/after2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/capPos.pdf b/macros/latex/contrib/hvfloat/doc/examples/capPos.pdf index 072c584f82..630a337a53 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/capPos.pdf and b/macros/latex/contrib/hvfloat/doc/examples/capPos.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/default1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/default1s1c.pdf index ff8eec9e74..861efc9ac7 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/default1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/default1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/default1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/default1s2c.pdf index 752c54810d..60e3cb94ca 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/default1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/default1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/default2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/default2s1c.pdf index 6ac3baf5ad..33ac8dd876 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/default2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/default2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/default2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/default2s2c.pdf index 388cf97645..1291839ce8 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/default2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/default2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/doublepage2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/doublepage2s1c.pdf index dd444dd08a..0d3e2713ef 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/doublepage2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/doublepage2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/doublepage2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/doublepage2s2c.pdf index 7aa01b02f8..1578d673ff 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/doublepage2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/doublepage2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/even1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/even1s1c.pdf index cc6273ead8..7be7a1cb5b 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/even1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/even1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/even1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/even1s2c.pdf index eb062f70e2..e98663ed09 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/even1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/even1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/even2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/even2s1c.pdf index 4f86812e09..09a417c031 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/even2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/even2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/even2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/even2s2c.pdf index 263b9afc8a..e2898a14ae 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/even2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/even2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/fullpage1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/fullpage1s2c.pdf index 9cdd2ea882..e0e787f994 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/fullpage1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/fullpage1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/inner1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/inner1s2c.pdf index 05ac77f5dd..73a49d0a07 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/inner1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/inner1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/inner2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/inner2s1c.pdf index 200ac470d6..3cd80ae131 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/inner2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/inner2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/inner2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/inner2s2c.pdf index 94d1d37488..6b794b3732 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/inner2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/inner2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/left2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/left2s2c.pdf index 406285913d..4e6b0cfae7 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/left2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/left2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-after1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-after1s1c.pdf index 6db4613d89..bc345dc15b 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-after1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-after1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-default1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-default1s1c.pdf index 16b1cbfb19..e37e60e626 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-default1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-default1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-default1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-default1s2c.pdf index a4c58d96b9..614b2fcf30 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-default1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-default1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-default2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-default2s1c.pdf index b955807071..e2ec474cb7 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-default2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-default2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-default2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-default2s2c.pdf index 75107f1a34..23fdd5f04f 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-default2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-default2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-inner2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-inner2s2c.pdf index 4370c39d84..3f79249b52 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-inner2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-inner2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-outer2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-outer2s2c.pdf index 164dc77f64..7ebd9bd69a 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-outer2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-outer2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/multi-right1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/multi-right1s1c.pdf index 1c3c610031..23f3c0b60c 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/multi-right1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/multi-right1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.pdf index fe0ca31256..9a8f796d02 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.tex b/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.tex index dfce04c36b..2d93d7b2b5 100644 --- a/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.tex +++ b/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.tex @@ -1,5 +1,5 @@ \documentclass{scrartcl} -%% $Id: odd1s1c.tex 72 2021-05-02 11:40:10Z herbert $ +%% $Id: odd1s1c.tex 119 2021-06-20 13:28:09Z herbert $ \input{preamble.ltx} diff --git a/macros/latex/contrib/hvfloat/doc/examples/odd1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/odd1s2c.pdf index c24ac2fa55..eae0be6b8d 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/odd1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/odd1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/odd2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/odd2s1c.pdf index a357bdc1e1..ef5b9fd7ab 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/odd2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/odd2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/odd2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/odd2s2c.pdf index d7a49ea30d..6aa3ac83cf 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/odd2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/odd2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/outer1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/outer1s2c.pdf index ca7e1e56ec..c6676e1291 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/outer1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/outer1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/outer2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/outer2s1c.pdf index 323011e26f..a7d55f4c80 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/outer2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/outer2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/outer2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/outer2s2c.pdf index 11003f09da..204d0dad65 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/outer2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/outer2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-after1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/paper-after1s1c.pdf index 495d644d55..a65718b90a 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/paper-after1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/paper-after1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-default1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/paper-default1s1c.pdf index 443aae8d5f..fd27f7ca54 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/paper-default1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/paper-default1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-default1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/paper-default1s2c.pdf index bba76eb320..6e06341ad5 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/paper-default1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/paper-default1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.pdf new file mode 100644 index 0000000000..c9cd842897 Binary files /dev/null and b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.tex b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.tex new file mode 100644 index 0000000000..4db0220481 --- /dev/null +++ b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.tex @@ -0,0 +1,81 @@ +\documentclass{scrartcl} +%% $Id: paper-default2s2c.tex 72 2021-05-02 11:40:10Z herbert $ + +\input{preamble.ltx} +\setlength\columnseprule{0.4pt} + +\begin{document} +\title{Example for FULLPAGE floats} +\author{Herbert Voß} +\maketitle + +\tableofcontents + +\blinddocument + +\section{File \texttt{\jobname}} + +\begin{lstlisting} +The FULLPAGE image~\vref{fig:FULLPAGE0} has a caption~\vpageref{fig:FULLPAGE0-cap}. +\end{lstlisting} + +The FULLPAGE image~\vref{fig:FULLPAGE0} has a caption~\vpageref{fig:FULLPAGE0-cap}. + +\begin{lstlisting} +\hvFloat*[FULLPAGE]% + {figure}% + {\includegraphics[FULLPAGE]{frose}}% + [A FULLPAGE float with the default caption setting]% + {A default caption of a ``FULLPAGE'' object with the default setting, which + is a ``left'' caption which means that it always appears before the object. + This can be an even or odd page. And some more text whch has no + real meaning because it fills only the space for a long caption.}% + {fig:FULLPAGE0} +\end{lstlisting} + + +\Float[default] +\hvFloat*[FULLPAGE]% + {figure}% + {\includegraphics[FULLPAGE]{frose}}% + [A FULLPAGE float with the default caption setting]% + {A default caption of a ``FULLPAGE'' object with the default setting, which + is a ``left'' caption which means that it always appears before the object. + This can be an even or odd page. And some more text whch has no + real meaning because it fills only the space for a long caption.}% + {fig:FULLPAGE0} + +\blinddocument + +\begin{lstlisting} +\hvFloat*[FULLPAGE]% + {figure}% + {\includegraphics[FULLPAGE]{frose}}% + [A FULLPAGE float with the default caption setting]% + {A default caption of a ``FULLPAGE'' object with the default setting, which + is a ``left'' caption which means that it always appears before the object. + This can be an even or odd page. And some more text whch has no + real meaning because it fills only the space for a long caption.}% + {fig:FULLPAGE1} +\end{lstlisting} + + +\Float[default] +\hvFloat*[FULLPAGE]% + {figure}% + {\includegraphics[FULLPAGE]{frose}}% + [A FULLPAGE float with the default caption setting]% + {A default caption of a ``FULLPAGE'' object with the default setting, which + is a ``left'' caption which means that it always appears before the object. + This can be an even or odd page. And some more text whch has no + real meaning because it fills only the space for a long caption.}% + {fig:FULLPAGE1} + +\blinddocument + +\Blindtext + +\blindtext + + +\end{document} \ No newline at end of file diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-default2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s2c.pdf index e86b9e6674..330a7425ca 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/paper-default2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-inner2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/paper-inner2s2c.pdf index 56253d38e2..b0792355fb 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/paper-inner2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/paper-inner2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/paper-right1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/paper-right1s1c.pdf index daca3967b6..5ed8ec5a71 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/paper-right1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/paper-right1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/right1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/right1s1c.pdf index 8c43e8c1f0..c6c6bd27bd 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/right1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/right1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/right1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/right1s2c.pdf index 954f63954d..dfd03e566c 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/right1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/right1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/right2s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/right2s1c.pdf index 037f72ae10..dbb63e5fac 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/right2s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/right2s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/right2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/right2s2c.pdf index 2fecbfbe05..e269a747a3 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/right2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/right2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-after1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-after1s1c.pdf index d2391f0870..f75bb23f56 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-after1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-after1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-after2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-after2s2c.pdf index a23af6e14d..00554afc00 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-after2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-after2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-default1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-default1s1c.pdf index 83d13d7824..efea15759c 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-default1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-default1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-default1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-default1s2c.pdf index b5e7ae13b8..8d48919902 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-default1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-default1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-default2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-default2s2c.pdf index 026910949f..84ab3d56cc 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-default2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-default2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-right1s1c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-right1s1c.pdf index 68d689fca0..b319265630 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-right1s1c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-right1s1c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-right1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-right1s2c.pdf index d67a0f806a..72ca919045 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-right1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-right1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/sub-right2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/sub-right2s2c.pdf index 6456d85628..23e0a03ee7 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/sub-right2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/sub-right2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/wide1s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/wide1s2c.pdf index 6ee1ea42d1..b81fedc701 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/wide1s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/wide1s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/examples/wide2s2c.pdf b/macros/latex/contrib/hvfloat/doc/examples/wide2s2c.pdf index a12ef0d594..a95470d1eb 100644 Binary files a/macros/latex/contrib/hvfloat/doc/examples/wide2s2c.pdf and b/macros/latex/contrib/hvfloat/doc/examples/wide2s2c.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/hvfloat.pdf b/macros/latex/contrib/hvfloat/doc/hvfloat.pdf index 6ddf3c1f56..918e5f5f67 100644 Binary files a/macros/latex/contrib/hvfloat/doc/hvfloat.pdf and b/macros/latex/contrib/hvfloat/doc/hvfloat.pdf differ diff --git a/macros/latex/contrib/hvfloat/doc/hvfloat.tex b/macros/latex/contrib/hvfloat/doc/hvfloat.tex index 90bea8a9eb..5382371f7e 100644 --- a/macros/latex/contrib/hvfloat/doc/hvfloat.tex +++ b/macros/latex/contrib/hvfloat/doc/hvfloat.tex @@ -1,7 +1,7 @@ -%% $Id: hvfloat.tex 114 2021-06-15 13:20:03Z herbert $ +%% $Id: hvfloat.tex 122 2021-06-26 12:35:53Z herbert $ \listfiles \errorcontextlines=100 -\documentclass[twoside,paper=a4,]{scrartcl} +\documentclass[twoside,paper=a4,usegeometry]{scrartcl} \usepackage{fontspec} \usepackage{libertinus} %\usepackage[scaled=0.85]{beramono} @@ -10,25 +10,29 @@ \usepackage{microtype} \usepackage[english]{babel} +\usepackage[marginparwidth=3cm,bottom=2cm,top=1cm,includeheadfoot]{geometry} + + \usepackage[automark]{scrlayer-scrpage} \pagestyle{scrheadings} -\usepackage[showframe=false]{geometry} \usepackage{listings} % \lstset{% language=[LaTeX]TeX,% showstringspaces=false,% tabsize=5,% + backgroundcolor=\color{black!15}, % frame={tb},% -% lineskip=-1pt,% + lineskip=-1pt,% extendedchars=true,% basicstyle={\small\ttfamily},% -% numbers=left,% -% stepnumber=1,% -% numberstyle=\tiny,% -% xleftmargin=2em,% - breaklines=true} + numbers=left,% + stepnumber=1,% + numberstyle=\tiny,% + xleftmargin=2em,% + breaklines=true, + } % \usepackage{graphicx} @@ -86,8 +90,6 @@ \index{#1@\texttt{#1} (keyword)}\index{Keyword!#1@\texttt{#1}} \index{#2@\texttt{#2} (value)}\index{Value!#2@\texttt{#2}}} - - \newsavebox\boxdef \newenvironment{BDef} {\begin{lrbox}{\boxdef} @@ -160,6 +162,13 @@ \let\CMD\Lcs \let\ENV\Lenv +\newdimen\normalparindent +\normalparindent=20pt +\def\NormalParIndent{\global\parindent=\normalparindent} +\NormalParIndent + + + \newcommand\Float[1][]{\ifx\relax#1\relax\marginnote{\fbox{float}}\else \marginnote{\fbox{\shortstack{float\\#1}}}\fi } @@ -301,57 +310,106 @@ Internally the style is saved in a macro named \verb|\hv@|. There are the following keywords: +%\begin{lrbox}\hvOBox +\begingroup +\small + \def\rowvsp{\rule{0pt}{9pt}}% + \def\rowhsp{\hspace*{\normalparindent}}% + \def\rownl{\newline\rowhsp}% + \def\none{{\itshape none}}% + \def\arraystretch{0.96}% \begin{xltabular}{\textwidth}{@{} l>{\small\ttfamily}cX @{}} \caption{The optional keywords for the macro \nxLcs{hvFloat}}\label{tab:options}\\\toprule -\emph Keyword & \emph Default & \emph Description\\\midrule +\emph{K\kern-.1em eyword} & \rmfamily\emph{Default} & \emph{Description}\\\midrule \endfirsthead \midrule -\emph Keyword & \emph Default & \emph Description\\\midrule +\emph{K\kern-.1em eyword} & \rmfamily\emph{Default} & \emph{Description}\\\midrule \endhead \midrule \endfoot \bottomrule \endlastfoot -\Lkeyword{floatPos} & \texttt{tbp} & This is the same default placement setting like the one from standard \LaTeX, but maybe not always -the best setting. \\ -\Lkeyword{rotAngle} & 0& The value for the angle if both, the object and the caption, should be rotated together.\\ -\Lkeyword{capWidth} & n& The width of the caption. Can be »\texttt{n}« like a natural width given by the current linewidth, - »\texttt{w}« for the width of the object, »\texttt{h}« for the height of the object, or a scale for \verb|\columnwidth|.\\ -\Lkeyword{capAngle} & 0 & The integer value for the angle if the caption should be rotated. Counted counter clockwise.\\ -\Lkeyword{capPos} & bottom& The position of the caption relative to the object. Possible values are\\ - & & \Lkeyval{before}: \emph{always} before (left) from the object.\\ - & & \Lkeyval{top}: \emph{always} on top of the object.\\ - & & \Lkeyval{left}: \emph{always} before (left) from the object, but on the \emph{same page} in twocolumn mode.\\ - & & \Lkeyval{after}: \emph{always} after (right) from the object.\\ - & & \Lkeyval{bottom}: \emph{always} on the bottom of the object.\\ - & & \Lkeyval{right}: \emph{always} after (right) from the object, but on the \emph{same page} in twocolumn mode.\\ - & & \Lkeyval{inner}: in twoside mode always typeset at the inner margin.\\ - & & \Lkeyval{outer}: in twoside mode always typeset at the outer margin.\\ - & & \Lkeyval{evenPage}: in twoside mode with fullpage objects always on an even page.\\ - & & \Lkeyval{oddPage}: in twoside mode with fullpage objects always on an odd page.\\ -\Lkeyword{capVPos}& center& This is only important for \texttt{capPos=left|right}. Only in this case the - caption can vertically placed at the \Lkeyval{bottom}, \Lkeyval{center} and \Lkeyval{top}.\\ -\Lkeyword{objectPos} & center & The horizontal placement of the object relative to the document. -Possible values are (\textbf{l})eft|(\textbf{c})enter|(\textbf{r})ight.\\ -\Lkeyword{objectAngle} & 0 & The integer value for the angle if the object should be rotated. Counted counter clockwise.\\ -\Lkeyword{floatCapSep} & 5pt & The additional space between the object and a left or right placed caption.\\ -\Lkeyword{useOBox} & false & Instead of passing the object as parameter to the \Lcs{hvFloat}, the contents maybe saved in the box \texttt{\textbackslash hvOBox} With \texttt{useOBox=true} the contents of this box will be used.\\ -\Lkeyword{onlyText} & false & The caption will be printed as normal text and there is no entry in the list of \ldots.\\ -\Lkeyword{nonFloat} & false & The object isn't put in a floating environment. It is printed as standard text with an additional caption. The float counter is increased as usual and can be referenced.\\ -\Lkeyword{wide} & false & The float can use \Ldim{textwidth}+\Ldim{marginparwidth} as horizontal width.\\ -\Lkeyword{objectFrame} & false & put a frame with no separation around the float object.\\ -\Lkeyword{style} & --- & Use a defined style\\ -\Lkeyword{capFormat} & --- & Define formatting options for \Lcs{caption} (see documentation of package \Lpack{caption}).\\ -\Lkeyword{subcapFormat} & --- & Define formatting options for \Lcs{subcaption}.\\ -\Lkeyword{fullpage} & false & Use a complete column in twocolumn mode.\\ -\Lkeyword{FULLPAGE} & false & Use the complete paper width/height for the object.\\ -\Lkeyword{FullPage} & false & Use the complete text area for the object.\\ -\Lkeyword{doublePage} & false & Use the textarea on a doublepage with additional text.\\ -\Lkeyword{doublePAGE} & false & Use the textarea on a doublepage without additional text.\\ -\Lkeyword{doubleFULLPAGE} & false & Use the paperwidth on a doublepage without additional text.\\ -\Lkeyword{vFill} & false & Put a \Lcs{vfill} between every two objects in a multi- or subfloat.\\ -\end{xltabular} +\Lkeyword{floatPos} & \texttt{tbp} & This is the same default placement + setting as in standard \LaTeX; maybe not always the best setting.\\ +\Lkeyword{rotAngle} & 0& \rowvsp The value for the angle if both the object and + the caption should be rotated together.\\ +\Lkeyword{capWidth} & n& \rowvsp The width of the caption. Can be \texttt{n} + for a natural width given by the current linewidth, + \texttt{w} for the width of the object, + \rownl\texttt{h} for the height of the object, + or a scale factor for \Lcs{columnwidth}.\\ +\Lkeyword{capAngle} & 0 & \rowvsp The integer value for the angle if the caption + should be rotated. Positive is counter-clockwise.\\ +% +\Lkeyword{capPos} & bottom& \rowvsp The position of the caption relative to the + object. Possible values:\\ + & & \rowhsp\Lkeyval{before}: \emph{always} before (left) from the object.\\ + & & \rowhsp\Lkeyval{top}: \emph{always} on top of the object.\\ + & & \rowhsp\Lkeyval{left}: \emph{always} before (left) from the object, + but on the same page in twocolumn mode.\\ + & & \rowhsp\Lkeyval{after}: \emph{always} after (right) from the object.\\ + & & \rowhsp\Lkeyval{bottom}: \emph{always} on the bottom of the object.\\ + & & \rowhsp\Lkeyval{right}: \emph{always} after (right) from the + object, but on the same page in twocolumn mode.\\ + & & \rowhsp\Lkeyval{inner}: in twoside mode always typeset at the inner + margin.\\ + & & \rowhsp\Lkeyval{outer}: in twoside mode always typeset at the outer + margin.\\ + & & \rowhsp\Lkeyval{evenPage}: in twoside mode with fullpage objects + always on an even page.\\ + & & \rowhsp\Lkeyval{oddPage}: in twoside mode with fullpage objects + always on an odd page.\\ +% +\Lkeyword{capVPos}& center& \rowvsp Only used when + \texttt{capPos=left$\,|\,$right}; in these cases, the caption can + be vertically placed at the \Lkeyval{bottom}, \Lkeyval{center} or + \Lkeyval{top}.\\ +\Lkeyword{objectPos} & center & \rowvsp Horizontal placement of the object + relative to the document. Possible values are + (\textbf{l})eft, (\textbf{c})enter, (\textbf{r})ight.\\ +\Lkeyword{objectAngle} & 0 & \rowvsp Integer value for the angle if + the object should be rotated. Positive is counter-clockwise.\\ +\Lkeyword{floatCapSep} & 5pt & \rowvsp Additional space between the + object and a left- or right-placed caption.\\ +\Lkeyword{useOBox} & false & \rowvsp Instead of passing the object as a + parameter to \Lcs{hvFloat}, with \texttt{useOBox=true} the contents + of the predefined box \texttt{\textbackslash hvOBox} is used.\\ +\Lkeyword{onlyText} & false & \rowvsp The caption is printed as normal + text with no entry in any list of \ldots\\ +\Lkeyword{nonFloat} & false & \rowvsp The object isn't put in a floating + environment, but printed as standard text with an additional caption. + \rownl The float counter is increased as usual and can be referenced.\\ +\Lkeyword{wide} & false & \rowvsp The float can use + \Ldim{textwidth}$\,+\,$\Ldim{marginparwidth} as horizontal width.\\ +\Lkeyword{objectFrame} & false & \rowvsp Put a frame with no separation + around the float object.\\ +\Lkeyword{style} & \none & \rowvsp Use a defined style.\\ +\Lkeyword{capFormat} & \none & \rowvsp Define formatting options for + \Lcs{caption}; see documentation of package \Lpack{caption}.\\ +\Lkeyword{subcapFormat} & \none & \rowvsp Define formatting options for + \Lcs{subcaption}.\\ +\Lkeyword{fullpage} & false & \rowvsp Use a complete column in twocolumn mode.\\ +\Lkeyword{FullPage} & false & \rowvsp Use the full text area for the object.\\ +\Lkeyword{FULLPAGE} & false & \rowvsp Use the full paper width/height for the object.\\ +\Lkeyword{doublePage} & false & \rowvsp Use the text area on a doublepage with additional text.\\ +\Lkeyword{doublePAGE} & false & \rowvsp Use the text area on a doublepage without additional text.\\ +\Lkeyword{doubleFULLPAGE} & false & \rowvsp Use the paperwidth on a doublepage without additional text.\\ +\Lkeyword{vFill} & false & \rowvsp Put a \Lcs{vfill} between every two objects in a multi- or subfloat.\\ +\Lkeyword{sameHeight} & false & \rowvsp use the same text height on both pages for a \Lkeyword{doublePage} object.\\ +\end{xltabular} +%\end{lrbox} +\endgroup + +%\hvFloat*[floatPos=p,rotAngle=90,capPos=top,capWidth=w,useOBox=true] +% {table} +% {} +% [The optional keywords for the \newline\Lcs{hvFloat} macro] +% {The optional keywords for the \protect\Lcs{hvFloat} macro.} +% {tab:options} + + + @@ -786,10 +844,12 @@ The code for figure \ref{fig:5}: The code for figure \ref{fig:6}: \begin{lstlisting} \hvFloat[% - capWidth=0.25, - capPos=right, + capWidth=0.25,% + capPos=right,% capVPos=center,% the default -]{figure}{\frame{\includegraphics{images/rose}}}{Caption centered right beside the float}{fig:6} +]{figure}{\frame{\includegraphics{images/rose}} + \frame{\includegraphics[origin=c,angle=180]{images/rose}}}% + {Caption centered right beside the float}{fig:6} \end{lstlisting} @@ -798,7 +858,9 @@ The code for figure \ref{fig:6}: capWidth=0.25,% capPos=right,% capVPos=center,% the default -]{figure}{\frame{\includegraphics{images/rose}}}{Caption centered right beside the float}{fig:6} +]{figure}{\frame{\includegraphics{images/rose}} + \frame{\includegraphics[origin=c,angle=180]{images/rose}}}% + {Caption centered right beside the float}{fig:6} \section{Caption format} @@ -1633,6 +1695,9 @@ which is before the caption. \end{figure} \fi + + + \FloatBarrier @@ -1641,6 +1706,11 @@ which is before the caption. These settings make no sense in \Index{onecolumn} mode. +\clearpage + + + + \subsection{Using the paper size} It belongs to the user to create an object which fills the complete page. However, with the @@ -1695,6 +1765,8 @@ the paper dimensions \Ldim{paperwidth} and \FloatBarrier +\clearpage + \subsection{Multifloats}\label{sec:multifloats} Multifloats is the name for more than one image and/or tabular in \emph{one} floating @@ -2542,7 +2614,7 @@ in the inner margin on both pages. \Blindtext -%\Blindtext +\Blindtext @@ -2589,7 +2661,7 @@ and the right part on page~\pageref{bar-2}. All three labels points to the same {figure}% {\includegraphics[doubleFULLPAGE, keepaspectratio=false]{images/rheinsberg}}% - {A caption for a double-sided image that will be placed before + {A caption for a double-sided image that will be placed \textbf{after} the image. The image begins on the left edge of the paper. No further text is placed on the pages. A short form is used for the LOF. The parameter is \texttt{doubleFULLPAGE}}% @@ -2602,7 +2674,7 @@ and the right part on page~\pageref{bar-2}. All three labels points to the same \hvFloat[doubleFULLPAGE,capPos=after]% {figure}% {\includegraphics[doubleFULLPAGE]{images/rheinsberg}}% - {A caption for a double-sided image that will be placed before + {A caption for a double-sided image that will be placed \textbf{after} the image. The image begins on the left edge of the paper. No further text is placed on the pages. A short form is used for the LOF. The parameter is \texttt{doubleFULLPAGE}}% @@ -2613,14 +2685,17 @@ and the right part on page~\pageref{bar-2}. All three labels points to the same \hvblindtext \hvblindtext -\hvblindtext + +\Blindtext + +\Blindtext \begin{lstlisting} \hvFloat[doubleFULLPAGE,capPos=before]% {figure}% {\includegraphics[height=\paperheight,width=2\paperwidth, keepaspectratio=false]{images/rheinsberg}}% - {A caption for a double-sided image that will be placed after + {A caption for a double-sided image that will be placed \textbf{before} the image. The image begins on the left edge of the paper. No further text is placed on the pages. A short form is used for the LOF. The parameter is \texttt{doubleFULLPAGE}}% @@ -2631,7 +2706,7 @@ and the right part on page~\pageref{bar-2}. All three labels points to the same \hvFloat[doubleFULLPAGE,capPos=before]% {figure}% {\includegraphics[height=\paperheight,width=2\paperwidth,keepaspectratio=false]{images/rheinsberg}}% - {A caption for a double-sided image that will be placed after + {A caption for a double-sided image that will be placed \textbf{before} the image. The image begins on the left edge of the paper. No further text is placed on the pages. A short form is used for the LOF. The parameter is \texttt{doubleFULLPAGE}}% @@ -2673,7 +2748,7 @@ There will be pagenumbers and a caption can be rotated on the right of the objec The parameter is \texttt{doublePAGE}}% {fig:doublePAGE0} -%\hvblindtext +\hvblindtext \Blindtext @@ -2697,7 +2772,7 @@ and the rest of the text area is filled with text. \end{lstlisting} -%\hvFloatSetDefaults +\hvFloatSetDefaults \marginnote{Fig. \ref{fig:doublePage0sH}} \hvFloat[doublePage,sameHeight]% @@ -2717,6 +2792,8 @@ and the rest of the text area is filled with text. \hvblindtext + + \begin{lstlisting} \hvFloat[doublePage,capPos=right,capVPos=top]% {figure}% @@ -2730,7 +2807,7 @@ and the rest of the text area is filled with text. \end{lstlisting} -%\hvFloatSetDefaults +\hvFloatSetDefaults \marginnote{Fig. \ref{fig:doublePage0}} \hvFloat[doublePage,capPos=right,capVPos=top]% @@ -2747,7 +2824,7 @@ and the rest of the text area is filled with text. \Blindtext -\hvblindtext +\Blindtext @@ -2765,7 +2842,7 @@ and the rest of the text area is filled with text. \end{lstlisting} -%\hvFloatSetDefaults +\hvFloatSetDefaults \marginnote{Fig. \ref{fig:doublePage0sH2}} \hvFloat[doublePage,,bindCorr=inner]% @@ -2782,7 +2859,7 @@ and the rest of the text area is filled with text. \Blindtext -\hvblindtext +\Blindtext @@ -2947,12 +3024,10 @@ With \Lcs{hvDefFloatStyle} one can define a special style to get rid of the indi \end{BDef} For example: -\begin{verbatim} -\hvDefFloatStyle{RightCaption}{floatPos=htb, capWidth=0.5, capPos=after, capVPos=bottom, objectPos=center} -\end{verbatim} - - \begin{lstlisting} +\hvDefFloatStyle{RightCaption}{floatPos=htb, capWidth=0.5, capPos=after, + capVPos=bottom, objectPos=center} + \hvFloat[style=RightCaption]{figure}{\includegraphics{images/rose}}% {Caption vertically centered right beside the float with a caption width of \texttt{0.5\textbackslash columnwidth}.}{fig:style} @@ -2967,10 +3042,6 @@ For example: \texttt{0.5\textbackslash columnwidth}.}{fig:style} -\Blindtext - -\Blindtext - \section{Global float setting} Instead of writing the following sequence into the preamble: @@ -2990,7 +3061,7 @@ optional package options to set the global placement: \usepackage[figure=tb,table=t]{hvfloat-fps} \end{verbatim} -\Blindtext +%\Blindtext \Blindtext diff --git a/macros/latex/contrib/hvfloat/doc/images/missing.txt b/macros/latex/contrib/hvfloat/doc/images/missing.txt new file mode 100644 index 0000000000..c10e55ce9c --- /dev/null +++ b/macros/latex/contrib/hvfloat/doc/images/missing.txt @@ -0,0 +1,4 @@ +Not all images of the documentation are listed here, because +some are not for public use. You can use any other image if you +want to run the documentation by yourselve. + diff --git a/macros/latex/contrib/hvfloat/latex/hvfloat-fps.sty b/macros/latex/contrib/hvfloat/latex/hvfloat-fps.sty index 0090e80f5f..99b7cbfbab 100644 --- a/macros/latex/contrib/hvfloat/latex/hvfloat-fps.sty +++ b/macros/latex/contrib/hvfloat/latex/hvfloat-fps.sty @@ -1,6 +1,7 @@ -%% $Id: hvfloat-fps.sty 120 2021-06-20 13:31:02Z herbert $ +%% $Id: hvfloat-fps.sty 35 2020-10-31 07:41:00Z herbert $ %% \NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hvfloat-fps}[2017/09/16 setting float objects] %% %% IMPORTANT NOTICE: %% @@ -15,10 +16,9 @@ %% DESCRIPTION: %% `hvfloat-fps' offers global placement of floats %% -\def\fileversion{0.03} -\def\filedate{2020/06/20} -\ProvidesPackage{hvfloat-fps}[\filedate\space v\fileversion\space global float position setting (hv)] -%\message{`hvfloat-fps' v\fileversion, \filedate\space (Herbert Voss)} +\def\fileversion{0.02} +\def\filedate{2017/09/20} +\message{`hvfloat-fps' v\fileversion, \filedate\space (Herbert Voss)} % \RequirePackage{xkeyval} % diff --git a/macros/latex/contrib/hvfloat/latex/hvfloat.sty b/macros/latex/contrib/hvfloat/latex/hvfloat.sty index 2159575d1c..82bf238e6d 100644 --- a/macros/latex/contrib/hvfloat/latex/hvfloat.sty +++ b/macros/latex/contrib/hvfloat/latex/hvfloat.sty @@ -1,4 +1,4 @@ -%% $Id: hvfloat.sty 119 2021-06-20 13:28:09Z herbert $ +%% $Id: hvfloat.sty 122 2021-06-26 12:35:53Z herbert $ %% %% %% IMPORTANT NOTICE: @@ -15,8 +15,8 @@ %% `hvfloat' offers rotating of captions and objects for floats %% \NeedsTeXFormat{LaTeX2e} -\def\fileversion{2.30} -\def\filedate{2021/06/20} +\def\fileversion{2.31} +\def\filedate{2021/06/26} %\message{`hvfloat' v\fileversion, \filedate\space (Herbert Voss)} \ProvidesPackage{hvfloat}[\filedate\space v\fileversion\space special floating objects (hv)] \let\hvFloatFileVersion\fileversion @@ -303,15 +303,13 @@ \renewcommand\tabcaption[2][]{% \begingroup \def\@captype{table}% - \edef\hv@caption@format{position=top,\hv@caption@format}% - \expandafter\captionsetup\expandafter{\hv@caption@format}% + \expandafter\captionsetup\expandafter{\hv@caption@format,position=top}% \ifx\relax#1\relax \caption{#2}\else\caption[#1]{#2}\fi \endgroup} \renewcommand\tabcaptionbelow[2][]{% \begingroup \def\@captype{table}% - \edef\hv@caption@format{position=below,\hv@caption@format}% - \ifx\relax\hv@caption@format\relax\else\expandafter\captionsetup\expandafter{\hv@caption@format}\fi + \expandafter\captionsetup\expandafter{\hv@caption@format,position=below} \ifx\relax#1\relax \caption{#2}\else\caption[#1]{#2}\fi \endgroup} % @@ -1138,6 +1136,7 @@ % \def\do@hvFloat@doublePageCaptionRightObjectLeft#1{% left part of the object \begin{\hv@floatType*}[!t] + \hfuzz=\maxdimen \let\c@hv@tempCNTfigA\c@figure \let\c@hv@tempCNTtabA\c@table \expandafter\hvFloatSet\expandafter{\hv@save@setting}% @@ -1163,6 +1162,7 @@ } \def\do@hvFloat@doublePageCaptionRightObjectRight#1{% right part of the object \begin{\hv@floatType*}[!t] + \hfuzz=\maxdimen \expandafter\hvFloatSet\expandafter{\hv@save@setting}% \global\savebox\hvObjectBox{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}% \hspace*{-\hv@tempWidthA}% @@ -1272,6 +1272,7 @@ \def\do@hvFloat@doublePAGECaptionRight#1{% image on left and right page with caption on the right ---------------------------------- % #1-> 0/1 caption under/right \afterpage{% + \hfuzz=\maxdimen \expandafter\hvFloatSet\expandafter{\hv@save@setting}% \global\savebox{\hvObjectBox}{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}% \noindent @@ -1463,6 +1464,7 @@ \def\do@hvFloat@doubleFULLPAGE@CaptionBefore{% \afterpage{% + \hfuzz=\maxdimen \global\savebox{\hvObjectBox}{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}% \vspace*{\the\dimexpr-1in-\voffset-\topmargin-\headheight-\headsep-\baselineskip+2\lineskip}% no interlineskip \hspace*{\the\dimexpr-\evensidemargin-\parindent-1in}% @@ -1496,6 +1498,7 @@ \def\do@hvFloat@doubleFULLPAGE@CaptionAfter{% \afterpage{% + \hfuzz=\maxdimen \global\savebox{\hvObjectBox}{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}% \vspace*{\the\dimexpr-1in-\voffset-\topmargin-\headheight-\headsep-\baselineskip+2\lineskip}% no interlineskip \hspace*{\the\dimexpr-\evensidemargin-\parindent-1in}% @@ -1578,6 +1581,7 @@ \def\do@hvFloat@doubleFULLPAGE@CaptionOther#1{% \afterpage{% + \hfuzz=\maxdimen \global\savebox{\hvObjectBox}{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}% \thispagestyle{empty}% \vspace*{\the\dimexpr-1in-\voffset-\topmargin-\headheight-\headsep-\baselineskip+2\lineskip}% -0.5\paperheight+0.5\ht\hvObjectBox @@ -1664,6 +1668,7 @@ \else \begin{\hv@floatType}[p]% \fi + \hfuzz=\maxdimen \expandafter\hvFloatSet\expandafter{\hv@save@setting}% \ifhv@FULLPAGE \vspace*{\the\dimexpr-1in-\voffset-\topmargin-\headheight-\headsep}%-0.5\baselineskip% diff --git a/macros/latex/contrib/thorshammer/README.md b/macros/latex/contrib/thorshammer/README.md index f4c622a13c..fefee6b2e1 100644 --- a/macros/latex/contrib/thorshammer/README.md +++ b/macros/latex/contrib/thorshammer/README.md @@ -1,6 +1,6 @@ The thorshammer Package Author: D. P. Story -Dated: 2020-01-13 +Dated: 2021-06-24 WARNING: Adobe Acrobat DC or Adobe Acrobat XI is required for post PDF-creation. Any PDF-creator application is supported. @@ -20,6 +20,12 @@ Note: Unzip action-sequences.zip to obtain the action-sequences folder. If intriguing, install thorshammer and try this workflow. +What's New (2021-06-24) Moved aeb_pro.js to the acrotex.js package, which is + now required. Other minor changes and fixes. + +What's New (2020-01-21) Published password of action sequences. + + Enjoy! Now, I must get back to my retirement. diff --git a/macros/latex/contrib/thorshammer/docs/install-action-seq.pdf b/macros/latex/contrib/thorshammer/docs/install-action-seq.pdf index e7a68382e0..ea8bae8e8f 100644 Binary files a/macros/latex/contrib/thorshammer/docs/install-action-seq.pdf and b/macros/latex/contrib/thorshammer/docs/install-action-seq.pdf differ diff --git a/macros/latex/contrib/thorshammer/docs/install-action-seq.tex b/macros/latex/contrib/thorshammer/docs/install-action-seq.tex new file mode 100644 index 0000000000..98acf7397f --- /dev/null +++ b/macros/latex/contrib/thorshammer/docs/install-action-seq.tex @@ -0,0 +1,81 @@ +\documentclass{article} +\usepackage[fleqn]{amsmath} +% +% the driver line is not necessary if you +% have aebpro.cfg configured to your driver. +% +\usepackage[web]{aeb_pro} +\usepackage{eforms} +\usepackage[altbullet]{lucidbry} +\usepackage{pifont} +\usepackage{graphicx} + +\usepackage{fancyvrb} + +\usepackage{xbmks} +\xbmksetup{colors={int=red},styles={intbf}} +%\DeclareInitView{layoutmag={navitab:UseOutlines}} +\hypersetup{pdfpagemode=UseOutlines} + +\makeatletter +\renewcommand{\paragraph} + {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt} + {\normalfont\normalsize\bfseries}} +\renewcommand{\subparagraph} + {\@startsection{subparagraph}{5}{\parindent}{6pt}{-3pt}% + {\normalfont\normalsize\bfseries}} +\makeatother + +\mathindent\parindent + +\def\AEBP{\app{AeB Pro}} +\def\AEB{\app{AeB}} +\def\APB{\app{APB}} +\def\app#1{\textsf{#1}} +\def\amtIndent{\parindent} +\def\meta#1{$\langle\textit{\texttt{#1}}\rangle$} +\def\SC#1{{\small#1}} +\def\PDF{\SC{PDF}} +\let\uif\textsf +\let\opt\texttt + +%\reversemarginpar +\def\acInstr{How to install Action sequences in \textsf{Acrobat}} +\title{\acInstr} +\author{D. P. Story} +\email{dpstory@acrotex.net} +\version{1.0} +\revisionLabel{Published:} + +\begin{document} + +\maketitle + +\pdfbookmarkx[1]{The thorshammer package}[action={\GoToR/F(thors-the-man.pdf)/D[0 /Fit]},color=blue,style={bf}]{thorhammer} +\pdfbookmarkx[1]{Documentation of the system scripts}[action={\GoToR/F(thmclass.pdf)/D[0 /Fit]},color=blue,style={bf}]{sysscripts} + +\thispagestyle{empty} + +\begin{center}\large\bfseries + How to install action sequences +\end{center} + +\noindent \app{Acrobat XI} or later is required. Open \app{Acrobat} and +select \uif{Tools > Action Wizard}. Now select \uif{Manage Actions} to view +the \uif{Manage Actions} dialog box, refer to +\hyperref[fig:MA]{Figure~\ref*{fig:MA}} below. + +\begin{figure}[htb]\centering +\includegraphics[width=.67\linewidth]{graphics/manage-actions} +\caption{Manage Actions dialog box}\label{fig:MA} +\end{figure} + +\noindent \textbf{To import an Action sequence,} press the \uif{Import} +control and browse for the action sequence to be imported. Once you've +located the targeted action sequence, press the \uif{Open} control. This +imports the targeted sequence into the list the action sequences back in the +\uif{Manage Actions} dialog box. Press \uif{Close} to close this dialog box. +Before closing the \uif{Manage Actions} dialog box, you can, of course, +import additional action sequences. + +\end{document} diff --git a/macros/latex/contrib/thorshammer/docs/thmclass.pdf b/macros/latex/contrib/thorshammer/docs/thmclass.pdf index 50e2da723a..642cd178cc 100644 Binary files a/macros/latex/contrib/thorshammer/docs/thmclass.pdf and b/macros/latex/contrib/thorshammer/docs/thmclass.pdf differ diff --git a/macros/latex/contrib/thorshammer/docs/thors-the-man.pdf b/macros/latex/contrib/thorshammer/docs/thors-the-man.pdf index d67db59e20..6e4416d373 100644 Binary files a/macros/latex/contrib/thorshammer/docs/thors-the-man.pdf and b/macros/latex/contrib/thorshammer/docs/thors-the-man.pdf differ diff --git a/macros/latex/contrib/thorshammer/docs/thors-the-man.tex b/macros/latex/contrib/thorshammer/docs/thors-the-man.tex index be267d6764..82b71cb5ec 100644 --- a/macros/latex/contrib/thorshammer/docs/thors-the-man.tex +++ b/macros/latex/contrib/thorshammer/docs/thors-the-man.tex @@ -78,7 +78,7 @@ email={dpstory@acrotex.net}, subject=Documentation for the thorshammer package, talksite={\url{www.acrotex.net}}, - version={1.5.7, 2020/01/13}, + version={1.5.11, 2021/06/24}, Keywords={assessment workflow, LaTeX, AcroTeX}, copyrightStatus=True, copyrightNotice={Copyright (C) \the\year, D. P. Story}, @@ -209,46 +209,49 @@ Thor's way. \section{Preliminaries} Most important is the correct installation of \pkg{thorshammer} along with -its required packages and folder JavaScript files. +its required packages and folder JavaScript files. These are discussed in +this section. \subsection{Package requirements} -The most recent version of the packages \pkg{insdljs} (2019/10/23), -\pkg{exerquiz} (2019/10/13), \pkg{eq-save} (2019/08/07) are required. These three packages -were modified slightly to obtain features needed by \pkg{thorshammer}. +The most recent version of the packages \pkg{insdljs} (2021/06/19), +\pkg{exerquiz} (2021/05/29), \pkg{eq-save} (2021/04/27) are required. These +three packages were modified slightly to obtain features needed by +\pkg{thorshammer}. -The \pkg{thorshammer} package ships with two folder JavaScript files -\texttt{aeb\_pro.js}\FmtMP{\textsf{aeb\_pro.js}} (Version 1.7.2 or later, +The \pkg{thorshammer} package requires the folder JavaScript files +\texttt{aeb\_pro.js}\FmtMP{\textsf{aeb\_pro.js}} (Version 1.6.2 or later, required) and \texttt{aeb-reader.js}\FmtMP{\textsf{aeb-reader.js}} (Version -1.0 or later); these two are found in \texttt{folder-js} -folder\FmtMP{\texttt{folder-js} folder}. The latter is a new JavaScript file, -the former ships with the \pkg{aeb\_pro} package. These files give access to +1.0 or later); these two are distributed by the +\pkg{acrotex-js}\FmtMP{\pkg{acrotex-js} pkg} package, dated 2021/06/24 or +later, and are found in \texttt{js-files} folder +of the distribution of \pkg{acrotex-js}. These files give access to security restricted JavaScript methods. If you already have \pkg{aeb\_pro} -installed, be sure you have Version 1.7.2 of \texttt{aeb\_pro.js}, if not, -install Version 1.7.2 provided by this distribution. +installed, be sure you have Version 1.6.2 of \texttt{aeb\_pro.js}, if not, +install Version 1.6.2 provided by the \pkg{acrotex-js} distribution. The \texttt{aeb\_pro.js} is used on the instructor's system, along with -\app{Acrobat} (\app{AA}), to author quizzes. \app{Distiller} is not used unless the -author prefers a TEX $\rightarrow$ DVI $\rightarrow$ PS $\rightarrow$ PDF -workflow, using \app{Distiller} as the PDF creator. For this workflow, -\app{pdflatex}, \app{lualatex}, and \app{xelatex} will work as PDF creators; -however, \app{Acrobat} ia needed to execute the JavaScript code generated by -the command \cs{sadQuizzes} and to execute the action sequences provided by -this package. +\app{Acrobat} (\app{AA}), to author quizzes. \app{Distiller} is not used +unless the author prefers a TEX $\rightarrow$ DVI $\rightarrow$ PS +$\rightarrow$ PDF workflow, using \app{Distiller} as the PDF creator. For +this workflow, \app{pdflatex}, \app{lualatex}, and \app{xelatex} will work as +PDF creators; however, \app{Acrobat} is needed to execute the JavaScript code +generated by the command \cs{sadQuizzes} and to execute the action sequences +provided by this package. Once the quizzes are created, the author can take the quizzes in \app{Adobe Reader} (\app{AR}) to get the same experience as his students. Additionally, -\texttt{aeb-reader.js} can be installed on the instructor's system and on the -student's work environment, if possible/permitted. \texttt{aeb-reader.js} +\texttt{aeb-reader.js}\FmtMP{\textsf{aeb-reader.js}} can be installed on the +student's work environment, if possible/permitted; \texttt{aeb-reader.js} contains a subset of JavaScript methods taken from \texttt{aeb\_pro.js} that \emph{will enhance student experience}. The author can install this file on his system to take the quizzes in the same environment, again using \app{Adobe Reader}. \textbf{Warning:}\FmtMP{\textbf{Warning}} Do not install -\texttt{aeb\_pro.js} in any folder where an \app{Adobe Reader} used by -students would read it. +\texttt{aeb\_pro.js} in any folder where an \app{Adobe Reader} is used by +students. \paragraph*{Other enhancements to user experience.} \app{Adobe Reader} is by default in \uif{Protected Mode}. -Then \uif{Protected Mode} is enabled, one or more security dialog boxes popup +When \uif{Protected Mode} is enabled, one or more security dialog boxes popup as the student saves his/her document. To eliminate this annoyance, clear the \uif{Enable Protected Mode at startup} checkbox, as shown in the \hyperref[fig:PM]{Figure~\ref*{fig:PM}}. On your personal system, open @@ -272,10 +275,10 @@ the sysadmin\FmtMP{sysadmin permission} to make those changes. %\pkg{aeb\_pro} package, though the package itself is not required. As a convenience, %\texttt{aeb\_pro.js} is also include in the \texttt{folder-js} folder. -\paragraph*{Installation of JS files for \app{Acrobat}.} The JavaScript file \texttt{aeb-reader.js} -is provided in the \texttt{folder-js} folder. Discussion of how and where to -install folder JavaScript files is found in the file -\texttt{docs/install\_jsfiles.pdf}. Read and follow the directions carefully. +\paragraph*{Installation of JS files for \app{Acrobat}.} The description of the installation of +the JavaScript file \texttt{aeb\_pro.js} is provided by the \pkg{acrotex-js} +package; read the \texttt{install\_jsfiles.pdf} file found in the +\texttt{docs} folder of the \pkg{acrotex-js} package. \paragraph*{Installation of JS files for \app{Adobe Reader}.} The folder JavaScript file \texttt{aeb-reader.js} may be installed for use by \app{Adobe Reader} as @@ -283,11 +286,12 @@ well. Installing \texttt{aeb-reader.js} enhances the experience of the students as they save their quiz document after completing the quiz. Normally, it is not possible to install such a JavaScript file for use by students; however, if the students take the quiz in a Computer Lab, the -sysadmin can install \texttt{aeb-reader.js} on all the computers used in the +sysadmin\FmtMP{sysadmin} can install \texttt{aeb-reader.js} on all the computers used in the Computer Lab. Discussion of how and where to install folder JavaScript files -is found in the file \texttt{docs/install\_jsfiles.pdf}. Read and follow the -directions carefully. (\app{Reader} looks for its folder JavaScript files in -the same location where \app{Acrobat} would look for them.) +is found in the file \texttt{docs/install\_jsfiles.pdf} of the +\pkg{acrotex-js} package. Read and follow the directions carefully. +(\app{Reader} looks for its folder JavaScript files in the same location +where \app{Acrobat} would look for them.) \subsection{Package options} @@ -1938,7 +1942,7 @@ distribution. to see if there are any errors. The attachment to this file contains the quiz results, save and do with them what you will, perhaps merging them into a larger spreadsheet. - \item \textbf{\textsf{Thor protects} action.} Applies to a collection of + \item \textbf{\textsf{Thor protects} action.}\FmtMP{Secret password is \texttt{"acrotex"}} Applies to a collection of newly created quizzes that specify the \opt{batchdistr} option. Running this action places security on the quizzes so the student's cannot view the answers even if they are using \app{Acrobat}. @@ -1958,7 +1962,7 @@ distribution. quizzes to the students folders, you can use \textsf{Thor distributes} to accomplish that task. \end{itemize} - \item \textbf{\textsf{Thor protects and distributes} action.} Applies to + \item \textbf{\textsf{Thor protects and distributes} action.}\FmtMP{Secret password is \texttt{"acrotex"}} Applies to a collection of newly created quizzes that specify the \opt{batchdistr} option. Refer to \hyperref[ss:bd]{Section~\ref{ss:bd}} for more details. The action is @@ -1987,6 +1991,10 @@ distribution. see \hyperref[item:RS]{item~\ref*{item:RS}} titled \textbf{Remove Security}. After removing security, we continue with the \textsf{Thor's way} action. \end{itemize} +\textbf{A Note on Password Protection.} The default password for the two +action sequences is \texttt{"acrotex"}. This can be changed for your system +by editing the two sequences from within the \app{Acrobat} user interface and +changing the password there. \section{Further discussion of Basic Methods} @@ -2118,40 +2126,25 @@ system drive that students have access to, designated as SD (system drive). \section{The \tops{\protect\opt{ordinary}}{ordinary} option}\label{ordinary} This option was prompted by an \pkg{exerquiz} user who had a unique problem: -He wanted to put password protection on the \uif{Correct} button of an -\pkg{exerquiz} quiz. He wanted to distribute quizzes to his students. The -students would take the quiz, and, on pressing the \uif{End Quiz} button, -would get their score, but the \uif{Correct} button would be denied to them -through a password mechanism. +He wanted to put password protection (PIN security) on the \uif{Correct} +button of an \pkg{exerquiz} quiz. He wanted to distribute quizzes to his +students. The students would take the quiz, and, on pressing the \uif{End +Quiz} button, would get their score, but the \uif{Correct} button would be +denied to them through a password mechanism. Solving this problem necessitated some of the special features of -\pkg{thorshammer}, without the use of \cs{sadQuizzes}. +\pkg{thorshammer}, without the use of \cs{sadQuizzes}, as well as the creation +of a few new commands. To see the solution to this problem, go to the -\texttt{examples/orginary-option} folder. There are three files in that -folder: -\begin{itemize} - \item {\ttfamily quiz-pwd-to-correct-AA.tex}: This file requires the use - of \app{Acrobat} to create the quizzes. The password is dynamically - encoded as the PDF is loaded into \app{Acrobat} for the first time. - \item {\ttfamily quiz-pwd-to-correct-AR.tex}: Again, the \uif{Correct} - button is password protected, only \app{Adobe Reader} is required - to build this file; however, the encrypted password cannot be built - dynamically. It must be first computed and hard-wired placed in the - source document. - \item {\ttfamily get-hash-string.tex}: This is a companion file to the - `AR' version described above. Build this file using any method. - Open it in \app{Adobe Reader} and press the \uif{Push} button. A - response dialog box opens, enter your chosen password (PIN number) - and press \uif{OK}. The hash string of your password appears on the - text field. Copy the password (or PIN) and the hash string to - {\ttfamily quiz-pwd-to-correct\allowbreak-AR.tex}. Comment out the human readable - password in your file and paste the hash string into the value of - the \texttt{\_PinCode} JavaScript variable, then build the file - {\ttfamily quiz-pwd-to\allowbreak-correct-AR.tex}. Now, the \uif{Correct} - button is password (PIN) protected. +\texttt{examples/orginary-option} folder to find the demo file +\texttt{thqz-p2c.tex}. This file uses the +\pkg{\href{https://ctan.org/pkg/eq-pin2corr}{eq-pin2corr}} package.\footnote{\pkg{eq-pin2corr} is +a package capable of placing PIN security (and other security) on an \pkg{exerquiz} quiz, apart from the +use of the \pkg{thorshammer} package.} +Additional discussion of the techniques and special ``transition'' commands +is found in the demo document. -\end{itemize} \section{My retirement} diff --git a/macros/latex/contrib/thorshammer/docs/thorshammer.pdf b/macros/latex/contrib/thorshammer/docs/thorshammer.pdf index 6e6c6fba2c..2ca79e94bb 100644 Binary files a/macros/latex/contrib/thorshammer/docs/thorshammer.pdf and b/macros/latex/contrib/thorshammer/docs/thorshammer.pdf differ diff --git a/macros/latex/contrib/thorshammer/examples/nosolns/thexrt.tex b/macros/latex/contrib/thorshammer/examples/nosolns/thexrt.tex index 7852cdc1c0..f94d518771 100644 --- a/macros/latex/contrib/thorshammer/examples/nosolns/thexrt.tex +++ b/macros/latex/contrib/thorshammer/examples/nosolns/thexrt.tex @@ -1,7 +1,7 @@ \documentclass{article} \usepackage{amstext} \usepackage{web} -\usepackage[usesumrytbls,allowrandomize]{exerquiz} +\usepackage[usesumrytbls,allowrandomize]{exerquiz} \usepackage{ran_toks} \usepackage[usebatch]{thorshammer} @@ -10,7 +10,7 @@ % It is important to freeze the seed so that (1) you can reproduce the exact % same quiz at a later time; (2) allow content written to the AUX file to % come up to date. This is important when using summary tables. -\useRandomSeed{1344524586} +\useRandomSeed{1344524586} \setInitMag{fitwidth} \hypersetup{pdfpagemode=UseNone} % don't need to see bookmarks diff --git a/macros/latex/contrib/thorshammer/examples/ordinary-option/get-hash-string.tex b/macros/latex/contrib/thorshammer/examples/ordinary-option/get-hash-string.tex deleted file mode 100644 index b20c438a21..0000000000 --- a/macros/latex/contrib/thorshammer/examples/ordinary-option/get-hash-string.tex +++ /dev/null @@ -1,35 +0,0 @@ -\documentclass{article} -\usepackage[designi]{web} -\usepackage{eforms} - -%\previewOn\pmpvOn - -\parindent0pt \parskip6pt - -\begin{document} - -\begin{defineJS}{\btnAct} -var resp=app.response({ - cQuestion: "Enter a PIN number", - cTitle: "Get Hash String" -}); -var f=this.getField("txt"); -if (resp!=null) f.value=Collab.hashString(resp); -\end{defineJS} - -Create a four digit (PIN) number and copy that number into the body of the -definition of the \verb|\PIN| command, which is defined in the source file -\texttt{quiz-pwd-to-correct-AR.tex}. This is to record and save the number. - -Push the button and enter the four digit number you just created into the -response box. When you press the \textsf{OK} button, the hash string of the -number you entered appears in the text field. Copy and paste this value into -the \texttt{quiz-pwd-to-correct-AR.tex} as the value of the -\texttt{\_PinCode} JavaScript variable. Now you're ready to compile the file -\texttt{quiz-pwd-to-correct-AR.tex}. - -\pushButton[\CA{Push}\AAmouseup{\btnAct}]{btn}{}{11bp}\olBdry -\textField[\textSize{8}]{txt}{2in}{11bp}\olBdry -\pushButton[\CA{Reset}\AAmouseup{this.resetForm();}]{reset}{}{11bp} - -\end{document} diff --git a/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AA.tex b/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AA.tex deleted file mode 100644 index e84d9781ee..0000000000 --- a/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AA.tex +++ /dev/null @@ -1,190 +0,0 @@ -\documentclass{article} -\usepackage{amstext} -\usepackage[designi]{web} -\usepackage{exerquiz}[2019/10/14] - -%\previewOn\pmpvOn - -% save the original defn of \eq@@EndQuizButtonActions as \eq@@EndQuizButtonActionsSave -\efsave\eq@@EndQuizButtonActions\as\eq@@EndQuizButtonActionsDefSave - -\usepackage[ordinary]{thorshammer} - -\thQzHeaderL{PWD Quizzes} -\thQzHeaderCQ{Quiz 1} - -% save the revised defn of \eq@@EndQuizButtonActions as \eq@@EndQuizButtonActionsThorSave -\efsave\eq@@EndQuizButtonActions\as\eq@@EndQuizButtonActionsThorSave - -\renewcommand\eqQuizPointsMsg{% -"\eqptScore\space"+ptScore+" \eqOutOf\space"+nPointTotal} - -\let\app\textsf -\let\pkg\textsf -\let\uif\textsf -\let\env\texttt -\let\opt\texttt -\def\cs#1{\texttt{\char`\\#1}} - - -\execJSOn -\useBeginQuizButton[\CA{Begin}] -\useEndQuizButton[\CA{End}] - -% If the students have Acrobat, they can see the pin number -% if they know how; however, if we use a hash string, the actual -% PIN is not retained within document. -\def\PIN{5243} % PIN number, change as desired - -% save \CorrBtnActionsJS as \CorrBtnActionsJSSave -\efsave\CorrBtnActionsJS\as\CorrBtnActionsJSSave -\begin{defineJS*}[\makeesc\@]{\CorrBtnActionsPwdJS} -var resp=app.response({ - cQuestion: "Enter the PIN number", - cTitle: "View Answers", - bPassword: true -}); -var _resp=Collab.hashString(resp); -if (_resp==_PinCode) { - correctQuiz("@eqBaseName",@thequestionno); - if (typeof correctSumryTbl == "function") - correctSumryTbl("@eqBaseName",@thequestionno); -} -\end{defineJS*} - -\DeclareQuiz{qz1} - -\begin{execJS}{execjs} -this.addScript("Pin Code","var _PinCode = \"" + Collab.hashString("\PIN")+"\""); -\end{execJS} - -\begin{document} - -\section{Introduction} - -\noindent\textbf{Goal:} Make the \uif{Correct} button password -protected.\medskip - -\noindent\textbf{Discussion:} This file illustrates the methods -of protecting the \uif{Correct} button with a password. This -file requires \app{Acrobat} to create; while the companion file -(\texttt{quiz-pwd-to-correct-AR.tex}) does not. - -If only MC and MS questions are posed, the \pkg{thorshammer} -package is not needed; otherwise, it is needed to support the -other types of questions. - -Within \pkg{exerquiz} the command that holds the JavaScript -action of the \uif{Correct} button is \cs{CorrBtnActionsJS}. We -save this macro, and change over to \cs{CorrBtnActionsPwdJS}, -defined in the preamble. We use the commands \cs{efsave} and -\cs{efrestore}, defined in \pkg{eforms}, to change the default -action to the password action, and back again. We do the same -thing for the \uif{End Quiz} action. (\pkg{thorshammer} -redefines \cs{eq@@EndQuizButtonActions}, the JavaScript actio of -the \uif{End Quiz} button.) - - -\newpage - -\section{Quiz with PIN to correct} - -% require students to answer all questions -\renewcommand\minQuizResp{highThreshold} % 1 - -For the quiz below, the \uif{Correct} button has an encrypted -password. The password appears in parentheses for the convenience of the casual reader. - -% use password version of \CorrButton action -\efrestore\CorrBtnActionsJS\from\CorrBtnActionsPwdJS -\begin{quiz*}{\currQuiz} -Solve each -\begin{questions} - \item The sum of 1 and 1 is\dots -\begin{answers}{5} -\bChoices - \Ans0 0\eAns - \Ans0 1\eAns - \Ans1 2\eAns - \Ans0 3\eAns - \Ans0 4\eAns -\eChoices -\end{answers} -\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ -\end{questions} -\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz} (PIN: \PIN)\vcgBdry - -\AnswerField{\currQuiz} - -\newpage - -\section{Quiz without PIN to correct} - -Now we try to create an ordinary \pkg{exerquiz} quiz without password protection. - -% restore \eq@@EndQuizButtonActions from its default defn -\efrestore\eq@@EndQuizButtonActions\from\eq@@EndQuizButtonActionsDefSave -% restore \CorrBtnActionsJS from \CorrBtnActionsJSSave -\efrestore\CorrBtnActionsJS\from\CorrBtnActionsJSSave - -\renewcommand\minQuizResp{lowThreshold} - -\begin{quiz*}{qz2} -Solve each -\begin{questions} - \item The sum of 1 and 1 is\dots -\begin{answers}{5} -\bChoices - \Ans0 0\eAns - \Ans0 1\eAns - \Ans1 2\eAns - \Ans0 3\eAns - \Ans0 4\eAns -\eChoices -\end{answers} -\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ -\end{questions} -\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz}\vcgBdry - -\AnswerField{\currQuiz} - - -\newpage - -\section{Another quiz with PIN to correct} - -It is possible to have a different PIN number for this quiz (multiple PINs in one document), but -I see no need for this. - -\DeclareQuiz{qz3} - - -% restore \eq@@EndQuizButtonActions from \eq@@EndQuizButtonActionsThorSave -\efrestore\eq@@EndQuizButtonActions\from\eq@@EndQuizButtonActionsThorSave -% restore password protection for Correct button -\efrestore\CorrBtnActionsJS\from\CorrBtnActionsPwdJS - -% require students to answer all questions -\renewcommand\minQuizResp{highThreshold} - -\begin{quiz*}{qz3} -Solve each -\begin{questions} - \item The sum of 1 and 1 is\dots -\begin{answers}{5} -\bChoices - \Ans0 0\eAns - \Ans0 1\eAns - \Ans1 2\eAns - \Ans0 3\eAns - \Ans0 4\eAns -\eChoices -\end{answers} -\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ -\end{questions} -\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz} (PIN: \PIN)\vcgBdry - -\AnswerField{\currQuiz} - - -\end{document} diff --git a/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AR.tex b/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AR.tex deleted file mode 100644 index 9123ce34d3..0000000000 --- a/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AR.tex +++ /dev/null @@ -1,174 +0,0 @@ -% Requires Acrobat -\documentclass{article} -\usepackage{amstext} -\usepackage[designi]{web} -\usepackage{exerquiz}[2019/10/11] - -\efsave\eq@@EndQuizButtonActions\as\eq@@EndQuizButtonActionsDefSave - -\usepackage[ordinary]{thorshammer} - -\thQzHeaderL{PWD Quiz} -\thQzHeaderCQ{Quiz 1} - -\efsave\eq@@EndQuizButtonActions\as\eq@@EndQuizButtonActionsThorSave - -%\previewOn\pmpvOn - -\renewcommand\eqQuizPointsMsg{% -"\eqptScore\space"+ptScore+" \eqOutOf\space"+nPointTotal} - -\let\app\textsf -\let\pkg\textsf -\let\env\texttt -\let\opt\texttt -\let\uif\textsf - -\execJSOn -\useBeginQuizButton[\CA{Begin}] -\useEndQuizButton[\CA{End}] - -% If the students have Acrobat, they can see the pin number -% if they know how. - -\efsave\CorrBtnActionsJS\as\CorrBtnActionsJSSave -\begin{defineJS*}[\makeesc\@]{\CorrBtnActionsPwdJS} -var resp=app.response({ - cQuestion: "Enter the PIN number", - cTitle: "View Answers", - bPassword: true -}); -var _resp=Collab.hashString(resp); -if (_resp==_PinCode) { - correctQuiz("@eqBaseName",@thequestionno); - if (typeof correctSumryTbl == "function") - correctSumryTbl("@eqBaseName",@thequestionno); -} -\end{defineJS*} - -\DeclareQuiz{qz} - -\def\PIN{5243} % PIN number, change as desired -\begin{insDLJS}{pin}{Pin Code} -var _PinCode = "02JRVZdRgYgCA-Rtje8VkD"; -\end{insDLJS} - -\parindent0pt -\parskip6pt - -\begin{document} - -\noindent\textbf{Goal:} Make the \uif{Correct} button password protected.\medskip - -\noindent\textbf{Discussion:} -This demo file uses a \emph{hash string} to encode the password for the instructor to correct -the quiz, it avoids the use of \app{Adobe Acrobat} by getting the hash string from the -PDF \texttt{get-hash-string}. Copy the hash string generated from \texttt{get-hash-string} -as the value of the JavaScript variable \texttt{\_PinCode} in the \textsf{insDLJS} environment -seen in this source file for this document. Then, compile this document and distribute. - -%Delay the correction of this next quiz by expanding the new command -%\verb|\pwdCorrBtnJS|. - -\newpage - -\section{Quiz with PIN to correct} - -% require students to answer all questions -\renewcommand\minQuizResp{highThreshold} % 1 - -For the quiz below, the \uif{Correct} button has an encrypted -password. The password appears in parentheses for the convenience of the casual reader. - -% use password version of \CorrButton action -\efrestore\CorrBtnActionsJS\from\CorrBtnActionsPwdJS -\begin{quiz*}{\currQuiz} -Solve each -\begin{questions} - \item The sum of 1 and 1 is\dots -\begin{answers}{5} -\bChoices - \Ans0 0\eAns - \Ans0 1\eAns - \Ans1 2\eAns - \Ans0 3\eAns - \Ans0 4\eAns -\eChoices -\end{answers} -\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ -\end{questions} -\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz} (PIN: \PIN)\vcgBdry - -\AnswerField{\currQuiz} - -\newpage - -\section{Quiz without PIN to correct} - -Now we try to create an ordinary \pkg{exerquiz} quiz without password protection. - -% restore \eq@@EndQuizButtonActions from its default defn -\efrestore\eq@@EndQuizButtonActions\from\eq@@EndQuizButtonActionsDefSave -% restore \CorrBtnActionsJS from \CorrBtnActionsJSSave -\efrestore\CorrBtnActionsJS\from\CorrBtnActionsJSSave - -\renewcommand\minQuizResp{lowThreshold} - -\begin{quiz*}{qz2} -Solve each -\begin{questions} - \item The sum of 1 and 1 is\dots -\begin{answers}{5} -\bChoices - \Ans0 0\eAns - \Ans0 1\eAns - \Ans1 2\eAns - \Ans0 3\eAns - \Ans0 4\eAns -\eChoices -\end{answers} -\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ -\end{questions} -\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz}\vcgBdry - -\AnswerField{\currQuiz} - - -\newpage - -\section{Another quiz with PIN to correct} - -It is possible to have a different PIN number for this quiz (multiple PINs in one document), but -I see no need for this. - -\DeclareQuiz{qz3} - - -% restore \eq@@EndQuizButtonActions from \eq@@EndQuizButtonActionsThorSave -\efrestore\eq@@EndQuizButtonActions\from\eq@@EndQuizButtonActionsThorSave -% restore password protection for Correct button -\efrestore\CorrBtnActionsJS\from\CorrBtnActionsPwdJS - -% require students to answer all questions -\renewcommand\minQuizResp{highThreshold} - -\begin{quiz*}{qz3} -Solve each -\begin{questions} - \item The sum of 1 and 1 is\dots -\begin{answers}{5} -\bChoices - \Ans0 0\eAns - \Ans0 1\eAns - \Ans1 2\eAns - \Ans0 3\eAns - \Ans0 4\eAns -\eChoices -\end{answers} -\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ -\end{questions} -\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz} (PIN: \PIN)\vcgBdry - -\AnswerField{\currQuiz} - -\end{document} \ No newline at end of file diff --git a/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.pdf b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.pdf new file mode 100644 index 0000000000..3c37ab220c Binary files /dev/null and b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.pdf differ diff --git a/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.tex b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.tex new file mode 100644 index 0000000000..f9484694b8 --- /dev/null +++ b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.tex @@ -0,0 +1,181 @@ +\documentclass{article} +\usepackage{amstext} +\usepackage[designi]{web} +\usepackage{exerquiz}[2021/06/24] +\usepackage[!showscore]{eq-pin2corr}[2021/06/24] + +%\previewOn\pmpvOn + +\usepackage[ordinary]{thorshammer} + +\thQzHeaderL{Secured Quiz} +\thQzHeaderCQ{Quiz 1} + +% Thor's hammer modifies this definition, we restore it to its +% 'ordinary' definition. +\renewcommand\eqQuizPointsMsg{% +"\eqptScore\space"+ptScore+" \eqOutOf\space"+nPointTotal} + +\let\app\textsf +\let\pkg\textsf +\let\uif\textsf +\let\env\texttt +\let\opt\texttt +\def\cs#1{\texttt{\char`\\#1}} + + +\execJSOn +\useBeginQuizButton[\CA{Begin}] +\useEndQuizButton[\CA{End}] + +% the default PIN number for eq-pin2corr is 5243 +% +% When building your own quiz document, decide on a PIN number +% then use the utility document get-hash-string.pdf to acquire +% the corresponding hash string. Place your own PIN and hash string +% in the two arguments of \declPINId. +\declPINId{5243}{02JRVZdRgYgCA-Rtje8VkD} % PIN number, hash string +% So instructor can bypass entering the PIN. +\classPINVar{_PinCode1} + +\DeclareQuiz{qz1} + +\begin{document} + +\section{Introduction} + +\noindent\textbf{Goal:} Make the \uif{Correct} button password protected. +This revised file now uses the +\pkg{\href{https://ctan.org/pkg/eq-pin2corr}{eq-pin2corr}} package to make +things simpler. Additional commands are introduced here to manage the smooth +transition from password PIN protection, to an ordinary quiz, and back to a +PIN protected quiz.\medskip + +\noindent\textbf{Discussion:} This file illustrates the methods for +protecting the \uif{Correct} button with a password. To create a PIN +protected \uif{Correct} button, expand \cs{usePINCorrBtn} (\pkg{eq-pin2corr}) +prior to the quiz. Following the quiz, use the commands \cs{restoreNormalEndQuiz} +(\pkg{exerquiz}) and \cs{restoreCorrBtn} (\pkg{eq-pin2corr}). The latter +restores the default action of the \uif{End Quiz} control, this is needed +because \pkg{thorshammer} changes this action to a custom action; +\cs{restoreCorrBtn} removes the PIN security of the \uif{Correct} control. + +There is another command \cs{useEndQuizThor} (\pkg{thorshammer}) is used to +modify the \uif{End Quiz} control to the action as defined by the +\pkg{thorshammer} package. Read additional comments found in the body and +source of this file. + + +\newpage + +\section{Quiz with PIN to correct} + +% require students to answer all questions +\renewcommand\minQuizResp{highThreshold} % 1 + +For the quiz below, the \uif{Correct} button has an encrypted +password. The password appears in parentheses for the convenience of the casual reader. + +% use password version of \CorrButton action +\usePINCorrBtn + +\begin{quiz*}{\currQuiz} +Solve each +\begin{questions} + \item The sum of 1 and 1 is\dots +\begin{answers}{5} +\bChoices + \Ans0 0\eAns + \Ans0 1\eAns + \Ans1 2\eAns + \Ans0 3\eAns + \Ans0 4\eAns +\eChoices +\end{answers} +\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ +\end{questions} +\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz} (PIN: \numPINId)\vcgBdry + +\AnswerField{\currQuiz} + +\newpage + +\thQzHeaderL{Ordinary Quiz} +\thQzHeaderCQ{Quiz 2} + + +\section{Quiz without PIN to correct} + +Now we try to create an ordinary \pkg{exerquiz} quiz without password protection. + + +% Now do an ordinary quiz +\restoreNormalEndQuiz +\restoreCorrBtn + +\renewcommand\minQuizResp{lowThreshold} + +\begin{quiz*}{qz2} +Solve each +\begin{questions} + \item The sum of 1 and 1 is\dots +\begin{answers}{5} +\bChoices + \Ans0 0\eAns + \Ans0 1\eAns + \Ans1 2\eAns + \Ans0 3\eAns + \Ans0 4\eAns +\eChoices +\end{answers} +\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ +\end{questions} +\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz}\vcgBdry + +\AnswerField{\currQuiz} + + +\newpage + +\thQzHeaderL{Secured Quiz} +\thQzHeaderCQ{Quiz 3} + + +\section{Another quiz with PIN to correct} + +It is possible to have a different PIN number for this quiz (multiple PINs in one document), but +I see no need for this. + +The previous quiz was a normal \pkg{exerquiz} quiz. We now want another PIN protected quiz, so +prior to this next quiz we expand \cs{usePINBtn} and \cs{useEndQuizThor}. The latter is a new +command that restores the default action of the \pkg{thorshammer} package to the \uif{End Quiz} event. + +\DeclareQuiz{qz3} + +\usePINCorrBtn +\useEndQuizThor + +% require students to answer all questions +\renewcommand\minQuizResp{highThreshold} + +\begin{quiz*}{qz3} +Solve each +\begin{questions} + \item The sum of 1 and 1 is\dots +\begin{answers}{5} +\bChoices + \Ans0 0\eAns + \Ans0 1\eAns + \Ans1 2\eAns + \Ans0 3\eAns + \Ans0 4\eAns +\eChoices +\end{answers} +\item $9+8=\RespBoxMath{17}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{17}$ +\end{questions} +\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz} (PIN: \numPINId)\vcgBdry + +\AnswerField{\currQuiz} + + +\end{document} diff --git a/macros/latex/contrib/thorshammer/folder-js/aeb-reader.js b/macros/latex/contrib/thorshammer/folder-js/aeb-reader.js deleted file mode 100644 index 87783f86b7..0000000000 --- a/macros/latex/contrib/thorshammer/folder-js/aeb-reader.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - AEB Adobe Acrobat Reader JavaScript Methods - - Copyright (C) 2019 AcroTeX.Net - D. P. Story - http://www.acrotex.net - - Version 1.0 -*/ -// console.println("Version 1.0 (Reader DC)"); -if ( typeof aebTrustedFunctions == "undefined") { - aebTrustedFunctions = app.trustedFunction( function ( doc, oFunction, oArgs ) - { - app.beginPriv(); - var retn = oFunction( oArgs, doc ); - app.endPriv(); - return retn; - }); -} -aebSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - app.execMenuItem("Save"); - app.endPriv(); -}); -aebDocSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - var Msg=function(e){return (aebDocSaveAs.msg==undefined)?("Doc SaveAs Error: " + e.toString()):aebDocSaveAs.msg;} - var Action=function(){return ((aebDocSaveAs.action==undefined)?null:eval(aebDocSaveAs.action));} - app.beginPriv(); - try { - return retn = doc.saveAs(oArgs); - } catch(e){console.println(Msg(e));Action();} - app.endPriv(); - aebDocSaveAs.msg=undefined; - aebDocSaveAs.action=undefined; -}); -aebBrowseForDoc = app.trustPropagatorFunction( function ( oArgs ) -{ - app.beginPriv(); - return retn = app.browseForDoc(oArgs); - app.endPriv(); -}); -aebLaunchURL=app.trustPropagatorFunction ( function ( oArgs ) -{ - app.beginPriv(); - var retn = app.launchURL(oArgs); - app.endPriv(); -}); - diff --git a/macros/latex/contrib/thorshammer/folder-js/aeb_pro.js b/macros/latex/contrib/thorshammer/folder-js/aeb_pro.js deleted file mode 100644 index 31c6c2fd7e..0000000000 --- a/macros/latex/contrib/thorshammer/folder-js/aeb_pro.js +++ /dev/null @@ -1,158 +0,0 @@ -/* - AEB Pro Document Assembly Methods - - Copyright (C) 2012 -- 2019 AcroTeX.Net - D. P. Story - http://www.acrotex.net - - Version 1.7.2 -*/ -// console.println("Version 1.7.2"); -if ( typeof aebTrustedFunctions == "undefined") { - aebTrustedFunctions = app.trustedFunction( function ( doc, oFunction, oArgs ) - { - app.beginPriv(); - var retn = oFunction( oArgs, doc ); - app.endPriv(); - return retn; - }); -} -aebAddWatermarkFromFile = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - return retn = doc.addWatermarkFromFile(oArgs); - app.endPriv(); -}); -aebImportIcon = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - return retn = doc.importIcon(oArgs); - app.endPriv(); -}); -aebInsertPages = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - var Msg=function(e){return (aebInsertPages.msg==undefined)?("Insert Pages Error: " + e.toString()):aebInsertPages.msg;} - app.beginPriv(); - try { doc.insertPages(oArgs); } catch(e) {console.println(Msg(e));} - app.endPriv(); - aebInsertPages.msg=undefined; -}) -aebAppOpenDoc = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - var Msg=function(e){return (aebAppOpenDoc.msg==undefined)?("App Open Doc Error: " + e.toString()):aebAppOpenDoc.msg;} - app.beginPriv(); - try { var retn = app.openDoc(oArgs); } catch(e) {console.println(Msg(e));} - app.endPriv(); - aebAppOpenDoc.msg=undefined; - return retn; -}) -aebImportTextData = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - return retn = doc.importTextData(oArgs); - app.endPriv(); -}); -aebImportSound = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - return retn = doc.importSound(oArgs); - app.endPriv(); -}); -aebSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - app.execMenuItem("Save"); - app.endPriv(); -}); -// Version 1.7.2 -aebDocSaveAs = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - var Msg=function(e){return (aebDocSaveAs.msg==undefined)?("Doc SaveAs Error: " + e.toString()):aebDocSaveAs.msg;} - var Action=function(){return ((aebDocSaveAs.action==undefined)?null:eval(aebDocSaveAs.action));} - app.beginPriv(); - try { - return retn = doc.saveAs(oArgs); - } catch(e){console.println(Msg(e));Action();} - app.endPriv(); - aebDocSaveAs.msg=undefined; - aebDocSaveAs.action=undefined; -}); -aebExtractPages = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - return retn = doc.extractPages(oArgs); - app.endPriv(); -}); -aebMailDoc = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - return retn = doc.mailDoc(oArgs); - app.endPriv(); -}); -aebImportDataObject = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - return retn = doc.importDataObject(oArgs); - app.endPriv(); -}); -aebSignatureSign = app.trustPropagatorFunction( function ( oArgs, field ) -{ - app.beginPriv(); - return retn = field.signatureSign(oArgs); - app.endPriv(); -}); -aebSecurityHandlerLogin = app.trustPropagatorFunction( function ( oArgs, securityHandler ) -{ - app.beginPriv(); - return retn = securityHandler.login(oArgs); - app.endPriv(); -}); -aebSecurityGetHandler = app.trustPropagatorFunction( function ( oArgs, security ) -{ - app.beginPriv(); - return retn = security.getHandler(oArgs); - app.endPriv(); -}); -aebAppGetPath = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - var retn = app.getPath(oArgs); - app.endPriv(); - return retn; -}); -aebSignatureSetSeedValue = app.trustPropagatorFunction( function ( oArgs, field ) -{ - app.beginPriv(); - return retn = field.signatureSetSeedValue(oArgs); - app.endPriv(); -}); -aebAddIcon=app.trustPropagatorFunction( function ( oArgs, doc ) -{ - app.beginPriv(); - doc.addIcon(oArgs); - app.endPriv(); -}); -aebCreateTemplate = app.trustPropagatorFunction( function ( oArgs, doc ) -{ - var Msg=function(e){return (aebCreateTemplate.msg==undefined)?("Create Template Error: " + e.toString()):aebCreateTemplate.msg;} - app.beginPriv(); - try { doc.createTemplate(oArgs); } catch(e) {console.println(Msg(e));} - app.endPriv(); - aebCreateTemplate.msg=undefined; - -}) -// Version 1.7.1 removed doc from arg in browse and launch -aebBrowseForDoc=app.trustPropagatorFunction( function ( oArgs ) -{ - app.beginPriv(); - var retn = app.browseForDoc(oArgs); - app.endPriv(); -}); -// added aebLaunchURL Version 1.7 -aebLaunchURL=app.trustPropagatorFunction ( function ( oArgs ) -{ - app.beginPriv(); - var retn = app.launchURL(oArgs); - app.endPriv(); -}); - diff --git a/macros/latex/contrib/thorshammer/system-scripts/standalone/00-class.cfg b/macros/latex/contrib/thorshammer/system-scripts/standalone/00-class.cfg new file mode 100644 index 0000000000..fda6a2efa1 --- /dev/null +++ b/macros/latex/contrib/thorshammer/system-scripts/standalone/00-class.cfg @@ -0,0 +1,4 @@ +\classMember{Muehle}{Waeter}{MW634B/_Thor} +\classMember{Anton}{Mueller}{AM256M/_Thor} +\classMember{Laura}{Voegt}{LM356B/_Thor} + diff --git a/macros/latex/contrib/thorshammer/system-scripts/standalone/csvTOcfg.ps1 b/macros/latex/contrib/thorshammer/system-scripts/standalone/csvTOcfg.ps1 new file mode 100644 index 0000000000..87cda66f1a --- /dev/null +++ b/macros/latex/contrib/thorshammer/system-scripts/standalone/csvTOcfg.ps1 @@ -0,0 +1,67 @@ +# Make a complete cfg for thorshammer package from a csv list +# accepted list delimiters: , or ;. Spaces ar not allowed! Replace all german umlauts +# with ue, oe, ae, ss to avoid problems with thorshammer package +# +# Example list: +# First Name|Last Name|Folder +# Anton;Müller;AM29914M +#\classMember{Anton}{Mueller}{AM299/instructor-name} +# Anton;Müller;*C:/.../AM299 +#\classMember{Anton}{Mueller}*{C:/.../AM299/instructor-name} +# +If ( $args.Length -eq 0 ) { + Write-Host "A CSV file of the class members is required," ` + "see documentation" + exit +} else { + $listName=$args[0] + if(Test-Path -Path ./$listName.csv) { + } else { + Write-Host "Cannot find the file `"$listName.csv`" in the current folder," ` + "check the spelling, do not include the extension." + exit + } +} +get-content "$listName.csv" | foreach { +"\classMember{" + $_ ` ++ "/_Thor}" ` +-Replace ";", "}{" ` +-Replace ",","}{" ` +-Replace "{\*", "*{" } | Set-Content "convertedList.cfg" + +# Store convertedList.cfg in a variable +$convertedListCfg = get-content .\convertedList.cfg -Raw + +# function to replace umlauts +# https://www.datenteiler.de/powershell-umlaute-ersetzen/ +function Replace-Umlaute ([string]$s) { + $UmlautObject = New-Object PSObject | Add-Member -MemberType NoteProperty -Name Name -Value $s -PassThru + + # hash tables are by default case insensitive + # we have to create a new hash table object for case sensitivity + + $characterMap = New-Object system.collections.hashtable + $characterMap.ä = "ae" + $characterMap.ö = "oe" + $characterMap.ü = "ue" + $characterMap.ß = "ss" + $characterMap.Ä = "Ae" + $characterMap.Ü = "Ue" + $characterMap.Ö = "Oe" + + foreach ($property in "Name") { + foreach ($key in $characterMap.Keys) { + $UmlautObject.$property = $UmlautObject.$property -creplace $key,$characterMap[$key] + } + } + $UmlautObject +} + +# replace umlauts in .cfg and make a correctedListCfg +$correctedListCfg = Replace-Umlaute "$convertedListCfg" +$correctedListCfg.Name + +# Finally append correctedListCfg to desired +# cfg file, usually class.cfg +add-content "00-class.cfg" $correctedListCfg.Name +Remove-Item convertedList.cfg diff --git a/macros/latex/contrib/thorshammer/system-scripts/standalone/mkclassFolders.ps1 b/macros/latex/contrib/thorshammer/system-scripts/standalone/mkclassFolders.ps1 new file mode 100644 index 0000000000..7f7fcc3ef6 --- /dev/null +++ b/macros/latex/contrib/thorshammer/system-scripts/standalone/mkclassFolders.ps1 @@ -0,0 +1,60 @@ +$classPath="C:\Users\dpstory\Desktop\Test Folder\target\myClass" +# Create class folders +If ( $args.Length -eq 0 ) { + Write-Host "A CVS file of the class members is required," ` + "see documentation" + exit +} else { + $listName=$args[0] + if(Test-Path -Path ./$listName.csv) { + } else { + Write-Host "Cannot find the file `"$listName.csv`" in the current folder," ` + "check the spelling, do not include the extension." + exit + } +} +get-content "$listName.csv" | foreach { +$_ +">_Thor" -Replace ";","," } | Set-Content "commaList.csv" + +$argList=@() +get-content "commaList.csv" | %{ +# Write-Host "$_" + $split=$_.split(",") +# Write-Host $split[2] + $argList+=$split[2] +} +$currentPath=Convert-Path . +cd $classPath +Write-Host "Creating folder structure at `$classPath`"," ` + "with some exceptions" +for ($i=0; $i -lt $argList.length; $i++) { + $arg=$argList[$i] + $splitTwo=$argList[$i].split(">") + $firstName=$splitTwo[0] + $secondName=$splitTwo[1] + if ($firstName[0] -eq "*") { + $arg=$arg.substring(1) + $msg="Parsing the full path $arg" -Replace ">","/" + Write-Host $msg + Write-Host "Creating exceptional folders" + $firstName=$firstName.substring(1) +#Write-Host "$firstName" + Write-Host " Creating folder: $firstName" + New-Item $firstName -ErrorAction:Ignore -ItemType directory + $secondName=$firstName+"/$secondName" +#Write-Host "$secondName" + Write-Host " Creating folder: $secondName" + New-Item $secondName -ErrorAction:Ignore -ItemType directory + } else { + $msg="Parsing the relative path $arg" -Replace ">","/" + Write-Host $msg + Write-Host " Creating folder: $firstName" + New-Item $firstName -ErrorAction:Ignore -ItemType directory + cd $firstName + Write-Host " Creating subfolder of $firstName named: $secondName" + New-Item $secondName -ErrorAction:Ignore -ItemType directory + cd .. + } +} +cd $currentPath +Remove-Item commaList.csv diff --git a/macros/latex/contrib/thorshammer/system-scripts/thors-structure/thmclass.ps1 b/macros/latex/contrib/thorshammer/system-scripts/thors-structure/thmclass.ps1 index 2dcbc65c25..7f1f72bf27 100644 --- a/macros/latex/contrib/thorshammer/system-scripts/thors-structure/thmclass.ps1 +++ b/macros/latex/contrib/thorshammer/system-scripts/thors-structure/thmclass.ps1 @@ -1,3 +1,11 @@ +# Version 1.4 changes +# ===================================================================================================== +# small modifications of tex template +# remove some comments +# added partial support for cntdwn package, not fully working here to keep tex template small +# interested users should refer to Acrotex blog for further explanations +# anyway the template compiles without errors +# ===================================================================================================== # Version 1.3 changes # ===================================================================================================== # copyka.ps1 allows a comment character (#) @@ -415,7 +423,7 @@ New-Item "tex-template.tex" -ItemType file If ($locale -like "*$myLocale*") { # German ###################################### Set-Content "tex-template.tex" '%% Customize template ! %% -\documentclass[fontsize=11pt]{scrartcl} +\documentclass[fontsize=12pt]{scrartcl} \usepackage[% german, pro, @@ -424,17 +432,19 @@ navibar, forcolorpaper %forpaper ]{web} +% Page layout \usepackage[top=20mm,left=20mm,right=20mm,bottom=25mm]{geometry} +%\useFullWidthForPaper \usepackage[usesumrytbls,allowrandomize]{exerquiz} \usepackage{ran_toks} \usepackage[% % usebatch % copy to class folder -batchdistr % only copy to instructors folder -% testmode % testing quizzes +% batchdistr % only copy to instructors folder +testmode % testing quizzes ]{thorshammer} \hypersetup{pdfencoding=auto} % include or remove hyperref options %\usepackage{thorshammerConf} % place your own sty file here -\usepackage[autostyle=true]{csquotes} % change quotes globally +%\usepackage[autostyle=true]{csquotes} % change quotes globally \DeclareQuiz{q#number} \setInitMag{fitwidth} @@ -454,8 +464,8 @@ batchdistr % only copy to instructors folder %\DeclareCoverPage{0} % Header settings -\thQzName{#theme} % Thema -\thQzHeaderL{#class} % Klasse +\thQzName{#theme} +\thQzHeaderL{#class} \thQzHeaderCQ{#subject: \thqzname} \thQzHeaderCS{Lösungen: \thqzname} @@ -464,7 +474,7 @@ batchdistr % only copy to instructors folder \subject{#subject} \author{#instrName} \keywords{#time} -\university{Freiherr-vom-Stein-Berufskolleg} % change to your institution +\university{Freiherr-vom-Stein-Berufskolleg} \version{#number} \copyrightyears{#date} @@ -475,9 +485,26 @@ batchdistr % only copy to instructors folder \sadMultQuizzes \end{makeClassFiles} +% Timer settings, this are personal settings for a timer in the quiz, if you want that, refer to +% http://www.acrotex.net/blog/?p=450 +% with \usepackage[shortcount]{cntdwn} + +% \newcommand{\thorTimer}[2]{% +% \setShortCntDwn{CntDwnTimer1} +% {% +% length=#1*\minutes, +% notify1=#2*\minutes, +% event1=AllowEndQuiz1, +% event2=NoAction, +% event3=NoAction, +% endEvent=EndTheQuiz1 +% } +% } +%\thorTimer{#time}{10} % original command \setShortCntDwn + \begin{document} + \makeinlinetitle -% Instructions % Declare Quiz bodys \declareQuizBody{qzbody1} @@ -487,11 +514,22 @@ batchdistr % only copy to instructors folder \begin{qzbody1} \bRTVToks{\currQuiz} -% Change margin settings for summary tables, and set it back after -% \thQuizHeader execution -\newgeometry{top=20mm,left=30mm,right=20mm,bottom=25mm} \thQuizHeader -\newgeometry{top=20mm,left=20mm,right=20mm,bottom=25mm} + +% priorInitQuiz for the timer, see Timer settings +\begin{defineJS}[\makeesc\!]{\priorInitQuiz} +this.getField("endQuiz.!thisQuiz").display=display.hidden; +qtypesReadOnly("!thisQuiz",false); +\end{defineJS} + +% postInitQuiz for timer, see Timer settings +\begin{defineJS}[\makeesc\!]{\postInitQuiz} +AllowEndQuiz1.arg="!currQuiz"; +EndTheQuiz1.arg="!currQuiz"; +sStartTimer(_oCntDwnTimer1); +\end{defineJS} + +% Instructions here \begin{quiz*}{\currQuiz} % Bearbeiten Sie folgende Aufgaben. @@ -526,7 +564,11 @@ Set-Content "tex-template.tex" '%% Customize template ! %% \usepackage{web} \usepackage[usesumrytbls,allowrandomize]{exerquiz} \usepackage{ran_toks} -\usepackage[usebatch]{thorshammer} +\usepackage[% +% usebatch % copy to class folder +% batchdistr % only copy to instructors folder +testmode % testing quizzes +]{thorshammer} \DeclareQuiz{q#number} @@ -560,8 +602,8 @@ Set-Content "tex-template.tex" '%% Customize template ! %% %\DeclareCoverPage{0} % Header settings -\thQzName{#theme} % topic -\thQzHeaderL{#class} % class +\thQzName{#theme} +\thQzHeaderL{#class} \thQzHeaderCQ{#subject: \thqzname} \thQzHeaderCS{Solutions: \thqzname} @@ -581,14 +623,51 @@ Set-Content "tex-template.tex" '%% Customize template ! %% \sadMultQuizzes \end{makeClassFiles} +% Timer settings, this are personal settings +% for a timer in the quiz, if you want that, refer to % +% http://www.acrotex.net/blog/?p=450 + +% \newcommand{\thorTimer}[2]{% +% \setShortCntDwn{CntDwnTimer1} +% {% +% length=#1*\minutes, +% notify1=#2*\minutes, +% event1=AllowEndQuiz1, +% event2=NoAction, +% event3=NoAction, +% endEvent=EndTheQuiz1 +% } +% } +%\thorTimer{#time}{10} % original command \setShortCntDwn + + \begin{document} + +% Declare quiz bodies \declareQuizBody{qzbody1} +%\declareQuizBody{qzbody2} +%\declareQuizBody{qzbody3} +%\declareQuizBody{qzbody4} + \begin{qzbody1} \bRTVToks{\currQuiz} \thQuizHeader +% priorInitQuiz for the timer, see Timer settings +\begin{defineJS}[\makeesc\!]{\priorInitQuiz} +this.getField("endQuiz.!thisQuiz").display=display.hidden; +qtypesReadOnly("!thisQuiz",false); +\end{defineJS} + +% postInitQuiz for timer, see Timer settings +\begin{defineJS}[\makeesc\!]{\postInitQuiz} +AllowEndQuiz1.arg="!currQuiz"; +EndTheQuiz1.arg="!currQuiz"; +sStartTimer(_oCntDwnTimer1); +\end{defineJS} + % Instructions \begin{quiz*}{\currQuiz} Solve each of these problems, passing is 100\%. diff --git a/macros/latex/contrib/thorshammer/thorshammer.dtx b/macros/latex/contrib/thorshammer/thorshammer.dtx index b50d035d8b..864fc9778d 100644 --- a/macros/latex/contrib/thorshammer/thorshammer.dtx +++ b/macros/latex/contrib/thorshammer/thorshammer.dtx @@ -16,11 +16,14 @@ % %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{thorshammer} -% [2020/01/13 v1.5.7 Support commands for Thor's way] +% [2021/06/24 v1.5.11 Support commands for Thor's way] %<*driver> \documentclass{ltxdoc} \usepackage[colorlinks,hyperindex=false,linktocpage,bookmarksnumbered]{hyperref} \usepackage{calc} +\makeatletter +\let\@latex@warning@no@line\@gobble +\makeatother %\def\texorpdfstring#1#2{#1} %\pdfstringdefDisableCommands{\let\\\textbackslash} \OnlyDescription % comment out for implementation details @@ -33,6 +36,7 @@ \let\opt\texttt \let\app\textsf \let\pkg\textsf +\let\uif\textsf \let\tops\texorpdfstring \def\EXCL{!} \def\nmpsep#1{\hskip-\marginparsep\texttt{#1}} @@ -99,6 +103,8 @@ questions, bug detecting, and motivation. High regards and respect to both. D. P % This package supports the Thorsten's workflow by providing the necessary form elements and JavaScript % to carry out his(her) plan. What happens to the quiz after that, I do not know. % +%\changes{v1.5.8}{2020/01/21}{Published password of \string\texttt{"acrotex"} for the two +%security related action sequences} %\changes{v1.4}{2019/08/11}{Begin major change to this package, leaving v1.3.8 as our best working % version prior to this update. } % @@ -166,11 +172,13 @@ questions, bug detecting, and motivation. High regards and respect to both. D. P % \end{macrocode} % \subsection{Required packages} % \begin{macrocode} -\RequirePackage{insdljs}[2019/08/06] +\RequirePackage{insdljs}[2021/06/19] % \end{macrocode} % We use the \opt{usealtadobe} option of \pkg{insdljs}, but not directly. If \cs{inputAltAdbFncs} % is \cs{relax} than the functions have not already been input above \pkg{thorshammer}. % \changes{v1.3.5}{2019/08/06}{Use \string\cs{usedAdbFuncs} to detect \string\opt{usealtadobe} option} +% \changes{v1.5.11}{2021/06/24}{Require \string\pkg{insdljs} dated 2021/06/19 or later, which +% itself requires \string\pkg{acrotex-js}.} % \begin{macrocode} \ifx\usedAdbFuncs\dl@NO \def\inputAltAdbFncs{\InputIfFileExists{altadbfncs.def}% @@ -182,8 +190,8 @@ questions, bug detecting, and motivation. High regards and respect to both. D. P \let\inputAltAdbFncs\relax \fi \inputAltAdbFncs -\RequirePackage{exerquiz}[2019/08/13] -\RequirePackage{eq-save}[2019/08/07] +\RequirePackage{exerquiz}[2021/05/29] +\RequirePackage{eq-save}[2021/04/27] \let\execjs\dl@YES \@ifundefined{CommentStream}{\newwrite\CommentStream}{} \def\csarg#1#2{\expandafter#1\csname#2\endcsname} @@ -918,14 +926,14 @@ new Array("PointsField.\currQuiz","EssayField.\currQuiz"));\r % name (\cmd\currQuiz); \texttt{@p(2)} is the number of questions; and \texttt{@p(3)} is % the password. % \begin{macrocode} -\begin{defineJS}[\catcode`\@=0\relax]{\pwdKeyJS} +\begin{defineJS}[\makeesc\@]{\pwdKeyJS} if (event.willCommit) { if (event.value==@p(3)) { @commonPassKey } } \end{defineJS} -\begin{defineJS}[\catcode`\@=0\relax]{\commonPassKey} +\begin{defineJS}[\makeesc\@\makecmt\%]{\commonPassKey} % \end{macrocode} % Added code from \cs{qz@IDTxtField} to avoid the dreaded `q1 is undefined' % JavaScript error message. This happends when the \textsf{Mark It} control @@ -941,8 +949,9 @@ if (typeof @oField=="undefined") var @oField=new Object; restoreQuizData(); this.calculate=true; +@ifthtestmode@else% var f=this.getField("postQzMsg"); -if (f!=null) f.display=display.hidden; +if (f!=null) f.display=display.hidden;@fi var f=this.getField("pbStuSvCl"); if (f!=null) f.display=display.hidden; var f=this.getField("ScoreField.@p(1)"); @@ -993,7 +1002,7 @@ problem, assigning the maximum instead"} % \changes{v1.1.3}{2019/07/03}{Remove lines not needed since \string\cs{LngPtsFld} became % a calculation field} % \begin{macrocode} -\begin{defineJS}[\makeesc\@\catcode`\%=14\relax]{\essayQKey} +\begin{defineJS}[\makeesc\@\makecmt\%]{\essayQKey} if (event.willCommit) { var qpts=(1*event.value); if (isNaN(qpts)) { @@ -1163,7 +1172,7 @@ cFilenameInit: cSave }); if(\instrAutoClose&&bOK) this.closeDoc(true); } \end{insDLJS} -\begin{defineJS}[\catcode`\@=0\relax]{\freezeQuizMU} +\begin{defineJS}[\makeesc\@]{\freezeQuizMU} var f, fname; var bOK=true; if(@instrAutoSave) { @@ -1277,7 +1286,8 @@ if(bOk)} \toks@=\expandafter{\postSubmitQuiz\t\t oRecordOfQuizData["ProbDist.\oField"]=ProbDist;\r\t\t oRecordOfQuizData["RightWrong.\oField"]=RightWrong;\r\t\t - var f=this.getField("postQzMsg");\r\t\t + \ifthtestmode\else + var f=this.getField("postQzMsg");\r\t\t\fi if (f!=null) f.display=display.visible;\r\t\t var f=this.getField("pbStuSvCl");\r\t\t if (\stuAutoSave&&f!=null)f.display=display.visible;} %\r\t\t @@ -1298,10 +1308,10 @@ beginning.\n\n Press \\"Yes\\" to end the quiz."} \def\ThorsAlertTitle#1{\flJSStr*[noquotes]{\ThorsAlert@Title}{#1}} \ThorsAlertTitle{"Thor's Hammer"} % \end{macrocode} -% \DescribeMacro\eq@EndQzBtnScript The modified script for the end of the +% \DescribeMacro\eq@EndQzBtnScriptThor The modified script for the end of the % dps0624 % quiz button. We rework the script of \cs{eq@@EndQuizButtonActions}, taken from \pkg{exerquiz}. % \begin{macrocode} -\begin{defineJS}[\makeesc\*\catcode`\%=14\relax]{\eq@EndQzBtnScript} +\begin{defineJS}[\makeesc\*\makecmt\%]{\eq@EndQzBtnScriptThor} if (!isQuizInitialized("*currQuiz")) eqAppAlert(InitMsg("*bqlabelISO"),3); else { @@ -1312,7 +1322,7 @@ cTitle: *ThorsAlert@Title, nIcon: 2, nType: 2}); *currQuiz.PtValues=(new % Array(*pointValuesArray)); ProbType=[*ptypeArray]; -*if@inclkey% +*if@inclkey *currQuiz.CorrAns=(new % Array(*corrAnsArray)); *fi% @@ -1331,7 +1341,16 @@ Array(*corrAnsArray)); % \end{macrocode} % Now, we redefine \cs{eq@@EndQuizButtonActions} of \pkg{exerquiz}. % \begin{macrocode} -\def\eq@@EndQuizButtonActions{\A{\JS{\eq@EndQzBtnScript}}} +\def\eq@@EndQuizButtonActions{\A{\JS{\eq@EndQzBtnScriptThor}}} % dps0624 +\let\eq@@EndQuizButtonActionsThorSave\eq@@EndQuizButtonActions % dps0624 +% \end{macrocode} +% Define \DescribeMacro\useEndQuizThor\cs{useEndQuizThor} to restore the \uif{End Quiz} +% control to the action defined in this package. (Other packages may removed this +% \uif{End Quiz} action.) +% \changes{v1.5.11}{2021/06/24}{Define \string\cs{useEndQuizThor}} +% \begin{macrocode} +\def\useEndQuizThor{\let\eq@@EndQuizButtonActions + \eq@@EndQuizButtonActionsThorSave} % \end{macrocode} % Add a \textsf{SaveAs} menu item to end of the quiz % \changes{v1.1.4}{2019/07/04}{Add a SaveAs menu item to end of the quiz} @@ -1403,7 +1422,7 @@ Array(*corrAnsArray)); \newif\ifUseStuSaveAsDialog\UseStuSaveAsDialogfalse \def\useStuSaveAsDialogOn{\UseStuSaveAsDialogtrue} \def\useStuSaveAsDialogOff{\UseStuSaveAsDialogfalse} -\begin{defineJS}[\makeesc\*\catcode`\%=14\relax]{\autoSaveStuJS} +\begin{defineJS}[\makeesc\*\makecmt\%]{\autoSaveStuJS} var bOK=true; global.bOkClose=true; var _path=this.path; @@ -1773,9 +1792,14 @@ Array(*corrAnsArray)); % under the name of \texttt{\ameta{name}.cut}. % \changes{v1.4}{2019/08/11}{Changes to \string\cs{InputBodyQuiz} % to support solution sets} +% \changes{v1.5.9}{2020/05/29}{Defined public \string\cs{qzLtr} version +% of \string\cs{theth@qzCnt}} +% \changes{v1.5.10}{2021/05/31}{Added \string\cs{qzLtr} the public version of +% \string\cs{theth@qzCnt}} % \begin{macrocode} \newcounter{th@qzCnt} \def\theth@qzCnt{\alph{th@qzCnt}} +\let\qzLtr\theth@qzCnt % dps5-29 \newcommand{\InputQuizBody}[1]{\newpage %\thPageOne \@ifundefined{thisQuizOrig}{\edef\thisQuizOrig{\thisQuiz} \let\Hy@EveryPageAnchor\relax}{}\stepcounter{th@qzCnt}% @@ -1806,13 +1830,15 @@ Array(*corrAnsArray)); % so the another rendition to write solutions to a fresh file. % \begin{macrocode} \immediate\openout \quiz@solns \jobname.qsl - \@ifundefined{ps@webheadings}{% - \def\th@QzHeaderL{\th@QzHeaderLQ}% - \def\th@QzHeaderC{\th@QzHeaderCQ}% - }{% - \lheader{\th@QzHeaderLQ}% - \cheader{\th@QzHeaderCQ}% - }% + \ifthordinary\else + \@ifundefined{ps@webheadings}{% + \def\th@QzHeaderL{\th@QzHeaderLQ}% + \def\th@QzHeaderC{\th@QzHeaderCQ}% + }{% + \lheader{\th@QzHeaderLQ}% + \cheader{\th@QzHeaderCQ}% + }% + \fi } % \end{macrocode} % \subsection{Building quizzes with \tops{\protect\env}{}{makeClassFiles} \& \tops{\protect\cs}{\textbackslash}{sadQuizzes}} @@ -1855,8 +1881,10 @@ Array(*corrAnsArray)); \def\setArrayLength{\ifbasicmethods0\else lst.length\fi} \def\setfilesuffix{\ifuseclassOpt"-"+fN+"_"+lN\else \ifbasicmethods""\else"-"+(i+1)\fi\fi+".pdf"} -\begin{defineJS}[\def\defineJSjsR{^^J}\let\u\relax - \catcode`\@=0\relax]{\sadQuizzes} +% \end{macrocode} +% Begin \cs{sadQuizzes} here. +% \begin{macrocode} +\begin{defineJS}[\dfnJSCR{^^J}\let\u\relax\makeesc\@]{\sadQuizzes} % \end{macrocode} % If \cs{autoCopyOff}, then this script does nothing % \begin{macrocode} @@ -2165,7 +2193,7 @@ app.clearTimeOut(toSa);",50); % \begin{macrocode} \documentclass{article} \usepackage[designi]{web} -\usepackage{eforms} +\usepackage{eforms}[2020/12/14] \hypersetup{pdfpagemode=UseAttachments} %% \previewOn\pmpvOn \parindent0pt \parskip6pt -- cgit v1.2.3