�Alexanders’ Exam

Alexanders’ exam

<..hook Alexanders’ exam..>
 <.alex hook utilities.>
 <.hooks for section types.>
 \pend:def\@enddocumenthook{{\tt \tmp:cnt=1 \seed:hooks }}
 -_-_-

<..alex hook utilities..>
 \def\seed:hooks{%
   \ifnum \tmp:cnt>\c@section \else
      <.trace exam data.>%
      <.type-oriented hooks.>
      \advance\tmp:cnt by 1
      \expandafter\seed:hooks
   \fi
 }
 -_-_-

<..type-oriented hooks..>
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt\endcsname
       \@shortanswer
   <.hooks for shortanswer.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname\@fixed
   <.hooks for fixed.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname\@fillin
   <.hooks for fillin.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname\@fillinstar
   <.hooks for fillinstar.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname\@MC
   <.hooks for MC.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname\@MCstar
   <.hooks for MCstar.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname
      \@shortanswerstar
   <.hooks for shortanswerstar.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname
      \@truefalse
   <.hooks for truefalse.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname
      \@truefalsestar
   <.hooks for truefalsestar.>
 \fi
 \expandafter\ifx\csname type@sec\romannumeral\tmp:cnt \endcsname\@fixedstar
   <.hooks for fixedstar.>
 \fi
 -_-_-

<..hooks for shortanswer..>
 \def\:temp{<.redef blank.>}%
 <.hooks for answers.>%
 <.hooks for section heads.>%
 <.hooks on instruction preamble.>%
 -_-_-

<..hooks for shortanswerstar..>
 <.cond head and inst hooks.>%
 -_-_-

<..hooks for fixed..>
 \def\:temp{<.redef blank.>}%
 <.hooks for answers.>%
 <.hooks for section heads.>%
 <.hooks on instruction preamble.>%
 -_-_-

<..hooks for fixedstar..>
 \def\:temp{<.redef blank.>}%
 <.hooks for answers.>%
 <.cond head and inst hooks.>%
 -_-_-

<..hooks for fillin..>
 \def\:temp{<.redef blank.>}%
 <.hooks for answers.>%
 <.hooks for section heads.>%
 <.hooks on instruction preamble.>%
 -_-_-

<..hooks for fillinstar..>
 \def\:temp{<.redef blank.>}%
 <.hooks for answers.>%
 <.cond head and inst hooks.>%
 -_-_-

<..hooks for MC..>
 \def\:temp{<.reconfigure multiplechoice.>}%
 <.hooks for answers.>%
 <.hooks for section heads.>%
 <.hooks on instruction preamble.>%
 -_-_-

MC stands for multi-choice

<..hooks for MCstar..>
 \def\:temp{<.reconfigure multiplechoice.>}%
 <.hooks for answers.>%
 <.cond head and inst hooks.>%
 -_-_-

<..hooks for truefalse..>
 \def\:temp{<.redef truefalse answer.>}%
 <.hooks for answers.>%
 <.hooks for section heads.>%
 <.hooks on instruction preamble.>%
 -_-_-

<..hooks for truefalsestar..>
 \def\:temp{<.redef truefalse answer.>}%
 <.hooks for answers.>%
 <.cond head and inst hooks.>%
 -_-_-

<..cond head and inst hooks..>
 \expandafter\ifx
    \csname head@sec\romannumeral\tmp:cnt \endcsname\relax \else
    <.hooks for section heads.>%
 \fi
 \expandafter\ifx
    \csname inst@sec\romannumeral\tmp:cnt \endcsname\relax \else
    <.hooks on instruction preamble.>%
 \fi
 -_-_-

<..hooks for section heads..>
 \expandafter\pend:def\csname sec\romannumeral\tmp:cnt @fixed\endcsname{%
   \gdef\beforesectsep{0pt \a:sectiontitle
      \global\let\beforesectsep\sv:beforesectsep}%
   \gdef\aftersectsep{0pt \b:sectiontitle
      \global\let\aftersectsep\sv:aftersectsep}%
 }%
 \global\expandafter
   \let\csname sec\romannumeral\tmp:cnt @fixed\expandafter\endcsname
      \csname sec\romannumeral\tmp:cnt @fixed\endcsname
 -_-_-

<..hook Alexanders’ exam..>+
 \NewConfigure{sectiontitle}{2}
 -_-_-

<..alex hook utilities..>+
 \let\sv:beforesectsep\beforesectsep
 \let\sv:aftersectsep\aftersectsep
 -_-_-

<..hooks on instruction preamble..>
 \expandafter\pend:def
     \csname inst@sec\romannumeral\tmp:cnt\endcsname{\a:instructions}%
 \expandafter\append:def
     \csname inst@sec\romannumeral\tmp:cnt\endcsname{\b:instructions\par}%
 \global\expandafter\let
     \csname inst@sec\romannumeral\tmp:cnt \expandafter\endcsname
     \csname inst@sec\romannumeral\tmp:cnt\endcsname
 -_-_-

<..hooks for answers..>
 \global  \csname qlist@scr@sec\romannumeral\tmp:cnt
   \expandafter\expandafter\expandafter
      \endcsname
   \expandafter\expandafter\expandafter{\expandafter\:temp
      \the\csname qlist@scr@sec\romannumeral\tmp:cnt \endcsname}
 -_-_-

<..redef blank..>
 \ifx \blank\:UnDef
   \:warning{tex4ht encountered a problem
       with \csname type@sec\current@section\endcsname}
 \else
 \ifanswer
    \ifcblanks
       \def\blank####1{\a:answer ####1\b:answer}%
    \fi
    \ifpblanks
       \def\blank####1{\a:answer ####1\b:answer}%
    \fi
 \else
    \ifcblanks
       \pend:defI\blank{\a:question}
       \append:defI\blank{\b:question}
    \fi
    \ifpblanks
       \pend:defI\blank{\a:question}
       \append:defI\blank{\b:question}
    \fi
 \fi \fi
 -_-_-

<..redef truefalse answer..>
   \pend:defI\@separator{\def\@tfitem{%
     \ifanswer
        \item[\a:answer
            \csname tf@sol\current@question\endcsname\b:answer]%
     \else
        \item
     \fi}}%
 -_-_-

<..hook Alexanders’ exam..>+
 \NewConfigure{answer}{2}
 \NewConfigure{question}{2}
 -_-_-

<..hook Alexanders’ exam..>+
 \pend:defI\MCfont{\a:MCfont}
 \append:defI\MCfont{\b:MCfont}
 \NewConfigure{MCfont}{2}
 -_-_-

<..hook Alexanders’ exam..>+
 \Configure{MCfont}
  {\HCode{<span class="MCfont">}}    {\HCode{</span>}}
 \Css{dt .MCfont {text-decoration:underline;}}
 -_-_-

<..reconfigure multiplechoice..>
 \boxfalse
 -_-_-

<..hook Alexanders’ exam..>+
 \NewConfigure{instructions}{2}
 -_-_-

<..trace exam data..>
 \section:data
 -_-_-

<..alex hook utilities..>+
 \def\section:data{
 \par[\the\tmp:cnt]
 \par [qlist@sec\romannumeral\tmp:cnt]
    \expandafter\meaning\csname qlist@sec\romannumeral\tmp:cnt\endcsname :
    \expandafter \edef\expandafter \:temp\expandafter {\expandafter
       \the\csname qlist@sec\romannumeral\tmp:cnt\endcsname}
    \meaning\:temp
 \par [qlist@scr@sec\romannumeral\tmp:cnt]
    \expandafter\meaning\csname qlist@scr@sec\romannumeral\tmp:cnt\endcsname :
    \expandafter \edef\expandafter \:temp\expandafter {\expandafter
       \the\csname qlist@scr@sec\romannumeral\tmp:cnt\endcsname}
    \meaning\:temp
 \par [inst@sec\romannumeral\tmp:cnt]
    \expandafter\meaning\csname inst@sec\romannumeral\tmp:cnt\endcsname
 \par [head@sec\romannumeral\tmp:cnt]
    \expandafter\meaning\csname head@sec\romannumeral\tmp:cnt\endcsname
 \par [type@sec\romannumeral\tmp:cnt]
    \expandafter\meaning\csname type@sec\romannumeral\tmp:cnt\endcsname
 \par [sec\romannumeral\tmp:cnt @fixed]
    \expandafter\meaning\csname sec\romannumeral\tmp:cnt @fixed\endcsname
 \par ****************************************\par
 }
 \let\section:data=\empty
 -_-_-

<..hook Alexanders’ exam..>+
 \pend:def\@examtopmatter{\bgroup
    \pend:def\namedata{\let\hrulefill=\empty \a:namedata}%
    \append:def\namedata{\b:namedata}%
    \pend:def\classdata{\a:classdata}%
    \append:def\classdata{\b:classdata}%
    \let\examtop=\empty  \let\endexamtop=\empty
    \begin{examtop}}
 \append:def\@examtopmatter{%
     \end{examtop} \egroup\bigskip}
 \NewConfigure{classdata}{2}
 \NewConfigure{namedata}{2}
 -_-_-

<..hook Alexanders’ exam..>+
 \pend:def\@keytopmatter{\bgroup
    \let\keytop=\empty  \let\endkeytop=\empty
    \begin{keytop}}
 \append:def\@keytopmatter{%
     \end{keytop} \egroup\bigskip}
 -_-_-

<..hook Alexanders’ exam..>+
 \append:def\frontmatter@wrap@up{%
   \ifx\@frontmattertext\relax  \else
      \pend:def\@frontmattertext{\a:frontmatter}
      \append:def\@frontmattertext{\b:frontmatter}
   \fi
 }
 \NewConfigure{frontmatter} {2}
 -_-_-