diff options
author | Karl Berry <karl@freefriends.org> | 2022-07-25 19:37:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-07-25 19:37:23 +0000 |
commit | 733cfe79b2ceaac5698fb02f398fe4cc13b89d5a (patch) | |
tree | a83314c13bc86772f0ed4d09404d164190291268 /Master/texmf-dist/source/latex/kfupm-math-exam | |
parent | 629372e051bbeb71722db66cd298cd12e9369868 (diff) |
kfupm-math-exam (25jul22)
git-svn-id: svn://tug.org/texlive/trunk@63977 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/kfupm-math-exam')
-rw-r--r-- | Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.dtx | 411 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.ins | 31 |
2 files changed, 442 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.dtx b/Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.dtx new file mode 100644 index 00000000000..cb02927d22a --- /dev/null +++ b/Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.dtx @@ -0,0 +1,411 @@ +%\iffalse +% kfupm-math-exam.dtx generated using makedtx version 1.2 (c) Nicola Talbot +% Command line args: +% -src "kfupm-math-exam\.cls=>kfupm-math-exam.cls" +% -doc "kfupm-math-exam.tex" +% kfupm-math-exam +% Created on 2022/7/25 6:06 +%\fi +%\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) 2022 Mohammed Alshahrani, all rights reserved. +% \fi +% \iffalse +%<*driver> +\documentclass{article} +\usepackage[utf8]{inputenc} + +\title{KFUP MATH EXAM \\ + {\large version 0.1.0}} +\author{ Mohammed Alshahrani} +\date{July 2022} + +\begin{document} +\DocInput{kfupm-math-exam.dtx} +\end{document} +%</driver> +%\fi +% +%\maketitle +% +%\section{Usage} +%\begin{verbatim} +%\documentclass[ +% % all of the below options are optional and can be left out +% % course name +% course = {{MATH333: Methods of Applied Mathematics I}}, +% % quartile (default: 3) +% quartile = {{}}, +% % assignment number/name (default: 1) +% examtitle = {{Exam 1}},%Monday, %Wednesday, +% examdate = {{Monday March 1, 2022}}, +% topic = {{}}, +% dept= {{/MATH}}, +% numofquestions=20, +% numofversions=4, +% numofoptions=5, +% firstexercise = 1, +% term = {{Term 213}}, +% betweenquestions=4.5cm +%]{kfupm-math-exam} +% +% +%\instructions{ +%\underline{\large{\bf Important Instructions:}} +%\begin{enumerate} +% \begin{normalsize} +% \item Instruction 1 +% \item Instruction 2 +% \item Instruction 3 +% \item Instruction 4 +% \item Instruction 5 +% +% \end{normalsize} +%\end{enumerate} +%} +% +%\begin{document} +% +% +% +%\versioncover{1} +% +%\newpage +% +%\begin{itemize} +% \item i +% +%\end{itemize} +% +%\newpage +%\versioncover{12} +% +%\newpage +% +% +%\end{document} +%\end{verbatim} +% +% +%\StopEventually{} +%\section{The Code} +%\iffalse +% \begin{macrocode} +%<*kfupm-math-exam.cls> +% \end{macrocode} +%\fi +% kfupm-math-exam.cls +% Department of Mathematics +% King Fahd University of Petroleum and Minerals +% A LaTeX2e document class for preparing the exams of the department of mathematics, KFUPM. + +% --- METADATA ----------------------------------------------------------------- +\def\fileversion{0.1.0} +\def\filedate{2022/07/25} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{kfupm-math-exam}[\filedate\space Version \fileversion\space by + Department of Mathematics, KFUPM] +% --- OPTION PROCESSSING ------------------------------------------------------- +\RequirePackage{kvoptions} \SetupKeyvalOptions{ + family = kfupmmathexam, + prefix = kfupmmathexam@, + setkeys = \kvsetkeys +} +\DeclareStringOption[212]% + {term} +\DeclareStringOption[Exam]% + {topic} +\DeclareStringOption[King Fahd University of Petroleum \& Minerals]% + {university} +\DeclareStringOption[Department of Mathematics]% + {dept} +\DeclareStringOption[MATH101 CALCULUS I]% + {course} +\DeclareStringOption[3]% + {quartile} +\DeclareStringOption[1]% + {examtitle} +\DeclareStringOption[March 9, 2022]% + {examdate} +\DeclareStringOption[4]% + {numofversions} +\DeclareStringOption[15]% + {numofquestions} +\DeclareStringOption[5]% + {numofoptions} +\DeclareStringOption[0123456]% + {studentnumber} +\DeclareStringOption[snumver@kfupm.edu.sa]% + {email} +\DeclareStringOption[1]% + {firstexercise} +\DeclareStringOption[3.5cm]{betweenquestions} +\DeclareStringOption[0.762cm]{spaceafterbody} +\DeclareStringOption[0.5cm]{betweenoptions} +% pass unrecognized options to `article` class +\DeclareDefaultOption{% + \PassOptionsToClass{\CurrentOption}{article}% +} +% process all options +\ProcessKeyvalOptions{kfupmmathexam} +% load parent class with some default options +\LoadClass[a4paper, 12pt]{article} +% --- PACKAGES AND SETUP ------------------------------------------------------- +\RequirePackage[ + paperheight=33cm, + paperwidth=21.5cm, + headheight = 20pt, + margin = 2cm, + tmargin = \dimexpr 2cm - 10pt \relax, + ]{geometry} % set up nicer margins + \addtolength{\footskip}{20pt} +\RequirePackage{fancyhdr} % for headers and footers +\RequirePackage{graphicx} % for including figures +\RequirePackage{amsmath} % use AMS math package +\RequirePackage{amssymb} % use AMS symbols +\RequirePackage{amsthm} % for writing proofs +\RequirePackage{array} % for setting up arguments to columns +\RequirePackage{booktabs} % for professional tables +\RequirePackage% + [tworuled, linesnumbered, noend, noline]% + {algorithm2e} % for typesetting pseudo-code +\RequirePackage{xcolor} % for colored text (comments in algorithms) +\RequirePackage{trimspaces, xstring} % for multiple author parsing +\RequirePackage[shortlabels]{enumitem} \labelsep=.75cm +\RequirePackage{mathrsfs} +\RequirePackage{xparse} +\RequirePackage{environ} +\RequirePackage{pgfplots} +\pgfplotsset{compat=newest} +\RequirePackage{tcolorbox} + +% option post-processing +\newcommand{\kme@temp}{} +\newcommand{\kme@sub}[4]{% + \ifnum#3 = 1\relax% + \ifnum#4 = 1\relax% + \renewcommand{\kme@temp}{#1}% + \else% + \StrBefore{#1}{#2}[\kme@temp]% + \fi% + \else% + \ifnum#3 = #4\relax% + \StrBehind[\numexpr#3 - 1\relax]{#1}{#2}[\kme@temp]% + \else% + \StrBetween[\numexpr#3 - 1\relax,#3]{#1}{#2}{#2}[\kme@temp]% + \fi% + \fi% + \expandafter\trim@spaces\expandafter{\kme@temp}% +} +\newcommand{\kme@authorProcessed}[1]{% + \kme@sub{\kfupmmathexam@name}{;}{#1}{\arabic{kme@numAuthors}}~% + (\kme@sub{\kfupmmathexam@studentnumber}{;}{#1}{\arabic{kme@numAuthors}})\\% + \texttt{\kme@sub{\kfupmmathexam@email}{;}{#1}{\arabic{kme@numAuthors}}}% + % if there are more authors, do a recursive call for the next one + \ifnum#1 < \arabic{kme@numAuthors}\relax\and\kme@authorProcessed{\numexpr#1 + 1\relax}\fi% +} +\newcommand{\kme@authorsProcessed}{% + % count number of authors; one more than number of semicolons + \StrCount{\kfupmmathexam@name}{;}[\kme@numAuthors]% + \newcounter{kme@numAuthors}% + \setcounter{kme@numAuthors}{\kme@numAuthors}% + \stepcounter{kme@numAuthors}% + % produce output + \kme@authorProcessed{1}% +} +% look for figures in the figures directory +\graphicspath{{figures/}} +% set up headers and footers; same for all pages +\setlength{\headheight}{10pt} +\newcommand{\kfupmmathexam@setupHF}{% + \fancyhf{} + \fancyhead[L]{\sffamily \small KFUPM } + \fancyhead[C]{\sffamily Page \thepage ~of \pageref{LastPage}} + \fancyhead[R]{\sffamily Term \kfupmmathexam@term} + \fancyfoot[L]{\sffamily /\kfupmmathexam@dept} + \fancyfoot[R]{\sffamily\bfseries\thepage} + \renewcommand{\headrulewidth}{0.5pt} + \renewcommand{\footrulewidth}{0.5pt} +} +\fancypagestyle{plain}{\kfupmmathexam@setupHF{}} \kfupmmathexam@setupHF{} +\pagestyle{fancy} +\NewDocumentCommand{\coverpage}{O{\kfupmmathexam@course} O{\kfupmmathexam@examtitle} O{\kfupmmathexam@term} O{\kfupmmathexam@examdate}}{% +\thispagestyle{empty} +\begin{center} + \begin{large} + Kink Fahd University of Petroleum and Minerals\\ + Mathematics\\ + \vspace*{2cm} + {\bf #1} \\ + {\bf #2} \\ + {\bf #3} \\ + {\bf #4} \\ + + \vspace*{3cm} + {\bf{\Huge{\fbox{EXAM COVER }}}}\\ + \vspace*{2cm} + {\bf Number of versions: \kfupmmathexam@numofversions } \\ + {\bf Number of questions: \kfupmmathexam@numofquestions } \\ + {\bf Number of Answers: \kfupmmathexam@numofoptions } \\ + + \vspace*{0.2cm} + + \end{large} + + \vfill + + \tiny{This exam was prepared using EXAM SHUFFLER} + \tiny{For questions send an email to Dr. Mohammed Alshahrani (mshahrani@kfupm.edu.sa) } +\end{center} +\newpage +} +\newcommand{\versioncover}[1]{ +\thispagestyle{empty} +\begin{center} + \begin{large} + Kink Fahd University of Petroleum and Minerals \\ + Mathematics \\ + \vspace*{4.5cm} + {\bf \fbox{ \codestr{CODE}{#1} } } \hfill {\bf \fbox{ \codestr{CODE}{#1} }} \\ + {\bf math333 } \\ + {\bf exam 1 } \\ + {\bf 182 } \\ + {\bf monday march 13 } \\ + {\bf Net Time Allowed: 120 minutes } \\ + + \vspace*{0.2cm} + + \end{large} +\end{center} +\ifthenelse{\equal{#1}{0}}{ +\begin{center} +\vspace*{6cm} +{\bf {\Huge{MASTER VERSION}}} \\ +\end{center} +}{ +\large{Name: }\hrulefill + +\vspace{3mm} + +\large{ID: } \hrulefill \large{ Sec: } \hrulefill \large{.} + +\vspace{1cm} + +\large{\bf{Check that this exam has {\underline{ \thenumberofquestions }} questions.}} + +\vspace{1cm} + +\getInstructions +} +\newpage + +\renewcommand{\thepage}{\noindent Term 182, math333, exam 1 \hfill Page {\bf \arabic{page} of \pagecount{\thenumberofpages} } \hfill {\bf \fbox{ \codestr{CODE}{#1} }}} +\setcounter{page}{1} + +} +% ensure that the title is inserted in the document +\title{\coverpage} +\author{} +\date{} +\AtBeginDocument{\pagestyle{myheadings}}%\maketitle + +% add some keywords +\SetKw{And}{and} \SetKw{Or}{or} \SetKw{To}{to} +% make it possible to not have line numbers on a single line +\let\oldnl\nl +\newcommand{\nonl}{\renewcommand{\nl}{\let\nl\oldnl}} +% style algorithm captions +\newcommand{\kfupmmathexam@capsty}[1]{\!} +\SetAlCapSty{kfupmmathexam@capsty} \SetAlCapNameFnt{\scshape\hspace{.69em}} +% get rid of semicolons +\DontPrintSemicolon +% comment formatting +\newcommand\agacommfont[1]{\footnotesize\ttfamily\textcolor{gray}{#1}} +\SetCommentSty{agacommfont} +% --- USEFUL MACROS ------------------------------------------------------------ +\newcommand*{\R}{{\mathbb R}} +\newcommand*{\N}{{\mathbb N}} +\newcommand*{\Z}{{\mathbb Z}} +\newcommand*{\Q}{{\mathbb Q}} + +% lengths and commands of the exam options +\newcount\numberofversions +\numberofversions=\kfupmmathexam@numofversions +\advance\numberofversions +1 +\newcounter{numberofquestions} +\setcounter{numberofquestions}{\kfupmmathexam@numofquestions} +\newcounter{numberofpages} +\setcounter{numberofpages}{0} +% --- define new database for exam questions ---- +\newcounter{examcodecounter} +\setcounter{examcodecounter}{1} + + +\ExplSyntaxOn +\str_new:N \l_alphabets_str +\str_set:Nn \l_alphabets_str {abcdefghigklmnopqrstuvwxuz} +\newcommand{\instructions}[1]{ + \tl_set:Nn \l_tmpa_str {#1} +} +\newcommand{\getInstructions}[1]{ + \tl_use:N \l_tmpa_str +} +\int_new:N \l_tmppages_int +\int_set:Nn \l_tmppages_int {0} +\cs_set:Npn \l_calc_pages_int:n #1 { + \int_set:Nn \l_tmppages_int {\int_div_truncate:nn {#1}{2}} + \int_set:Nn \l_tmppages_int {\int_compare:nNnTF {0}={\int_mod:nn {#1}{2}}{\l_tmppages_int}{\l_tmppages_int+1}} + \int_use:N \l_tmppages_int +} +\newcommand{\pagecount}[1]{ + \l_calc_pages_int:n {15} +} + + +\str_new:N \l_exam_code_str +\int_new:N \l_exam_version_int +\cs_set:Npn \l_concat_codenumber_str:nn #1#2 { + \int_set:Nn \l_exam_version_int {100+#2} + \str_clear_new:N \l_partone_str + \str_clear_new:N \l_parttwo_str + \str_set:Nn \l_partone_str {#1} + \str_set:Nx \l_parttwo_str {\int_use:N \l_exam_version_int} + \str_set:Nx \l_parttwo_str {\str_range:Nnn \l_parttwo_str {-2}{-1}} + \str_concat:NNN \l_exam_code_str \l_partone_str \l_parttwo_str + \str_use:N \l_exam_code_str +} +\newcommand{\codestr}[2]{ + \int_compare:nNnTF {0}={#2}{MASTER}{ + \l_concat_codenumber_str:nn {#1}{#2} + } +} + +% working with list + +\ExplSyntaxOff +%\iffalse +% \begin{macrocode} +%</kfupm-math-exam.cls> +% \end{macrocode} +%\fi +%\Finale +\endinput diff --git a/Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.ins b/Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.ins new file mode 100644 index 00000000000..cbaf7cc7388 --- /dev/null +++ b/Master/texmf-dist/source/latex/kfupm-math-exam/kfupm-math-exam.ins @@ -0,0 +1,31 @@ +% kfupm-math-exam.ins generated using makedtx version 1.2 2022/7/25 6:06 +\input docstrip + +\preamble + + kfupm-math-exam.dtx + Copyright 2022 Mohammed Alshahrani + + This work may be distributed and/or modified under the + conditions of the LaTeX Project Public License, either version 1.3 + 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.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 Mohammed Alshahrani. + + This work consists of the files kfupm-math-exam.dtx and kfupm-math-exam.ins and the derived file kfupm-math-exam.cls. + +\endpreamble + +\askforoverwritefalse + +\generate{\file{kfupm-math-exam.cls}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{kfupm-math-exam.dtx}{kfupm-math-exam.cls,package}} +} + +\endbatchfile |