diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/jeopardy/jeopardy.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/jeopardy/jeopardy.dtx | 1009 |
1 files changed, 0 insertions, 1009 deletions
diff --git a/Master/texmf-dist/source/latex/jeopardy/jeopardy.dtx b/Master/texmf-dist/source/latex/jeopardy/jeopardy.dtx deleted file mode 100644 index a2101cce5d1..00000000000 --- a/Master/texmf-dist/source/latex/jeopardy/jeopardy.dtx +++ /dev/null @@ -1,1009 +0,0 @@ -% \iffalse meta-comment -% -% Copyright (C) 2004 by Robert Marik <marik@mendelu.cz> -% ------------------------------------------------------- -% -% This file may be distributed and/or modified 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. -% -% \fi -% -% \iffalse -%<*driver> -\ProvidesFile{jeopardy.dtx} -%</driver> -%<package>\NeedsTeXFormat{LaTeX2e} -%<package>\ProvidesPackage{jeopardy} -%<*package>\ProvidesPackage{jeopardy} -[2010/04/07 v1.1a .dtx jeopardy file] -%</package> -% -%<*driver> -\documentclass{ltxdoc} -\EnableCrossrefs -\CodelineIndex -\RecordChanges -\begin{document} - \DocInput{jeopardy.dtx} - \PrintChanges - \PrintIndex -\end{document} -%</driver> -% \fi -% -% \CheckSum{0} -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% -% \changes{v1.0}{2006/10/28}{Initial version} -% \changes{v1.01}{2006/10/30}{Minor changes to get compatibility with -% the last exerquiz.sty} -% \changes{v1.02}{2006/11/2}{Option picture -% added. Changed macro "title" into "JeopardyTitle".} -% \changes{v1.02a}{2006/11/3}{Minor update: Option bgpicture -% added.} -% \changes{v1.1}{2007/03/12}{Option twoplayers.} -% \changes{v1.1a}{2010/04/07}{Examples redesigned to work in TeXlive 2009.} -% -% \GetFileInfo{jeopardy.dtx} -% -% \DoNotIndex{\newcommand,\newenvironment,\vbox,\hbox, \', \@@end, -% \@@RespBoxMathActions, \@@RespBoxTxtActions, \@Panelhomepagename, -% \@Panelfullscreenname, \@jeopardyFineTunefalse, \@Panelclosename, -% \@Panelquitname, } -% -% -% \title{The \textsf{jeopardy} package\thanks{This document -% corresponds to \textsf{jeopardy}~\fileversion, dated -% \filedate.}} \author{Robert Ma\v r\'\i k \\ -% \texttt{marik@mendelu.cz}\thanks{Supported by the grant 18/2006 of -% the Fund for Developement of Czech Universities.}} -% -% \maketitle -% -% \section{Introduction} -% -% Jeopardy like game -- redesigned the \verb|jj_game.cls| by D. P. -% Story. The package requires to load \verb|exerquiz| and -% \verb|dljslib| packages from AcroTeX bundle. The current only -% supported way to produce pdf file is \verb|pdftex|. The main -% properties include -% \begin{itemize} -% \item In contrast to \verb|jj_game.cls|, the \verb|oQuestion| -% environment is used to allow fill-in questions. -% \item The \verb|proofing| option is introduced. Use this option to -% typeset your answers into the document. To check the answers for -% \verb|\RespBoxMath| and |\RespBoxTxt| commands remember to use -% transparent background for these text fields or use the browser -% which does not show these fields, like \verb|xpdf|. -% \item Option |twoplayers| builds game for two players. -% \item Option |bgpicture| is used to place the picture below the -% buttons (|graphicx| package is used). The name of the picture is -% stored in the |\JeopardyPictureFile| command. Default value is -% |picture.jpg|. You can change it by using command like -% |\def\JeopardyPictureFile{blabla.jpg}|. If you use this option, -% you may also consider the (rather tricky) option |finetune|. This -% option is described with the corresponding code at the end of this -% file. The |bgpicture| option is automaticaly turned on when -% |picture| option is active. -% \item The option |picture| is introduced for another version of the -% game. The user gets no score but uncovers parts of a picture -% hidden by buttons and (after wrong answer) non-transparent fields. -% It can be used in the class and students can guess what is on the -% picture. The option adds the "Solution" button below the -% gameboard. If the user clicks this button, all buttons from not -% yet answered questions and fields from wrong answered questions -% are hidden and the picture is fully visible. After the second -% click on this button, a |\ChampionMsg| is shown. This can be used -% for example to store the name of a person on the picture. -% \item The user is not allowed to browse pages of the game without -% clicking in gameboard. We use the (not portable) -% \verb|\pdfpageattr| command to achieve this behavior. This can be -% turned off by \verb|allowpeeking| option. -% \item The \verb|evalonblur| option may be used. This concerns -% filling forms for |\RespBoxTxt| and |\RespBoxMath| questions and -% the following problem with switching keyboard layout: When filling -% the text field, if user switches the keyboard -% layout\footnote{necessary, for example, to write powers on Czech -% keyboard} using keyboard shortcut on Linux, the (not yet -% finished and hence incorrect) answer is evaluated and marked as -% wrong. Known workarounds: -% \begin{itemize} -% \item The user should erase the contents of the field completely, -% switch the keyboard, click into the field and type his/her -% answer. -% \item The user should change keyboard using mouse and Gnome applet. -% \item The author can compile the file with \verb|evalonblur| -% option. The answer is evaluated after \verb|shift+click|-ing -% outside the field. -% \end{itemize} -% \end{itemize} -% This package has been tested on Texlive2005+Linux (pdfeTeXk, Version -% 3.141592-1.30.4-2.2 (Web2C 7.5.5)), with \verb|exerquiz| 2006/18/06 -% v6.05e. -% -% \section{Usage} -% -% To instal the style run |latex jeopardy.ins| from the directory with -% |jeopardy.dtx|. You get files |jeopardy.sty| and |jeopardy.cfg|. -% Copy both files where \LaTeX{} finds them and include your -% customizations into |jeopardy.cfg|. -% -% For sample file look at the files \verb|game*.tex|. The number of -% questions and categories is written into \verb|aux| file and stored -% in macros \verb|\NumberOfQuestions| and \verb|\NumberOfCategories|. -% From this reason, the file has to be two times \verb|pdflatex|-ed to -% build the game. The |aux| file contains also definitions for the -% category names. These names are not used when |picture| option is -% active. -% -% \DescribeMacro{\MakeGameBoard} Macro |\MakeGameBoard| typesets the -% game board. This should be at the begin of the file and followed by -% \verb|category| environments. The dimensions of cells are -% \verb|\CellWidth| and \verb|\CellHeight|. The user can set these -% dimensions after \verb|\begin{document}| or with the |\SetGameWidth| -% and |\SetGameHeight| commands. Write e.g. |\SetGameHeight{10cm}|. -% The fields are created via \verb|\pushButton| and -% \verb|\textField| commands and the user may change the default -% behavior using command available in the package \verb|eforms.sty|. -% The colors for wrong and right messages are set in \verb|exerquiz| -% package and stored in \verb|\correctColor| and \verb|\wrongColor| -% macros. The tokens registers |\GrandPoohbahtoks|, |\Celltoks| and -% |\Scoretoks| are used to build the GrandPoohbah field (see below), -% cell fields and score field. You can set it by e.g. -% |\GrandPoohbahtoks{\Q{0}\textColor{1 0 0 rg}}|. All these -% registers are empty by default. The exception is if the |picture| -% option is used, the |\Celltoks| is set to |\BG{0 0 0}|. If you -% change it, remember to use non-transparent background for cells! -% -% \DescribeMacro{\AfterGameBoard} Macro |\AfterGameBoard| is -% execuetd between gameboard and score field. -% -% \DescribeMacro{\everyCategoryHead} Tokens register -% |\everyCategoryHead| is used at the begin of every category head. -% You can set it by something like -% |\everyCategoryHead{\textrm\footnotesize}| -% -% \DescribeMacro{\JeopardyTitle} The |\JeopardyTitle| macro contains -% the title of the game. The title is the hyperlink anchor used to -% return from questions to the gameboard. You can set it by e.g. -% |\def\JeopardyTitle{The title of the game}|. -% -% \DescribeEnv{category} The |category| environment has one -% parameter -- the name of the category. It encloses \verb|question| -% environments. The category name is not used if the |picture| -% option is active. In this case the name is replaced by the capital -% letter A, B, C, \dots. In this case you (or your students) can -% refer to the fields like on chessboard. -% -% \DescribeEnv{question} The |question| environment contains a -% question and answers for multiple choice questions. The answers are -% introduced by \verb|\Ans0| (wrong answers) or \verb|\Ans1| (correct -% answers). The environment includes an \verb|oQuestion| environment -% and hence it may contain \verb|\RespBoxMath| or |\RespBoxTxt| -% command. -% -% \DescribeMacro{\Goal} If the user finishes the game with at least -% \verb|\Goal| points, a hidden banner (GrandPoohbah field) with -% message stored in \verb|\ChampionMsg| command is shown. The default -% initial value -% \verb|45*(1+numQuestions)*numQuestions*numCategories*\JeopardyScaleFactor| -% means 90 percent of the maximal point score. The banner has height -% \verb|\GrandPoohbahHeight|. This macro is not used if the option -% |picture| is active. In this case the |\ChampionMsg| should contain -% the name of the picture (for example the name of the person on -% photograph) and it can be shown by doubleclicking "Solution" -% button at the bottom. -% -% \DescribeMacro{\SetGameWidth} Macro |\SetGameWidth| sets the -% |\GameWidth| register with the width of the game desk. It evaluates -% the width of cells as quotient of the parameter of the macro and the -% number of categories. Macro |\SetGameHeight| works in a similar way -% if the option |picture| is not active. If the option |picture| is -% active, the height of the game is evaluated from the dimensions of -% the picture. The width of the picture is scaled into |\GameWidth| and -% the height is established from the height of the scaled picture. -% -% \StopEventually{} -% -% \section{Implementation} -% -% Check that we use |pdflatex| and both \verb|exerquiz| and -% \verb|dljslib| packages are loaded. -% \begin{macrocode} -%<*package> - -\ifx\shortquiz\undefined -\PackageWarning{Jeopardy}{!!!!!!!!!!!!! Load exerquiz package !!!!!!!!!!!} -\def\finito{\@@end} -\expandafter\finito\fi - -\ifx\dljsRegister\undefined -\PackageWarning{Jeopardy}{!!!!!!!!!!!!! Load dljslib package !!!!!!!!!!!} -\def\finito{\@@end} -\expandafter\finito\fi - -\if\eq@drivernum1%%% pdftex - \typeout{*** using pdftex option ***} - \def\JeopardyNoPeekCommand{ - \edef\ThisPage{/AA<</O<</S/JavaScript/JS(kontrola( - \the\QuestCount,\the\CatCount);)>> >>} - \global\pdfpageattr=\expandafter{\ThisPage}% - } -\else - \def\JeopardyNoPeekCommand{} - \typeout{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!} - \typeout{!!!!!!!! The package has been tested with pdflatex only.} - \typeout{!!!!!!!! Use pdflatex drivers in eforms.sty and exerquiz.sty.} - \typeout{!!!!!!!! On your own risk you can use other drivers - with *allowpeeking* option.} - \PackageWarning{Jeopardy}{No pdftex drivers for eforms and exerquiz} -\fi - -\RequirePackage{multido} - -\DeclareOption{czech}{ -\def\formessage{za} -\def\Scoremessage{Body} -\def\fairmsg{Nesidit! Odpovidate na jinou otazku!} -\def\who@answers@msg#1{Odpovida hrac #1} -\def\RightWrongMessages{ -aCM = new Array\ -( "Spravne! Jen tak dal!", - "Vyborne! Gratuluji!", - "Dobre! Pokracujte ve spravne nacate praci!", - "Ano, ano, ano, ano!", - "Spravne! Zkuste i tezsi otazky", - "Spravna odpoved!", - "Presne tak! Ziskavate dalsi body" -); -aEM = new Array\ -( "To neni spravne! Zkuste jinou otazku.", - "Chyba. Nehadejte!", - "Prosim! Prosim! Premyslejte nez odpovite!", - "Dalsi chyba! Hadanim se daleko nedostanete!", - "Ale ne! Kdepak! Body dolu.", - "Ne, zkuste jinou otazku.", - "Zase spatne! Bohuzel, vase konto se opet snizuje!" -);} -\def\NotAllowedMesssage{"Nesmite menit odpovedi!"} -\def\RightMessage{Spravne} -\def\WrongMessage{Spatne} -\def\JeopardyTitle{Tituln\'\i{} strana} -\def\ChampionMsg{Bravo! Mistr nad mistry!} -} - -\def\formessage{for} -\def\Scoremessage{Score} -\def\NotAllowedMesssage{"Changing your answer is not allowed!"} -\def\RightMessage{Right} -\def\WrongMessage{Wrong} -\def\fairmsg{Play Fair! Answer the question you have clicked!} -\def\who@answers@msg#1{Player #1} -\def\RightWrongMessages{ -aCM = new Array -( "That's Right! Way to go, Kiddo!", - "Wonderfully Done! Congrats!", - "Very Good! Keep up the good work!", - "Good, good, good, good!", - "Gee, you're smart! Try a harder one!", - "You're pretty sharp! Continuez, s'il vous pla\string\356t!", - "You're the tops! But wait...try another." -); -aEM = new Array -( "That's wrong! Sorry. Try Again.", - "Error again. Don't guess, I'm watching!", - "Please! Please! Work it out first!", - "An error has insinuated itself into your calculations. Recalibrate your thinking!", - "Bah! Humbug! You're haunted by Errors!", - "Try again. This time with order and method.", - "Wrong again! Use your little gray cells!" -); -} -\def\JeopardyTitle{Jeopardy Game} -\def\ChampionMsg{You are a Champion!} - -\newif\ifJeopardyNoPeeking -\JeopardyNoPeekingtrue -\DeclareOption{allowpeeking}{\JeopardyNoPeekingfalse} - -\newif\ifEvalOnBlur -\EvalOnBlurfalse -\DeclareOption{evalonblur}{\EvalOnBlurtrue} - -\newif\ifdouble \doublefalse -\def\JeopardyScaleFactor{1} -\DeclareOption{double}{\doubletrue\def\JeopardyScaleFactor{2}} - -\newif\ifoneplayer \oneplayertrue -\DeclareOption{twoplayers}{\oneplayerfalse} - -\newif\if@jeopardyFineTune \@jeopardyFineTunefalse -\DeclareOption{finetune}{\@jeopardyFineTunetrue} - -\DeclareOption{proofing}{\eq@proofingtrue \JeopardyNoPeekingfalse} -\definecolor{webgreen}{rgb}{0,.5,0} - -\newif\if@jeopardyBgPicture -\@jeopardyBgPicturefalse -\DeclareOption{bgpicture}{\@jeopardyBgPicturetrue \everyPushButton{\BC{}}} - -\newif\if@jeopardyPicture -\@jeopardyPicturefalse -\def\Picture{0} -\DeclareOption{picture}{\def\Picture{1}\def\formessage#1.{}% - \@jeopardyPicturetrue - \@jeopardyBgPicturetrue - \Celltoks{\BG{0 0 0}} - \everyPushButton{\BC{}} -} - - -\newtoks\GrandPoohbahtoks -\newtoks\Scoretoks -\newtoks\Celltoks -\newtoks\Radiotoks -\newtoks\Playertoks - - -\ProcessOptions -% \end{macrocode} -% We load |graphicx| package for inserting bitmaps. -% \begin{macrocode} -\if@jeopardyBgPicture -\RequirePackage{graphicx} -\fi - -\sqTurnOffAlerts - -\newcount \CatCount -\newcount \QuestCount -\newcount \NumberOfCategories -\newcount \NumberOfQuestions -\newcount \QuestCountA \QuestCountA=-1 -\newcount \AnswerCount -\newcount \OQuestionCount -\newcount \temporarycount -\newcounter{tempcounter} -\everyRespBoxMath{\BG{1 1 1}} -\everyRespBoxTxt{\BG{1 1 1}} - -\newlength \GrandPoohbahHeight -\GrandPoohbahHeight = 10pt - -% \end{macrocode} -% Macros for setting game width and height. -% \begin{macrocode} -\newlength\GameWidth -\newlength\GameHeight -\newlength\CellWidth -\newlength\CellHeight -\newlength\ScoreCellHeight -\def\SetGameWidth#1{\GameWidth=#1\relax - \CellWidth=\GameWidth - \ifnum\NumberOfCategories=0 - \divide\CellWidth by 10 - \else - \divide\CellWidth by \NumberOfCategories - \fi -} -\def\SetGameHeight#1{\GameHeight=#1\relax - \CellHeight=\GameHeight - \ifnum\NumberOfCategories=0 - \divide\CellHeight by 10 - \else - \divide\CellHeight by \NumberOfQuestions - \fi - \ScoreCellHeight=\CellHeight -} -% \end{macrocode} -% We do some basic initializations for dimensions of gameboard. -% \begin{macrocode} -\AtBeginDocument{ -\SetGameWidth{0.8\linewidth} -\SetGameHeight{0.6\textheight} -} -% \end{macrocode} -% Macros to typeset the picture. The default name of the picture is -% |picture.jpg|. You can redefine the command |\insertJeopardyPicture| -% to replace the picture e.g. by a text written in \TeX. To do this, -% replace the |\includegraphics| command by something else, e.g. -% |minipage| environment. -% \begin{macrocode} -\newbox\JeopardyPictureBox -\def\JeopardyPictureFile{picture.jpg} -\def\insertJeopardyPicture{% - \setbox\JeopardyPictureBox=% - \hbox{\includegraphics[width=\GameWidth]{\JeopardyPictureFile}}% - \SetGameHeight{1.02\ht\JeopardyPictureBox}% - \dimen0=\CellHeight - \dimen1=0.5\dimen0 - \hbox to 0 pt{\vbox to 0 pt{\kern -\dimen1\box\JeopardyPictureBox\vss}\hss}% -} - -% \end{macrocode} -% We define |category| and |question| environments. We read the names of the -% categories from the |aux| file and store these names in macros. These -% names are not used when |picture| option is active. In this case we -% convert the number of category into capital letter. -% \begin{macrocode} -\if@jeopardyPicture - \def\CategoryNameDef#1#2{% - \setcounter{tempcounter}{#1}% - \expandafter\xdef\csname CategoryName#1\endcsname{% - \Alph{tempcounter}\strut}}% -\else - \def\CategoryNameDef#1#2{% - \expandafter\gdef\csname CategoryName#1\endcsname{#2}}% -\fi - -% \end{macrocode} -% The category environment simply increases the counter, writes the -% name into |aux| file and checks the number of questions in the last -% category environment. -% \begin{macrocode} -\newenvironment{category}[1]{% - \global\advance \CatCount by 1 - \global\QuestCount=0 - \immediate\write\@auxout{\string\CategoryNameDef{\the\CatCount}{#1}}% - } - {% - \ifnum \QuestCountA=-1 \global\QuestCountA=\QuestCount - \else - \ifnum\QuestCountA=\QuestCount - \else - \PackageWarning{Jeopardy} - {Bad number of questions in Category \the\CatCount.} - \fi - \fi - } -% \end{macrocode} -% |question| environment increases the counter, places the action to -% check that the page is opened from the gameboard, writes the title -% of the question and defines macro |\Ans| which typesets buttons with -% correct and incorrect answers. It also starts the |oQuestion| -% environment and hence the commands |\RespBoxMath| and |\RespBoxTxt| -% from |exerquiz.sty| can be used. At the end of the environment we -% close the |oQuestion| environment and start new page. -% \begin{macrocode} -\newenvironment{question}{% - \global\advance \QuestCount by 1\relax - \AnswerCount=0 - \ifJeopardyNoPeeking - \JeopardyNoPeekCommand - \fi - \begin{center}% - \hypertarget{\the\QuestCount\the\CatCount}% - {\csname CategoryName\the\CatCount\endcsname{} % - \formessage{} \the\QuestCount00.}% - \end{center}% -\def\Ans##1{\par -\ifnum\AnswerCount=0 \vskip\medskipamount\fi -\advance\AnswerCount by 1% -\setcounter{tempcounter}{\the\AnswerCount}% -\leavevmode\hbox to 0 pt{% -\hss -\ifeq@proofing \def\temp{##1}\if\temp1$\color{webgreen}\bullet$ \fi\fi -\pushButton[\CA{\alph{tempcounter}}% - \A{\JS{useranswer(##1,\the\QuestCount,\the\CatCount);}}]% - {{Answer\the\AnswerCount-\the\QuestCount-\the\CatCount}}% - {1.3em}{1.3em}% -\hskip1em}% -\leftskip2em}% -\begin{oQuestion}{Q\the\QuestCount\the\CatCount}% -}{\par\end{oQuestion}\newpage} - -% \end{macrocode} -% At the end of document we write the number of questions and -% categories into |aux| file. -% \begin{macrocode} -\AtEndDocument{ -\immediate\write\@auxout{\string\global\string\NumberOfCategories=\the\CatCount} -\immediate\write\@auxout{\string\global\string\NumberOfQuestions=\the\QuestCount} -} -% \end{macrocode} -% Here we redefine some internal macros of |exerquiz.sty|. -% \begin{macrocode} -\ifEvalOnBlur -\def\@@RespBoxMathActions -{% - \AA{ - \AAFormat{\eqFormatArg}% - \AAOnFocus{\JS{var retn = null;}}% - \AAOnBlur{\JS{retn = \processJSfunc(\rbArgs,\compareJSfunc); - if (event.shift){ - if (retn==true) {useranswer(1,\the\QuestCount,\the\CatCount); } - else {if (retn==false) {useranswer(0,\the\QuestCount,\the\CatCount);} - else {app.alert("Probably a syntax error somewhere.");}}} - else - {app.alert("Exit the field with Shift+Click."); - this.getField("obj.\oField.\thequestionno").setFocus(); - }} - } - } -} -\def\@@RespBoxTxtActions -{% - \AA{\AAOnBlur{\JS{retn = ProcRespTxt(\rbTxtAlt); - if (event.shift){ - if (retn==true) {useranswer(1,\the\QuestCount,\the\CatCount); } - else {if (retn==false) {useranswer(0,\the\QuestCount,\the\CatCount);} - else {app.alert("Probably a syntax error somewhere.");}}} - else - {app.alert("Exit the field with Shift+Click."); - this.getField("obj.\oField.\thequestionno").setFocus(); - }} }% - \AAOnFocus{\JS{var retn = null;}} - } -} -\def\jsRespBox[#1]#2{% - \def\compareJSfunc{#1}\def\processJSfunc{#2}% - \ifeq@proofing\makebox[0pt][l]{\space\math@correctAnswer}\fi - \eq@TextField % send to the driver-dependent macro - \ \pushButton{button}{10bp}{10bp}}% -\def\eq@@RespBoxTxt{% - \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi - \eq@TextField - \ \pushButton{button}{10bp}{10bp}}% -\else -\def\@@RespBoxMathActions -{% - \AA{\AAKeystroke{if(event.willCommit) { - retn = \processJSfunc(\rbArgs,\compareJSfunc); - if (retn==true) {useranswer(1,\the\QuestCount,\the\CatCount); } - else {if (retn==false) {useranswer(0,\the\QuestCount,\the\CatCount);} - else {app.alert("Probably a syntax error somewhere.");}}} - }% - \AAFormat{\eqFormatArg}% - \AAOnFocus{\JS{var retn = null;}}% - }% -}% -\def\@@RespBoxTxtActions -{% - \AA{\AAKeystroke{if(event.willCommit) { - retn = ProcRespTxt(\rbTxtAlt); - if (retn==true) {useranswer(1,\the\QuestCount,\the\CatCount); } - else {if (retn==false) {useranswer(0,\the\QuestCount,\the\CatCount);} - else {app.alert("Probably a syntax error somewhere.");}}} - }% - \AAOnFocus{\JS{var retn = null;}} - } -} -\fi %%% \ifEvalOnBlur -% \end{macrocode} -% Macro for typesetting the page with title (hyperref anchor), hidden -% GrandPoohbah field and gameboard. -% \begin{macrocode} -\newtoks\everyCategoryHead -\everyCategoryHead{}% -\def\MakeGameBoard{% - \begin{center}% - \hypertarget{GameBoard}{\JeopardyTitle}% - - \edef\temp{\noexpand\textField[\noexpand\Ff{\noexpand\FfReadOnly}% - \noexpand\F{\noexpand\FHidden}% - \noexpand\Q{1}% - \noexpand\textSize{0}% - \noexpand\V{\ChampionMsg}\the\GrandPoohbahtoks% - ]{GrandPoohbah}{\textwidth}{\the\GrandPoohbahHeight}}% - \temp - - \leavevmode - \ifnum\NumberOfQuestions>0% - \ifnum\NumberOfCategories>0% - \multido{\i=1+1}{\NumberOfCategories}{\leavevmode - \vtop{\hsize=\CellWidth \centering - \the\everyCategoryHead\csname CategoryName\i\endcsname }}\\% - \leavevmode - \if@jeopardyBgPicture\insertJeopardyPicture\fi - \Multido{\i=1+1}{\NumberOfQuestions}% - {\edef\j{\i}% - \if@jeopardyPicture\hbox to 0 pt{\hss$\j$ }\fi - {\Multido{\i=1+1}{\NumberOfCategories}{% - \edef\temp{\noexpand\textField[% - \noexpand\Ff{\noexpand\FfReadOnly}% - \noexpand\S{S}% - \noexpand\Q{1}% - \the\Celltoks]{Field\j\i}{\CellWidth}{\CellHeight}}% - \hbox to 0 pt{\temp\hss}% - \if@jeopardyPicture - \pushButton[\S{B}% - \A{\JS{kliknuti(\j,\i);}}]{Button\j\i}{\CellWidth}{\CellHeight}% - \else - \pushButton[\S{B}\CA{\j00}% - \A{\JS{kliknuti(\j,\i);}}]{Button\j\i}{\CellWidth}{\CellHeight}% - \fi - }\\\leavevmode}% - }% - \fi - \fi - \par - \AfterGameBoard - \if@jeopardyPicture - \smallskip\leavevmode - \hfill\pushButton[\A{\JS{hideall();}}\CA{Solution}]{Solution}{1.5cm}{12bp} - \else - \@makeScoreField - \fi - \end{center}% - \newpage -}% - -\def\@makeScoreField -{ - \ifoneplayer - \dimen0=\NumberOfCategories\CellWidth - \edef\temp{\noexpand\textField[\noexpand\V{}\noexpand\textSize{0} - \noexpand\Q{1} - \noexpand\Ff{\noexpand\FfReadOnly} - \the\Scoretoks - ]{Total.1}{\dimen0}{\ScoreCellHeight}}% - \temp - \else%two players - \dimen0=\NumberOfCategories\CellWidth - \dimen1=0.5\dimen0 - \edef\temp{\noexpand\textField[\noexpand\V{}\noexpand\textSize{0} - \noexpand\Q{1} - \noexpand\Ff{\noexpand\FfReadOnly} - \the\Scoretoks - ]{Total.1}{\dimen1}{\ScoreCellHeight}}% - \temp - \edef\temp{\noexpand\textField[\noexpand\V{}\noexpand\textSize{0} - \noexpand\Q{1} - \noexpand\Ff{\noexpand\FfReadOnly} - \the\Scoretoks - ]{Total.2}{\dimen1}{\ScoreCellHeight}}% - \temp\\ - \hbox to \hsize{\hss\hbox to \dimen0 - {\hss - \radioButton[\V{1}\Ff{\FfNoToggleToOff}\A{\JS{player=1;this.getField("whoanswers").value= "\who@answers@msg{A}";}}]{radio}{12pt}{12pt}{1} - \hss - \hbox % to 0 pt - {\hss - \edef\temp{% - \noexpand\textField[\noexpand\Q{1}\noexpand\Ff{\noexpand\FfReadOnly}\noexpand\V{\who@answers@msg{A}}\the\Playertoks] - {whoanswers}{0.6\dimen0}{10pt}}\temp\hss - } - \hss - \radioButton[\Ff{\FfNoToggleToOff}\A{\JS{player=2;this.getField("whoanswers").value= "\who@answers@msg{B}";}}]{radio}{12pt}{12pt}{2} - \hss}\hss - }% - \fi -} - -\let\AfterGameBoard\relax -\edef\Goal{45*(1+numQuestions)*numQuestions*numCategories*\JeopardyScaleFactor} -% \end{macrocode} -% Basic Java functionality is rewritten from |jj_game.cls|. We start -% with initial declarations. -% \begin{macrocode} - -\def\update@who@answers{ -if (player==1) this.getField("whoanswers").value= "\who@answers@msg{A}"; -else this.getField("whoanswers").value= "\who@answers@msg{B}"; -} - -\edef\JeopardyUpdatescore -{ - \ifoneplayer - this.getField("Total.1").value="\Scoremessage: "+TotalScoreA; - if (TotalScoreA>0) - this.getField("Total.1").textColor=\correctColor; - else this.getField("Total.1").textColor=\wrongColor; - \else - this.getField("Total.1").value="\Scoremessage: "+TotalScoreA; - if (TotalScoreA>0) - this.getField("Total.1").textColor=\correctColor; - else this.getField("Total.1").textColor=\wrongColor; - this.getField("Total.2").value="\Scoremessage: "+TotalScoreB; - if (TotalScoreB>0) - this.getField("Total.2").textColor=\correctColor; - else this.getField("Total.2").textColor=\wrongColor; - if (player==1) {player=2; this.getField("radio").value=2;} - else {player=1; this.getField("radio").value=1}; - \update@who@answers - \fi -} - - - -\begin{insDLJS}[dljslibRMb]{dljsliRMb}{RMb} -numQuestions = \the\NumberOfQuestions; -numCategories = \the\NumberOfCategories; -var player=1; -RowClick=0; -ColClick=0; -SaveRowClick=0; -SaveColClick=0; -totalQuestions = numQuestions * numCategories; -var QAed =""; -for (var i=0; i< totalQuestions; i++)QAed +="0"; -nEM = 0; -nCM = 0; -var submitted = 0; -TotalScoreA = 0; -TotalScoreB = 0; -NumQAed = 0; -Goal = \Goal; -\RightWrongMessages -var Picture=\Picture; -var JeopardyPass=0; -% \end{macrocode} -% These functions check that the page has been opened from the -% Gameboard and save the row and column number of the button which has -% been clicked. The OpenAction on the page is turned off after -% answering all questions. -% \begin{macrocode} - -function kontrola(row,col) -{ - if (NumQAed<totalQuestions) - { - var p = numQuestions*(col-1)+row-1; - if (row!=RowClick) gotoNamedDest("GameBoard"); - if (col!=ColClick) gotoNamedDest("GameBoard"); - RowClick=0; - ColClick=0; - } -}; - -function kliknuti(row,col) -{RowClick=row; -ColClick=col; -SaveColClick=col; -SaveRowClick=row; -gotoNamedDest(row+""+col); -}; - -% \end{macrocode} -% This function notifies the user. If the option |picture| is active, -% it also and hides the field on Gameboard in the case of correct -% answer. -% \begin{macrocode} -function useranswer(ans,rowans,colans) -{ - if ((rowans!=SaveRowClick) || (colans!=SaveColClick)) - { - app.alert("\fairmsg"); - gotoNamedDest("GameBoard"); - return null; - } - row= SaveRowClick; - col= SaveColClick; - this.getField("Button"+row+col).hidden=true; - var p = numQuestions*(col-1)+row-1; - if (QAed.charAt(p)==0) - { - QAed = QAed.substring(0,p)+1+QAed.substring(p+1,totalQuestions); - if (ans==1) - { - if (Picture==1) - { - this.getField("Field"+row+col).hidden=true; - } - else - { - this.getField("Field"+row+col).textColor=\correctColor; - this.getField("Field"+row+col).value="\RightMessage"; - } - if (player==1) - TotalScoreA += \JeopardyScaleFactor*row*100; - else - TotalScoreB += \JeopardyScaleFactor*row*100; - app.alert(aCM[nCM],3); - if (++nCM > 6) nCM=0; - } - else - { - if (Picture!=1) - { - this.getField("Field"+row+col).textColor=\wrongColor; - this.getField("Field"+row+col).value="\WrongMessage"; - } - if (player==1) - TotalScoreA -= \JeopardyScaleFactor*row*100; - else - TotalScoreB -= \JeopardyScaleFactor*row*100; - app.alert(aEM[nEM],3); - if (++nEM > 6) nEM=0; - } - if ((++NumQAed>=totalQuestions) && ((TotalScoreA+TotalScoreB)>=Goal)) - { - if (Picture!=1) this.getField("GrandPoohbah").hidden=false; - } - } - else - app.alert(\NotAllowedMesssage); - gotoNamedDest("GameBoard"); - if (Picture!=1) - { - \JeopardyUpdatescore - } -}; -% \end{macrocode} -% This function hides in the first call all fields and buttons on the -% gameboard and after the second call shows the |\ChampionMsg|. In -% addition, it sets |NumQAed=totalQuestions| and the user is allowed to -% go through the pages of the document. -% \begin{macrocode} -function hideall(){ - NumQAed=totalQuestions; - var i=0; - var j=1; - if (JeopardyPass==0) - { - JeopardyPass=1; - for (var i=0; i< numQuestions; i++) - { - for (var j=0; j< numCategories; j++) - { - row=i+1; col=j+1; - this.getField("Field"+row+col).hidden=true; - this.getField("Button"+row+col).hidden=true; - } - } - } - else - this.getField("GrandPoohbah").hidden=false; -} -% \end{macrocode} -% We redefine function used in |exerquiz| package. We will turn off -% notification of the correct and incorrect answers by changing the -% strokecolor of the text fields. -% \begin{macrocode} -function notifyField(success, flag, fieldname) { - return success; -} -\end{insDLJS} -% \end{macrocode} -% The fields in Acrobat have bigger dimension than their dimensions -% visible by \TeX. From this reason they overlap a bit. The user may -% try to remove this overlap, which is not nice together with picture, -% using option |finetune|. This option tries to resolve this problem -% by using smaller buttons than the |\CellWidth| and |\CellHeight|. -% The user has to set manually the dimension |\AditionalShift| which -% is used to shift the image vertically to adjust correct position. -% (Sorry for the inconvenience.) I know that this solution is not -% clean enough but \dots I did my best. At least for this verion of -% |jeopardy| style. Look at the files |game1a.tex| and |game4.tex|. -% You can also try to remove the option |finetune| from these files -% and compaile again to note the difference. -% \begin{macrocode} -\newlength\AditionalShift -\AditionalShift=0pt - -\if@jeopardyFineTune -\newlength \finetunelength -\newlength \finetuneCellWidth -\newlength \finetuneCellHeight -\finetunelength=1pt - -\def\insertJeopardyPicture{% - \dimen1=\finetunelength - \multiply\dimen1 by \NumberOfCategories - \advance\dimen1 by \GameWidth - \setbox\JeopardyPictureBox=% - \hbox{\includegraphics[width=\dimen1]{\JeopardyPictureFile}}% - \dimen1=\finetunelength - \multiply\dimen1 by \NumberOfQuestions - \dimen2=\ht\JeopardyPictureBox - \advance\dimen2 by -1.9\dimen1 - \SetGameHeight{\dimen2}% - \dimen0=\CellHeight - \divide\dimen0 by 2 - \hbox to 0 pt{\vbox to 0 pt{\kern -\dimen0\kern-\AditionalShift - \box\JeopardyPictureBox\vss}\hss}% -} - - - -\def\MakeGameBoard{% - \begin{center}% - \fboxsep=\finetunelength - \fboxrule=0pt - \hypertarget{GameBoard}{\JeopardyTitle}% - - \edef\temp{\noexpand\textField[\noexpand\Ff{\noexpand\FfReadOnly}% - \noexpand\F{\noexpand\FHidden}% - \noexpand\Q{1}% - \noexpand\textSize{0}% - \noexpand\V{\ChampionMsg}\the\GrandPoohbahtoks% - ]{GrandPoohbah}{\textwidth}{\the\GrandPoohbahHeight}}% - \temp - - \leavevmode - \ifnum\NumberOfQuestions>0% - \ifnum\NumberOfCategories>0% - \multido{\i=1+1}{\NumberOfCategories}{\leavevmode - \vtop{\hsize=\CellWidth \centering - \the\everyCategoryHead\csname CategoryName\i\endcsname }}\\% - \leavevmode - \if@jeopardyBgPicture\insertJeopardyPicture\fi - \finetuneCellWidth=\CellWidth - \advance\finetuneCellWidth by -\finetunelength - \finetuneCellHeight=\CellHeight - \vtop{% - \Multido{\i=1+1}{\NumberOfQuestions}% - {\edef\j{\i}% - \hbox{% - \if@jeopardyPicture\hbox to 0 pt{\hss$\j$ }\fi - \Multido{\i=1+1}{\NumberOfCategories}{% - \edef\temp{\noexpand\textField[% - \noexpand\Ff{\noexpand\FfReadOnly}% - \noexpand\S{S}% - \noexpand\Q{1}% - \the\Celltoks]{Field\j\i}{\finetuneCellWidth}{\finetuneCellHeight}}% - \fbox{\hbox to 0 pt{\temp\hss}% - \if@jeopardyPicture - \pushButton[\S{B}% - \A{\JS{kliknuti(\j,\i);}}]{Button\j\i}{\finetuneCellWidth}{\finetuneCellHeight}% - \else - \pushButton[\S{B}\CA{\j00}% - \A{\JS{kliknuti(\j,\i);}}]{Button\j\i}{\finetuneCellWidth}{\finetuneCellHeight}% - \fi% - }}}\kern-1pt - }}% - \fi %%% \ifnum\NumberOfQuestions>0% - \fi %%% \ifnum\NumberOfCategories>0% - \par - \AfterGameBoard - \if@jeopardyPicture - \smallskip\leavevmode - \hfill\pushButton[\A{\JS{hideall();}}\CA{Solution}]{Solution}{1.5cm}{12bp} - \else%not picture - \@makeScoreField - \fi - \end{center}% - \newpage -}% -\fi - -% \end{macrocode} -% The user may write his/her customizations into jeopardy.cfg. -% \begin{macrocode} -\IfFileExists{jeopardy.cfg}{% - \typeout{---------------------------------------------------} - \typeout{jeopardy: Configuration from the file jeopardy.cfg.} - \typeout{---------------------------------------------------} - \input jeopardy.cfg}{} -%</package> -% \end{macrocode} -% We define shorter navigation panel if |pdfscreen.sty| package is used. -% \begin{macrocode} -%<*cfg> -\ifx\NavigationPanel\undefined\else -\def\NavigationPanel{\normalsfcodes% - \href{\@urlid}{\addButton{\buttonwidth}{\tiny\@Panelhomepagename}}\\ \pfill - \hyperlink{GameBoard}{\addButton{\buttonwidth}{\tiny GameBoard}}\\ \pfill - \Acrobatmenu{FullScreen}{\addButton{\buttonwidth}{\tiny\@Panelfullscreenname}}\\\pfill - \Acrobatmenu{Close}{\addButton{\buttonwidth}{\tiny\@Panelclosename}}\\\pfill - \Acrobatmenu{Quit}{\addButton{\buttonwidth}{\tiny\@Panelquitname}}\\ -} -\fi -\def\PDFSCR@Warning#1{} -%</cfg> -% \end{macrocode} -% \Finale -\endinput |