texlive[42242] Master: bangorexam (9oct16)

commits+karl at tug.org commits+karl at tug.org
Mon Oct 10 00:59:03 CEST 2016


Revision: 42242
          http://tug.org/svn/texlive?view=revision&revision=42242
Author:   karl
Date:     2016-10-10 00:59:03 +0200 (Mon, 10 Oct 2016)
Log Message:
-----------
bangorexam (9oct16)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/bangorexam/
    trunk/Master/texmf-dist/doc/latex/bangorexam/README.txt
    trunk/Master/texmf-dist/doc/latex/bangorexam/bangorexam.pdf
    trunk/Master/texmf-dist/source/latex/bangorexam/
    trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.dtx
    trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.ins
    trunk/Master/texmf-dist/tex/latex/bangorexam/
    trunk/Master/texmf-dist/tex/latex/bangorexam/bangorexam.cls
    trunk/Master/tlpkg/tlpsrc/bangorexam.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/bangorexam/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/bangorexam/README.txt	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/bangorexam/README.txt	2016-10-09 22:59:03 UTC (rev 42242)
@@ -0,0 +1,143 @@
+Bangor University Computer Science Department
+Exam Document Class
+Cameron Gray <c.gray at bangor.ac.uk>
+September 26, 2016
+
+Abstract
+Starting with the 2016/17 academic year, the Computer Science department at
+Bangor University have moved to LATEX for preparation of examination papers for all
+taught courses. This was done for multiple reasons, including the reduction of burden
+on support staff.
+This package is the embodiment of that effort. It includes all of the elements needed
+to produce an examination paper, including examiner’s copies with solutions included.
+
+1 Usage - Class Options
+
+The document class is activated (or loaded) using the usual LATEX command
+\documentclass{bangorexam}. The class requires one of the following options to
+control which ‘style’ of exam paper is produced.
+[ab] - produces a compulsory Section A and a ‘two from three’ Section B exam.
+[twofour] - produces a single part ‘two from four’ exam.
+
+The ‘answers’ option controls the inclusion of solutions as part of the output.
+\documentclass[ab]{bangorexam} - produces the student form of a Section A/B
+exam paper.
+\documentclass[ab,answers]{bangorexam} - produces the examiner form of the
+paper.
+
+2 Usage - Preamble Macros
+
+The class includes several macros that must be added to the document’s preamble. These
+set important aspects such as the module code and title.
+
+\school{English name}{Welsh name} The name of the school setting this exam, provided in both English and Welsh.
+
+\module{code}{full name} The code (including the 3-letter prefix) and full name of the module.
+
+\examperiod{resit|s1|s2} Specifies the period of the exam, s1 for January/End of Semester 1, s2 for May/End of Semester 2, or resit for Supplementary exams (August Resits).
+
+\timeallowed{hours} The amount of time allowed in hours. This should be the numerical part only, e.g. \timeallowed{1\half} or \timeallowed{3}.
+
+3 Usage - Body Macros
+
+Various macros exist to typeset the questions within the exam paper. The macros listed
+here are provided to comply with Bangor University’s style and formatting requirements.
+Users should not adjust any formatting, font, header, footer, margin other other display
+parameters. Please use \emph{} for italic text and \textbf{} for boldface fonts only.
+The document class has been designed to support amsmath and amssymb mathematics
+typesetting with the conventional font.
+
+\sectiona Only applies when class option ab is active. Begins the compulsory Section A.
+
+\sectionb Only applies when class option ab is active. Begins the student-choice Section B.
+
+\pointsdesc{description}Sets the suffix/descriptive text following a points value. This defaults to an empty string, so 5 points would be rendered as [5]. Setting \pointsdesc{%} would result in [5%].
+
+\guidance{guidance text} Sets a ’guidance’ paragraph at the beginning of all question sections (at the start for two of four or both of section A and B if ab).
+
+\guidancea{guidance text} Sets a ’guidance’ paragraph at the start of section A only.
+
+\guidanceb{guidance text} Sets a ’guidance’ paragraph at the start of section B only.
+
+4 Usage - Environments
+
+There are three key environments questions, parts, and solution. These represent a
+numbered sequence of questions, parts and sub-parts of one question, and a solution/answer
+for a question respectively.
+
+4.1 Questions Environment
+
+All questions must be set within a questions environment. You may add other items, such
+as explanations, images, scenarios etc., in this environment too. The most simple questions environment is as follows:
+\begin{questions}
+\end{questions}
+
+However, this will not actually produce any output.
+Questions must be added with use of the \question macro.
+
+\question[points] Question Text
+
+This macro can only be used within the Questions environment and is used to typeset a
+question. The optional argument sets the number of points/marks/percentage awarded for
+correct answers. See the \pointsdesc macro for customisation options.
+Whenever a new block is started (with \begin{questions}), the numbering begins at
+1. (Questions, at present, can only be labelled with Arabic numerals.)
+
+4.2 Parts Environment
+
+Within a question, examiners may wish to have multiple sub-questions (a.k.a parts). This is provided for by the \begin{parts}...\end{parts} environment. Each sub-question
+or part is handled with the part macro.
+
+\part[points] Part Text
+
+This macro can only be used within the parts environment and is used to typeset a subquestion. The optional parameter sets the number of points/marks/percentage awarded for
+correct answers. See the \pointsdesc macro for customisation options.
+
+The parts environment may only be used within the questions environment, as in the
+example below:
+\begin{questions}
+\question Use the graph in Figure 1 to answer the following:
+\begin{parts}
+\part Sub-question 1
+\part[10] Sub-question 2
+\end{parts}
+\end{questions}
+
+Whenever a new block is started (with \begin{parts}), the sub-question numbering
+begins with a). (Sub-questions, at present, can only be labelled with English letters).
+
+4.3 Solution Environment
+
+Following either a \question or \part, the examiner should include a solution block.
+This block/environment will only be included if the answers class option is in effect. (See Class Options for more details). Any standard LaTeX content can be placed in a solution block. A minimal example is below:
+\begin{questions}
+\question A really hard question.
+\begin{solution}
+The answer is placed here.
+\end{solution}
+\end{questions}
+
+5 Usage - Multiple Choice Questions
+
+There are four environments that will allow typesetting of multiple choice selections
+depending on the desired layout. All must be used within a Questions or Parts environment.
+The first pair present a list of possible responses labelled with letters. The choices
+environment presents one choice per line, whereas the horizontalchoices environment
+lays out choices in a single paragraph, wrapping lines wherever necessary.
+The second pair present tick or check boxes instead of labelled choices. A checkboxes
+environment will again typeset options one to a line, and the horizontalcheckboxes
+environment will present all options in one paragraph.
+Within any of the four environments each choice is typeset using the choice macro. Please
+note; there is no points argument for individual choices, this should be handled at the
+question or part level.
+
+\choice Choice Text
+
+Typesets a single choice according to which environment it is placed in.
+Solutions to multiple choice questions are handled somewhat differently. Instead of a
+solutions environment, typeset the correct option using the correctchoice macro.
+
+\correctchoiceChoice Text
+
+Typeset the correct choice based on where the macro is placed. When answers is in effect,
+the output of this macro will either highlight the option in boldface, or replace the checkbox with a tick.
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/bangorexam/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/bangorexam/bangorexam.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/bangorexam/bangorexam.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/bangorexam/bangorexam.pdf	2016-10-09 01:16:22 UTC (rev 42241)
+++ trunk/Master/texmf-dist/doc/latex/bangorexam/bangorexam.pdf	2016-10-09 22:59:03 UTC (rev 42242)

Property changes on: trunk/Master/texmf-dist/doc/latex/bangorexam/bangorexam.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.dtx	2016-10-09 22:59:03 UTC (rev 42242)
@@ -0,0 +1,585 @@
+%\iffalse
+%<*package>
+%% \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 \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2016 Cameron Gray <c.gray at bangor.ac.uk>, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+
+\usepackage[top=2cm, bottom=2cm, right=2cm, left=2in, headsep=14pt]{geometry}
+\usepackage{fancyhdr,courier}
+\fancyhead[R]{\texttt{bangorexam} - Exam Document Class}
+\renewcommand{\headrulewidth}{0.5pt}
+\fancyfoot{}
+\fancyfoot[R]{\thepage}
+\setlength\parindent{0pt}
+\hyphenpenalty=10000
+\hbadness=10000
+\sloppy
+\begin{document}
+\DocInput{bangorexam.dtx}
+\end{document}
+%</driver>
+%\fi
+%\CheckSum{432}
+%\RecordChanges
+%\changes{v1.0}{2016/09/26}{Initial version.}
+%\pagestyle{fancy}
+%\title{Bangor University Computer Science Department\\ Exam Document Class}
+%\author{Cameron Gray \texttt{<c.gray at bangor.ac.uk>}}
+%\date{September 26, 2016}
+%\maketitle
+%
+%\begin{abstract}
+%Starting with the 2016/17 academic year, the Computer Science department at
+%Bangor University have moved to \LaTeX\ for preparation of examination papers
+%for all taught courses.  This was done for multiple reasons, including the
+%reduction of burden on support staff.
+%
+%This package is the embodiment of that effort.  It includes all of the
+%elements needed to produce an examination paper, including examiner's copies
+%with solutions included.
+%\end{abstract}
+%
+%\section{Usage - Class Options}
+%The document class is activated (or loaded) using the usual \LaTeX\ command
+%|\documentclass{bangorexam}|.  The class requires one of the following options
+%to control which `style' of exam paper is produced.
+%
+%\oarg{ab} - produces a compulsory Section A and a `two from three' Section B
+%exam.
+%\oarg{twofour} - produces a single part `two from four' exam.
+%
+%The `answers' option controls the inclusion of solutions as part of the
+%output.
+%
+%|\documentclass[ab]{bangorexam}| - produces the student form of a Section A/B
+%exam paper.
+%
+%|\documentclass[ab,answers]{bangorexam}| - produces the examiner form of the
+%paper.
+%
+%\section{Usage - Preamble Macros}
+%The class includes several macros that must be added to the document's
+%preamble.  These set important aspects such as the module code and title.
+%
+%\ \\
+%
+%\DescribeMacro{\school\marg{English name}\marg{Welsh name}} The name of the
+%school setting this exam, provided in both English and Welsh.
+%
+%\ \\
+%
+%\DescribeMacro{\module\marg{code}\marg{full name}} The code (including the
+%3-letter prefix) and full name of the module.
+%
+%\ \\
+%
+%\DescribeMacro{\examperiod\marg{resit\textbar{}s1\textbar{}s2}} Specifies
+%the period of the exam, s1 for January/End of Semester 1, s2 for May/End of
+%Semester 2, or resit for Supplementary exams (August Resits).
+%
+%\ \\
+%
+%\DescribeMacro{\timeallowed\marg{hours}} The amount of time allowed in hours.
+%This should be the numerical part only, e.g. |\timeallowed{1\half}| or
+%|\timeallowed{3}|.
+%
+%\ \\
+%
+%\section{Usage - Body Macros}
+%Various macros exist to typeset the questions within the exam paper.  The
+%macros listed here are provided to comply with Bangor University's style and
+%formatting requirements.  Users should not adjust any formatting, font,
+%header, footer, margin other other display parameters.  Please use |\emph{}|
+%for italic text and |\textbf{}| for boldface fonts only.  The document class
+%has been designed to support amsmath and amssymb mathematics typesetting
+%with the conventional font.
+%
+%\ \\
+%
+%\DescribeMacro{\sectiona} \[\emph{Only applies when class option ab is
+%active.}\] Begins the compulsory Section A.
+%
+%\ \\
+%
+%\DescribeMacro{\sectionb} \[\emph{Only applies when class option ab is
+%active.}\] Begins the student-choice Section B.
+%
+%\ \\
+%
+%\DescribeMacro{\pointsdesc\marg{description}} Sets the suffix/descriptive text
+%following a points value.  This defaults to an empty string, so 5 points would
+%be rendered as |[5]|.  Setting |\pointsdesc{%}| would result in |[5%]|.
+%
+%\ \\
+%
+%\DescribeMacro{\guidance\marg{guidance text}} Sets a 'guidance' paragraph at
+%the beginning of all question sections (at the start for two of four or both
+%of section A and B if ab).
+%
+%\ \\
+%
+%\DescribeMacro{\guidancea\marg{guidance text}} Sets a 'guidance' paragraph at
+%the start of section A only.
+%
+%\ \\
+%
+%\DescribeMacro{\guidanceb\marg{guidance text}} Sets a 'guidance' paragraph at
+%the start of section B only.
+%
+%\ \\
+%
+%\section{Usage - Environments}
+%There are three key environments |questions|, |parts|, and |solution|.
+%These represent a numbered sequence of questions, parts and sub-parts of one
+%question, and a solution/answer for a question respectively.
+%
+%\subsection{Questions Environment}
+%All questions must be set within a questions environment.  You may add other
+%items, such as explanations, images, scenarios etc., in this environment
+%too.  The most simple questions environment is as follows:\\
+%\begin{verbatim}
+%\begin{questions}
+%\end{questions}
+%\end{verbatim}
+%However, this will not actually produce any output.
+%
+%Questions must be added with use of the |\question| macro.
+%
+%\ \\
+%
+%\DescribeMacro{\question\oarg{points} Question Text} This macro can only
+%be used within the Questions environment and is used to typeset a question.
+%The optional argument sets the number of points/marks/percentage awarded for
+%correct answers. See the |\pointsdesc| macro for customisation options.
+%
+%Whenever a new block is started (with |\begin{questions}|), the numbering
+%begins at 1.  (Questions, at present, can only be labelled with Arabic
+%numerals.)
+%
+%\subsection{Parts Environment}
+%Within a question, examiners may wish to have multiple sub-questions (a.k.a
+%parts).  This is provided for by the |\begin{parts}...\end{parts}|
+%environment.  Each sub-question or part is handled with the part macro.
+%
+%\ \\
+%
+%\DescribeMacro{\part\oarg{points} Part Text} This macro can only be used
+%within the parts environment and is used to typeset a sub-question. The
+%optional parameter sets the number of points/marks/percentage awarded for
+%correct answers.  See the |\pointsdesc| macro for customisation options.
+%
+%\ \\
+%
+%The parts environment may only be used within the questions
+%environment, as in the example below:
+%
+%\begin{verbatim}
+%\begin{questions}
+%  \question Use the graph in Figure 1 to answer the following:
+%  \begin{parts}
+%\part Sub-question 1
+%\part[10] Sub-question 2
+%  \end{parts}
+%\end{questions}
+%\end{verbatim}
+%
+%\ \\
+%
+%Whenever a new block is started (with |\begin{parts}|), the sub-question
+%numbering begins with a).  (Sub-questions, at present, can only be labelled
+%with English letters).
+%
+%\subsection{Solution Environment}
+%Following either a |\question| or |\part|, the examiner should include a
+%solution block.  This block/environment will only be included if the answers
+%class option is in effect. (See Class Options for more details).  Any standard
+%LaTeX content can be placed in a solution block. A minimal example is below:
+%
+%\begin{verbatim}
+%\begin{questions}
+%  \question A really hard question.
+%  \begin{solution}
+%The answer is placed here.
+%  \end{solution}
+%\end{questions}
+%\end{verbatim}
+%
+%\ \\
+%
+%\section{Usage - Multiple Choice Questions}
+%There are four environments that will allow typesetting of multiple choice
+%selections depending on the desired layout.  All must be used within a
+%Questions or Parts environment.
+%
+%The first pair present a list of possible responses labelled with letters.
+%The |choices| environment presents one choice per line, whereas the
+%|horizontalchoices| environment lays out choices in a single paragraph,
+%wrapping lines wherever necessary.
+%
+%The second pair present tick or check boxes instead of labelled choices.
+%A |checkboxes| environment will again typeset options one to a line, and the
+%|horizontalcheckboxes| environment will present all options in one paragraph.
+%
+%Within any of the four environments each choice is typeset using the choice
+%macro.  Please note; there is no points argument for individual choices, this
+%should be handled at the question or part level.
+%
+%\ \\
+%
+%\DescribeMacro{\choice Choice Text} Typesets a single choice according to
+%which environment it is placed in.
+%
+%Solutions to multiple choice questions are handled somewhat differently.
+%Instead of a |solutions| environment, typeset the correct option using the
+%|correctchoice| macro.
+%
+%\ \\
+%
+%\DescribeMacro{\correctchoice Choice Text} Typeset the correct choice based
+%on where the macro is placed.  When |answers| is in effect, the output of
+%this macro will either highlight the option in boldface, or replace the
+%checkbox with a tick.
+%
+%
+%
+%
+%\StopEventually{}
+%\section{The Code}
+%\iffalse
+%\begin{macrocode}
+%<*bangorexam.cls>
+%\end{macrocode}
+%\fi
+%\begin{macrocode}
+\def\version{1.0.0}
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesClass{bangorexam}[2016/10/03 \version C. Gray]
+
+% Based on the Exam document class by Philip S. Hirschhorn
+% Developed/Adapted for Bangor University by C. Gray
+
+\RequirePackage[dvipsnames]{xcolor}
+\RequirePackage[T1]{fontenc}
+\RequirePackage[UKenglish]{babel}
+\RequirePackage[UKenglish]{isodate}
+\RequirePackage[utf8]{inputenc}
+
+\RequirePackage{array}
+\RequirePackage{color}
+\RequirePackage{etoolbox}
+\RequirePackage{graphicx}
+\RequirePackage{ifthen}
+\RequirePackage{letltxmacro}
+\RequirePackage{newpxtext,newpxmath}
+\RequirePackage{totcount}
+\RequirePackage{xstring}
+
+\RequirePackage{courier}
+
+% *******************************************************************
+% Class Level Options
+% *******************************************************************
+
+% Enable Welsh headings, etc.  Does not affect the cover sheet.
+% -------------------------------------------------------------------
+\DeclareOption{welsh}{%
+\newcommand{\welsh}{true}%
+}%
+% Exam Type
+% -------------------------------------------------------------------
+\DeclareOption{ab}{%
+\newtotcounter{sectiona}%
+\newtotcounter{sectionb}
+\newcommand{\examtype}{ab}%
+\newcommand{\engTypeText}{Answer {\bf Section A} (compulsory) and {\bf any two} questions from {\bf Section B}.}%
+\newcommand{\welTypeText}{Atebwch {\bf Adran A} (gorfodol) ac {\bf unrhyw ddau} gwestiwn o {\bf Adran B}.}%
+\newcommand{\sectionAHeader}{\textbf{ADRAN A} --- Atebwch BOB cwestiwn (Cyfanswm marciau \total{sectiona})}%
+\newcommand{\sectionBHeader}{\textbf{ADRAN B} --- Atebwch unrhyw DDAU chwestiwn (\total{sectionb} marc yr un)}%
+\ifx\welsh\undefined%
+\renewcommand{\sectionAHeader}{\textbf{SECTION A} --- Answer \textbf{ALL} questions (Total marks \total{sectiona})}%
+\renewcommand{\sectionBHeader}{\textbf{SECTION B} --- Answer any \textbf{TWO} questions (\total{sectionb} marks each)}%
+\fi%
+}%
+\DeclareOption{twofour}{%
+\newcommand{\examtype}{twofour}%
+\newcommand{\engTypeText}{Answer \textbf{two} out of four questions.}%
+\newcommand{\welTypeTest}{Atebwch \textbf{ddau} o'r pedwar cwestiwn.}%
+}%
+\DeclareOption{answers}{\PassOptionsToClass{\CurrentOption}{exam}}%
+\DeclareOption{draft}{\PassOptionsToClass{\CurrentOption}{exam}}%
+\ProcessOptions\relax%
+
+\ifx\examtype\undefined%
+\ClassError{bangorexam}{An exam type option has not been defined; use ab or twofour in the class options.}%
+\fi%
+
+\LoadClass[a4paper,twoside,11pt,addpoints]{exam}%
+
+% *******************************************************************
+% Layout
+% *******************************************************************
+% Page layout
+\setlength{\parindent}{0mm}%
+\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}%
+
+% Footer
+\pagestyle{headandfoot}%
+\coverfooter{}{}{\iflastpage{}{/ troi drosodd\\/ turn over}{}}%
+\footer{}{}{\oddeven{}{\iflastpage{}{/ troi drosodd / turn over}}}%
+
+% Cover Column Definition
+\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+
+\SolutionEmphasis{\color{red}}
+
+% *******************************************************************
+% Configuration Macros
+% *******************************************************************
+\newcounter{tmp}
+\newtotcounter{all}
+
+\newcommand{\school}[2] {%
+\def \engSchool {\expandafter\MakeUppercase\expandafter{#1}}%
+\def \welSchool {\expandafter\MakeUppercase\expandafter{#2}}%
+}%
+\newcommand{\module}[2]{%
+\StrSubstitute{#1}{-}{}[\mTmp]%
+\def \moduleCode {\expandafter\MakeUppercase\expandafter{\mTmp}}%
+\def \moduleName {#2}%
+}%
+\newcommand{\examperiod}[1]{%
+\setcounter{tmp}{\the\year}%
+\ifnum \the\month>8%
+\stepcounter{tmp}%
+\newcommand{\examYear}{\arabic{tmp}}%
+\else%
+\newcommand{\examYear}{\arabic{tmp}}%
+\fi%
+\newcommand{\welSemesterText}{Arholiadau Diwedd Semester\ \welSemester}%
+\newcommand{\engSemesterText}{End of Semester \engSemester\ Examinations}%
+\ifthenelse{\equal{#1}{s1}}{%
+\def \welSemester {Un}%
+\def \engSemester {One}%
+\def \welExamMonth {IONAWR}%
+\def \engExamMonth {JANUARY}%
+}{}%
+\ifthenelse{\equal{#1}{s2}}{%
+\def \welSemester {Dau}%
+\def \engSemester {Two}%
+\def \welExamMonth {MAI}%
+\def \engExamMonth {MAY}%
+}{}%
+\ifthenelse{\equal{#1}{resit}}{%
+\renewcommand{\welSemesterText}{Arholiadau Atodol}%
+\renewcommand{\engSemesterText}{Supplementary Examination}%
+\def \welExamMonth {AWST}%
+\def \engExamMonth {AUGUST}%
+}{}%
+}
+
+\newcommand{\timeallowed}[1]{%
+\def \timeAllowed {#1}%
+}
+
+\newcommand{\guidance}[1]{%
+\def \guidance at a {#1}%
+\def \guidance at b {#1}%
+}
+
+\newcommand{\guidancea}[1]{%
+\def \guidance at a {#1}%
+}
+
+\newcommand{\guidanceb}[1]{%
+\def \guidance at b {#1}%
+}
+
+% *******************************************************************
+% Cover Page
+% *******************************************************************
+
+\renewcommand{\maketitle}{%
+\ifx\timeAllowed\undefined%
+\ClassError{bangorexam}{The time allowed for this exam has not been defined (missing \backslash timealllowed?).}%
+\fi%
+\ifx\engExamMonth\undefined%
+\ClassError{bangorexam}{The exam period for this exam has not been set (missing \backslash examperiod?).}%
+\fi%
+\ifx\moduleCode\undefined%
+\ClassError{bangorexam}{The module details for this exam have not been specified (missing \backslash module?).}%
+\fi%
+\ifx\welSchool\undefined%
+\ClassError{bangorexam}{The academic school setting this exam has not been defined (missing \backslash school?).}%
+\fi%
+
+\begin{center}
+\bfseries
+\huge
+PRIFYSGOL\\
+\large\mbox{}\\
+\huge
+BANGOR\\
+\large\mbox{}\\
+\huge
+UNIVERSITY
+
+\vfill
+\Large
+\welSchool \\
+\engSchool
+\end{center}
+\medskip
+\large
+\begin{tabular}{C{0.5\textwidth}C{0.5\textwidth}}
+{\bf \welSemesterText\par\welExamMonth\ \examYear}\par\vspace*{\bigskipamount}
+Amser a ganiateir:~\timeAllowed~awr &%
+{\bf \engSemesterText\par\engExamMonth\ \examYear}\par\vspace*{\bigskipamount}
+Time allowed:~\timeAllowed~hours
+\end{tabular}
+
+\vspace*{20mm}
+\LARGE
+\begin{center}
+{\bf \moduleCode\\
+\mbox{}\\
+\moduleName}
+
+\vfill
+\large
+{\welTypeText} \\
+{\engTypeText} \\
+\ 
+
+\medskip
+{\bf Total marks \total{all}}
+\vfill
+\end{center}
+}
+\AtBeginDocument{
+\begin{coverpages}
+\setlength{\hoffset}{0mm}
+\setlength{\marginparwidth}{0pt}
+\maketitle
+\end{coverpages}
+\pointsinrightmargin
+}
+
+% *******************************************************************
+% Section Commands
+% *******************************************************************
+\newcommand{\hassectiona}{false}%
+\newcommand{\hassectionb}{false}%
+\newcommand{\inDoc}{none}%
+\newcommand{\sectiona} {%
+\ifthenelse{\equal{\examtype}{twofour}}{\ClassError{bangorexam}{\\sectiona used in a 'two from four' exam.}}{}%
+\ifthenelse{\equal{\hassectiona}{true}}{\ClassError{bangorexam}{There is already a \\sectiona in this exam.}}{}%
+\renewcommand{\hassectiona}{true}%
+\renewcommand{\inDoc}{secA}%
+\clearpage
+{%
+\LARGE
+\textbf{\moduleCode: \quad \moduleName}
+
+\vspace*{8mm}
+\large
+\sectionAHeader
+\ifcsdef{guidance at a}{\normalsize\par\guidance at a}{}%
+}
+\vspace*{8mm}
+}
+
+\newcommand{\sectionb}{%
+\ifthenelse{\equal{\examtype}{twofour}}{\ClassError{bangorexam}{\\sectionb used in a 'two from four' exam.}}{}
+\ifthenelse{\equal{\hassectionb}{true}}{\ClassError{bangorexam}{There is already a \\sectionb in this exam.}}{}
+\renewcommand{\hassectionb}{true}
+\renewcommand{\inDoc}{secB}
+\clearpage
+{%
+\large
+\sectionBHeader
+\ifcsdef{guidance at b}{\normalsize\par\guidance at b}{}%
+}
+\vspace*{8mm}
+}
+
+% *******************************************************************
+% Patch Questions to make it Section-aware
+% *******************************************************************
+\renewcommand{\questionshook}{%
+    \edef\mytemp{{\inDoc}}%
+    \expandafter\ifstrequal\mytemp{secB}{\addtocounter{question}{100}}{}%
+}
+
+\renewcommand{\thequestion}{%
+    \edef\mytemp{{\inDoc}}%
+    \setcounter{tmp}{0}%
+    \addtocounter{tmp}{\value{question}}%
+    \expandafter\ifstrequal\mytemp{secB}{\addtocounter{tmp}{-100}\arabic{tmp}}{\arabic{question}}%
+}
+
+\newcommand{\be at adduppoints}[1]{%
+    \edef\mytemp{{\inDoc}}%
+    \expandafter\ifstrequal\mytemp{secA}%
+        {%
+            \addtocounter{sectiona}{#1}%
+            \addtocounter{all}{#1}%
+        }%
+        {}%
+    \expandafter\ifstrequal\mytemp{secB}%
+        {%
+            \ifnumcomp{\value{sectionb}}{=}{0}%
+                {%
+                    \addtocounter{sectionb}{#1}%
+                    \addtocounter{all}{#1}%
+                    \addtocounter{all}{#1}}%
+                {}%
+            \ifnumcomp{\value{sectionb}}{=}{#1}%
+                {}%
+                {%
+                    \ClassError{bangorexam}{Section B question \arabic{question} does not have an equal number of points (Existing Section B question worth \arabic{sectionb})}%
+                }%
+        }%
+        {}%
+}
+
+\newcommand{\patchqnumaddpoints}{%
+\be at adduppoints{\totalpoints}%
+}
+\pointformat{[\thepoints]}
+\pointname{\null\patchqnumaddpoints}
+\newcommand{\pointsdec}[1]{%
+\pointname{#1}\patchqnumaddpoints
+}
+%    \end{macrocode}%\iffalse
+%    \begin{macrocode}
+%</bangorexam.cls>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%\fi
+%\Finale
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/bangorexam/bangorexam.ins	2016-10-09 22:59:03 UTC (rev 42242)
@@ -0,0 +1,30 @@
+\input docstrip
+
+\preamble
+
+ bangorexam.dtx
+ Copyright 2016 Cameron Gray/Bangor University <c.gray at bangor.ac.uk>
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+   http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Cameron Gray <c.gray at bangor.ac.uk>.
+
+ This work consists of the files bangorexam.dtx and bangorexam.ins and the derived 
+ file bangorexam.cls.
+
+\endpreamble
+
+\askforoverwritefalse
+\generate{\file{bangorexam.cls}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{bangorexam.dtx}{bangorexam.cls,package}}
+}
+
+\endbatchfile

Added: trunk/Master/texmf-dist/tex/latex/bangorexam/bangorexam.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/bangorexam/bangorexam.cls	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/bangorexam/bangorexam.cls	2016-10-09 22:59:03 UTC (rev 42242)
@@ -0,0 +1,318 @@
+%%
+%% This is file `bangorexam.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bangorexam.dtx  (with options: `bangorexam.cls,package')
+%% 
+%%  bangorexam.dtx
+%%  Copyright 2016 Cameron Gray/Bangor University <c.gray at bangor.ac.uk>
+%% 
+%%  This work may be distributed and/or modified under the
+%%  conditions of the LaTeX Project Public License, either version 1.3
+%%  of this license of (at your option) any later version.
+%%  The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%%  and version 1.3 or later is part of all distributions of LaTeX
+%%  version 2005/12/01 or later.
+%% 
+%%  This work has the LPPL maintenance status `maintained'.
+%% 
+%%  The Current Maintainer of this work is Cameron Gray <c.gray at bangor.ac.uk>.
+%% 
+%%  This work consists of the files bangorexam.dtx and bangorexam.ins and the derived
+%%  file bangorexam.cls.
+%% 
+%% \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 \~}
+\def\version{1.0.0}
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesClass{bangorexam}[2016/10/03 \version C. Gray]
+
+
+\RequirePackage[dvipsnames]{xcolor}
+\RequirePackage[T1]{fontenc}
+\RequirePackage[UKenglish]{babel}
+\RequirePackage[UKenglish]{isodate}
+\RequirePackage[utf8]{inputenc}
+
+\RequirePackage{array}
+\RequirePackage{color}
+\RequirePackage{etoolbox}
+\RequirePackage{graphicx}
+\RequirePackage{ifthen}
+\RequirePackage{letltxmacro}
+\RequirePackage{newpxtext,newpxmath}
+\RequirePackage{totcount}
+\RequirePackage{xstring}
+
+\RequirePackage{courier}
+
+
+\DeclareOption{welsh}{%
+\newcommand{\welsh}{true}%
+}%
+\DeclareOption{ab}{%
+\newtotcounter{sectiona}%
+\newtotcounter{sectionb}
+\newcommand{\examtype}{ab}%
+\newcommand{\engTypeText}{Answer {\bf Section A} (compulsory) and {\bf any two} questions from {\bf Section B}.}%
+\newcommand{\welTypeText}{Atebwch {\bf Adran A} (gorfodol) ac {\bf unrhyw ddau} gwestiwn o {\bf Adran B}.}%
+\newcommand{\sectionAHeader}{\textbf{ADRAN A} --- Atebwch BOB cwestiwn (Cyfanswm marciau \total{sectiona})}%
+\newcommand{\sectionBHeader}{\textbf{ADRAN B} --- Atebwch unrhyw DDAU chwestiwn (\total{sectionb} marc yr un)}%
+\ifx\welsh\undefined%
+\renewcommand{\sectionAHeader}{\textbf{SECTION A} --- Answer \textbf{ALL} questions (Total marks \total{sectiona})}%
+\renewcommand{\sectionBHeader}{\textbf{SECTION B} --- Answer any \textbf{TWO} questions (\total{sectionb} marks each)}%
+\fi%
+}%
+\DeclareOption{twofour}{%
+\newcommand{\examtype}{twofour}%
+\newcommand{\engTypeText}{Answer \textbf{two} out of four questions.}%
+\newcommand{\welTypeTest}{Atebwch \textbf{ddau} o'r pedwar cwestiwn.}%
+}%
+\DeclareOption{answers}{\PassOptionsToClass{\CurrentOption}{exam}}%
+\DeclareOption{draft}{\PassOptionsToClass{\CurrentOption}{exam}}%
+\ProcessOptions\relax%
+
+\ifx\examtype\undefined%
+\ClassError{bangorexam}{An exam type option has not been defined; use ab or twofour in the class options.}%
+\fi%
+
+\LoadClass[a4paper,twoside,11pt,addpoints]{exam}%
+
+\setlength{\parindent}{0mm}%
+\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}%
+
+\pagestyle{headandfoot}%
+\coverfooter{}{}{\iflastpage{}{/ troi drosodd\\/ turn over}{}}%
+\footer{}{}{\oddeven{}{\iflastpage{}{/ troi drosodd / turn over}}}%
+
+\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+
+\SolutionEmphasis{\color{red}}
+
+\newcounter{tmp}
+\newtotcounter{all}
+
+\newcommand{\school}[2] {%
+\def \engSchool {\expandafter\MakeUppercase\expandafter{#1}}%
+\def \welSchool {\expandafter\MakeUppercase\expandafter{#2}}%
+}%
+\newcommand{\module}[2]{%
+\StrSubstitute{#1}{-}{}[\mTmp]%
+\def \moduleCode {\expandafter\MakeUppercase\expandafter{\mTmp}}%
+\def \moduleName {#2}%
+}%
+\newcommand{\examperiod}[1]{%
+\setcounter{tmp}{\the\year}%
+\ifnum \the\month>8%
+\stepcounter{tmp}%
+\newcommand{\examYear}{\arabic{tmp}}%
+\else%
+\newcommand{\examYear}{\arabic{tmp}}%
+\fi%
+\newcommand{\welSemesterText}{Arholiadau Diwedd Semester\ \welSemester}%
+\newcommand{\engSemesterText}{End of Semester \engSemester\ Examinations}%
+\ifthenelse{\equal{#1}{s1}}{%
+\def \welSemester {Un}%
+\def \engSemester {One}%
+\def \welExamMonth {IONAWR}%
+\def \engExamMonth {JANUARY}%
+}{}%
+\ifthenelse{\equal{#1}{s2}}{%
+\def \welSemester {Dau}%
+\def \engSemester {Two}%
+\def \welExamMonth {MAI}%
+\def \engExamMonth {MAY}%
+}{}%
+\ifthenelse{\equal{#1}{resit}}{%
+\renewcommand{\welSemesterText}{Arholiadau Atodol}%
+\renewcommand{\engSemesterText}{Supplementary Examination}%
+\def \welExamMonth {AWST}%
+\def \engExamMonth {AUGUST}%
+}{}%
+}
+
+\newcommand{\timeallowed}[1]{%
+\def \timeAllowed {#1}%
+}
+
+\newcommand{\guidance}[1]{%
+\def \guidance at a {#1}%
+\def \guidance at b {#1}%
+}
+
+\newcommand{\guidancea}[1]{%
+\def \guidance at a {#1}%
+}
+
+\newcommand{\guidanceb}[1]{%
+\def \guidance at b {#1}%
+}
+
+
+\renewcommand{\maketitle}{%
+\ifx\timeAllowed\undefined%
+\ClassError{bangorexam}{The time allowed for this exam has not been defined (missing \backslash timealllowed?).}%
+\fi%
+\ifx\engExamMonth\undefined%
+\ClassError{bangorexam}{The exam period for this exam has not been set (missing \backslash examperiod?).}%
+\fi%
+\ifx\moduleCode\undefined%
+\ClassError{bangorexam}{The module details for this exam have not been specified (missing \backslash module?).}%
+\fi%
+\ifx\welSchool\undefined%
+\ClassError{bangorexam}{The academic school setting this exam has not been defined (missing \backslash school?).}%
+\fi%
+
+\begin{center}
+\bfseries
+\huge
+PRIFYSGOL\\
+\large\mbox{}\\
+\huge
+BANGOR\\
+\large\mbox{}\\
+\huge
+UNIVERSITY
+
+\vfill
+\Large
+\welSchool \\
+\engSchool
+\end{center}
+\medskip
+\large
+\begin{tabular}{C{0.5\textwidth}C{0.5\textwidth}}
+{\bf \welSemesterText\par\welExamMonth\ \examYear}\par\vspace*{\bigskipamount}
+Amser a ganiateir:~\timeAllowed~awr &%
+{\bf \engSemesterText\par\engExamMonth\ \examYear}\par\vspace*{\bigskipamount}
+Time allowed:~\timeAllowed~hours
+\end{tabular}
+
+\vspace*{20mm}
+\LARGE
+\begin{center}
+{\bf \moduleCode\\
+\mbox{}\\
+\moduleName}
+
+\vfill
+\large
+{\welTypeText} \\
+{\engTypeText} \\
+\
+
+\medskip
+{\bf Total marks \total{all}}
+\vfill
+\end{center}
+}
+\AtBeginDocument{
+\begin{coverpages}
+\setlength{\hoffset}{0mm}
+\setlength{\marginparwidth}{0pt}
+\maketitle
+\end{coverpages}
+\pointsinrightmargin
+}
+
+\newcommand{\hassectiona}{false}%
+\newcommand{\hassectionb}{false}%
+\newcommand{\inDoc}{none}%
+\newcommand{\sectiona} {%
+\ifthenelse{\equal{\examtype}{twofour}}{\ClassError{bangorexam}{\\sectiona used in a 'two from four' exam.}}{}%
+\ifthenelse{\equal{\hassectiona}{true}}{\ClassError{bangorexam}{There is already a \\sectiona in this exam.}}{}%
+\renewcommand{\hassectiona}{true}%
+\renewcommand{\inDoc}{secA}%
+\clearpage
+{%
+\LARGE
+\textbf{\moduleCode: \quad \moduleName}
+
+\vspace*{8mm}
+\large
+\sectionAHeader
+\ifcsdef{guidance at a}{\normalsize\par\guidance at a}{}%
+}
+\vspace*{8mm}
+}
+
+\newcommand{\sectionb}{%
+\ifthenelse{\equal{\examtype}{twofour}}{\ClassError{bangorexam}{\\sectionb used in a 'two from four' exam.}}{}
+\ifthenelse{\equal{\hassectionb}{true}}{\ClassError{bangorexam}{There is already a \\sectionb in this exam.}}{}
+\renewcommand{\hassectionb}{true}
+\renewcommand{\inDoc}{secB}
+\clearpage
+{%
+\large
+\sectionBHeader
+\ifcsdef{guidance at b}{\normalsize\par\guidance at b}{}%
+}
+\vspace*{8mm}
+}
+
+\renewcommand{\questionshook}{%
+    \edef\mytemp{{\inDoc}}%
+    \expandafter\ifstrequal\mytemp{secB}{\addtocounter{question}{100}}{}%
+}
+
+\renewcommand{\thequestion}{%
+    \edef\mytemp{{\inDoc}}%
+    \setcounter{tmp}{0}%
+    \addtocounter{tmp}{\value{question}}%
+    \expandafter\ifstrequal\mytemp{secB}{\addtocounter{tmp}{-100}\arabic{tmp}}{\arabic{question}}%
+}
+
+\newcommand{\be at adduppoints}[1]{%
+    \edef\mytemp{{\inDoc}}%
+    \expandafter\ifstrequal\mytemp{secA}%
+        {%
+            \addtocounter{sectiona}{#1}%
+            \addtocounter{all}{#1}%
+        }%
+        {}%
+    \expandafter\ifstrequal\mytemp{secB}%
+        {%
+            \ifnumcomp{\value{sectionb}}{=}{0}%
+                {%
+                    \addtocounter{sectionb}{#1}%
+                    \addtocounter{all}{#1}%
+                    \addtocounter{all}{#1}}%
+                {}%
+            \ifnumcomp{\value{sectionb}}{=}{#1}%
+                {}%
+                {%
+                    \ClassError{bangorexam}{Section B question \arabic{question} does not have an equal number of points (Existing Section B question worth \arabic{sectionb})}%
+                }%
+        }%
+        {}%
+}
+
+\newcommand{\patchqnumaddpoints}{%
+\be at adduppoints{\totalpoints}%
+}
+\pointformat{[\thepoints]}
+\pointname{\null\patchqnumaddpoints}
+\newcommand{\pointsdec}[1]{%
+\pointname{#1}\patchqnumaddpoints
+}
+\endinput
+%%
+%% End of file `bangorexam.cls'.


Property changes on: trunk/Master/texmf-dist/tex/latex/bangorexam/bangorexam.cls
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2016-10-09 01:16:22 UTC (rev 42241)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2016-10-09 22:59:03 UTC (rev 42242)
@@ -69,7 +69,7 @@
     babel-spanish babel-swedish babel-thai babel-turkish babel-ukrainian
     babel-vietnamese babel-welsh
     babelbib background backnaur baekmuk
-    bagpipe bangorcsthesis bangtex bankstatement
+    bagpipe bangorcsthesis bangorexam bangtex bankstatement
     barcodes bardiag barr bartel-chess-fonts bashful basicarith
     baskervald baskervaldx
     basque-book basque-date
@@ -629,7 +629,7 @@
     verbments verse version versions versonotes vertbars vgrid
     vhistory visualfaq visualpstricks visualtikz
     vmargin vntex vocaltract volumes
-    voss-mathcol voss-mathmode
+    voss-mathcol
     vpe vruler vwcol
   wadalab wallpaper warning warpcol was wasy wasy2-ps wasysym webguide
     widetable williams withargs

Added: trunk/Master/tlpkg/tlpsrc/bangorexam.tlpsrc
===================================================================
Modified: trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc	2016-10-09 01:16:22 UTC (rev 42241)
+++ trunk/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc	2016-10-09 22:59:03 UTC (rev 42242)
@@ -27,6 +27,7 @@
 depend ascelike
 depend aucklandthesis
 depend bangorcsthesis
+depend bangorexam
 depend beamer-FUBerlin
 depend beamer-verona
 depend bgteubner



More information about the tex-live-commits mailing list