diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:52:30 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:52:30 +0000 |
commit | 742827f70c750e0aaaa236aa13e7872588b90089 (patch) | |
tree | 34aa0ef1b036dae9932a76e2fe261ca22e68e53e /Master/texmf-dist | |
parent | f8cd4bd6a9d15be83f06d98345f29ead5a61eea3 (diff) |
trunk/Master/texmf-dist/source/latex/eCards
git-svn-id: svn://tug.org/texlive/trunk@234 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/source/latex/eCards/eCards.dtx | 989 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/eCards/eCards.ins | 65 |
2 files changed, 1054 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/eCards/eCards.dtx b/Master/texmf-dist/source/latex/eCards/eCards.dtx new file mode 100644 index 00000000000..1841dc70a05 --- /dev/null +++ b/Master/texmf-dist/source/latex/eCards/eCards.dtx @@ -0,0 +1,989 @@ +%\iffalse +%<*copyright> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%</copyright> +%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01] +%<package>\ProvidesPackage{eCards} +%<package> [2003/05/18 v1.0 eCards: An electronic flash cards package (dps)] +%<*driver> +\documentclass{ltxdoc} +\usepackage[dviwindo,colorlinks,hyperindex]{hyperref} +%\pdfstringdefDisableCommands{\let\\\textbackslash} +%\EnableCrossrefs \CodelineIndex +\begin{document} + \GetFileInfo{eCards.sty} + \title{eCards: Electronic Flash Cards} + \author{D. P. Story\\ + Email: \texttt{dpstory@uakron.edu}} + \date{processed \today} + \maketitle + \tableofcontents + \let\Email\texttt + \DocInput{eCards.dtx} + \PrintIndex +\end{document} +%</driver> +% \fi +% \MakeShortVerb{|} +% \StopEventually{} +% +% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let} +% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi} +% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup} +% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand} +% \DoNotIndex{\space,\@empty,\special} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \section{Introduction} +% +% The initial version of this package was developed at the request of my colleague, Dr.\ Thomas +% Price, for use in the senior honors project of Ms.\ Katie Jones on +% \href{http://www.math.uakron.edu/~teprice/Trig/}{Trig Flash Cards}. +% Upon completion of the honors project, I generalized and extended +% the original package developed specifically for them. +% +% \section{Documentation} +% +% In this section, the major elements of this package are highlighted. For those +% who want to know more, you can peruse the {\LaTeX} code, there are comments +% contained there as well. +% +% \subsection{Preamble: Required Packages and Options} +% +% \subsubsection{Required Packages} +% +% This package depends heavily on the +% \textbf{\href{http://www.math.uakron.edu/~dpstory/webeq.html} +% {Acro\negthinspace\TeX{} eDucation Bundle}}: (1) the \textsf{web} +% package provides page setup, backgrounds, and navigational +% elements; (2) the \textsf{exerquiz} package allows you to author +% the questions, both non-responsive and responsive (fill-in and +% multiple choice); and (3) the \textsf{insdljs} packages is the +% mechanism for introducing document-level JavaScripts into the +% final document. +% +% Each of the packages listed above have their own required packages: +% \textsf{hyperref}, \textsf{color}, \textsf{verbatim}, \textsf{everyshi} +% and \textsf{eso-pic}. Theses are all available as part of the standard +% distribution of {\LaTeX} or through any CTAN site. +% +% \subsubsection{Options} +% +% \paragraph{eCards options.}\hskip-\lastskip\ +% The \textsf{eCards} package really has only 4 options: +% \begin{enumerate} +% \item \texttt{nohints}: If you do not want to provide hints in your eCards, +% use this option. See also the comments in \Nameref{hint}. +% \item \texttt{listing}:\label{listing} This option gives you a printable version of your +% eCards. In this way, you can proofread, check your questions, hints, +% and answers. Suggested packages and options are given below: +%\begin{verbatim} +%\usepackage[<driver_option>,forpaper,tight,nodirectory]{web} +%\usepackage[solutionsafter,proofing,preview]{exerquiz} +%\usepackage[listing]{eCards} +%\end{verbatim} +% \item \texttt{memLogo}: The logo, if any, is read and re-read +% for each page on which it appears. Using this option, the logo +% is read once and saved in a box for use. +% \item \texttt{custom}: If this option is chosen, the package +% will look for and input a file \texttt{eCard.cus}. This file can +% be used to customize the environments. This file should be kept +% in the source directory, not in the {\LaTeX} search path. +% \end{enumerate} +% +% \paragraph{Other options.}\hskip-\lastskip\ +% Selecting the various options of the \textsf{web} and +% \textsf{exerquiz} packages can give you different looks. It is +% important to be aware of all the options associated with these +% two package; in the paragraphs below, various options are +% discussed that may be useful in \textsf{eCards}. +% +%\paragraph{Useful Web Package Options.}\hskip-\lastskip\ +% There are three background/panel options: \texttt{usetemplates}, +% \texttt{rightpanel} and \texttt{leftpanel}. Using the +% \texttt{usetemplates} option does not give you the vertical +% navigational strip, but it does give you the background colors; +% the \texttt{rightpanel} and \texttt{leftpanel} given you a +% vertical panel on the right and left, respectively. Use one of +% these three options only, if any at all. Using none of these three +% will just get you the default white background. +% +%There are certain ``standard'' page designs, or you can create your own using +%the \cs{margins} and \cs{screensize}; the demo document has +%\begin{verbatim} +%\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom +%\screensize{3.72in}{366.24bp} % height, width +%\end{verbatim} +% See the \textsf{Web} package documentation for details on these and other +% options. +% +% \paragraph{Useful Exerquiz Package Options.}\hskip-\lastskip\ +% If you are not using multiple choice or fill-in questions, you should use +% the \texttt{exercisesonly} option. This removes much of the document level JavaScript +% from the PDF document. +% +% For authors that use the full Acrobat~5.0, or the newer Acrobat +% 6.0 Standard or Acrobat 6.0 Professional, you can use the +% \texttt{execJS} option. If this option is taken, then when the +% document is first loaded into Acrobat (following distillation, or +% creation using \textsf{dvipdfm} or \textsf{pdftex}), the document +% will be automatically saved; this saves any imported document +% level JavaScript in the document. The document always needs to be saved +% after creation so save the scripts with the document, this does it automatically +% so you can't forget to do it---as one of my colleagues once did. +% +% The \texttt{nosolutions} option removes the \texttt{response} environment +% leaving only the questions. The \texttt{proofing} and \texttt{preview} options +% can be useful for proofreading, as described in the \texttt{\hyperref[listing]{listing}} +% option described above. +% +% \subsection{\protect\cs{begin\{document\}}: Start creating Cards} +% +% The process of creating these electronic cards is quite simple, the sections below +% describe the various environments used. +% +% \subsubsection{The \texttt{card} Environment} +% +% The main environment is the \texttt{card} environment, which is used for posing +% questions, offering a hint, and an answer. The \hypertarget{cardsyntax}{syntax} is +%\begin{verbatim} +%\begin{card} +% < a question > +% \begin{response} +% \begin{hint} +% < a hint > +% \end{hint} +% \begin{answer} +% < an answer > +% \end{answer} +% \end{response} +%\end{card} +%\end{verbatim} +% \textcolor{red}{Important.} You can pose a question which requires +% a verbal response, or one for which there is a choice of +% alternatives, or a fill-in the blank (math or text). See the demo +% file \texttt{eCardstst.tex} for examples. +% +% \subsubsection{The \texttt{response} Environment} +% +% Immediately following and nested within the \texttt{card} environment is the \texttt{response} +% environment. This sets things up for the responses to the question: the hint +% and the answer. +% +% \subsubsection{The \texttt{hint} Environment}\label{hint} +% +% The first environment to appear within the \texttt{response} is +% the \texttt{hint} environment. Here you can provide additional +% information to help the student answer the question successfully. +% I've you've posed a multiple choice or fill-in question, you can simply +% copy the multiple choice or fill-in into the hint, just as I have done +% in the demo file \texttt{eCardstst.tex}. +% +% In this release, hints can be provided for \textbf{all} of the questions or for +% \textbf{none} of the questions. You can enter hints using the +% \texttt{hint} environment, illustrated \hyperlink{cardsyntax}{above}, or not include a +% \texttt{hint} environment. When you do not want to include +% hints---whether you've entered the environments or not---use the +% \texttt{nohints} package option. This will convert the +% \texttt{hint} environment into a \texttt{comments}, and redefined +% some of the navigational buttons. +% +% \subsubsection{\texttt{answer} Environment} +% +% After the hint environment comes the answer environment where the answer to the original question +% can be presented. At the end of this environment, you need to back out of your nest: +% \verb+\end{answer}+, \verb+\end{response}+ and \verb+\end{card}+. +% +% \subsection{\protect\cs{end\{document\}}} +% +% \section{Main Code} +% +% \subsection{Declare Options} +% +% This package builds upon the \textbf{Acro\negthinspace\TeX{} eDucation Bundle}, the options of the +% \textsf{web} and \textsf{exerquiz} packages can be used with with \textsf{eCards}. Additional options +% are declared below. +% \begin{macro}{memLogo} +% The logo, if any, is read and re-read for each page on which it appears. Using this +% option, the logo is read once and saved in a box for use. +% \begin{macrocode} +\DeclareOption{memLogo}{\let\@memLogo=y} +\let\@memLogo=n +% \end{macrocode} +% \end{macro} +% \begin{macro}{listing} +% The \texttt{listing} gives a listing of questions, hints, and answers. When used in conjunction +% with various \textsf{exerquiz} options, this option can be used to review all cards and answers. +% Suggested options: +%\begin{verbatim} +%\usepackage[<driver_option>,forpaper,tight,nodirectory]{web} +%\usepackage[solutionsafter,proofing,preview]{exerquiz} +%\usepackage[memLogo,listing]{eCards} +%\end{verbatim} +% The boolean switch \cs{ecListing} can be used to get a better looking listing by removing +% graphics---see the demo file \texttt{eCardstst.tex}. +% \begin{macrocode} +\DeclareOption{listing}{\ecListingtrue} +\newif\ifecListing \ecListingfalse +% \end{macrocode} +% \end{macro} +% \begin{macro}{custom} +% If this option is chosen, the package will look for and input a file \texttt{eCard.cus}. +% This file can be used to customize the environments. This file should be kept in the +% source directory, not in the {\LaTeX} search path. +% \begin{macrocode} +\DeclareOption{custom}{\let\@ecCustom=y} +\let\@ecCustom=n +% \end{macrocode} +% \end{macro} +% \begin{macro}{nohints} +% In some applications, the author may not want to have hints provided, so, compile +% the document with the \texttt{nohints} option. +% \begin{macrocode} +\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}% +% \end{macrocode} +% \end{macro} +% \subsection{ProcessOptions and Required Packages} +% \begin{macrocode} +\ProcessOptions +\RequirePackage{web} +\RequirePackage{exerquiz} +%\RequirePackage{graphicx} +% \end{macrocode} +% \subsection{String Data} +% \begin{macro}{\cardsFinishedMsg} +% When user finishes the cards, a message appears announcing that event. The +% \cs{cardsFinishedMsg} holds the content of that message. +% \begin{macrocode} +\newcommand{\cardsFinishedMsg}[1]{\def\CARDSFINISHED{#1}} +\cardsFinishedMsg{You've seen all the cards!} +% \end{macrocode} +% \end{macro} +% \subsection{Colors for Backgrounds} +% Some definitions for coloring the background page for the question page, the +% hint page and the answer page. +% \begin{macrocode} +\textBgColor{cornsilk} +\def\cardColor#1{\def\@cardColor{#1}} +\def\hintColor#1{\def\@hintColor{#1}} +\def\solnColor#1{\def\@solnColor{#1}} +% \end{macrocode} +% Default colors +% \begin{macrocode} +\cardColor{vlightblue} +\hintColor{cornsilk} +\solnColor{webyellow} +% \end{macrocode} +% \subsection{Modifying Exerquiz Environments} +% \begin{macrocode} +\let\web@copyright=\@gobble +\let\exnoCard=\the@exno +\let\web@rightheader=\@empty +\def\io#1{\immediate\write\@auxout{#1}} +% \end{macrocode} +% \subsubsection{Modify the \texttt{exercise} Environment} +% The \cs{endsolnexerhookaux} macro gets executed just prior to the end of the +% solution environment, but before the final trailer is written to the .sol file. Here, +% we use it to insert a navigational bar at the bottom of the solution page. +% \begin{macrocode} +\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 +} +% \end{macrocode} +% Write the total number of questions (cards) to the aux file. +% \begin{macrocode} +\AtEndDocument{\io{\string\gdef\string\totalCards{\the@exno}}\clearpage} +% \end{macrocode} +% This macro holds the number of cards composed. +% \begin{macrocode} +\def\theNumCards{\csname totalCards\endcsname} +% \end{macrocode} +% \cs{nMarker} identifies the type of page, 0 for a question, 1 for a hint, 2 for a solution +% \begin{macrocode} +\def\nMarker{0} +% \end{macrocode} +% Redefine \cs{ReturnTo} so there is no link, we encourage the user to use the navigational +% buttons. +% \begin{macrocode} +\def\ReturnTo#1#2{\eq@fititin#2} +% \end{macrocode} +% Miscellaneous macro definitions associated with the \textsf{exercise} environment. +% \begin{macrocode} +\renewcommand\exsecrunhead{} +\renewcommand\exlabel{} +\renewcommand\exsectitle{} +% \end{macrocode} +% \subsubsection{Modify the \texttt{shortquiz} Environment} +% \begin{environment}{multiChoice} +% An environment for posing a multiple choice question, based on the \texttt{shortquiz} environment +% of \textsf{exerquiz}. +% \begin{macrocode} +\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");}% +% this.gotoNamedDest("ex.\exnoCard");}% + \fi + \begin{shortquiz} + \begin{answers}[\solnDest]{#1}% +% \begin{answers}[ex.\exnoCard.s]{#1}% +}% +{% + \end{answers} + \end{shortquiz} +} +% \end{macrocode} +% \end{environment} +% \subsubsection{Modify the \texttt{oQuestion} Environment} +% Set the appearance of any text fields that the author might use. +% \begin{macrocode} +\everyRespBoxTxt{\BG{1 1 1}}\everyRespBoxMath{\BG{1 1 1}} +% \end{macrocode} +% \begin{environment}{fillIn} +% The \texttt{fillIn} environment one to pose a fill in type question, either +% text or math. Based on the \texttt{oQuestion} environment of \textsf{exerquiz}. +% \begin{macrocode} +\newenvironment{fillIn} +{% + \def\RespBoxTxtOnBlur{ecOnBlurRespBox(retn, \exnoCard, \nMarker);}% + \unskip\begin{oQuestion}{\ifnum\nMarker>0\relax + \solnDest\else\hintDest\fi}% +% \unskip\begin{oQuestion}{ex.\exnoCard\ifnum\nMarker>0.s\fi}% +} +{\end{oQuestion}} +% \end{macrocode} +% \end{environment} + +% \subsection{New Environments} +% \subsubsection{The \texttt{card} Environment} +% \begin{environment}{card} +% This is the main environment for writing questions, hints and answers. This environment +% encloses all. +% \begin{macrocode} +\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}}% +% {\string\def\string\solndest{ex.\exnoCard.s}}% + \else + \def\exersolnheadhook{\string\def\string\exnoCard{\exnoCard}% + \string\def\string\solndest{\solnDest}% + \string\gdef\string\nMarker + {\if\@ecNoHints y2\else1\fi}\string\defineSoln}% +% \string\def\string\solndest{ex.\exnoCard.s}% +% \string\gdef\string\nMarker{1}\string\defineSoln}% + \fi + \begin{exercise} + \textBgColor{\@cardColor}% + \headCard +}% +{% + \tailCard + \end{exercise}% + \ifnum\@panelconfig=0\relax\aftergroup\cardNaviBar\fi +} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\headCard} +% The ``design'' of the ``question'' page. Can re-design. +% \begin{macrocode} +\newcommand{\headCard} +{% + \vspace*{\stretch{.1}}% + \begin{center}% + \Large\textbf{QUESTION}\par\vspace*{.25in}% + \begin{minipage}{.85\linewidth}% + \large\unskip\noindent\ignorespaces% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tailCard} +% Complete any environments begun by \cs{headCard} +% \begin{macrocode} +\newcommand{\tailCard} +{% + \end{minipage} + \end{center} + \par\vspace{\stretch{2}}% +} +% \end{macrocode} +% \end{macro} +% \subsubsection{The \texttt{response} Environment} +% \begin{environment}{response} +% Nested within the \texttt{card} environment is the +% \texttt{response} environment, which, in turn, contains the +% \texttt{hint} and \texttt{answer} environments. This basically +% the \texttt{solution} environment for an \texttt{exercise} of +% \textsf{exerquiz}. +% \begin{macrocode} +\newenvironment{response} + {\solnexer@woparts[0pt]}{\endsolnexer@woparts} +% \end{macrocode} +% \end{environment} +% \begin{environment}{hint} +% Right now, a hint is required. Place this environment within the \texttt{response} +% environment and \textit{before} the \texttt{answer} environment. +% \begin{macrocode} +\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 +% \end{macrocode} +% \end{environment} +% \begin{macro}{\headHint} +% The ``design'' of the ``hint'' page. Can re-design. +% \begin{macrocode} +\newcommand{\headHint} +{% + \vspace*{\stretch{.1}}% + \begin{center}% + \Large\textbf{HINT}\par\vspace*{.25in}% + \begin{minipage}{.85\linewidth}% + \large\unskip\noindent\ignorespaces% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tailHint} +% Close any environments begun in \cs{headHint} +% \begin{macrocode} +\newcommand{\tailHint} +{% + \end{minipage} + \end{center} + \par\vspace{\stretch{2}}% +} +% \end{macrocode} +% \end{macro} +% \subsubsection{The \texttt{answer} Environment} +% \begin{environment}{answer} +% The \texttt{answer} environment follows the \texttt{hint}, also listed within +% the \texttt{response} environment. +% \begin{macrocode} +\newenvironment{answer} +{% + \textBgColor{\@solnColor}% + \headAnswer +}% +{% + \tailAnswer +} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\headAnswer} +% The ``design'' of the ``answer'' page. Can re-design. +% \begin{macrocode} +\newcommand{\headAnswer} +{% + \vspace*{\stretch{.1}}% + \begin{center}% + \Large\textbf{ANSWER} \\\vspace*{.25in}% + \begin{minipage}{.85\linewidth}% + \large\unskip\noindent\ignorespaces% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tailAnswer} +% Close any environments opened by \cs{headAnswer} +% \begin{macrocode} +\newcommand{\tailAnswer} +{% + \end{minipage} + \end{center} + \vspace*{\stretch{2}} +} +% \end{macrocode} +% \end{macro} +% \subsection{Navigational Support} +% In this section we build navigational support. +% \begin{macrocode} +\def\iconWidth{40pt}\def\iconHeight{15pt} +% \end{macrocode} +% \begin{macro}{\ecHomePage} +% \begin{macro}{\ecLogo} +% \begin{macro}{\ecLogoLink} +% \cs{ecHomePage}, for the `Home' button, and \cs{ecLogo}, for the logo. The argument +% for \cs{ecLogo} should be a LaTeX graphics command such as \cs{includegraphics}. See +% the default for an example. With \cs{ecLogoLink}, you can optionally associate a link +% with your logo. +% \begin{macrocode} +\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 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \subsubsection{Define JS Actions for Icons} +% Below are some JavaScript definitions that are used for navigation. +% \begin{macrocode} +\def\makeesc#1{\catcode`#1=0\relax} +% \end{macrocode} +% \DescribeMacro{\fsJS}\noindent +% Action for the fullscreen button `FS'. +% \begin{macrocode} +\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} +% \end{macrocode} +% \DescribeMacro{\beginJS} +% This is the JavaScript for the begin button `Begin'. +% \begin{macrocode} +\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} +% \end{macrocode} +% \subsubsection{Define Nagational Icons} +% Some navigation icons, \cs{newNaviIcon} is defined in the \textsf{Web Package}. +% \begin{macrocode} +% if nohint option is used, this is the JS action when hint is clicked. +\newcommand\noHintJSAction{} +\newNaviIcon[j]{\Soln}\iconWidth\iconHeight{\footnotesize Soln} + {\ifnum\nMarker=2\relax\else + this.gotoNamedDest("\solnDest");\fi} +% this.gotoNamedDest("ex.\exnoCard.s");\fi} +\newNaviIcon[j]{\Hint}\iconWidth\iconHeight{\footnotesize Hint} + {\if\@ecNoHints y\noHintJSAction + \else\ifnum\nMarker=0this.gotoNamedDest("\hintDest");\fi\fi} +% {\if\@ecNoHints y\noHintJSAction +% \else\ifnum\nMarker=0 this.gotoNamedDest("ex.\exnoCard");\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")} +% \end{macrocode} +% If \cs{@memLogo} has a value of `y', then the logo is put in a box and copied +% onto each page; otherwise, the logo is read from its file on each page. +% \begin{macrocode} +\edef\@@Logo{\if\@memLogo y\relax + \noexpand\unhcopy\noexpand\Logo\else\noexpand\@ecLogo\fi} +% \end{macrocode} +% Build the button panel for the navigational bar. Can re-design as desired. +% \begin{macrocode} +\ifnum\@panelconfig>0\relax +% \end{macrocode} +% if \cs{@panelconfig} (a macro defined in \textsf{web}, is positive, then the author has chosen +% a left or a right navigational panel. So, we must build a panel. +% \begin{macro}{\panelNaviGroup} +% This is the group of panel buttons used for navigational purposes. +% \begin{macrocode} + \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 + } +% \end{macrocode} +% \end{macro} +% If \cs{@memLogo} is `y', create a new box, read logo with \cs{@ecLogo}, and store +% in box +% \begin{macrocode} + \newbox\Logo + \if\@memLogo y\relax + \AtBeginDocument{\global\setbox\Logo = \hbox{\@ecLogo}} + \fi +% \end{macrocode} +% \begin{macro}{\buildpanel} +% The \cs{buildpanel} command is defined in the \textsf{Web Package} and determines the layout of +% the vertical navigational panel. You can re-design your own. +% \begin{macrocode} + \buildpanel + {% + \ifx\@ecLogoLink\@empty\@@Logo + \else\href{\@ecLogoLink}{\@@Logo}\fi + \par\vspace{\stretch{1}}% + \rotatebox{-90}{\aebLogo}% + \par\vspace{\stretch{1}}% + \panelNaviGroup + } +% \end{macrocode} +% \end{macro} +% Delay the expansion of the \cs{newNaviIcon} macro for the solution page +% \begin{macrocode} + \def\defineSoln{\newNaviIcon[j]{\Soln}\iconWidth\iconHeight + {\footnotesize Soln}{this.gotoNamedDest("\solndest");} + \def\sqWrongRespJS{app.alert(\eqsqwgmsg,3); + this.gotoNamedDest("\solndest");}% + } +\else +% \end{macrocode} +% \begin{macro}{\cardNavibar} +% \cs{@panelconfig} must be zero, the author does not want a navigational panel, so well +% put buttons at the bottom of each page to navigate by. +% Standard navigational bar. +% \begin{macrocode} + \def\cardNaviBar{\insNaviBar{\hfill + \if\@ecNoHints n\Hint\ \fi\Soln\ \NextCard \ \Home\hfill}% + } +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\fi +% \end{macrocode} +% \subsection{Document Level JavaScript} +% Insert document level JavaScripts to get the functionality of randomly selected questions. +% +% \smallskip\noindent If author has used the \texttt{nodljs} or \texttt{exercises} only, then +% we need to turn the \textsf{insdljs} package back on by emitting +% \begin{macrocode} +\let\importdljs=y +% \end{macrocode} +% This is the JavaScript to control the eCards action. Some global variables followed by the +% \texttt{getNextCard()} method. +% \begin{macrocode} +\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); + } +} +% \end{macrocode} +% We also define a function \texttt{ecOnBlurRespBox()} to +% correctly control the page changes: If a wrong answer is given, then we go to +% the hint or the solution depending on whether user is responding to the original +% question or to the hint. +% \begin{macrocode} +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} +% \end{macrocode} +% This requires the document author to be using the full Acrobat 5.0 or greater, not +% just the Adobe Reader. +% \begin{macrocode} +\begin{execJS}{execjs} +app.execMenuItem("Save"); +\end{execJS} +% \end{macrocode} +% If we have the \texttt{listing} option taken, then we import the \texttt{eCardsList.def} +% file to redefine portions of the \texttt{card} environment. +% just the Adobe Reader. +% \begin{macrocode} +\ifecListing + \input{eCardsList.def} +\fi +% \end{macrocode} +% If document author wants to modify these environments, s/he can place redefinitions in +% \texttt{eCard.cus}. +% \begin{macrocode} +\if\@ecCustom y\InputIfFileExists{eCard.cus}{}{}\fi +%</package> +% \end{macrocode} +% \subsection{Support for the \texttt{listing} option} +% When the \texttt{listing} option is taken, we list out the questions, hints, and answers. +% In this section, a number of environments and commands are defined, the name of each +% begin with `\texttt{listing@}'. The document author can \cs{renewcommand} there to +% create a printed listing of easy review. If you say +%\begin{verbatim} +%\usepackage[dvipsone,forpaper,tight,nodirectory]{web} +%\usepackage[execJS,solutionsafter,proofing,preview]{exerquiz} +%\usepackage[memLogo,listing]{eCards} +%\end{verbatim} +% then the multiple choice and fill-in questions will display the correct answers. Place any +% customizations in a text field named \texttt{eCards.cus}, and use the \texttt{custom} +% option. +% \subsubsection{The \texttt{card} Environment} +% \begin{macrocode} +%<*listing> +% \end{macrocode} +% \begin{environment}{card} +% This is the main environment for writing questions, hints and answers. This environment +% encloses all. +% \begin{macrocode} +\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}% +} +%\let\card = \listing@card +%\let\endcard = \endlisting@card +% \end{macrocode} +% \end{environment} +% \begin{macro}{\headCard} +% The ``design'' of the ``question'' page. Can re-design. +% \begin{macrocode} +\newcommand{\listing@headCard} +{% + \unskip\makebox[0pt][r] + {\textbf{\arabic{ecCnt}.\enspace}}\ignorespaces% +} +%\let\headCard = \listing@headCard +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tailCard} +% Complete any environments begun by \cs{headCard} +% \begin{macrocode} +\newcommand{\listing@tailCard}{\par} +%\let\tailCard = \listing@tailCard +% \end{macrocode} +% \end{macro} +% \subsubsection{The \texttt{response} Environment} +% \begin{environment}{response} +% Nested within the \texttt{card} environment is the +% \texttt{response} environment, which, in turn, contains the +% \texttt{hint} and \texttt{answer} environments. This basically +% the \texttt{solution} environment for an \texttt{exercise} of +% \textsf{exerquiz}. +% \begin{macrocode} +\newenvironment{listing@response} + {\solnexer@woparts[0pt]}{\endsolnexer@woparts} +%\let\headresponse = \listing@response +%\let\endresponse = \listing@response +% \end{macrocode} +% \end{environment} +% \begin{environment}{hint} +% Right now, a hint is required. Place this environment within the \texttt{response} +% environment and \textit{before} the \texttt{answer} environment. +% \begin{macrocode} +\newenvironment{listing@hint} +{% + \textBgColor{\@hintColor}% + \headHint +}% +{% + \tailHint +} +%\let\headhint = \listing@hint +%\let\endhint = \listing@endhint +% \end{macrocode} +% \end{environment} +% \begin{macro}{\headHint} +% The ``design'' of the ``hint'' page. Can re-design. +% \begin{macrocode} +\newcommand{\listing@headHint} +{% + \unskip\par\textit{Hint}:\space\ignorespaces +} +%\let\headHint = \listing@headHint +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tailHint} +% Close any environments begun in \cs{headHint} +% \begin{macrocode} +\newcommand{\listing@tailHint}{} +%\let\tailHint = \listing@tailHint +% \end{macrocode} +% \end{macro} +% \subsubsection{The \texttt{answer} Environment} +% \begin{macro}{\headAnswer} +% The ``design'' of the ``answer'' page. Can re-design. +% \end{macro} +% \begin{environment}{answer} +% The \texttt{answer} environment follows the \texttt{hint}, also listed within +% the \texttt{response} environment. +% \begin{macrocode} +\newenvironment{listing@answer} +{% + \textBgColor{\@solnColor}% + \headAnswer +}% +{% + \tailAnswer +} +%\let\answer = \listing@answer +%\let\endanswer = \listing@endanswer +% \end{macrocode} +% \end{environment} +% \begin{macrocode} +\newcommand{\listing@headAnswer} +{% + \unskip\par\textit{Answer}:\space\ignorespaces +} +%\let\headAnswer = \listing@headAnswer +% \end{macrocode} +% \begin{macro}{\tailAnswer} +% Close any environments opened by \cs{headAnswer} +% \begin{macrocode} +\newcommand{\listing@tailAnswer}{} +%\let\tailAnswer = \listing@tailAnswer +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\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 +} +%</listing> +% \end{macrocode} +\endinput diff --git a/Master/texmf-dist/source/latex/eCards/eCards.ins b/Master/texmf-dist/source/latex/eCards/eCards.ins new file mode 100644 index 00000000000..69000e6cfd6 --- /dev/null +++ b/Master/texmf-dist/source/latex/eCards/eCards.ins @@ -0,0 +1,65 @@ +%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1999-2002 D. P. Story
+%%
+%% This file is part of the `Web and Exerquiz Distribution'.
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2001/05/26}
+\def\batchfile{eCards.ins}
+%
+% If you can assume that the target audience for the document all have
+% Acrobat Reader 5.0 or later, then chance the following switch to true,
+% else, leave it as false.
+
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+
+\generate
+{%
+ \file{eCards.sty}{\from{eCards.dtx}{copyright,package}}
+ \file{eCardsList.def}{\from{eCards.dtx}{copyright,listing}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
|