summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/exam
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-12-17 23:12:18 +0000
committerKarl Berry <karl@freefriends.org>2017-12-17 23:12:18 +0000
commit6980cb1a55e1d39670564d76f29436530a761cae (patch)
treeb7e1c34a149d64d174b4fa7cbf0759fc793e9d06 /Master/texmf-dist/tex/latex/exam
parent119c85f0884038993a1e14ff427e4abc96308f98 (diff)
exam (17dec17)
git-svn-id: svn://tug.org/texlive/trunk@46084 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/exam')
-rw-r--r--Master/texmf-dist/tex/latex/exam/exam.cls375
1 files changed, 164 insertions, 211 deletions
diff --git a/Master/texmf-dist/tex/latex/exam/exam.cls b/Master/texmf-dist/tex/latex/exam/exam.cls
index 52b4e9d4f45..cc587b3d659 100644
--- a/Master/texmf-dist/tex/latex/exam/exam.cls
+++ b/Master/texmf-dist/tex/latex/exam/exam.cls
@@ -32,8 +32,8 @@
% from my web page: http://www-math.mit.edu/~psh/
-\def\fileversion{2.6}
-\def\filedate{2017/10/26}
+\def\fileversion{2.603}
+\def\filedate{2017/12/17}
%---------------------------------------------------------------------
%---------------------------------------------------------------------
%
@@ -86,6 +86,26 @@
% Changelog since version 2.4:
%--------------------------------------------------------------------
+% Version 2.603, 2017/12/15
+
+% No longer betatest.
+
+%--------------------------------------------------------------------
+% Version 2.602$\beta$, 2017/12/15
+
+% We changed the code for multicolumn grade and point tables to remove
+% the incompatibility with colortbl.sty and other packages that load
+% colortbl.sty (e.g., xcolor.sty with the "table" option).
+
+%--------------------------------------------------------------------
+% Version 2.601$\beta$, 2017/09/22
+
+% We changed command and environment names in the code from framed.sty
+% that's included (slightly modified) in exam.cls so that the user can
+% say \usepackage{framed} without creating conflicts. This also allows
+% the user to use packages, such as minted.sty, that load framed.sty
+
+%--------------------------------------------------------------------
% Version 2.6, 2017/09/19
% No longer betatest.
@@ -6643,83 +6663,54 @@
%--------------------------------------------------------------------
-% Here's an example of a multicolumn grade table indexed by questions,
-% to show how we're getting the \cline's to link up correctly with the
-% \vline's.
+% Here's an example of a multicolumn grade table indexed by questions.
% Every line of \cline's is followed by a
% \noalign{\vskip\arrayrulewidth} to cancel the
% \noalign{\vskip-\arrayrulewidth} that ends the definition of
% \cline.
-% \begin{tabular}{*2{@{}c|c|c@{}c}}
+% \begin{tabular}{*2{|c|c|c|c}}
% \cline{1-3} \cline{5-7}
% \noalign{\vskip\arrayrulewidth}
-% \vline \hspace*{\tabcolsep}\hspace*{\fill}%
-% Question%
-% \hspace*{\fill}%
+% Question%
% & Points%
-% & \hspace*{\fill}%
-% Score%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline
+% & Score%
% & \hspace*{-\arrayrulewidth}\hspace*{\doublerulesep}%
-% & \vline \hspace*{\tabcolsep}\hspace*{\fill}%
-% Question%
-% \hspace*{\fill}%
+% & Question%
% & Points%
-% & \hspace*{\fill}%
-% Score%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline\\
+% & Score%
+% \\
% \cline{1-3} \cline{5-7}
% \noalign{\vskip\arrayrulewidth}
-% \vline \hspace*{\tabcolsep}\hspace*{\fill}%
-% 1\hspace*{\fill}%
+% 1%
% & 5%
-% & \hspace*{\fill}%
-% \hbox to \@cellwidth{\hfill}%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline
+% & \hbox to \@cellwidth{\hfill}%
% & \hspace*{-\arrayrulewidth}\hspace*{\doublerulesep}%
-% & \vline\hspace*{\tabcolsep}\hspace*{\fill}%
-% 4%
-% \hspace*{\fill}%
+% & 4%
% & 20%
-% & \hspace*{\fill}%
-% \hbox to \@cellwidth{\hfill}%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline\\
+% & \hbox to \@cellwidth{\hfill}%
+% \\
% \cline{1-3} \cline{5-7}
% \noalign{\vskip\arrayrulewidth}
-% \vline \hspace*{\tabcolsep}\hspace*{\fill}%
-% 2%
-% \hspace*{\fill}%
+% 2%
% & 10%
-% & \hspace*{\fill}%
-% \hbox to \@cellwidth{\hfill}%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline
+% & \hbox to \@cellwidth{\hfill}%
% & \hspace*{-\arrayrulewidth}\hspace*{\doublerulesep}%
-% & \vline\hspace*{\tabcolsep}\hspace*{\fill}%
-% 5%
-% \hspace*{\fill}%
+% & 5%
% & 25%
-% & \hspace*{\fill}%
-% \hbox to \@cellwidth{\hfill}%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline\\
+% & \hbox to \@cellwidth{\hfill}%
+% \\
% \cline{1-3} \cline{5-7}
% \noalign{\vskip\arrayrulewidth}
-% \vline \hspace*{\tabcolsep}\hspace*{\fill}%
-% 3%
-% \hspace*{\fill}%
+% 3%
% & 15%
-% & \hspace*{\fill}%
-% \hbox to \@cellwidth{\hfill}%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline
+% & \hbox to \@cellwidth{\hfill}%
% & \hspace*{-\arrayrulewidth}\hspace*{\doublerulesep}%
-% & \vline\hspace*{\tabcolsep}\hspace*{\fill}%
-% Total:%
-% \hspace*{\fill}%
+% & Total:%
% & 75%
-% & \hspace*{\fill}%
-% \hbox to \@cellwidth{\hfill}%
-% \hspace*{\tabcolsep}\hspace*{\fill}\vline\\
+% & \hbox to \@cellwidth{\hfill}%
+% \\
% \cline{1-3} \cline{5-7}
% \noalign{\vskip\arrayrulewidth}
% \end{tabular}
@@ -6800,7 +6791,7 @@
% combinedgradetable, possibly partial.
% Note: We'll never use the final "c" in the format of the
% tabular, but there's no harm in that.
- \begin{tabular}{*{\value{num@cols}}{@{}c|c|c|c@{}c}}
+ \begin{tabular}{*{\value{num@cols}}{|c|c|c|c|c}}
% We need to make sure that the \cline@stuff@v commands come
% *immediately* following the \\ or \begin{tabular} (with no
% conditionals evaluated, even if those conditionals expand to
@@ -6816,7 +6807,7 @@
% combinedpointtable, possibly partial.
% Note: We'll never use the final "c" in the format of the
% tabular, but there's no harm in that.
- \begin{tabular}{*{\value{num@cols}}{@{}c|c|c@{}c}}
+ \begin{tabular}{*{\value{num@cols}}{|c|c|c|c}}
% We need to make sure that the \cline@stuff@v commands come
% *immediately* following the \\ or \begin{tabular} (with no
% conditionals evaluated, even if those conditionals expand to
@@ -6845,7 +6836,7 @@
\if@scores
% Note: We'll never use the final "c" in the format of the
% tabular, but there's no harm in that.
- \begin{tabular}{*{\value{num@cols}}{@{}c|c|c@{}c}}
+ \begin{tabular}{*{\value{num@cols}}{|c|c|c|c}}
% We need to make sure that the \cline@stuff@v commands come
% *immediately* following the \\ or \begin{tabular} (with no
% conditionals evaluated, even if those conditionals expand to
@@ -6860,7 +6851,7 @@
\else
% Note: We'll never use the final "c" in the format of the
% tabular, but there's no harm in that.
- \begin{tabular}{*{\value{num@cols}}{@{}c|c@{}c}}
+ \begin{tabular}{*{\value{num@cols}}{|c|c|c}}
% We need to make sure that the \cline@stuff@v commands come
% *immediately* following the \\ or \begin{tabular} (with no
% conditionals evaluated, even if those conditionals expand to
@@ -7003,7 +6994,6 @@
% Called by \@multicolumntable.
% multicolumngradetable or multicolumnbonusgradetable, possibly
% partial.
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\iftbl@pgs
\if@bonus
\@bvpgword
@@ -7017,19 +7007,16 @@
\@vqword
\fi
\fi
- \hspace*{\fill}%
& \if@bonus
\@bvpword
\else
\@vpword
\fi
- & \hspace*{\fill}%
- \if@bonus
+ & \if@bonus
\@bvsword
\else
\@vsword
\fi
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\addtocounter{@iterator}{1}%
\ifnum \value{@iterator} < \value{num@cols}\relax
\hidden@ampersand
@@ -7046,7 +7033,6 @@
% Called by \@multicolumntable.
% multicolumnpointtable or multicolumnbonuspointtable, possibly
% partial.
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\iftbl@pgs
\if@bonus
\@bvpgword
@@ -7060,14 +7046,12 @@
\@vqword
\fi
\fi
- \hspace*{\fill}%
- & \hspace*{\fill}%
+ &
\if@bonus
\@bvpword
\else
\@vpword
\fi
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\addtocounter{@iterator}{1}%
\ifnum \value{@iterator} < \value{num@cols}\relax
\hidden@ampersand
@@ -7083,18 +7067,14 @@
\def\docolumn@heads@comb@v{%
% Called by \@multicolumntable.
% multicolumncombinedgradetable, possibly partial.
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\iftbl@pgs
\@cvpgword
\else
\@cvqword
\fi
- \hspace*{\fill}%
& \@cvpword
& \@cvbpword
- & \hspace*{\fill}%
- \@cvsword
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
+ & \@cvsword
\addtocounter{@iterator}{1}%
\ifnum \value{@iterator} < \value{num@cols}\relax
\hidden@ampersand
@@ -7110,17 +7090,13 @@
\def\docolumn@heads@comb@noscores@v{%
% Called by \@multicolumntable.
% multicolumncombinedpointtable, possibly partial.
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\iftbl@pgs
\@cvpgword
\else
\@cvqword
\fi
- \hspace*{\fill}%
& \@vpword
- & \hspace*{\fill}%
- \@bvpword
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
+ & \@bvpword
\addtocounter{@iterator}{1}%
\ifnum \value{@iterator} < \value{num@cols}\relax
\hidden@ampersand
@@ -7185,13 +7161,11 @@
\ifnum \value{current@row} = \value{num@rows}\relax
% We're in the last column, last row!
% Print the total:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\if@bonus
\@bvtword
\else
\@vtword
\fi
- \hspace*{\fill}%
\hidden@ampersand
\if@scores
\if@bonus
@@ -7200,9 +7174,7 @@
\prt@tablepoints
\fi
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\else
\hspace*{\fill}%
\if@bonus
@@ -7210,41 +7182,30 @@
\else
\prt@tablepoints
\fi
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\fi
\else
% Not last column last row; insert empty space:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\fill}%
\if@scores
\hidden@ampersand
\hbox to \@cellwidth{\hfill}%
\fi
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\fi
\else
% Not last column; insert empty space:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
- \hbox to \@cellwidth{\hfill}%
- \hspace*{\fill}%
+ \hbox to \@cellwidth{\hfill}%
\if@scores
\hidden@ampersand
\hbox to \@cellwidth{\hfill}%
\fi
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\fi
\else
% We need to do question (or page) number pq@index:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\refto@index{pq@index}%
- \hspace*{\fill}%
\hidden@ampersand
\if@scores
\if@bonus
@@ -7255,19 +7216,15 @@
\addto@hlfcntr{tbl@points}{\pointsof@index{pq@index}}%
\fi
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\else
- \hspace*{\fill}%
- \if@bonus
- \bonuspointsof@index{pq@index}%
- \addto@hlfcntr{tbl@bonuspoints}{\bonuspointsof@index{pq@index}}%
- \else
- \pointsof@index{pq@index}%
- \addto@hlfcntr{tbl@points}{\pointsof@index{pq@index}}%
- \fi
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
+ \if@bonus
+ \bonuspointsof@index{pq@index}%
+ \addto@hlfcntr{tbl@bonuspoints}{\bonuspointsof@index{pq@index}}%
+ \else
+ \pointsof@index{pq@index}%
+ \addto@hlfcntr{tbl@points}{\pointsof@index{pq@index}}%
+ \fi
\fi
\fi
\addtocounter{cols@done}{1}% Number of columns done
@@ -7297,28 +7254,20 @@
\ifnum \value{current@row} = \value{num@rows}\relax
% We're in the last column, last row!
% Print the total:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
- \@cvtword
- \hspace*{\fill}%
+ \@cvtword
\hidden@ampersand
\prt@tablepoints
\hidden@ampersand
\if@scores
\prt@tablebonuspoints
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\else
- \hspace*{\fill}%
\prt@tablebonuspoints
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\fi
\else
% Last column, but not last row; insert empty space:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\fill}%
\hidden@ampersand
\hbox to \@cellwidth{\hfill}%
\if@scores
@@ -7326,15 +7275,11 @@
\hbox to \@cellwidth{\hfill}%
\fi
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\fi
\else
% Not last column; insert empty space:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\fill}%
\hidden@ampersand
\hbox to \@cellwidth{\hfill}%
\if@scores
@@ -7342,15 +7287,11 @@
\hbox to \@cellwidth{\hfill}%
\fi
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\fi
\else
% We need to do question number pq@index:
- \vline \hspace*{\tabcolsep}\hspace*{\fill}%
\refto@index{pq@index}%
- \hspace*{\fill}%
\hidden@ampersand
\pointsof@index{pq@index}%
\addto@hlfcntr{tbl@points}{\pointsof@index{pq@index}}%
@@ -7359,14 +7300,10 @@
\bonuspointsof@index{pq@index}%
\addto@hlfcntr{tbl@bonuspoints}{\bonuspointsof@index{pq@index}}%
\hidden@ampersand
- \hspace*{\fill}%
\hbox to \@cellwidth{\hfill}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\else
- \hspace*{\fill}%
\bonuspointsof@index{pq@index}%
\addto@hlfcntr{tbl@bonuspoints}{\bonuspointsof@index{pq@index}}%
- \hspace*{\tabcolsep}\hspace*{\fill}\vline
\fi
\fi
\addtocounter{cols@done}{1}% Number of columns done
@@ -7823,22 +7760,22 @@
% If the user said \unframedsolutions, then both
% \if@framedsolutions and \if@shadedsolutions are false:
\if@framedsolutions
- % We'll use the default \FrameCommand
+ % We'll use the default \exam@FrameCommand
\else
\if@shadedsolutions
- \def\FrameCommand{\colorbox{SolutionColor}}%
+ \def\exam@FrameCommand{\colorbox{SolutionColor}}%
\else
% It's \unframedsolutions:
- \def\FrameCommand{}%
+ \def\exam@FrameCommand{}%
\fi
\fi
- \MakeFramed{\advance\hsize-\width}%
+ \exam@MakeFramed{\advance\hsize-\exam@width}%
\solutiontitle
\ignorespaces
}%
{%
\unskip
- \endMakeFramed
+ \endexam@MakeFramed
}%
\newif\if@framedsolutions
@@ -8019,9 +7956,9 @@
% arguments, the first being the color for the frame, and the second
% being the stuff to be framed.
-% If we had assumed that color.sty was used (instead of just color.sty),
-% then the line that saves the current color in saved@color could have
-% been just
+% If we had assumed that xcolor.sty was used (instead of just
+% color.sty), then the line that saves the current color in
+% saved@color could have been just
% \colorlet{saved@color}{.}
@@ -8049,28 +7986,37 @@
% provided that this notice is left intact.
%
% The modifications I made are marked with ``psh'' in a comment:
+%
+% Further modifications, 2017-09-21
+% I changed the names of many commands by prepending ``exam@'', so
+% that the user can use the framed.sty package with exam.cls and not
+% have conflicts. (I also renamed the framed, shaded, and leftbar
+% environments to examframed, examshaded, and examleftbar.) I didn't
+% mark these name changes.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Create framed or shaded regions that can break across pages using
-% \begin{framed} ... \end{framed} -- ordinary frame box (box at margin)
-% \begin{shaded} ... \end{shaded} -- shaded background (into margin)
-% ... leftbar ... -- line on left side
+% \begin{examframed} ... \end{examframed} -- ordinary frame box
+% (box at margin)
+% \begin{examshaded} ... \end{examshaded} -- shaded background
+% (into margin)
+% ... examleftbar ... -- line on left side
% \begin{MakeFramed}{settings} ... \end{MakeFramed}
% -- generic frame (for new environments)
%
-% The "framed" environment puts the text into "\fbox" with the
-% settings "\fboxrule=\FrameRule" and "\fboxsep=\FrameSep".
+% The "examframed" environment puts the text into "\fbox" with the
+% settings "\fboxrule=\exam@FrameRule" and "\fboxsep=\exam@FrameSep".
% You can change these lengths (using "\setlength") and you
-% can even change the definition of "\FrameCommand" to use
+% can even change the definition of "\exam@FrameCommand" to use
% much fancier boxes.
%
-% In fact, the "shaded" environment just redefines "\FrameCommand"
+% In fact, the "shaded" environment just redefines "\exam@FrameCommand"
% to use "\colorbox{shadecolor}" (and you have to define the
% color "shadecolor": \newcolor{shadecolor}...).
%
% A page break is allowed, and even encouraged, before the framed
% environment. If you want to attach some text (a box title) to the
-% frame, then the text should be inserted by \FrameCommand
+% frame, then the text should be inserted by \exam@FrameCommand
%
% The contents of the framed regions are restricted:
% Floats, footnotes, marginpars and head-line entries will be lost.
@@ -8080,16 +8026,18 @@
%
% The MakeFramed environment does the work. Its "settings" argument
% should contain any adjustments to the text width (applied to \hsize,
-% and using the "\width" of the frame itself) as well as a `restore'
-% command -- \@parboxrestore or \FrameRestore or something similar.
+% and using the "\exam@width" of the frame itself) as well as a `restore'
+% command -- \@parboxrestore or \exam@FrameRestore or something similar.
%
% Expert commands:
-% \MakeFramed, \endMakeFramed: the "MakeFramed" environment
-% \FrameCommand: command to draw the frame around its argument
-% \FrameRestore: restore some text settings, but fewer than \@parboxrestore
-% \FrameRule: length register; \fboxrule for default "framed".
-% \FrameSep: length register; \fboxsep for default "framed".
-% \FrameHeightAdjust: macro; height of frame above baseline at top of page
+% \exam@MakeFramed, \endexam@MakeFramed: the "MakeFramed" environment
+% \exam@FrameCommand: command to draw the frame around its argument
+% \exam@FrameRestore: restore some text settings, but fewer than
+% \@parboxrestore
+% \exam@FrameRule: length register; \fboxrule for default "framed".
+% \exam@FrameSep: length register; \fboxsep for default "framed".
+% \exam@frameHeightAdjust: macro; height of frame above baseline at
+% top of page
%
% This is still a `pre-production' version because I can think of many
% features/improvements that should be made. Nevertheless, starting
@@ -8105,30 +8053,30 @@
\newdimen\saved@totalleftmargin
\newcount\@sollistdepth
-\newenvironment{framed}% using default \FrameCommand
- {\MakeFramed {\advance\hsize-\width \FrameRestore}}%
- {\endMakeFramed}
+\newenvironment{examframed}% using default \exam@FrameCommand
+ {\exam@MakeFramed {\advance\hsize-\exam@width \exam@FrameRestore}}%
+ {\endexam@MakeFramed}
-\newenvironment{shaded}{%
- \def\FrameCommand{\colorbox{shadecolor}}%
- \MakeFramed {\FrameRestore}}%
- {\endMakeFramed}
+\newenvironment{examshaded}{%
+ \def\exam@FrameCommand{\colorbox{shadecolor}}%
+ \exam@MakeFramed {\exam@FrameRestore}}%
+ {\endexam@MakeFramed}
-\newenvironment{leftbar}{%
- \def\FrameCommand{\vrule width 3pt \hspace{10pt}}%
- \MakeFramed {\advance\hsize-\width \FrameRestore}}%
- {\endMakeFramed}
+\newenvironment{examleftbar}{%
+ \def\exam@FrameCommand{\vrule width 3pt \hspace{10pt}}%
+ \exam@MakeFramed {\advance\hsize-\exam@width \exam@FrameRestore}}%
+ {\endexam@MakeFramed}
-\chardef\FrameRestore=\catcode`\| % for debug
+\chardef\exam@FrameRestore=\catcode`\| % for debug
\catcode`\|=\catcode`\% % (debug: insert space after backslash)
-\def\MakeFramed#1{\par
- % measure added width and height; call result \width and \height
+\def\exam@MakeFramed#1{\par
+ % measure added width and height; call result \exam@width and \exam@height
\setbox\z@\vbox{\vskip-1in \hbox{\hskip-1in
- \FrameCommand{\hbox{\vrule \@height .7in \@depth.3in \@width 1in}}}%
+ \exam@FrameCommand{\hbox{\vrule \@height .7in \@depth.3in \@width 1in}}}%
\vskip\z@skip}%
- \def\width{\wd\z@}\def\height{\ht\z@}%
- \edef\fb@frw{\the\width}\edef\fb@frh{\the\height}%
+ \def\exam@width{\wd\z@}\def\exam@height{\ht\z@}%
+ \edef\exam@fb@frw{\the\exam@width}\edef\exam@fb@frh{\the\exam@height}%
% insert pre-penalties and skips
\begingroup
\skip@\lastskip
@@ -8136,7 +8084,7 @@
\penalty9999 % updates \page parameters
\ifdim\pagefilstretch=\z@ \ifdim\pagefillstretch=\z@
\edef\@tempa{\the\skip@}%
- \ifx\@tempa\zero@glue \penalty-30
+ \ifx\@tempa\exam@zero@glue \penalty-30
\else \vskip-\skip@ \penalty-30 \vskip\skip@
\fi\fi\fi
\penalty\z@
@@ -8146,7 +8094,7 @@
% calculated badness is really 8192, not 10000, so the multiplier
% is 0.2301.
\advance\skip@ \z@ plus-.5\baselineskip
- \advance\skip@ \z@ plus-.231\height
+ \advance\skip@ \z@ plus-.231\exam@height
\advance\skip@ \z@ plus-.231\skip@
\advance\skip@ \z@ plus-.231\topsep
\vskip-\skip@ \penalty 1800 \vskip\skip@
@@ -8154,11 +8102,11 @@
\addvspace{\topsep}%
\endgroup
% clear out pending page break
- \penalty\@M \vskip 2\baselineskip \vskip\height
- \penalty9999 \vskip -2\baselineskip \vskip-\height
+ \penalty\@M \vskip 2\baselineskip \vskip\exam@height
+ \penalty9999 \vskip -2\baselineskip \vskip-\exam@height
\penalty9999 % updates \pagetotal
|\message{After clearout, \pagetotal=\the\pagetotal, \pagegoal=\the\pagegoal. }%
- \fb@adjheight
+ \exam@fb@adjheight
%psh: Added commands:
\advance\hsize-\@totalleftmargin
\saved@totalleftmargin=\@totalleftmargin
@@ -8169,25 +8117,26 @@
\leftmargin=0pt
%psh: end of added commands
\setbox\@tempboxa\vbox\bgroup
- #1% Modifications to \hsize (can use \width and \height)
+ #1% Modifications to \hsize (can use \exam@width and \exam@height)
\textwidth\hsize \columnwidth\hsize
%psh: added one line:
\linewidth=\hsize
}
-\def\endMakeFramed{\par
+\def\endexam@MakeFramed{\par
\kern\z@ \penalty-100 % put depth into height
\egroup
- \begingroup \put@frame \endgroup
+ \begingroup \exam@put@frame \endgroup
%psh: Added one line:
\@totalleftmargin=\saved@totalleftmargin
}
-% \put@frame takes the contents of \@tempboxa and puts all, or a piece,
-% of it on the page with a frame (\FrameCommand). It recurses until
-% all of \@tempboxa has been used up. (\@tempboxa must have zero depth.)
+% \exam@put@frame takes the contents of \@tempboxa and puts all, or a
+% piece, of it on the page with a frame (\exam@FrameCommand). It
+% recurses until all of \@tempboxa has been used up. (\@tempboxa must
+% have zero depth.)
-\def\put@frame{\relax
+\def\exam@put@frame{\relax
\ifdim\pagegoal=\maxdimen \pagegoal\vsize \fi
| \message{=============== Entering putframe ====================^^J
| \pagegoal=\the\pagegoal, \pagetotal=\the\pagetotal. }%
@@ -8195,17 +8144,17 @@
\dimen@\pagegoal \advance\dimen@-\pagetotal % natural space left on page
\ifdim\dimen@<2\baselineskip
| \message{Page has only \the\dimen@\space room left; eject. }%
- \eject \fb@adjheight \put@frame
+ \eject \exam@fb@adjheight \exam@put@frame
\else % there's appreciable room left on the page
| \message{\string\pagetotal=\the\pagetotal,
| \string\pagegoal=\the\pagegoal,
| \string\pagestretch=\the\pagestretch,
| \string\pageshrink=\the\pageshrink,
-| \string\fb@frh=\fb@frh. \space}
-| \message{Box of size \the\ht\@tempboxa\space + \fb@frh}%
+| \string\exam@fb@frh=\exam@fb@frh. \space}
+| \message{Box of size \the\ht\@tempboxa\space + \exam@fb@frh}%
\begingroup % temporarily set \dimen@ to be...
\advance\dimen@.8\pageshrink % maximum space available on page
- \advance\dimen@-\fb@frh\relax % space available for frame's contents
+ \advance\dimen@-\exam@fb@frh\relax % space available for frame's contents
\expandafter\endgroup
% restore \dimen@ to real room left on page
\ifdim\dimen@>\ht\@tempboxa % whole box does fit
@@ -8213,10 +8162,11 @@
\else % box must be split
| \message{must be split to fit in \the\dimen@. }%
\setbox\@tempboxa\vbox{% simulate frame and flexiblity of the page:
- \vskip \fb@frh \@plus\pagestretch \@minus.8\pageshrink
+ \vskip \exam@fb@frh \@plus\pagestretch \@minus.8\pageshrink
\kern137sp\kern-137sp\penalty-30
\unvbox\@tempboxa}%
- \edef\fb@resto@set{\boxmaxdepth\the\boxmaxdepth \splittopskip\the\splittopskip}%
+ \edef\exam@fb@resto@set{\boxmaxdepth\the\boxmaxdepth
+ \splittopskip\the\splittopskip}%
\boxmaxdepth\z@ \splittopskip\z@
\setbox\tw@\vsplit\@tempboxa to\dimen@
\setbox\tw@\vbox{\unvbox\tw@}% natural-sized
@@ -8230,7 +8180,7 @@
| \message{Frame is big -- Use up the full column. }%
\dimen@ii\pagegoal
\advance\dimen@ii -\topskip
- \advance\dimen@ii \FrameHeightAdjust\relax
+ \advance\dimen@ii \exam@frameHeightAdjust\relax
\else % suspect this is wrong:
% If the split-to size > feasible room_on_page, rebox it smaller.
\advance\dimen@.8\pageshrink
@@ -8242,17 +8192,18 @@
\fi
\fi
% Re-box contents to desired size \dimen@ii
- \advance\dimen@ii -\fb@frh
+ \advance\dimen@ii -\exam@fb@frh
\setbox\tw@\vbox to\dimen@ii \bgroup
% remove simulated frame and page flexibility:
- \vskip -\fb@frh \@plus-\pagestretch \@minus-.8\pageshrink
+ \vskip -\exam@fb@frh \@plus-\pagestretch \@minus-.8\pageshrink
\unvbox\tw@ \unpenalty\unpenalty
\ifdim\lastkern=-137sp % whole box went to next page
| \message{box split at beginning! }%
- \egroup \fb@resto@set \eject % (\vskip for frame size was discarded)
- \fb@adjheight
+ \egroup \exam@fb@resto@set \eject % (\vskip for frame size
+ % was discarded)
+ \exam@fb@adjheight
\else %
- \egroup \fb@resto@set
+ \egroup \exam@fb@resto@set
\ifvoid\@tempboxa % it all fit after all
| \message{box split at end! }%
\setbox\@tempboxa\box\tw@
@@ -8261,61 +8212,62 @@
\ifdim\wd\tw@>\z@
%psh: Changed the command that inserts the box:
% Instead of \centerline, we shift right by \saved@totalleftmargin:
-% \centerline{\FrameCommand{\box\tw@}}% ??? \centerline bad idea
- \hbox{\hskip \saved@totalleftmargin\FrameCommand{\box\tw@}}%
+% \centerline{\exam@FrameCommand{\box\tw@}}% ??? \centerline bad idea
+ \hbox{\hskip \saved@totalleftmargin\exam@FrameCommand{\box\tw@}}%
\else
| \message{Zero width means likely blank. Don't frame it (guess)}%
\box\tw@
\fi
\hrule \@height\z@
\eject
- \fb@adjheight
- \put@frame
+ \exam@fb@adjheight
+ \exam@put@frame
\fi\fi\fi\fi\fi
\ifvoid\@tempboxa\else
%psh: Changed the command that inserts the box:
% Instead of \centerline, we shift right by \saved@totalleftmargin:
-% \centerline{\FrameCommand{\box\@tempboxa}}%
- \hbox{\hskip\saved@totalleftmargin\FrameCommand{\box\@tempboxa}}%
+% \centerline{\exam@FrameCommand{\box\@tempboxa}}%
+ \hbox{\hskip\saved@totalleftmargin\exam@FrameCommand{\box\@tempboxa}}%
\nointerlineskip \null %{\showoutput \showlists}
\penalty-30 \vskip\topsep
\fi}
-\def\fb@adjheight{%
- \vbox to\FrameHeightAdjust{}% get proper baseline skip from above.
+\def\exam@fb@adjheight{%
+ \vbox to\exam@frameHeightAdjust{}% get proper baseline skip from above.
\penalty\@M \nointerlineskip
- \vskip-\FrameHeightAdjust
+ \vskip-\exam@frameHeightAdjust
\penalty\@M} % useful for tops of pages
-\edef\zero@glue{\the\z@skip}
+\edef\exam@zero@glue{\the\z@skip}
-\catcode`\|=\FrameRestore
+\catcode`\|=\exam@FrameRestore
% Provide configuration commands:
-%psh: Version 2.502, 2016/03/23, changed \FrameCommand so that the
+%psh: Version 2.502, 2016/03/23, changed \exam@FrameCommand so that the
% frame is printed in color if the user has said
% \colorsolutionboxes:
-%\providecommand\FrameCommand{\fboxrule=\FrameRule \fboxsep=\FrameSep \fbox}
-\def\FrameCommand{\fboxrule=\FrameRule \fboxsep=\FrameSep
+%\providecommand\exam@FrameCommand{\fboxrule=\exam@FrameRule
+%\fboxsep=\exam@FrameSep \fbox}
+\def\exam@FrameCommand{\fboxrule=\exam@FrameRule \fboxsep=\exam@FrameSep
\if@colorsolutionboxes
\def\box@it{\colorfbox{SolutionBoxColor}}%
\else
\def\box@it{\fbox}%
\fi
\box@it
-}% \FrameCommand
+}% \exam@FrameCommand
-\@ifundefined{FrameRule}{\newdimen\FrameRule \FrameRule=\fboxrule}{}
-\@ifundefined{FrameSep} {\newdimen\FrameSep \FrameSep =3\fboxsep}{}
+\@ifundefined{FrameRule}{\newdimen\exam@FrameRule \exam@FrameRule=\fboxrule}{}
+\@ifundefined{FrameSep} {\newdimen\exam@FrameSep \exam@FrameSep =3\fboxsep}{}
% Height of frame above first baseline when frame starts a page:
-\providecommand\FrameHeightAdjust{6pt}
+\providecommand\exam@frameHeightAdjust{6pt}
-% \FrameRestore has parts of \@parboxrestore. See how it is used in the
+% \exam@FrameRestore has parts of \@parboxrestore. See how it is used in the
% "settings" argument of \MakeFrame. Previous behavior can be restored by
% using \@parboxrestore there, or redefining:
-% \makeatletter \renewcommand\FrameRestore{\@parboxrestore} \makeatother
-\def\FrameRestore{%
+% \makeatletter \renewcommand\exam@FrameRestore{\@parboxrestore} \makeatother
+\def\exam@FrameRestore{%
\let\if@nobreak\iffalse
\let\if@noskipsec\iffalse
% \let\par\@@par ??
@@ -8333,7 +8285,8 @@
}
% Compatibility with previous versions (temporary!):
-\let\fram@d=\MakeFramed \let\endfram@d=\endMakeFramed
+% psh: we'll remove this 2017-09-21
+%\let\fram@d=\MakeFramed \let\endfram@d=\endMakeFramed
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%