summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-06-27 03:01:41 +0000
committerNorbert Preining <norbert@preining.info>2021-06-27 03:01:41 +0000
commita090105758cdab68b58246a8aea7cb79dc168501 (patch)
tree367d8c9718710cbba51d660b61273b20fb056080 /macros/latex
parent3d1055e1e00548f29b9d4ba0a79c717b9b6b2ae3 (diff)
CTAN sync 202106270301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/acrotex-js/README.md4
-rw-r--r--macros/latex/contrib/acrotex-js/acrotex-js.dtx15
-rw-r--r--macros/latex/contrib/acrotex-js/docs/acrobat-in-workflow.pdfbin396417 -> 393853 bytes
-rw-r--r--macros/latex/contrib/acrotex-js/docs/acrotex-js.pdfbin213534 -> 218642 bytes
-rw-r--r--macros/latex/contrib/acrotex-js/js-files/aeb-reader.js (renamed from macros/latex/contrib/thorshammer/folder-js/aeb-reader.js)0
-rw-r--r--macros/latex/contrib/acrotex-js/js-files/aeb_pro.js11
-rw-r--r--macros/latex/contrib/acrotex-js/js-test/test_install.pdfbin47782 -> 47856 bytes
-rw-r--r--macros/latex/contrib/acrotex-js/js-test/test_install.tex1
-rw-r--r--macros/latex/contrib/huawei/huawei-cover-picture.pdf (renamed from macros/latex/contrib/huawei/cover-picture.pdf)bin253724 -> 253724 bytes
-rw-r--r--macros/latex/contrib/huawei/huawei.cls38
-rw-r--r--macros/latex/contrib/huawei/huawei.pdfbin336307 -> 336211 bytes
-rw-r--r--macros/latex/contrib/huawei/huawei.tex7
-rw-r--r--macros/latex/contrib/huawei/samples/huawei-cfp.tex2
-rw-r--r--macros/latex/contrib/hvfloat/Changes2
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/after1s1c.pdfbin80294 -> 80294 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/after2s2c.pdfbin86720 -> 86722 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/capPos.pdfbin95390 -> 95389 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/default1s1c.pdfbin81992 -> 81991 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/default1s2c.pdfbin83375 -> 83275 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/default2s1c.pdfbin79445 -> 79445 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/default2s2c.pdfbin85825 -> 85824 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/doublepage2s1c.pdfbin2317102 -> 2314853 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/doublepage2s2c.pdfbin619035 -> 619030 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/even1s1c.pdfbin77658 -> 77658 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/even1s2c.pdfbin86404 -> 86404 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/even2s1c.pdfbin84815 -> 84813 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/even2s2c.pdfbin85100 -> 85098 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/fullpage1s2c.pdfbin86778 -> 86773 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/inner1s2c.pdfbin84024 -> 84020 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/inner2s1c.pdfbin83979 -> 83977 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/inner2s2c.pdfbin84014 -> 84013 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/left2s2c.pdfbin85511 -> 85512 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-after1s1c.pdfbin142627 -> 142624 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-default1s1c.pdfbin146171 -> 146172 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-default1s2c.pdfbin94585 -> 94586 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-default2s1c.pdfbin146344 -> 146343 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-default2s2c.pdfbin92184 -> 92182 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-inner2s2c.pdfbin89789 -> 89784 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-outer2s2c.pdfbin92987 -> 92984 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/multi-right1s1c.pdfbin145742 -> 145736 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/odd1s1c.pdfbin77806 -> 77805 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/odd1s1c.tex2
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/odd1s2c.pdfbin86525 -> 86523 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/odd2s1c.pdfbin174218 -> 174218 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/odd2s2c.pdfbin85567 -> 85566 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/outer1s2c.pdfbin86320 -> 86318 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/outer2s1c.pdfbin84295 -> 84292 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/outer2s2c.pdfbin84682 -> 84680 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-after1s1c.pdfbin79176 -> 79267 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-default1s1c.pdfbin79887 -> 79967 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-default1s2c.pdfbin90508 -> 90508 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.pdfbin0 -> 87935 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.tex81
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-default2s2c.pdfbin90333 -> 90332 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-inner2s2c.pdfbin87859 -> 87855 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/paper-right1s1c.pdfbin80205 -> 80290 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/right1s1c.pdfbin80126 -> 80126 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/right1s2c.pdfbin89342 -> 89340 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/right2s1c.pdfbin81033 -> 81033 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/right2s2c.pdfbin85585 -> 85585 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-after1s1c.pdfbin143893 -> 143952 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-after2s2c.pdfbin144709 -> 144771 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-default1s1c.pdfbin144111 -> 144003 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-default1s2c.pdfbin144341 -> 144217 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-default2s2c.pdfbin143647 -> 143517 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-right1s1c.pdfbin143826 -> 143873 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-right1s2c.pdfbin144812 -> 144879 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/sub-right2s2c.pdfbin144268 -> 144315 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/wide1s2c.pdfbin120954 -> 120949 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/examples/wide2s2c.pdfbin121929 -> 121917 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/hvfloat.pdfbin7119431 -> 7126601 bytes
-rw-r--r--macros/latex/contrib/hvfloat/doc/hvfloat.tex227
-rw-r--r--macros/latex/contrib/hvfloat/doc/images/missing.txt4
-rw-r--r--macros/latex/contrib/hvfloat/latex/hvfloat-fps.sty10
-rw-r--r--macros/latex/contrib/hvfloat/latex/hvfloat.sty19
-rw-r--r--macros/latex/contrib/thorshammer/README.md8
-rw-r--r--macros/latex/contrib/thorshammer/docs/install-action-seq.pdfbin345357 -> 487300 bytes
-rw-r--r--macros/latex/contrib/thorshammer/docs/install-action-seq.tex81
-rw-r--r--macros/latex/contrib/thorshammer/docs/thmclass.pdfbin207656 -> 1807261 bytes
-rw-r--r--macros/latex/contrib/thorshammer/docs/thors-the-man.pdfbin1388897 -> 1457397 bytes
-rw-r--r--macros/latex/contrib/thorshammer/docs/thors-the-man.tex119
-rw-r--r--macros/latex/contrib/thorshammer/docs/thorshammer.pdfbin6227257 -> 490931 bytes
-rw-r--r--macros/latex/contrib/thorshammer/examples/nosolns/thexrt.tex4
-rw-r--r--macros/latex/contrib/thorshammer/examples/ordinary-option/get-hash-string.tex35
-rw-r--r--macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AA.tex190
-rw-r--r--macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.pdfbin0 -> 143076 bytes
-rw-r--r--macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.tex (renamed from macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AR.tex)123
-rw-r--r--macros/latex/contrib/thorshammer/folder-js/aeb_pro.js158
-rw-r--r--macros/latex/contrib/thorshammer/system-scripts/standalone/00-class.cfg4
-rw-r--r--macros/latex/contrib/thorshammer/system-scripts/standalone/csvTOcfg.ps167
-rw-r--r--macros/latex/contrib/thorshammer/system-scripts/standalone/mkclassFolders.ps160
-rw-r--r--macros/latex/contrib/thorshammer/system-scripts/thors-structure/thmclass.ps1109
-rw-r--r--macros/latex/contrib/thorshammer/thorshammer.dtx78
93 files changed, 800 insertions, 659 deletions
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 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
%<package>\ProvidesPackage{acrotex-js}
-%<package> [2021/06/19 v1.1 acrotex-js: A library of JavaScript files (dps)]
+%<package> [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
--- a/macros/latex/contrib/acrotex-js/docs/acrobat-in-workflow.pdf
+++ b/macros/latex/contrib/acrotex-js/docs/acrobat-in-workflow.pdf
Binary files 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
--- a/macros/latex/contrib/acrotex-js/docs/acrotex-js.pdf
+++ b/macros/latex/contrib/acrotex-js/docs/acrotex-js.pdf
Binary files differ
diff --git a/macros/latex/contrib/thorshammer/folder-js/aeb-reader.js b/macros/latex/contrib/acrotex-js/js-files/aeb-reader.js
index 87783f86b7..87783f86b7 100644
--- a/macros/latex/contrib/thorshammer/folder-js/aeb-reader.js
+++ b/macros/latex/contrib/acrotex-js/js-files/aeb-reader.js
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
--- a/macros/latex/contrib/acrotex-js/js-test/test_install.pdf
+++ b/macros/latex/contrib/acrotex-js/js-test/test_install.pdf
Binary files 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/huawei-cover-picture.pdf
index 6717a9ff35..6717a9ff35 100644
--- a/macros/latex/contrib/huawei/cover-picture.pdf
+++ b/macros/latex/contrib/huawei/huawei-cover-picture.pdf
Binary files 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
--- a/macros/latex/contrib/huawei/huawei.pdf
+++ b/macros/latex/contrib/huawei/huawei.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/after1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/after1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/after2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/after2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/capPos.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/capPos.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/default1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/default1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/default1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/default1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/default2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/default2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/default2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/default2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/doublepage2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/doublepage2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/doublepage2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/doublepage2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/even1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/even1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/even1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/even1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/even2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/even2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/even2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/even2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/fullpage1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/fullpage1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/inner1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/inner1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/inner2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/inner2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/inner2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/inner2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/left2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/left2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-after1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-after1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-default1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-default1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-default1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-default1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-default2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-default2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-default2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-default2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-inner2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-inner2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-outer2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-outer2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/multi-right1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/multi-right1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/odd1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/odd1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/odd1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/odd2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/odd2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/odd2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/odd2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/outer1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/outer1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/outer2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/outer2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/outer2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/outer2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/paper-after1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/paper-after1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/paper-default1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/paper-default1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/paper-default1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/paper-default1s2c.pdf
Binary files 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
--- /dev/null
+++ b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/paper-default2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/paper-default2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/paper-inner2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/paper-inner2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/paper-right1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/paper-right1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/right1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/right1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/right1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/right1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/right2s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/right2s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/right2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/right2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-after1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-after1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-after2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-after2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-default1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-default1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-default1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-default1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-default2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-default2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-right1s1c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-right1s1c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-right1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-right1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/sub-right2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/sub-right2s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/wide1s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/wide1s2c.pdf
Binary files 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
--- a/macros/latex/contrib/hvfloat/doc/examples/wide2s2c.pdf
+++ b/macros/latex/contrib/hvfloat/doc/examples/wide2s2c.pdf
Binary files differ
diff --git a/macros/latex/contrib/hvfloat/doc/hvfloat.pdf b/macros/latex/contrib/hvfloat/doc/hvfloat.pdf
index 6ddf3c1f56..918e5f5f67 100644
--- a/macros/latex/contrib/hvfloat/doc/hvfloat.pdf
+++ b/macros/latex/contrib/hvfloat/doc/hvfloat.pdf
Binary files 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@<name>|.
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
--- a/macros/latex/contrib/thorshammer/docs/install-action-seq.pdf
+++ b/macros/latex/contrib/thorshammer/docs/install-action-seq.pdf
Binary files 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
--- a/macros/latex/contrib/thorshammer/docs/thmclass.pdf
+++ b/macros/latex/contrib/thorshammer/docs/thmclass.pdf
Binary files 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
--- a/macros/latex/contrib/thorshammer/docs/thors-the-man.pdf
+++ b/macros/latex/contrib/thorshammer/docs/thors-the-man.pdf
Binary files 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
--- a/macros/latex/contrib/thorshammer/docs/thorshammer.pdf
+++ b/macros/latex/contrib/thorshammer/docs/thorshammer.pdf
Binary files 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/thqz-p2c.pdf b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.pdf
new file mode 100644
index 0000000000..3c37ab220c
--- /dev/null
+++ b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.pdf
Binary files differ
diff --git a/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AR.tex b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.tex
index 9123ce34d3..f9484694b8 100644
--- a/macros/latex/contrib/thorshammer/examples/ordinary-option/quiz-pwd-to-correct-AR.tex
+++ b/macros/latex/contrib/thorshammer/examples/ordinary-option/thqz-p2c.tex
@@ -1,74 +1,70 @@
-% Requires Acrobat
\documentclass{article}
\usepackage{amstext}
\usepackage[designi]{web}
-\usepackage{exerquiz}[2019/10/11]
+\usepackage{exerquiz}[2021/06/24]
+\usepackage[!showscore]{eq-pin2corr}[2021/06/24]
-\efsave\eq@@EndQuizButtonActions\as\eq@@EndQuizButtonActionsDefSave
+%\previewOn\pmpvOn
\usepackage[ordinary]{thorshammer}
-\thQzHeaderL{PWD Quiz}
+\thQzHeaderL{Secured Quiz}
\thQzHeaderCQ{Quiz 1}
-\efsave\eq@@EndQuizButtonActions\as\eq@@EndQuizButtonActionsThorSave
-
-%\previewOn\pmpvOn
-
+% 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
-\let\uif\textsf
+\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.
-
-\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
+% 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}
-\noindent\textbf{Goal:} Make the \uif{Correct} button password protected.\medskip
+\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.
-\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.
+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.
-%Delay the correction of this next quiz by expanding the new command
-%\verb|\pwdCorrBtnJS|.
\newpage
@@ -81,7 +77,8 @@ 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
+\usePINCorrBtn
+
\begin{quiz*}{\currQuiz}
Solve each
\begin{questions}
@@ -97,20 +94,24 @@ Solve each
\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
+\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.
-% restore \eq@@EndQuizButtonActions from its default defn
-\efrestore\eq@@EndQuizButtonActions\from\eq@@EndQuizButtonActionsDefSave
-% restore \CorrBtnActionsJS from \CorrBtnActionsJSSave
-\efrestore\CorrBtnActionsJS\from\CorrBtnActionsJSSave
+
+% Now do an ordinary quiz
+\restoreNormalEndQuiz
+\restoreCorrBtn
\renewcommand\minQuizResp{lowThreshold}
@@ -136,18 +137,23 @@ Solve each
\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.
-\DeclareQuiz{qz3}
+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}
-% restore \eq@@EndQuizButtonActions from \eq@@EndQuizButtonActionsThorSave
-\efrestore\eq@@EndQuizButtonActions\from\eq@@EndQuizButtonActionsThorSave
-% restore password protection for Correct button
-\efrestore\CorrBtnActionsJS\from\CorrBtnActionsPwdJS
+\usePINCorrBtn
+\useEndQuizThor
% require students to answer all questions
\renewcommand\minQuizResp{highThreshold}
@@ -167,8 +173,9 @@ Solve each
\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
+\end{quiz*}\quad\PointsField{\currQuiz}\olBdry\CorrButton{\currQuiz} (PIN: \numPINId)\vcgBdry
\AnswerField{\currQuiz}
-\end{document} \ No newline at end of file
+
+\end{document}
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 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{thorshammer}
-%<package> [2020/01/13 v1.5.7 Support commands for Thor's way]
+%<package> [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