From 32d0671418a3cc6ad0465b06539ed54d96f77784 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 13 Jul 2017 09:30:28 +0900 Subject: add artthreads cntdwn ecards fc-arith fldigigal --- texmf-dist/tex/latex/artthreads/artthreads.sty | 200 +++ texmf-dist/tex/latex/cntdwn/cntdwn.sty | 84 ++ texmf-dist/tex/latex/cntdwn/lngcnt.def | 518 +++++++ texmf-dist/tex/latex/cntdwn/shrtcnt.def | 271 ++++ texmf-dist/tex/latex/ecards/ecards.sty | 560 +++++++ texmf-dist/tex/latex/ecards/ecardslist.def | 91 ++ texmf-dist/tex/latex/fc-arith/fc_arith.sty | 1887 ++++++++++++++++++++++++ texmf-dist/tex/latex/fldigigal/fdg_ht1.swf | Bin 0 -> 78677 bytes texmf-dist/tex/latex/fldigigal/fdg_nt1.swf | Bin 0 -> 123787 bytes texmf-dist/tex/latex/fldigigal/fdg_vt1.swf | Bin 0 -> 138607 bytes texmf-dist/tex/latex/fldigigal/fldigigal.cfg | 7 + texmf-dist/tex/latex/fldigigal/fldigigal.sty | 177 +++ 12 files changed, 3795 insertions(+) create mode 100644 texmf-dist/tex/latex/artthreads/artthreads.sty create mode 100644 texmf-dist/tex/latex/cntdwn/cntdwn.sty create mode 100644 texmf-dist/tex/latex/cntdwn/lngcnt.def create mode 100644 texmf-dist/tex/latex/cntdwn/shrtcnt.def create mode 100644 texmf-dist/tex/latex/ecards/ecards.sty create mode 100644 texmf-dist/tex/latex/ecards/ecardslist.def create mode 100644 texmf-dist/tex/latex/fc-arith/fc_arith.sty create mode 100644 texmf-dist/tex/latex/fldigigal/fdg_ht1.swf create mode 100644 texmf-dist/tex/latex/fldigigal/fdg_nt1.swf create mode 100644 texmf-dist/tex/latex/fldigigal/fdg_vt1.swf create mode 100644 texmf-dist/tex/latex/fldigigal/fldigigal.cfg create mode 100644 texmf-dist/tex/latex/fldigigal/fldigigal.sty (limited to 'texmf-dist/tex') diff --git a/texmf-dist/tex/latex/artthreads/artthreads.sty b/texmf-dist/tex/latex/artthreads/artthreads.sty new file mode 100644 index 00000000..f8ec0fbb --- /dev/null +++ b/texmf-dist/tex/latex/artthreads/artthreads.sty @@ -0,0 +1,200 @@ +%% +%% This is file `artthreads.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% artthreads.dtx (with options: `copyright,package') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% artthreads.sty package, 2016-04-09 %% +%% Copyright (C) 2016 D. P. Story %% +%% dpstory@uakron.edu %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e}[1997/12/01] +\ProvidesPackage{artthreads} + [2016/04/09 v1.1 Support for article threads (dps)] +\RequirePackage{xkeyval} +\RequirePackage{ifpdf}[2006/02/20] +\RequirePackage{ifxetex}[2006/08/21] +\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse +\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi +\DeclareOptionX{pdftex}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{dvips}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{dvipsone}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{dvipdfm}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{dvipdfmx}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{xetex}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{preview}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{!preview}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{viewMagWin}{\PassOptionsToPackage{\CurrentOption}{fitr}} +\DeclareOptionX{!viewMagWin} + {\PassOptionsToPackage{\CurrentOption}{fitr}} +\ProcessOptionsX +\RequirePackage{fitr}[2016/04/04] +\newif\ifnewarticle +\newcounter{artthrdcnt} +\def\CntArt{0}\def\CntArtInfo{0} +\def\inc@CntMacro#1{{\@tempcnta#1\relax\advance\@tempcnta1\relax + \xdef#1{\the\@tempcnta}}} +\def\artM@rk{[\space} +\define@key{artthrd}{title}[]{\def\threadTitle{#1}} + \let\threadTitle\@empty +\define@key{artthrd}{author}[]{\def\threadAuthor{#1}} + \let\threadAuthor\@empty +\define@key{artthrd}{keywords}[]{\def\threadKeywords{#1}} + \let\threadKeywords\@empty +\define@key{artthrd}{subject}[]{\def\threadSubject{#1}} + \let\threadSubject\@empty +\newcommand{\setThreadInfo}[1]{\inc@CntMacro\CntArtInfo + \let\threadTitle\@empty\let\threadAuthor\@empty + \let\threadKeywords\@empty\let\threadSubject\@empty + \setkeys{artthrd}{#1}\ifx\threadTitle\@empty + \def\threadTitle{thread-\CntArtInfo}\fi +} +\def\bArtErrMsg{When starting a new article thread + (\string\cArticle)\MessageBreak + first use \string\setThreadInfo\space to set the title,\MessageBreak + author, subject, and keywords} +\define@key{@rtthrd}{addtow}[0]{% + \fitr@defaultbp{\artthrd@@addtow}{#1}} +\def\artthrd@@addtow{0} +\define@key{@rtthrd}{addtoh}[0]{% + \fitr@defaultbp{\artthrd@@addtoh}{#1}} +\def\artthrd@@addtoh{0} +\newcommand{\setAddToBorder}[1]{\setkeys{@rtthrd}{#1}} +\newcommand{\bArticle}{\begingroup\inc@CntMacro\CntArt + \ifnum\CntArt=\CntArtInfo\relax\else + \PackageError{artthreads}{\bArtErrMsg}{See package documentation + for \string\setThreadInfo}\fi + \newarticletrue\set@rectart +} +\newcommand{\cArticle}{\begingroup\newarticlefalse\set@rectart} +\newcommand{\set@rectart}[1]{\def\fitr@artrect@argi{#1}% + \edef\temp@exp{\noexpand\setkeys{fitr}{#1}}\temp@exp + \set@@rectart} +\def\set@@rectart{\def\fitr@setBL{0pt}% + \@ifundefined{ef@Bbox}{\let\fitr@FLB@ction\Bbox}% + {\let\fitr@FLB@ction\ef@Bbox}% + \get@fitr@dimen{% + \parbox[\fitr@@refPt][\fitr@@height]{\fitr@@width}% + {\kern0pt\fitr@FLB@ction{\fitr@@width}{\fitr@@height}\kern0pt}% + }% + \makebox[0pt][l]{\hspace*{\fitr@@shift}\smash{% + \raisebox{\fitr@@lift-\fitr@setBL}{% + \setThre@d{\artthrd@@addtow}{\artthrd@@addtoh}% + \unhbox\fitr@bbox + \fitr@urxury@fixup{\artthrd@@addtow}{\artthrd@@addtoh}{}% + }}}\setlength{\fboxsep}{0pt}% + \ifviewMagWin + \fitr@length=\artthrd@@addtow bp + \fitr@length=2\fitr@length + \addtolength{\fitr@length}{\fitr@@width}% + \edef\fitr@@width{\the\fitr@length}% + \fitr@length=\artthrd@@addtoh bp + \fitr@length=2\fitr@length + \addtolength{\fitr@length}{\fitr@@height}% + \edef\fitr@@height{\the\fitr@length}% + \setlength\fitr@length{-\artthrd@@addtow bp}% + \addtolength\fitr@length{\fitr@@shift}% + \makebox[0pt][l]{\hspace*{\fitr@length}\smash{% + \setlength\fitr@length{\fitr@@lift-\fitr@setBL}% + \if\fitr@@refPt b% + \addtolength\fitr@length{-\artthrd@@addtoh bp}\else + \if\fitr@@refPt t% + \addtolength\fitr@length{\artthrd@@addtoh bp}% + \fi\fi + \raisebox{\fitr@length}% + {\fbox{\parbox[\fitr@@refPt][\fitr@@height]% + {\fitr@@width}{\kern0pt\hfill\vfill\kern0pt}}}}% + }% + \fi +\endgroup} +\if@fitr@dvipdfm +\def\ThrBbox#1#2{% + \fitr@length=#1bp + \fitr@length=2\fitr@length + \advance\fitr@length\wd\fitr@bbox + \edef\fitr@xetex@view@width{\the\fitr@length}% + \fitr@length=#2bp + \advance\fitr@length\ht\fitr@bbox + \edef\fitr@xetex@view@height{\the\fitr@length}% + \fitr@length=#2bp + \advance\fitr@length\dp\fitr@bbox + \edef\fitr@xetex@view@depth{\the\fitr@length}% +}\else\ifx\fitr@driver\fitr@pdftex@driver +\def\ThrBbox#1#2{% + \fitr@length=#1bp + \fitr@length=2\fitr@length + \advance\fitr@length\wd\fitr@bbox + \edef\fitr@pdftex@view@width{\the\fitr@length}% + \fitr@length=#2bp + \advance\fitr@length\ht\fitr@bbox + \edef\fitr@pdftex@view@height{\the\fitr@length}% + \fitr@length=#2bp + \advance\fitr@length\dp\fitr@bbox + \edef\fitr@pdftex@view@depth{\the\fitr@length}% +}\else\ifx\fitr@driver\fitr@dvipsone@driver +\def\ThrBbox#1#2{% + currentpoint 2 copy % + \the\fitr@depth\space add #2\space PDFtoTeX add % y1 + exch #1\space PDFtoTeX sub exch % x1 + 4 2 roll exch + \the\fitr@width\space add #1\space PDFtoTeX add exch % x2 + \the\fitr@height\space sub #2\space PDFtoTeX sub} % y2 +\else\ifx\fitr@driver\fitr@dvips@driver +\def\ThrBbox#1#2{% Uses \fitr@bbox + currentpoint 2 copy % + \the\fitr@depth\space SPtoDvips add + #2\space BPToDvips add % y1 + exch #1\space BPToDvips sub exch % x1 + 4 2 roll exch + \the\fitr@width\space SPtoDvips add + #1\space BPToDvips add exch % x2 + \the\fitr@height \space SPtoDvips sub + #2\space BPToDvips sub} % y2 +\fi\fi\fi\fi +\def\setThre@d#1#2{% + \fitr@defaultbp{\aWd}{#1}\fitr@defaultbp{\aHt}{#2}% + \edef\tmp@exp{\noexpand\set@rtThrd{\aWd}{\aHt}}\tmp@exp +} +\if@fitr@dvipdfm +\def\set@rtThrd#1#2{\ThrBbox{#1}{#2}% + \smash{\raisebox{-\fitr@xetex@view@height+#2bp}% + {\makebox[0pt][l]{\hspace*{-#1bp}% + \@pdfm@mark{thread @artthrd\CntArt\space + width \fitr@xetex@view@width\space + height \fitr@xetex@view@height\space + depth \fitr@xetex@view@depth\space + << /Title (\threadTitle) +\ifnewarticle + /Author (\threadAuthor) + /Subject (\threadSubject) + /Keywords (\threadKeywords) +\fi >>}}}}}\else\ifx\fitr@driver\fitr@pdftex@driver +\def\set@rtThrd#1#2{\ThrBbox{#1}{#2}% + \makebox[0pt][l]{\hspace*{-#1bp}% + \pdfthread + width \fitr@pdftex@view@width\space + height \fitr@pdftex@view@height\space + depth \fitr@pdftex@view@depth\space + name {\threadTitle}}}\else +\def\set@rtThrd#1#2{\literalps@out{\artM@rk + /Rect [\ThrBbox{\artthrd@@addtow}{\artthrd@@addtoh}] + /Title (\threadTitle) +\ifnewarticle + /Author (\threadAuthor) + /Subject (\threadSubject) + /Keywords (\threadKeywords) +\fi + /ARTICLE pdfmark}} +\fi\fi +\endinput +%% +%% End of file `artthreads.sty'. diff --git a/texmf-dist/tex/latex/cntdwn/cntdwn.sty b/texmf-dist/tex/latex/cntdwn/cntdwn.sty new file mode 100644 index 00000000..cd847ea6 --- /dev/null +++ b/texmf-dist/tex/latex/cntdwn/cntdwn.sty @@ -0,0 +1,84 @@ +%% +%% This is file `cntdwn.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% cntdwn.dtx (with options: `copyright,package') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% cntdwn package, 2010-8-2 %% +%% Copyright (C) 2010 D. P. Story %% +%% dpstory@uakron.edu %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{cntdwn} + [2014/11/26 v.6 countdown support (dps)] +\RequirePackage{xkeyval} +\def\cntdwn@defaultcode{\makeatletter + \InputIfFileExists{shrtcnt.def}{}\makeatother} +\DeclareOptionX{shortcount}{% + \def\cntdwn@shrtcnt{\cntdwn@defaultcode}% +} +\let\cntdwn@shrtcnt\@empty +\DeclareOptionX{longcount}{% + \def\cntdwn@lngcnt{\makeatletter + \InputIfFileExists{lngcnt.def}{}\makeatother}% +} +\let\cntdwn@lngcnt\@empty +\ProcessOptionsX +\ifx\cntdwn@shrtcnt\@empty + \ifx\cntdwn@lngcnt\@empty\AtEndOfPackage{\cntdwn@defaultcode}\else + \AtEndOfPackage{\cntdwn@lngcnt}\fi +\else + \AtEndOfPackage{\cntdwn@defaultcode} + \ifx\cntdwn@lngcnt\@empty\else\AtEndOfPackage{\cntdwn@lngcnt}\fi +\fi +\@namedef{Time@timername}{Time} +\def\cntdwn@namegdef#1{\expandafter\gdef\csname #1\endcsname} +\def\cntdwn@namexdef#1{\expandafter\xdef\csname #1\endcsname} +\let\cntdwnlTimers\@empty +\let\cntdwnaTimers\@empty +\newcommand{\cntdwnYear}{year} +\newcommand{\cntdwnYears}{years} +\newcommand{\cntdwnDay}{day} +\newcommand{\cntdwnDays}{days} +\newcommand{\cntdwnHour}{hour} +\newcommand{\cntdwnHours}{hours} +\newcommand{\cntdwnMinute}{minute} +\newcommand{\cntdwnMinutes}{minutes} +\newcommand{\cntdwnSecond}{second} +\newcommand{\cntdwnSeconds}{seconds} +\begin{insDLJS*}[_timerObjsLoaded]{cntdwncom} +\begin{newsegment}{CntDwn: DLJS for the cntdwn Package} +/* + Document Level JavaScript for cntdwn + D. P. Story copyright 2010 +*/ +var _timerObjsLoaded=true; +\end{newsegment} +\begin{newsegment}{CntDwn: Timer Objects} +var _oTime = new Object; + _oTime.second=1000; + _oTime.minute=60*_oTime.second; + _oTime.hour=60*_oTime.minute; + _oTime.day=24*_oTime.hour; + _oTime.year = 365*_oTime.day; +\cntdwnlTimers +var aTimers = new Array(); +\cntdwnaTimers +\end{newsegment} +\end{insDLJS*} +\begingroup +\catcode`\_12 +\gdef\CDO{_o} +\endgroup +\endinput +%% +%% End of file `cntdwn.sty'. diff --git a/texmf-dist/tex/latex/cntdwn/lngcnt.def b/texmf-dist/tex/latex/cntdwn/lngcnt.def new file mode 100644 index 00000000..e5ed8ac1 --- /dev/null +++ b/texmf-dist/tex/latex/cntdwn/lngcnt.def @@ -0,0 +1,518 @@ +%% +%% This is file `lngcnt.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% cntdwn.dtx (with options: `copyright,lngcnt') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% cntdwn package, 2010-8-2 %% +%% Copyright (C) 2010 D. P. Story %% +%% dpstory@uakron.edu %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\lcntdwnDisplay}[4][]{% + \let\autorun@presets\@empty + \expandafter\ifnum\csname#2@autorun\endcsname=1\relax + \edef\autorun@presets{% + \AAPageOpen{if (\CDO#2.bAutorunEnabled && \CDO#2.timeout==null) lStartTimer(\CDO#2);}}\fi + \expandafter\ifnum\csname#2@autopause\endcsname=1\relax + \edef\autorun@presets{\autorun@presets + \AAPageClose{if (\CDO#2.timeout!=null) lcntdwnPause(\CDO#2);}}\fi + \edef\autorun@presets{\noexpand\AA{\autorun@presets}}% + \textField[\Ff\FfReadOnly\textSize{0}#1 + \presets{\autorun@presets}]% + {\CDO#2.lcntdwn.timeToFromEvent}{#3}{#4}} +\newcommand{\lcntdwnToggle}[4][]{% + \pushButton[\TU{Toggle Countdown}\A{\JS{lcntdwnToggle(\CDO#2);}}#1 + ]{\CDO#2.lcntdwn.Toggle}{#3}{#4}} +\newcommand{\setLongCntDwn}[2]{\begingroup + \@ifundefined{#1@timername}{\cntdwn@namegdef{#1@timername}{#1}}% + {\PackageError{cntdwn}{The name `#1' is already defined as a timer + variable.}{Choose a unique timer variable name, + one different from `#1'.}}% + \setkeys{lcntdwn}{date,endmsg,#2}% + \def\seconds{_oTime.second}\def\minutes{_oTime.minute}% + \def\hours{_oTime.hour}\def\days{_oTime.day}% + \def\weeks{7*_oTime.day}\def\years{_oTime.year}% + \cntdwn@namexdef{#1@autorun}{\lctndwn@autorun}% + \cntdwn@namexdef{#1@autopause}{\lctndwn@autopause}% + \ifx\lcntdwn@date\@empty\def\lcntdwn@date{1970/01/01}% + \PackageWarning{cntdwn}{!!Beware!! + The `date' key was not supplied,\MessageBreak + using the default date 1970/01/01}\fi + \def\r{^^J}\def\t{\space\space\space\space}% + \cntdwn@namexdef{#1TimerObject}{% + var _o#1 = {\r\t + name: "_o#1",\r\t + pdfdate:"D:\lcntdwn@date\lcntdwn@time\lcntdwn@tz",\r\t + target: null,\r\t + refreshrate: 1000,\r\t + notify1: \lcntdwn@notifyi,\r\t + notify2: \lcntdwn@notifyii,\r\t + notify3: \lcntdwn@notifyiii,\r\t + notify5: \lcntdwn@notifyv,\r\t + notify6: \lcntdwn@notifyvi,\r\t + notify7: \lcntdwn@notifyvii,\r\t + eventhandler: "\lcntdwn@eventhandler",\r\t + refreshrate: \lcntdwn@refreshrate,\r\t + timedateFunc: "\lcntdwn@timedateFunc",\r\t + displayfunc: "\lcntdwn@displayfunc",\r\t + endtimecolor: \cntdwn@endtimecolor,\r\t + weStopOnEnd: \lcntdwn@ifstop,\r\t + endMsg: "\lcntdwn@endmsg",\r\t + bAutorunEnabled:\lcntdwn@autorunenabled,\r\t + bNotify1:false,\r\t + bNotify2:false,\r\t + bNotify3:false,\r\t + bNotify4:false,\r\t + bNotify5:false,\r\t + bNotify6:false,\r\t + bNotify7:false,\r\t + lastSignDelta:1,\r\t + timeout:null\r + }; + }% + \ifx\cntdwnlTimers\@empty + \else\g@addto@macro\cntdwnlTimers{^^J}\fi + \expandafter\g@addto@macro\expandafter\cntdwnlTimers + \expandafter{\csname#1TimerObject\endcsname}% + \ifx\cntdwnaTimers\@empty\else\g@addto@macro\cntdwnaTimers{^^J}\fi + \g@addto@macro\cntdwnaTimers{aTimers["_o#1"]=_o#1;}% + \endgroup} +\def\@lcntdwn@parse@YYYY#1#2#3#4{% + {\count0=#1\relax\count0=#2\relax + \count0=#3\relax\count0=#4\relax}% + \def\lcntdwn@date{#1#2#3#4}% + \@ifnextchar\@nil{\@gobbletonil}% + {\@ifnextchar/{\expandafter\@lcntdwn@parse@MM\@gobble}% + {\def\lcntdwn@date{#1#2#3#4}}}% +} +\def\@lcntdwn@parse@MM#1#2{% + {\count0=#1\relax\count0=#2\relax}% + \edef\lcntdwn@date{\lcntdwn@date#1#2}% + \@ifnextchar\@nil{\@gobbletonil}% + {\@ifnextchar/{\expandafter\@lcntdwn@parse@DD\@gobble}% + {\edef\lcntdwn@date{\lcntdwn@date#1#2}}}% +} +\def\@lcntdwn@parse@DD#1#2{% + {\count0=#1\relax\count0=#2\relax}% + \edef\lcntdwn@date{\lcntdwn@date#1#2}% + \@gobbletonil +} +\def\@lcntdwn@parse@HH#1#2{% + {\count0=#1\relax\count0=#2\relax}% + \def\lcntdwn@time{#1#2} + \@ifnextchar\@nil{\@gobbletonil}% + {\@ifnextchar:{\expandafter\@lcntdwn@parse@mm\@gobble}% + {\def\lcntdwn@time{#1#2}}}% +} +\def\@lcntdwn@parse@mm#1#2{% + {\count0=#1\relax\count0=#2\relax}% + \edef\lcntdwn@time{\lcntdwn@time#1#2}% + \@ifnextchar\@nil{\@gobbletonil}% + {\@ifnextchar:{\expandafter\@lcntdwn@parse@SS\@gobble}% + {\edef\lcntdwn@time{\lcntdwn@time#1#2}}}% +} +\def\@lcntdwn@parse@SS#1#2{% + {\count0=#1\relax\count0=#2\relax}% + \edef\lcntdwn@time{\lcntdwn@time#1#2}% + \@gobbletonil +} +\def\tz@Z{Z}\def\tz@p{+}\def\tz@m{-} +\def\lcntdwn@parse@tz{\@ifnextchar\@nil + {\let\lcntdwn@tz\@empty}{\@lcntdwn@parse@tz}% +} +\def\@lcntdwn@parse@tz#1{% + \def\argi{#1}\ifx\argi\tz@Z + \def\lcntdwn@tz{Z}\def\@next{\@gobbletonil}% + \else\ifx\argi\tz@p\def\lcntdwn@tz{+}% + \def\@next{\tz@gethrs}\else + \ifx\argi\tz@m\def\lcntdwn@tz{-}% + \def\@next{\tz@gethrs}\else + \let\lcntdwn@tz\@empty\def\@next{\@gobbletonil}% + \fi\fi\fi\@next +} +\def\@gobbletonil#1\@nil{} +\def\tz@gethrs#1#2{{\count0=#1\relax\count0=#2\relax}% + \edef\lcntdwn@tz{\lcntdwn@tz#1#2'}% + \@ifnextchar\@nil{\@gobbletonil}{\tz@getmnts}} +\def\tz@getmnts#1#2{{\count0=#1\relax\count0=#2\relax}% + \edef\lcntdwn@tz{\lcntdwn@tz#1#2'}\@gobbletonil} +\define@key{lcntdwn}{date}[]{% + \edef\argi{#1}\ifx\argi\@empty + \def\lcntdwn@date{}\let\@next\relax\else + \def\@next{\expandafter\@lcntdwn@parse@YYYY\argi\@nil}\fi + \@next +} +\define@key{lcntdwn}{time}[]{% + \edef\argi{#1}\ifx\argi\@empty + \let\lcntdwn@time\@empty\let\@next\relax\else + \def\@next{\expandafter\@lcntdwn@parse@HH\argi\@nil}\fi + \@next +} +\define@key{lcntdwn}{tzoffset}[]{% + \def\argi{#1}\ifx\argi\@empty + \let\lcntdwn@tz\@empty\let\@next\relax\else + \def\@next{\lcntdwn@parse@tz#1\@nil}\fi + \@next +} +\define@boolkey{lcntdwn}{autorun}[true]{% + \edef\lctndwn@autorun{\ifKV@lcntdwn@autorun1\else0\fi}} +\define@boolkey{lcntdwn}{autopause}[true]{% + \edef\lctndwn@autopause{\ifKV@lcntdwn@autopause1\else0\fi}} +\define@boolkey{lcntdwn}{autorunenabled}[true]{% + \edef\lcntdwn@autorunenabled{\ifKV@lcntdwn@autorunenabled + true\else false\fi}} +\define@key{lcntdwn}{notify1}[null]{\def\lcntdwn@notifyi{#1}} +\define@key{lcntdwn}{notify2}[null]{\def\lcntdwn@notifyii{#1}} +\define@key{lcntdwn}{notify3}[null]{\def\lcntdwn@notifyiii{#1}} +\define@key{lcntdwn}{notify5}[null]{\def\lcntdwn@notifyv{#1}} +\define@key{lcntdwn}{notify6}[null]{\def\lcntdwn@notifyvi{#1}} +\define@key{lcntdwn}{notify7}[null]{\def\lcntdwn@notifyvii{#1}} +\define@key{lcntdwn}{eventhandler}[_NoOpt]{% + \def\lcntdwn@eventhandler{#1}} +\define@key{lcntdwn}{refreshrate}[1000]{\def\lcntdwn@refreshrate{#1}} +\define@key{lcntdwn}{currtimefunc}[_defaultTimeDateFunc]{% + \def\lcntdwn@timedateFunc{#1}} +\define@key{lcntdwn}{displayfunc}[_defaultLDisplayFunc]{% + \def\lcntdwn@displayfunc{#1}} +\define@key{lcntdwn}{endtimecolor}[color.red]{% + \def\cntdwn@endtimecolor{#1}} +\define@choicekey{lcntdwn}{onfinish}[\val\nr]{stop,continue}[stop]{% + \ifcase\nr\relax\def\lcntdwn@ifstop{true}\or + \def\lcntdwn@ifstop{false}\fi} +\newcommand{\lcnddwnDefaultEndMsg}{The time has expired} +\define@key{lcntdwn}{endmsg}[\lcnddwnDefaultEndMsg]{% + \def\lcntdwn@endmsg{#1}} +\setkeys{lcntdwn}{time,tzoffset,refreshrate,autorun,autopause,% + autorunenabled,notify1,notify2,notify3,notify5,notify6,notify7,% + eventhandler,endtimecolor,displayfunc,currtimefunc,% + onfinish=continue,endmsg} +\newcommand{\setClockTimer}[2]{\begingroup + \@ifundefined{#1@timername}{\cntdwn@namegdef{#1@timername}{#1}}% + {\PackageError{cntdwn}{The name `#1' is already defined as a timer + variable.}{Choose a unique timer variable name, + one different from `#1'.}}% + \setkeys{lcntdwn}{#2}% + \def\seconds{_oTime.second}\def\minutes{_oTime.minute}% + \def\hours{_oTime.hour}\def\days{_oTime.day}% + \def\weeks{7*_oTime.day}\def\years{_oTime.year}% + \cntdwn@namexdef{#1@autorun}{\lctndwn@autorun}% + \cntdwn@namexdef{#1@autopause}{\lctndwn@autopause}% + \def\r{^^J}\def\t{\space\space\space\space}% + \cntdwn@namexdef{#1TimerObject}{% + var _o#1 = {\r\t + name: "_o#1",\r\t + tzoffset:"\lcntdwn@tz",\r\t + refreshrate: \lcntdwn@refreshrate,\r\t + timedateFunc: "\lcntdwn@timedateFunc",\r\t + timeout:null\r + }; + }% + \ifx\cntdwnlTimers\@empty + \else\g@addto@macro\cntdwnlTimers{^^J}\fi + \expandafter\g@addto@macro\expandafter\cntdwnlTimers + \expandafter{\csname#1TimerObject\endcsname}% + \ifx\cntdwnaTimers\@empty\else\g@addto@macro\cntdwnaTimers{^^J}\fi + \g@addto@macro\cntdwnaTimers{aTimers["_o#1"]=_o#1;}% + \endgroup} +\newcommand{\cntdwnclocktime}[4][]{% + \let\autorun@presets\@empty + \expandafter\ifnum\csname#2@autorun\endcsname=1\relax + \edef\autorun@presets{% + \AAPageOpen{if (\CDO#2.timeout==null) clStartTimer(\CDO#2);}}\fi + \expandafter\ifnum\csname#2@autopause\endcsname=1\relax + \edef\autorun@presets{\autorun@presets + \AAPageClose{if (\CDO#2.timeout!=null) clcntdwnPause(\CDO#2);}}\fi + \edef\autorun@presets{\noexpand\AA{\autorun@presets}}% + \textField[\Ff\FfReadOnly\Q{1}\textSize{0}#1 + \presets{\autorun@presets}]% + {\CDO#2.clock.time}{#3}{#4}} +\newcommand{\cntdwnclockdate}[4][]{\textField[% + \Ff\FfReadOnly\Q{1}\textSize{0}#1]{\CDO#2.clock.date}{#3}{#4}} +\newcommand{\clockToggle}[4][]{% + \pushButton[\TU{Toggle Countdown}\A{\JS{clockToggle(\CDO#2);}}#1 + ]{\CDO#2.lcntdwn.Toggle}{#3}{#4}} +\begin{insDLJS*}[lngcntdwn]{lngcntdwn} +\begin{newsegment}{CntDwn: Convert Time Function} +/* + This function converts the PDF Date Format to a JavaScript + Date object. The PDF Date Format is specified in section + 3.8.3 in the PDF Reference. +*/ +function pdfDate2oDate( pdfDate ) { + // if present, remove the "D:" in format + if ( pdfDate.indexOf("D:") != -1 ) + pdfDate = pdfDate.substring(2); + // now see if the O component is there + var re = /[\+\-Z]/; + var nIndex = pdfDate.search(re); + // separate the time date info from the time zone offset info + if ( nIndex != -1 ) { + var cTimeZone = pdfDate.substring(nIndex); + pdfDate = pdfDate.substring(0, nIndex); + } else cTimeZone = ""; + // seg is an array of arrays. The first element is the field width, + // the second entry is the default value. + var seg = [[4,1970],[2,1],[2,1],[2,0],[2,0],[2,0]]; + // an array to hold time arguments for the date constructor. + var args = new Array(); + // as we determine the values of the PDF Date Format, push them onto + // the args array, if not present, push the default value on. + for ( var i=0; i < seg.length; i++) { + if ( pdfDate.length > 0 ) { + args.push(Number( pdfDate.substring(0, seg[i][0]) ) ); + pdfDate = pdfDate.substring( seg[i][0] ); + } else args.push( seg[i][1] ); + } + // adjust month to base zero + args[1] = args[1] - 1; + // see if there is time zone info + var pm = ""; + if ( cTimeZone.length > 0 ) { + pm = cTimeZone.charAt(0); + var zoneOffsetHr=Number(cTimeZone.substring(1,3)); + cTimeZone=cTimeZone.substring(3); + var zoneOffsetMin=0; + if ( cTimeZone.length > 0 && cTimeZone.charAt(0) == "'" ) + var zoneOffsetMin = Number( cTimeZone.substring(1,3) ); + var totalOffset=zoneOffsetHr*60+zoneOffsetMin; + totalOffset*= 60000; + totalOffset=( pm == "-" )?-1*totalOffset:totalOffset; + var msTime=Date.UTC.apply(global,args); + msTime = msTime - totalOffset; + var d = new Date( msTime ); + } else { + var dateArgs = args.toSource().replace(/[\[\]]/g,""); + var d = eval("new Date(" + dateArgs + ")" ); + } + return d +} +\end{newsegment} +\begin{newsegment}{CntDwn: Long Countdown JavaScript} +function lngcntdwn(cTimer){ + var _delta,nYears,pYears,nDays,pDays,nHours,pHours,nMinutes, + pMinutes,nSeconds,pSeconds,f,thisSignDelta,msYear; + var oTimer=aTimers[cTimer]; + var Clock=new Date(); + this.delay=true; + _delta=oTimer.target-Clock; + var o=lCalcYears(oTimer,Clock,_delta); + nYears=o.nYears; + pYears=o.pYears; + _delta=o.delta; + nDays=Math.floor(pYears/_oTime.day); + pDays=pYears\%_oTime.day; + nHours=Math.floor(pDays/_oTime.hour); + pHours=pDays\%_oTime.hour; + nMinutes=Math.floor(pHours/_oTime.minute); + pMinutes=pHours\%_oTime.minute; + nSeconds=Math.round(pMinutes/_oTime.second); + pSeconds=pMinutes\%_oTime.second; + f=this.getField(cTimer+".lcntdwn.timeToFromEvent"); + thisSignDelta=(_delta<0)?-1:1; + if (thisSignDelta*oTimer.lastSignDelta<0&&!oTimer.bNotify4) { + if (f!=null) f.textColor=oTimer.endtimecolor; + oTimer.bNotify4=true; + oTimer.lastSignDelta=thisSignDelta; + eval(oTimer.eventhandler)(this,cTimer,4); + if (oTimer.weStopOnEnd) { + try { app.clearInterval(oTimer.timeout); + oTimer.timeout=null; } catch(e){}; + if (f!=null) f.value=oTimer.endMsg; + return; + } + } + if (!oTimer.bNotify4&&_delta>0){ // event in future + if (!oTimer.bNotify1&&oTimer.notify1!=null% +&&_deltaoTimer.notify5) { + oTimer.bNotify5=true; + eval(oTimer.eventhandler)(this,cTimer,5); + } else { + if (!oTimer.bNotify6&&oTimer.notify6!=null&&% +neg_delta>oTimer.notify6) { + oTimer.bNotify6=true; + eval(oTimer.eventhandler)(this,cTimer,6); + } else { + if (!oTimer.bNotify7&&oTimer.notify7!=null&&% +neg_delta>oTimer.notify7) { + oTimer.bNotify7=true; + eval(oTimer.eventhandler)(this,cTimer,7); + } + } + } + } + eval(oTimer.displayfunc)(f,nYears,nDays,nHours,nMinutes,nSeconds); + this.delay=false; + this.dirty=false; +} +function _defaultTimeDateFunc(oTime,cTimer) { + try{ this.getField(cTimer+".clock.time").value% +=util.printd("H:MM:ss",oTime); } catch(e) {}; + try { this.getField(cTimer+".clock.date").value=% +util.printd("mm/dd/yyyy", oTime); } catch(e) {}; +} +function _defaultLDisplayFunc(f,nYears,nDays,nHours,nMinutes,nSeconds) { + var strYears=(nYears==0)?""% +:(""+nYears+((nYears == 1)?" \cntdwnYear, ":" \cntdwnYears, ")); + var strDays=(nDays== 0)?""% +:(""+nDays+((nDays==1)?" \cntdwnDay, ":" \cntdwnDays, ")); + var strHours=(nHours==0)?""% +:(""+nHours+((nHours==1)?" \cntdwnHour, ":" \cntdwnHours, ")); + var strMinutes=(nMinutes==0)?""% +:(""+nMinutes+((nMinutes==1)?" \cntdwnMinute, ":" \cntdwnMinutes, ")); + var strSeconds=""+nSeconds+((nSeconds<2)?" \cntdwnSecond "% +:" \cntdwnSeconds "); + var cCntDwnDisplay=strYears+strDays+strHours+strMinutes+strSeconds; + try { f.value=cCntDwnDisplay; } catch(e) {} +} +function lCalcYears(oTimer,Clock,_delta) { + var nYears,lengthOfYears,targetpdfdate,targetYear,thisYear, + otherYear,currAnnivDate,otherAnnivDate,tCurrAnnivDate, + tOtherAnnivDate,msYear=0; + targetpdfdate=oTimer.pdfdate; + targetYear=Number(targetpdfdate.substring(2,6)); + thisYear=Clock.getFullYear(); + otherYear=(_delta<0)?thisYear-1:thisYear+1; + currAnnivDate=targetpdfdate.substring(0,2)% ++thisYear+targetpdfdate.substring(6); + otherAnnivDate=targetpdfdate.substring(0,2)% ++otherYear+targetpdfdate.substring(6); + tCurrAnnivDate=pdfDate2oDate( currAnnivDate ); + tOtherAnnivDate=pdfDate2oDate( otherAnnivDate ); + if (_delta<0) { + if ( Clock < tCurrAnnivDate ){ + nYears=otherYear-targetYear; + lengthOfYears=oTimer.target-tOtherAnnivDate; + } else { + nYears=thisYear-targetYear; + lengthOfYears=oTimer.target-tCurrAnnivDate; + } + } else {// _delta>=0 + if ( Clock > tCurrAnnivDate ) { + nYears=targetYear-otherYear; + lengthOfYears=oTimer.target-tOtherAnnivDate; + } else { + nYears=targetYear-thisYear; + lengthOfYears=oTimer.target-tCurrAnnivDate; + } + } + _delta-=lengthOfYears; + pYears=Math.abs(_delta); + return { + nYears:nYears, + pYears:pYears, + delta:_delta + }; +} +function lStartTimer(oTimer) { + var cTimer=oTimer.name; + oTimer.target=pdfDate2oDate(oTimer.pdfdate).getTime(); + var bWasNotified=oTimer.bNotify4; + var _delta=oTimer.target-new Date(); + oTimer.lastSignDelta=(_delta<0)?-1:1; + if ( _delta > 0 ) { + oTimer.bNotify1=(_deltaoTimer.notify5); + oTimer.bNotify6=(-1*_delta>oTimer.notify6); + oTimer.bNotify7=(-1*_delta>oTimer.notify7); + } + if (!bWasNotified&&oTimer.bNotify4) { + var f=this.getField(cTimer+".lcntdwn.timeToFromEvent"); + if (f!=null) f.textColor=oTimer.endtimecolor; + eval(oTimer.eventhandler)(this,cTimer,4); + } + if (_delta<0&&oTimer.weStopOnEnd) { + f.value=oTimer.endMsg; + return; + } + oTimer.timeout=app.setInterval(% +"lngcntdwn(\""+cTimer+"\")",oTimer.refreshrate); +} +function lcntdwnPause(oTimer) { + try { app.clearInterval(oTimer.timeout); + oTimer.timeout=null; } catch(e){}; +} +function lcntdwnToggle(oTimer) { + if (oTimer.timeout==null) // stopped or paused + lStartTimer(oTimer); + else + lcntdwnPause(oTimer); +} +function _NoOpt(doc,cTimer,nEvent){} +function lngClockHandler(cTimer) { + var oTimer=aTimers[cTimer]; + var Clock = new Date(); + if ( oTimer.tzoffset != "" ) { + var localTime = Clock.getTime(); + var localOffset = Clock.getTimezoneOffset()*60000; + // obtain UTC time in msec + var utc = localTime + localOffset; + var tzoffset=(oTimer.tzoffset=="Z")?0:oTimer.tzoffset; + var nonlocal=utc+oTimer.tzoffset; + Clock = new Date(nonlocal); + } + this.delay=true; + eval(oTimer.timedateFunc)(Clock,cTimer); + this.dirty=false; + this.delay=false; +} +function clStartTimer(oTimer) { + var tzoffset=oTimer.tzoffset; + if ( tzoffset !="" && tzoffset !="Z" ) { + var sign=tzoffset.charAt(0); + offset=tzoffset.substring(1); + var a=tzoffset.split("'"); + var hrs=Number(a[0]); + var mins=Number(a[1]); + tzoffset=hrs*3600000+mins*60000; + tzoffset=((sign=="+")?1:-1)*tzoffset; + oTimer.tzoffset=tzoffset; + } + var cTimer=oTimer.name; + oTimer.timeout=app.setInterval(% +"lngClockHandler(\""+cTimer+"\")",oTimer.refreshrate); +} +function clockToggle(oTimer) { + if (oTimer.timeout==null) // stopped or paused + clStartTimer(oTimer); + else + lcntdwnPause(oTimer); +} +\end{newsegment} +\end{insDLJS*} +\endinput +%% +%% End of file `lngcnt.def'. diff --git a/texmf-dist/tex/latex/cntdwn/shrtcnt.def b/texmf-dist/tex/latex/cntdwn/shrtcnt.def new file mode 100644 index 00000000..babca943 --- /dev/null +++ b/texmf-dist/tex/latex/cntdwn/shrtcnt.def @@ -0,0 +1,271 @@ +%% +%% This is file `shrtcnt.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% cntdwn.dtx (with options: `copyright,shortcnt') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% cntdwn package, 2010-8-2 %% +%% Copyright (C) 2010 D. P. Story %% +%% dpstory@uakron.edu %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\cntdwnopts}[1]{\TU{#1}\H{N}\S{S}\BG{}} +\newcommand{\cntdwnDisplay}[4][]{% + \expandafter\ifnum\csname#2@autorun\endcsname=1\relax + \def\autorun@presets{% + \AA{\AAPageOpen{if (!\CDO#2.isCounting&&!\CDO#2.bNotify4) + sStartTimer(\CDO#2);}}}\else + \let\autorun@presets\@empty\fi + \textField[\Ff\FfReadOnly\Q{1}#1\presets{\autorun@presets} + ]{\CDO#2.cntdwn.TimeRemaining}{#3}{#4}} +\newcommand{\cntdwnStartT}[4][]{% + \pushButton[\presets{\cntdwnopts{Start}} + \A{\JS{sStartTimer(\CDO#2);}}#1]{\CDO#2.cntdwn.Notify1}{#3}{#4}} +\newcommand{\cntdwnStart}[4][]{% + \pushButton[\TU{Start}\A{\JS{sStartTimer(\CDO#2);}}#1 + ]{\CDO#2.cntdwn.Start}{#3}{#4}} +\newcommand{\cntdwnPauseT}[4][]{% + \pushButton[\presets{\cntdwnopts{Pause}} + \A{\JS{sPauseTimer(\CDO#2);}}#1 + ]{\CDO#2.cntdwn.Notify2}{#3}{#4}} +\newcommand{\cntdwnPause}[4][]{% + \pushButton[\TU{Pause}\A{\JS{sPauseTimer(\CDO#2);}}#1 + ]{\CDO#2.cntdwn.Pause}{#3}{#4}} +\newcommand{\cntdwnStopT}[4][]{% + \pushButton[\presets{\cntdwnopts{Stop}} + \A{\JS{sStopTimer(\CDO#2);}}#1 + ]{\CDO#2.cntdwn.Notify3}{#3}{#4}} +\newcommand{\cntdwnStop}[4][]{% + \pushButton[\TU{Stop}\A{\JS{sStopTimer(\CDO#2);}}#1 + ]{\CDO#2.cntdwn.Stop}{#3}{#4}} +\newcommand{\cntdwnEndTarget}[4][]{% + \textField[\Ff\FfReadOnly\Ff\FfMultiline#1 + ]{\CDO#2.cntdwn.End}{#3}{#4}} +\newcommand{\setShortCntDwn}[2]{\begingroup + \@ifundefined{#1@timername}{\cntdwn@namegdef{#1@timername}{#1}}% + {\PackageError{cntdwn}{The name `#1' is already defined as a timer + variable.}{Choose a unique timer variable name, + one different from `#1'.}}% + \def\seconds{_oTime.second}\def\minutes{_oTime.minute}% + \def\hours{_oTime.hour}% + \setkeys{cntdwn}{endmsg,#2}% + \cntdwn@namexdef{#1@autorun}{\ctndwn@autorun}% + \def\r{^^J}\def\t{\space\space\space\space}% + \cntdwn@namexdef{#1TimerObject}{% + var _o#1 = {\r\t + name: "_o#1",\r\t + length: \cntdwn@length,\r\t + timeleft: \cntdwn@length,\r\t + notify1: \cntdwn@notifyi,\r\t + notify2: \cntdwn@notifyii,\r\t + notify3: \cntdwn@notifyiii,\r\t + refreshrate: \cntdwn@refreshrate,\r\t + event1: "\cntdwn@eventi",\r\t + event2: "\cntdwn@eventii",\r\t + event3: "\cntdwn@eventiii",\r\t + endEvent: "\cntdwn@eventiv",\r\t + weStopOnEnd: \cntdwn@ifstop,\r\t + isStopwatch: \isStopwatch,\r\t + startcolor: \cntdwn@startcolor,\r\t + pausecolor: \cntdwn@pausecolor,\r\t + stopcolor: \cntdwn@stopcolor,\r\t + endMsg: "\cntdwn@endmsg",\r\t + bNotify1:false,\r\t + bNotify2:false,\r\t + bNotify3:false,\r\t + bNotify4:false,\r\t + isCounting:false,\r\t + bBlinkOn:false,\r\t + startTime:0,\r\t + pauseTime:0,\r\t + EndOfTime:0,\r\t + blinkTimeOut:null,\r\t + timeout:null\r + }; + }% + \ifx\cntdwnlTimers\@empty + \else\g@addto@macro\cntdwnlTimers{^^J}\fi + \expandafter\g@addto@macro\expandafter\cntdwnlTimers + \expandafter{\csname#1TimerObject\endcsname}% + \ifx\cntdwnaTimers\@empty\else\g@addto@macro\cntdwnaTimers{^^J}\fi + \g@addto@macro\cntdwnaTimers{aTimers["_o#1"]=_o#1;}% + \endgroup} +\def\thetimername#1{\csname#1@timername\endcsname} +\@onlypreamble\setShortCntDwn +\define@boolkey{cntdwn}{stopwatch}[true]{% + \edef\isStopwatch{\ifKV@cntdwn@stopwatch true\else false\fi}} +\define@boolkey{cntdwn}{autorun}[true]{% + \edef\ctndwn@autorun{\ifKV@cntdwn@autorun1\else0\fi}} +\define@key{cntdwn}{length}[20*\minutes]{\def\cntdwn@length{#1}} +\define@key{cntdwn}{notify1}[5*\minutes]{\def\cntdwn@notifyi{#1}} +\define@key{cntdwn}{notify2}[3*\minutes]{\def\cntdwn@notifyii{#1}} +\define@key{cntdwn}{notify3}[1*\minutes]{\def\cntdwn@notifyiii{#1}} +\define@key{cntdwn}{refreshrate}[1000]{\def\cntdwn@refreshrate{#1}} +\define@key{cntdwn}{event1}[sDefNotify1]{\def\cntdwn@eventi{#1}} +\define@key{cntdwn}{event2}[sDefNotify2]{\def\cntdwn@eventii{#1}} +\define@key{cntdwn}{event3}[sDefNotify3]{\def\cntdwn@eventiii{#1}} +\define@key{cntdwn}{endEvent}[sDefEndEvent]{\def\cntdwn@eventiv{#1}} +\define@choicekey{cntdwn}{onfinish}[\val\nr]{stop,continue}[stop]{% + \ifcase\nr\relax\def\cntdwn@ifstop{true}\or + \def\cntdwn@ifstop{false}\fi} +\define@key{cntdwn}{startcolor}[color.green]{% + \def\cntdwn@startcolor{#1}} +\define@key{cntdwn}{pausecolor}[color.yellow]{% + \def\cntdwn@pausecolor{#1}} +\define@key{cntdwn}{stopcolor}[color.red]{\def\cntdwn@stopcolor{#1}} +\newcommand{\cnddwnDefaultEndMsg}{This ends the + Presentation, any questions?} +\define@key{cntdwn}{endmsg}[\cnddwnDefaultEndMsg]{% + \def\cntdwn@endmsg{#1}} +\setkeys{cntdwn}{stopwatch=false,onfinish,length,% + notify1,notify2,notify3,refreshrate,startcolor,pausecolor,% + stopcolor,event1,event2,event3,endEvent,autorun=false,endmsg} +\begin{insDLJS*}[shrtcntdwn]{shrtcntdwn} +\begin{newsegment}{CntDwn: Countdown JavaScript} +function shrtcntdwn(cTimer){ + var oTimer=aTimers[cTimer]; + var _delta,nDays,pDays,nHours,pHours,nMinutes, + pMinutes,nSeconds,pSeconds,timeValue,isEndReached; + _delta=(oTimer.isStopwatch)?new Date()% +-new Date(oTimer.startTime):new Date(oTimer.EndOfTime)-new Date(); + oTimer.timeleft=_delta; + _delta=(_delta<0)?-_delta:_delta; + this.delay=true; + nDays = Math.floor(_delta/_oTime.day); + pDays = _delta\%_oTime.day; + nHours = Math.floor(pDays/_oTime.hour); + pHours = pDays\%_oTime.hour; + nMinutes = Math.floor(pHours/_oTime.minute ); + pMinutes = pHours\%_oTime.minute; + nSeconds = Math.floor(pMinutes/_oTime.second); + pSeconds = pMinutes\%_oTime.second; + timeValue=((nHours>=1)?((nHours<10)?"0":"")+nHours+":":"") + +((nMinutes<10)?"0":"")+nMinutes + +":"+((nSeconds<10)?"0":"")+nSeconds; + try { this.getField(oTimer.name% ++".cntdwn.TimeRemaining").value= timeValue; } + catch(e) {}; + isEndReached=(oTimer.isStopwatch)?oTimer.timeleft>oTimer.length% +:oTimer.timeleft< 0; + if ( isEndReached && !oTimer.bNotify4) { + oTimer.bNotify4=true; + eval(oTimer.endEvent)(this,cTimer); + if (oTimer.weStopOnEnd) { + oTimer.isCounting=false; + try { app.clearInterval(oTimer.timeout); + oTimer.timeout=null; } catch(e){}; + } + try { app.clearInterval(oTimer.blinkTimeOut); + oTimer.blinkTimeOut=null; } catch(e){}; + this.delay=false;this.dirty=false; + if (oTimer.weStopOnEnd) return; + } + if (oTimer.isStopwatch) { + if (!oTimer.bNotify1&&(_delta>oTimer.notify1)) + {oTimer.bNotify1=true;eval(oTimer.event1)(this,cTimer);} + if (!oTimer.bNotify2&&(_delta>oTimer.notify2)) + {oTimer.bNotify2=true;eval(oTimer.event2)(this,cTimer);} + if (!oTimer.bNotify3&&(_delta>oTimer.notify3)) + {oTimer.bNotify3=true;eval(oTimer.event3)(this,cTimer);} + } else { + if (!oTimer.bNotify1&&(_delta0\relax + \renewcommand\panelNaviGroup {% + \def\iconWidth{\iconWidthPanel}% + \ifnum\thepage=1\relax + \parbox[c]{\panelGrpWidth} + {% + \Begin\hfill\FullScreen\\ + \Close\hfill\Home\\ + \let\iconWidth\linewidth + \fpToggleOrder + }% + \else + \parbox[c]{\panelGrpWidth} + {% + {\ifecListing\else\if\nMarker\ec@Ques + \if\@ecNoHints\ec@YES + \navibarTextColor{lightblue}\fi + \else + \navibarTextColor{lightblue}\fi\fi\Hint}\hfill + {\if\nMarker\ec@Soln + \navibarTextColor{lightblue}\fi\Soln}\\ + \NextCard\hfill\PrevCard\\ + \ToggleOrder\hfill\Finished + }% + \fi + } + \newbox\Logo + \if\@memLogo\ec@YES\relax + \AtBeginDocument{\global\setbox\Logo=\hbox{\@ecLogo}}% + \fi +\def\raiseLogoBy#1{{\setlength\@tempdima{#1}% + \xdef\r@iseLogoBy{\the\@tempdima}}}\raiseLogoBy{0pt} + \buildpanel{\raisebox{\r@iseLogoBy}{\ifx\@ecLogoLink\@empty\@@Logo + \else\href{\@ecLogoLink}{\@@Logo}\fi}% + \par\vspace{\stretch{1}}% + \rotatebox{-90}{\aebLogo}% + \par\vspace{\stretch{1}}% + \panelNaviGroup + } + \def\defineSoln{\newNaviIcon[j]{\Soln}\iconWidth\iconHeight + {\ec@SolnLabel}{% + \NaviIconActionJS{this.gotoNamedDest("\solndest")}}% + \def\sqWrongRespJS{app.alert(\eqsqwgmsg,3); + this.gotoNamedDest("\solndest");}% + } +\else + \def\cardNaviBar{\insNaviBar{\hfill + \if\@ecNoHints\ec@NO\Hint\ \fi\Soln\ \NextCard\ + \PrevCard\ \ToggleOrder\ \Home\hfill}} + \def\defineSoln{\newNaviIcon[j]{\Soln}\iconWidth\iconHeight + {\ec@SolnLabel}{% + \NaviIconActionJS{this.gotoNamedDest("\solndest")}}% + \def\sqWrongRespJS{app.alert(\eqsqwgmsg,3); + this.gotoNamedDest("\solndest");}% + } +\fi +\newcommand{\pressBeginMsg}{Press the \eqbs\eqbs"Begin\eqbs\eqbs" + button to begin viewing the cards.} +\ifecListing\else +\thisPageAction{\JS{}}{\JS{if (!closeCards&&!beginPressed){\jsR\jsT + var b=app.setTimeOut("this.pageNum=0; + app.alert(pressBeginMsg);",50);\jsR}}} +\fi +\let\importdljs=y +\begin{insDLJS}[isCardloaded]{flashcrd}{Flash Card JS} +var isCardloaded=true; +var closeCards=false; +var beginPressed=false; +var maxNumberCards = Math.pow(10,Math.ceil(% +Math.LOG10E*Math.log(\theNumCards))); +var aCardsNaturalOrder=new Array(); +var aCardsRandomOrder=new Array(); +var aCardsViewOrder; +var ptrCards=0; +var cardsFinished = "\CARDSFINISHED"; +var pressBeginMsg = "\pressBeginMsg"; +var isRandomized=\israndomized; +function getNextCard() { + numCards = \theNumCards; + if ( ptrCards == numCards ) { + app.alert(cardsFinished,3); + resetToFirstPage(); + } else { + ptrCards+=1; + this.gotoNamedDest("qex."+aCardsViewOrder[ptrCards]); + } +} +function getPrevCard() { + if ( ptrCards <= 1 ) { + resetToFirstPage(); + } else { + ptrCards-=1; + this.gotoNamedDest("qex."+aCardsViewOrder[ptrCards]); + } +} +function ecOnBlurRespBox (retn, exnoCard, nMarker) { + if (retn != null) { + if (retn) { + app.alert(\eqsqrtmsg,3); + var dest = "ex" + exnoCard + ".s"; // dps + this.gotoNamedDest(dest); + } else { + app.alert(\eqsqwgmsg,3); + if (nMarker==0) { + var dest = "ex." + exnoCard; // dps + this.gotoNamedDest(dest); + } + else { + var dest = "ex" + exnoCard + ".s"; // dps + this.gotoNamedDest(dest); + } + } + } else { + var str = event.target.value.toString(); + if (str.replace(/\s/g,"") == "") + event.target.strokeColor = \defaultColorJSDef; // dps + } +} +function beginECards() { + PrepareViewingOrder(); + beginPressed=true; + getNextCard(); + var f, g, bState; + f=this.getField("eccbtoggleorder"); + bState=f.isBoxChecked(0); + this.resetForm(); + f.checkThisBox(0,bState); + for (var card=1; card<=\theNumCards; card++) {// dps + f = this.getField("obj.ex"+card); + if ( f != null ) { + g = f.getArray(); + for (var i = 0; i < g.length; i++) + g[i].strokeColor = \defaultColorJSDef; // dps + } + } +} +function PrepareViewingOrder() { + ptrCards=0; + var i, rand; + for (i=0; i<=\theNumCards; i++) { + aCardsNaturalOrder[i]=i; + aCardsRandomOrder[i]=i; + } + for (i=1; i<=\theNumCards; i++) { + var rand = Math.random(); + rand *= maxNumberCards; + rand = Math.ceil(rand); + rand = rand \% \theNumCards; + rand += 1; + temp = aCardsRandomOrder[i]; + aCardsRandomOrder[i]=aCardsRandomOrder[rand]; + aCardsRandomOrder[rand]=temp; + } + aCardsViewOrder=(isRandomized)?aCardsRandomOrder:aCardsNaturalOrder; +} +function toggleOrder() { + isRandomized=!isRandomized; + if (aCardsNaturalOrder.length==0) PrepareViewingOrder(); + if (isRandomized) { + for (var i=1; i<=\theNumCards; i++) + if (aCardsRandomOrder[i]==ptrCards) break; + ptrCards=i; + aCardsViewOrder=aCardsRandomOrder; + app.alert("\randomizedMsg"); + } else { + ptrCards=aCardsViewOrder[ptrCards]; + aCardsViewOrder=aCardsNaturalOrder; + app.alert("\nonrandomizedMsg"); + } +} +function resetToFirstPage() { + this.gotoNamedDest("page.1"); + beginPressed=false; +} +\end{insDLJS} +\ifecListing\input{ecardslist.def}\fi +\if\@ecCustom\ec@YES\InputIfFileExists{ecard.cus}{}{}\fi +\endinput +%% +%% End of file `ecards.sty'. diff --git a/texmf-dist/tex/latex/ecards/ecardslist.def b/texmf-dist/tex/latex/ecards/ecardslist.def new file mode 100644 index 00000000..a5a4c6cb --- /dev/null +++ b/texmf-dist/tex/latex/ecards/ecardslist.def @@ -0,0 +1,91 @@ +%% +%% This is file `ecardslist.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ecards.dtx (with options: `copyright,listing') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% ecards.sty package, %% +%% Copyright (C) 1999-2016 D. P. Story %% +%% dpstory@uakron.edu %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcounter{ecCnt} +\let\exsolafter\@empty +\eqexerskip{0pt} +\newenvironment{listing@card}[1][\opts@ecNoHints]{% + \isQuestrue\let\useHints\ec@HintsWarning + \let\useNoHint\ec@HintsWarning\edef\ec@rgi{#1}% + \ifx\ec@rgi\ec@isHint + \def\ec@thisHintOpt{\ecUseHints}\else + \ifx\ec@rgi\ec@isNoHint + \def\ec@thisHintOpt{\ecUseNoHints}\else + \def\ec@thisHintOpt{\ecUseHints}\ec@BadArgWarning + \fi\fi + \ec@thisHintOpt\nMarkerSet{\ec@Ques}% + \stepcounter{ecCnt}% + \def\eqexheader{\noindent}% + \renewcommand\exsllabelformat{\protect\noindent}% + \renewcommand\exrtnlabelformat{}% + \renewcommand\exsecrunhead{}% + \let\afterlabelhskip\@empty + \def\exersolnheadhook{\ecInfoToSolns}% + \begin{exercise}% + \textBgColor{\@cardColor}% + \headCard +}{% + \tailCard + \end{exercise}% +} +\newcommand{\listing@headCard}{\ifeqforpaper + \makebox[0pt][r]{\textbf{\arabic{ecCnt}.\thinspace}}\else + \makebox[0pt][r]{\textbf{\hyperlink{ex.\exnoCard}% + {\arabic{ecCnt}.\thinspace}}}\fi\ignorespaces} +\newcommand{\listing@tailCard}{\removelastskip\par} % dps +\def\setSolutionsAfterSkip{\expandafter + \def\expandafter\solutionsafterSkip + \expandafter{\solutionsafterSkip\kern0pt}} +\AtBeginDocument{\setSolutionsAfterSkip} +\newenvironment{listing@response} + {\solutionsafterSkip\solnexer@woparts[]}{\endsolnexer@woparts} +\newenvironment{listing@hint}{% + \textBgColor{\@hintColor}% + \headHint +}{\tailHint} +\newcommand{\listing@headHint}{% + \par\textit{Hint}:\space\ignorespaces} +\newcommand{\listing@tailHint}{} +\newenvironment{listing@answer}{% + \textBgColor{\@solnColor}% + \headAnswer +}{\tailAnswer} +\newcommand{\listing@headAnswer}{% + \par\textit{Answer}:\space\ignorespaces} +\newcommand{\listing@tailAnswer}{} +\def\ec@redefForListing{% + \let\card\listing@card + \let\endcard\endlisting@card + \let\headCard\listing@headCard + \let\tailCard\listing@tailCard + \let\response\listing@response % dps + \let\endresponse\endlisting@response % dps + \let\headhint\listing@hint + \let\endhint\listing@endhint + \let\headHint\listing@headHint + \let\tailHint\listing@tailHint + \let\answer\listing@answer + \let\endanswer\listing@endanswer + \let\headAnswer\listing@headAnswer + \let\tailAnswer\listing@tailAnswer +} +\AtBeginDocument{\ec@redefForListing} +\endinput +%% +%% End of file `ecardslist.def'. diff --git a/texmf-dist/tex/latex/fc-arith/fc_arith.sty b/texmf-dist/tex/latex/fc-arith/fc_arith.sty new file mode 100644 index 00000000..0d0f54b6 --- /dev/null +++ b/texmf-dist/tex/latex/fc-arith/fc_arith.sty @@ -0,0 +1,1887 @@ +%% +%% This is file `fc_arith.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fc_arith.dtx (with options: `copyright,package') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% fc_arith.sty package, %% +%% Copyright (C) 1999-2017 D. P. Story %% +%% dpstory@uakron.edu %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1.2 of %% +%% the License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e}[1997/12/01] +\ProvidesPackage{fc_arith} + [2017/01/16 v1.0f fc_arith: PDF flash cards for arithmetic drill (dps)] +\RequirePackage{xkeyval} +\RequirePackage{ifxetex} +\RequirePackage{calc} +\let\fc@YES=y \let\fc@NO=n +\DeclareOptionX{allownegsub}{\def\fcAllowNegSub{true}} +\def\fcAllowNegSub{false} +\DeclareOptionX{nomenu}{\let\fc@usemenu\fc@NO} +\let\fc@usemenu\fc@YES +\DeclareOptionX{operations}[add,sub,mul,div]{\def\fc@operations{#1}} +\def\fc@operations{add,sub,mul,div} +\DeclareOptionX{showkeypadlink}{\let\fc@keypadlink\fc@YES} +\let\fc@keypadlink\fc@NO +\DeclareOptionX{notimedscores}{% + \def\fcTimedScores{false} + \let\fc@timedscores\fc@NO +} +\def\fcTimedScores{true} +\let\fc@timedscores\fc@YES +\ProcessOptionsX +\RequirePackage{eforms}[2017/01/15] +\RequirePackage{popupmenu} +\newdimen\fcWidth +\define@boolkey{fcopera}{add}[true]{} +\define@boolkey{fcopera}{sub}[true]{} +\define@boolkey{fcopera}{mul}[true]{} +\define@boolkey{fcopera}{div}[true]{} +\edef\fc@expand{\noexpand\setkeys{fcopera}{\fc@operations}}\fc@expand +\define@key{fcarithparams}{addT}[{[0,100]}]{\def\fcAddTParams{#1}} +\define@key{fcarithparams}{addB}[{[0,100]}]{\def\fcAddBParams{#1}} +\define@choicekey{fcarithparams}{addDecT}[\val\nr]{none,1,2}[none]{% + \edef\fcaddDecT{\nr}}{} +\define@choicekey{fcarithparams}{addDecB}[\val\nr]{none,1,2}[none]{% + \edef\fcaddDecB{\nr}}{} +\define@key{fcarithparams}{subT}[{[0,100]}]{\def\fcSubTParams{#1}} +\define@key{fcarithparams}{subB}[{[0,100]}]{\def\fcSubBParams{#1}} +\define@choicekey{fcarithparams}{subDecT}[\val\nr]{none,1,2}[none]{% + \edef\fcsubDecT{\nr}}{} +\define@choicekey{fcarithparams}{subDecB}[\val\nr]{none,1,2}[none]{% + \edef\fcsubDecB{\nr}}{} +\define@key{fcarithparams}{mulT}[{[0,100]}]{\def\fcMulTParams{#1}} +\define@key{fcarithparams}{mulB}[{[0,10]}]{\def\fcMulBParams{#1}} +\define@choicekey{fcarithparams}{mulDecT}[\val\nr]{none,1,2}[none]{% + \edef\fcmulDecT{\nr}}{} +\define@choicekey{fcarithparams}{mulDecB}[\val\nr]{none,1,2}[none]{% + \edef\fcmulDecB{\nr}}{} +\define@key{fcarithparams}{divQ}[{[0,10]}]{\def\fcDivQParams{#1}} +\define@key{fcarithparams}{divB}[{[0,10]}]{\def\fcDivBParams{#1}} +\define@choicekey{fcarithparams}{divDecQ}[\val\nr]{none,1,2}[none]{% + \edef\fcdivDecQ{\nr}}{} +\define@choicekey{fcarithparams}{divDecB}[\val\nr]{none,1,2}[none]{% + \edef\fcdivDecB{\nr}}{} +\setkeys{fcarithparams}{addT,addB,subT,subB,mulT,mulB,divQ,divB,% + addDecT,addDecB,subDecT,subDecB,mulDecT,mulDecB,divDecQ,divDecB} +\newcommand{\DeclareArithParams}[1]{\setkeys{fcarithparams}{#1}} +\@onlypreamble\DeclareArithParams +\newcommand{\timeUpMsg}{Your Time is UP!} +\newcommand{\rightMsg}{Right!} +\newcommand{\wrongMsg}{Wrong!} +\newcommand{\startAgainMsg}{Start Again} +\newcommand{\newCardMsg}{New Card} +\newcommand{\toggleKeypad}{Toggle Keypad} +\newcommand{\operation}{Operation} +\newcommand{\numCorrect}{Number Correct} +\newcommand{\numAttempted}{Number Attempted} +\newcommand{\percentCorrect}{Percentage Correct} +\newcommand{\timedScores}{Timed Scores} +\newcommand{\fmtAnswer}{Answer:} +\newcommand{\kpDec}{.} +\newcommand{\kpMinus}{-} +\newcommand{\kpBack}{Back} +\newcommand{\kpEnter}{Enter} +\newcommand{\fcNoTiming}{No Timing} +\newcommand{\fcAddition}{Addition} +\newcommand{\fcSubtraction}{Subtraction} +\newcommand{\fcMultiplication}{Multiplication} +\newcommand{\fcDivision}{Division} +\newcommand{\fcSettings}{Settings} +\newcommand{\fcSettingsColor}{0 0 0} +\newcommand{\fcSettingsTooltip}{Click for a dropdown menu + of menu choices} +\newcommand{\FCMenu}{\smash{\hbox{\pushButton[\textSize{8}\H{O} + \textColor{\fcSettingsColor} + \CA{\fcSettings\space}\S{S}\BC{}\BG{}\TU{\fcSettingsTooltip} + \A{\JS{processFcMenu();}}]{fcSettingsBtn}{}{11bp}\kern0pt}}} + \ifx\fc@usemenu\fc@YES\lheader{\FCMenu}\rheader{}\else +\lheader{}\rheader{}\fi +\newenvironment{MenuFC}{\begin{popupmenu}{fcMenu}} +{\end{popupmenu}} +\def\fcMenu{// No menu items selected in the MenuFC environment} +\def\fcOptionsMenuItem{\item{title=\fcOptionsMenuItemTitle,return=0}} +\newcommand\fcOptionsMenuItemTitle{Options} +\def\fcToggleKeypadMenuItem{\item{title=\fcToggleKeypadMenuItemTitle,% + marked=false,return=1}} +\newcommand\fcToggleKeypadMenuItemTitle{Toggle Keypad} +\def\fcTouchKPMenuItem{\item{title=\fcTouchKPMenuItemTitle,% + marked=false,enabled=false,return=3}} +\newcommand\fcTouchKPMenuItemTitle{Touch Friendly Keypad} +\def\fcMouseKPMenuItem{\item{title=\fcMouseKPMenuItemTitle,% + marked=true,enabled=false,return=4}} +\newcommand\fcMouseKPMenuItemTitle{Mouse Friendly Keypad} +\def\fcAboutFC{\item{title=\fcAboutFCTitle, return=2}} +\newcommand\fcAboutFCTitle{About PDF Flash Cards} +\newcommand{\tBGNoBorder}{\BC{}\BG{}\autoCenter{n}\textSize{0} + \textColor{1 0 0}\Ff\FfReadOnly} +\newcommand{\tBGNoBorderI}{\BC{}\BG{}\autoCenter{n}\textSize{0} + \textColor{0 0 0}} +\newcommand{\cBGNoBorder}{\Q{1}\BC{}\BG{}\autoCenter{n}\textSize{0} + \textColor{0 0 0}\BG{.75 .75 .75}\Ff\FfReadOnly} +\newcommand{\cBGBorder}{\BC{0 0 0}\BG{.75 .75 .75}\autoCenter{n} + \textSize{0}\textColor{0 0 0}} +\newcommand{\myNumPadI}{\F\FHidden\autoCenter{n}\textSize{8} + \textFont{\fieldFont}\S{S}} +\newcommand{\setDimOf}[3]{\@namedef{widthOf#1}{#2}% + \@namedef{heightOf#1}{#3}} +\newcommand{\monoSpaceFont}{CoBo} +\newcommand{\fieldFont}{Helv} +\setDimOf{top}{1in}{0.62in} +\setDimOf{operation}{.38in}{.62in} +\setDimOf{bottom}{1in}{0.62in} +\newcommand{\arithProb}{\mbox{\vbox{\offinterlineskip + \hbox{\hspace*{\@nameuse{widthOfoperation}}% + \textField[\presets{\tBGNoBorder} + \textFont{\monoSpaceFont}\Q{2}]{top}% + {\@nameuse{widthOf\Fld@name}}{\@nameuse{heightOf\Fld@name}}% + }% + \hbox{% + \textField[\presets{\tBGNoBorder} + \textSize{25}\Q{1}]{operation}{\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}% + \textField[\presets{\tBGNoBorder} + \textFont{\monoSpaceFont}\Q{2}]{bottom}% + {\@nameuse{widthOf\Fld@name}}{\@nameuse{heightOf\Fld@name}}% + }}}% +} +\setDimOf{alertbox}{.88in}{.62in} +\setDimOf{StartAgain}{0.88in}{0.62in} +\setDimOf{result}{1.38in}{0.62in} +\setDimOf{NewProblem}{0.88in}{0.62in} +\newcommand{\alertbox}[1][]{\hbox{\textField[\presets{\tBGNoBorder} + \textSize{0}#1]{alertbox}{\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}}} +\@ifundefined{if@useacrobat}{\let\placeImageOpts\@empty} +{\def\placeImageOpts{\FB{false}\I{null}\TP{2}}} +\newcommand{\startAgain}[1][]{\hbox{% + \expandafter\pushButton\expandafter[\placeImageOpts + \presets{\tBGNoBorderI}\textFont{\fieldFont}\S{S} + \textSize{12}\CA{\startAgainMsg}\AC{\startAgainMsg}#1 + \A{\JS{startAgain();}}]{StartAgain}{\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}}} +\newcommand{\inputRegion}[1][]{\hbox{\textField[\presets{\cBGNoBorder} + \Ff{-\FfReadOnly}\Q{2}#1\AA{\AAValidate{validateResult();} + \AAKeystroke{fcNumber_Keystroke(numDecimals,1,0,0,"",true);} + \AAFormat{try{% + fcNumber_Format(numDecimals,1,0,0,"",true);}catch(e){}}} + ]{result}{\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}}} +\newcommand{\newCard}[1][]{\hbox{% + \expandafter\pushButton\expandafter[\placeImageOpts + \textSize{12}\presets{\tBGNoBorderI}\textFont{\fieldFont}\S{S} + \CA{\newCardMsg}\AC{\newCardMsg}#1\A{\JS{newCard();}} + ]{NewProblem}{\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}}} +\setDimOf{TimeDelay}{0.9in}{0.24in} +\setDimOf{ansregion}{.87in+10bp}{.24in} +\setDimOf{ChooseOperation}{1.38in-10bp}{0.24in} +\edef\isReadOnlyTiming{\ifx\fc@timedscores\fc@NO + \noexpand\Ff{\FfReadOnly}\fi} +\newcommand{\cbTimingToolip}{Select a time challenge + from the dropdown menu} +\newcommand{\cbTiming}[1][]{\hbox{% + \expandafter\comboBox\expandafter[\isReadOnlyTiming + \presets{\cBGBorder}\textFont{\fieldFont}\V{600000}\DV{600000}#1 + \TU{\cbTimingToolip}\AA{\AAKeystroke{% + if (!event.willCommit) timelimit=event.changeEx;}} + ]{TimeDelay}{\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}{% + [(600000)(\fcNoTiming)][(30)(30 sec)][(25)(25 sec)][(20)(20 sec)]% + [(15)(15 sec)][(10)(10 sec)][(5)(\space\space 5 sec)]}}% +} +\newcommand{\ansField}[1][]{\hbox{\textField[\presets{\cBGNoBorder}\Q{2} + #1\AA{\AAFormat{% + if (event.value!="") {\r + try{fcNumber_Format(numDecimals,1,0,0,"",true);\r + event.value=("\fmtAnswer\space")+event.value;}catch(e){};}}} + ]{ansregion}{\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}}% +} +\let\fc@addAbbr=a\let\fc@subAbbr=s +\let\fc@mulAbbr=m\let\fc@divAbbr=d +\newcommand{\cbOpDefault}[1]{\def\cbOpDef@ult{#1}% + \if\cbOpDef@ult\fc@addAbbr\else\if\cbOpDef@ult\fc@subAbbr\else + \if\cbOpDef@ult\fc@mulAbbr\else\if\cbOpDef@ult\fc@divAbbr\else + \ifKV@fcopera@add\def\cbOpDef@ult{a}\else + \ifKV@fcopera@sub\def\cbOpDef@ult{s}\else + \ifKV@fcopera@mul\def\cbOpDef@ult{m}\else + \ifKV@fcopera@div\def\cbOpDef@ult{d}\else + \PackageError{fc_arith}{There are no selected arithmetic + operations}{}\fi\fi\fi\fi + \PackageWarning{fc_arith}{Value of \string\cbOpDefault\space + not recognized,\MessageBreak will use `\cbOpDef@ult'}% + \fi\fi\fi\fi +} +\cbOpDefault{a} +\newcommand{\cbOperationTooltip}{Choose an arithmetic operation + to practice} +\newcommand{\cbOperation}[1][]{% + \edef\cbvOptChoices{\ifKV@fcopera@add[(a)(\fcAddition)]\fi + \ifKV@fcopera@sub[(s)(\fcSubtraction)]\fi + \ifKV@fcopera@mul[(m)(\fcMultiplication)]\fi + \ifKV@fcopera@div[(d)(\fcDivision)]\fi}% + \hbox{\comboBox[\presets{\cBGBorder}\textFont{\fieldFont} + \TU{\cbOperationTooltip} + \V{\cbOpDef@ult}\DV{\cbOpDef@ult}#1]{ChooseOperation}% + {\@nameuse{widthOf\Fld@name}}% + {\@nameuse{heightOf\Fld@name}}{\cbvOptChoices}}% +} +\newcommand{\szNum}{14bp} +\newcommand\toggleKeyPadBtnColor{0 0 1} +\newcommand\toggleKeyPadBtnTooltip{Click to toggle keypad, shift-click + to toggle between mouse and touch keypads} +\def\toggleKeyPadBtn{\pushButton[\textSize{6}\CA{\toggleKeypad}\H{O} + \TU{\toggleKeyPadBtnTooltip}\textColor{\toggleKeyPadBtnColor} + \S{S}\BC{}\BG{}\A{\JS{% + if (event.shift)\r\t + if (bTouchFriendly)\r\t\t + makeMouseFriendly();\r\t + else\r\t\t + makeTouchFriendly();\r\t + else\r\t + ToggleKeyPad();\r +}}]{toggleKeyPadBtn}{}{8bp}}% +\newcommand{\Keypad}{% + \vbox{\offinterlineskip\ifx\fc@keypadlink\fc@YES + \setlength{\fcWidth}{4bp+\szNum*4}% + \hbox to\fcWidth{\hfill\toggleKeyPadBtn\hfill}\vskip2bp\fi + \hbox{\pushButton[\presets{\myNumPadI}\CA{7} + \A{\JS{addDigit(7)}}]{num7}{\szNum}{\szNum}\olBdry + \pushButton[\presets{\myNumPadI}\CA{8} + \A{\JS{addDigit(8)}}]{num8}{\szNum}{\szNum}\olBdry + \pushButton[\presets{\myNumPadI}\CA{9} + \A{\JS{addDigit(9)}}]{num9}{\szNum}{\szNum}}\olBdry + \hbox{\pushButton[\presets{\myNumPadI}\CA{4} + \A{\JS{addDigit(4)}}]{num4}{\szNum}{\szNum}\olBdry + \pushButton[\presets{\myNumPadI}\CA{5} + \A{\JS{addDigit(5)}}]{num5}{\szNum}{\szNum}\olBdry + \pushButton[\presets{\myNumPadI}\CA{6} + \A{\JS{addDigit(6)}}]{num6}{\szNum}{\szNum}}\olBdry + \hbox{\pushButton[\presets{\myNumPadI}\CA{1} + \A{\JS{addDigit(1)}}]{num1}{\szNum}{\szNum}\olBdry + \pushButton[\presets{\myNumPadI}\CA{2} + \A{\JS{addDigit(2)}}]{num2}{\szNum}{\szNum}\olBdry + \pushButton[\presets{\myNumPadI}\CA{3} + \A{\JS{addDigit(3)}}]{num3}{\szNum}{\szNum}}\olBdry + \hbox{\edef\w@dj{\ifmakeXasPD1bp\else\ifxetex-1bp\else-1bp\fi\fi}% + \pushButton[\presets{\myNumPadI}\CA{0} + \A{\JS{addDigit(0)}}]{num0}{\w@dj+\szNum*2}{\szNum}\olBdry + \pushButton[\presets{\myNumPadI}\CA{\kpDec} + \A{\JS{addDigit("Dec")}}]{Dec}{\szNum}{\szNum}\olBdry + \smash{\vbox{\edef\w@dj{\ifmakeXasPD1bp\else\ifxetex-1bp\else-1bp\fi\fi}% + \hbox{\pushButton[\presets{\myNumPadI}\CA{\kpMinus} + \A{\JS{addDigit("Minus")}} + ]{Minus}{\szNum}{\szNum}}\olBdry + \hbox{\pushButton[\presets{\myNumPadI}\CA{\kpBack} + \textSize{0}\A{\JS{addDigit("Back")}} + ]{Back}{\szNum}{\szNum}}\olBdry + \hbox{\pushButton[\presets{\myNumPadI}\CA{\kpEnter} + \textSize{0}\A{\JS{addDigit("Enter")}} + ]{Enter}{\szNum}{\w@dj+\szNum*2}}% + }}}}% +} +\def\fcSep{\quad} +\setDimOf{fcSF}{0.37in}{0.25in} +\newcommand{\statsFieldOpColor}{1 0 0} +\newcommand{\statsFieldColor}{blue} +\newcommand{\timeScoresTooltip}{Click to see how points are assigned} +\newcommand{\statsFields}{% +\ifKV@fcopera@add + \vbox{\offinterlineskip + \hbox{\textField[\presets{\cBGNoBorder} + \textColor{\statsFieldOpColor}\V{+}\DV{+}\Q{1} + ]{AddScore1}{\widthOffcSF}{\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder} + ]{AddScore2}{\widthOffcSF}{\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder} + ]{AddScore3}{\widthOffcSF}{\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder} + ]{AddScore4}{\widthOffcSF}{\heightOffcSF}}% +\ifx\fc@timedscores\fc@YES\olBdry + \hbox{\textField[\presets{\cBGNoBorder} + ]{AddScore5}{\widthOffcSF}{\heightOffcSF}}% +\fi + }\fcSep +\fi +\ifKV@fcopera@sub +\vbox{\offinterlineskip + \hbox{\textField[\presets{\cBGNoBorder} + \textColor{\statsFieldOpColor}\V{-}\DV{-}\Q{1} + ]{SubScore1}{\widthOffcSF}{\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{SubScore2}% + {\widthOffcSF}{\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{SubScore3}% + {\widthOffcSF}{\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{SubScore4}{\widthOffcSF}% + {\heightOffcSF}} +\ifx\fc@timedscores\fc@YES\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{SubScore5}{\widthOffcSF}% + {\heightOffcSF}} +\fi + }\fcSep +\fi +\ifKV@fcopera@mul +\vbox{\offinterlineskip + \hbox{\textField[\presets{\cBGNoBorder} + \textColor{\statsFieldOpColor}\V{x}\DV{x}\Q{1} + ]{MulScore1}{\widthOffcSF}{\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{MulScore2}{\widthOffcSF}% + {\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{MulScore3}{\widthOffcSF}% + {\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{MulScore4}{\widthOffcSF}% + {\heightOffcSF}} +\ifx\fc@timedscores\fc@YES\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{MulScore5}{\widthOffcSF}% + {\heightOffcSF}} +\fi + }\fcSep +\fi +\ifKV@fcopera@div +\vbox{\offinterlineskip + \hbox{\textField[\presets{\cBGNoBorder} + \textColor{\statsFieldOpColor} + \uV{FEFF00F7}\uDV{FEFF00F7}\Q{1} + ]{DivScore1}{\widthOffcSF}% + {\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{DivScore2}{\widthOffcSF}% + {\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{DivScore3}{\widthOffcSF}% + {\heightOffcSF}}\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{DivScore4}{\widthOffcSF}% + {\heightOffcSF}} +\ifx\fc@timedscores\fc@YES\olBdry + \hbox{\textField[\presets{\cBGNoBorder}]{DivScore5}{\widthOffcSF}% + {\heightOffcSF}} +\fi + }\fcSep +\fi +\vbox{\offinterlineskip + \hbox{\parbox[b][.25in][c]{.75in}{% + \textcolor{blue}{\operation}\hfill}} + \hbox{\parbox[b][.25in][c]{1.25in}{% + \textcolor{blue}{\numCorrect}\hfill}} + \hbox{\parbox[b][.25in][c]{1.25in}{% + \textcolor{blue}{\numAttempted}\hfill}} + \hbox{\parbox[b][.25in][c]{1.25in}{% + \textcolor{blue}{\percentCorrect}\hfill}} +\ifx\fc@timedscores\fc@YES + \hbox{\textField[\presets{\cBGNoBorder} + \textColor{\statsFieldOpColor} + ]{ScoreTotal}{.51in}{.25in}\kern1bp + \makebox[0pt][l]{\pushButton[\presets{\tBGNoBorder} + \Ff{-\FfReadOnly}\S{S}\H{I}\textSize{10} + \TU{\timeScoresTooltip} + \A{\JS{docTimeScores();}}]{Descrip5}{1in}{.25in}}% + \parbox[b][.25in][c]{1in}{% + \centering\textcolor{blue}{\timedScores}}}% +\fi + }% +} +\edef\bFCa{/\ifKV@fcopera@add/\else*\fi} +\edef\eFCa{\ifKV@fcopera@add/\else*\fi/} +\edef\bFCs{/\ifKV@fcopera@sub/\else*\fi} +\edef\eFCs{\ifKV@fcopera@sub/\else*\fi/} +\edef\bFCm{/\ifKV@fcopera@mul/\else*\fi} +\edef\eFCm{\ifKV@fcopera@mul/\else*\fi/} +\edef\bFCd{/\ifKV@fcopera@div/\else*\fi} +\edef\eFCd{\ifKV@fcopera@div/\else*\fi/} +\def\fctCharWidth{22} +\def\fctInstr{"Points are awarded, based on time, + for successfully solving a problem:"} +\def\fctTimeElapsed{"Time elapsed"} +\def\fctPoints{"Points"} +\def\fctLessThanV{"Less than 5 sec"} +\def\fctLessThanVPoints{6} +\def\fctBtwnVAndX{"Between 5 and 10 sec"} +\def\fctBtwnVAndXPoints{5} +\def\fctBtwnXAndXV{"Between 10 and 15 sec"} +\def\fctBtwnXAndXVPoints{4} +\def\fctBtwnXVAndXX{"Between 15 and 20 sec"} +\def\fctBtwnXVAndXXPoints{3} +\def\fctBtwnXXAndXXV{"Between 20 and 25 sec"} +\def\fctBtwnXXAndXXVPoints{2} +\def\fctGtrXXV{"Greater than 25 sec"} +\def\fctGtrXXVPoints{1} +\newcommand\amtChngMouToTou{5} +\newcommand\fcOptTextWidth{80} +\newcommand\fcOptTopRange{Range Top} +\newcommand\fcOptBottomRange{Range Bottom} +\newcommand\fcOptTopRangeDiv{Range Quotient} +\newcommand\fcOptBottomRangeDiv{Range Divisor} +\newcommand\fcOptTo{ to } +\newcommand\fcOptAllowNegNumber{Allow Negative Subtraction} +\newcommand\fcOptDecimal{Decimals:} +\newcommand\fcOptDecimalNone{none} +\newcommand\fcMenuFCMsg{No menu items to display} +\newcommand\fcAdditionName{\fcAddition} +\newcommand\fcSubtractionName{\fcSubtraction} +\newcommand\fcMultiplicationName{\fcMultiplication} +\newcommand\fcDivisionName{\fcDivision} +\begin{insDLJS*}{fcjs} +\begin{newsegment}{data} +var _loadfcjs=true; +var t, b, o, r, c, oAlert; +function getFieldObjects() +{ + t=this.getField("top"); + b=this.getField("bottom"); + o=this.getField("operation"); + r=this.getField("result"); + c=this.getField("ChooseOperation"); + oAlert=this.getField("alertbox"); + useKeyPad = (this.getField("Enter").display==display.visible); +} +var turnoff=false; +var bUpdateField=true; +var timedScores=\fcTimedScores; +var fcAllowNegSub=\fcAllowNegSub; +var useKeyPad = false; +var decimalPressed = false; +var keypadInput=false; +var operand='a'; +var NumAddCorr=0; +var NumAddTried=0; +var NumSubCorr=0; +var NumSubTried=0; +var NumMulCorr=0; +var NumMulTried=0; +var NumDivCorr=0; +var NumDivTried=0; +timelimit=600000; +var mybegin; +getFieldObjects(); +var numDecimals=0; +var addDecT = \fcaddDecT, addDecB = \fcaddDecB; +var addT_a = Number(\fcAddTParams[0]); +var addT_b = Number(\fcAddTParams[1]); +var addB_a = Number(\fcAddBParams[0]); +var addB_b = Number(\fcAddBParams[1]); +var subDecT = \fcsubDecT, subDecB = \fcsubDecB; +var subT_a = Number(\fcSubTParams[0]); +var subT_b = Number(\fcSubTParams[1]); +var subB_a = Number(\fcSubBParams[0]); +var subB_b = Number(\fcSubBParams[1]); +var mulDecT = \fcmulDecT, mulDecB = \fcmulDecB; +var mulT_a = Number(\fcMulTParams[0]); +var mulT_b = Number(\fcMulTParams[1]); +var mulB_a = Number(\fcMulBParams[0]); +var mulB_b = Number(\fcMulBParams[1]); +var divDecQ = \fcdivDecQ, divDecB = \fcdivDecB; +var divQ_a = Number(\fcDivQParams[0]); +var divQ_b = Number(\fcDivQParams[1]); +var divB_a = Number(\fcDivBParams[0]); +var divB_b = Number(\fcDivBParams[1]); +\end{newsegment} +\begin{newsegment}{updatescore} +function updatescore(f,t) { + // console.println(t); + var points=0; + if(t<=5) points=6; + if((t>5)&&(t<=10)) points=5; + if((t>10)&&(t<=15)) points=4; + if((t>15)&&(t<=20)) points=3; + if((t>20)&&(t<=25)) points=2; + if(t>25) points=1; + var oField=this.getField(f); + if ( oField != null ) { + oField.value+=points; + this.getField("ScoreTotal").value+=points; + } +} +function docTimeScores() { + app.execDialog(fcTimedScoresDialog); +} +var fcTimedScoresDialog = +{ + // set a default value for radio button field + initialize: function(dialog) { + }, + // when user presses "Ok", this handler will execute first + commit: function(dialog) { + }, + // The Dialog Description + description: + { + name: "PDF Flash Cards - Timed Scores", + align_children: "align_left", + elements: + [ + { + type: "view", + align_children: "align_left", + elements: + [ + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "static_text", + item_id: "instr", + name: \fctInstr + } + ] + }, + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "gap", + width: 10 + }, + { + type: "static_text", + item_id: "hr01", + char_width: \fctCharWidth, + font: "dialog", + bold: true, + name: \fctTimeElapsed + }, + { + type: "static_text", + item_id: "hr02", + font: "dialog", + bold: true, + name: \fctPoints + }, + ] + }, + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "gap", + width: 10 + }, + { + type: "static_text", + item_id: "st11", + char_width: \fctCharWidth, + name: \fctLessThanV + }, + { + type: "static_text", + item_id: "st12", + name: " \fctLessThanVPoints" + }, + ] + }, + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "gap", + width: 10 + }, + { + type: "static_text", + item_id: "st21", + char_width: \fctCharWidth, + name: \fctBtwnVAndX + }, + { + type: "static_text", + item_id: "st22", + name: " \fctBtwnVAndXPoints" + }, + ] + }, +//--- + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "gap", + width: 10 + }, + { + type: "static_text", + item_id: "st31", + char_width: \fctCharWidth, + name: \fctBtwnXAndXV + }, + { + type: "static_text", + item_id: "st32", + name: " \fctBtwnXAndXVPoints" + }, + ] + }, +//--- + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "gap", + width: 10 + }, + { + type: "static_text", + item_id: "st41", + char_width: \fctCharWidth, + name: \fctBtwnXVAndXX + }, + { + type: "static_text", + item_id: "st42", + name: " \fctBtwnXVAndXXPoints" + }, + ] + }, + ] + }, +//--- + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "gap", + width: 10 + }, + { + type: "static_text", + item_id: "st51", + char_width: \fctCharWidth, + name: \fctBtwnXXAndXXV + }, + { + type: "static_text", + item_id: "st52", + name: " \fctBtwnXXAndXXVPoints" + }, + ] + }, +//--- + { + type: "view", + align_children: "align_row", + elements: + [ + { + type: "gap", + width: 10 + }, + { + type: "static_text", + item_id: "st61", + char_width: \fctCharWidth, + name: \fctGtrXXV + }, + { + type: "static_text", + item_id: "st62", + name: " \fctGtrXXVPoints" + }, + ] + }, +//--- + { + type: "view", + align_children: "align_row", + elements: + [ + { + alignment: "align_right", + type: "ok", + } + ] + } + ] + } +} +function validateResult() +{ + var oField, MsgFlag, calculation; + if (!turnoff && !keypadInput) { + MsgFlag=false; + this.delay=true; + var mynow=new Date(); + var elapsedtime = (Date.parse(mynow)-Date.parse(mybegin))/1000; + var timeelapsed = (elapsedtime>timelimit); + switch (operand) { + case 'a': + oField = this.getField("AddScore2"); + bUpdateField = ( oField != null ); + calculation=util.printf("\%."+numDecimals+"f",% +(t.value+b.value)); + if(timeelapsed) { + if (timedScores) app.alert("\timeUpMsg",3); + if (bUpdateField) oField.value=NumAddCorr; + } else { + if((1*event.value)==calculation) { + MsgFlag=true; + if ( bUpdateField ) { + oField.value=++NumAddCorr; + updatescore("AddScore5",elapsedtime); + } + } + else + if ( bUpdateField ) oField.value=NumAddCorr; + } + oField = this.getField("AddScore3"); + if (oField != null ) oField.value=++NumAddTried; + oField = this.getField("AddScore4"); + if (oField != null ) oField.value = util.printf("\%.0f",% +(NumAddCorr/NumAddTried)*100); + break; + case 's': + oField=this.getField("SubScore2"); + bUpdateField = ( oField != null ); + calculation=util.printf("\%."+numDecimals+"f", + (t.value-b.value)); + if(timeelapsed) { + if (timedScores) app.alert("\timeUpMsg",3); + if (bUpdateField) oField.value=NumSubCorr; + } else { + if((1*event.value)==calculation) { + MsgFlag=true; + if ( bUpdateField ) { + oField.value=++NumSubCorr; + updatescore("SubScore5",elapsedtime); + } + } else + if ( bUpdateField ) oField.value=NumSubCorr; + } + oField=this.getField("SubScore3"); + if (oField != null) oField.value=++NumSubTried; + oField=this.getField("SubScore4"); + if (oField != null) oField.value=util.printf("\%.0f",% +(NumSubCorr/NumSubTried)*100); + break; + case 'm': + oField=this.getField("MulScore2"); + bUpdateField = ( oField != null ); + calculation=util.printf("\%."+numDecimals+"f",% +(t.value*b.value)); + if(timeelapsed) { + if (timedScores) app.alert("\timeUpMsg",3); + if (bUpdateField) oField.value=NumMulCorr; + } else { + if((1*event.value)==calculation) { + MsgFlag=true; + if (bUpdateField) { + oField.value=++NumMulCorr; + updatescore("MulScore5",elapsedtime); + } + } else + if (bUpdateField) oField.value=NumMulCorr; + } + oField=this.getField("MulScore3"); + if (oField != null) oField.value=++NumMulTried; + oField=this.getField("MulScore4"); + if (oField != null) oField.value=util.printf("\%.0f",% +(NumMulCorr/NumMulTried)*100); + break; + case 'd': + oField=this.getField("DivScore2"); + bUpdateField = ( oField != null ); + calculation=util.printf("\%."+numDecimals+"f",% +t.value/b.value); + if(timeelapsed) { + if (timedScores) app.alert("\timeUpMsg",3); + if (bUpdateField) oField.value=NumDivCorr; + } else { + if((1*event.value)==calculation) { + MsgFlag=true; + if (bUpdateField) { + oField.value=++NumDivCorr; + updatescore("DivScore5",elapsedtime); + } + } else + if ( bUpdateField ) oField.value=NumDivCorr; + } + oField = this.getField("DivScore3"); + if (oField != null) oField.value=++NumDivTried; + oField = this.getField("DivScore4"); + if (oField != null) oField.value=util.printf("\%.0f",% +(NumDivCorr/NumDivTried)*100); + break; + } + if(!timeelapsed) { + if(MsgFlag) { + oAlert.textColor=color.blue; + oAlert.value="\rightMsg"; + } else { + oAlert.textColor=color.red; + oAlert.value="\wrongMsg"; + } + } + this.getField("ansregion").value=calculation; + this.getField("NewProblem").setFocus() ; + this.delay=false; + } +} +function startAgain() { + getFieldObjects(); + turnoff=true; + this.resetForm(); + timelimit=600000; + event.rc=false; + operand='+'; + NumAddCorr=0; + NumAddTried=0; + NumSubCorr=0; + NumSubTried=0; + NumMulCorr=0; + NumMulTried=0; + NumDivCorr=0; + NumDivTried=0; +} +function newCard() { + turnoff=true; + this.resetForm(["result","top","bottom","ansregion","alertbox"]); + operand = c.value; + switch (operand) + { + case 'a': + { + o.value='+'; // addDecT + numDecimals = Math.max(addDecT,addDecB); + var topTemplate = "\%."+addDecT+"f"; + var botTemplate = "\%."+addDecB+"f"; + var matchTemplate = "\%."+ numDecimals +"f"; + var m=util.printf(topTemplate,% +(addT_b-addT_a)*Math.random()+addT_a); + var n=util.printf(botTemplate,% +(addB_b-addB_a)*Math.random()+addB_a); + m=util.printf(matchTemplate,m); + n=util.printf(matchTemplate,n); + var nWidth=(m.length < n.length) ? n.length : m.length; + var commonTemplate = "\%"+nWidth+"."+numDecimals+"f"; + t.value=util.printf(commonTemplate,m); + b.value=util.printf(commonTemplate,n); + break; + } + case 's': + { + o.value="-"; + numDecimals = Math.max(subDecT,subDecB); + var topTemplate = "\%."+subDecT+"f"; + var botTemplate = "\%."+subDecB+"f"; + var matchTemplate = "\%."+ numDecimals +"f"; + var m=util.printf(topTemplate,% +(subT_b-subT_a)*Math.random()+subT_a); + var n=util.printf(botTemplate,% +(subB_b-subB_a)*Math.random()+subB_a); + m=util.printf(matchTemplate,m); + n=util.printf(matchTemplate,n); + var nWidth=(m.length < n.length) ? n.length : m.length; + var commonTemplate = "\%"+nWidth+"."+numDecimals+"f"; + var bSwitch=( (!fcAllowNegSub) && (n-m>0) ); + t.value=util.printf(commonTemplate,(bSwitch)?n:m); + b.value=util.printf(commonTemplate,(bSwitch)?m:n); + break; + } + case 'm': + { + o.value='x'; + numDecimals=Math.max(mulDecT,mulDecB); + var topTemplate = "\%."+mulDecT+"f"; + var botTemplate = "\%."+mulDecB+"f"; + var matchTemplate = "\%."+ numDecimals +"f"; + var m=util.printf(topTemplate,% +(mulT_b-mulT_a)*Math.random()+mulT_a); + var n=util.printf(botTemplate,% +(mulB_b-mulB_a)*Math.random()+mulB_a); + m=util.printf(matchTemplate,m); + n=util.printf(matchTemplate,n); + var nWidth=(m.length < n.length) ? n.length : m.length; + var commonTemplate = "\%"+nWidth+"."+numDecimals+"f"; + t.value=util.printf(commonTemplate,m); + b.value=util.printf(commonTemplate,n); + numDecimals = mulDecT + mulDecB; + break; + } + case 'd': + { + o.value='\string\367' + numDecimals=divDecQ+divDecB; + var topTemplate = "\%."+divDecQ+"f"; + var botTemplate = "\%."+divDecB+"f"; + var matchTemplate = "\%."+ numDecimals +"f"; + var n,m; + var quotient=util.printf(topTemplate,% +divQ_a + (divQ_b-divQ_a)*Math.random()); + for(n=util.printf(botTemplate,% +divB_a + (divB_b-divB_a)*Math.random()); + n==0; n=util.printf("\%.0f",% +divB_a + (divB_b-divB_a)*Math.random())); + m=util.printf(matchTemplate,quotient*n); + n=util.printf(matchTemplate,n); + var nWidth=(m.length < n.length) ? n.length : m.length; + var commonTemplate = "\%"+nWidth+"."+numDecimals+"f"; + t.value=util.printf(commonTemplate,m); + b.value=util.printf(commonTemplate,n); + numDecimals = divDecQ; + break; + } + } + // console.println("operation = " + o.value); + turnoff=false; + if (!useKeyPad) r.readonly=false; + mybegin=new Date(); + try{ r.setFocus(); } catch(e) {} +} +function addDigit(n) { + if (oAlert.value != "") return; + switch (n) { + case "Enter": + var tmp_value=r.valueAsString; + this.resetForm(["result"]); + keypadInput=false; + r.value = tmp_value; + break; + case "Back": + keypadInput=true; + var tmp_value=r.valueAsString; + if (tmp_value != "") + r.value = tmp_value.substring(0,tmp_value.length-1); + break; + case "Dec": + keypadInput=true; + var v=r.valueAsString; + v = v + "."; + r.value = v; + break; + case "Minus": + keypadInput=true; + var v=r.valueAsString; + if (r.value < 0 ) { + v = String(Math.abs(v)); + } else v = "-" + v; + r.value = v; + break; + default: + keypadInput=true; + v=r.valueAsString; + v = v + String(n); + r.value = v; + } +} +function ToggleKeyPad() { + useKeyPad = !useKeyPad; + if ( typeof fcMenu == "object") { + for (var i=0; i% + \fdg@urlNamedExp + }% + \else + \toks0=\expandafter{\fdg@embededResources}% + \ifx\fdg@embededResources\@empty + \xdef\fdg@embededResources{\@digiImgName}\else + \xdef\fdg@embededResources{\the\toks0,\@digiImgName}\fi + \fdg@IWVO{\space\space\space\space + % + \fdg@NamedExp + }% + \fi +\endgroup} +\def\fdg@IWVO{\immediate\write\verbatim@out} +\def\embededResources#1{\csname #1ERs\endcsname} +\def\xmlListiv#1{xmlList4#1} +\let\fdg@cntOf\@gobble +\newcommand{\fdgcntOf}[1]{\space(#1 of \fdg@numDigis)} +\define@boolkey{fdgXML}{showcount}[true]{% + \ifKV@fdgXML@showcount\let\fdg@cntOf\fdgcntOf\else + \let\fdg@cntOf\@gobble\fi +} +\define@boolkey{fdgXML}{nowrite}[true]{} +\setkeys{fdgXML}{showcount=false,nowrite=false} +\newcommand{\fdgXmlList}[3][]{% +\begingroup + \setkeys{fdgXML}{#1}% + \ifKV@fdgXML@nowrite\let\fdg@IWVO\@gobble\fi + \cntdigis=0 \gdef\fdg@embededResources{}% + \ifKV@fdgXML@nowrite\else + \newwrite \fdg@writexmllist + \immediate\openout \fdg@writexmllist=#2.xml + \let\verbatim@out\fdg@writexmllist + \fi + \fdg@IWVO{}% + \@ifundefined{#2@fdgdigis}{% + \fdg@namegdef{#2@fdgdigis}{#2}% + \def\fdg@CurrDigiName{#2}% + }{\PackageError{fldigigal}{Name already chosen}}% + \let\image\fdg@cnt@images#3% + \edef\fdg@numDigis{\the\cntdigis}% + \def\'{'}\let\iso\fdg@iso + \cntdigis=0 \let\image\fdg@image#3% + \fdg@IWVO{}% + \ifKV@fdgXML@nowrite\else + \immediate\closeout \fdg@writexmllist + \fi +\endgroup + \saveNamedPath{xmlList4#2}{\pathToSource/#2.xml}% + \fdg@namexdef{#2ERs}{\ifx\fdg@embededResources\@empty\else,\fi + \fdg@embededResources}% +} +\@onlypreamble{\fdgXmlList} +\define@key{fgRmAnnot}{flashvars}[]{\def\fgRmAnnot@flashvars{}} +\let\fgRmAnnot@flashvars\@empty +\define@key{fgRmAnnot}{galleryopts}[]{\def\fgRmAnnot@galleryopts{#1}} +\saveNamedPath{fdg_vt1}{\fdgFolder/fdg_vt1.swf} +\saveNamedPath{fdg_ht1}{\fdgFolder/fdg_ht1.swf} +\saveNamedPath{fdg_nt1}{\fdgFolder/fdg_nt1.swf} +\saveNamedPath{custom}{\fdgFolder/fdg_vt1.swf} +\define@choicekey+{fgGalleryOpts}{gallery}[\val\nr]% + {vthumbs1,hthumbs1,nothumbs1,custom}[vthumbs1]{% + \ifcase\nr\relax + \def\fgGalleryOpts@gallery{fdg_vt1}\or + \def\fgGalleryOpts@gallery{fdg_ht1}\or + \def\fgGalleryOpts@gallery{fdg_nt1}\or + \def\fgGalleryOpts@gallery{custom}\fi +}{} +\define@choicekey+{fgGalleryOpts}{trans}[\val\nr]% + {Blinds,Fade,Fly,Iris,Photo,PixelDissolve,Rotate,% + Squeeze,Wipe,Zoom,Random}[Random]{% + \edef\fgGalleryOpts@trans{\val}% +}{} +\let\fgGalleryOpts@trans\@empty +\define@key{fgGalleryOpts}{delay}[6]{\def\fgGalleryOpts@delay{#1}} +\let\fgGalleryOpts@delay\@empty +\define@boolkey{fgGalleryOpts}{auto}[true]{% + \edef\fgGalleryOpts@auto{\ifKV@fgGalleryOpts@auto + true\else false\fi}} +\define@boolkey{fgGalleryOpts}{transOn}[true]{% + \edef\fgGalleryOpts@transOn{\ifKV@fgGalleryOpts@transOn + true\else false\fi}} +\define@choicekey+{fgGalleryOpts}{captionalign}[\val\nr]% + {left,right,center}[left]{% + \edef\fgGalleryOpts@captionalign{\val}% +}{} +\let\fgGalleryOpts@captionalign\@empty +\define@boolkey{fgGalleryOpts}{nocaptions}[true]{% + \edef\fgGalleryOpts@nocaptions{\ifKV@fgGalleryOpts@nocaptions + true\else false\fi}} +\define@key{fgGalleryOpts}{nocaptionstext}[]{% + \def\fgGalleryOpts@nocaptionstext{#1}} +\setkeys{fgGalleryOpts}{gallery,transOn,auto=true,nocaptions=false,nocaptionstext} +\newcommand{\fgRmAnnot}[2][]{\begingroup + \@ifundefined{#2@fdgdigis}% + {\PackageError{fldigigal}{The name `#2' is not defined + for\MessageBreak this \string\fgRmAnnot}{Gallery names + are defined using \string\fdgXmlList}}% + \setkeys*{fgRmAnnot}{#1}\edef\XKV@rm@saved{\XKV@rm}% + \edef\tmp@setkeysEx{\noexpand\setkeys{fgGalleryOpts}% + {\fgRmAnnot@galleryopts}}\tmp@setkeysEx + \edef\merged@flashvars{\fgRmAnnot@flashvars% + \ifKV@fgGalleryOpts@auto\else&% + auto=\fgGalleryOpts@auto\fi + \ifx\fgGalleryOpts@delay\@empty\else&% + delay=\fgGalleryOpts@delay\fi + \ifx\fgGalleryOpts@trans\@empty\else&% + transitionType=\fgGalleryOpts@trans\fi + \ifKV@fgGalleryOpts@transOn\else&% + transitionOn=\fgGalleryOpts@transOn\fi + \ifx\fgGalleryOpts@captionalign\@empty\else&% + captionalign=\fgGalleryOpts@captionalign\fi + \ifKV@fgGalleryOpts@nocaptions&% + nocaptions=\fgGalleryOpts@nocaptions% + \ifx\gGalleryOpts@nocaptionstext\@empty\else&% + nocaptionstext=\fgGalleryOpts@nocaptionstext\fi\fi + }% + \rmAnnot[\XKV@rm@saved, + flashvars={xmlPath=\Name{\xmlListiv{#2}}\merged@flashvars},% + resources={\xmlListiv{#2}\embededResources{#2}}% + ]{320bp}{240bp}{\fgGalleryOpts@gallery}% + \endgroup +} +\endinput +%% +%% End of file `fldigigal.sty'. -- cgit v1.2.3