diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:54:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:54:28 +0000 |
commit | 9b0a12d65600c00972d9f4953249e8f4b6d31f68 (patch) | |
tree | bc4bc316dde308373eb0e95f835390644eb92e93 /Master | |
parent | cf474560e4a42399d722eb1181c648228dcdb721 (diff) |
eCards
git-svn-id: svn://tug.org/texlive/trunk@841 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/tex/latex/eCards/eCards.sty | 369 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/eCards/eCardsList.def | 91 |
2 files changed, 460 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/eCards/eCards.sty b/Master/texmf-dist/tex/latex/eCards/eCards.sty new file mode 100644 index 00000000000..7a2efc657de --- /dev/null +++ b/Master/texmf-dist/tex/latex/eCards/eCards.sty @@ -0,0 +1,369 @@ +%% +%% This is file `eCards.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% eCards.dtx (with options: `copyright,package') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% eCards.sty package, 2003-3-10 %% +%% Copyright (C) 1999-2002 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{eCards} + [2003/05/18 v1.0 eCards: An electronic flash cards package (dps)] +\DeclareOption{memLogo}{\let\@memLogo=y} +\let\@memLogo=n +\DeclareOption{listing}{\ecListingtrue} +\newif\ifecListing \ecListingfalse +\DeclareOption{custom}{\let\@ecCustom=y} +\let\@ecCustom=n +\DeclareOption{nohints} + {% + \let\@ecNoHints=y + \def\hintDest{ex.\exnoCard}% + \def\solnDest{ex.\exnoCard}% + } +\let\@ecNoHints=n +\def\hintDest{ex.\exnoCard}% +\def\solnDest{ex.\exnoCard.s}% +\ProcessOptions +\RequirePackage{web} +\RequirePackage{exerquiz} +\newcommand{\cardsFinishedMsg}[1]{\def\CARDSFINISHED{#1}} +\cardsFinishedMsg{You've seen all the cards!} +\textBgColor{cornsilk} +\def\cardColor#1{\def\@cardColor{#1}} +\def\hintColor#1{\def\@hintColor{#1}} +\def\solnColor#1{\def\@solnColor{#1}} +\cardColor{vlightblue} +\hintColor{cornsilk} +\solnColor{webyellow} +\let\web@copyright=\@gobble +\let\exnoCard=\the@exno +\let\web@rightheader=\@empty +\def\io#1{\immediate\write\@auxout{#1}} +\def\endsolnexerhookaux{% + \ifnum\@panelconfig=0\relax + \immediate\write\verbatim@out + {\string\insNaviBar*{\hfil\string\NextCard\hfil}}% + \fi +} +\def\include@solutions{% + \let\webnewpage=\relax + \immediate\closeout\ex@solns + \ifeq@nosolutions\else + \iftherearesolutions\newpage\markright{\exsecrunhead}% + \ifx\webnewpage\relax + \def\webnewpage{\let\webnewpage=\newpage}% + \fi + \eqsolutionshook + \addcontentsline{toc}{section} + {\protect\numberline{}\exsectitle}% + \input{\jobname.sol}% + \fi + \fi +} +\AtEndDocument{\io{\string\gdef\string\totalCards{\the@exno}}\clearpage} +\def\theNumCards{\csname totalCards\endcsname} +\def\nMarker{0} +\def\ReturnTo#1#2{\eq@fititin#2} +\renewcommand\exsecrunhead{} +\renewcommand\exlabel{} +\renewcommand\exsectitle{} +\newenvironment{multiChoice}[1] +{% + \par\smallskip\def\aftershortquizskip{}% + \def\sq@priorhook{}\renewcommand\sqlabel{\@gobble}% + \ifnum\nMarker=0\relax + \def\sqWrongRespJS{app.alert(\eqsqwgmsg,3); + this.gotoNamedDest("\hintDest");}% + \fi + \begin{shortquiz} + \begin{answers}[\solnDest]{#1}% +}% +{% + \end{answers} + \end{shortquiz} +} +\everyRespBoxTxt{\BG{1 1 1}}\everyRespBoxMath{\BG{1 1 1}} +\newenvironment{fillIn} +{% + \def\RespBoxTxtOnBlur{ecOnBlurRespBox(retn, \exnoCard, \nMarker);}% + \unskip\begin{oQuestion}{\ifnum\nMarker>0\relax + \solnDest\else\hintDest\fi}% +} +{\end{oQuestion}} + +\newenvironment{card} +{% + \newpage + \gdef\nMarker{0} + \def\eqexheader{\noindent} + \renewcommand\exsllabelformat{\noindent} + \renewcommand\exrtnlabelformat{} + \renewcommand\exsecrunhead{} + \ifnum\@panelconfig=0\relax + \def\exersolnheadhook + {\string\def\string\solndest{\solnDest}}% + \else + \def\exersolnheadhook{\string\def\string\exnoCard{\exnoCard}% + \string\def\string\solndest{\solnDest}% + \string\gdef\string\nMarker + {\if\@ecNoHints y2\else1\fi}\string\defineSoln}% + \fi + \begin{exercise} + \textBgColor{\@cardColor}% + \headCard +}% +{% + \tailCard + \end{exercise}% + \ifnum\@panelconfig=0\relax\aftergroup\cardNaviBar\fi +} +\newcommand{\headCard} +{% + \vspace*{\stretch{.1}}% + \begin{center}% + \Large\textbf{QUESTION}\par\vspace*{.25in}% + \begin{minipage}{.85\linewidth}% + \large\unskip\noindent\ignorespaces% +} +\newcommand{\tailCard} +{% + \end{minipage} + \end{center} + \par\vspace{\stretch{2}}% +} +\newenvironment{response} + {\solnexer@woparts[0pt]}{\endsolnexer@woparts} +\newenvironment{hint} +{% + \textBgColor{\@hintColor}% + \headHint +}% +{% + \tailHint + \ifnum\@panelconfig=0\relax + \insNaviBar{\hfill\hintSoln\ \hintNextCard\hfill}\fi + \newpage\gdef\nMarker{2}\noindent\hypertarget{\solndest}{}% +} +\if\@ecNoHints y% + \let\hint=\comment + \let\endhint=\endcomment +\fi +\newcommand{\headHint} +{% + \vspace*{\stretch{.1}}% + \begin{center}% + \Large\textbf{HINT}\par\vspace*{.25in}% + \begin{minipage}{.85\linewidth}% + \large\unskip\noindent\ignorespaces% +} +\newcommand{\tailHint} +{% + \end{minipage} + \end{center} + \par\vspace{\stretch{2}}% +} +\newenvironment{answer} +{% + \textBgColor{\@solnColor}% + \headAnswer +}% +{% + \tailAnswer +} +\newcommand{\headAnswer} +{% + \vspace*{\stretch{.1}}% + \begin{center}% + \Large\textbf{ANSWER} \\\vspace*{.25in}% + \begin{minipage}{.85\linewidth}% + \large\unskip\noindent\ignorespaces% +} +\newcommand{\tailAnswer} +{% + \end{minipage} + \end{center} + \vspace*{\stretch{2}} +} +\def\iconWidth{40pt}\def\iconHeight{15pt} +\def\ecHomePage#1{\def\@ecHomePage{#1}} +\ecHomePage{http://www.math.uakron.edu/\string~dpstory/acrotex.html} +\def\ecLogo#1{\def\@ecLogo{#1}} +\ecLogo{\includegraphics[scale=.4]{graphics/uakron}} +\def\ecLogoLink#1{\def\@ecLogoLink{#1}} +\let\@ecLogoLink=\@empty +\def\makeesc#1{\catcode`#1=0\relax} +\begin{defineJS}{\fsJS} +if (app.viewerVersion < 5.0) + app.fullscreen = !app.fullscreen +else +{ + app.fs.cursor = cursor.visible; + app.fs.defaultTransition = ""; + app.fs.useTimer = false; + app.fs.isFullScreen = !app.fs.isFullScreen; +} +\end{defineJS} +\begin{defineJS}[\makeesc\@]{\beginJS} +aCardsReviewed = new Array(); +getNextCard(); +this.resetForm(); +var f = this.getField("ex"); +if ( f != null ) +{ + var g = f.getArray(); + for (var i = 0; i < g.length; i++) + g[i].strokeColor = @eqDefaultColor; +} +\end{defineJS} +\newcommand\noHintJSAction{} +\newNaviIcon[j]{\Soln}\iconWidth\iconHeight{\footnotesize Soln} + {\ifnum\nMarker=2\relax\else + this.gotoNamedDest("\solnDest");\fi} +\newNaviIcon[j]{\Hint}\iconWidth\iconHeight{\footnotesize Hint} + {\if\@ecNoHints y\noHintJSAction + \else\ifnum\nMarker=0this.gotoNamedDest("\hintDest");\fi\fi} +\newNaviIcon[j]{\NextCard}\iconWidth\iconHeight{\footnotesize Next} + {getNextCard();} +\newNaviIcon[j]{\hintNextCard}\iconWidth\iconHeight + {\footnotesize Next}{getNextCard();} +\newNaviIcon[j]{\hintSoln}\iconWidth\iconHeight{\footnotesize Soln} + {this.gotoNamedDest("\solndest");} +\newNaviIcon[j]{\Begin}\iconWidth\iconHeight + {\footnotesize Begin}{\beginJS} +\newNaviIcon[l]{\Home}\iconWidth\iconHeight{\footnotesize Home} + {\ifnum\arabic{page}=1\relax\def\next{\href{\@ecHomePage}}\else + \def\next{\hyperlink{page.1}}\fi\next} +\newNaviIcon[j]{\FullScreen}\iconWidth\iconHeight + {\footnotesize FS}{\fsJS} +\newNaviIcon[j]{\Close}\iconWidth\iconHeight{\footnotesize Close} + {app.execMenuItem("Close")} +\edef\@@Logo{\if\@memLogo y\relax + \noexpand\unhcopy\noexpand\Logo\else\noexpand\@ecLogo\fi} +\ifnum\@panelconfig>0\relax + \renewcommand\panelNaviGroup + {% + \def\iconWidth{28pt} + \ifnum\thepage=1\relax + \parbox[c]{58pt} + {% + \Begin\hfil\FullScreen\\ + \Close\hfil\Home + }% + \else + \parbox[c]{58pt} + {% + {\ifnum\nMarker>0\relax + \navibarTextColor{lightblue}\fi + \if\@ecNoHints y\relax + \navibarTextColor{lightblue}\fi\Hint}\hfil + {\ifnum\nMarker=2\relax + \navibarTextColor{lightblue}\fi\Soln}\\ + \NextCard\hfil\Home + }% + \fi + } + \newbox\Logo + \if\@memLogo y\relax + \AtBeginDocument{\global\setbox\Logo = \hbox{\@ecLogo}} + \fi + \buildpanel + {% + \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 + {\footnotesize Soln}{this.gotoNamedDest("\solndest");} + \def\sqWrongRespJS{app.alert(\eqsqwgmsg,3); + this.gotoNamedDest("\solndest");}% + } +\else + \def\cardNaviBar{\insNaviBar{\hfill + \if\@ecNoHints n\Hint\ \fi\Soln\ \NextCard \ \Home\hfill}% + } +\fi +\let\importdljs=y +\begin{insDLJS}[isCardloaded]{flashcrd}{Flash Card JS} +var isCardloaded=true; +var maxNumberCards = 100; +var aCardsReviewed = new Array(); +var cardsFinished = "\CARDSFINISHED"; +function getNextCard() +{ + numCards = \theNumCards; + var nCardsReviewed = aCardsReviewed.length; + if ( nCardsReviewed == numCards ) + { + app.alert(cardsFinished,3); + this.gotoNamedDest("page.1"); + } + else + { + var look4Next = true; + while (look4Next) + { + var nextCard = Math.random(); + nextCard *= maxNumberCards; + nextCard = Math.ceil(nextCard); + nextCard \%= numCards; + nextCard += 1; + for ( var i = 0; i < nCardsReviewed; i++) + if ( aCardsReviewed[i] == nextCard ) break; + if ( i == nCardsReviewed ) look4Next = false; + } + aCardsReviewed.push(nextCard); + this.gotoNamedDest("qex."+nextCard); + } +} +function ecOnBlurRespBox (retn, exnoCard, nMarker) +{ + if (retn != null) { + if (retn) { + app.alert(\eqsqrtmsg,3); + var dest = "ex." + exnoCard + ".s"; + this.gotoNamedDest(dest); + } + else { + app.alert(\eqsqwgmsg,3); + if (nMarker==0) { + var dest = "ex." + exnoCard; + this.gotoNamedDest(dest); + } + else { + var dest = "ex." + exnoCard + ".s"; + this.gotoNamedDest(dest); + } + } + } + else { + var str = event.target.value.toString(); + if (str.replace(/\s/g,"") == "") + event.target.strokeColor = \eqDefaultColor; + } +} +\end{insDLJS} +\begin{execJS}{execjs} +app.execMenuItem("Save"); +\end{execJS} +\ifecListing + \input{eCardsList.def} +\fi +\if\@ecCustom y\InputIfFileExists{eCard.cus}{}{}\fi +\endinput +%% +%% End of file `eCards.sty'. diff --git a/Master/texmf-dist/tex/latex/eCards/eCardsList.def b/Master/texmf-dist/tex/latex/eCards/eCardsList.def new file mode 100644 index 00000000000..757d5a72a71 --- /dev/null +++ b/Master/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, 2003-3-10 %% +%% Copyright (C) 1999-2002 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} +\renewcommand\exsolafter{} +\eqexerskip{0pt} +\newenvironment{listing@card} +{% + \stepcounter{ecCnt}% + \gdef\nMarker{0}% + \def\eqexheader{\noindent}% + \renewcommand\exsllabelformat{\noindent}% + \renewcommand\exrtnlabelformat{}% + \renewcommand\exsecrunhead{}% + \begin{exercise}% + \textBgColor{\@cardColor}% + \headCard +}% +{% + \tailCard + \end{exercise}% +} +\newcommand{\listing@headCard} +{% + \unskip\makebox[0pt][r] + {\textbf{\arabic{ecCnt}.\enspace}}\ignorespaces% +} +\newcommand{\listing@tailCard}{\par} +\newenvironment{listing@response} + {\solnexer@woparts[0pt]}{\endsolnexer@woparts} +\newenvironment{listing@hint} +{% + \textBgColor{\@hintColor}% + \headHint +}% +{% + \tailHint +} +\newcommand{\listing@headHint} +{% + \unskip\par\textit{Hint}:\space\ignorespaces +} +\newcommand{\listing@tailHint}{} +\newenvironment{listing@answer} +{% + \textBgColor{\@solnColor}% + \headAnswer +}% +{% + \tailAnswer +} +\newcommand{\listing@headAnswer} +{% + \unskip\par\textit{Answer}:\space\ignorespaces +} +\newcommand{\listing@tailAnswer}{} +\AtBeginDocument{% + \let\card = \listing@card + \let\endcard = \endlisting@card + \let\headCard = \listing@headCard + \let\tailCard = \listing@tailCard + \let\headresponse = \listing@response + \let\endresponse = \listing@response + \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 +} +\endinput +%% +%% End of file `eCardsList.def'. |