summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:52:30 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:52:30 +0000
commit742827f70c750e0aaaa236aa13e7872588b90089 (patch)
tree34aa0ef1b036dae9932a76e2fe261ca22e68e53e /Master/texmf-dist/source/latex
parentf8cd4bd6a9d15be83f06d98345f29ead5a61eea3 (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/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/eCards/eCards.dtx989
-rw-r--r--Master/texmf-dist/source/latex/eCards/eCards.ins65
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