summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/apa7/apa7.dtx27
-rw-r--r--macros/latex/contrib/apa7/apa7.ins3
-rw-r--r--macros/latex/contrib/apa7/apa7.pdfbin555936 -> 556671 bytes
-rw-r--r--macros/latex/contrib/apa7/samples/longsample.pdfbin204049 -> 204049 bytes
-rw-r--r--macros/latex/contrib/apa7/samples/shortsample.pdfbin69692 -> 69692 bytes
-rw-r--r--macros/latex/contrib/kfupm-math-exam/LICENSE21
-rw-r--r--macros/latex/contrib/kfupm-math-exam/README.txt29
-rw-r--r--macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls289
-rw-r--r--macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.dtx411
-rw-r--r--macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.ins31
-rw-r--r--macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.pdfbin0 -> 66031 bytes
-rw-r--r--macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.tex63
12 files changed, 871 insertions, 3 deletions
diff --git a/macros/latex/contrib/apa7/apa7.dtx b/macros/latex/contrib/apa7/apa7.dtx
index 045adf9b03..02e668cf94 100644
--- a/macros/latex/contrib/apa7/apa7.dtx
+++ b/macros/latex/contrib/apa7/apa7.dtx
@@ -4,11 +4,11 @@
% %
% CHANGE THESE VALUES WITH EACH NEW RELEASE: %
% %
-%<class>\ProvidesClass{apa7}[2022/01/03 v2.15 APA formatting (7th edition)]
+%<class>\ProvidesClass{apa7}[2022/07/25 v2.16 APA formatting (7th edition)]
% %
%<*internal> %
-\def\apaSevenVersionDate{2022/01/03}
-\def\apaSevenVersionNumber{2.15}
+\def\apaSevenVersionDate{2022/07/25}
+\def\apaSevenVersionNumber{2.16}
% %
% %
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -123,6 +123,7 @@ and the derived files apa7.ins,
APA7czech.txt,
APA7turkish.txt,
APA7spanish.txt,
+ APA7hungarian.txt,
APA7endfloat.cfg,
Figure1.pdf,
shortsample.tex,
@@ -147,6 +148,7 @@ and the derived files apa7.ins,
\file{./config/APA7czech.txt}{\from{\jobname.dtx}{czech}}
\file{./config/APA7turkish.txt}{\from{\jobname.dtx}{turkish}}
\file{./config/APA7spanish.txt}{\from{\jobname.dtx}{spanish}}
+ \file{./config/APA7hungarian.txt}{\from{\jobname.dtx}{hungarian}}
\file{./config/APA7endfloat.cfg}{\from{\jobname.dtx}{APAendfloat}}
}
\usedir{tex/latex/apa7/samples}
@@ -288,6 +290,8 @@ and the derived files apa7.ins,
%
% \changes{v2.15}{2022/01/03}{Spacing updated to more closely match APA 7th Edition Manual.}
%
+% \changes{v2.16}{2022/07/25}{Add Hungarian localization.}
+%
% \begin{abstract}
% The \textit{Publication Manual} of the American Psychological
% Association is widely used in the social sciences. The most
@@ -3872,6 +3876,23 @@ The detailed results are shown in Table~\ref{tab:DeckedTable}. \lipsum[22]
%\end{macro}
%
%
+%\begin{macro}{APA7hungarian.txt}
+% \begin{macrocode}
+%<*hungarian>
+\ProvidesFile{APA7hungarian.txt}[2022/07/25 v1.00 apa7 configuration for Hungarian - added by Robert Fodor]
+
+\renewcommand{\lastauthorseparator}{és}% and
+\renewcommand{\acksname}{Szerzői megjegyzés}% Author Note
+\renewcommand{\keywordname}{Kulcsszavak}% Keywords
+\renewcommand{\notesname}{Lábjegyzet}% Footnotes
+\renewcommand{\notelabel}{Megjegyzés}% Note
+%Note
+
+%</hungarian>
+% \end{macrocode}
+%\end{macro}
+%
+%
%\begin{macro}{APA7endfloat.cfg}
% \begin{macrocode}
%<*APAendfloat>
diff --git a/macros/latex/contrib/apa7/apa7.ins b/macros/latex/contrib/apa7/apa7.ins
index ff008168cb..743b3baaa7 100644
--- a/macros/latex/contrib/apa7/apa7.ins
+++ b/macros/latex/contrib/apa7/apa7.ins
@@ -90,6 +90,7 @@ and the derived files apa7.ins,
APA7czech.txt,
APA7turkish.txt,
APA7spanish.txt,
+ APA7hungarian.txt,
APA7endfloat.cfg,
Figure1.pdf,
shortsample.tex,
@@ -114,6 +115,7 @@ and the derived files apa7.ins,
\file{./config/APA7czech.txt}{\from{\jobname.dtx}{czech}}
\file{./config/APA7turkish.txt}{\from{\jobname.dtx}{turkish}}
\file{./config/APA7spanish.txt}{\from{\jobname.dtx}{spanish}}
+ \file{./config/APA7hungarian.txt}{\from{\jobname.dtx}{hungarian}}
\file{./config/APA7endfloat.cfg}{\from{\jobname.dtx}{APAendfloat}}
}
\usedir{tex/latex/apa7/samples}
@@ -159,6 +161,7 @@ and the derived files apa7.ins,
%% APA7czech.txt,
%% APA7turkish.txt,
%% APA7spanish.txt,
+%% APA7hungarian.txt,
%% APA7endfloat.cfg,
%% Figure1.pdf,
%% shortsample.tex,
diff --git a/macros/latex/contrib/apa7/apa7.pdf b/macros/latex/contrib/apa7/apa7.pdf
index 0afc73cd3c..040ff5513d 100644
--- a/macros/latex/contrib/apa7/apa7.pdf
+++ b/macros/latex/contrib/apa7/apa7.pdf
Binary files differ
diff --git a/macros/latex/contrib/apa7/samples/longsample.pdf b/macros/latex/contrib/apa7/samples/longsample.pdf
index a259e67721..033f9d54c5 100644
--- a/macros/latex/contrib/apa7/samples/longsample.pdf
+++ b/macros/latex/contrib/apa7/samples/longsample.pdf
Binary files differ
diff --git a/macros/latex/contrib/apa7/samples/shortsample.pdf b/macros/latex/contrib/apa7/samples/shortsample.pdf
index 77b7232966..a14ba7c627 100644
--- a/macros/latex/contrib/apa7/samples/shortsample.pdf
+++ b/macros/latex/contrib/apa7/samples/shortsample.pdf
Binary files differ
diff --git a/macros/latex/contrib/kfupm-math-exam/LICENSE b/macros/latex/contrib/kfupm-math-exam/LICENSE
new file mode 100644
index 0000000000..f9bc27b603
--- /dev/null
+++ b/macros/latex/contrib/kfupm-math-exam/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) [2022] [Mohammed Alshahrani]
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE. \ No newline at end of file
diff --git a/macros/latex/contrib/kfupm-math-exam/README.txt b/macros/latex/contrib/kfupm-math-exam/README.txt
new file mode 100644
index 0000000000..bb111982b4
--- /dev/null
+++ b/macros/latex/contrib/kfupm-math-exam/README.txt
@@ -0,0 +1,29 @@
+KFUPM MATH EXAM
+───────────────
+
+
+Table of Contents
+─────────────────
+
+
+
+kfupm-math-exam v0.1.1 : A LaTeX document style to produce homework, quiz and exam papers.
+
+Last Modified: 2022-07-25
+Author : Mohammed Alshahrani
+Files :
+ • kfupm-math-exam.cls - document class source file
+ • kfupm-math-exam.dtx - documented source file
+ • kfupm-math-exam.ins - installation script
+ • kfupm-math-exam.tex - tex documentation and examples
+ • kfupm-math-exam.pdf - pdf documentation and examples
+ • LICENSE - MIT LICENSE
+
+
+This document style provides commands and environments that simplify and streamline the process of preparing homework, quiz and exam papers according to a preffered style. The default style is based on the guidelines set by the department of mathematics at King Fahd University of Petroleum and Minerals (KFUPM). It can be easily customized to fit any style for any institution.
+
+
+This material is subject to the MIT License. See the file LICENSE
+
+
+[https://github.com/mmogib/kfupm-math-exam]
diff --git a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls
new file mode 100644
index 0000000000..b724f105d3
--- /dev/null
+++ b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls
@@ -0,0 +1,289 @@
+% 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
diff --git a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.dtx b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.dtx
new file mode 100644
index 0000000000..cb02927d22
--- /dev/null
+++ b/macros/latex/contrib/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/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.ins b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.ins
new file mode 100644
index 0000000000..cbaf7cc738
--- /dev/null
+++ b/macros/latex/contrib/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
diff --git a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.pdf b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.pdf
new file mode 100644
index 0000000000..5e9a0963c5
--- /dev/null
+++ b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.pdf
Binary files differ
diff --git a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.tex b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.tex
new file mode 100644
index 0000000000..8341b67e8e
--- /dev/null
+++ b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.tex
@@ -0,0 +1,63 @@
+\documentclass{article}
+\usepackage[utf8]{inputenc}
+
+\title{KFUP MATH EXAM \\
+ {\large version 0.1.0}}
+\author{ Mohammed Alshahrani}
+\date{July 2022}
+
+\begin{document}
+
+\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
+
+
+\end{document}
+\end{verbatim}
+
+\section{More Examples}
+TODO
+\end{document}